diff options
author | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
---|---|---|
committer | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
commit | 4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch) | |
tree | ee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/docutils/parsers/__init__.py | |
parent | cc961e04ba734dd72309fb548a2f97d67d578813 (diff) | |
download | gn-ai-master.tar.gz |
Diffstat (limited to '.venv/lib/python3.12/site-packages/docutils/parsers/__init__.py')
-rw-r--r-- | .venv/lib/python3.12/site-packages/docutils/parsers/__init__.py | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/docutils/parsers/__init__.py b/.venv/lib/python3.12/site-packages/docutils/parsers/__init__.py new file mode 100644 index 00000000..f1bb268e --- /dev/null +++ b/.venv/lib/python3.12/site-packages/docutils/parsers/__init__.py @@ -0,0 +1,92 @@ +# $Id: __init__.py 9048 2022-03-29 21:50:15Z milde $ +# Author: David Goodger <goodger@python.org> +# Copyright: This module has been placed in the public domain. + +""" +This package contains Docutils parser modules. +""" + +__docformat__ = 'reStructuredText' + +from importlib import import_module + +from docutils import Component, frontend + + +class Parser(Component): + settings_spec = ( + 'Generic Parser Options', + None, + (('Disable directives that insert the contents of an external file; ' + 'replaced with a "warning" system message.', + ['--no-file-insertion'], + {'action': 'store_false', 'default': 1, + 'dest': 'file_insertion_enabled', + 'validator': frontend.validate_boolean}), + ('Enable directives that insert the contents ' + 'of an external file. (default)', + ['--file-insertion-enabled'], + {'action': 'store_true'}), + ('Disable the "raw" directive; ' + 'replaced with a "warning" system message.', + ['--no-raw'], + {'action': 'store_false', 'default': 1, 'dest': 'raw_enabled', + 'validator': frontend.validate_boolean}), + ('Enable the "raw" directive. (default)', + ['--raw-enabled'], + {'action': 'store_true'}), + ('Maximal number of characters in an input line. Default 10 000.', + ['--line-length-limit'], + {'metavar': '<length>', 'type': 'int', 'default': 10000, + 'validator': frontend.validate_nonnegative_int}), + ) + ) + component_type = 'parser' + config_section = 'parsers' + + def parse(self, inputstring, document): + """Override to parse `inputstring` into document tree `document`.""" + raise NotImplementedError('subclass must override this method') + + def setup_parse(self, inputstring, document): + """Initial parse setup. Call at start of `self.parse()`.""" + self.inputstring = inputstring + # provide fallbacks in case the document has only generic settings + document.settings.setdefault('file_insertion_enabled', False) + document.settings.setdefault('raw_enabled', False) + document.settings.setdefault('line_length_limit', 10000) + self.document = document + document.reporter.attach_observer(document.note_parse_message) + + def finish_parse(self): + """Finalize parse details. Call at end of `self.parse()`.""" + self.document.reporter.detach_observer( + self.document.note_parse_message) + + +_parser_aliases = { # short names for known parsers + 'null': 'docutils.parsers.null', + # reStructuredText + 'rst': 'docutils.parsers.rst', + 'restructuredtext': 'docutils.parsers.rst', + 'rest': 'docutils.parsers.rst', + 'restx': 'docutils.parsers.rst', + 'rtxt': 'docutils.parsers.rst', + # 3rd-party Markdown parsers + 'recommonmark': 'docutils.parsers.recommonmark_wrapper', + 'myst': 'myst_parser.docutils_', + # 'pycmark': works out of the box + # dispatcher for 3rd-party Markdown parsers + 'commonmark': 'docutils.parsers.commonmark_wrapper', + 'markdown': 'docutils.parsers.commonmark_wrapper', + } + + +def get_parser_class(parser_name): + """Return the Parser class from the `parser_name` module.""" + name = parser_name.lower() + try: + module = import_module(_parser_aliases.get(name, name)) + except ImportError as err: + raise ImportError(f'Parser "{parser_name}" not found. {err}') + return module.Parser |