Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

option --init-missing of pybabel update should also create the corresponding directory #1139

Open
du33169 opened this issue Oct 17, 2024 · 2 comments · May be fixed by #1142
Open

option --init-missing of pybabel update should also create the corresponding directory #1139

du33169 opened this issue Oct 17, 2024 · 2 comments · May be fixed by #1142

Comments

@du33169
Copy link

du33169 commented Oct 17, 2024

I use the option --init-missing of pybabel update to avoid redundant pybabel init command. However, this option only creates the *.po file, and will fail if the target directory ([locale]/LC_MESSAGES) does not exist yet:

creating catalog .\en_US\LC_MESSAGES\strings.po based on strings.pot
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "...\.venv\Scripts\pybabel.exe\__main__.py", line 8, in <module>
  File "...\.venv\Lib\site-packages\babel\messages\frontend.py", line 999, in main
    return CommandLineInterface().run(sys.argv)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "...\.venv\Lib\site-packages\babel\messages\frontend.py", line 925, in run
    return cmdinst.run()
           ^^^^^^^^^^^^^
  File "...\.venv\Lib\site-packages\babel\messages\frontend.py", line 795, in run
    with open(filename, 'wb') as outfile:
         ^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '.\\en_US\\LC_MESSAGES\\strings.po'

This behavior makes the option less useful. I suggest invoke os.makedirs in UpdateCatalog.finalize_options, just like in InitCatalog.finalize_options:

if not os.path.exists(os.path.dirname(self.output_file)):
os.makedirs(os.path.dirname(self.output_file))

but with extra exist_ok=True argument, as the directory may already exist for the update command.

Or it might be better to reuse the logic in InitCatalog.

@akx
Copy link
Member

akx commented Oct 19, 2024

Makes sense! If you feel like writing a PR, that would be appreciated.

@du33169
Copy link
Author

du33169 commented Oct 22, 2024

I'll look into it, but it will be a few days before I'm free.
If you or anyone else is interested and can nail it, please go ahead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants