aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/docutils/languages/__init__.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/docutils/languages/__init__.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/docutils/languages/__init__.py')
-rw-r--r--.venv/lib/python3.12/site-packages/docutils/languages/__init__.py83
1 files changed, 83 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/docutils/languages/__init__.py b/.venv/lib/python3.12/site-packages/docutils/languages/__init__.py
new file mode 100644
index 00000000..1bf43129
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/docutils/languages/__init__.py
@@ -0,0 +1,83 @@
+# $Id: __init__.py 9030 2022-03-05 23:28:32Z milde $
+# Author: David Goodger <goodger@python.org>
+# Copyright: This module has been placed in the public domain.
+
+# Internationalization details are documented in
+# <https://docutils.sourceforge.io/docs/howto/i18n.html>.
+
+"""
+This package contains modules for language-dependent features of Docutils.
+"""
+
+__docformat__ = 'reStructuredText'
+
+from importlib import import_module
+
+from docutils.utils import normalize_language_tag
+
+
+class LanguageImporter:
+ """Import language modules.
+
+ When called with a BCP 47 language tag, instances return a module
+ with localisations from `docutils.languages` or the PYTHONPATH.
+
+ If there is no matching module, warn (if a `reporter` is passed)
+ and fall back to English.
+ """
+ packages = ('docutils.languages.', '')
+ warn_msg = ('Language "%s" not supported: '
+ 'Docutils-generated text will be in English.')
+ fallback = 'en'
+ # TODO: use a dummy module returning empty strings?, configurable?
+
+ def __init__(self):
+ self.cache = {}
+
+ def import_from_packages(self, name, reporter=None):
+ """Try loading module `name` from `self.packages`."""
+ module = None
+ for package in self.packages:
+ try:
+ module = import_module(package+name)
+ self.check_content(module)
+ except (ImportError, AttributeError):
+ if reporter and module:
+ reporter.info(f'{module} is no complete '
+ 'Docutils language module.')
+ elif reporter:
+ reporter.info(f'Module "{package+name}" not found.')
+ continue
+ break
+ return module
+
+ def check_content(self, module):
+ """Check if we got a Docutils language module."""
+ if not (isinstance(module.labels, dict)
+ and isinstance(module.bibliographic_fields, dict)
+ and isinstance(module.author_separators, list)):
+ raise ImportError
+
+ def __call__(self, language_code, reporter=None):
+ try:
+ return self.cache[language_code]
+ except KeyError:
+ pass
+ for tag in normalize_language_tag(language_code):
+ tag = tag.replace('-', '_') # '-' not valid in module names
+ module = self.import_from_packages(tag, reporter)
+ if module is not None:
+ break
+ else:
+ if reporter:
+ reporter.warning(self.warn_msg % language_code)
+ if self.fallback:
+ module = self.import_from_packages(self.fallback)
+ if reporter and (language_code != 'en'):
+ reporter.info('Using %s for language "%s".'
+ % (module, language_code))
+ self.cache[language_code] = module
+ return module
+
+
+get_language = LanguageImporter()