This is page 149 of 168. Use http://codebase.md/romanshablio/mcp_server?lines=true&page={x} to view the full context.
# Directory Structure
```
├── .DS_Store
├── .venv
│ ├── __pycache__
│ │ └── hello.cpython-312.pyc
│ ├── bin
│ │ ├── activate
│ │ ├── activate.csh
│ │ ├── activate.fish
│ │ ├── Activate.ps1
│ │ ├── flask
│ │ ├── normalizer
│ │ ├── pip
│ │ ├── pip3
│ │ ├── pip3.12
│ │ ├── python
│ │ ├── python3
│ │ └── python3.12
│ ├── hello.py
│ ├── lib
│ │ └── python3.12
│ │ └── site-packages
│ │ ├── beautifulsoup4-4.12.3.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── licenses
│ │ │ │ ├── AUTHORS
│ │ │ │ └── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ └── WHEEL
│ │ ├── blinker
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _utilities.cpython-312.pyc
│ │ │ │ └── base.cpython-312.pyc
│ │ │ ├── _utilities.py
│ │ │ ├── base.py
│ │ │ └── py.typed
│ │ ├── blinker-1.8.2.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── bs4
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── css.cpython-312.pyc
│ │ │ │ ├── dammit.cpython-312.pyc
│ │ │ │ ├── diagnose.cpython-312.pyc
│ │ │ │ ├── element.cpython-312.pyc
│ │ │ │ └── formatter.cpython-312.pyc
│ │ │ ├── builder
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── _html5lib.cpython-312.pyc
│ │ │ │ │ ├── _htmlparser.cpython-312.pyc
│ │ │ │ │ └── _lxml.cpython-312.pyc
│ │ │ │ ├── _html5lib.py
│ │ │ │ ├── _htmlparser.py
│ │ │ │ └── _lxml.py
│ │ │ ├── css.py
│ │ │ ├── dammit.py
│ │ │ ├── diagnose.py
│ │ │ ├── element.py
│ │ │ ├── formatter.py
│ │ │ └── tests
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── test_builder_registry.cpython-312.pyc
│ │ │ │ ├── test_builder.cpython-312.pyc
│ │ │ │ ├── test_css.cpython-312.pyc
│ │ │ │ ├── test_dammit.cpython-312.pyc
│ │ │ │ ├── test_docs.cpython-312.pyc
│ │ │ │ ├── test_element.cpython-312.pyc
│ │ │ │ ├── test_formatter.cpython-312.pyc
│ │ │ │ ├── test_fuzz.cpython-312.pyc
│ │ │ │ ├── test_html5lib.cpython-312.pyc
│ │ │ │ ├── test_htmlparser.cpython-312.pyc
│ │ │ │ ├── test_lxml.cpython-312.pyc
│ │ │ │ ├── test_navigablestring.cpython-312.pyc
│ │ │ │ ├── test_pageelement.cpython-312.pyc
│ │ │ │ ├── test_soup.cpython-312.pyc
│ │ │ │ ├── test_tag.cpython-312.pyc
│ │ │ │ └── test_tree.cpython-312.pyc
│ │ │ ├── fuzz
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6306874195312640.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase
│ │ │ │ ├── crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase
│ │ │ │ └── crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase
│ │ │ ├── test_builder_registry.py
│ │ │ ├── test_builder.py
│ │ │ ├── test_css.py
│ │ │ ├── test_dammit.py
│ │ │ ├── test_docs.py
│ │ │ ├── test_element.py
│ │ │ ├── test_formatter.py
│ │ │ ├── test_fuzz.py
│ │ │ ├── test_html5lib.py
│ │ │ ├── test_htmlparser.py
│ │ │ ├── test_lxml.py
│ │ │ ├── test_navigablestring.py
│ │ │ ├── test_pageelement.py
│ │ │ ├── test_soup.py
│ │ │ ├── test_tag.py
│ │ │ └── test_tree.py
│ │ ├── certifi
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ └── core.cpython-312.pyc
│ │ │ ├── cacert.pem
│ │ │ ├── core.py
│ │ │ └── py.typed
│ │ ├── certifi-2024.8.30.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── charset_normalizer
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ ├── cd.cpython-312.pyc
│ │ │ │ ├── constant.cpython-312.pyc
│ │ │ │ ├── legacy.cpython-312.pyc
│ │ │ │ ├── md.cpython-312.pyc
│ │ │ │ ├── models.cpython-312.pyc
│ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ └── version.cpython-312.pyc
│ │ │ ├── api.py
│ │ │ ├── cd.py
│ │ │ ├── cli
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __main__.py
│ │ │ │ └── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ └── __main__.cpython-312.pyc
│ │ │ ├── constant.py
│ │ │ ├── legacy.py
│ │ │ ├── md__mypyc.cpython-312-darwin.so
│ │ │ ├── md.cpython-312-darwin.so
│ │ │ ├── md.py
│ │ │ ├── models.py
│ │ │ ├── py.typed
│ │ │ ├── utils.py
│ │ │ └── version.py
│ │ ├── charset_normalizer-3.4.0.dist-info
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── click
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _compat.cpython-312.pyc
│ │ │ │ ├── _termui_impl.cpython-312.pyc
│ │ │ │ ├── _textwrap.cpython-312.pyc
│ │ │ │ ├── _winconsole.cpython-312.pyc
│ │ │ │ ├── core.cpython-312.pyc
│ │ │ │ ├── decorators.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── formatting.cpython-312.pyc
│ │ │ │ ├── globals.cpython-312.pyc
│ │ │ │ ├── parser.cpython-312.pyc
│ │ │ │ ├── shell_completion.cpython-312.pyc
│ │ │ │ ├── termui.cpython-312.pyc
│ │ │ │ ├── testing.cpython-312.pyc
│ │ │ │ ├── types.cpython-312.pyc
│ │ │ │ └── utils.cpython-312.pyc
│ │ │ ├── _compat.py
│ │ │ ├── _termui_impl.py
│ │ │ ├── _textwrap.py
│ │ │ ├── _winconsole.py
│ │ │ ├── core.py
│ │ │ ├── decorators.py
│ │ │ ├── exceptions.py
│ │ │ ├── formatting.py
│ │ │ ├── globals.py
│ │ │ ├── parser.py
│ │ │ ├── py.typed
│ │ │ ├── shell_completion.py
│ │ │ ├── termui.py
│ │ │ ├── testing.py
│ │ │ ├── types.py
│ │ │ └── utils.py
│ │ ├── click-8.1.7.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.rst
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── fake_useragent
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── errors.cpython-312.pyc
│ │ │ │ ├── fake.cpython-312.pyc
│ │ │ │ ├── log.cpython-312.pyc
│ │ │ │ ├── settings.cpython-312.pyc
│ │ │ │ └── utils.cpython-312.pyc
│ │ │ ├── data
│ │ │ │ └── browsers.json
│ │ │ ├── errors.py
│ │ │ ├── fake.py
│ │ │ ├── log.py
│ │ │ ├── settings.py
│ │ │ └── utils.py
│ │ ├── fake_useragent-1.5.1.dist-info
│ │ │ ├── AUTHORS
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── flask
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ ├── app.cpython-312.pyc
│ │ │ │ ├── blueprints.cpython-312.pyc
│ │ │ │ ├── cli.cpython-312.pyc
│ │ │ │ ├── config.cpython-312.pyc
│ │ │ │ ├── ctx.cpython-312.pyc
│ │ │ │ ├── debughelpers.cpython-312.pyc
│ │ │ │ ├── globals.cpython-312.pyc
│ │ │ │ ├── helpers.cpython-312.pyc
│ │ │ │ ├── logging.cpython-312.pyc
│ │ │ │ ├── sessions.cpython-312.pyc
│ │ │ │ ├── signals.cpython-312.pyc
│ │ │ │ ├── templating.cpython-312.pyc
│ │ │ │ ├── testing.cpython-312.pyc
│ │ │ │ ├── typing.cpython-312.pyc
│ │ │ │ ├── views.cpython-312.pyc
│ │ │ │ └── wrappers.cpython-312.pyc
│ │ │ ├── app.py
│ │ │ ├── blueprints.py
│ │ │ ├── cli.py
│ │ │ ├── config.py
│ │ │ ├── ctx.py
│ │ │ ├── debughelpers.py
│ │ │ ├── globals.py
│ │ │ ├── helpers.py
│ │ │ ├── json
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── provider.cpython-312.pyc
│ │ │ │ │ └── tag.cpython-312.pyc
│ │ │ │ ├── provider.py
│ │ │ │ └── tag.py
│ │ │ ├── logging.py
│ │ │ ├── py.typed
│ │ │ ├── sansio
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── app.cpython-312.pyc
│ │ │ │ │ ├── blueprints.cpython-312.pyc
│ │ │ │ │ └── scaffold.cpython-312.pyc
│ │ │ │ ├── app.py
│ │ │ │ ├── blueprints.py
│ │ │ │ ├── README.md
│ │ │ │ └── scaffold.py
│ │ │ ├── sessions.py
│ │ │ ├── signals.py
│ │ │ ├── templating.py
│ │ │ ├── testing.py
│ │ │ ├── typing.py
│ │ │ ├── views.py
│ │ │ └── wrappers.py
│ │ ├── flask-3.0.3.dist-info
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ └── WHEEL
│ │ ├── idna
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── codec.cpython-312.pyc
│ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ ├── core.cpython-312.pyc
│ │ │ │ ├── idnadata.cpython-312.pyc
│ │ │ │ ├── intranges.cpython-312.pyc
│ │ │ │ ├── package_data.cpython-312.pyc
│ │ │ │ └── uts46data.cpython-312.pyc
│ │ │ ├── codec.py
│ │ │ ├── compat.py
│ │ │ ├── core.py
│ │ │ ├── idnadata.py
│ │ │ ├── intranges.py
│ │ │ ├── package_data.py
│ │ │ ├── py.typed
│ │ │ └── uts46data.py
│ │ ├── idna-3.10.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.md
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── itsdangerous
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _json.cpython-312.pyc
│ │ │ │ ├── encoding.cpython-312.pyc
│ │ │ │ ├── exc.cpython-312.pyc
│ │ │ │ ├── serializer.cpython-312.pyc
│ │ │ │ ├── signer.cpython-312.pyc
│ │ │ │ ├── timed.cpython-312.pyc
│ │ │ │ └── url_safe.cpython-312.pyc
│ │ │ ├── _json.py
│ │ │ ├── encoding.py
│ │ │ ├── exc.py
│ │ │ ├── py.typed
│ │ │ ├── serializer.py
│ │ │ ├── signer.py
│ │ │ ├── timed.py
│ │ │ └── url_safe.py
│ │ ├── itsdangerous-2.2.0.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── jinja2
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _identifier.cpython-312.pyc
│ │ │ │ ├── async_utils.cpython-312.pyc
│ │ │ │ ├── bccache.cpython-312.pyc
│ │ │ │ ├── compiler.cpython-312.pyc
│ │ │ │ ├── constants.cpython-312.pyc
│ │ │ │ ├── debug.cpython-312.pyc
│ │ │ │ ├── defaults.cpython-312.pyc
│ │ │ │ ├── environment.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── ext.cpython-312.pyc
│ │ │ │ ├── filters.cpython-312.pyc
│ │ │ │ ├── idtracking.cpython-312.pyc
│ │ │ │ ├── lexer.cpython-312.pyc
│ │ │ │ ├── loaders.cpython-312.pyc
│ │ │ │ ├── meta.cpython-312.pyc
│ │ │ │ ├── nativetypes.cpython-312.pyc
│ │ │ │ ├── nodes.cpython-312.pyc
│ │ │ │ ├── optimizer.cpython-312.pyc
│ │ │ │ ├── parser.cpython-312.pyc
│ │ │ │ ├── runtime.cpython-312.pyc
│ │ │ │ ├── sandbox.cpython-312.pyc
│ │ │ │ ├── tests.cpython-312.pyc
│ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ └── visitor.cpython-312.pyc
│ │ │ ├── _identifier.py
│ │ │ ├── async_utils.py
│ │ │ ├── bccache.py
│ │ │ ├── compiler.py
│ │ │ ├── constants.py
│ │ │ ├── debug.py
│ │ │ ├── defaults.py
│ │ │ ├── environment.py
│ │ │ ├── exceptions.py
│ │ │ ├── ext.py
│ │ │ ├── filters.py
│ │ │ ├── idtracking.py
│ │ │ ├── lexer.py
│ │ │ ├── loaders.py
│ │ │ ├── meta.py
│ │ │ ├── nativetypes.py
│ │ │ ├── nodes.py
│ │ │ ├── optimizer.py
│ │ │ ├── parser.py
│ │ │ ├── py.typed
│ │ │ ├── runtime.py
│ │ │ ├── sandbox.py
│ │ │ ├── tests.py
│ │ │ ├── utils.py
│ │ │ └── visitor.py
│ │ ├── jinja2-3.1.4.dist-info
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── lxml
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _elementpath.cpython-312.pyc
│ │ │ │ ├── builder.cpython-312.pyc
│ │ │ │ ├── cssselect.cpython-312.pyc
│ │ │ │ ├── doctestcompare.cpython-312.pyc
│ │ │ │ ├── ElementInclude.cpython-312.pyc
│ │ │ │ ├── pyclasslookup.cpython-312.pyc
│ │ │ │ ├── sax.cpython-312.pyc
│ │ │ │ └── usedoctest.cpython-312.pyc
│ │ │ ├── _elementpath.cpython-312-darwin.so
│ │ │ ├── _elementpath.py
│ │ │ ├── apihelpers.pxi
│ │ │ ├── builder.cpython-312-darwin.so
│ │ │ ├── builder.py
│ │ │ ├── classlookup.pxi
│ │ │ ├── cleanup.pxi
│ │ │ ├── cssselect.py
│ │ │ ├── debug.pxi
│ │ │ ├── docloader.pxi
│ │ │ ├── doctestcompare.py
│ │ │ ├── dtd.pxi
│ │ │ ├── ElementInclude.py
│ │ │ ├── etree_api.h
│ │ │ ├── etree.cpython-312-darwin.so
│ │ │ ├── etree.h
│ │ │ ├── etree.pyx
│ │ │ ├── extensions.pxi
│ │ │ ├── html
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── _diffcommand.cpython-312.pyc
│ │ │ │ │ ├── _html5builder.cpython-312.pyc
│ │ │ │ │ ├── _setmixin.cpython-312.pyc
│ │ │ │ │ ├── builder.cpython-312.pyc
│ │ │ │ │ ├── clean.cpython-312.pyc
│ │ │ │ │ ├── defs.cpython-312.pyc
│ │ │ │ │ ├── diff.cpython-312.pyc
│ │ │ │ │ ├── ElementSoup.cpython-312.pyc
│ │ │ │ │ ├── formfill.cpython-312.pyc
│ │ │ │ │ ├── html5parser.cpython-312.pyc
│ │ │ │ │ ├── soupparser.cpython-312.pyc
│ │ │ │ │ └── usedoctest.cpython-312.pyc
│ │ │ │ ├── _diffcommand.py
│ │ │ │ ├── _html5builder.py
│ │ │ │ ├── _setmixin.py
│ │ │ │ ├── builder.py
│ │ │ │ ├── clean.py
│ │ │ │ ├── defs.py
│ │ │ │ ├── diff.cpython-312-darwin.so
│ │ │ │ ├── diff.py
│ │ │ │ ├── ElementSoup.py
│ │ │ │ ├── formfill.py
│ │ │ │ ├── html5parser.py
│ │ │ │ ├── soupparser.py
│ │ │ │ └── usedoctest.py
│ │ │ ├── includes
│ │ │ │ ├── __init__.pxd
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ ├── c14n.pxd
│ │ │ │ ├── config.pxd
│ │ │ │ ├── dtdvalid.pxd
│ │ │ │ ├── etree_defs.h
│ │ │ │ ├── etreepublic.pxd
│ │ │ │ ├── extlibs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── libcharset.h
│ │ │ │ │ ├── localcharset.h
│ │ │ │ │ ├── zconf.h
│ │ │ │ │ └── zlib.h
│ │ │ │ ├── htmlparser.pxd
│ │ │ │ ├── libexslt
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── exslt.h
│ │ │ │ │ ├── exsltconfig.h
│ │ │ │ │ └── exsltexports.h
│ │ │ │ ├── libxml
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── c14n.h
│ │ │ │ │ ├── catalog.h
│ │ │ │ │ ├── chvalid.h
│ │ │ │ │ ├── debugXML.h
│ │ │ │ │ ├── dict.h
│ │ │ │ │ ├── encoding.h
│ │ │ │ │ ├── entities.h
│ │ │ │ │ ├── globals.h
│ │ │ │ │ ├── hash.h
│ │ │ │ │ ├── HTMLparser.h
│ │ │ │ │ ├── HTMLtree.h
│ │ │ │ │ ├── list.h
│ │ │ │ │ ├── nanoftp.h
│ │ │ │ │ ├── nanohttp.h
│ │ │ │ │ ├── parser.h
│ │ │ │ │ ├── parserInternals.h
│ │ │ │ │ ├── relaxng.h
│ │ │ │ │ ├── SAX.h
│ │ │ │ │ ├── SAX2.h
│ │ │ │ │ ├── schemasInternals.h
│ │ │ │ │ ├── schematron.h
│ │ │ │ │ ├── threads.h
│ │ │ │ │ ├── tree.h
│ │ │ │ │ ├── uri.h
│ │ │ │ │ ├── valid.h
│ │ │ │ │ ├── xinclude.h
│ │ │ │ │ ├── xlink.h
│ │ │ │ │ ├── xmlautomata.h
│ │ │ │ │ ├── xmlerror.h
│ │ │ │ │ ├── xmlexports.h
│ │ │ │ │ ├── xmlIO.h
│ │ │ │ │ ├── xmlmemory.h
│ │ │ │ │ ├── xmlmodule.h
│ │ │ │ │ ├── xmlreader.h
│ │ │ │ │ ├── xmlregexp.h
│ │ │ │ │ ├── xmlsave.h
│ │ │ │ │ ├── xmlschemas.h
│ │ │ │ │ ├── xmlschemastypes.h
│ │ │ │ │ ├── xmlstring.h
│ │ │ │ │ ├── xmlunicode.h
│ │ │ │ │ ├── xmlversion.h
│ │ │ │ │ ├── xmlwriter.h
│ │ │ │ │ ├── xpath.h
│ │ │ │ │ ├── xpathInternals.h
│ │ │ │ │ └── xpointer.h
│ │ │ │ ├── libxslt
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── attributes.h
│ │ │ │ │ ├── documents.h
│ │ │ │ │ ├── extensions.h
│ │ │ │ │ ├── extra.h
│ │ │ │ │ ├── functions.h
│ │ │ │ │ ├── imports.h
│ │ │ │ │ ├── keys.h
│ │ │ │ │ ├── namespaces.h
│ │ │ │ │ ├── numbersInternals.h
│ │ │ │ │ ├── pattern.h
│ │ │ │ │ ├── preproc.h
│ │ │ │ │ ├── security.h
│ │ │ │ │ ├── templates.h
│ │ │ │ │ ├── transform.h
│ │ │ │ │ ├── variables.h
│ │ │ │ │ ├── xslt.h
│ │ │ │ │ ├── xsltconfig.h
│ │ │ │ │ ├── xsltexports.h
│ │ │ │ │ ├── xsltInternals.h
│ │ │ │ │ ├── xsltlocale.h
│ │ │ │ │ └── xsltutils.h
│ │ │ │ ├── lxml-version.h
│ │ │ │ ├── relaxng.pxd
│ │ │ │ ├── schematron.pxd
│ │ │ │ ├── tree.pxd
│ │ │ │ ├── uri.pxd
│ │ │ │ ├── xinclude.pxd
│ │ │ │ ├── xmlerror.pxd
│ │ │ │ ├── xmlparser.pxd
│ │ │ │ ├── xmlschema.pxd
│ │ │ │ ├── xpath.pxd
│ │ │ │ └── xslt.pxd
│ │ │ ├── isoschematron
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ └── resources
│ │ │ │ ├── rng
│ │ │ │ │ └── iso-schematron.rng
│ │ │ │ └── xsl
│ │ │ │ ├── iso-schematron-xslt1
│ │ │ │ │ ├── iso_abstract_expand.xsl
│ │ │ │ │ ├── iso_dsdl_include.xsl
│ │ │ │ │ ├── iso_schematron_message.xsl
│ │ │ │ │ ├── iso_schematron_skeleton_for_xslt1.xsl
│ │ │ │ │ ├── iso_svrl_for_xslt1.xsl
│ │ │ │ │ └── readme.txt
│ │ │ │ ├── RNG2Schtrn.xsl
│ │ │ │ └── XSD2Schtrn.xsl
│ │ │ ├── iterparse.pxi
│ │ │ ├── lxml.etree_api.h
│ │ │ ├── lxml.etree.h
│ │ │ ├── nsclasses.pxi
│ │ │ ├── objectify.cpython-312-darwin.so
│ │ │ ├── objectify.pyx
│ │ │ ├── objectpath.pxi
│ │ │ ├── parser.pxi
│ │ │ ├── parsertarget.pxi
│ │ │ ├── proxy.pxi
│ │ │ ├── public-api.pxi
│ │ │ ├── pyclasslookup.py
│ │ │ ├── readonlytree.pxi
│ │ │ ├── relaxng.pxi
│ │ │ ├── sax.cpython-312-darwin.so
│ │ │ ├── sax.py
│ │ │ ├── saxparser.pxi
│ │ │ ├── schematron.pxi
│ │ │ ├── serializer.pxi
│ │ │ ├── usedoctest.py
│ │ │ ├── xinclude.pxi
│ │ │ ├── xmlerror.pxi
│ │ │ ├── xmlid.pxi
│ │ │ ├── xmlschema.pxi
│ │ │ ├── xpath.pxi
│ │ │ ├── xslt.pxi
│ │ │ └── xsltext.pxi
│ │ ├── lxml-5.3.0.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── LICENSES.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── markupsafe
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ └── _native.cpython-312.pyc
│ │ │ ├── _native.py
│ │ │ ├── _speedups.c
│ │ │ ├── _speedups.cpython-312-darwin.so
│ │ │ ├── _speedups.pyi
│ │ │ └── py.typed
│ │ ├── MarkupSafe-3.0.1.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── pip
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pip-runner__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ └── __pip-runner__.cpython-312.pyc
│ │ │ ├── _internal
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── build_env.cpython-312.pyc
│ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ ├── configuration.cpython-312.pyc
│ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ ├── main.cpython-312.pyc
│ │ │ │ │ ├── pyproject.cpython-312.pyc
│ │ │ │ │ ├── self_outdated_check.cpython-312.pyc
│ │ │ │ │ └── wheel_builder.cpython-312.pyc
│ │ │ │ ├── build_env.py
│ │ │ │ ├── cache.py
│ │ │ │ ├── cli
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── autocompletion.cpython-312.pyc
│ │ │ │ │ │ ├── base_command.cpython-312.pyc
│ │ │ │ │ │ ├── cmdoptions.cpython-312.pyc
│ │ │ │ │ │ ├── command_context.cpython-312.pyc
│ │ │ │ │ │ ├── index_command.cpython-312.pyc
│ │ │ │ │ │ ├── main_parser.cpython-312.pyc
│ │ │ │ │ │ ├── main.cpython-312.pyc
│ │ │ │ │ │ ├── parser.cpython-312.pyc
│ │ │ │ │ │ ├── progress_bars.cpython-312.pyc
│ │ │ │ │ │ ├── req_command.cpython-312.pyc
│ │ │ │ │ │ ├── spinners.cpython-312.pyc
│ │ │ │ │ │ └── status_codes.cpython-312.pyc
│ │ │ │ │ ├── autocompletion.py
│ │ │ │ │ ├── base_command.py
│ │ │ │ │ ├── cmdoptions.py
│ │ │ │ │ ├── command_context.py
│ │ │ │ │ ├── index_command.py
│ │ │ │ │ ├── main_parser.py
│ │ │ │ │ ├── main.py
│ │ │ │ │ ├── parser.py
│ │ │ │ │ ├── progress_bars.py
│ │ │ │ │ ├── req_command.py
│ │ │ │ │ ├── spinners.py
│ │ │ │ │ └── status_codes.py
│ │ │ │ ├── commands
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ │ ├── check.cpython-312.pyc
│ │ │ │ │ │ ├── completion.cpython-312.pyc
│ │ │ │ │ │ ├── configuration.cpython-312.pyc
│ │ │ │ │ │ ├── debug.cpython-312.pyc
│ │ │ │ │ │ ├── download.cpython-312.pyc
│ │ │ │ │ │ ├── freeze.cpython-312.pyc
│ │ │ │ │ │ ├── hash.cpython-312.pyc
│ │ │ │ │ │ ├── help.cpython-312.pyc
│ │ │ │ │ │ ├── index.cpython-312.pyc
│ │ │ │ │ │ ├── inspect.cpython-312.pyc
│ │ │ │ │ │ ├── install.cpython-312.pyc
│ │ │ │ │ │ ├── list.cpython-312.pyc
│ │ │ │ │ │ ├── search.cpython-312.pyc
│ │ │ │ │ │ ├── show.cpython-312.pyc
│ │ │ │ │ │ ├── uninstall.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── cache.py
│ │ │ │ │ ├── check.py
│ │ │ │ │ ├── completion.py
│ │ │ │ │ ├── configuration.py
│ │ │ │ │ ├── debug.py
│ │ │ │ │ ├── download.py
│ │ │ │ │ ├── freeze.py
│ │ │ │ │ ├── hash.py
│ │ │ │ │ ├── help.py
│ │ │ │ │ ├── index.py
│ │ │ │ │ ├── inspect.py
│ │ │ │ │ ├── install.py
│ │ │ │ │ ├── list.py
│ │ │ │ │ ├── search.py
│ │ │ │ │ ├── show.py
│ │ │ │ │ ├── uninstall.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── configuration.py
│ │ │ │ ├── distributions
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── base.cpython-312.pyc
│ │ │ │ │ │ ├── installed.cpython-312.pyc
│ │ │ │ │ │ ├── sdist.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── installed.py
│ │ │ │ │ ├── sdist.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── exceptions.py
│ │ │ │ ├── index
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── collector.cpython-312.pyc
│ │ │ │ │ │ ├── package_finder.cpython-312.pyc
│ │ │ │ │ │ └── sources.cpython-312.pyc
│ │ │ │ │ ├── collector.py
│ │ │ │ │ ├── package_finder.py
│ │ │ │ │ └── sources.py
│ │ │ │ ├── locations
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _distutils.cpython-312.pyc
│ │ │ │ │ │ ├── _sysconfig.cpython-312.pyc
│ │ │ │ │ │ └── base.cpython-312.pyc
│ │ │ │ │ ├── _distutils.py
│ │ │ │ │ ├── _sysconfig.py
│ │ │ │ │ └── base.py
│ │ │ │ ├── main.py
│ │ │ │ ├── metadata
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _json.cpython-312.pyc
│ │ │ │ │ │ ├── base.cpython-312.pyc
│ │ │ │ │ │ └── pkg_resources.cpython-312.pyc
│ │ │ │ │ ├── _json.py
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── importlib
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _compat.cpython-312.pyc
│ │ │ │ │ │ │ ├── _dists.cpython-312.pyc
│ │ │ │ │ │ │ └── _envs.cpython-312.pyc
│ │ │ │ │ │ ├── _compat.py
│ │ │ │ │ │ ├── _dists.py
│ │ │ │ │ │ └── _envs.py
│ │ │ │ │ └── pkg_resources.py
│ │ │ │ ├── models
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── candidate.cpython-312.pyc
│ │ │ │ │ │ ├── direct_url.cpython-312.pyc
│ │ │ │ │ │ ├── format_control.cpython-312.pyc
│ │ │ │ │ │ ├── index.cpython-312.pyc
│ │ │ │ │ │ ├── installation_report.cpython-312.pyc
│ │ │ │ │ │ ├── link.cpython-312.pyc
│ │ │ │ │ │ ├── scheme.cpython-312.pyc
│ │ │ │ │ │ ├── search_scope.cpython-312.pyc
│ │ │ │ │ │ ├── selection_prefs.cpython-312.pyc
│ │ │ │ │ │ ├── target_python.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── candidate.py
│ │ │ │ │ ├── direct_url.py
│ │ │ │ │ ├── format_control.py
│ │ │ │ │ ├── index.py
│ │ │ │ │ ├── installation_report.py
│ │ │ │ │ ├── link.py
│ │ │ │ │ ├── scheme.py
│ │ │ │ │ ├── search_scope.py
│ │ │ │ │ ├── selection_prefs.py
│ │ │ │ │ ├── target_python.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── network
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ │ ├── download.cpython-312.pyc
│ │ │ │ │ │ ├── lazy_wheel.cpython-312.pyc
│ │ │ │ │ │ ├── session.cpython-312.pyc
│ │ │ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ │ │ └── xmlrpc.cpython-312.pyc
│ │ │ │ │ ├── auth.py
│ │ │ │ │ ├── cache.py
│ │ │ │ │ ├── download.py
│ │ │ │ │ ├── lazy_wheel.py
│ │ │ │ │ ├── session.py
│ │ │ │ │ ├── utils.py
│ │ │ │ │ └── xmlrpc.py
│ │ │ │ ├── operations
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── check.cpython-312.pyc
│ │ │ │ │ │ ├── freeze.cpython-312.pyc
│ │ │ │ │ │ └── prepare.cpython-312.pyc
│ │ │ │ │ ├── build
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── build_tracker.cpython-312.pyc
│ │ │ │ │ │ │ ├── metadata_editable.cpython-312.pyc
│ │ │ │ │ │ │ ├── metadata_legacy.cpython-312.pyc
│ │ │ │ │ │ │ ├── metadata.cpython-312.pyc
│ │ │ │ │ │ │ ├── wheel_editable.cpython-312.pyc
│ │ │ │ │ │ │ ├── wheel_legacy.cpython-312.pyc
│ │ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ │ ├── build_tracker.py
│ │ │ │ │ │ ├── metadata_editable.py
│ │ │ │ │ │ ├── metadata_legacy.py
│ │ │ │ │ │ ├── metadata.py
│ │ │ │ │ │ ├── wheel_editable.py
│ │ │ │ │ │ ├── wheel_legacy.py
│ │ │ │ │ │ └── wheel.py
│ │ │ │ │ ├── check.py
│ │ │ │ │ ├── freeze.py
│ │ │ │ │ ├── install
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── editable_legacy.cpython-312.pyc
│ │ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ │ ├── editable_legacy.py
│ │ │ │ │ │ └── wheel.py
│ │ │ │ │ └── prepare.py
│ │ │ │ ├── pyproject.py
│ │ │ │ ├── req
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── constructors.cpython-312.pyc
│ │ │ │ │ │ ├── req_file.cpython-312.pyc
│ │ │ │ │ │ ├── req_install.cpython-312.pyc
│ │ │ │ │ │ ├── req_set.cpython-312.pyc
│ │ │ │ │ │ └── req_uninstall.cpython-312.pyc
│ │ │ │ │ ├── constructors.py
│ │ │ │ │ ├── req_file.py
│ │ │ │ │ ├── req_install.py
│ │ │ │ │ ├── req_set.py
│ │ │ │ │ └── req_uninstall.py
│ │ │ │ ├── resolution
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ └── base.cpython-312.pyc
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── legacy
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── resolver.cpython-312.pyc
│ │ │ │ │ │ └── resolver.py
│ │ │ │ │ └── resolvelib
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── base.cpython-312.pyc
│ │ │ │ │ │ ├── candidates.cpython-312.pyc
│ │ │ │ │ │ ├── factory.cpython-312.pyc
│ │ │ │ │ │ ├── found_candidates.cpython-312.pyc
│ │ │ │ │ │ ├── provider.cpython-312.pyc
│ │ │ │ │ │ ├── reporter.cpython-312.pyc
│ │ │ │ │ │ ├── requirements.cpython-312.pyc
│ │ │ │ │ │ └── resolver.cpython-312.pyc
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── candidates.py
│ │ │ │ │ ├── factory.py
│ │ │ │ │ ├── found_candidates.py
│ │ │ │ │ ├── provider.py
│ │ │ │ │ ├── reporter.py
│ │ │ │ │ ├── requirements.py
│ │ │ │ │ └── resolver.py
│ │ │ │ ├── self_outdated_check.py
│ │ │ │ ├── utils
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _jaraco_text.cpython-312.pyc
│ │ │ │ │ │ ├── _log.cpython-312.pyc
│ │ │ │ │ │ ├── appdirs.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── compatibility_tags.cpython-312.pyc
│ │ │ │ │ │ ├── datetime.cpython-312.pyc
│ │ │ │ │ │ ├── deprecation.cpython-312.pyc
│ │ │ │ │ │ ├── direct_url_helpers.cpython-312.pyc
│ │ │ │ │ │ ├── egg_link.cpython-312.pyc
│ │ │ │ │ │ ├── encoding.cpython-312.pyc
│ │ │ │ │ │ ├── entrypoints.cpython-312.pyc
│ │ │ │ │ │ ├── filesystem.cpython-312.pyc
│ │ │ │ │ │ ├── filetypes.cpython-312.pyc
│ │ │ │ │ │ ├── glibc.cpython-312.pyc
│ │ │ │ │ │ ├── hashes.cpython-312.pyc
│ │ │ │ │ │ ├── logging.cpython-312.pyc
│ │ │ │ │ │ ├── misc.cpython-312.pyc
│ │ │ │ │ │ ├── packaging.cpython-312.pyc
│ │ │ │ │ │ ├── retry.cpython-312.pyc
│ │ │ │ │ │ ├── setuptools_build.cpython-312.pyc
│ │ │ │ │ │ ├── subprocess.cpython-312.pyc
│ │ │ │ │ │ ├── temp_dir.cpython-312.pyc
│ │ │ │ │ │ ├── unpacking.cpython-312.pyc
│ │ │ │ │ │ ├── urls.cpython-312.pyc
│ │ │ │ │ │ ├── virtualenv.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── _jaraco_text.py
│ │ │ │ │ ├── _log.py
│ │ │ │ │ ├── appdirs.py
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── compatibility_tags.py
│ │ │ │ │ ├── datetime.py
│ │ │ │ │ ├── deprecation.py
│ │ │ │ │ ├── direct_url_helpers.py
│ │ │ │ │ ├── egg_link.py
│ │ │ │ │ ├── encoding.py
│ │ │ │ │ ├── entrypoints.py
│ │ │ │ │ ├── filesystem.py
│ │ │ │ │ ├── filetypes.py
│ │ │ │ │ ├── glibc.py
│ │ │ │ │ ├── hashes.py
│ │ │ │ │ ├── logging.py
│ │ │ │ │ ├── misc.py
│ │ │ │ │ ├── packaging.py
│ │ │ │ │ ├── retry.py
│ │ │ │ │ ├── setuptools_build.py
│ │ │ │ │ ├── subprocess.py
│ │ │ │ │ ├── temp_dir.py
│ │ │ │ │ ├── unpacking.py
│ │ │ │ │ ├── urls.py
│ │ │ │ │ ├── virtualenv.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── vcs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── bazaar.cpython-312.pyc
│ │ │ │ │ │ ├── git.cpython-312.pyc
│ │ │ │ │ │ ├── mercurial.cpython-312.pyc
│ │ │ │ │ │ ├── subversion.cpython-312.pyc
│ │ │ │ │ │ └── versioncontrol.cpython-312.pyc
│ │ │ │ │ ├── bazaar.py
│ │ │ │ │ ├── git.py
│ │ │ │ │ ├── mercurial.py
│ │ │ │ │ ├── subversion.py
│ │ │ │ │ └── versioncontrol.py
│ │ │ │ └── wheel_builder.py
│ │ │ ├── _vendor
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ └── typing_extensions.cpython-312.pyc
│ │ │ │ ├── cachecontrol
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _cmd.cpython-312.pyc
│ │ │ │ │ │ ├── adapter.cpython-312.pyc
│ │ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ │ ├── controller.cpython-312.pyc
│ │ │ │ │ │ ├── filewrapper.cpython-312.pyc
│ │ │ │ │ │ ├── heuristics.cpython-312.pyc
│ │ │ │ │ │ ├── serialize.cpython-312.pyc
│ │ │ │ │ │ └── wrapper.cpython-312.pyc
│ │ │ │ │ ├── _cmd.py
│ │ │ │ │ ├── adapter.py
│ │ │ │ │ ├── cache.py
│ │ │ │ │ ├── caches
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── file_cache.cpython-312.pyc
│ │ │ │ │ │ │ └── redis_cache.cpython-312.pyc
│ │ │ │ │ │ ├── file_cache.py
│ │ │ │ │ │ └── redis_cache.py
│ │ │ │ │ ├── controller.py
│ │ │ │ │ ├── filewrapper.py
│ │ │ │ │ ├── heuristics.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── serialize.py
│ │ │ │ │ └── wrapper.py
│ │ │ │ ├── certifi
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ └── core.cpython-312.pyc
│ │ │ │ │ ├── cacert.pem
│ │ │ │ │ ├── core.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── distlib
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── database.cpython-312.pyc
│ │ │ │ │ │ ├── index.cpython-312.pyc
│ │ │ │ │ │ ├── locators.cpython-312.pyc
│ │ │ │ │ │ ├── manifest.cpython-312.pyc
│ │ │ │ │ │ ├── markers.cpython-312.pyc
│ │ │ │ │ │ ├── metadata.cpython-312.pyc
│ │ │ │ │ │ ├── resources.cpython-312.pyc
│ │ │ │ │ │ ├── scripts.cpython-312.pyc
│ │ │ │ │ │ ├── util.cpython-312.pyc
│ │ │ │ │ │ ├── version.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── database.py
│ │ │ │ │ ├── index.py
│ │ │ │ │ ├── locators.py
│ │ │ │ │ ├── manifest.py
│ │ │ │ │ ├── markers.py
│ │ │ │ │ ├── metadata.py
│ │ │ │ │ ├── resources.py
│ │ │ │ │ ├── scripts.py
│ │ │ │ │ ├── t32.exe
│ │ │ │ │ ├── t64-arm.exe
│ │ │ │ │ ├── t64.exe
│ │ │ │ │ ├── util.py
│ │ │ │ │ ├── version.py
│ │ │ │ │ ├── w32.exe
│ │ │ │ │ ├── w64-arm.exe
│ │ │ │ │ ├── w64.exe
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── distro
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ └── distro.cpython-312.pyc
│ │ │ │ │ ├── distro.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── idna
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── codec.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── core.cpython-312.pyc
│ │ │ │ │ │ ├── idnadata.cpython-312.pyc
│ │ │ │ │ │ ├── intranges.cpython-312.pyc
│ │ │ │ │ │ ├── package_data.cpython-312.pyc
│ │ │ │ │ │ └── uts46data.cpython-312.pyc
│ │ │ │ │ ├── codec.py
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── core.py
│ │ │ │ │ ├── idnadata.py
│ │ │ │ │ ├── intranges.py
│ │ │ │ │ ├── package_data.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ └── uts46data.py
│ │ │ │ ├── msgpack
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ │ ├── ext.cpython-312.pyc
│ │ │ │ │ │ └── fallback.cpython-312.pyc
│ │ │ │ │ ├── exceptions.py
│ │ │ │ │ ├── ext.py
│ │ │ │ │ └── fallback.py
│ │ │ │ ├── packaging
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _elffile.cpython-312.pyc
│ │ │ │ │ │ ├── _manylinux.cpython-312.pyc
│ │ │ │ │ │ ├── _musllinux.cpython-312.pyc
│ │ │ │ │ │ ├── _parser.cpython-312.pyc
│ │ │ │ │ │ ├── _structures.cpython-312.pyc
│ │ │ │ │ │ ├── _tokenizer.cpython-312.pyc
│ │ │ │ │ │ ├── markers.cpython-312.pyc
│ │ │ │ │ │ ├── metadata.cpython-312.pyc
│ │ │ │ │ │ ├── requirements.cpython-312.pyc
│ │ │ │ │ │ ├── specifiers.cpython-312.pyc
│ │ │ │ │ │ ├── tags.cpython-312.pyc
│ │ │ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ │ │ └── version.cpython-312.pyc
│ │ │ │ │ ├── _elffile.py
│ │ │ │ │ ├── _manylinux.py
│ │ │ │ │ ├── _musllinux.py
│ │ │ │ │ ├── _parser.py
│ │ │ │ │ ├── _structures.py
│ │ │ │ │ ├── _tokenizer.py
│ │ │ │ │ ├── markers.py
│ │ │ │ │ ├── metadata.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── requirements.py
│ │ │ │ │ ├── specifiers.py
│ │ │ │ │ ├── tags.py
│ │ │ │ │ ├── utils.py
│ │ │ │ │ └── version.py
│ │ │ │ ├── pkg_resources
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── __pycache__
│ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ ├── platformdirs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ ├── android.cpython-312.pyc
│ │ │ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ │ │ ├── macos.cpython-312.pyc
│ │ │ │ │ │ ├── unix.cpython-312.pyc
│ │ │ │ │ │ ├── version.cpython-312.pyc
│ │ │ │ │ │ └── windows.cpython-312.pyc
│ │ │ │ │ ├── android.py
│ │ │ │ │ ├── api.py
│ │ │ │ │ ├── macos.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── unix.py
│ │ │ │ │ ├── version.py
│ │ │ │ │ └── windows.py
│ │ │ │ ├── pygments
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ ├── cmdline.cpython-312.pyc
│ │ │ │ │ │ ├── console.cpython-312.pyc
│ │ │ │ │ │ ├── filter.cpython-312.pyc
│ │ │ │ │ │ ├── formatter.cpython-312.pyc
│ │ │ │ │ │ ├── lexer.cpython-312.pyc
│ │ │ │ │ │ ├── modeline.cpython-312.pyc
│ │ │ │ │ │ ├── plugin.cpython-312.pyc
│ │ │ │ │ │ ├── regexopt.cpython-312.pyc
│ │ │ │ │ │ ├── scanner.cpython-312.pyc
│ │ │ │ │ │ ├── sphinxext.cpython-312.pyc
│ │ │ │ │ │ ├── style.cpython-312.pyc
│ │ │ │ │ │ ├── token.cpython-312.pyc
│ │ │ │ │ │ ├── unistring.cpython-312.pyc
│ │ │ │ │ │ └── util.cpython-312.pyc
│ │ │ │ │ ├── cmdline.py
│ │ │ │ │ ├── console.py
│ │ │ │ │ ├── filter.py
│ │ │ │ │ ├── filters
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── formatter.py
│ │ │ │ │ ├── formatters
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _mapping.cpython-312.pyc
│ │ │ │ │ │ │ ├── bbcode.cpython-312.pyc
│ │ │ │ │ │ │ ├── groff.cpython-312.pyc
│ │ │ │ │ │ │ ├── html.cpython-312.pyc
│ │ │ │ │ │ │ ├── img.cpython-312.pyc
│ │ │ │ │ │ │ ├── irc.cpython-312.pyc
│ │ │ │ │ │ │ ├── latex.cpython-312.pyc
│ │ │ │ │ │ │ ├── other.cpython-312.pyc
│ │ │ │ │ │ │ ├── pangomarkup.cpython-312.pyc
│ │ │ │ │ │ │ ├── rtf.cpython-312.pyc
│ │ │ │ │ │ │ ├── svg.cpython-312.pyc
│ │ │ │ │ │ │ ├── terminal.cpython-312.pyc
│ │ │ │ │ │ │ └── terminal256.cpython-312.pyc
│ │ │ │ │ │ ├── _mapping.py
│ │ │ │ │ │ ├── bbcode.py
│ │ │ │ │ │ ├── groff.py
│ │ │ │ │ │ ├── html.py
│ │ │ │ │ │ ├── img.py
│ │ │ │ │ │ ├── irc.py
│ │ │ │ │ │ ├── latex.py
│ │ │ │ │ │ ├── other.py
│ │ │ │ │ │ ├── pangomarkup.py
│ │ │ │ │ │ ├── rtf.py
│ │ │ │ │ │ ├── svg.py
│ │ │ │ │ │ ├── terminal.py
│ │ │ │ │ │ └── terminal256.py
│ │ │ │ │ ├── lexer.py
│ │ │ │ │ ├── lexers
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _mapping.cpython-312.pyc
│ │ │ │ │ │ │ └── python.cpython-312.pyc
│ │ │ │ │ │ ├── _mapping.py
│ │ │ │ │ │ └── python.py
│ │ │ │ │ ├── modeline.py
│ │ │ │ │ ├── plugin.py
│ │ │ │ │ ├── regexopt.py
│ │ │ │ │ ├── scanner.py
│ │ │ │ │ ├── sphinxext.py
│ │ │ │ │ ├── style.py
│ │ │ │ │ ├── styles
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── _mapping.cpython-312.pyc
│ │ │ │ │ │ └── _mapping.py
│ │ │ │ │ ├── token.py
│ │ │ │ │ ├── unistring.py
│ │ │ │ │ └── util.py
│ │ │ │ ├── pyproject_hooks
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _compat.cpython-312.pyc
│ │ │ │ │ │ └── _impl.cpython-312.pyc
│ │ │ │ │ ├── _compat.py
│ │ │ │ │ ├── _impl.py
│ │ │ │ │ └── _in_process
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ └── _in_process.cpython-312.pyc
│ │ │ │ │ └── _in_process.py
│ │ │ │ ├── requests
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __version__.cpython-312.pyc
│ │ │ │ │ │ ├── _internal_utils.cpython-312.pyc
│ │ │ │ │ │ ├── adapters.cpython-312.pyc
│ │ │ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ │ │ ├── certs.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── cookies.cpython-312.pyc
│ │ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ │ ├── help.cpython-312.pyc
│ │ │ │ │ │ ├── hooks.cpython-312.pyc
│ │ │ │ │ │ ├── models.cpython-312.pyc
│ │ │ │ │ │ ├── packages.cpython-312.pyc
│ │ │ │ │ │ ├── sessions.cpython-312.pyc
│ │ │ │ │ │ ├── status_codes.cpython-312.pyc
│ │ │ │ │ │ ├── structures.cpython-312.pyc
│ │ │ │ │ │ └── utils.cpython-312.pyc
│ │ │ │ │ ├── __version__.py
│ │ │ │ │ ├── _internal_utils.py
│ │ │ │ │ ├── adapters.py
│ │ │ │ │ ├── api.py
│ │ │ │ │ ├── auth.py
│ │ │ │ │ ├── certs.py
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── cookies.py
│ │ │ │ │ ├── exceptions.py
│ │ │ │ │ ├── help.py
│ │ │ │ │ ├── hooks.py
│ │ │ │ │ ├── models.py
│ │ │ │ │ ├── packages.py
│ │ │ │ │ ├── sessions.py
│ │ │ │ │ ├── status_codes.py
│ │ │ │ │ ├── structures.py
│ │ │ │ │ └── utils.py
│ │ │ │ ├── resolvelib
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── providers.cpython-312.pyc
│ │ │ │ │ │ ├── reporters.cpython-312.pyc
│ │ │ │ │ │ ├── resolvers.cpython-312.pyc
│ │ │ │ │ │ └── structs.cpython-312.pyc
│ │ │ │ │ ├── compat
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── collections_abc.cpython-312.pyc
│ │ │ │ │ │ └── collections_abc.py
│ │ │ │ │ ├── providers.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── reporters.py
│ │ │ │ │ ├── resolvers.py
│ │ │ │ │ └── structs.py
│ │ │ │ ├── rich
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ ├── _cell_widths.cpython-312.pyc
│ │ │ │ │ │ ├── _emoji_codes.cpython-312.pyc
│ │ │ │ │ │ ├── _emoji_replace.cpython-312.pyc
│ │ │ │ │ │ ├── _export_format.cpython-312.pyc
│ │ │ │ │ │ ├── _extension.cpython-312.pyc
│ │ │ │ │ │ ├── _fileno.cpython-312.pyc
│ │ │ │ │ │ ├── _inspect.cpython-312.pyc
│ │ │ │ │ │ ├── _log_render.cpython-312.pyc
│ │ │ │ │ │ ├── _loop.cpython-312.pyc
│ │ │ │ │ │ ├── _null_file.cpython-312.pyc
│ │ │ │ │ │ ├── _palettes.cpython-312.pyc
│ │ │ │ │ │ ├── _pick.cpython-312.pyc
│ │ │ │ │ │ ├── _ratio.cpython-312.pyc
│ │ │ │ │ │ ├── _spinners.cpython-312.pyc
│ │ │ │ │ │ ├── _stack.cpython-312.pyc
│ │ │ │ │ │ ├── _timer.cpython-312.pyc
│ │ │ │ │ │ ├── _win32_console.cpython-312.pyc
│ │ │ │ │ │ ├── _windows_renderer.cpython-312.pyc
│ │ │ │ │ │ ├── _windows.cpython-312.pyc
│ │ │ │ │ │ ├── _wrap.cpython-312.pyc
│ │ │ │ │ │ ├── abc.cpython-312.pyc
│ │ │ │ │ │ ├── align.cpython-312.pyc
│ │ │ │ │ │ ├── ansi.cpython-312.pyc
│ │ │ │ │ │ ├── bar.cpython-312.pyc
│ │ │ │ │ │ ├── box.cpython-312.pyc
│ │ │ │ │ │ ├── cells.cpython-312.pyc
│ │ │ │ │ │ ├── color_triplet.cpython-312.pyc
│ │ │ │ │ │ ├── color.cpython-312.pyc
│ │ │ │ │ │ ├── columns.cpython-312.pyc
│ │ │ │ │ │ ├── console.cpython-312.pyc
│ │ │ │ │ │ ├── constrain.cpython-312.pyc
│ │ │ │ │ │ ├── containers.cpython-312.pyc
│ │ │ │ │ │ ├── control.cpython-312.pyc
│ │ │ │ │ │ ├── default_styles.cpython-312.pyc
│ │ │ │ │ │ ├── diagnose.cpython-312.pyc
│ │ │ │ │ │ ├── emoji.cpython-312.pyc
│ │ │ │ │ │ ├── errors.cpython-312.pyc
│ │ │ │ │ │ ├── file_proxy.cpython-312.pyc
│ │ │ │ │ │ ├── filesize.cpython-312.pyc
│ │ │ │ │ │ ├── highlighter.cpython-312.pyc
│ │ │ │ │ │ ├── json.cpython-312.pyc
│ │ │ │ │ │ ├── jupyter.cpython-312.pyc
│ │ │ │ │ │ ├── layout.cpython-312.pyc
│ │ │ │ │ │ ├── live_render.cpython-312.pyc
│ │ │ │ │ │ ├── live.cpython-312.pyc
│ │ │ │ │ │ ├── logging.cpython-312.pyc
│ │ │ │ │ │ ├── markup.cpython-312.pyc
│ │ │ │ │ │ ├── measure.cpython-312.pyc
│ │ │ │ │ │ ├── padding.cpython-312.pyc
│ │ │ │ │ │ ├── pager.cpython-312.pyc
│ │ │ │ │ │ ├── palette.cpython-312.pyc
│ │ │ │ │ │ ├── panel.cpython-312.pyc
│ │ │ │ │ │ ├── pretty.cpython-312.pyc
│ │ │ │ │ │ ├── progress_bar.cpython-312.pyc
│ │ │ │ │ │ ├── progress.cpython-312.pyc
│ │ │ │ │ │ ├── prompt.cpython-312.pyc
│ │ │ │ │ │ ├── protocol.cpython-312.pyc
│ │ │ │ │ │ ├── region.cpython-312.pyc
│ │ │ │ │ │ ├── repr.cpython-312.pyc
│ │ │ │ │ │ ├── rule.cpython-312.pyc
│ │ │ │ │ │ ├── scope.cpython-312.pyc
│ │ │ │ │ │ ├── screen.cpython-312.pyc
│ │ │ │ │ │ ├── segment.cpython-312.pyc
│ │ │ │ │ │ ├── spinner.cpython-312.pyc
│ │ │ │ │ │ ├── status.cpython-312.pyc
│ │ │ │ │ │ ├── style.cpython-312.pyc
│ │ │ │ │ │ ├── styled.cpython-312.pyc
│ │ │ │ │ │ ├── syntax.cpython-312.pyc
│ │ │ │ │ │ ├── table.cpython-312.pyc
│ │ │ │ │ │ ├── terminal_theme.cpython-312.pyc
│ │ │ │ │ │ ├── text.cpython-312.pyc
│ │ │ │ │ │ ├── theme.cpython-312.pyc
│ │ │ │ │ │ ├── themes.cpython-312.pyc
│ │ │ │ │ │ ├── traceback.cpython-312.pyc
│ │ │ │ │ │ └── tree.cpython-312.pyc
│ │ │ │ │ ├── _cell_widths.py
│ │ │ │ │ ├── _emoji_codes.py
│ │ │ │ │ ├── _emoji_replace.py
│ │ │ │ │ ├── _export_format.py
│ │ │ │ │ ├── _extension.py
│ │ │ │ │ ├── _fileno.py
│ │ │ │ │ ├── _inspect.py
│ │ │ │ │ ├── _log_render.py
│ │ │ │ │ ├── _loop.py
│ │ │ │ │ ├── _null_file.py
│ │ │ │ │ ├── _palettes.py
│ │ │ │ │ ├── _pick.py
│ │ │ │ │ ├── _ratio.py
│ │ │ │ │ ├── _spinners.py
│ │ │ │ │ ├── _stack.py
│ │ │ │ │ ├── _timer.py
│ │ │ │ │ ├── _win32_console.py
│ │ │ │ │ ├── _windows_renderer.py
│ │ │ │ │ ├── _windows.py
│ │ │ │ │ ├── _wrap.py
│ │ │ │ │ ├── abc.py
│ │ │ │ │ ├── align.py
│ │ │ │ │ ├── ansi.py
│ │ │ │ │ ├── bar.py
│ │ │ │ │ ├── box.py
│ │ │ │ │ ├── cells.py
│ │ │ │ │ ├── color_triplet.py
│ │ │ │ │ ├── color.py
│ │ │ │ │ ├── columns.py
│ │ │ │ │ ├── console.py
│ │ │ │ │ ├── constrain.py
│ │ │ │ │ ├── containers.py
│ │ │ │ │ ├── control.py
│ │ │ │ │ ├── default_styles.py
│ │ │ │ │ ├── diagnose.py
│ │ │ │ │ ├── emoji.py
│ │ │ │ │ ├── errors.py
│ │ │ │ │ ├── file_proxy.py
│ │ │ │ │ ├── filesize.py
│ │ │ │ │ ├── highlighter.py
│ │ │ │ │ ├── json.py
│ │ │ │ │ ├── jupyter.py
│ │ │ │ │ ├── layout.py
│ │ │ │ │ ├── live_render.py
│ │ │ │ │ ├── live.py
│ │ │ │ │ ├── logging.py
│ │ │ │ │ ├── markup.py
│ │ │ │ │ ├── measure.py
│ │ │ │ │ ├── padding.py
│ │ │ │ │ ├── pager.py
│ │ │ │ │ ├── palette.py
│ │ │ │ │ ├── panel.py
│ │ │ │ │ ├── pretty.py
│ │ │ │ │ ├── progress_bar.py
│ │ │ │ │ ├── progress.py
│ │ │ │ │ ├── prompt.py
│ │ │ │ │ ├── protocol.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── region.py
│ │ │ │ │ ├── repr.py
│ │ │ │ │ ├── rule.py
│ │ │ │ │ ├── scope.py
│ │ │ │ │ ├── screen.py
│ │ │ │ │ ├── segment.py
│ │ │ │ │ ├── spinner.py
│ │ │ │ │ ├── status.py
│ │ │ │ │ ├── style.py
│ │ │ │ │ ├── styled.py
│ │ │ │ │ ├── syntax.py
│ │ │ │ │ ├── table.py
│ │ │ │ │ ├── terminal_theme.py
│ │ │ │ │ ├── text.py
│ │ │ │ │ ├── theme.py
│ │ │ │ │ ├── themes.py
│ │ │ │ │ ├── traceback.py
│ │ │ │ │ └── tree.py
│ │ │ │ ├── tomli
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _parser.cpython-312.pyc
│ │ │ │ │ │ ├── _re.cpython-312.pyc
│ │ │ │ │ │ └── _types.cpython-312.pyc
│ │ │ │ │ ├── _parser.py
│ │ │ │ │ ├── _re.py
│ │ │ │ │ ├── _types.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── truststore
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _api.cpython-312.pyc
│ │ │ │ │ │ ├── _macos.cpython-312.pyc
│ │ │ │ │ │ ├── _openssl.cpython-312.pyc
│ │ │ │ │ │ ├── _ssl_constants.cpython-312.pyc
│ │ │ │ │ │ └── _windows.cpython-312.pyc
│ │ │ │ │ ├── _api.py
│ │ │ │ │ ├── _macos.py
│ │ │ │ │ ├── _openssl.py
│ │ │ │ │ ├── _ssl_constants.py
│ │ │ │ │ ├── _windows.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── typing_extensions.py
│ │ │ │ ├── urllib3
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _collections.cpython-312.pyc
│ │ │ │ │ │ ├── _version.cpython-312.pyc
│ │ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ │ ├── connectionpool.cpython-312.pyc
│ │ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ │ ├── fields.cpython-312.pyc
│ │ │ │ │ │ ├── filepost.cpython-312.pyc
│ │ │ │ │ │ ├── poolmanager.cpython-312.pyc
│ │ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ │ └── response.cpython-312.pyc
│ │ │ │ │ ├── _collections.py
│ │ │ │ │ ├── _version.py
│ │ │ │ │ ├── connection.py
│ │ │ │ │ ├── connectionpool.py
│ │ │ │ │ ├── contrib
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _appengine_environ.cpython-312.pyc
│ │ │ │ │ │ │ ├── appengine.cpython-312.pyc
│ │ │ │ │ │ │ ├── ntlmpool.cpython-312.pyc
│ │ │ │ │ │ │ ├── pyopenssl.cpython-312.pyc
│ │ │ │ │ │ │ ├── securetransport.cpython-312.pyc
│ │ │ │ │ │ │ └── socks.cpython-312.pyc
│ │ │ │ │ │ ├── _appengine_environ.py
│ │ │ │ │ │ ├── _securetransport
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ │ ├── bindings.cpython-312.pyc
│ │ │ │ │ │ │ │ └── low_level.cpython-312.pyc
│ │ │ │ │ │ │ ├── bindings.py
│ │ │ │ │ │ │ └── low_level.py
│ │ │ │ │ │ ├── appengine.py
│ │ │ │ │ │ ├── ntlmpool.py
│ │ │ │ │ │ ├── pyopenssl.py
│ │ │ │ │ │ ├── securetransport.py
│ │ │ │ │ │ └── socks.py
│ │ │ │ │ ├── exceptions.py
│ │ │ │ │ ├── fields.py
│ │ │ │ │ ├── filepost.py
│ │ │ │ │ ├── packages
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── six.cpython-312.pyc
│ │ │ │ │ │ ├── backports
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ │ ├── makefile.cpython-312.pyc
│ │ │ │ │ │ │ │ └── weakref_finalize.cpython-312.pyc
│ │ │ │ │ │ │ ├── makefile.py
│ │ │ │ │ │ │ └── weakref_finalize.py
│ │ │ │ │ │ └── six.py
│ │ │ │ │ ├── poolmanager.py
│ │ │ │ │ ├── request.py
│ │ │ │ │ ├── response.py
│ │ │ │ │ └── util
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ │ ├── proxy.cpython-312.pyc
│ │ │ │ │ │ ├── queue.cpython-312.pyc
│ │ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ │ ├── response.cpython-312.pyc
│ │ │ │ │ │ ├── retry.cpython-312.pyc
│ │ │ │ │ │ ├── ssl_.cpython-312.pyc
│ │ │ │ │ │ ├── ssl_match_hostname.cpython-312.pyc
│ │ │ │ │ │ ├── ssltransport.cpython-312.pyc
│ │ │ │ │ │ ├── timeout.cpython-312.pyc
│ │ │ │ │ │ ├── url.cpython-312.pyc
│ │ │ │ │ │ └── wait.cpython-312.pyc
│ │ │ │ │ ├── connection.py
│ │ │ │ │ ├── proxy.py
│ │ │ │ │ ├── queue.py
│ │ │ │ │ ├── request.py
│ │ │ │ │ ├── response.py
│ │ │ │ │ ├── retry.py
│ │ │ │ │ ├── ssl_.py
│ │ │ │ │ ├── ssl_match_hostname.py
│ │ │ │ │ ├── ssltransport.py
│ │ │ │ │ ├── timeout.py
│ │ │ │ │ ├── url.py
│ │ │ │ │ └── wait.py
│ │ │ │ └── vendor.txt
│ │ │ └── py.typed
│ │ ├── pip-24.2.dist-info
│ │ │ ├── AUTHORS.txt
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── requests
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __version__.cpython-312.pyc
│ │ │ │ ├── _internal_utils.cpython-312.pyc
│ │ │ │ ├── adapters.cpython-312.pyc
│ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ ├── certs.cpython-312.pyc
│ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ ├── cookies.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── help.cpython-312.pyc
│ │ │ │ ├── hooks.cpython-312.pyc
│ │ │ │ ├── models.cpython-312.pyc
│ │ │ │ ├── packages.cpython-312.pyc
│ │ │ │ ├── sessions.cpython-312.pyc
│ │ │ │ ├── status_codes.cpython-312.pyc
│ │ │ │ ├── structures.cpython-312.pyc
│ │ │ │ └── utils.cpython-312.pyc
│ │ │ ├── __version__.py
│ │ │ ├── _internal_utils.py
│ │ │ ├── adapters.py
│ │ │ ├── api.py
│ │ │ ├── auth.py
│ │ │ ├── certs.py
│ │ │ ├── compat.py
│ │ │ ├── cookies.py
│ │ │ ├── exceptions.py
│ │ │ ├── help.py
│ │ │ ├── hooks.py
│ │ │ ├── models.py
│ │ │ ├── packages.py
│ │ │ ├── sessions.py
│ │ │ ├── status_codes.py
│ │ │ ├── structures.py
│ │ │ └── utils.py
│ │ ├── requests-2.32.3.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── soupsieve
│ │ │ ├── __init__.py
│ │ │ ├── __meta__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __meta__.cpython-312.pyc
│ │ │ │ ├── css_match.cpython-312.pyc
│ │ │ │ ├── css_parser.cpython-312.pyc
│ │ │ │ ├── css_types.cpython-312.pyc
│ │ │ │ ├── pretty.cpython-312.pyc
│ │ │ │ └── util.cpython-312.pyc
│ │ │ ├── css_match.py
│ │ │ ├── css_parser.py
│ │ │ ├── css_types.py
│ │ │ ├── pretty.py
│ │ │ ├── py.typed
│ │ │ └── util.py
│ │ ├── soupsieve-2.6.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── licenses
│ │ │ │ └── LICENSE.md
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── urllib3
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _base_connection.cpython-312.pyc
│ │ │ │ ├── _collections.cpython-312.pyc
│ │ │ │ ├── _request_methods.cpython-312.pyc
│ │ │ │ ├── _version.cpython-312.pyc
│ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ ├── connectionpool.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── fields.cpython-312.pyc
│ │ │ │ ├── filepost.cpython-312.pyc
│ │ │ │ ├── poolmanager.cpython-312.pyc
│ │ │ │ └── response.cpython-312.pyc
│ │ │ ├── _base_connection.py
│ │ │ ├── _collections.py
│ │ │ ├── _request_methods.py
│ │ │ ├── _version.py
│ │ │ ├── connection.py
│ │ │ ├── connectionpool.py
│ │ │ ├── contrib
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── pyopenssl.cpython-312.pyc
│ │ │ │ │ └── socks.cpython-312.pyc
│ │ │ │ ├── emscripten
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ │ ├── fetch.cpython-312.pyc
│ │ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ │ └── response.cpython-312.pyc
│ │ │ │ │ ├── connection.py
│ │ │ │ │ ├── emscripten_fetch_worker.js
│ │ │ │ │ ├── fetch.py
│ │ │ │ │ ├── request.py
│ │ │ │ │ └── response.py
│ │ │ │ ├── pyopenssl.py
│ │ │ │ └── socks.py
│ │ │ ├── exceptions.py
│ │ │ ├── fields.py
│ │ │ ├── filepost.py
│ │ │ ├── http2
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ └── probe.cpython-312.pyc
│ │ │ │ ├── connection.py
│ │ │ │ └── probe.py
│ │ │ ├── poolmanager.py
│ │ │ ├── py.typed
│ │ │ ├── response.py
│ │ │ └── util
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ ├── proxy.cpython-312.pyc
│ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ ├── response.cpython-312.pyc
│ │ │ │ ├── retry.cpython-312.pyc
│ │ │ │ ├── ssl_.cpython-312.pyc
│ │ │ │ ├── ssl_match_hostname.cpython-312.pyc
│ │ │ │ ├── ssltransport.cpython-312.pyc
│ │ │ │ ├── timeout.cpython-312.pyc
│ │ │ │ ├── url.cpython-312.pyc
│ │ │ │ ├── util.cpython-312.pyc
│ │ │ │ └── wait.cpython-312.pyc
│ │ │ ├── connection.py
│ │ │ ├── proxy.py
│ │ │ ├── request.py
│ │ │ ├── response.py
│ │ │ ├── retry.py
│ │ │ ├── ssl_.py
│ │ │ ├── ssl_match_hostname.py
│ │ │ ├── ssltransport.py
│ │ │ ├── timeout.py
│ │ │ ├── url.py
│ │ │ ├── util.py
│ │ │ └── wait.py
│ │ ├── urllib3-2.2.3.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── licenses
│ │ │ │ └── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── useragent
│ │ │ ├── __init__.py
│ │ │ ├── __init__.pyc
│ │ │ ├── __pycache__
│ │ │ │ └── __init__.cpython-312.pyc
│ │ │ ├── resources
│ │ │ │ └── user_agent_data.json
│ │ │ └── test
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ └── __init__.cpython-312.pyc
│ │ │ ├── test_additional_os.json
│ │ │ ├── test_browser.json
│ │ │ ├── test_device.json
│ │ │ ├── test_firefox.json
│ │ │ ├── test_os.json
│ │ │ └── test_pgts_browser.json
│ │ ├── useragent-0.1.1.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── werkzeug
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _internal.cpython-312.pyc
│ │ │ │ ├── _reloader.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── formparser.cpython-312.pyc
│ │ │ │ ├── http.cpython-312.pyc
│ │ │ │ ├── local.cpython-312.pyc
│ │ │ │ ├── security.cpython-312.pyc
│ │ │ │ ├── serving.cpython-312.pyc
│ │ │ │ ├── test.cpython-312.pyc
│ │ │ │ ├── testapp.cpython-312.pyc
│ │ │ │ ├── urls.cpython-312.pyc
│ │ │ │ ├── user_agent.cpython-312.pyc
│ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ └── wsgi.cpython-312.pyc
│ │ │ ├── _internal.py
│ │ │ ├── _reloader.py
│ │ │ ├── datastructures
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── accept.cpython-312.pyc
│ │ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ │ ├── cache_control.cpython-312.pyc
│ │ │ │ │ ├── csp.cpython-312.pyc
│ │ │ │ │ ├── etag.cpython-312.pyc
│ │ │ │ │ ├── file_storage.cpython-312.pyc
│ │ │ │ │ ├── headers.cpython-312.pyc
│ │ │ │ │ ├── mixins.cpython-312.pyc
│ │ │ │ │ ├── range.cpython-312.pyc
│ │ │ │ │ └── structures.cpython-312.pyc
│ │ │ │ ├── accept.py
│ │ │ │ ├── accept.pyi
│ │ │ │ ├── auth.py
│ │ │ │ ├── cache_control.py
│ │ │ │ ├── cache_control.pyi
│ │ │ │ ├── csp.py
│ │ │ │ ├── csp.pyi
│ │ │ │ ├── etag.py
│ │ │ │ ├── etag.pyi
│ │ │ │ ├── file_storage.py
│ │ │ │ ├── file_storage.pyi
│ │ │ │ ├── headers.py
│ │ │ │ ├── headers.pyi
│ │ │ │ ├── mixins.py
│ │ │ │ ├── mixins.pyi
│ │ │ │ ├── range.py
│ │ │ │ ├── range.pyi
│ │ │ │ ├── structures.py
│ │ │ │ └── structures.pyi
│ │ │ ├── debug
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── console.cpython-312.pyc
│ │ │ │ │ ├── repr.cpython-312.pyc
│ │ │ │ │ └── tbtools.cpython-312.pyc
│ │ │ │ ├── console.py
│ │ │ │ ├── repr.py
│ │ │ │ ├── shared
│ │ │ │ │ ├── console.png
│ │ │ │ │ ├── debugger.js
│ │ │ │ │ ├── ICON_LICENSE.md
│ │ │ │ │ ├── less.png
│ │ │ │ │ ├── more.png
│ │ │ │ │ └── style.css
│ │ │ │ └── tbtools.py
│ │ │ ├── exceptions.py
│ │ │ ├── formparser.py
│ │ │ ├── http.py
│ │ │ ├── local.py
│ │ │ ├── middleware
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── dispatcher.cpython-312.pyc
│ │ │ │ │ ├── http_proxy.cpython-312.pyc
│ │ │ │ │ ├── lint.cpython-312.pyc
│ │ │ │ │ ├── profiler.cpython-312.pyc
│ │ │ │ │ ├── proxy_fix.cpython-312.pyc
│ │ │ │ │ └── shared_data.cpython-312.pyc
│ │ │ │ ├── dispatcher.py
│ │ │ │ ├── http_proxy.py
│ │ │ │ ├── lint.py
│ │ │ │ ├── profiler.py
│ │ │ │ ├── proxy_fix.py
│ │ │ │ └── shared_data.py
│ │ │ ├── py.typed
│ │ │ ├── routing
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── converters.cpython-312.pyc
│ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ ├── map.cpython-312.pyc
│ │ │ │ │ ├── matcher.cpython-312.pyc
│ │ │ │ │ └── rules.cpython-312.pyc
│ │ │ │ ├── converters.py
│ │ │ │ ├── exceptions.py
│ │ │ │ ├── map.py
│ │ │ │ ├── matcher.py
│ │ │ │ └── rules.py
│ │ │ ├── sansio
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── http.cpython-312.pyc
│ │ │ │ │ ├── multipart.cpython-312.pyc
│ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ ├── response.cpython-312.pyc
│ │ │ │ │ └── utils.cpython-312.pyc
│ │ │ │ ├── http.py
│ │ │ │ ├── multipart.py
│ │ │ │ ├── request.py
│ │ │ │ ├── response.py
│ │ │ │ └── utils.py
│ │ │ ├── security.py
│ │ │ ├── serving.py
│ │ │ ├── test.py
│ │ │ ├── testapp.py
│ │ │ ├── urls.py
│ │ │ ├── user_agent.py
│ │ │ ├── utils.py
│ │ │ ├── wrappers
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ └── response.cpython-312.pyc
│ │ │ │ ├── request.py
│ │ │ │ └── response.py
│ │ │ └── wsgi.py
│ │ └── werkzeug-3.0.4.dist-info
│ │ ├── INSTALLER
│ │ ├── LICENSE.txt
│ │ ├── METADATA
│ │ ├── RECORD
│ │ └── WHEEL
│ ├── pyvenv.cfg
│ ├── static
│ │ └── styles.css
│ ├── templates
│ │ └── index.html
│ └── test.py
├── cline_config.json
├── mcp_server.py
├── README.md
├── search_results.json
├── settings.json
└── test_files
├── text1.txt
└── text2.txt
```
# Files
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/xsltInternals.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: internal data structures, constants and functions
3 | * Description: Internal data structures, constants and functions used
4 | * by the XSLT engine.
5 | * They are not part of the API or ABI, i.e. they can change
6 | * without prior notice, use carefully.
7 | *
8 | * Copy: See Copyright for the status of this software.
9 | *
10 | * Author: Daniel Veillard
11 | */
12 |
13 | #ifndef __XML_XSLT_INTERNALS_H__
14 | #define __XML_XSLT_INTERNALS_H__
15 |
16 | #include <libxml/tree.h>
17 | #include <libxml/hash.h>
18 | #include <libxml/xpath.h>
19 | #include <libxml/xmlerror.h>
20 | #include <libxml/dict.h>
21 | #include <libxml/xmlstring.h>
22 | #include <libxslt/xslt.h>
23 | #include "xsltexports.h"
24 | #include "numbersInternals.h"
25 |
26 | #ifdef __cplusplus
27 | extern "C" {
28 | #endif
29 |
30 | /* #define XSLT_DEBUG_PROFILE_CACHE */
31 |
32 | /**
33 | * XSLT_IS_TEXT_NODE:
34 | *
35 | * check if the argument is a text node
36 | */
37 | #define XSLT_IS_TEXT_NODE(n) ((n != NULL) && \
38 | (((n)->type == XML_TEXT_NODE) || \
39 | ((n)->type == XML_CDATA_SECTION_NODE)))
40 |
41 |
42 | /**
43 | * XSLT_MARK_RES_TREE_FRAG:
44 | *
45 | * internal macro to set up tree fragments
46 | */
47 | #define XSLT_MARK_RES_TREE_FRAG(n) \
48 | (n)->name = (char *) xmlStrdup(BAD_CAST " fake node libxslt");
49 |
50 | /**
51 | * XSLT_IS_RES_TREE_FRAG:
52 | *
53 | * internal macro to test tree fragments
54 | */
55 | #define XSLT_IS_RES_TREE_FRAG(n) \
56 | ((n != NULL) && ((n)->type == XML_DOCUMENT_NODE) && \
57 | ((n)->name != NULL) && ((n)->name[0] == ' '))
58 |
59 | /**
60 | * XSLT_REFACTORED_KEYCOMP:
61 | *
62 | * Internal define to enable on-demand xsl:key computation.
63 | * That's the only mode now but the define is kept for compatibility
64 | */
65 | #define XSLT_REFACTORED_KEYCOMP
66 |
67 | /**
68 | * XSLT_FAST_IF:
69 | *
70 | * Internal define to enable usage of xmlXPathCompiledEvalToBoolean()
71 | * for XSLT "tests"; e.g. in <xsl:if test="/foo/bar">
72 | */
73 | #define XSLT_FAST_IF
74 |
75 | /**
76 | * XSLT_REFACTORED:
77 | *
78 | * Internal define to enable the refactored parts of Libxslt.
79 | */
80 | /* #define XSLT_REFACTORED */
81 | /* ==================================================================== */
82 |
83 | /**
84 | * XSLT_REFACTORED_VARS:
85 | *
86 | * Internal define to enable the refactored variable part of libxslt
87 | */
88 | #define XSLT_REFACTORED_VARS
89 |
90 | #ifdef XSLT_REFACTORED
91 |
92 | extern const xmlChar *xsltXSLTAttrMarker;
93 |
94 |
95 | /* TODO: REMOVE: #define XSLT_REFACTORED_EXCLRESNS */
96 |
97 | /* TODO: REMOVE: #define XSLT_REFACTORED_NSALIAS */
98 |
99 | /**
100 | * XSLT_REFACTORED_XSLT_NSCOMP
101 | *
102 | * Internal define to enable the pointer-comparison of
103 | * namespaces of XSLT elements.
104 | */
105 | /* #define XSLT_REFACTORED_XSLT_NSCOMP */
106 |
107 | #ifdef XSLT_REFACTORED_XSLT_NSCOMP
108 |
109 | extern const xmlChar *xsltConstNamespaceNameXSLT;
110 |
111 | /**
112 | * IS_XSLT_ELEM_FAST:
113 | *
114 | * quick test to detect XSLT elements
115 | */
116 | #define IS_XSLT_ELEM_FAST(n) \
117 | (((n) != NULL) && ((n)->ns != NULL) && \
118 | ((n)->ns->href == xsltConstNamespaceNameXSLT))
119 |
120 | /**
121 | * IS_XSLT_ATTR_FAST:
122 | *
123 | * quick test to detect XSLT attributes
124 | */
125 | #define IS_XSLT_ATTR_FAST(a) \
126 | (((a) != NULL) && ((a)->ns != NULL) && \
127 | ((a)->ns->href == xsltConstNamespaceNameXSLT))
128 |
129 | /**
130 | * XSLT_HAS_INTERNAL_NSMAP:
131 | *
132 | * check for namespace mapping
133 | */
134 | #define XSLT_HAS_INTERNAL_NSMAP(s) \
135 | (((s) != NULL) && ((s)->principal) && \
136 | ((s)->principal->principalData) && \
137 | ((s)->principal->principalData->nsMap))
138 |
139 | /**
140 | * XSLT_GET_INTERNAL_NSMAP:
141 | *
142 | * get pointer to namespace map
143 | */
144 | #define XSLT_GET_INTERNAL_NSMAP(s) ((s)->principal->principalData->nsMap)
145 |
146 | #else /* XSLT_REFACTORED_XSLT_NSCOMP */
147 |
148 | /**
149 | * IS_XSLT_ELEM_FAST:
150 | *
151 | * quick check whether this is an xslt element
152 | */
153 | #define IS_XSLT_ELEM_FAST(n) \
154 | (((n) != NULL) && ((n)->ns != NULL) && \
155 | (xmlStrEqual((n)->ns->href, XSLT_NAMESPACE)))
156 |
157 | /**
158 | * IS_XSLT_ATTR_FAST:
159 | *
160 | * quick check for xslt namespace attribute
161 | */
162 | #define IS_XSLT_ATTR_FAST(a) \
163 | (((a) != NULL) && ((a)->ns != NULL) && \
164 | (xmlStrEqual((a)->ns->href, XSLT_NAMESPACE)))
165 |
166 |
167 | #endif /* XSLT_REFACTORED_XSLT_NSCOMP */
168 |
169 |
170 | /**
171 | * XSLT_REFACTORED_MANDATORY_VERSION:
172 | *
173 | * TODO: Currently disabled to surpress regression test failures, since
174 | * the old behaviour was that a missing version attribute
175 | * produced a only a warning and not an error, which was incerrect.
176 | * So the regression tests need to be fixed if this is enabled.
177 | */
178 | /* #define XSLT_REFACTORED_MANDATORY_VERSION */
179 |
180 | /**
181 | * xsltPointerList:
182 | *
183 | * Pointer-list for various purposes.
184 | */
185 | typedef struct _xsltPointerList xsltPointerList;
186 | typedef xsltPointerList *xsltPointerListPtr;
187 | struct _xsltPointerList {
188 | void **items;
189 | int number;
190 | int size;
191 | };
192 |
193 | #endif
194 |
195 | /**
196 | * XSLT_REFACTORED_PARSING:
197 | *
198 | * Internal define to enable the refactored parts of Libxslt
199 | * related to parsing.
200 | */
201 | /* #define XSLT_REFACTORED_PARSING */
202 |
203 | /**
204 | * XSLT_MAX_SORT:
205 | *
206 | * Max number of specified xsl:sort on an element.
207 | */
208 | #define XSLT_MAX_SORT 15
209 |
210 | /**
211 | * XSLT_PAT_NO_PRIORITY:
212 | *
213 | * Specific value for pattern without priority expressed.
214 | */
215 | #define XSLT_PAT_NO_PRIORITY -12345789
216 |
217 | /**
218 | * xsltRuntimeExtra:
219 | *
220 | * Extra information added to the transformation context.
221 | */
222 | typedef struct _xsltRuntimeExtra xsltRuntimeExtra;
223 | typedef xsltRuntimeExtra *xsltRuntimeExtraPtr;
224 | struct _xsltRuntimeExtra {
225 | void *info; /* pointer to the extra data */
226 | xmlFreeFunc deallocate; /* pointer to the deallocation routine */
227 | union { /* dual-purpose field */
228 | void *ptr; /* data not needing deallocation */
229 | int ival; /* integer value storage */
230 | } val;
231 | };
232 |
233 | /**
234 | * XSLT_RUNTIME_EXTRA_LST:
235 | * @ctxt: the transformation context
236 | * @nr: the index
237 | *
238 | * Macro used to access extra information stored in the context
239 | */
240 | #define XSLT_RUNTIME_EXTRA_LST(ctxt, nr) (ctxt)->extras[(nr)].info
241 | /**
242 | * XSLT_RUNTIME_EXTRA_FREE:
243 | * @ctxt: the transformation context
244 | * @nr: the index
245 | *
246 | * Macro used to free extra information stored in the context
247 | */
248 | #define XSLT_RUNTIME_EXTRA_FREE(ctxt, nr) (ctxt)->extras[(nr)].deallocate
249 | /**
250 | * XSLT_RUNTIME_EXTRA:
251 | * @ctxt: the transformation context
252 | * @nr: the index
253 | *
254 | * Macro used to define extra information stored in the context
255 | */
256 | #define XSLT_RUNTIME_EXTRA(ctxt, nr, typ) (ctxt)->extras[(nr)].val.typ
257 |
258 | /**
259 | * xsltTemplate:
260 | *
261 | * The in-memory structure corresponding to an XSLT Template.
262 | */
263 | typedef struct _xsltTemplate xsltTemplate;
264 | typedef xsltTemplate *xsltTemplatePtr;
265 | struct _xsltTemplate {
266 | struct _xsltTemplate *next;/* chained list sorted by priority */
267 | struct _xsltStylesheet *style;/* the containing stylesheet */
268 | xmlChar *match; /* the matching string */
269 | float priority; /* as given from the stylesheet, not computed */
270 | const xmlChar *name; /* the local part of the name QName */
271 | const xmlChar *nameURI; /* the URI part of the name QName */
272 | const xmlChar *mode;/* the local part of the mode QName */
273 | const xmlChar *modeURI;/* the URI part of the mode QName */
274 | xmlNodePtr content; /* the template replacement value */
275 | xmlNodePtr elem; /* the source element */
276 |
277 | /*
278 | * TODO: @inheritedNsNr and @inheritedNs won't be used in the
279 | * refactored code.
280 | */
281 | int inheritedNsNr; /* number of inherited namespaces */
282 | xmlNsPtr *inheritedNs;/* inherited non-excluded namespaces */
283 |
284 | /* Profiling information */
285 | int nbCalls; /* the number of time the template was called */
286 | unsigned long time; /* the time spent in this template */
287 | void *params; /* xsl:param instructions */
288 |
289 | int templNr; /* Nb of templates in the stack */
290 | int templMax; /* Size of the templtes stack */
291 | xsltTemplatePtr *templCalledTab; /* templates called */
292 | int *templCountTab; /* .. and how often */
293 |
294 | /* Conflict resolution */
295 | int position;
296 | };
297 |
298 | /**
299 | * xsltDecimalFormat:
300 | *
301 | * Data structure of decimal-format.
302 | */
303 | typedef struct _xsltDecimalFormat xsltDecimalFormat;
304 | typedef xsltDecimalFormat *xsltDecimalFormatPtr;
305 | struct _xsltDecimalFormat {
306 | struct _xsltDecimalFormat *next; /* chained list */
307 | xmlChar *name;
308 | /* Used for interpretation of pattern */
309 | xmlChar *digit;
310 | xmlChar *patternSeparator;
311 | /* May appear in result */
312 | xmlChar *minusSign;
313 | xmlChar *infinity;
314 | xmlChar *noNumber; /* Not-a-number */
315 | /* Used for interpretation of pattern and may appear in result */
316 | xmlChar *decimalPoint;
317 | xmlChar *grouping;
318 | xmlChar *percent;
319 | xmlChar *permille;
320 | xmlChar *zeroDigit;
321 | const xmlChar *nsUri;
322 | };
323 |
324 | /**
325 | * xsltDocument:
326 | *
327 | * Data structure associated to a parsed document.
328 | */
329 | typedef struct _xsltDocument xsltDocument;
330 | typedef xsltDocument *xsltDocumentPtr;
331 | struct _xsltDocument {
332 | struct _xsltDocument *next; /* documents are kept in a chained list */
333 | int main; /* is this the main document */
334 | xmlDocPtr doc; /* the parsed document */
335 | void *keys; /* key tables storage */
336 | struct _xsltDocument *includes; /* subsidiary includes */
337 | int preproc; /* pre-processing already done */
338 | int nbKeysComputed;
339 | };
340 |
341 | /**
342 | * xsltKeyDef:
343 | *
344 | * Representation of an xsl:key.
345 | */
346 | typedef struct _xsltKeyDef xsltKeyDef;
347 | typedef xsltKeyDef *xsltKeyDefPtr;
348 | struct _xsltKeyDef {
349 | struct _xsltKeyDef *next;
350 | xmlNodePtr inst;
351 | xmlChar *name;
352 | xmlChar *nameURI;
353 | xmlChar *match;
354 | xmlChar *use;
355 | xmlXPathCompExprPtr comp;
356 | xmlXPathCompExprPtr usecomp;
357 | xmlNsPtr *nsList; /* the namespaces in scope */
358 | int nsNr; /* the number of namespaces in scope */
359 | };
360 |
361 | /**
362 | * xsltKeyTable:
363 | *
364 | * Holds the computed keys for key definitions of the same QName.
365 | * Is owned by an xsltDocument.
366 | */
367 | typedef struct _xsltKeyTable xsltKeyTable;
368 | typedef xsltKeyTable *xsltKeyTablePtr;
369 | struct _xsltKeyTable {
370 | struct _xsltKeyTable *next;
371 | xmlChar *name;
372 | xmlChar *nameURI;
373 | xmlHashTablePtr keys;
374 | };
375 |
376 | /*
377 | * The in-memory structure corresponding to an XSLT Stylesheet.
378 | * NOTE: most of the content is simply linked from the doc tree
379 | * structure, no specific allocation is made.
380 | */
381 | typedef struct _xsltStylesheet xsltStylesheet;
382 | typedef xsltStylesheet *xsltStylesheetPtr;
383 |
384 | typedef struct _xsltTransformContext xsltTransformContext;
385 | typedef xsltTransformContext *xsltTransformContextPtr;
386 |
387 | /**
388 | * xsltElemPreComp:
389 | *
390 | * The in-memory structure corresponding to element precomputed data,
391 | * designed to be extended by extension implementors.
392 | */
393 | typedef struct _xsltElemPreComp xsltElemPreComp;
394 | typedef xsltElemPreComp *xsltElemPreCompPtr;
395 |
396 | /**
397 | * xsltTransformFunction:
398 | * @ctxt: the XSLT transformation context
399 | * @node: the input node
400 | * @inst: the stylesheet node
401 | * @comp: the compiled information from the stylesheet
402 | *
403 | * Signature of the function associated to elements part of the
404 | * stylesheet language like xsl:if or xsl:apply-templates.
405 | */
406 | typedef void (*xsltTransformFunction) (xsltTransformContextPtr ctxt,
407 | xmlNodePtr node,
408 | xmlNodePtr inst,
409 | xsltElemPreCompPtr comp);
410 |
411 | /**
412 | * xsltSortFunc:
413 | * @ctxt: a transformation context
414 | * @sorts: the node-set to sort
415 | * @nbsorts: the number of sorts
416 | *
417 | * Signature of the function to use during sorting
418 | */
419 | typedef void (*xsltSortFunc) (xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
420 | int nbsorts);
421 |
422 | typedef enum {
423 | XSLT_FUNC_COPY=1,
424 | XSLT_FUNC_SORT,
425 | XSLT_FUNC_TEXT,
426 | XSLT_FUNC_ELEMENT,
427 | XSLT_FUNC_ATTRIBUTE,
428 | XSLT_FUNC_COMMENT,
429 | XSLT_FUNC_PI,
430 | XSLT_FUNC_COPYOF,
431 | XSLT_FUNC_VALUEOF,
432 | XSLT_FUNC_NUMBER,
433 | XSLT_FUNC_APPLYIMPORTS,
434 | XSLT_FUNC_CALLTEMPLATE,
435 | XSLT_FUNC_APPLYTEMPLATES,
436 | XSLT_FUNC_CHOOSE,
437 | XSLT_FUNC_IF,
438 | XSLT_FUNC_FOREACH,
439 | XSLT_FUNC_DOCUMENT,
440 | XSLT_FUNC_WITHPARAM,
441 | XSLT_FUNC_PARAM,
442 | XSLT_FUNC_VARIABLE,
443 | XSLT_FUNC_WHEN,
444 | XSLT_FUNC_EXTENSION
445 | #ifdef XSLT_REFACTORED
446 | ,
447 | XSLT_FUNC_OTHERWISE,
448 | XSLT_FUNC_FALLBACK,
449 | XSLT_FUNC_MESSAGE,
450 | XSLT_FUNC_INCLUDE,
451 | XSLT_FUNC_ATTRSET,
452 | XSLT_FUNC_LITERAL_RESULT_ELEMENT,
453 | XSLT_FUNC_UNKOWN_FORWARDS_COMPAT
454 | #endif
455 | } xsltStyleType;
456 |
457 | /**
458 | * xsltElemPreCompDeallocator:
459 | * @comp: the #xsltElemPreComp to free up
460 | *
461 | * Deallocates an #xsltElemPreComp structure.
462 | */
463 | typedef void (*xsltElemPreCompDeallocator) (xsltElemPreCompPtr comp);
464 |
465 | /**
466 | * xsltElemPreComp:
467 | *
468 | * The basic structure for compiled items of the AST of the XSLT processor.
469 | * This structure is also intended to be extended by extension implementors.
470 | * TODO: This is somehow not nice, since it has a "free" field, which
471 | * derived stylesheet-structs do not have.
472 | */
473 | struct _xsltElemPreComp {
474 | xsltElemPreCompPtr next; /* next item in the global chained
475 | list held by xsltStylesheet. */
476 | xsltStyleType type; /* type of the element */
477 | xsltTransformFunction func; /* handling function */
478 | xmlNodePtr inst; /* the node in the stylesheet's tree
479 | corresponding to this item */
480 |
481 | /* end of common part */
482 | xsltElemPreCompDeallocator free; /* the deallocator */
483 | };
484 |
485 | /**
486 | * xsltStylePreComp:
487 | *
488 | * The abstract basic structure for items of the XSLT processor.
489 | * This includes:
490 | * 1) compiled forms of XSLT instructions (xsl:if, xsl:attribute, etc.)
491 | * 2) compiled forms of literal result elements
492 | * 3) compiled forms of extension elements
493 | */
494 | typedef struct _xsltStylePreComp xsltStylePreComp;
495 | typedef xsltStylePreComp *xsltStylePreCompPtr;
496 |
497 | #ifdef XSLT_REFACTORED
498 |
499 | /*
500 | * Some pointer-list utility functions.
501 | */
502 | XSLTPUBFUN xsltPointerListPtr XSLTCALL
503 | xsltPointerListCreate (int initialSize);
504 | XSLTPUBFUN void XSLTCALL
505 | xsltPointerListFree (xsltPointerListPtr list);
506 | XSLTPUBFUN void XSLTCALL
507 | xsltPointerListClear (xsltPointerListPtr list);
508 | XSLTPUBFUN int XSLTCALL
509 | xsltPointerListAddSize (xsltPointerListPtr list,
510 | void *item,
511 | int initialSize);
512 |
513 | /************************************************************************
514 | * *
515 | * Refactored structures *
516 | * *
517 | ************************************************************************/
518 |
519 | typedef struct _xsltNsListContainer xsltNsListContainer;
520 | typedef xsltNsListContainer *xsltNsListContainerPtr;
521 | struct _xsltNsListContainer {
522 | xmlNsPtr *list;
523 | int totalNumber;
524 | int xpathNumber;
525 | };
526 |
527 | /**
528 | * XSLT_ITEM_COMPATIBILITY_FIELDS:
529 | *
530 | * Fields for API compatibility to the structure
531 | * _xsltElemPreComp which is used for extension functions.
532 | * Note that @next is used for storage; it does not reflect a next
533 | * sibling in the tree.
534 | * TODO: Evaluate if we really need such a compatibility.
535 | */
536 | #define XSLT_ITEM_COMPATIBILITY_FIELDS \
537 | xsltElemPreCompPtr next;\
538 | xsltStyleType type;\
539 | xsltTransformFunction func;\
540 | xmlNodePtr inst;
541 |
542 | /**
543 | * XSLT_ITEM_NAVIGATION_FIELDS:
544 | *
545 | * Currently empty.
546 | * TODO: It is intended to hold navigational fields in the future.
547 | */
548 | #define XSLT_ITEM_NAVIGATION_FIELDS
549 | /*
550 | xsltStylePreCompPtr parent;\
551 | xsltStylePreCompPtr children;\
552 | xsltStylePreCompPtr nextItem;
553 | */
554 |
555 | /**
556 | * XSLT_ITEM_NSINSCOPE_FIELDS:
557 | *
558 | * The in-scope namespaces.
559 | */
560 | #define XSLT_ITEM_NSINSCOPE_FIELDS xsltNsListContainerPtr inScopeNs;
561 |
562 | /**
563 | * XSLT_ITEM_COMMON_FIELDS:
564 | *
565 | * Common fields used for all items.
566 | */
567 | #define XSLT_ITEM_COMMON_FIELDS \
568 | XSLT_ITEM_COMPATIBILITY_FIELDS \
569 | XSLT_ITEM_NAVIGATION_FIELDS \
570 | XSLT_ITEM_NSINSCOPE_FIELDS
571 |
572 | /**
573 | * _xsltStylePreComp:
574 | *
575 | * The abstract basic structure for items of the XSLT processor.
576 | * This includes:
577 | * 1) compiled forms of XSLT instructions (e.g. xsl:if, xsl:attribute, etc.)
578 | * 2) compiled forms of literal result elements
579 | * 3) various properties for XSLT instructions (e.g. xsl:when,
580 | * xsl:with-param)
581 | *
582 | * REVISIT TODO: Keep this structure equal to the fields
583 | * defined by XSLT_ITEM_COMMON_FIELDS
584 | */
585 | struct _xsltStylePreComp {
586 | xsltElemPreCompPtr next; /* next item in the global chained
587 | list held by xsltStylesheet */
588 | xsltStyleType type; /* type of the item */
589 | xsltTransformFunction func; /* handling function */
590 | xmlNodePtr inst; /* the node in the stylesheet's tree
591 | corresponding to this item. */
592 | /* Currently no navigational fields. */
593 | xsltNsListContainerPtr inScopeNs;
594 | };
595 |
596 | /**
597 | * xsltStyleBasicEmptyItem:
598 | *
599 | * Abstract structure only used as a short-cut for
600 | * XSLT items with no extra fields.
601 | * NOTE that it is intended that this structure looks the same as
602 | * _xsltStylePreComp.
603 | */
604 | typedef struct _xsltStyleBasicEmptyItem xsltStyleBasicEmptyItem;
605 | typedef xsltStyleBasicEmptyItem *xsltStyleBasicEmptyItemPtr;
606 |
607 | struct _xsltStyleBasicEmptyItem {
608 | XSLT_ITEM_COMMON_FIELDS
609 | };
610 |
611 | /**
612 | * xsltStyleBasicExpressionItem:
613 | *
614 | * Abstract structure only used as a short-cut for
615 | * XSLT items with just an expression.
616 | */
617 | typedef struct _xsltStyleBasicExpressionItem xsltStyleBasicExpressionItem;
618 | typedef xsltStyleBasicExpressionItem *xsltStyleBasicExpressionItemPtr;
619 |
620 | struct _xsltStyleBasicExpressionItem {
621 | XSLT_ITEM_COMMON_FIELDS
622 |
623 | const xmlChar *select; /* TODO: Change this to "expression". */
624 | xmlXPathCompExprPtr comp; /* TODO: Change this to compExpr. */
625 | };
626 |
627 | /************************************************************************
628 | * *
629 | * XSLT-instructions/declarations *
630 | * *
631 | ************************************************************************/
632 |
633 | /**
634 | * xsltStyleItemElement:
635 | *
636 | * <!-- Category: instruction -->
637 | * <xsl:element
638 | * name = { qname }
639 | * namespace = { uri-reference }
640 | * use-attribute-sets = qnames>
641 | * <!-- Content: template -->
642 | * </xsl:element>
643 | */
644 | typedef struct _xsltStyleItemElement xsltStyleItemElement;
645 | typedef xsltStyleItemElement *xsltStyleItemElementPtr;
646 |
647 | struct _xsltStyleItemElement {
648 | XSLT_ITEM_COMMON_FIELDS
649 |
650 | const xmlChar *use;
651 | int has_use;
652 | const xmlChar *name;
653 | int has_name;
654 | const xmlChar *ns;
655 | const xmlChar *nsPrefix;
656 | int has_ns;
657 | };
658 |
659 | /**
660 | * xsltStyleItemAttribute:
661 | *
662 | * <!-- Category: instruction -->
663 | * <xsl:attribute
664 | * name = { qname }
665 | * namespace = { uri-reference }>
666 | * <!-- Content: template -->
667 | * </xsl:attribute>
668 | */
669 | typedef struct _xsltStyleItemAttribute xsltStyleItemAttribute;
670 | typedef xsltStyleItemAttribute *xsltStyleItemAttributePtr;
671 |
672 | struct _xsltStyleItemAttribute {
673 | XSLT_ITEM_COMMON_FIELDS
674 | const xmlChar *name;
675 | int has_name;
676 | const xmlChar *ns;
677 | const xmlChar *nsPrefix;
678 | int has_ns;
679 | };
680 |
681 | /**
682 | * xsltStyleItemText:
683 | *
684 | * <!-- Category: instruction -->
685 | * <xsl:text
686 | * disable-output-escaping = "yes" | "no">
687 | * <!-- Content: #PCDATA -->
688 | * </xsl:text>
689 | */
690 | typedef struct _xsltStyleItemText xsltStyleItemText;
691 | typedef xsltStyleItemText *xsltStyleItemTextPtr;
692 |
693 | struct _xsltStyleItemText {
694 | XSLT_ITEM_COMMON_FIELDS
695 | int noescape; /* text */
696 | };
697 |
698 | /**
699 | * xsltStyleItemComment:
700 | *
701 | * <!-- Category: instruction -->
702 | * <xsl:comment>
703 | * <!-- Content: template -->
704 | * </xsl:comment>
705 | */
706 | typedef xsltStyleBasicEmptyItem xsltStyleItemComment;
707 | typedef xsltStyleItemComment *xsltStyleItemCommentPtr;
708 |
709 | /**
710 | * xsltStyleItemPI:
711 | *
712 | * <!-- Category: instruction -->
713 | * <xsl:processing-instruction
714 | * name = { ncname }>
715 | * <!-- Content: template -->
716 | * </xsl:processing-instruction>
717 | */
718 | typedef struct _xsltStyleItemPI xsltStyleItemPI;
719 | typedef xsltStyleItemPI *xsltStyleItemPIPtr;
720 |
721 | struct _xsltStyleItemPI {
722 | XSLT_ITEM_COMMON_FIELDS
723 | const xmlChar *name;
724 | int has_name;
725 | };
726 |
727 | /**
728 | * xsltStyleItemApplyImports:
729 | *
730 | * <!-- Category: instruction -->
731 | * <xsl:apply-imports />
732 | */
733 | typedef xsltStyleBasicEmptyItem xsltStyleItemApplyImports;
734 | typedef xsltStyleItemApplyImports *xsltStyleItemApplyImportsPtr;
735 |
736 | /**
737 | * xsltStyleItemApplyTemplates:
738 | *
739 | * <!-- Category: instruction -->
740 | * <xsl:apply-templates
741 | * select = node-set-expression
742 | * mode = qname>
743 | * <!-- Content: (xsl:sort | xsl:with-param)* -->
744 | * </xsl:apply-templates>
745 | */
746 | typedef struct _xsltStyleItemApplyTemplates xsltStyleItemApplyTemplates;
747 | typedef xsltStyleItemApplyTemplates *xsltStyleItemApplyTemplatesPtr;
748 |
749 | struct _xsltStyleItemApplyTemplates {
750 | XSLT_ITEM_COMMON_FIELDS
751 |
752 | const xmlChar *mode; /* apply-templates */
753 | const xmlChar *modeURI; /* apply-templates */
754 | const xmlChar *select; /* sort, copy-of, value-of, apply-templates */
755 | xmlXPathCompExprPtr comp; /* a precompiled XPath expression */
756 | /* TODO: with-params */
757 | };
758 |
759 | /**
760 | * xsltStyleItemCallTemplate:
761 | *
762 | * <!-- Category: instruction -->
763 | * <xsl:call-template
764 | * name = qname>
765 | * <!-- Content: xsl:with-param* -->
766 | * </xsl:call-template>
767 | */
768 | typedef struct _xsltStyleItemCallTemplate xsltStyleItemCallTemplate;
769 | typedef xsltStyleItemCallTemplate *xsltStyleItemCallTemplatePtr;
770 |
771 | struct _xsltStyleItemCallTemplate {
772 | XSLT_ITEM_COMMON_FIELDS
773 |
774 | xsltTemplatePtr templ; /* call-template */
775 | const xmlChar *name; /* element, attribute, pi */
776 | int has_name; /* element, attribute, pi */
777 | const xmlChar *ns; /* element */
778 | int has_ns; /* element */
779 | /* TODO: with-params */
780 | };
781 |
782 | /**
783 | * xsltStyleItemCopy:
784 | *
785 | * <!-- Category: instruction -->
786 | * <xsl:copy
787 | * use-attribute-sets = qnames>
788 | * <!-- Content: template -->
789 | * </xsl:copy>
790 | */
791 | typedef struct _xsltStyleItemCopy xsltStyleItemCopy;
792 | typedef xsltStyleItemCopy *xsltStyleItemCopyPtr;
793 |
794 | struct _xsltStyleItemCopy {
795 | XSLT_ITEM_COMMON_FIELDS
796 | const xmlChar *use; /* copy, element */
797 | int has_use; /* copy, element */
798 | };
799 |
800 | /**
801 | * xsltStyleItemIf:
802 | *
803 | * <!-- Category: instruction -->
804 | * <xsl:if
805 | * test = boolean-expression>
806 | * <!-- Content: template -->
807 | * </xsl:if>
808 | */
809 | typedef struct _xsltStyleItemIf xsltStyleItemIf;
810 | typedef xsltStyleItemIf *xsltStyleItemIfPtr;
811 |
812 | struct _xsltStyleItemIf {
813 | XSLT_ITEM_COMMON_FIELDS
814 |
815 | const xmlChar *test; /* if */
816 | xmlXPathCompExprPtr comp; /* a precompiled XPath expression */
817 | };
818 |
819 |
820 | /**
821 | * xsltStyleItemCopyOf:
822 | *
823 | * <!-- Category: instruction -->
824 | * <xsl:copy-of
825 | * select = expression />
826 | */
827 | typedef xsltStyleBasicExpressionItem xsltStyleItemCopyOf;
828 | typedef xsltStyleItemCopyOf *xsltStyleItemCopyOfPtr;
829 |
830 | /**
831 | * xsltStyleItemValueOf:
832 | *
833 | * <!-- Category: instruction -->
834 | * <xsl:value-of
835 | * select = string-expression
836 | * disable-output-escaping = "yes" | "no" />
837 | */
838 | typedef struct _xsltStyleItemValueOf xsltStyleItemValueOf;
839 | typedef xsltStyleItemValueOf *xsltStyleItemValueOfPtr;
840 |
841 | struct _xsltStyleItemValueOf {
842 | XSLT_ITEM_COMMON_FIELDS
843 |
844 | const xmlChar *select;
845 | xmlXPathCompExprPtr comp; /* a precompiled XPath expression */
846 | int noescape;
847 | };
848 |
849 | /**
850 | * xsltStyleItemNumber:
851 | *
852 | * <!-- Category: instruction -->
853 | * <xsl:number
854 | * level = "single" | "multiple" | "any"
855 | * count = pattern
856 | * from = pattern
857 | * value = number-expression
858 | * format = { string }
859 | * lang = { nmtoken }
860 | * letter-value = { "alphabetic" | "traditional" }
861 | * grouping-separator = { char }
862 | * grouping-size = { number } />
863 | */
864 | typedef struct _xsltStyleItemNumber xsltStyleItemNumber;
865 | typedef xsltStyleItemNumber *xsltStyleItemNumberPtr;
866 |
867 | struct _xsltStyleItemNumber {
868 | XSLT_ITEM_COMMON_FIELDS
869 | xsltNumberData numdata; /* number */
870 | };
871 |
872 | /**
873 | * xsltStyleItemChoose:
874 | *
875 | * <!-- Category: instruction -->
876 | * <xsl:choose>
877 | * <!-- Content: (xsl:when+, xsl:otherwise?) -->
878 | * </xsl:choose>
879 | */
880 | typedef xsltStyleBasicEmptyItem xsltStyleItemChoose;
881 | typedef xsltStyleItemChoose *xsltStyleItemChoosePtr;
882 |
883 | /**
884 | * xsltStyleItemFallback:
885 | *
886 | * <!-- Category: instruction -->
887 | * <xsl:fallback>
888 | * <!-- Content: template -->
889 | * </xsl:fallback>
890 | */
891 | typedef xsltStyleBasicEmptyItem xsltStyleItemFallback;
892 | typedef xsltStyleItemFallback *xsltStyleItemFallbackPtr;
893 |
894 | /**
895 | * xsltStyleItemForEach:
896 | *
897 | * <!-- Category: instruction -->
898 | * <xsl:for-each
899 | * select = node-set-expression>
900 | * <!-- Content: (xsl:sort*, template) -->
901 | * </xsl:for-each>
902 | */
903 | typedef xsltStyleBasicExpressionItem xsltStyleItemForEach;
904 | typedef xsltStyleItemForEach *xsltStyleItemForEachPtr;
905 |
906 | /**
907 | * xsltStyleItemMessage:
908 | *
909 | * <!-- Category: instruction -->
910 | * <xsl:message
911 | * terminate = "yes" | "no">
912 | * <!-- Content: template -->
913 | * </xsl:message>
914 | */
915 | typedef struct _xsltStyleItemMessage xsltStyleItemMessage;
916 | typedef xsltStyleItemMessage *xsltStyleItemMessagePtr;
917 |
918 | struct _xsltStyleItemMessage {
919 | XSLT_ITEM_COMMON_FIELDS
920 | int terminate;
921 | };
922 |
923 | /**
924 | * xsltStyleItemDocument:
925 | *
926 | * NOTE: This is not an instruction of XSLT 1.0.
927 | */
928 | typedef struct _xsltStyleItemDocument xsltStyleItemDocument;
929 | typedef xsltStyleItemDocument *xsltStyleItemDocumentPtr;
930 |
931 | struct _xsltStyleItemDocument {
932 | XSLT_ITEM_COMMON_FIELDS
933 | int ver11; /* assigned: in xsltDocumentComp;
934 | read: nowhere;
935 | TODO: Check if we need. */
936 | const xmlChar *filename; /* document URL */
937 | int has_filename;
938 | };
939 |
940 | /************************************************************************
941 | * *
942 | * Non-instructions (actually properties of instructions/declarations) *
943 | * *
944 | ************************************************************************/
945 |
946 | /**
947 | * xsltStyleBasicItemVariable:
948 | *
949 | * Basic struct for xsl:variable, xsl:param and xsl:with-param.
950 | * It's currently important to have equal fields, since
951 | * xsltParseStylesheetCallerParam() is used with xsl:with-param from
952 | * the xslt side and with xsl:param from the exslt side (in
953 | * exsltFuncFunctionFunction()).
954 | *
955 | * FUTURE NOTE: In XSLT 2.0 xsl:param, xsl:variable and xsl:with-param
956 | * have additional different fields.
957 | */
958 | typedef struct _xsltStyleBasicItemVariable xsltStyleBasicItemVariable;
959 | typedef xsltStyleBasicItemVariable *xsltStyleBasicItemVariablePtr;
960 |
961 | struct _xsltStyleBasicItemVariable {
962 | XSLT_ITEM_COMMON_FIELDS
963 |
964 | const xmlChar *select;
965 | xmlXPathCompExprPtr comp;
966 |
967 | const xmlChar *name;
968 | int has_name;
969 | const xmlChar *ns;
970 | int has_ns;
971 | };
972 |
973 | /**
974 | * xsltStyleItemVariable:
975 | *
976 | * <!-- Category: top-level-element -->
977 | * <xsl:param
978 | * name = qname
979 | * select = expression>
980 | * <!-- Content: template -->
981 | * </xsl:param>
982 | */
983 | typedef xsltStyleBasicItemVariable xsltStyleItemVariable;
984 | typedef xsltStyleItemVariable *xsltStyleItemVariablePtr;
985 |
986 | /**
987 | * xsltStyleItemParam:
988 | *
989 | * <!-- Category: top-level-element -->
990 | * <xsl:param
991 | * name = qname
992 | * select = expression>
993 | * <!-- Content: template -->
994 | * </xsl:param>
995 | */
996 | typedef struct _xsltStyleItemParam xsltStyleItemParam;
997 | typedef xsltStyleItemParam *xsltStyleItemParamPtr;
998 |
999 | struct _xsltStyleItemParam {
1000 | XSLT_ITEM_COMMON_FIELDS
1001 |
1002 | const xmlChar *select;
1003 | xmlXPathCompExprPtr comp;
1004 |
1005 | const xmlChar *name;
1006 | int has_name;
1007 | const xmlChar *ns;
1008 | int has_ns;
1009 | };
1010 |
1011 | /**
1012 | * xsltStyleItemWithParam:
1013 | *
1014 | * <xsl:with-param
1015 | * name = qname
1016 | * select = expression>
1017 | * <!-- Content: template -->
1018 | * </xsl:with-param>
1019 | */
1020 | typedef xsltStyleBasicItemVariable xsltStyleItemWithParam;
1021 | typedef xsltStyleItemWithParam *xsltStyleItemWithParamPtr;
1022 |
1023 | /**
1024 | * xsltStyleItemSort:
1025 | *
1026 | * Reflects the XSLT xsl:sort item.
1027 | * Allowed parents: xsl:apply-templates, xsl:for-each
1028 | * <xsl:sort
1029 | * select = string-expression
1030 | * lang = { nmtoken }
1031 | * data-type = { "text" | "number" | qname-but-not-ncname }
1032 | * order = { "ascending" | "descending" }
1033 | * case-order = { "upper-first" | "lower-first" } />
1034 | */
1035 | typedef struct _xsltStyleItemSort xsltStyleItemSort;
1036 | typedef xsltStyleItemSort *xsltStyleItemSortPtr;
1037 |
1038 | struct _xsltStyleItemSort {
1039 | XSLT_ITEM_COMMON_FIELDS
1040 |
1041 | const xmlChar *stype; /* sort */
1042 | int has_stype; /* sort */
1043 | int number; /* sort */
1044 | const xmlChar *order; /* sort */
1045 | int has_order; /* sort */
1046 | int descending; /* sort */
1047 | const xmlChar *lang; /* sort */
1048 | int has_lang; /* sort */
1049 | const xmlChar *case_order; /* sort */
1050 | int lower_first; /* sort */
1051 |
1052 | const xmlChar *use;
1053 | int has_use;
1054 |
1055 | const xmlChar *select; /* sort, copy-of, value-of, apply-templates */
1056 |
1057 | xmlXPathCompExprPtr comp; /* a precompiled XPath expression */
1058 | };
1059 |
1060 |
1061 | /**
1062 | * xsltStyleItemWhen:
1063 | *
1064 | * <xsl:when
1065 | * test = boolean-expression>
1066 | * <!-- Content: template -->
1067 | * </xsl:when>
1068 | * Allowed parent: xsl:choose
1069 | */
1070 | typedef struct _xsltStyleItemWhen xsltStyleItemWhen;
1071 | typedef xsltStyleItemWhen *xsltStyleItemWhenPtr;
1072 |
1073 | struct _xsltStyleItemWhen {
1074 | XSLT_ITEM_COMMON_FIELDS
1075 |
1076 | const xmlChar *test;
1077 | xmlXPathCompExprPtr comp;
1078 | };
1079 |
1080 | /**
1081 | * xsltStyleItemOtherwise:
1082 | *
1083 | * Allowed parent: xsl:choose
1084 | * <xsl:otherwise>
1085 | * <!-- Content: template -->
1086 | * </xsl:otherwise>
1087 | */
1088 | typedef struct _xsltStyleItemOtherwise xsltStyleItemOtherwise;
1089 | typedef xsltStyleItemOtherwise *xsltStyleItemOtherwisePtr;
1090 |
1091 | struct _xsltStyleItemOtherwise {
1092 | XSLT_ITEM_COMMON_FIELDS
1093 | };
1094 |
1095 | typedef struct _xsltStyleItemInclude xsltStyleItemInclude;
1096 | typedef xsltStyleItemInclude *xsltStyleItemIncludePtr;
1097 |
1098 | struct _xsltStyleItemInclude {
1099 | XSLT_ITEM_COMMON_FIELDS
1100 | xsltDocumentPtr include;
1101 | };
1102 |
1103 | /************************************************************************
1104 | * *
1105 | * XSLT elements in forwards-compatible mode *
1106 | * *
1107 | ************************************************************************/
1108 |
1109 | typedef struct _xsltStyleItemUknown xsltStyleItemUknown;
1110 | typedef xsltStyleItemUknown *xsltStyleItemUknownPtr;
1111 | struct _xsltStyleItemUknown {
1112 | XSLT_ITEM_COMMON_FIELDS
1113 | };
1114 |
1115 |
1116 | /************************************************************************
1117 | * *
1118 | * Extension elements *
1119 | * *
1120 | ************************************************************************/
1121 |
1122 | /*
1123 | * xsltStyleItemExtElement:
1124 | *
1125 | * Reflects extension elements.
1126 | *
1127 | * NOTE: Due to the fact that the structure xsltElemPreComp is most
1128 | * probably already heavily in use out there by users, so we cannot
1129 | * easily change it, we'll create an intermediate structure which will
1130 | * hold an xsltElemPreCompPtr.
1131 | * BIG NOTE: The only problem I see here is that the user processes the
1132 | * content of the stylesheet tree, possibly he'll lookup the node->psvi
1133 | * fields in order to find subsequent extension functions.
1134 | * In this case, the user's code will break, since the node->psvi
1135 | * field will hold now the xsltStyleItemExtElementPtr and not
1136 | * the xsltElemPreCompPtr.
1137 | * However the place where the structure is anchored in the node-tree,
1138 | * namely node->psvi, has beed already once been moved from node->_private
1139 | * to node->psvi, so we have a precedent here, which, I think, should allow
1140 | * us to change such semantics without headaches.
1141 | */
1142 | typedef struct _xsltStyleItemExtElement xsltStyleItemExtElement;
1143 | typedef xsltStyleItemExtElement *xsltStyleItemExtElementPtr;
1144 | struct _xsltStyleItemExtElement {
1145 | XSLT_ITEM_COMMON_FIELDS
1146 | xsltElemPreCompPtr item;
1147 | };
1148 |
1149 | /************************************************************************
1150 | * *
1151 | * Literal result elements *
1152 | * *
1153 | ************************************************************************/
1154 |
1155 | typedef struct _xsltEffectiveNs xsltEffectiveNs;
1156 | typedef xsltEffectiveNs *xsltEffectiveNsPtr;
1157 | struct _xsltEffectiveNs {
1158 | xsltEffectiveNsPtr nextInStore; /* storage next */
1159 | xsltEffectiveNsPtr next; /* next item in the list */
1160 | const xmlChar *prefix;
1161 | const xmlChar *nsName;
1162 | /*
1163 | * Indicates if eclared on the literal result element; dunno if really
1164 | * needed.
1165 | */
1166 | int holdByElem;
1167 | };
1168 |
1169 | /*
1170 | * Info for literal result elements.
1171 | * This will be set on the elem->psvi field and will be
1172 | * shared by literal result elements, which have the same
1173 | * excluded result namespaces; i.e., this *won't* be created uniquely
1174 | * for every literal result element.
1175 | */
1176 | typedef struct _xsltStyleItemLRElementInfo xsltStyleItemLRElementInfo;
1177 | typedef xsltStyleItemLRElementInfo *xsltStyleItemLRElementInfoPtr;
1178 | struct _xsltStyleItemLRElementInfo {
1179 | XSLT_ITEM_COMMON_FIELDS
1180 | /*
1181 | * @effectiveNs is the set of effective ns-nodes
1182 | * on the literal result element, which will be added to the result
1183 | * element if not already existing in the result tree.
1184 | * This means that excluded namespaces (via exclude-result-prefixes,
1185 | * extension-element-prefixes and the XSLT namespace) not added
1186 | * to the set.
1187 | * Namespace-aliasing was applied on the @effectiveNs.
1188 | */
1189 | xsltEffectiveNsPtr effectiveNs;
1190 |
1191 | };
1192 |
1193 | #ifdef XSLT_REFACTORED
1194 |
1195 | typedef struct _xsltNsAlias xsltNsAlias;
1196 | typedef xsltNsAlias *xsltNsAliasPtr;
1197 | struct _xsltNsAlias {
1198 | xsltNsAliasPtr next; /* next in the list */
1199 | xmlNsPtr literalNs;
1200 | xmlNsPtr targetNs;
1201 | xmlDocPtr docOfTargetNs;
1202 | };
1203 | #endif
1204 |
1205 | #ifdef XSLT_REFACTORED_XSLT_NSCOMP
1206 |
1207 | typedef struct _xsltNsMap xsltNsMap;
1208 | typedef xsltNsMap *xsltNsMapPtr;
1209 | struct _xsltNsMap {
1210 | xsltNsMapPtr next; /* next in the list */
1211 | xmlDocPtr doc;
1212 | xmlNodePtr elem; /* the element holding the ns-decl */
1213 | xmlNsPtr ns; /* the xmlNs structure holding the XML namespace name */
1214 | const xmlChar *origNsName; /* the original XML namespace name */
1215 | const xmlChar *newNsName; /* the mapped XML namespace name */
1216 | };
1217 | #endif
1218 |
1219 | /************************************************************************
1220 | * *
1221 | * Compile-time structures for *internal* use only *
1222 | * *
1223 | ************************************************************************/
1224 |
1225 | typedef struct _xsltPrincipalStylesheetData xsltPrincipalStylesheetData;
1226 | typedef xsltPrincipalStylesheetData *xsltPrincipalStylesheetDataPtr;
1227 |
1228 | typedef struct _xsltNsList xsltNsList;
1229 | typedef xsltNsList *xsltNsListPtr;
1230 | struct _xsltNsList {
1231 | xsltNsListPtr next; /* next in the list */
1232 | xmlNsPtr ns;
1233 | };
1234 |
1235 | /*
1236 | * xsltVarInfo:
1237 | *
1238 | * Used at compilation time for parameters and variables.
1239 | */
1240 | typedef struct _xsltVarInfo xsltVarInfo;
1241 | typedef xsltVarInfo *xsltVarInfoPtr;
1242 | struct _xsltVarInfo {
1243 | xsltVarInfoPtr next; /* next in the list */
1244 | xsltVarInfoPtr prev;
1245 | int depth; /* the depth in the tree */
1246 | const xmlChar *name;
1247 | const xmlChar *nsName;
1248 | };
1249 |
1250 | /**
1251 | * xsltCompilerNodeInfo:
1252 | *
1253 | * Per-node information during compile-time.
1254 | */
1255 | typedef struct _xsltCompilerNodeInfo xsltCompilerNodeInfo;
1256 | typedef xsltCompilerNodeInfo *xsltCompilerNodeInfoPtr;
1257 | struct _xsltCompilerNodeInfo {
1258 | xsltCompilerNodeInfoPtr next;
1259 | xsltCompilerNodeInfoPtr prev;
1260 | xmlNodePtr node;
1261 | int depth;
1262 | xsltTemplatePtr templ; /* The owning template */
1263 | int category; /* XSLT element, LR-element or
1264 | extension element */
1265 | xsltStyleType type;
1266 | xsltElemPreCompPtr item; /* The compiled information */
1267 | /* The current in-scope namespaces */
1268 | xsltNsListContainerPtr inScopeNs;
1269 | /* The current excluded result namespaces */
1270 | xsltPointerListPtr exclResultNs;
1271 | /* The current extension instruction namespaces */
1272 | xsltPointerListPtr extElemNs;
1273 |
1274 | /* The current info for literal result elements. */
1275 | xsltStyleItemLRElementInfoPtr litResElemInfo;
1276 | /*
1277 | * Set to 1 if in-scope namespaces changed,
1278 | * or excluded result namespaces changed,
1279 | * or extension element namespaces changed.
1280 | * This will trigger creation of new infos
1281 | * for literal result elements.
1282 | */
1283 | int nsChanged;
1284 | int preserveWhitespace;
1285 | int stripWhitespace;
1286 | int isRoot; /* whether this is the stylesheet's root node */
1287 | int forwardsCompat; /* whether forwards-compatible mode is enabled */
1288 | /* whether the content of an extension element was processed */
1289 | int extContentHandled;
1290 | /* the type of the current child */
1291 | xsltStyleType curChildType;
1292 | };
1293 |
1294 | /**
1295 | * XSLT_CCTXT:
1296 | *
1297 | * get pointer to compiler context
1298 | */
1299 | #define XSLT_CCTXT(style) ((xsltCompilerCtxtPtr) style->compCtxt)
1300 |
1301 | typedef enum {
1302 | XSLT_ERROR_SEVERITY_ERROR = 0,
1303 | XSLT_ERROR_SEVERITY_WARNING
1304 | } xsltErrorSeverityType;
1305 |
1306 | typedef struct _xsltCompilerCtxt xsltCompilerCtxt;
1307 | typedef xsltCompilerCtxt *xsltCompilerCtxtPtr;
1308 | struct _xsltCompilerCtxt {
1309 | void *errorCtxt; /* user specific error context */
1310 | /*
1311 | * used for error/warning reports; e.g. XSLT_ERROR_SEVERITY_WARNING */
1312 | xsltErrorSeverityType errSeverity;
1313 | int warnings; /* TODO: number of warnings found at
1314 | compilation */
1315 | int errors; /* TODO: number of errors found at
1316 | compilation */
1317 | xmlDictPtr dict;
1318 | xsltStylesheetPtr style;
1319 | int simplified; /* whether this is a simplified stylesheet */
1320 | /* TODO: structured/unstructured error contexts. */
1321 | int depth; /* Current depth of processing */
1322 |
1323 | xsltCompilerNodeInfoPtr inode;
1324 | xsltCompilerNodeInfoPtr inodeList;
1325 | xsltCompilerNodeInfoPtr inodeLast;
1326 | xsltPointerListPtr tmpList; /* Used for various purposes */
1327 | /*
1328 | * The XSLT version as specified by the stylesheet's root element.
1329 | */
1330 | int isInclude;
1331 | int hasForwardsCompat; /* whether forwards-compatible mode was used
1332 | in a parsing episode */
1333 | int maxNodeInfos; /* TEMP TODO: just for the interest */
1334 | int maxLREs; /* TEMP TODO: just for the interest */
1335 | /*
1336 | * In order to keep the old behaviour, applying strict rules of
1337 | * the spec can be turned off. This has effect only on special
1338 | * mechanisms like whitespace-stripping in the stylesheet.
1339 | */
1340 | int strict;
1341 | xsltPrincipalStylesheetDataPtr psData;
1342 | xsltStyleItemUknownPtr unknownItem;
1343 | int hasNsAliases; /* Indicator if there was an xsl:namespace-alias. */
1344 | xsltNsAliasPtr nsAliases;
1345 | xsltVarInfoPtr ivars; /* Storage of local in-scope variables/params. */
1346 | xsltVarInfoPtr ivar; /* topmost local variable/param. */
1347 | };
1348 |
1349 | #else /* XSLT_REFACTORED */
1350 | /*
1351 | * The old structures before refactoring.
1352 | */
1353 |
1354 | /**
1355 | * _xsltStylePreComp:
1356 | *
1357 | * The in-memory structure corresponding to XSLT stylesheet constructs
1358 | * precomputed data.
1359 | */
1360 | struct _xsltStylePreComp {
1361 | xsltElemPreCompPtr next; /* chained list */
1362 | xsltStyleType type; /* type of the element */
1363 | xsltTransformFunction func; /* handling function */
1364 | xmlNodePtr inst; /* the instruction */
1365 |
1366 | /*
1367 | * Pre computed values.
1368 | */
1369 |
1370 | const xmlChar *stype; /* sort */
1371 | int has_stype; /* sort */
1372 | int number; /* sort */
1373 | const xmlChar *order; /* sort */
1374 | int has_order; /* sort */
1375 | int descending; /* sort */
1376 | const xmlChar *lang; /* sort */
1377 | int has_lang; /* sort */
1378 | const xmlChar *case_order; /* sort */
1379 | int lower_first; /* sort */
1380 |
1381 | const xmlChar *use; /* copy, element */
1382 | int has_use; /* copy, element */
1383 |
1384 | int noescape; /* text */
1385 |
1386 | const xmlChar *name; /* element, attribute, pi */
1387 | int has_name; /* element, attribute, pi */
1388 | const xmlChar *ns; /* element */
1389 | int has_ns; /* element */
1390 |
1391 | const xmlChar *mode; /* apply-templates */
1392 | const xmlChar *modeURI; /* apply-templates */
1393 |
1394 | const xmlChar *test; /* if */
1395 |
1396 | xsltTemplatePtr templ; /* call-template */
1397 |
1398 | const xmlChar *select; /* sort, copy-of, value-of, apply-templates */
1399 |
1400 | int ver11; /* document */
1401 | const xmlChar *filename; /* document URL */
1402 | int has_filename; /* document */
1403 |
1404 | xsltNumberData numdata; /* number */
1405 |
1406 | xmlXPathCompExprPtr comp; /* a precompiled XPath expression */
1407 | xmlNsPtr *nsList; /* the namespaces in scope */
1408 | int nsNr; /* the number of namespaces in scope */
1409 | };
1410 |
1411 | #endif /* XSLT_REFACTORED */
1412 |
1413 |
1414 | /*
1415 | * The in-memory structure corresponding to an XSLT Variable
1416 | * or Param.
1417 | */
1418 | typedef struct _xsltStackElem xsltStackElem;
1419 | typedef xsltStackElem *xsltStackElemPtr;
1420 | struct _xsltStackElem {
1421 | struct _xsltStackElem *next;/* chained list */
1422 | xsltStylePreCompPtr comp; /* the compiled form */
1423 | int computed; /* was the evaluation done */
1424 | const xmlChar *name; /* the local part of the name QName */
1425 | const xmlChar *nameURI; /* the URI part of the name QName */
1426 | const xmlChar *select; /* the eval string */
1427 | xmlNodePtr tree; /* the sequence constructor if no eval
1428 | string or the location */
1429 | xmlXPathObjectPtr value; /* The value if computed */
1430 | xmlDocPtr fragment; /* The Result Tree Fragments (needed for XSLT 1.0)
1431 | which are bound to the variable's lifetime. */
1432 | int level; /* the depth in the tree;
1433 | -1 if persistent (e.g. a given xsl:with-param) */
1434 | xsltTransformContextPtr context; /* The transformation context; needed to cache
1435 | the variables */
1436 | int flags;
1437 | };
1438 |
1439 | #ifdef XSLT_REFACTORED
1440 |
1441 | struct _xsltPrincipalStylesheetData {
1442 | /*
1443 | * Namespace dictionary for ns-prefixes and ns-names:
1444 | * TODO: Shared between stylesheets, and XPath mechanisms.
1445 | * Not used yet.
1446 | */
1447 | xmlDictPtr namespaceDict;
1448 | /*
1449 | * Global list of in-scope namespaces.
1450 | */
1451 | xsltPointerListPtr inScopeNamespaces;
1452 | /*
1453 | * Global list of information for [xsl:]excluded-result-prefixes.
1454 | */
1455 | xsltPointerListPtr exclResultNamespaces;
1456 | /*
1457 | * Global list of information for [xsl:]extension-element-prefixes.
1458 | */
1459 | xsltPointerListPtr extElemNamespaces;
1460 | xsltEffectiveNsPtr effectiveNs;
1461 | #ifdef XSLT_REFACTORED_XSLT_NSCOMP
1462 | /*
1463 | * Namespace name map to get rid of string comparison of namespace names.
1464 | */
1465 | xsltNsMapPtr nsMap;
1466 | #endif
1467 | };
1468 |
1469 |
1470 | #endif
1471 | /*
1472 | * Note that we added a @compCtxt field to anchor an stylesheet compilation
1473 | * context, since, due to historical reasons, various compile-time function
1474 | * take only the stylesheet as argument and not a compilation context.
1475 | */
1476 | struct _xsltStylesheet {
1477 | /*
1478 | * The stylesheet import relation is kept as a tree.
1479 | */
1480 | struct _xsltStylesheet *parent;
1481 | struct _xsltStylesheet *next;
1482 | struct _xsltStylesheet *imports;
1483 |
1484 | xsltDocumentPtr docList; /* the include document list */
1485 |
1486 | /*
1487 | * General data on the style sheet document.
1488 | */
1489 | xmlDocPtr doc; /* the parsed XML stylesheet */
1490 | xmlHashTablePtr stripSpaces;/* the hash table of the strip-space and
1491 | preserve space elements */
1492 | int stripAll; /* strip-space * (1) preserve-space * (-1) */
1493 | xmlHashTablePtr cdataSection;/* the hash table of the cdata-section */
1494 |
1495 | /*
1496 | * Global variable or parameters.
1497 | */
1498 | xsltStackElemPtr variables; /* linked list of param and variables */
1499 |
1500 | /*
1501 | * Template descriptions.
1502 | */
1503 | xsltTemplatePtr templates; /* the ordered list of templates */
1504 | xmlHashTablePtr templatesHash; /* hash table or wherever compiled
1505 | templates information is stored */
1506 | struct _xsltCompMatch *rootMatch; /* template based on / */
1507 | struct _xsltCompMatch *keyMatch; /* template based on key() */
1508 | struct _xsltCompMatch *elemMatch; /* template based on * */
1509 | struct _xsltCompMatch *attrMatch; /* template based on @* */
1510 | struct _xsltCompMatch *parentMatch; /* template based on .. */
1511 | struct _xsltCompMatch *textMatch; /* template based on text() */
1512 | struct _xsltCompMatch *piMatch; /* template based on
1513 | processing-instruction() */
1514 | struct _xsltCompMatch *commentMatch; /* template based on comment() */
1515 |
1516 | /*
1517 | * Namespace aliases.
1518 | * NOTE: Not used in the refactored code.
1519 | */
1520 | xmlHashTablePtr nsAliases; /* the namespace alias hash tables */
1521 |
1522 | /*
1523 | * Attribute sets.
1524 | */
1525 | xmlHashTablePtr attributeSets;/* the attribute sets hash tables */
1526 |
1527 | /*
1528 | * Namespaces.
1529 | * TODO: Eliminate this.
1530 | */
1531 | xmlHashTablePtr nsHash; /* the set of namespaces in use:
1532 | ATTENTION: This is used for
1533 | execution of XPath expressions; unfortunately
1534 | it restricts the stylesheet to have distinct
1535 | prefixes.
1536 | TODO: We need to get rid of this.
1537 | */
1538 | void *nsDefs; /* ATTENTION TODO: This is currently used to store
1539 | xsltExtDefPtr (in extensions.c) and
1540 | *not* xmlNsPtr.
1541 | */
1542 |
1543 | /*
1544 | * Key definitions.
1545 | */
1546 | void *keys; /* key definitions */
1547 |
1548 | /*
1549 | * Output related stuff.
1550 | */
1551 | xmlChar *method; /* the output method */
1552 | xmlChar *methodURI; /* associated namespace if any */
1553 | xmlChar *version; /* version string */
1554 | xmlChar *encoding; /* encoding string */
1555 | int omitXmlDeclaration; /* omit-xml-declaration = "yes" | "no" */
1556 |
1557 | /*
1558 | * Number formatting.
1559 | */
1560 | xsltDecimalFormatPtr decimalFormat;
1561 | int standalone; /* standalone = "yes" | "no" */
1562 | xmlChar *doctypePublic; /* doctype-public string */
1563 | xmlChar *doctypeSystem; /* doctype-system string */
1564 | int indent; /* should output being indented */
1565 | xmlChar *mediaType; /* media-type string */
1566 |
1567 | /*
1568 | * Precomputed blocks.
1569 | */
1570 | xsltElemPreCompPtr preComps;/* list of precomputed blocks */
1571 | int warnings; /* number of warnings found at compilation */
1572 | int errors; /* number of errors found at compilation */
1573 |
1574 | xmlChar *exclPrefix; /* last excluded prefixes */
1575 | xmlChar **exclPrefixTab; /* array of excluded prefixes */
1576 | int exclPrefixNr; /* number of excluded prefixes in scope */
1577 | int exclPrefixMax; /* size of the array */
1578 |
1579 | void *_private; /* user defined data */
1580 |
1581 | /*
1582 | * Extensions.
1583 | */
1584 | xmlHashTablePtr extInfos; /* the extension data */
1585 | int extrasNr; /* the number of extras required */
1586 |
1587 | /*
1588 | * For keeping track of nested includes
1589 | */
1590 | xsltDocumentPtr includes; /* points to last nested include */
1591 |
1592 | /*
1593 | * dictionary: shared between stylesheet, context and documents.
1594 | */
1595 | xmlDictPtr dict;
1596 | /*
1597 | * precompiled attribute value templates.
1598 | */
1599 | void *attVTs;
1600 | /*
1601 | * if namespace-alias has an alias for the default stylesheet prefix
1602 | * NOTE: Not used in the refactored code.
1603 | */
1604 | const xmlChar *defaultAlias;
1605 | /*
1606 | * bypass pre-processing (already done) (used in imports)
1607 | */
1608 | int nopreproc;
1609 | /*
1610 | * all document text strings were internalized
1611 | */
1612 | int internalized;
1613 | /*
1614 | * Literal Result Element as Stylesheet c.f. section 2.3
1615 | */
1616 | int literal_result;
1617 | /*
1618 | * The principal stylesheet
1619 | */
1620 | xsltStylesheetPtr principal;
1621 | #ifdef XSLT_REFACTORED
1622 | /*
1623 | * Compilation context used during compile-time.
1624 | */
1625 | xsltCompilerCtxtPtr compCtxt; /* TODO: Change this to (void *). */
1626 |
1627 | xsltPrincipalStylesheetDataPtr principalData;
1628 | #endif
1629 | /*
1630 | * Forwards-compatible processing
1631 | */
1632 | int forwards_compatible;
1633 |
1634 | xmlHashTablePtr namedTemplates; /* hash table of named templates */
1635 |
1636 | xmlXPathContextPtr xpathCtxt;
1637 |
1638 | unsigned long opLimit;
1639 | unsigned long opCount;
1640 | };
1641 |
1642 | typedef struct _xsltTransformCache xsltTransformCache;
1643 | typedef xsltTransformCache *xsltTransformCachePtr;
1644 | struct _xsltTransformCache {
1645 | xmlDocPtr RVT;
1646 | int nbRVT;
1647 | xsltStackElemPtr stackItems;
1648 | int nbStackItems;
1649 | #ifdef XSLT_DEBUG_PROFILE_CACHE
1650 | int dbgCachedRVTs;
1651 | int dbgReusedRVTs;
1652 | int dbgCachedVars;
1653 | int dbgReusedVars;
1654 | #endif
1655 | };
1656 |
1657 | /*
1658 | * The in-memory structure corresponding to an XSLT Transformation.
1659 | */
1660 | typedef enum {
1661 | XSLT_OUTPUT_XML = 0,
1662 | XSLT_OUTPUT_HTML,
1663 | XSLT_OUTPUT_TEXT
1664 | } xsltOutputType;
1665 |
1666 | typedef void *
1667 | (*xsltNewLocaleFunc)(const xmlChar *lang, int lowerFirst);
1668 | typedef void
1669 | (*xsltFreeLocaleFunc)(void *locale);
1670 | typedef xmlChar *
1671 | (*xsltGenSortKeyFunc)(void *locale, const xmlChar *lang);
1672 |
1673 | typedef enum {
1674 | XSLT_STATE_OK = 0,
1675 | XSLT_STATE_ERROR,
1676 | XSLT_STATE_STOPPED
1677 | } xsltTransformState;
1678 |
1679 | struct _xsltTransformContext {
1680 | xsltStylesheetPtr style; /* the stylesheet used */
1681 | xsltOutputType type; /* the type of output */
1682 |
1683 | xsltTemplatePtr templ; /* the current template */
1684 | int templNr; /* Nb of templates in the stack */
1685 | int templMax; /* Size of the templtes stack */
1686 | xsltTemplatePtr *templTab; /* the template stack */
1687 |
1688 | xsltStackElemPtr vars; /* the current variable list */
1689 | int varsNr; /* Nb of variable list in the stack */
1690 | int varsMax; /* Size of the variable list stack */
1691 | xsltStackElemPtr *varsTab; /* the variable list stack */
1692 | int varsBase; /* the var base for current templ */
1693 |
1694 | /*
1695 | * Extensions
1696 | */
1697 | xmlHashTablePtr extFunctions; /* the extension functions */
1698 | xmlHashTablePtr extElements; /* the extension elements */
1699 | xmlHashTablePtr extInfos; /* the extension data */
1700 |
1701 | const xmlChar *mode; /* the current mode */
1702 | const xmlChar *modeURI; /* the current mode URI */
1703 |
1704 | xsltDocumentPtr docList; /* the document list */
1705 |
1706 | xsltDocumentPtr document; /* the current source document; can be NULL if an RTF */
1707 | xmlNodePtr node; /* the current node being processed */
1708 | xmlNodeSetPtr nodeList; /* the current node list */
1709 | /* xmlNodePtr current; the node */
1710 |
1711 | xmlDocPtr output; /* the resulting document */
1712 | xmlNodePtr insert; /* the insertion node */
1713 |
1714 | xmlXPathContextPtr xpathCtxt; /* the XPath context */
1715 | xsltTransformState state; /* the current state */
1716 |
1717 | /*
1718 | * Global variables
1719 | */
1720 | xmlHashTablePtr globalVars; /* the global variables and params */
1721 |
1722 | xmlNodePtr inst; /* the instruction in the stylesheet */
1723 |
1724 | int xinclude; /* should XInclude be processed */
1725 |
1726 | const char * outputFile; /* the output URI if known */
1727 |
1728 | int profile; /* is this run profiled */
1729 | long prof; /* the current profiled value */
1730 | int profNr; /* Nb of templates in the stack */
1731 | int profMax; /* Size of the templtaes stack */
1732 | long *profTab; /* the profile template stack */
1733 |
1734 | void *_private; /* user defined data */
1735 |
1736 | int extrasNr; /* the number of extras used */
1737 | int extrasMax; /* the number of extras allocated */
1738 | xsltRuntimeExtraPtr extras; /* extra per runtime information */
1739 |
1740 | xsltDocumentPtr styleList; /* the stylesheet docs list */
1741 | void * sec; /* the security preferences if any */
1742 |
1743 | xmlGenericErrorFunc error; /* a specific error handler */
1744 | void * errctx; /* context for the error handler */
1745 |
1746 | xsltSortFunc sortfunc; /* a ctxt specific sort routine */
1747 |
1748 | /*
1749 | * handling of temporary Result Value Tree
1750 | * (XSLT 1.0 term: "Result Tree Fragment")
1751 | */
1752 | xmlDocPtr tmpRVT; /* list of RVT without persistance */
1753 | xmlDocPtr persistRVT; /* list of persistant RVTs */
1754 | int ctxtflags; /* context processing flags */
1755 |
1756 | /*
1757 | * Speed optimization when coalescing text nodes
1758 | */
1759 | const xmlChar *lasttext; /* last text node content */
1760 | int lasttsize; /* last text node size */
1761 | int lasttuse; /* last text node use */
1762 | /*
1763 | * Per Context Debugging
1764 | */
1765 | int debugStatus; /* the context level debug status */
1766 | unsigned long* traceCode; /* pointer to the variable holding the mask */
1767 |
1768 | int parserOptions; /* parser options xmlParserOption */
1769 |
1770 | /*
1771 | * dictionary: shared between stylesheet, context and documents.
1772 | */
1773 | xmlDictPtr dict;
1774 | xmlDocPtr tmpDoc; /* Obsolete; not used in the library. */
1775 | /*
1776 | * all document text strings are internalized
1777 | */
1778 | int internalized;
1779 | int nbKeys;
1780 | int hasTemplKeyPatterns;
1781 | xsltTemplatePtr currentTemplateRule; /* the Current Template Rule */
1782 | xmlNodePtr initialContextNode;
1783 | xmlDocPtr initialContextDoc;
1784 | xsltTransformCachePtr cache;
1785 | void *contextVariable; /* the current variable item */
1786 | xmlDocPtr localRVT; /* list of local tree fragments; will be freed when
1787 | the instruction which created the fragment
1788 | exits */
1789 | xmlDocPtr localRVTBase; /* Obsolete */
1790 | int keyInitLevel; /* Needed to catch recursive keys issues */
1791 | int depth; /* Needed to catch recursions */
1792 | int maxTemplateDepth;
1793 | int maxTemplateVars;
1794 | unsigned long opLimit;
1795 | unsigned long opCount;
1796 | int sourceDocDirty;
1797 | unsigned long currentId; /* For generate-id() */
1798 |
1799 | xsltNewLocaleFunc newLocale;
1800 | xsltFreeLocaleFunc freeLocale;
1801 | xsltGenSortKeyFunc genSortKey;
1802 | };
1803 |
1804 | /**
1805 | * CHECK_STOPPED:
1806 | *
1807 | * Macro to check if the XSLT processing should be stopped.
1808 | * Will return from the function.
1809 | */
1810 | #define CHECK_STOPPED if (ctxt->state == XSLT_STATE_STOPPED) return;
1811 |
1812 | /**
1813 | * CHECK_STOPPEDE:
1814 | *
1815 | * Macro to check if the XSLT processing should be stopped.
1816 | * Will goto the error: label.
1817 | */
1818 | #define CHECK_STOPPEDE if (ctxt->state == XSLT_STATE_STOPPED) goto error;
1819 |
1820 | /**
1821 | * CHECK_STOPPED0:
1822 | *
1823 | * Macro to check if the XSLT processing should be stopped.
1824 | * Will return from the function with a 0 value.
1825 | */
1826 | #define CHECK_STOPPED0 if (ctxt->state == XSLT_STATE_STOPPED) return(0);
1827 |
1828 | /*
1829 | * The macro XML_CAST_FPTR is a hack to avoid a gcc warning about
1830 | * possible incompatibilities between function pointers and object
1831 | * pointers. It is defined in libxml/hash.h within recent versions
1832 | * of libxml2, but is put here for compatibility.
1833 | */
1834 | #ifndef XML_CAST_FPTR
1835 | /**
1836 | * XML_CAST_FPTR:
1837 | * @fptr: pointer to a function
1838 | *
1839 | * Macro to do a casting from an object pointer to a
1840 | * function pointer without encountering a warning from
1841 | * gcc
1842 | *
1843 | * #define XML_CAST_FPTR(fptr) (*(void **)(&fptr))
1844 | * This macro violated ISO C aliasing rules (gcc4 on s390 broke)
1845 | * so it is disabled now
1846 | */
1847 |
1848 | #define XML_CAST_FPTR(fptr) fptr
1849 | #endif
1850 | /*
1851 | * Functions associated to the internal types
1852 | xsltDecimalFormatPtr xsltDecimalFormatGetByName(xsltStylesheetPtr sheet,
1853 | xmlChar *name);
1854 | */
1855 | XSLTPUBFUN xsltStylesheetPtr XSLTCALL
1856 | xsltNewStylesheet (void);
1857 | XSLTPUBFUN xsltStylesheetPtr XSLTCALL
1858 | xsltParseStylesheetFile (const xmlChar* filename);
1859 | XSLTPUBFUN void XSLTCALL
1860 | xsltFreeStylesheet (xsltStylesheetPtr style);
1861 | XSLTPUBFUN int XSLTCALL
1862 | xsltIsBlank (xmlChar *str);
1863 | XSLTPUBFUN void XSLTCALL
1864 | xsltFreeStackElemList (xsltStackElemPtr elem);
1865 | XSLTPUBFUN xsltDecimalFormatPtr XSLTCALL
1866 | xsltDecimalFormatGetByName(xsltStylesheetPtr style,
1867 | xmlChar *name);
1868 | XSLTPUBFUN xsltDecimalFormatPtr XSLTCALL
1869 | xsltDecimalFormatGetByQName(xsltStylesheetPtr style,
1870 | const xmlChar *nsUri,
1871 | const xmlChar *name);
1872 |
1873 | XSLTPUBFUN xsltStylesheetPtr XSLTCALL
1874 | xsltParseStylesheetProcess(xsltStylesheetPtr ret,
1875 | xmlDocPtr doc);
1876 | XSLTPUBFUN void XSLTCALL
1877 | xsltParseStylesheetOutput(xsltStylesheetPtr style,
1878 | xmlNodePtr cur);
1879 | XSLTPUBFUN xsltStylesheetPtr XSLTCALL
1880 | xsltParseStylesheetDoc (xmlDocPtr doc);
1881 | XSLTPUBFUN xsltStylesheetPtr XSLTCALL
1882 | xsltParseStylesheetImportedDoc(xmlDocPtr doc,
1883 | xsltStylesheetPtr style);
1884 | XSLTPUBFUN int XSLTCALL
1885 | xsltParseStylesheetUser(xsltStylesheetPtr style,
1886 | xmlDocPtr doc);
1887 | XSLTPUBFUN xsltStylesheetPtr XSLTCALL
1888 | xsltLoadStylesheetPI (xmlDocPtr doc);
1889 | XSLTPUBFUN void XSLTCALL
1890 | xsltNumberFormat (xsltTransformContextPtr ctxt,
1891 | xsltNumberDataPtr data,
1892 | xmlNodePtr node);
1893 | XSLTPUBFUN xmlXPathError XSLTCALL
1894 | xsltFormatNumberConversion(xsltDecimalFormatPtr self,
1895 | xmlChar *format,
1896 | double number,
1897 | xmlChar **result);
1898 |
1899 | XSLTPUBFUN void XSLTCALL
1900 | xsltParseTemplateContent(xsltStylesheetPtr style,
1901 | xmlNodePtr templ);
1902 | XSLTPUBFUN int XSLTCALL
1903 | xsltAllocateExtra (xsltStylesheetPtr style);
1904 | XSLTPUBFUN int XSLTCALL
1905 | xsltAllocateExtraCtxt (xsltTransformContextPtr ctxt);
1906 | /*
1907 | * Extra functions for Result Value Trees
1908 | */
1909 | XSLTPUBFUN xmlDocPtr XSLTCALL
1910 | xsltCreateRVT (xsltTransformContextPtr ctxt);
1911 | XSLTPUBFUN int XSLTCALL
1912 | xsltRegisterTmpRVT (xsltTransformContextPtr ctxt,
1913 | xmlDocPtr RVT);
1914 | XSLTPUBFUN int XSLTCALL
1915 | xsltRegisterLocalRVT (xsltTransformContextPtr ctxt,
1916 | xmlDocPtr RVT);
1917 | XSLTPUBFUN int XSLTCALL
1918 | xsltRegisterPersistRVT (xsltTransformContextPtr ctxt,
1919 | xmlDocPtr RVT);
1920 | XSLTPUBFUN int XSLTCALL
1921 | xsltExtensionInstructionResultRegister(
1922 | xsltTransformContextPtr ctxt,
1923 | xmlXPathObjectPtr obj);
1924 | XSLTPUBFUN int XSLTCALL
1925 | xsltExtensionInstructionResultFinalize(
1926 | xsltTransformContextPtr ctxt);
1927 | XSLTPUBFUN int XSLTCALL
1928 | xsltFlagRVTs(
1929 | xsltTransformContextPtr ctxt,
1930 | xmlXPathObjectPtr obj,
1931 | int val);
1932 | XSLTPUBFUN void XSLTCALL
1933 | xsltFreeRVTs (xsltTransformContextPtr ctxt);
1934 | XSLTPUBFUN void XSLTCALL
1935 | xsltReleaseRVT (xsltTransformContextPtr ctxt,
1936 | xmlDocPtr RVT);
1937 | /*
1938 | * Extra functions for Attribute Value Templates
1939 | */
1940 | XSLTPUBFUN void XSLTCALL
1941 | xsltCompileAttr (xsltStylesheetPtr style,
1942 | xmlAttrPtr attr);
1943 | XSLTPUBFUN xmlChar * XSLTCALL
1944 | xsltEvalAVT (xsltTransformContextPtr ctxt,
1945 | void *avt,
1946 | xmlNodePtr node);
1947 | XSLTPUBFUN void XSLTCALL
1948 | xsltFreeAVTList (void *avt);
1949 |
1950 | /*
1951 | * Extra function for successful xsltCleanupGlobals / xsltInit sequence.
1952 | */
1953 |
1954 | XSLTPUBFUN void XSLTCALL
1955 | xsltUninit (void);
1956 |
1957 | /************************************************************************
1958 | * *
1959 | * Compile-time functions for *internal* use only *
1960 | * *
1961 | ************************************************************************/
1962 |
1963 | #ifdef XSLT_REFACTORED
1964 | XSLTPUBFUN void XSLTCALL
1965 | xsltParseSequenceConstructor(
1966 | xsltCompilerCtxtPtr cctxt,
1967 | xmlNodePtr start);
1968 | XSLTPUBFUN int XSLTCALL
1969 | xsltParseAnyXSLTElem (xsltCompilerCtxtPtr cctxt,
1970 | xmlNodePtr elem);
1971 | #ifdef XSLT_REFACTORED_XSLT_NSCOMP
1972 | XSLTPUBFUN int XSLTCALL
1973 | xsltRestoreDocumentNamespaces(
1974 | xsltNsMapPtr ns,
1975 | xmlDocPtr doc);
1976 | #endif
1977 | #endif /* XSLT_REFACTORED */
1978 |
1979 | /************************************************************************
1980 | * *
1981 | * Transformation-time functions for *internal* use only *
1982 | * *
1983 | ************************************************************************/
1984 | XSLTPUBFUN int XSLTCALL
1985 | xsltInitCtxtKey (xsltTransformContextPtr ctxt,
1986 | xsltDocumentPtr doc,
1987 | xsltKeyDefPtr keyd);
1988 | XSLTPUBFUN int XSLTCALL
1989 | xsltInitAllDocKeys (xsltTransformContextPtr ctxt);
1990 | #ifdef __cplusplus
1991 | }
1992 | #endif
1993 |
1994 | #endif /* __XML_XSLT_H__ */
1995 |
1996 |
```