python-babel / babel

The official repository for Babel, the Python Internationalization Library
http://babel.pocoo.org/
BSD 3-Clause "New" or "Revised" License
1.32k stars 440 forks source link

--ignore-dirs not working for multiple directories #1094

Closed john-psina closed 2 months ago

john-psina commented 3 months ago

Overview Description

When trying to add several folders to --exclude-dirs, the filter stops working and all folders in the project are taken.

Steps to Reproduce

  1. pybabel extract --input-dirs=. --ignore-dirs="venv alembic" -o locales/messages.pot
  2. The filter does not work at all

Actual Results

extracting messages from notify.py extracting messages from alembic\env.py extracting messages from alembic\versions\673b7ac42339.py ... extracting messages from alembic\versions\f5247959f18a.py extracting messages from venv\Lib\site-packages_virtualenv.py ... extracting messages from venv\Lib\site-packages\aiogram__init.py extracting messages from venv\Lib\site-packages\aiogram\meta.py extracting messages from venv\Lib\site-packages\aiogram\exceptions.py extracting messages from venv\Lib\site-packages\aiogram\loggers.py extracting messages from venv\Lib\site-packages\aiogram\client\init__.py extracting messages from venv\Lib\site-packages\aiogram\client\bot.py extracting messages from venv\Lib\site-packages\aiogram\client\context_controller.py extracting messages from venv\Lib\site-packages\aiogram\client\default.py extracting messages from venv\Lib\site-packages\aiogram\client\telegram.py

Expected Results

extracting messages from notify.py

Additional Information

I decided to look into the problem, so I looked into the code. I found that the problem occurs in the call to the "_make_directory_filter" function. self.ignore_dirs is passed inside the function, which is not separated by spaces. A few strips of code above is the following code:


ignore_dirs = listify_value(self.ignore_dirs)
    if ignore_dirs:
        self.directory_filter = _make_directory_filter(self.ignore_dirs)
    ...

I assume that instead of "self.ignore_dirs" you need to pass "ignore_dirs" to the function. Otherwise, it turns out that the _make_directory_filter function accepts a list of one string, while it is intended to accept a list of strings that were previously separated by spaces.

john-psina commented 3 months ago

I really don't want to fork the repository just to change a single line of code, so I tried to provide as much detail as possible about the problem and suggested a solution. I hope you can fix this problem as soon as possible

tomasr8 commented 2 months ago

@john-psina Would you like to submit a PR with a fix?

akx commented 2 months ago

This was fixed via #1095, I believe :)