From 4a52a71956a8d46fcb7294ac71734504bb09bcc2 Mon Sep 17 00:00:00 2001 From: S. Solomon Darnell Date: Fri, 28 Mar 2025 21:52:21 -0500 Subject: two version of R2R are here --- .../site-packages/docutils/languages/__init__.py | 83 ++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 .venv/lib/python3.12/site-packages/docutils/languages/__init__.py (limited to '.venv/lib/python3.12/site-packages/docutils/languages/__init__.py') 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 +# Copyright: This module has been placed in the public domain. + +# Internationalization details are documented in +# . + +""" +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() -- cgit v1.2.3