123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- from __future__ import annotations
- from babel.messages import frontend
- try:
- # See: https://setuptools.pypa.io/en/latest/deprecated/distutils-legacy.html
- from setuptools import Command
- try:
- from setuptools.errors import BaseError, OptionError, SetupError
- except ImportError: # Error aliases only added in setuptools 59 (2021-11).
- 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,
- }
|