|
from __future__ import annotations |
|
|
|
from babel.messages import frontend |
|
|
|
try: |
|
|
|
from setuptools import Command |
|
|
|
try: |
|
from setuptools.errors import BaseError, OptionError, SetupError |
|
except ImportError: |
|
OptionError = SetupError = BaseError = Exception |
|
|
|
except ImportError: |
|
from distutils.cmd import Command |
|
from distutils.errors import DistutilsSetupError as SetupError |
|
|
|
|
|
def check_message_extractors(dist, name, value): |
|
"""Validate the ``message_extractors`` keyword argument to ``setup()``. |
|
|
|
:param dist: the distutils/setuptools ``Distribution`` object |
|
:param name: the name of the keyword argument (should always be |
|
"message_extractors") |
|
:param value: the value of the keyword argument |
|
:raise `DistutilsSetupError`: if the value is not valid |
|
""" |
|
assert name == "message_extractors" |
|
if not isinstance(value, dict): |
|
raise SetupError( |
|
'the value of the "message_extractors" parameter must be a dictionary', |
|
) |
|
|
|
|
|
class compile_catalog(frontend.CompileCatalog, Command): |
|
"""Catalog compilation command for use in ``setup.py`` scripts. |
|
|
|
If correctly installed, this command is available to Setuptools-using |
|
setup scripts automatically. For projects using plain old ``distutils``, |
|
the command needs to be registered explicitly in ``setup.py``:: |
|
|
|
from babel.messages.setuptools_frontend import compile_catalog |
|
|
|
setup( |
|
... |
|
cmdclass = {'compile_catalog': compile_catalog} |
|
) |
|
|
|
.. versionadded:: 0.9 |
|
""" |
|
|
|
|
|
class extract_messages(frontend.ExtractMessages, Command): |
|
"""Message extraction command for use in ``setup.py`` scripts. |
|
|
|
If correctly installed, this command is available to Setuptools-using |
|
setup scripts automatically. For projects using plain old ``distutils``, |
|
the command needs to be registered explicitly in ``setup.py``:: |
|
|
|
from babel.messages.setuptools_frontend import extract_messages |
|
|
|
setup( |
|
... |
|
cmdclass = {'extract_messages': extract_messages} |
|
) |
|
""" |
|
|
|
|
|
class init_catalog(frontend.InitCatalog, Command): |
|
"""New catalog initialization command for use in ``setup.py`` scripts. |
|
|
|
If correctly installed, this command is available to Setuptools-using |
|
setup scripts automatically. For projects using plain old ``distutils``, |
|
the command needs to be registered explicitly in ``setup.py``:: |
|
|
|
from babel.messages.setuptools_frontend import init_catalog |
|
|
|
setup( |
|
... |
|
cmdclass = {'init_catalog': init_catalog} |
|
) |
|
""" |
|
|
|
|
|
class update_catalog(frontend.UpdateCatalog, Command): |
|
"""Catalog merging command for use in ``setup.py`` scripts. |
|
|
|
If correctly installed, this command is available to Setuptools-using |
|
setup scripts automatically. For projects using plain old ``distutils``, |
|
the command needs to be registered explicitly in ``setup.py``:: |
|
|
|
from babel.messages.setuptools_frontend import update_catalog |
|
|
|
setup( |
|
... |
|
cmdclass = {'update_catalog': update_catalog} |
|
) |
|
|
|
.. versionadded:: 0.9 |
|
""" |
|
|
|
|
|
COMMANDS = { |
|
"compile_catalog": compile_catalog, |
|
"extract_messages": extract_messages, |
|
"init_catalog": init_catalog, |
|
"update_catalog": update_catalog, |
|
} |
|
|