ruplacer icon indicating copy to clipboard operation
ruplacer copied to clipboard

`--ignored` seems not to work

Open Masynchin opened this issue 3 years ago • 3 comments

Problem

I want to patch code of ignored files (dependencies of my python project). But there is no difference with or without --ignored - Error: nothing found to replace. At the same time ripgrep correctly finds provided pattern.

To reproduce

Libs used:

  • python==3.10.2
  • ripgrep==13.0.0 (or rg)
  • ruplacer==0.6.4

It might be overcomplicated, but it is my real situation. Steps to reproduce:

mkdir reproduce
cd reproduce

git init
echo venv/ > .gitignore

python3 -m venv venv
source venv/bin/activate
pip install "Django==1.11.29"

# no any output since all files ignored by gitignore:
rg 'from collections import Iterable'
ruplacer 'from collections import Iterable' 'from collections.abc import Iterable'

# shows expected
rg 'from collections import Iterable' --no-ignore

# doesn't shows expected
ruplacer 'from collections import Iterable' 'from collections.abc import Iterable' --ignored

Masynchin avatar Mar 29 '22 19:03 Masynchin

Interesting. I guess if we use the ignore crate we better keep the same flags has ripgrep with the same behavior ...

There's a workaround for this specific case, though:

$ cd venv
$ ruplacer 'from collections import Iterable' 'from collections.abc import Iterable'

Also, (sorry, I have to ask) - are your really trying to use Django 1.11 with Python 3.10? Because in that case, the problem with abc is going to be the least of your problems ...

dmerejkowsky avatar Mar 29 '22 19:03 dmerejkowsky

Also, (sorry, I have to ask) - are you really trying to use Django 1.11 with Python 3.10?

Yes, this was my task from some course that requires to use Django of 1.11 version. I may used python of another version but create script that removes incompatible parts was easier. That is how I found this tool (there was also sd but it seems more complicated to use for editing files).

Masynchin avatar Mar 29 '22 20:03 Masynchin

There's a workaround for this specific case

In the reproduce steps I simplified gitignore creating process. Actualy there is default gitignore for python projects. So I should also do cd lib (which is also ignored) and then script can be executed.

Masynchin avatar Mar 29 '22 20:03 Masynchin