This is page 45 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/libxml/xmlreader.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: the XMLReader implementation
3 | * Description: API of the XML streaming API based on C# interfaces.
4 | *
5 | * Copy: See Copyright for the status of this software.
6 | *
7 | * Author: Daniel Veillard
8 | */
9 |
10 | #ifndef __XML_XMLREADER_H__
11 | #define __XML_XMLREADER_H__
12 |
13 | #include <libxml/xmlversion.h>
14 | #include <libxml/tree.h>
15 | #include <libxml/xmlerror.h>
16 | #include <libxml/xmlIO.h>
17 | #ifdef LIBXML_SCHEMAS_ENABLED
18 | #include <libxml/relaxng.h>
19 | #include <libxml/xmlschemas.h>
20 | #endif
21 | /* for compatibility */
22 | #include <libxml/parser.h>
23 |
24 | #ifdef __cplusplus
25 | extern "C" {
26 | #endif
27 |
28 | /**
29 | * xmlParserSeverities:
30 | *
31 | * How severe an error callback is when the per-reader error callback API
32 | * is used.
33 | */
34 | typedef enum {
35 | XML_PARSER_SEVERITY_VALIDITY_WARNING = 1,
36 | XML_PARSER_SEVERITY_VALIDITY_ERROR = 2,
37 | XML_PARSER_SEVERITY_WARNING = 3,
38 | XML_PARSER_SEVERITY_ERROR = 4
39 | } xmlParserSeverities;
40 |
41 | #ifdef LIBXML_READER_ENABLED
42 |
43 | /**
44 | * xmlTextReaderMode:
45 | *
46 | * Internal state values for the reader.
47 | */
48 | typedef enum {
49 | XML_TEXTREADER_MODE_INITIAL = 0,
50 | XML_TEXTREADER_MODE_INTERACTIVE = 1,
51 | XML_TEXTREADER_MODE_ERROR = 2,
52 | XML_TEXTREADER_MODE_EOF =3,
53 | XML_TEXTREADER_MODE_CLOSED = 4,
54 | XML_TEXTREADER_MODE_READING = 5
55 | } xmlTextReaderMode;
56 |
57 | /**
58 | * xmlParserProperties:
59 | *
60 | * Some common options to use with xmlTextReaderSetParserProp, but it
61 | * is better to use xmlParserOption and the xmlReaderNewxxx and
62 | * xmlReaderForxxx APIs now.
63 | */
64 | typedef enum {
65 | XML_PARSER_LOADDTD = 1,
66 | XML_PARSER_DEFAULTATTRS = 2,
67 | XML_PARSER_VALIDATE = 3,
68 | XML_PARSER_SUBST_ENTITIES = 4
69 | } xmlParserProperties;
70 |
71 | /**
72 | * xmlReaderTypes:
73 | *
74 | * Predefined constants for the different types of nodes.
75 | */
76 | typedef enum {
77 | XML_READER_TYPE_NONE = 0,
78 | XML_READER_TYPE_ELEMENT = 1,
79 | XML_READER_TYPE_ATTRIBUTE = 2,
80 | XML_READER_TYPE_TEXT = 3,
81 | XML_READER_TYPE_CDATA = 4,
82 | XML_READER_TYPE_ENTITY_REFERENCE = 5,
83 | XML_READER_TYPE_ENTITY = 6,
84 | XML_READER_TYPE_PROCESSING_INSTRUCTION = 7,
85 | XML_READER_TYPE_COMMENT = 8,
86 | XML_READER_TYPE_DOCUMENT = 9,
87 | XML_READER_TYPE_DOCUMENT_TYPE = 10,
88 | XML_READER_TYPE_DOCUMENT_FRAGMENT = 11,
89 | XML_READER_TYPE_NOTATION = 12,
90 | XML_READER_TYPE_WHITESPACE = 13,
91 | XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14,
92 | XML_READER_TYPE_END_ELEMENT = 15,
93 | XML_READER_TYPE_END_ENTITY = 16,
94 | XML_READER_TYPE_XML_DECLARATION = 17
95 | } xmlReaderTypes;
96 |
97 | /**
98 | * xmlTextReader:
99 | *
100 | * Structure for an xmlReader context.
101 | */
102 | typedef struct _xmlTextReader xmlTextReader;
103 |
104 | /**
105 | * xmlTextReaderPtr:
106 | *
107 | * Pointer to an xmlReader context.
108 | */
109 | typedef xmlTextReader *xmlTextReaderPtr;
110 |
111 | /*
112 | * Constructors & Destructor
113 | */
114 | XMLPUBFUN xmlTextReaderPtr
115 | xmlNewTextReader (xmlParserInputBufferPtr input,
116 | const char *URI);
117 | XMLPUBFUN xmlTextReaderPtr
118 | xmlNewTextReaderFilename(const char *URI);
119 |
120 | XMLPUBFUN void
121 | xmlFreeTextReader (xmlTextReaderPtr reader);
122 |
123 | XMLPUBFUN int
124 | xmlTextReaderSetup(xmlTextReaderPtr reader,
125 | xmlParserInputBufferPtr input, const char *URL,
126 | const char *encoding, int options);
127 | XMLPUBFUN void
128 | xmlTextReaderSetMaxAmplification(xmlTextReaderPtr reader,
129 | unsigned maxAmpl);
130 |
131 | /*
132 | * Iterators
133 | */
134 | XMLPUBFUN int
135 | xmlTextReaderRead (xmlTextReaderPtr reader);
136 |
137 | #ifdef LIBXML_WRITER_ENABLED
138 | XMLPUBFUN xmlChar *
139 | xmlTextReaderReadInnerXml(xmlTextReaderPtr reader);
140 |
141 | XMLPUBFUN xmlChar *
142 | xmlTextReaderReadOuterXml(xmlTextReaderPtr reader);
143 | #endif
144 |
145 | XMLPUBFUN xmlChar *
146 | xmlTextReaderReadString (xmlTextReaderPtr reader);
147 | XMLPUBFUN int
148 | xmlTextReaderReadAttributeValue(xmlTextReaderPtr reader);
149 |
150 | /*
151 | * Attributes of the node
152 | */
153 | XMLPUBFUN int
154 | xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
155 | XMLPUBFUN int
156 | xmlTextReaderDepth (xmlTextReaderPtr reader);
157 | XMLPUBFUN int
158 | xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
159 | XMLPUBFUN int
160 | xmlTextReaderHasValue(xmlTextReaderPtr reader);
161 | XMLPUBFUN int
162 | xmlTextReaderIsDefault (xmlTextReaderPtr reader);
163 | XMLPUBFUN int
164 | xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
165 | XMLPUBFUN int
166 | xmlTextReaderNodeType (xmlTextReaderPtr reader);
167 | XMLPUBFUN int
168 | xmlTextReaderQuoteChar (xmlTextReaderPtr reader);
169 | XMLPUBFUN int
170 | xmlTextReaderReadState (xmlTextReaderPtr reader);
171 | XMLPUBFUN int
172 | xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader);
173 |
174 | XMLPUBFUN const xmlChar *
175 | xmlTextReaderConstBaseUri (xmlTextReaderPtr reader);
176 | XMLPUBFUN const xmlChar *
177 | xmlTextReaderConstLocalName (xmlTextReaderPtr reader);
178 | XMLPUBFUN const xmlChar *
179 | xmlTextReaderConstName (xmlTextReaderPtr reader);
180 | XMLPUBFUN const xmlChar *
181 | xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader);
182 | XMLPUBFUN const xmlChar *
183 | xmlTextReaderConstPrefix (xmlTextReaderPtr reader);
184 | XMLPUBFUN const xmlChar *
185 | xmlTextReaderConstXmlLang (xmlTextReaderPtr reader);
186 | XMLPUBFUN const xmlChar *
187 | xmlTextReaderConstString (xmlTextReaderPtr reader,
188 | const xmlChar *str);
189 | XMLPUBFUN const xmlChar *
190 | xmlTextReaderConstValue (xmlTextReaderPtr reader);
191 |
192 | /*
193 | * use the Const version of the routine for
194 | * better performance and simpler code
195 | */
196 | XMLPUBFUN xmlChar *
197 | xmlTextReaderBaseUri (xmlTextReaderPtr reader);
198 | XMLPUBFUN xmlChar *
199 | xmlTextReaderLocalName (xmlTextReaderPtr reader);
200 | XMLPUBFUN xmlChar *
201 | xmlTextReaderName (xmlTextReaderPtr reader);
202 | XMLPUBFUN xmlChar *
203 | xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
204 | XMLPUBFUN xmlChar *
205 | xmlTextReaderPrefix (xmlTextReaderPtr reader);
206 | XMLPUBFUN xmlChar *
207 | xmlTextReaderXmlLang (xmlTextReaderPtr reader);
208 | XMLPUBFUN xmlChar *
209 | xmlTextReaderValue (xmlTextReaderPtr reader);
210 |
211 | /*
212 | * Methods of the XmlTextReader
213 | */
214 | XMLPUBFUN int
215 | xmlTextReaderClose (xmlTextReaderPtr reader);
216 | XMLPUBFUN xmlChar *
217 | xmlTextReaderGetAttributeNo (xmlTextReaderPtr reader,
218 | int no);
219 | XMLPUBFUN xmlChar *
220 | xmlTextReaderGetAttribute (xmlTextReaderPtr reader,
221 | const xmlChar *name);
222 | XMLPUBFUN xmlChar *
223 | xmlTextReaderGetAttributeNs (xmlTextReaderPtr reader,
224 | const xmlChar *localName,
225 | const xmlChar *namespaceURI);
226 | XMLPUBFUN xmlParserInputBufferPtr
227 | xmlTextReaderGetRemainder (xmlTextReaderPtr reader);
228 | XMLPUBFUN xmlChar *
229 | xmlTextReaderLookupNamespace(xmlTextReaderPtr reader,
230 | const xmlChar *prefix);
231 | XMLPUBFUN int
232 | xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader,
233 | int no);
234 | XMLPUBFUN int
235 | xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader,
236 | const xmlChar *name);
237 | XMLPUBFUN int
238 | xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader,
239 | const xmlChar *localName,
240 | const xmlChar *namespaceURI);
241 | XMLPUBFUN int
242 | xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
243 | XMLPUBFUN int
244 | xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
245 | XMLPUBFUN int
246 | xmlTextReaderMoveToElement (xmlTextReaderPtr reader);
247 | XMLPUBFUN int
248 | xmlTextReaderNormalization (xmlTextReaderPtr reader);
249 | XMLPUBFUN const xmlChar *
250 | xmlTextReaderConstEncoding (xmlTextReaderPtr reader);
251 |
252 | /*
253 | * Extensions
254 | */
255 | XMLPUBFUN int
256 | xmlTextReaderSetParserProp (xmlTextReaderPtr reader,
257 | int prop,
258 | int value);
259 | XMLPUBFUN int
260 | xmlTextReaderGetParserProp (xmlTextReaderPtr reader,
261 | int prop);
262 | XMLPUBFUN xmlNodePtr
263 | xmlTextReaderCurrentNode (xmlTextReaderPtr reader);
264 |
265 | XMLPUBFUN int
266 | xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader);
267 |
268 | XMLPUBFUN int
269 | xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader);
270 |
271 | XMLPUBFUN xmlNodePtr
272 | xmlTextReaderPreserve (xmlTextReaderPtr reader);
273 | #ifdef LIBXML_PATTERN_ENABLED
274 | XMLPUBFUN int
275 | xmlTextReaderPreservePattern(xmlTextReaderPtr reader,
276 | const xmlChar *pattern,
277 | const xmlChar **namespaces);
278 | #endif /* LIBXML_PATTERN_ENABLED */
279 | XMLPUBFUN xmlDocPtr
280 | xmlTextReaderCurrentDoc (xmlTextReaderPtr reader);
281 | XMLPUBFUN xmlNodePtr
282 | xmlTextReaderExpand (xmlTextReaderPtr reader);
283 | XMLPUBFUN int
284 | xmlTextReaderNext (xmlTextReaderPtr reader);
285 | XMLPUBFUN int
286 | xmlTextReaderNextSibling (xmlTextReaderPtr reader);
287 | XMLPUBFUN int
288 | xmlTextReaderIsValid (xmlTextReaderPtr reader);
289 | #ifdef LIBXML_SCHEMAS_ENABLED
290 | XMLPUBFUN int
291 | xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader,
292 | const char *rng);
293 | XMLPUBFUN int
294 | xmlTextReaderRelaxNGValidateCtxt(xmlTextReaderPtr reader,
295 | xmlRelaxNGValidCtxtPtr ctxt,
296 | int options);
297 |
298 | XMLPUBFUN int
299 | xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
300 | xmlRelaxNGPtr schema);
301 | XMLPUBFUN int
302 | xmlTextReaderSchemaValidate (xmlTextReaderPtr reader,
303 | const char *xsd);
304 | XMLPUBFUN int
305 | xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
306 | xmlSchemaValidCtxtPtr ctxt,
307 | int options);
308 | XMLPUBFUN int
309 | xmlTextReaderSetSchema (xmlTextReaderPtr reader,
310 | xmlSchemaPtr schema);
311 | #endif
312 | XMLPUBFUN const xmlChar *
313 | xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader);
314 | XMLPUBFUN int
315 | xmlTextReaderStandalone (xmlTextReaderPtr reader);
316 |
317 |
318 | /*
319 | * Index lookup
320 | */
321 | XMLPUBFUN long
322 | xmlTextReaderByteConsumed (xmlTextReaderPtr reader);
323 |
324 | /*
325 | * New more complete APIs for simpler creation and reuse of readers
326 | */
327 | XMLPUBFUN xmlTextReaderPtr
328 | xmlReaderWalker (xmlDocPtr doc);
329 | XMLPUBFUN xmlTextReaderPtr
330 | xmlReaderForDoc (const xmlChar * cur,
331 | const char *URL,
332 | const char *encoding,
333 | int options);
334 | XMLPUBFUN xmlTextReaderPtr
335 | xmlReaderForFile (const char *filename,
336 | const char *encoding,
337 | int options);
338 | XMLPUBFUN xmlTextReaderPtr
339 | xmlReaderForMemory (const char *buffer,
340 | int size,
341 | const char *URL,
342 | const char *encoding,
343 | int options);
344 | XMLPUBFUN xmlTextReaderPtr
345 | xmlReaderForFd (int fd,
346 | const char *URL,
347 | const char *encoding,
348 | int options);
349 | XMLPUBFUN xmlTextReaderPtr
350 | xmlReaderForIO (xmlInputReadCallback ioread,
351 | xmlInputCloseCallback ioclose,
352 | void *ioctx,
353 | const char *URL,
354 | const char *encoding,
355 | int options);
356 |
357 | XMLPUBFUN int
358 | xmlReaderNewWalker (xmlTextReaderPtr reader,
359 | xmlDocPtr doc);
360 | XMLPUBFUN int
361 | xmlReaderNewDoc (xmlTextReaderPtr reader,
362 | const xmlChar * cur,
363 | const char *URL,
364 | const char *encoding,
365 | int options);
366 | XMLPUBFUN int
367 | xmlReaderNewFile (xmlTextReaderPtr reader,
368 | const char *filename,
369 | const char *encoding,
370 | int options);
371 | XMLPUBFUN int
372 | xmlReaderNewMemory (xmlTextReaderPtr reader,
373 | const char *buffer,
374 | int size,
375 | const char *URL,
376 | const char *encoding,
377 | int options);
378 | XMLPUBFUN int
379 | xmlReaderNewFd (xmlTextReaderPtr reader,
380 | int fd,
381 | const char *URL,
382 | const char *encoding,
383 | int options);
384 | XMLPUBFUN int
385 | xmlReaderNewIO (xmlTextReaderPtr reader,
386 | xmlInputReadCallback ioread,
387 | xmlInputCloseCallback ioclose,
388 | void *ioctx,
389 | const char *URL,
390 | const char *encoding,
391 | int options);
392 | /*
393 | * Error handling extensions
394 | */
395 | typedef void * xmlTextReaderLocatorPtr;
396 |
397 | /**
398 | * xmlTextReaderErrorFunc:
399 | * @arg: the user argument
400 | * @msg: the message
401 | * @severity: the severity of the error
402 | * @locator: a locator indicating where the error occurred
403 | *
404 | * Signature of an error callback from a reader parser
405 | */
406 | typedef void (*xmlTextReaderErrorFunc)(void *arg,
407 | const char *msg,
408 | xmlParserSeverities severity,
409 | xmlTextReaderLocatorPtr locator);
410 | XMLPUBFUN int
411 | xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
412 | XMLPUBFUN xmlChar *
413 | xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
414 | XMLPUBFUN void
415 | xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
416 | xmlTextReaderErrorFunc f,
417 | void *arg);
418 | XMLPUBFUN void
419 | xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
420 | xmlStructuredErrorFunc f,
421 | void *arg);
422 | XMLPUBFUN void
423 | xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
424 | xmlTextReaderErrorFunc *f,
425 | void **arg);
426 |
427 | #endif /* LIBXML_READER_ENABLED */
428 |
429 | #ifdef __cplusplus
430 | }
431 | #endif
432 |
433 | #endif /* __XML_XMLREADER_H__ */
434 |
435 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__init__.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | pygments.lexers
3 | ~~~~~~~~~~~~~~~
4 |
5 | Pygments lexers.
6 |
7 | :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
8 | :license: BSD, see LICENSE for details.
9 | """
10 |
11 | import re
12 | import sys
13 | import types
14 | import fnmatch
15 | from os.path import basename
16 |
17 | from pip._vendor.pygments.lexers._mapping import LEXERS
18 | from pip._vendor.pygments.modeline import get_filetype_from_buffer
19 | from pip._vendor.pygments.plugin import find_plugin_lexers
20 | from pip._vendor.pygments.util import ClassNotFound, guess_decode
21 |
22 | COMPAT = {
23 | 'Python3Lexer': 'PythonLexer',
24 | 'Python3TracebackLexer': 'PythonTracebackLexer',
25 | 'LeanLexer': 'Lean3Lexer',
26 | }
27 |
28 | __all__ = ['get_lexer_by_name', 'get_lexer_for_filename', 'find_lexer_class',
29 | 'guess_lexer', 'load_lexer_from_file'] + list(LEXERS) + list(COMPAT)
30 |
31 | _lexer_cache = {}
32 | _pattern_cache = {}
33 |
34 |
35 | def _fn_matches(fn, glob):
36 | """Return whether the supplied file name fn matches pattern filename."""
37 | if glob not in _pattern_cache:
38 | pattern = _pattern_cache[glob] = re.compile(fnmatch.translate(glob))
39 | return pattern.match(fn)
40 | return _pattern_cache[glob].match(fn)
41 |
42 |
43 | def _load_lexers(module_name):
44 | """Load a lexer (and all others in the module too)."""
45 | mod = __import__(module_name, None, None, ['__all__'])
46 | for lexer_name in mod.__all__:
47 | cls = getattr(mod, lexer_name)
48 | _lexer_cache[cls.name] = cls
49 |
50 |
51 | def get_all_lexers(plugins=True):
52 | """Return a generator of tuples in the form ``(name, aliases,
53 | filenames, mimetypes)`` of all know lexers.
54 |
55 | If *plugins* is true (the default), plugin lexers supplied by entrypoints
56 | are also returned. Otherwise, only builtin ones are considered.
57 | """
58 | for item in LEXERS.values():
59 | yield item[1:]
60 | if plugins:
61 | for lexer in find_plugin_lexers():
62 | yield lexer.name, lexer.aliases, lexer.filenames, lexer.mimetypes
63 |
64 |
65 | def find_lexer_class(name):
66 | """
67 | Return the `Lexer` subclass that with the *name* attribute as given by
68 | the *name* argument.
69 | """
70 | if name in _lexer_cache:
71 | return _lexer_cache[name]
72 | # lookup builtin lexers
73 | for module_name, lname, aliases, _, _ in LEXERS.values():
74 | if name == lname:
75 | _load_lexers(module_name)
76 | return _lexer_cache[name]
77 | # continue with lexers from setuptools entrypoints
78 | for cls in find_plugin_lexers():
79 | if cls.name == name:
80 | return cls
81 |
82 |
83 | def find_lexer_class_by_name(_alias):
84 | """
85 | Return the `Lexer` subclass that has `alias` in its aliases list, without
86 | instantiating it.
87 |
88 | Like `get_lexer_by_name`, but does not instantiate the class.
89 |
90 | Will raise :exc:`pygments.util.ClassNotFound` if no lexer with that alias is
91 | found.
92 |
93 | .. versionadded:: 2.2
94 | """
95 | if not _alias:
96 | raise ClassNotFound(f'no lexer for alias {_alias!r} found')
97 | # lookup builtin lexers
98 | for module_name, name, aliases, _, _ in LEXERS.values():
99 | if _alias.lower() in aliases:
100 | if name not in _lexer_cache:
101 | _load_lexers(module_name)
102 | return _lexer_cache[name]
103 | # continue with lexers from setuptools entrypoints
104 | for cls in find_plugin_lexers():
105 | if _alias.lower() in cls.aliases:
106 | return cls
107 | raise ClassNotFound(f'no lexer for alias {_alias!r} found')
108 |
109 |
110 | def get_lexer_by_name(_alias, **options):
111 | """
112 | Return an instance of a `Lexer` subclass that has `alias` in its
113 | aliases list. The lexer is given the `options` at its
114 | instantiation.
115 |
116 | Will raise :exc:`pygments.util.ClassNotFound` if no lexer with that alias is
117 | found.
118 | """
119 | if not _alias:
120 | raise ClassNotFound(f'no lexer for alias {_alias!r} found')
121 |
122 | # lookup builtin lexers
123 | for module_name, name, aliases, _, _ in LEXERS.values():
124 | if _alias.lower() in aliases:
125 | if name not in _lexer_cache:
126 | _load_lexers(module_name)
127 | return _lexer_cache[name](**options)
128 | # continue with lexers from setuptools entrypoints
129 | for cls in find_plugin_lexers():
130 | if _alias.lower() in cls.aliases:
131 | return cls(**options)
132 | raise ClassNotFound(f'no lexer for alias {_alias!r} found')
133 |
134 |
135 | def load_lexer_from_file(filename, lexername="CustomLexer", **options):
136 | """Load a lexer from a file.
137 |
138 | This method expects a file located relative to the current working
139 | directory, which contains a Lexer class. By default, it expects the
140 | Lexer to be name CustomLexer; you can specify your own class name
141 | as the second argument to this function.
142 |
143 | Users should be very careful with the input, because this method
144 | is equivalent to running eval on the input file.
145 |
146 | Raises ClassNotFound if there are any problems importing the Lexer.
147 |
148 | .. versionadded:: 2.2
149 | """
150 | try:
151 | # This empty dict will contain the namespace for the exec'd file
152 | custom_namespace = {}
153 | with open(filename, 'rb') as f:
154 | exec(f.read(), custom_namespace)
155 | # Retrieve the class `lexername` from that namespace
156 | if lexername not in custom_namespace:
157 | raise ClassNotFound(f'no valid {lexername} class found in {filename}')
158 | lexer_class = custom_namespace[lexername]
159 | # And finally instantiate it with the options
160 | return lexer_class(**options)
161 | except OSError as err:
162 | raise ClassNotFound(f'cannot read {filename}: {err}')
163 | except ClassNotFound:
164 | raise
165 | except Exception as err:
166 | raise ClassNotFound(f'error when loading custom lexer: {err}')
167 |
168 |
169 | def find_lexer_class_for_filename(_fn, code=None):
170 | """Get a lexer for a filename.
171 |
172 | If multiple lexers match the filename pattern, use ``analyse_text()`` to
173 | figure out which one is more appropriate.
174 |
175 | Returns None if not found.
176 | """
177 | matches = []
178 | fn = basename(_fn)
179 | for modname, name, _, filenames, _ in LEXERS.values():
180 | for filename in filenames:
181 | if _fn_matches(fn, filename):
182 | if name not in _lexer_cache:
183 | _load_lexers(modname)
184 | matches.append((_lexer_cache[name], filename))
185 | for cls in find_plugin_lexers():
186 | for filename in cls.filenames:
187 | if _fn_matches(fn, filename):
188 | matches.append((cls, filename))
189 |
190 | if isinstance(code, bytes):
191 | # decode it, since all analyse_text functions expect unicode
192 | code = guess_decode(code)
193 |
194 | def get_rating(info):
195 | cls, filename = info
196 | # explicit patterns get a bonus
197 | bonus = '*' not in filename and 0.5 or 0
198 | # The class _always_ defines analyse_text because it's included in
199 | # the Lexer class. The default implementation returns None which
200 | # gets turned into 0.0. Run scripts/detect_missing_analyse_text.py
201 | # to find lexers which need it overridden.
202 | if code:
203 | return cls.analyse_text(code) + bonus, cls.__name__
204 | return cls.priority + bonus, cls.__name__
205 |
206 | if matches:
207 | matches.sort(key=get_rating)
208 | # print "Possible lexers, after sort:", matches
209 | return matches[-1][0]
210 |
211 |
212 | def get_lexer_for_filename(_fn, code=None, **options):
213 | """Get a lexer for a filename.
214 |
215 | Return a `Lexer` subclass instance that has a filename pattern
216 | matching `fn`. The lexer is given the `options` at its
217 | instantiation.
218 |
219 | Raise :exc:`pygments.util.ClassNotFound` if no lexer for that filename
220 | is found.
221 |
222 | If multiple lexers match the filename pattern, use their ``analyse_text()``
223 | methods to figure out which one is more appropriate.
224 | """
225 | res = find_lexer_class_for_filename(_fn, code)
226 | if not res:
227 | raise ClassNotFound(f'no lexer for filename {_fn!r} found')
228 | return res(**options)
229 |
230 |
231 | def get_lexer_for_mimetype(_mime, **options):
232 | """
233 | Return a `Lexer` subclass instance that has `mime` in its mimetype
234 | list. The lexer is given the `options` at its instantiation.
235 |
236 | Will raise :exc:`pygments.util.ClassNotFound` if not lexer for that mimetype
237 | is found.
238 | """
239 | for modname, name, _, _, mimetypes in LEXERS.values():
240 | if _mime in mimetypes:
241 | if name not in _lexer_cache:
242 | _load_lexers(modname)
243 | return _lexer_cache[name](**options)
244 | for cls in find_plugin_lexers():
245 | if _mime in cls.mimetypes:
246 | return cls(**options)
247 | raise ClassNotFound(f'no lexer for mimetype {_mime!r} found')
248 |
249 |
250 | def _iter_lexerclasses(plugins=True):
251 | """Return an iterator over all lexer classes."""
252 | for key in sorted(LEXERS):
253 | module_name, name = LEXERS[key][:2]
254 | if name not in _lexer_cache:
255 | _load_lexers(module_name)
256 | yield _lexer_cache[name]
257 | if plugins:
258 | yield from find_plugin_lexers()
259 |
260 |
261 | def guess_lexer_for_filename(_fn, _text, **options):
262 | """
263 | As :func:`guess_lexer()`, but only lexers which have a pattern in `filenames`
264 | or `alias_filenames` that matches `filename` are taken into consideration.
265 |
266 | :exc:`pygments.util.ClassNotFound` is raised if no lexer thinks it can
267 | handle the content.
268 | """
269 | fn = basename(_fn)
270 | primary = {}
271 | matching_lexers = set()
272 | for lexer in _iter_lexerclasses():
273 | for filename in lexer.filenames:
274 | if _fn_matches(fn, filename):
275 | matching_lexers.add(lexer)
276 | primary[lexer] = True
277 | for filename in lexer.alias_filenames:
278 | if _fn_matches(fn, filename):
279 | matching_lexers.add(lexer)
280 | primary[lexer] = False
281 | if not matching_lexers:
282 | raise ClassNotFound(f'no lexer for filename {fn!r} found')
283 | if len(matching_lexers) == 1:
284 | return matching_lexers.pop()(**options)
285 | result = []
286 | for lexer in matching_lexers:
287 | rv = lexer.analyse_text(_text)
288 | if rv == 1.0:
289 | return lexer(**options)
290 | result.append((rv, lexer))
291 |
292 | def type_sort(t):
293 | # sort by:
294 | # - analyse score
295 | # - is primary filename pattern?
296 | # - priority
297 | # - last resort: class name
298 | return (t[0], primary[t[1]], t[1].priority, t[1].__name__)
299 | result.sort(key=type_sort)
300 |
301 | return result[-1][1](**options)
302 |
303 |
304 | def guess_lexer(_text, **options):
305 | """
306 | Return a `Lexer` subclass instance that's guessed from the text in
307 | `text`. For that, the :meth:`.analyse_text()` method of every known lexer
308 | class is called with the text as argument, and the lexer which returned the
309 | highest value will be instantiated and returned.
310 |
311 | :exc:`pygments.util.ClassNotFound` is raised if no lexer thinks it can
312 | handle the content.
313 | """
314 |
315 | if not isinstance(_text, str):
316 | inencoding = options.get('inencoding', options.get('encoding'))
317 | if inencoding:
318 | _text = _text.decode(inencoding or 'utf8')
319 | else:
320 | _text, _ = guess_decode(_text)
321 |
322 | # try to get a vim modeline first
323 | ft = get_filetype_from_buffer(_text)
324 |
325 | if ft is not None:
326 | try:
327 | return get_lexer_by_name(ft, **options)
328 | except ClassNotFound:
329 | pass
330 |
331 | best_lexer = [0.0, None]
332 | for lexer in _iter_lexerclasses():
333 | rv = lexer.analyse_text(_text)
334 | if rv == 1.0:
335 | return lexer(**options)
336 | if rv > best_lexer[0]:
337 | best_lexer[:] = (rv, lexer)
338 | if not best_lexer[0] or best_lexer[1] is None:
339 | raise ClassNotFound('no lexer matching the text found')
340 | return best_lexer[1](**options)
341 |
342 |
343 | class _automodule(types.ModuleType):
344 | """Automatically import lexers."""
345 |
346 | def __getattr__(self, name):
347 | info = LEXERS.get(name)
348 | if info:
349 | _load_lexers(info[0])
350 | cls = _lexer_cache[info[1]]
351 | setattr(self, name, cls)
352 | return cls
353 | if name in COMPAT:
354 | return getattr(self, COMPAT[name])
355 | raise AttributeError(name)
356 |
357 |
358 | oldmod = sys.modules[__name__]
359 | newmod = _automodule(__name__)
360 | newmod.__dict__.update(oldmod.__dict__)
361 | sys.modules[__name__] = newmod
362 | del newmod.newmod, newmod.oldmod, newmod.sys, newmod.types
363 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/cli/req_command.py:
--------------------------------------------------------------------------------
```python
1 | """Contains the RequirementCommand base class.
2 |
3 | This class is in a separate module so the commands that do not always
4 | need PackageFinder capability don't unnecessarily import the
5 | PackageFinder machinery and all its vendored dependencies, etc.
6 | """
7 |
8 | import logging
9 | from functools import partial
10 | from optparse import Values
11 | from typing import Any, List, Optional, Tuple
12 |
13 | from pip._internal.cache import WheelCache
14 | from pip._internal.cli import cmdoptions
15 | from pip._internal.cli.index_command import IndexGroupCommand
16 | from pip._internal.cli.index_command import SessionCommandMixin as SessionCommandMixin
17 | from pip._internal.exceptions import CommandError, PreviousBuildDirError
18 | from pip._internal.index.collector import LinkCollector
19 | from pip._internal.index.package_finder import PackageFinder
20 | from pip._internal.models.selection_prefs import SelectionPreferences
21 | from pip._internal.models.target_python import TargetPython
22 | from pip._internal.network.session import PipSession
23 | from pip._internal.operations.build.build_tracker import BuildTracker
24 | from pip._internal.operations.prepare import RequirementPreparer
25 | from pip._internal.req.constructors import (
26 | install_req_from_editable,
27 | install_req_from_line,
28 | install_req_from_parsed_requirement,
29 | install_req_from_req_string,
30 | )
31 | from pip._internal.req.req_file import parse_requirements
32 | from pip._internal.req.req_install import InstallRequirement
33 | from pip._internal.resolution.base import BaseResolver
34 | from pip._internal.utils.temp_dir import (
35 | TempDirectory,
36 | TempDirectoryTypeRegistry,
37 | tempdir_kinds,
38 | )
39 |
40 | logger = logging.getLogger(__name__)
41 |
42 |
43 | KEEPABLE_TEMPDIR_TYPES = [
44 | tempdir_kinds.BUILD_ENV,
45 | tempdir_kinds.EPHEM_WHEEL_CACHE,
46 | tempdir_kinds.REQ_BUILD,
47 | ]
48 |
49 |
50 | def with_cleanup(func: Any) -> Any:
51 | """Decorator for common logic related to managing temporary
52 | directories.
53 | """
54 |
55 | def configure_tempdir_registry(registry: TempDirectoryTypeRegistry) -> None:
56 | for t in KEEPABLE_TEMPDIR_TYPES:
57 | registry.set_delete(t, False)
58 |
59 | def wrapper(
60 | self: RequirementCommand, options: Values, args: List[Any]
61 | ) -> Optional[int]:
62 | assert self.tempdir_registry is not None
63 | if options.no_clean:
64 | configure_tempdir_registry(self.tempdir_registry)
65 |
66 | try:
67 | return func(self, options, args)
68 | except PreviousBuildDirError:
69 | # This kind of conflict can occur when the user passes an explicit
70 | # build directory with a pre-existing folder. In that case we do
71 | # not want to accidentally remove it.
72 | configure_tempdir_registry(self.tempdir_registry)
73 | raise
74 |
75 | return wrapper
76 |
77 |
78 | class RequirementCommand(IndexGroupCommand):
79 | def __init__(self, *args: Any, **kw: Any) -> None:
80 | super().__init__(*args, **kw)
81 |
82 | self.cmd_opts.add_option(cmdoptions.no_clean())
83 |
84 | @staticmethod
85 | def determine_resolver_variant(options: Values) -> str:
86 | """Determines which resolver should be used, based on the given options."""
87 | if "legacy-resolver" in options.deprecated_features_enabled:
88 | return "legacy"
89 |
90 | return "resolvelib"
91 |
92 | @classmethod
93 | def make_requirement_preparer(
94 | cls,
95 | temp_build_dir: TempDirectory,
96 | options: Values,
97 | build_tracker: BuildTracker,
98 | session: PipSession,
99 | finder: PackageFinder,
100 | use_user_site: bool,
101 | download_dir: Optional[str] = None,
102 | verbosity: int = 0,
103 | ) -> RequirementPreparer:
104 | """
105 | Create a RequirementPreparer instance for the given parameters.
106 | """
107 | temp_build_dir_path = temp_build_dir.path
108 | assert temp_build_dir_path is not None
109 | legacy_resolver = False
110 |
111 | resolver_variant = cls.determine_resolver_variant(options)
112 | if resolver_variant == "resolvelib":
113 | lazy_wheel = "fast-deps" in options.features_enabled
114 | if lazy_wheel:
115 | logger.warning(
116 | "pip is using lazily downloaded wheels using HTTP "
117 | "range requests to obtain dependency information. "
118 | "This experimental feature is enabled through "
119 | "--use-feature=fast-deps and it is not ready for "
120 | "production."
121 | )
122 | else:
123 | legacy_resolver = True
124 | lazy_wheel = False
125 | if "fast-deps" in options.features_enabled:
126 | logger.warning(
127 | "fast-deps has no effect when used with the legacy resolver."
128 | )
129 |
130 | return RequirementPreparer(
131 | build_dir=temp_build_dir_path,
132 | src_dir=options.src_dir,
133 | download_dir=download_dir,
134 | build_isolation=options.build_isolation,
135 | check_build_deps=options.check_build_deps,
136 | build_tracker=build_tracker,
137 | session=session,
138 | progress_bar=options.progress_bar,
139 | finder=finder,
140 | require_hashes=options.require_hashes,
141 | use_user_site=use_user_site,
142 | lazy_wheel=lazy_wheel,
143 | verbosity=verbosity,
144 | legacy_resolver=legacy_resolver,
145 | )
146 |
147 | @classmethod
148 | def make_resolver(
149 | cls,
150 | preparer: RequirementPreparer,
151 | finder: PackageFinder,
152 | options: Values,
153 | wheel_cache: Optional[WheelCache] = None,
154 | use_user_site: bool = False,
155 | ignore_installed: bool = True,
156 | ignore_requires_python: bool = False,
157 | force_reinstall: bool = False,
158 | upgrade_strategy: str = "to-satisfy-only",
159 | use_pep517: Optional[bool] = None,
160 | py_version_info: Optional[Tuple[int, ...]] = None,
161 | ) -> BaseResolver:
162 | """
163 | Create a Resolver instance for the given parameters.
164 | """
165 | make_install_req = partial(
166 | install_req_from_req_string,
167 | isolated=options.isolated_mode,
168 | use_pep517=use_pep517,
169 | )
170 | resolver_variant = cls.determine_resolver_variant(options)
171 | # The long import name and duplicated invocation is needed to convince
172 | # Mypy into correctly typechecking. Otherwise it would complain the
173 | # "Resolver" class being redefined.
174 | if resolver_variant == "resolvelib":
175 | import pip._internal.resolution.resolvelib.resolver
176 |
177 | return pip._internal.resolution.resolvelib.resolver.Resolver(
178 | preparer=preparer,
179 | finder=finder,
180 | wheel_cache=wheel_cache,
181 | make_install_req=make_install_req,
182 | use_user_site=use_user_site,
183 | ignore_dependencies=options.ignore_dependencies,
184 | ignore_installed=ignore_installed,
185 | ignore_requires_python=ignore_requires_python,
186 | force_reinstall=force_reinstall,
187 | upgrade_strategy=upgrade_strategy,
188 | py_version_info=py_version_info,
189 | )
190 | import pip._internal.resolution.legacy.resolver
191 |
192 | return pip._internal.resolution.legacy.resolver.Resolver(
193 | preparer=preparer,
194 | finder=finder,
195 | wheel_cache=wheel_cache,
196 | make_install_req=make_install_req,
197 | use_user_site=use_user_site,
198 | ignore_dependencies=options.ignore_dependencies,
199 | ignore_installed=ignore_installed,
200 | ignore_requires_python=ignore_requires_python,
201 | force_reinstall=force_reinstall,
202 | upgrade_strategy=upgrade_strategy,
203 | py_version_info=py_version_info,
204 | )
205 |
206 | def get_requirements(
207 | self,
208 | args: List[str],
209 | options: Values,
210 | finder: PackageFinder,
211 | session: PipSession,
212 | ) -> List[InstallRequirement]:
213 | """
214 | Parse command-line arguments into the corresponding requirements.
215 | """
216 | requirements: List[InstallRequirement] = []
217 | for filename in options.constraints:
218 | for parsed_req in parse_requirements(
219 | filename,
220 | constraint=True,
221 | finder=finder,
222 | options=options,
223 | session=session,
224 | ):
225 | req_to_add = install_req_from_parsed_requirement(
226 | parsed_req,
227 | isolated=options.isolated_mode,
228 | user_supplied=False,
229 | )
230 | requirements.append(req_to_add)
231 |
232 | for req in args:
233 | req_to_add = install_req_from_line(
234 | req,
235 | comes_from=None,
236 | isolated=options.isolated_mode,
237 | use_pep517=options.use_pep517,
238 | user_supplied=True,
239 | config_settings=getattr(options, "config_settings", None),
240 | )
241 | requirements.append(req_to_add)
242 |
243 | for req in options.editables:
244 | req_to_add = install_req_from_editable(
245 | req,
246 | user_supplied=True,
247 | isolated=options.isolated_mode,
248 | use_pep517=options.use_pep517,
249 | config_settings=getattr(options, "config_settings", None),
250 | )
251 | requirements.append(req_to_add)
252 |
253 | # NOTE: options.require_hashes may be set if --require-hashes is True
254 | for filename in options.requirements:
255 | for parsed_req in parse_requirements(
256 | filename, finder=finder, options=options, session=session
257 | ):
258 | req_to_add = install_req_from_parsed_requirement(
259 | parsed_req,
260 | isolated=options.isolated_mode,
261 | use_pep517=options.use_pep517,
262 | user_supplied=True,
263 | config_settings=(
264 | parsed_req.options.get("config_settings")
265 | if parsed_req.options
266 | else None
267 | ),
268 | )
269 | requirements.append(req_to_add)
270 |
271 | # If any requirement has hash options, enable hash checking.
272 | if any(req.has_hash_options for req in requirements):
273 | options.require_hashes = True
274 |
275 | if not (args or options.editables or options.requirements):
276 | opts = {"name": self.name}
277 | if options.find_links:
278 | raise CommandError(
279 | "You must give at least one requirement to {name} "
280 | '(maybe you meant "pip {name} {links}"?)'.format(
281 | **dict(opts, links=" ".join(options.find_links))
282 | )
283 | )
284 | else:
285 | raise CommandError(
286 | "You must give at least one requirement to {name} "
287 | '(see "pip help {name}")'.format(**opts)
288 | )
289 |
290 | return requirements
291 |
292 | @staticmethod
293 | def trace_basic_info(finder: PackageFinder) -> None:
294 | """
295 | Trace basic information about the provided objects.
296 | """
297 | # Display where finder is looking for packages
298 | search_scope = finder.search_scope
299 | locations = search_scope.get_formatted_locations()
300 | if locations:
301 | logger.info(locations)
302 |
303 | def _build_package_finder(
304 | self,
305 | options: Values,
306 | session: PipSession,
307 | target_python: Optional[TargetPython] = None,
308 | ignore_requires_python: Optional[bool] = None,
309 | ) -> PackageFinder:
310 | """
311 | Create a package finder appropriate to this requirement command.
312 |
313 | :param ignore_requires_python: Whether to ignore incompatible
314 | "Requires-Python" values in links. Defaults to False.
315 | """
316 | link_collector = LinkCollector.create(session, options=options)
317 | selection_prefs = SelectionPreferences(
318 | allow_yanked=True,
319 | format_control=options.format_control,
320 | allow_all_prereleases=options.pre,
321 | prefer_binary=options.prefer_binary,
322 | ignore_requires_python=ignore_requires_python,
323 | )
324 |
325 | return PackageFinder.create(
326 | link_collector=link_collector,
327 | selection_prefs=selection_prefs,
328 | target_python=target_python,
329 | )
330 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxml/xmlIO.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: interface for the I/O interfaces used by the parser
3 | * Description: interface for the I/O interfaces used by the parser
4 | *
5 | * Copy: See Copyright for the status of this software.
6 | *
7 | * Author: Daniel Veillard
8 | */
9 |
10 | #ifndef __XML_IO_H__
11 | #define __XML_IO_H__
12 |
13 | #include <stdio.h>
14 | #include <libxml/xmlversion.h>
15 | #include <libxml/encoding.h>
16 | #define XML_TREE_INTERNALS
17 | #include <libxml/tree.h>
18 | #undef XML_TREE_INTERNALS
19 |
20 | #ifdef __cplusplus
21 | extern "C" {
22 | #endif
23 |
24 | /*
25 | * Those are the functions and datatypes for the parser input
26 | * I/O structures.
27 | */
28 |
29 | /**
30 | * xmlInputMatchCallback:
31 | * @filename: the filename or URI
32 | *
33 | * Callback used in the I/O Input API to detect if the current handler
34 | * can provide input functionality for this resource.
35 | *
36 | * Returns 1 if yes and 0 if another Input module should be used
37 | */
38 | typedef int (*xmlInputMatchCallback) (char const *filename);
39 | /**
40 | * xmlInputOpenCallback:
41 | * @filename: the filename or URI
42 | *
43 | * Callback used in the I/O Input API to open the resource
44 | *
45 | * Returns an Input context or NULL in case or error
46 | */
47 | typedef void * (*xmlInputOpenCallback) (char const *filename);
48 | /**
49 | * xmlInputReadCallback:
50 | * @context: an Input context
51 | * @buffer: the buffer to store data read
52 | * @len: the length of the buffer in bytes
53 | *
54 | * Callback used in the I/O Input API to read the resource
55 | *
56 | * Returns the number of bytes read or -1 in case of error
57 | */
58 | typedef int (*xmlInputReadCallback) (void * context, char * buffer, int len);
59 | /**
60 | * xmlInputCloseCallback:
61 | * @context: an Input context
62 | *
63 | * Callback used in the I/O Input API to close the resource
64 | *
65 | * Returns 0 or -1 in case of error
66 | */
67 | typedef int (*xmlInputCloseCallback) (void * context);
68 |
69 | #ifdef LIBXML_OUTPUT_ENABLED
70 | /*
71 | * Those are the functions and datatypes for the library output
72 | * I/O structures.
73 | */
74 |
75 | /**
76 | * xmlOutputMatchCallback:
77 | * @filename: the filename or URI
78 | *
79 | * Callback used in the I/O Output API to detect if the current handler
80 | * can provide output functionality for this resource.
81 | *
82 | * Returns 1 if yes and 0 if another Output module should be used
83 | */
84 | typedef int (*xmlOutputMatchCallback) (char const *filename);
85 | /**
86 | * xmlOutputOpenCallback:
87 | * @filename: the filename or URI
88 | *
89 | * Callback used in the I/O Output API to open the resource
90 | *
91 | * Returns an Output context or NULL in case or error
92 | */
93 | typedef void * (*xmlOutputOpenCallback) (char const *filename);
94 | /**
95 | * xmlOutputWriteCallback:
96 | * @context: an Output context
97 | * @buffer: the buffer of data to write
98 | * @len: the length of the buffer in bytes
99 | *
100 | * Callback used in the I/O Output API to write to the resource
101 | *
102 | * Returns the number of bytes written or -1 in case of error
103 | */
104 | typedef int (*xmlOutputWriteCallback) (void * context, const char * buffer,
105 | int len);
106 | /**
107 | * xmlOutputCloseCallback:
108 | * @context: an Output context
109 | *
110 | * Callback used in the I/O Output API to close the resource
111 | *
112 | * Returns 0 or -1 in case of error
113 | */
114 | typedef int (*xmlOutputCloseCallback) (void * context);
115 | #endif /* LIBXML_OUTPUT_ENABLED */
116 |
117 | /**
118 | * xmlParserInputBufferCreateFilenameFunc:
119 | * @URI: the URI to read from
120 | * @enc: the requested source encoding
121 | *
122 | * Signature for the function doing the lookup for a suitable input method
123 | * corresponding to an URI.
124 | *
125 | * Returns the new xmlParserInputBufferPtr in case of success or NULL if no
126 | * method was found.
127 | */
128 | typedef xmlParserInputBufferPtr
129 | (*xmlParserInputBufferCreateFilenameFunc)(const char *URI, xmlCharEncoding enc);
130 |
131 | /**
132 | * xmlOutputBufferCreateFilenameFunc:
133 | * @URI: the URI to write to
134 | * @enc: the requested target encoding
135 | *
136 | * Signature for the function doing the lookup for a suitable output method
137 | * corresponding to an URI.
138 | *
139 | * Returns the new xmlOutputBufferPtr in case of success or NULL if no
140 | * method was found.
141 | */
142 | typedef xmlOutputBufferPtr
143 | (*xmlOutputBufferCreateFilenameFunc)(const char *URI,
144 | xmlCharEncodingHandlerPtr encoder, int compression);
145 |
146 | struct _xmlParserInputBuffer {
147 | void* context;
148 | xmlInputReadCallback readcallback;
149 | xmlInputCloseCallback closecallback;
150 |
151 | xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
152 |
153 | xmlBufPtr buffer; /* Local buffer encoded in UTF-8 */
154 | xmlBufPtr raw; /* if encoder != NULL buffer for raw input */
155 | int compressed; /* -1=unknown, 0=not compressed, 1=compressed */
156 | int error;
157 | unsigned long rawconsumed;/* amount consumed from raw */
158 | };
159 |
160 |
161 | #ifdef LIBXML_OUTPUT_ENABLED
162 | struct _xmlOutputBuffer {
163 | void* context;
164 | xmlOutputWriteCallback writecallback;
165 | xmlOutputCloseCallback closecallback;
166 |
167 | xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
168 |
169 | xmlBufPtr buffer; /* Local buffer encoded in UTF-8 or ISOLatin */
170 | xmlBufPtr conv; /* if encoder != NULL buffer for output */
171 | int written; /* total number of byte written */
172 | int error;
173 | };
174 | #endif /* LIBXML_OUTPUT_ENABLED */
175 |
176 | /** DOC_DISABLE */
177 | #define XML_GLOBALS_IO \
178 | XML_OP(xmlParserInputBufferCreateFilenameValue, \
179 | xmlParserInputBufferCreateFilenameFunc, XML_DEPRECATED) \
180 | XML_OP(xmlOutputBufferCreateFilenameValue, \
181 | xmlOutputBufferCreateFilenameFunc, XML_DEPRECATED)
182 |
183 | #define XML_OP XML_DECLARE_GLOBAL
184 | XML_GLOBALS_IO
185 | #undef XML_OP
186 |
187 | #if defined(LIBXML_THREAD_ENABLED) && !defined(XML_GLOBALS_NO_REDEFINITION)
188 | #define xmlParserInputBufferCreateFilenameValue \
189 | XML_GLOBAL_MACRO(xmlParserInputBufferCreateFilenameValue)
190 | #define xmlOutputBufferCreateFilenameValue \
191 | XML_GLOBAL_MACRO(xmlOutputBufferCreateFilenameValue)
192 | #endif
193 | /** DOC_ENABLE */
194 |
195 | /*
196 | * Interfaces for input
197 | */
198 | XMLPUBFUN void
199 | xmlCleanupInputCallbacks (void);
200 |
201 | XMLPUBFUN int
202 | xmlPopInputCallbacks (void);
203 |
204 | XMLPUBFUN void
205 | xmlRegisterDefaultInputCallbacks (void);
206 | XMLPUBFUN xmlParserInputBufferPtr
207 | xmlAllocParserInputBuffer (xmlCharEncoding enc);
208 |
209 | XMLPUBFUN xmlParserInputBufferPtr
210 | xmlParserInputBufferCreateFilename (const char *URI,
211 | xmlCharEncoding enc);
212 | XMLPUBFUN xmlParserInputBufferPtr
213 | xmlParserInputBufferCreateFile (FILE *file,
214 | xmlCharEncoding enc);
215 | XMLPUBFUN xmlParserInputBufferPtr
216 | xmlParserInputBufferCreateFd (int fd,
217 | xmlCharEncoding enc);
218 | XMLPUBFUN xmlParserInputBufferPtr
219 | xmlParserInputBufferCreateMem (const char *mem, int size,
220 | xmlCharEncoding enc);
221 | XMLPUBFUN xmlParserInputBufferPtr
222 | xmlParserInputBufferCreateStatic (const char *mem, int size,
223 | xmlCharEncoding enc);
224 | XMLPUBFUN xmlParserInputBufferPtr
225 | xmlParserInputBufferCreateIO (xmlInputReadCallback ioread,
226 | xmlInputCloseCallback ioclose,
227 | void *ioctx,
228 | xmlCharEncoding enc);
229 | XMLPUBFUN int
230 | xmlParserInputBufferRead (xmlParserInputBufferPtr in,
231 | int len);
232 | XMLPUBFUN int
233 | xmlParserInputBufferGrow (xmlParserInputBufferPtr in,
234 | int len);
235 | XMLPUBFUN int
236 | xmlParserInputBufferPush (xmlParserInputBufferPtr in,
237 | int len,
238 | const char *buf);
239 | XMLPUBFUN void
240 | xmlFreeParserInputBuffer (xmlParserInputBufferPtr in);
241 | XMLPUBFUN char *
242 | xmlParserGetDirectory (const char *filename);
243 |
244 | XMLPUBFUN int
245 | xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc,
246 | xmlInputOpenCallback openFunc,
247 | xmlInputReadCallback readFunc,
248 | xmlInputCloseCallback closeFunc);
249 |
250 | xmlParserInputBufferPtr
251 | __xmlParserInputBufferCreateFilename(const char *URI,
252 | xmlCharEncoding enc);
253 |
254 | #ifdef LIBXML_OUTPUT_ENABLED
255 | /*
256 | * Interfaces for output
257 | */
258 | XMLPUBFUN void
259 | xmlCleanupOutputCallbacks (void);
260 | XMLPUBFUN int
261 | xmlPopOutputCallbacks (void);
262 | XMLPUBFUN void
263 | xmlRegisterDefaultOutputCallbacks(void);
264 | XMLPUBFUN xmlOutputBufferPtr
265 | xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder);
266 |
267 | XMLPUBFUN xmlOutputBufferPtr
268 | xmlOutputBufferCreateFilename (const char *URI,
269 | xmlCharEncodingHandlerPtr encoder,
270 | int compression);
271 |
272 | XMLPUBFUN xmlOutputBufferPtr
273 | xmlOutputBufferCreateFile (FILE *file,
274 | xmlCharEncodingHandlerPtr encoder);
275 |
276 | XMLPUBFUN xmlOutputBufferPtr
277 | xmlOutputBufferCreateBuffer (xmlBufferPtr buffer,
278 | xmlCharEncodingHandlerPtr encoder);
279 |
280 | XMLPUBFUN xmlOutputBufferPtr
281 | xmlOutputBufferCreateFd (int fd,
282 | xmlCharEncodingHandlerPtr encoder);
283 |
284 | XMLPUBFUN xmlOutputBufferPtr
285 | xmlOutputBufferCreateIO (xmlOutputWriteCallback iowrite,
286 | xmlOutputCloseCallback ioclose,
287 | void *ioctx,
288 | xmlCharEncodingHandlerPtr encoder);
289 |
290 | /* Couple of APIs to get the output without digging into the buffers */
291 | XMLPUBFUN const xmlChar *
292 | xmlOutputBufferGetContent (xmlOutputBufferPtr out);
293 | XMLPUBFUN size_t
294 | xmlOutputBufferGetSize (xmlOutputBufferPtr out);
295 |
296 | XMLPUBFUN int
297 | xmlOutputBufferWrite (xmlOutputBufferPtr out,
298 | int len,
299 | const char *buf);
300 | XMLPUBFUN int
301 | xmlOutputBufferWriteString (xmlOutputBufferPtr out,
302 | const char *str);
303 | XMLPUBFUN int
304 | xmlOutputBufferWriteEscape (xmlOutputBufferPtr out,
305 | const xmlChar *str,
306 | xmlCharEncodingOutputFunc escaping);
307 |
308 | XMLPUBFUN int
309 | xmlOutputBufferFlush (xmlOutputBufferPtr out);
310 | XMLPUBFUN int
311 | xmlOutputBufferClose (xmlOutputBufferPtr out);
312 |
313 | XMLPUBFUN int
314 | xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc,
315 | xmlOutputOpenCallback openFunc,
316 | xmlOutputWriteCallback writeFunc,
317 | xmlOutputCloseCallback closeFunc);
318 |
319 | xmlOutputBufferPtr
320 | __xmlOutputBufferCreateFilename(const char *URI,
321 | xmlCharEncodingHandlerPtr encoder,
322 | int compression);
323 |
324 | #ifdef LIBXML_HTTP_ENABLED
325 | /* This function only exists if HTTP support built into the library */
326 | XMLPUBFUN void
327 | xmlRegisterHTTPPostCallbacks (void );
328 | #endif /* LIBXML_HTTP_ENABLED */
329 |
330 | #endif /* LIBXML_OUTPUT_ENABLED */
331 |
332 | XMLPUBFUN xmlParserInputPtr
333 | xmlCheckHTTPInput (xmlParserCtxtPtr ctxt,
334 | xmlParserInputPtr ret);
335 |
336 | /*
337 | * A predefined entity loader disabling network accesses
338 | */
339 | XMLPUBFUN xmlParserInputPtr
340 | xmlNoNetExternalEntityLoader (const char *URL,
341 | const char *ID,
342 | xmlParserCtxtPtr ctxt);
343 |
344 | /*
345 | * xmlNormalizeWindowsPath is obsolete, don't use it.
346 | * Check xmlCanonicPath in uri.h for a better alternative.
347 | */
348 | XMLPUBFUN xmlChar *
349 | xmlNormalizeWindowsPath (const xmlChar *path);
350 |
351 | XMLPUBFUN int
352 | xmlCheckFilename (const char *path);
353 | /**
354 | * Default 'file://' protocol callbacks
355 | */
356 | XMLPUBFUN int
357 | xmlFileMatch (const char *filename);
358 | XMLPUBFUN void *
359 | xmlFileOpen (const char *filename);
360 | XMLPUBFUN int
361 | xmlFileRead (void * context,
362 | char * buffer,
363 | int len);
364 | XMLPUBFUN int
365 | xmlFileClose (void * context);
366 |
367 | /**
368 | * Default 'http://' protocol callbacks
369 | */
370 | #ifdef LIBXML_HTTP_ENABLED
371 | XMLPUBFUN int
372 | xmlIOHTTPMatch (const char *filename);
373 | XMLPUBFUN void *
374 | xmlIOHTTPOpen (const char *filename);
375 | #ifdef LIBXML_OUTPUT_ENABLED
376 | XMLPUBFUN void *
377 | xmlIOHTTPOpenW (const char * post_uri,
378 | int compression );
379 | #endif /* LIBXML_OUTPUT_ENABLED */
380 | XMLPUBFUN int
381 | xmlIOHTTPRead (void * context,
382 | char * buffer,
383 | int len);
384 | XMLPUBFUN int
385 | xmlIOHTTPClose (void * context);
386 | #endif /* LIBXML_HTTP_ENABLED */
387 |
388 | /**
389 | * Default 'ftp://' protocol callbacks
390 | */
391 | #if defined(LIBXML_FTP_ENABLED)
392 | XMLPUBFUN int
393 | xmlIOFTPMatch (const char *filename);
394 | XMLPUBFUN void *
395 | xmlIOFTPOpen (const char *filename);
396 | XMLPUBFUN int
397 | xmlIOFTPRead (void * context,
398 | char * buffer,
399 | int len);
400 | XMLPUBFUN int
401 | xmlIOFTPClose (void * context);
402 | #endif /* defined(LIBXML_FTP_ENABLED) */
403 |
404 | XMLPUBFUN xmlParserInputBufferCreateFilenameFunc
405 | xmlParserInputBufferCreateFilenameDefault(
406 | xmlParserInputBufferCreateFilenameFunc func);
407 | XMLPUBFUN xmlOutputBufferCreateFilenameFunc
408 | xmlOutputBufferCreateFilenameDefault(
409 | xmlOutputBufferCreateFilenameFunc func);
410 | XMLPUBFUN xmlOutputBufferCreateFilenameFunc
411 | xmlThrDefOutputBufferCreateFilenameDefault(
412 | xmlOutputBufferCreateFilenameFunc func);
413 | XMLPUBFUN xmlParserInputBufferCreateFilenameFunc
414 | xmlThrDefParserInputBufferCreateFilenameDefault(
415 | xmlParserInputBufferCreateFilenameFunc func);
416 |
417 | #ifdef __cplusplus
418 | }
419 | #endif
420 |
421 | #endif /* __XML_IO_H__ */
422 |
```