This is page 6 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/uri.h:
--------------------------------------------------------------------------------
```
1 | /**
2 | * Summary: library of generic URI related routines
3 | * Description: library of generic URI related routines
4 | * Implements RFC 2396
5 | *
6 | * Copy: See Copyright for the status of this software.
7 | *
8 | * Author: Daniel Veillard
9 | */
10 |
11 | #ifndef __XML_URI_H__
12 | #define __XML_URI_H__
13 |
14 | #include <stdio.h>
15 | #include <libxml/xmlversion.h>
16 | #include <libxml/xmlstring.h>
17 |
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 |
22 | /**
23 | * xmlURI:
24 | *
25 | * A parsed URI reference. This is a struct containing the various fields
26 | * as described in RFC 2396 but separated for further processing.
27 | *
28 | * Note: query is a deprecated field which is incorrectly unescaped.
29 | * query_raw takes precedence over query if the former is set.
30 | * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00127
31 | */
32 | typedef struct _xmlURI xmlURI;
33 | typedef xmlURI *xmlURIPtr;
34 | struct _xmlURI {
35 | char *scheme; /* the URI scheme */
36 | char *opaque; /* opaque part */
37 | char *authority; /* the authority part */
38 | char *server; /* the server part */
39 | char *user; /* the user part */
40 | int port; /* the port number */
41 | char *path; /* the path string */
42 | char *query; /* the query string (deprecated - use with caution) */
43 | char *fragment; /* the fragment identifier */
44 | int cleanup; /* parsing potentially unclean URI */
45 | char *query_raw; /* the query string (as it appears in the URI) */
46 | };
47 |
48 | /*
49 | * This function is in tree.h:
50 | * xmlChar * xmlNodeGetBase (xmlDocPtr doc,
51 | * xmlNodePtr cur);
52 | */
53 | XMLPUBFUN xmlURIPtr
54 | xmlCreateURI (void);
55 | XMLPUBFUN xmlChar *
56 | xmlBuildURI (const xmlChar *URI,
57 | const xmlChar *base);
58 | XMLPUBFUN xmlChar *
59 | xmlBuildRelativeURI (const xmlChar *URI,
60 | const xmlChar *base);
61 | XMLPUBFUN xmlURIPtr
62 | xmlParseURI (const char *str);
63 | XMLPUBFUN xmlURIPtr
64 | xmlParseURIRaw (const char *str,
65 | int raw);
66 | XMLPUBFUN int
67 | xmlParseURIReference (xmlURIPtr uri,
68 | const char *str);
69 | XMLPUBFUN xmlChar *
70 | xmlSaveUri (xmlURIPtr uri);
71 | XMLPUBFUN void
72 | xmlPrintURI (FILE *stream,
73 | xmlURIPtr uri);
74 | XMLPUBFUN xmlChar *
75 | xmlURIEscapeStr (const xmlChar *str,
76 | const xmlChar *list);
77 | XMLPUBFUN char *
78 | xmlURIUnescapeString (const char *str,
79 | int len,
80 | char *target);
81 | XMLPUBFUN int
82 | xmlNormalizeURIPath (char *path);
83 | XMLPUBFUN xmlChar *
84 | xmlURIEscape (const xmlChar *str);
85 | XMLPUBFUN void
86 | xmlFreeURI (xmlURIPtr uri);
87 | XMLPUBFUN xmlChar*
88 | xmlCanonicPath (const xmlChar *path);
89 | XMLPUBFUN xmlChar*
90 | xmlPathToURI (const xmlChar *path);
91 |
92 | #ifdef __cplusplus
93 | }
94 | #endif
95 | #endif /* __XML_URI_H__ */
96 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/werkzeug/middleware/dispatcher.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | Application Dispatcher
3 | ======================
4 |
5 | This middleware creates a single WSGI application that dispatches to
6 | multiple other WSGI applications mounted at different URL paths.
7 |
8 | A common example is writing a Single Page Application, where you have a
9 | backend API and a frontend written in JavaScript that does the routing
10 | in the browser rather than requesting different pages from the server.
11 | The frontend is a single HTML and JS file that should be served for any
12 | path besides "/api".
13 |
14 | This example dispatches to an API app under "/api", an admin app
15 | under "/admin", and an app that serves frontend files for all other
16 | requests::
17 |
18 | app = DispatcherMiddleware(serve_frontend, {
19 | '/api': api_app,
20 | '/admin': admin_app,
21 | })
22 |
23 | In production, you might instead handle this at the HTTP server level,
24 | serving files or proxying to application servers based on location. The
25 | API and admin apps would each be deployed with a separate WSGI server,
26 | and the static files would be served directly by the HTTP server.
27 |
28 | .. autoclass:: DispatcherMiddleware
29 |
30 | :copyright: 2007 Pallets
31 | :license: BSD-3-Clause
32 | """
33 |
34 | from __future__ import annotations
35 |
36 | import typing as t
37 |
38 | if t.TYPE_CHECKING:
39 | from _typeshed.wsgi import StartResponse
40 | from _typeshed.wsgi import WSGIApplication
41 | from _typeshed.wsgi import WSGIEnvironment
42 |
43 |
44 | class DispatcherMiddleware:
45 | """Combine multiple applications as a single WSGI application.
46 | Requests are dispatched to an application based on the path it is
47 | mounted under.
48 |
49 | :param app: The WSGI application to dispatch to if the request
50 | doesn't match a mounted path.
51 | :param mounts: Maps path prefixes to applications for dispatching.
52 | """
53 |
54 | def __init__(
55 | self,
56 | app: WSGIApplication,
57 | mounts: dict[str, WSGIApplication] | None = None,
58 | ) -> None:
59 | self.app = app
60 | self.mounts = mounts or {}
61 |
62 | def __call__(
63 | self, environ: WSGIEnvironment, start_response: StartResponse
64 | ) -> t.Iterable[bytes]:
65 | script = environ.get("PATH_INFO", "")
66 | path_info = ""
67 |
68 | while "/" in script:
69 | if script in self.mounts:
70 | app = self.mounts[script]
71 | break
72 |
73 | script, last_item = script.rsplit("/", 1)
74 | path_info = f"/{last_item}{path_info}"
75 | else:
76 | app = self.mounts.get(script, self.app)
77 |
78 | original_script_name = environ.get("SCRIPT_NAME", "")
79 | environ["SCRIPT_NAME"] = original_script_name + script
80 | environ["PATH_INFO"] = path_info
81 | return app(environ, start_response)
82 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/flask/__init__.py:
--------------------------------------------------------------------------------
```python
1 | from __future__ import annotations
2 |
3 | import typing as t
4 |
5 | from . import json as json
6 | from .app import Flask as Flask
7 | from .blueprints import Blueprint as Blueprint
8 | from .config import Config as Config
9 | from .ctx import after_this_request as after_this_request
10 | from .ctx import copy_current_request_context as copy_current_request_context
11 | from .ctx import has_app_context as has_app_context
12 | from .ctx import has_request_context as has_request_context
13 | from .globals import current_app as current_app
14 | from .globals import g as g
15 | from .globals import request as request
16 | from .globals import session as session
17 | from .helpers import abort as abort
18 | from .helpers import flash as flash
19 | from .helpers import get_flashed_messages as get_flashed_messages
20 | from .helpers import get_template_attribute as get_template_attribute
21 | from .helpers import make_response as make_response
22 | from .helpers import redirect as redirect
23 | from .helpers import send_file as send_file
24 | from .helpers import send_from_directory as send_from_directory
25 | from .helpers import stream_with_context as stream_with_context
26 | from .helpers import url_for as url_for
27 | from .json import jsonify as jsonify
28 | from .signals import appcontext_popped as appcontext_popped
29 | from .signals import appcontext_pushed as appcontext_pushed
30 | from .signals import appcontext_tearing_down as appcontext_tearing_down
31 | from .signals import before_render_template as before_render_template
32 | from .signals import got_request_exception as got_request_exception
33 | from .signals import message_flashed as message_flashed
34 | from .signals import request_finished as request_finished
35 | from .signals import request_started as request_started
36 | from .signals import request_tearing_down as request_tearing_down
37 | from .signals import template_rendered as template_rendered
38 | from .templating import render_template as render_template
39 | from .templating import render_template_string as render_template_string
40 | from .templating import stream_template as stream_template
41 | from .templating import stream_template_string as stream_template_string
42 | from .wrappers import Request as Request
43 | from .wrappers import Response as Response
44 |
45 |
46 | def __getattr__(name: str) -> t.Any:
47 | if name == "__version__":
48 | import importlib.metadata
49 | import warnings
50 |
51 | warnings.warn(
52 | "The '__version__' attribute is deprecated and will be removed in"
53 | " Flask 3.1. Use feature detection or"
54 | " 'importlib.metadata.version(\"flask\")' instead.",
55 | DeprecationWarning,
56 | stacklevel=2,
57 | )
58 | return importlib.metadata.version("flask")
59 |
60 | raise AttributeError(name)
61 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/metadata/_json.py:
--------------------------------------------------------------------------------
```python
1 | # Extracted from https://github.com/pfmoore/pkg_metadata
2 |
3 | from email.header import Header, decode_header, make_header
4 | from email.message import Message
5 | from typing import Any, Dict, List, Union, cast
6 |
7 | METADATA_FIELDS = [
8 | # Name, Multiple-Use
9 | ("Metadata-Version", False),
10 | ("Name", False),
11 | ("Version", False),
12 | ("Dynamic", True),
13 | ("Platform", True),
14 | ("Supported-Platform", True),
15 | ("Summary", False),
16 | ("Description", False),
17 | ("Description-Content-Type", False),
18 | ("Keywords", False),
19 | ("Home-page", False),
20 | ("Download-URL", False),
21 | ("Author", False),
22 | ("Author-email", False),
23 | ("Maintainer", False),
24 | ("Maintainer-email", False),
25 | ("License", False),
26 | ("Classifier", True),
27 | ("Requires-Dist", True),
28 | ("Requires-Python", False),
29 | ("Requires-External", True),
30 | ("Project-URL", True),
31 | ("Provides-Extra", True),
32 | ("Provides-Dist", True),
33 | ("Obsoletes-Dist", True),
34 | ]
35 |
36 |
37 | def json_name(field: str) -> str:
38 | return field.lower().replace("-", "_")
39 |
40 |
41 | def msg_to_json(msg: Message) -> Dict[str, Any]:
42 | """Convert a Message object into a JSON-compatible dictionary."""
43 |
44 | def sanitise_header(h: Union[Header, str]) -> str:
45 | if isinstance(h, Header):
46 | chunks = []
47 | for bytes, encoding in decode_header(h):
48 | if encoding == "unknown-8bit":
49 | try:
50 | # See if UTF-8 works
51 | bytes.decode("utf-8")
52 | encoding = "utf-8"
53 | except UnicodeDecodeError:
54 | # If not, latin1 at least won't fail
55 | encoding = "latin1"
56 | chunks.append((bytes, encoding))
57 | return str(make_header(chunks))
58 | return str(h)
59 |
60 | result = {}
61 | for field, multi in METADATA_FIELDS:
62 | if field not in msg:
63 | continue
64 | key = json_name(field)
65 | if multi:
66 | value: Union[str, List[str]] = [
67 | sanitise_header(v) for v in msg.get_all(field) # type: ignore
68 | ]
69 | else:
70 | value = sanitise_header(msg.get(field)) # type: ignore
71 | if key == "keywords":
72 | # Accept both comma-separated and space-separated
73 | # forms, for better compatibility with old data.
74 | if "," in value:
75 | value = [v.strip() for v in value.split(",")]
76 | else:
77 | value = value.split()
78 | result[key] = value
79 |
80 | payload = cast(str, msg.get_payload())
81 | if payload:
82 | result["description"] = payload
83 |
84 | return result
85 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/security.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: interface for the libxslt security framework
3 | * Description: the libxslt security framework allow to restrict
4 | * the access to new resources (file or URL) from
5 | * the stylesheet at runtime.
6 | *
7 | * Copy: See Copyright for the status of this software.
8 | *
9 | * Author: Daniel Veillard
10 | */
11 |
12 | #ifndef __XML_XSLT_SECURITY_H__
13 | #define __XML_XSLT_SECURITY_H__
14 |
15 | #include <libxml/tree.h>
16 | #include "xsltexports.h"
17 | #include "xsltInternals.h"
18 |
19 | #ifdef __cplusplus
20 | extern "C" {
21 | #endif
22 |
23 | /**
24 | * xsltSecurityPref:
25 | *
26 | * structure to indicate the preferences for security in the XSLT
27 | * transformation.
28 | */
29 | typedef struct _xsltSecurityPrefs xsltSecurityPrefs;
30 | typedef xsltSecurityPrefs *xsltSecurityPrefsPtr;
31 |
32 | /**
33 | * xsltSecurityOption:
34 | *
35 | * the set of option that can be configured
36 | */
37 | typedef enum {
38 | XSLT_SECPREF_READ_FILE = 1,
39 | XSLT_SECPREF_WRITE_FILE,
40 | XSLT_SECPREF_CREATE_DIRECTORY,
41 | XSLT_SECPREF_READ_NETWORK,
42 | XSLT_SECPREF_WRITE_NETWORK
43 | } xsltSecurityOption;
44 |
45 | /**
46 | * xsltSecurityCheck:
47 | *
48 | * User provided function to check the value of a string like a file
49 | * path or an URL ...
50 | */
51 | typedef int (*xsltSecurityCheck) (xsltSecurityPrefsPtr sec,
52 | xsltTransformContextPtr ctxt,
53 | const char *value);
54 |
55 | /*
56 | * Module interfaces
57 | */
58 | XSLTPUBFUN xsltSecurityPrefsPtr XSLTCALL
59 | xsltNewSecurityPrefs (void);
60 | XSLTPUBFUN void XSLTCALL
61 | xsltFreeSecurityPrefs (xsltSecurityPrefsPtr sec);
62 | XSLTPUBFUN int XSLTCALL
63 | xsltSetSecurityPrefs (xsltSecurityPrefsPtr sec,
64 | xsltSecurityOption option,
65 | xsltSecurityCheck func);
66 | XSLTPUBFUN xsltSecurityCheck XSLTCALL
67 | xsltGetSecurityPrefs (xsltSecurityPrefsPtr sec,
68 | xsltSecurityOption option);
69 |
70 | XSLTPUBFUN void XSLTCALL
71 | xsltSetDefaultSecurityPrefs (xsltSecurityPrefsPtr sec);
72 | XSLTPUBFUN xsltSecurityPrefsPtr XSLTCALL
73 | xsltGetDefaultSecurityPrefs (void);
74 |
75 | XSLTPUBFUN int XSLTCALL
76 | xsltSetCtxtSecurityPrefs (xsltSecurityPrefsPtr sec,
77 | xsltTransformContextPtr ctxt);
78 |
79 | XSLTPUBFUN int XSLTCALL
80 | xsltSecurityAllow (xsltSecurityPrefsPtr sec,
81 | xsltTransformContextPtr ctxt,
82 | const char *value);
83 | XSLTPUBFUN int XSLTCALL
84 | xsltSecurityForbid (xsltSecurityPrefsPtr sec,
85 | xsltTransformContextPtr ctxt,
86 | const char *value);
87 | /*
88 | * internal interfaces
89 | */
90 | XSLTPUBFUN int XSLTCALL
91 | xsltCheckWrite (xsltSecurityPrefsPtr sec,
92 | xsltTransformContextPtr ctxt,
93 | const xmlChar *URL);
94 | XSLTPUBFUN int XSLTCALL
95 | xsltCheckRead (xsltSecurityPrefsPtr sec,
96 | xsltTransformContextPtr ctxt,
97 | const xmlChar *URL);
98 |
99 | #ifdef __cplusplus
100 | }
101 | #endif
102 |
103 | #endif /* __XML_XSLT_SECURITY_H__ */
104 |
105 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/req/__init__.py:
--------------------------------------------------------------------------------
```python
1 | import collections
2 | import logging
3 | from dataclasses import dataclass
4 | from typing import Generator, List, Optional, Sequence, Tuple
5 |
6 | from pip._internal.utils.logging import indent_log
7 |
8 | from .req_file import parse_requirements
9 | from .req_install import InstallRequirement
10 | from .req_set import RequirementSet
11 |
12 | __all__ = [
13 | "RequirementSet",
14 | "InstallRequirement",
15 | "parse_requirements",
16 | "install_given_reqs",
17 | ]
18 |
19 | logger = logging.getLogger(__name__)
20 |
21 |
22 | @dataclass(frozen=True)
23 | class InstallationResult:
24 | name: str
25 |
26 |
27 | def _validate_requirements(
28 | requirements: List[InstallRequirement],
29 | ) -> Generator[Tuple[str, InstallRequirement], None, None]:
30 | for req in requirements:
31 | assert req.name, f"invalid to-be-installed requirement: {req}"
32 | yield req.name, req
33 |
34 |
35 | def install_given_reqs(
36 | requirements: List[InstallRequirement],
37 | global_options: Sequence[str],
38 | root: Optional[str],
39 | home: Optional[str],
40 | prefix: Optional[str],
41 | warn_script_location: bool,
42 | use_user_site: bool,
43 | pycompile: bool,
44 | ) -> List[InstallationResult]:
45 | """
46 | Install everything in the given list.
47 |
48 | (to be called after having downloaded and unpacked the packages)
49 | """
50 | to_install = collections.OrderedDict(_validate_requirements(requirements))
51 |
52 | if to_install:
53 | logger.info(
54 | "Installing collected packages: %s",
55 | ", ".join(to_install.keys()),
56 | )
57 |
58 | installed = []
59 |
60 | with indent_log():
61 | for req_name, requirement in to_install.items():
62 | if requirement.should_reinstall:
63 | logger.info("Attempting uninstall: %s", req_name)
64 | with indent_log():
65 | uninstalled_pathset = requirement.uninstall(auto_confirm=True)
66 | else:
67 | uninstalled_pathset = None
68 |
69 | try:
70 | requirement.install(
71 | global_options,
72 | root=root,
73 | home=home,
74 | prefix=prefix,
75 | warn_script_location=warn_script_location,
76 | use_user_site=use_user_site,
77 | pycompile=pycompile,
78 | )
79 | except Exception:
80 | # if install did not succeed, rollback previous uninstall
81 | if uninstalled_pathset and not requirement.install_succeeded:
82 | uninstalled_pathset.rollback()
83 | raise
84 | else:
85 | if uninstalled_pathset and requirement.install_succeeded:
86 | uninstalled_pathset.commit()
87 |
88 | installed.append(InstallationResult(req_name))
89 |
90 | return installed
91 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/packaging/_musllinux.py:
--------------------------------------------------------------------------------
```python
1 | """PEP 656 support.
2 |
3 | This module implements logic to detect if the currently running Python is
4 | linked against musl, and what musl version is used.
5 | """
6 |
7 | from __future__ import annotations
8 |
9 | import functools
10 | import re
11 | import subprocess
12 | import sys
13 | from typing import Iterator, NamedTuple, Sequence
14 |
15 | from ._elffile import ELFFile
16 |
17 |
18 | class _MuslVersion(NamedTuple):
19 | major: int
20 | minor: int
21 |
22 |
23 | def _parse_musl_version(output: str) -> _MuslVersion | None:
24 | lines = [n for n in (n.strip() for n in output.splitlines()) if n]
25 | if len(lines) < 2 or lines[0][:4] != "musl":
26 | return None
27 | m = re.match(r"Version (\d+)\.(\d+)", lines[1])
28 | if not m:
29 | return None
30 | return _MuslVersion(major=int(m.group(1)), minor=int(m.group(2)))
31 |
32 |
33 | @functools.lru_cache
34 | def _get_musl_version(executable: str) -> _MuslVersion | None:
35 | """Detect currently-running musl runtime version.
36 |
37 | This is done by checking the specified executable's dynamic linking
38 | information, and invoking the loader to parse its output for a version
39 | string. If the loader is musl, the output would be something like::
40 |
41 | musl libc (x86_64)
42 | Version 1.2.2
43 | Dynamic Program Loader
44 | """
45 | try:
46 | with open(executable, "rb") as f:
47 | ld = ELFFile(f).interpreter
48 | except (OSError, TypeError, ValueError):
49 | return None
50 | if ld is None or "musl" not in ld:
51 | return None
52 | proc = subprocess.run([ld], stderr=subprocess.PIPE, text=True)
53 | return _parse_musl_version(proc.stderr)
54 |
55 |
56 | def platform_tags(archs: Sequence[str]) -> Iterator[str]:
57 | """Generate musllinux tags compatible to the current platform.
58 |
59 | :param archs: Sequence of compatible architectures.
60 | The first one shall be the closest to the actual architecture and be the part of
61 | platform tag after the ``linux_`` prefix, e.g. ``x86_64``.
62 | The ``linux_`` prefix is assumed as a prerequisite for the current platform to
63 | be musllinux-compatible.
64 |
65 | :returns: An iterator of compatible musllinux tags.
66 | """
67 | sys_musl = _get_musl_version(sys.executable)
68 | if sys_musl is None: # Python not dynamically linked against musl.
69 | return
70 | for arch in archs:
71 | for minor in range(sys_musl.minor, -1, -1):
72 | yield f"musllinux_{sys_musl.major}_{minor}_{arch}"
73 |
74 |
75 | if __name__ == "__main__": # pragma: no cover
76 | import sysconfig
77 |
78 | plat = sysconfig.get_platform()
79 | assert plat.startswith("linux-"), "not linux"
80 |
81 | print("plat:", plat)
82 | print("musl:", _get_musl_version(sys.executable))
83 | print("tags:", end=" ")
84 | for t in platform_tags(re.sub(r"[.-]", "_", plat.split("-", 1)[-1])):
85 | print(t, end="\n ")
86 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/documents.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: interface for the document handling
3 | * Description: implements document loading and cache (multiple
4 | * document() reference for the same resources must
5 | * be equal.
6 | *
7 | * Copy: See Copyright for the status of this software.
8 | *
9 | * Author: Daniel Veillard
10 | */
11 |
12 | #ifndef __XML_XSLT_DOCUMENTS_H__
13 | #define __XML_XSLT_DOCUMENTS_H__
14 |
15 | #include <libxml/tree.h>
16 | #include "xsltexports.h"
17 | #include "xsltInternals.h"
18 |
19 | #ifdef __cplusplus
20 | extern "C" {
21 | #endif
22 |
23 | XSLTPUBFUN xsltDocumentPtr XSLTCALL
24 | xsltNewDocument (xsltTransformContextPtr ctxt,
25 | xmlDocPtr doc);
26 | XSLTPUBFUN xsltDocumentPtr XSLTCALL
27 | xsltLoadDocument (xsltTransformContextPtr ctxt,
28 | const xmlChar *URI);
29 | XSLTPUBFUN xsltDocumentPtr XSLTCALL
30 | xsltFindDocument (xsltTransformContextPtr ctxt,
31 | xmlDocPtr doc);
32 | XSLTPUBFUN void XSLTCALL
33 | xsltFreeDocuments (xsltTransformContextPtr ctxt);
34 |
35 | XSLTPUBFUN xsltDocumentPtr XSLTCALL
36 | xsltLoadStyleDocument (xsltStylesheetPtr style,
37 | const xmlChar *URI);
38 | XSLTPUBFUN xsltDocumentPtr XSLTCALL
39 | xsltNewStyleDocument (xsltStylesheetPtr style,
40 | xmlDocPtr doc);
41 | XSLTPUBFUN void XSLTCALL
42 | xsltFreeStyleDocuments (xsltStylesheetPtr style);
43 |
44 | /*
45 | * Hooks for document loading
46 | */
47 |
48 | /**
49 | * xsltLoadType:
50 | *
51 | * Enum defining the kind of loader requirement.
52 | */
53 | typedef enum {
54 | XSLT_LOAD_START = 0, /* loading for a top stylesheet */
55 | XSLT_LOAD_STYLESHEET = 1, /* loading for a stylesheet include/import */
56 | XSLT_LOAD_DOCUMENT = 2 /* loading document at transformation time */
57 | } xsltLoadType;
58 |
59 | /**
60 | * xsltDocLoaderFunc:
61 | * @URI: the URI of the document to load
62 | * @dict: the dictionary to use when parsing that document
63 | * @options: parsing options, a set of xmlParserOption
64 | * @ctxt: the context, either a stylesheet or a transformation context
65 | * @type: the xsltLoadType indicating the kind of loading required
66 | *
67 | * An xsltDocLoaderFunc is a signature for a function which can be
68 | * registered to load document not provided by the compilation or
69 | * transformation API themselve, for example when an xsl:import,
70 | * xsl:include is found at compilation time or when a document()
71 | * call is made at runtime.
72 | *
73 | * Returns the pointer to the document (which will be modified and
74 | * freed by the engine later), or NULL in case of error.
75 | */
76 | typedef xmlDocPtr (*xsltDocLoaderFunc) (const xmlChar *URI,
77 | xmlDictPtr dict,
78 | int options,
79 | void *ctxt,
80 | xsltLoadType type);
81 |
82 | XSLTPUBFUN void XSLTCALL
83 | xsltSetLoaderFunc (xsltDocLoaderFunc f);
84 |
85 | /* the loader may be needed by extension libraries so it is exported */
86 | XSLTPUBVAR xsltDocLoaderFunc xsltDocDefaultLoader;
87 |
88 | #ifdef __cplusplus
89 | }
90 | #endif
91 |
92 | #endif /* __XML_XSLT_DOCUMENTS_H__ */
93 |
94 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/cli/progress_bars.py:
--------------------------------------------------------------------------------
```python
1 | import functools
2 | import sys
3 | from typing import Callable, Generator, Iterable, Iterator, Optional, Tuple
4 |
5 | from pip._vendor.rich.progress import (
6 | BarColumn,
7 | DownloadColumn,
8 | FileSizeColumn,
9 | Progress,
10 | ProgressColumn,
11 | SpinnerColumn,
12 | TextColumn,
13 | TimeElapsedColumn,
14 | TimeRemainingColumn,
15 | TransferSpeedColumn,
16 | )
17 |
18 | from pip._internal.cli.spinners import RateLimiter
19 | from pip._internal.utils.logging import get_indentation
20 |
21 | DownloadProgressRenderer = Callable[[Iterable[bytes]], Iterator[bytes]]
22 |
23 |
24 | def _rich_progress_bar(
25 | iterable: Iterable[bytes],
26 | *,
27 | bar_type: str,
28 | size: int,
29 | ) -> Generator[bytes, None, None]:
30 | assert bar_type == "on", "This should only be used in the default mode."
31 |
32 | if not size:
33 | total = float("inf")
34 | columns: Tuple[ProgressColumn, ...] = (
35 | TextColumn("[progress.description]{task.description}"),
36 | SpinnerColumn("line", speed=1.5),
37 | FileSizeColumn(),
38 | TransferSpeedColumn(),
39 | TimeElapsedColumn(),
40 | )
41 | else:
42 | total = size
43 | columns = (
44 | TextColumn("[progress.description]{task.description}"),
45 | BarColumn(),
46 | DownloadColumn(),
47 | TransferSpeedColumn(),
48 | TextColumn("eta"),
49 | TimeRemainingColumn(),
50 | )
51 |
52 | progress = Progress(*columns, refresh_per_second=5)
53 | task_id = progress.add_task(" " * (get_indentation() + 2), total=total)
54 | with progress:
55 | for chunk in iterable:
56 | yield chunk
57 | progress.update(task_id, advance=len(chunk))
58 |
59 |
60 | def _raw_progress_bar(
61 | iterable: Iterable[bytes],
62 | *,
63 | size: Optional[int],
64 | ) -> Generator[bytes, None, None]:
65 | def write_progress(current: int, total: int) -> None:
66 | sys.stdout.write("Progress %d of %d\n" % (current, total))
67 | sys.stdout.flush()
68 |
69 | current = 0
70 | total = size or 0
71 | rate_limiter = RateLimiter(0.25)
72 |
73 | write_progress(current, total)
74 | for chunk in iterable:
75 | current += len(chunk)
76 | if rate_limiter.ready() or current == total:
77 | write_progress(current, total)
78 | rate_limiter.reset()
79 | yield chunk
80 |
81 |
82 | def get_download_progress_renderer(
83 | *, bar_type: str, size: Optional[int] = None
84 | ) -> DownloadProgressRenderer:
85 | """Get an object that can be used to render the download progress.
86 |
87 | Returns a callable, that takes an iterable to "wrap".
88 | """
89 | if bar_type == "on":
90 | return functools.partial(_rich_progress_bar, bar_type=bar_type, size=size)
91 | elif bar_type == "raw":
92 | return functools.partial(_raw_progress_bar, size=size)
93 | else:
94 | return iter # no-op, when passed an iterator
95 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_windows_renderer.py:
--------------------------------------------------------------------------------
```python
1 | from typing import Iterable, Sequence, Tuple, cast
2 |
3 | from pip._vendor.rich._win32_console import LegacyWindowsTerm, WindowsCoordinates
4 | from pip._vendor.rich.segment import ControlCode, ControlType, Segment
5 |
6 |
7 | def legacy_windows_render(buffer: Iterable[Segment], term: LegacyWindowsTerm) -> None:
8 | """Makes appropriate Windows Console API calls based on the segments in the buffer.
9 |
10 | Args:
11 | buffer (Iterable[Segment]): Iterable of Segments to convert to Win32 API calls.
12 | term (LegacyWindowsTerm): Used to call the Windows Console API.
13 | """
14 | for text, style, control in buffer:
15 | if not control:
16 | if style:
17 | term.write_styled(text, style)
18 | else:
19 | term.write_text(text)
20 | else:
21 | control_codes: Sequence[ControlCode] = control
22 | for control_code in control_codes:
23 | control_type = control_code[0]
24 | if control_type == ControlType.CURSOR_MOVE_TO:
25 | _, x, y = cast(Tuple[ControlType, int, int], control_code)
26 | term.move_cursor_to(WindowsCoordinates(row=y - 1, col=x - 1))
27 | elif control_type == ControlType.CARRIAGE_RETURN:
28 | term.write_text("\r")
29 | elif control_type == ControlType.HOME:
30 | term.move_cursor_to(WindowsCoordinates(0, 0))
31 | elif control_type == ControlType.CURSOR_UP:
32 | term.move_cursor_up()
33 | elif control_type == ControlType.CURSOR_DOWN:
34 | term.move_cursor_down()
35 | elif control_type == ControlType.CURSOR_FORWARD:
36 | term.move_cursor_forward()
37 | elif control_type == ControlType.CURSOR_BACKWARD:
38 | term.move_cursor_backward()
39 | elif control_type == ControlType.CURSOR_MOVE_TO_COLUMN:
40 | _, column = cast(Tuple[ControlType, int], control_code)
41 | term.move_cursor_to_column(column - 1)
42 | elif control_type == ControlType.HIDE_CURSOR:
43 | term.hide_cursor()
44 | elif control_type == ControlType.SHOW_CURSOR:
45 | term.show_cursor()
46 | elif control_type == ControlType.ERASE_IN_LINE:
47 | _, mode = cast(Tuple[ControlType, int], control_code)
48 | if mode == 0:
49 | term.erase_end_of_line()
50 | elif mode == 1:
51 | term.erase_start_of_line()
52 | elif mode == 2:
53 | term.erase_line()
54 | elif control_type == ControlType.SET_WINDOW_TITLE:
55 | _, title = cast(Tuple[ControlType, str], control_code)
56 | term.set_title(title)
57 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_compat.py:
--------------------------------------------------------------------------------
```python
1 | import importlib.metadata
2 | import os
3 | from typing import Any, Optional, Protocol, Tuple, cast
4 |
5 | from pip._vendor.packaging.utils import NormalizedName, canonicalize_name
6 |
7 |
8 | class BadMetadata(ValueError):
9 | def __init__(self, dist: importlib.metadata.Distribution, *, reason: str) -> None:
10 | self.dist = dist
11 | self.reason = reason
12 |
13 | def __str__(self) -> str:
14 | return f"Bad metadata in {self.dist} ({self.reason})"
15 |
16 |
17 | class BasePath(Protocol):
18 | """A protocol that various path objects conform.
19 |
20 | This exists because importlib.metadata uses both ``pathlib.Path`` and
21 | ``zipfile.Path``, and we need a common base for type hints (Union does not
22 | work well since ``zipfile.Path`` is too new for our linter setup).
23 |
24 | This does not mean to be exhaustive, but only contains things that present
25 | in both classes *that we need*.
26 | """
27 |
28 | @property
29 | def name(self) -> str:
30 | raise NotImplementedError()
31 |
32 | @property
33 | def parent(self) -> "BasePath":
34 | raise NotImplementedError()
35 |
36 |
37 | def get_info_location(d: importlib.metadata.Distribution) -> Optional[BasePath]:
38 | """Find the path to the distribution's metadata directory.
39 |
40 | HACK: This relies on importlib.metadata's private ``_path`` attribute. Not
41 | all distributions exist on disk, so importlib.metadata is correct to not
42 | expose the attribute as public. But pip's code base is old and not as clean,
43 | so we do this to avoid having to rewrite too many things. Hopefully we can
44 | eliminate this some day.
45 | """
46 | return getattr(d, "_path", None)
47 |
48 |
49 | def parse_name_and_version_from_info_directory(
50 | dist: importlib.metadata.Distribution,
51 | ) -> Tuple[Optional[str], Optional[str]]:
52 | """Get a name and version from the metadata directory name.
53 |
54 | This is much faster than reading distribution metadata.
55 | """
56 | info_location = get_info_location(dist)
57 | if info_location is None:
58 | return None, None
59 |
60 | stem, suffix = os.path.splitext(info_location.name)
61 | if suffix == ".dist-info":
62 | name, sep, version = stem.partition("-")
63 | if sep:
64 | return name, version
65 |
66 | if suffix == ".egg-info":
67 | name = stem.split("-", 1)[0]
68 | return name, None
69 |
70 | return None, None
71 |
72 |
73 | def get_dist_canonical_name(dist: importlib.metadata.Distribution) -> NormalizedName:
74 | """Get the distribution's normalized name.
75 |
76 | The ``name`` attribute is only available in Python 3.10 or later. We are
77 | targeting exactly that, but Mypy does not know this.
78 | """
79 | if name := parse_name_and_version_from_info_directory(dist)[0]:
80 | return canonicalize_name(name)
81 |
82 | name = cast(Any, dist).name
83 | if not isinstance(name, str):
84 | raise BadMetadata(dist, reason="invalid metadata entry 'name'")
85 | return canonicalize_name(name)
86 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/cli/main.py:
--------------------------------------------------------------------------------
```python
1 | """Primary application entrypoint.
2 | """
3 |
4 | import locale
5 | import logging
6 | import os
7 | import sys
8 | import warnings
9 | from typing import List, Optional
10 |
11 | from pip._internal.cli.autocompletion import autocomplete
12 | from pip._internal.cli.main_parser import parse_command
13 | from pip._internal.commands import create_command
14 | from pip._internal.exceptions import PipError
15 | from pip._internal.utils import deprecation
16 |
17 | logger = logging.getLogger(__name__)
18 |
19 |
20 | # Do not import and use main() directly! Using it directly is actively
21 | # discouraged by pip's maintainers. The name, location and behavior of
22 | # this function is subject to change, so calling it directly is not
23 | # portable across different pip versions.
24 |
25 | # In addition, running pip in-process is unsupported and unsafe. This is
26 | # elaborated in detail at
27 | # https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program.
28 | # That document also provides suggestions that should work for nearly
29 | # all users that are considering importing and using main() directly.
30 |
31 | # However, we know that certain users will still want to invoke pip
32 | # in-process. If you understand and accept the implications of using pip
33 | # in an unsupported manner, the best approach is to use runpy to avoid
34 | # depending on the exact location of this entry point.
35 |
36 | # The following example shows how to use runpy to invoke pip in that
37 | # case:
38 | #
39 | # sys.argv = ["pip", your, args, here]
40 | # runpy.run_module("pip", run_name="__main__")
41 | #
42 | # Note that this will exit the process after running, unlike a direct
43 | # call to main. As it is not safe to do any processing after calling
44 | # main, this should not be an issue in practice.
45 |
46 |
47 | def main(args: Optional[List[str]] = None) -> int:
48 | if args is None:
49 | args = sys.argv[1:]
50 |
51 | # Suppress the pkg_resources deprecation warning
52 | # Note - we use a module of .*pkg_resources to cover
53 | # the normal case (pip._vendor.pkg_resources) and the
54 | # devendored case (a bare pkg_resources)
55 | warnings.filterwarnings(
56 | action="ignore", category=DeprecationWarning, module=".*pkg_resources"
57 | )
58 |
59 | # Configure our deprecation warnings to be sent through loggers
60 | deprecation.install_warning_logger()
61 |
62 | autocomplete()
63 |
64 | try:
65 | cmd_name, cmd_args = parse_command(args)
66 | except PipError as exc:
67 | sys.stderr.write(f"ERROR: {exc}")
68 | sys.stderr.write(os.linesep)
69 | sys.exit(1)
70 |
71 | # Needed for locale.getpreferredencoding(False) to work
72 | # in pip._internal.utils.encoding.auto_decode
73 | try:
74 | locale.setlocale(locale.LC_ALL, "")
75 | except locale.Error as e:
76 | # setlocale can apparently crash if locale are uninitialized
77 | logger.debug("Ignoring error %s when setting locale", e)
78 | command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
79 |
80 | return command.main(cmd_args)
81 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/models/installation_report.py:
--------------------------------------------------------------------------------
```python
1 | from typing import Any, Dict, Sequence
2 |
3 | from pip._vendor.packaging.markers import default_environment
4 |
5 | from pip import __version__
6 | from pip._internal.req.req_install import InstallRequirement
7 |
8 |
9 | class InstallationReport:
10 | def __init__(self, install_requirements: Sequence[InstallRequirement]):
11 | self._install_requirements = install_requirements
12 |
13 | @classmethod
14 | def _install_req_to_dict(cls, ireq: InstallRequirement) -> Dict[str, Any]:
15 | assert ireq.download_info, f"No download_info for {ireq}"
16 | res = {
17 | # PEP 610 json for the download URL. download_info.archive_info.hashes may
18 | # be absent when the requirement was installed from the wheel cache
19 | # and the cache entry was populated by an older pip version that did not
20 | # record origin.json.
21 | "download_info": ireq.download_info.to_dict(),
22 | # is_direct is true if the requirement was a direct URL reference (which
23 | # includes editable requirements), and false if the requirement was
24 | # downloaded from a PEP 503 index or --find-links.
25 | "is_direct": ireq.is_direct,
26 | # is_yanked is true if the requirement was yanked from the index, but
27 | # was still selected by pip to conform to PEP 592.
28 | "is_yanked": ireq.link.is_yanked if ireq.link else False,
29 | # requested is true if the requirement was specified by the user (aka
30 | # top level requirement), and false if it was installed as a dependency of a
31 | # requirement. https://peps.python.org/pep-0376/#requested
32 | "requested": ireq.user_supplied,
33 | # PEP 566 json encoding for metadata
34 | # https://www.python.org/dev/peps/pep-0566/#json-compatible-metadata
35 | "metadata": ireq.get_dist().metadata_dict,
36 | }
37 | if ireq.user_supplied and ireq.extras:
38 | # For top level requirements, the list of requested extras, if any.
39 | res["requested_extras"] = sorted(ireq.extras)
40 | return res
41 |
42 | def to_dict(self) -> Dict[str, Any]:
43 | return {
44 | "version": "1",
45 | "pip_version": __version__,
46 | "install": [
47 | self._install_req_to_dict(ireq) for ireq in self._install_requirements
48 | ],
49 | # https://peps.python.org/pep-0508/#environment-markers
50 | # TODO: currently, the resolver uses the default environment to evaluate
51 | # environment markers, so that is what we report here. In the future, it
52 | # should also take into account options such as --python-version or
53 | # --platform, perhaps under the form of an environment_override field?
54 | # https://github.com/pypa/pip/issues/11198
55 | "environment": default_environment(),
56 | }
57 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/rich/scope.py:
--------------------------------------------------------------------------------
```python
1 | from collections.abc import Mapping
2 | from typing import TYPE_CHECKING, Any, Optional, Tuple
3 |
4 | from .highlighter import ReprHighlighter
5 | from .panel import Panel
6 | from .pretty import Pretty
7 | from .table import Table
8 | from .text import Text, TextType
9 |
10 | if TYPE_CHECKING:
11 | from .console import ConsoleRenderable
12 |
13 |
14 | def render_scope(
15 | scope: "Mapping[str, Any]",
16 | *,
17 | title: Optional[TextType] = None,
18 | sort_keys: bool = True,
19 | indent_guides: bool = False,
20 | max_length: Optional[int] = None,
21 | max_string: Optional[int] = None,
22 | ) -> "ConsoleRenderable":
23 | """Render python variables in a given scope.
24 |
25 | Args:
26 | scope (Mapping): A mapping containing variable names and values.
27 | title (str, optional): Optional title. Defaults to None.
28 | sort_keys (bool, optional): Enable sorting of items. Defaults to True.
29 | indent_guides (bool, optional): Enable indentation guides. Defaults to False.
30 | max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation.
31 | Defaults to None.
32 | max_string (int, optional): Maximum length of string before truncating, or None to disable. Defaults to None.
33 |
34 | Returns:
35 | ConsoleRenderable: A renderable object.
36 | """
37 | highlighter = ReprHighlighter()
38 | items_table = Table.grid(padding=(0, 1), expand=False)
39 | items_table.add_column(justify="right")
40 |
41 | def sort_items(item: Tuple[str, Any]) -> Tuple[bool, str]:
42 | """Sort special variables first, then alphabetically."""
43 | key, _ = item
44 | return (not key.startswith("__"), key.lower())
45 |
46 | items = sorted(scope.items(), key=sort_items) if sort_keys else scope.items()
47 | for key, value in items:
48 | key_text = Text.assemble(
49 | (key, "scope.key.special" if key.startswith("__") else "scope.key"),
50 | (" =", "scope.equals"),
51 | )
52 | items_table.add_row(
53 | key_text,
54 | Pretty(
55 | value,
56 | highlighter=highlighter,
57 | indent_guides=indent_guides,
58 | max_length=max_length,
59 | max_string=max_string,
60 | ),
61 | )
62 | return Panel.fit(
63 | items_table,
64 | title=title,
65 | border_style="scope.border",
66 | padding=(0, 1),
67 | )
68 |
69 |
70 | if __name__ == "__main__": # pragma: no cover
71 | from pip._vendor.rich import print
72 |
73 | print()
74 |
75 | def test(foo: float, bar: float) -> None:
76 | list_of_things = [1, 2, 3, None, 4, True, False, "Hello World"]
77 | dict_of_things = {
78 | "version": "1.1",
79 | "method": "confirmFruitPurchase",
80 | "params": [["apple", "orange", "mangoes", "pomelo"], 1.123],
81 | "id": "194521489",
82 | }
83 | print(render_scope(locals(), title="[i]locals", sort_keys=False))
84 |
85 | test(20.3423, 3.1427)
86 | print()
87 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/req/req_set.py:
--------------------------------------------------------------------------------
```python
1 | import logging
2 | from collections import OrderedDict
3 | from typing import Dict, List
4 |
5 | from pip._vendor.packaging.utils import canonicalize_name
6 |
7 | from pip._internal.req.req_install import InstallRequirement
8 |
9 | logger = logging.getLogger(__name__)
10 |
11 |
12 | class RequirementSet:
13 | def __init__(self, check_supported_wheels: bool = True) -> None:
14 | """Create a RequirementSet."""
15 |
16 | self.requirements: Dict[str, InstallRequirement] = OrderedDict()
17 | self.check_supported_wheels = check_supported_wheels
18 |
19 | self.unnamed_requirements: List[InstallRequirement] = []
20 |
21 | def __str__(self) -> str:
22 | requirements = sorted(
23 | (req for req in self.requirements.values() if not req.comes_from),
24 | key=lambda req: canonicalize_name(req.name or ""),
25 | )
26 | return " ".join(str(req.req) for req in requirements)
27 |
28 | def __repr__(self) -> str:
29 | requirements = sorted(
30 | self.requirements.values(),
31 | key=lambda req: canonicalize_name(req.name or ""),
32 | )
33 |
34 | format_string = "<{classname} object; {count} requirement(s): {reqs}>"
35 | return format_string.format(
36 | classname=self.__class__.__name__,
37 | count=len(requirements),
38 | reqs=", ".join(str(req.req) for req in requirements),
39 | )
40 |
41 | def add_unnamed_requirement(self, install_req: InstallRequirement) -> None:
42 | assert not install_req.name
43 | self.unnamed_requirements.append(install_req)
44 |
45 | def add_named_requirement(self, install_req: InstallRequirement) -> None:
46 | assert install_req.name
47 |
48 | project_name = canonicalize_name(install_req.name)
49 | self.requirements[project_name] = install_req
50 |
51 | def has_requirement(self, name: str) -> bool:
52 | project_name = canonicalize_name(name)
53 |
54 | return (
55 | project_name in self.requirements
56 | and not self.requirements[project_name].constraint
57 | )
58 |
59 | def get_requirement(self, name: str) -> InstallRequirement:
60 | project_name = canonicalize_name(name)
61 |
62 | if project_name in self.requirements:
63 | return self.requirements[project_name]
64 |
65 | raise KeyError(f"No project with the name {name!r}")
66 |
67 | @property
68 | def all_requirements(self) -> List[InstallRequirement]:
69 | return self.unnamed_requirements + list(self.requirements.values())
70 |
71 | @property
72 | def requirements_to_install(self) -> List[InstallRequirement]:
73 | """Return the list of requirements that need to be installed.
74 |
75 | TODO remove this property together with the legacy resolver, since the new
76 | resolver only returns requirements that need to be installed.
77 | """
78 | return [
79 | install_req
80 | for install_req in self.all_requirements
81 | if not install_req.constraint and not install_req.satisfied_by
82 | ]
83 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxml/xinclude.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: implementation of XInclude
3 | * Description: API to handle XInclude processing,
4 | * implements the
5 | * World Wide Web Consortium Last Call Working Draft 10 November 2003
6 | * http://www.w3.org/TR/2003/WD-xinclude-20031110
7 | *
8 | * Copy: See Copyright for the status of this software.
9 | *
10 | * Author: Daniel Veillard
11 | */
12 |
13 | #ifndef __XML_XINCLUDE_H__
14 | #define __XML_XINCLUDE_H__
15 |
16 | #include <libxml/xmlversion.h>
17 | #include <libxml/tree.h>
18 |
19 | #ifdef LIBXML_XINCLUDE_ENABLED
20 |
21 | #ifdef __cplusplus
22 | extern "C" {
23 | #endif
24 |
25 | /**
26 | * XINCLUDE_NS:
27 | *
28 | * Macro defining the Xinclude namespace: http://www.w3.org/2003/XInclude
29 | */
30 | #define XINCLUDE_NS (const xmlChar *) "http://www.w3.org/2003/XInclude"
31 | /**
32 | * XINCLUDE_OLD_NS:
33 | *
34 | * Macro defining the draft Xinclude namespace: http://www.w3.org/2001/XInclude
35 | */
36 | #define XINCLUDE_OLD_NS (const xmlChar *) "http://www.w3.org/2001/XInclude"
37 | /**
38 | * XINCLUDE_NODE:
39 | *
40 | * Macro defining "include"
41 | */
42 | #define XINCLUDE_NODE (const xmlChar *) "include"
43 | /**
44 | * XINCLUDE_FALLBACK:
45 | *
46 | * Macro defining "fallback"
47 | */
48 | #define XINCLUDE_FALLBACK (const xmlChar *) "fallback"
49 | /**
50 | * XINCLUDE_HREF:
51 | *
52 | * Macro defining "href"
53 | */
54 | #define XINCLUDE_HREF (const xmlChar *) "href"
55 | /**
56 | * XINCLUDE_PARSE:
57 | *
58 | * Macro defining "parse"
59 | */
60 | #define XINCLUDE_PARSE (const xmlChar *) "parse"
61 | /**
62 | * XINCLUDE_PARSE_XML:
63 | *
64 | * Macro defining "xml"
65 | */
66 | #define XINCLUDE_PARSE_XML (const xmlChar *) "xml"
67 | /**
68 | * XINCLUDE_PARSE_TEXT:
69 | *
70 | * Macro defining "text"
71 | */
72 | #define XINCLUDE_PARSE_TEXT (const xmlChar *) "text"
73 | /**
74 | * XINCLUDE_PARSE_ENCODING:
75 | *
76 | * Macro defining "encoding"
77 | */
78 | #define XINCLUDE_PARSE_ENCODING (const xmlChar *) "encoding"
79 | /**
80 | * XINCLUDE_PARSE_XPOINTER:
81 | *
82 | * Macro defining "xpointer"
83 | */
84 | #define XINCLUDE_PARSE_XPOINTER (const xmlChar *) "xpointer"
85 |
86 | typedef struct _xmlXIncludeCtxt xmlXIncludeCtxt;
87 | typedef xmlXIncludeCtxt *xmlXIncludeCtxtPtr;
88 |
89 | /*
90 | * standalone processing
91 | */
92 | XMLPUBFUN int
93 | xmlXIncludeProcess (xmlDocPtr doc);
94 | XMLPUBFUN int
95 | xmlXIncludeProcessFlags (xmlDocPtr doc,
96 | int flags);
97 | XMLPUBFUN int
98 | xmlXIncludeProcessFlagsData(xmlDocPtr doc,
99 | int flags,
100 | void *data);
101 | XMLPUBFUN int
102 | xmlXIncludeProcessTreeFlagsData(xmlNodePtr tree,
103 | int flags,
104 | void *data);
105 | XMLPUBFUN int
106 | xmlXIncludeProcessTree (xmlNodePtr tree);
107 | XMLPUBFUN int
108 | xmlXIncludeProcessTreeFlags(xmlNodePtr tree,
109 | int flags);
110 | /*
111 | * contextual processing
112 | */
113 | XMLPUBFUN xmlXIncludeCtxtPtr
114 | xmlXIncludeNewContext (xmlDocPtr doc);
115 | XMLPUBFUN int
116 | xmlXIncludeSetFlags (xmlXIncludeCtxtPtr ctxt,
117 | int flags);
118 | XMLPUBFUN void
119 | xmlXIncludeFreeContext (xmlXIncludeCtxtPtr ctxt);
120 | XMLPUBFUN int
121 | xmlXIncludeProcessNode (xmlXIncludeCtxtPtr ctxt,
122 | xmlNodePtr tree);
123 | #ifdef __cplusplus
124 | }
125 | #endif
126 |
127 | #endif /* LIBXML_XINCLUDE_ENABLED */
128 |
129 | #endif /* __XML_XINCLUDE_H__ */
130 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/requests/structures.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | requests.structures
3 | ~~~~~~~~~~~~~~~~~~~
4 |
5 | Data structures that power Requests.
6 | """
7 |
8 | from collections import OrderedDict
9 |
10 | from .compat import Mapping, MutableMapping
11 |
12 |
13 | class CaseInsensitiveDict(MutableMapping):
14 | """A case-insensitive ``dict``-like object.
15 |
16 | Implements all methods and operations of
17 | ``MutableMapping`` as well as dict's ``copy``. Also
18 | provides ``lower_items``.
19 |
20 | All keys are expected to be strings. The structure remembers the
21 | case of the last key to be set, and ``iter(instance)``,
22 | ``keys()``, ``items()``, ``iterkeys()``, and ``iteritems()``
23 | will contain case-sensitive keys. However, querying and contains
24 | testing is case insensitive::
25 |
26 | cid = CaseInsensitiveDict()
27 | cid['Accept'] = 'application/json'
28 | cid['aCCEPT'] == 'application/json' # True
29 | list(cid) == ['Accept'] # True
30 |
31 | For example, ``headers['content-encoding']`` will return the
32 | value of a ``'Content-Encoding'`` response header, regardless
33 | of how the header name was originally stored.
34 |
35 | If the constructor, ``.update``, or equality comparison
36 | operations are given keys that have equal ``.lower()``s, the
37 | behavior is undefined.
38 | """
39 |
40 | def __init__(self, data=None, **kwargs):
41 | self._store = OrderedDict()
42 | if data is None:
43 | data = {}
44 | self.update(data, **kwargs)
45 |
46 | def __setitem__(self, key, value):
47 | # Use the lowercased key for lookups, but store the actual
48 | # key alongside the value.
49 | self._store[key.lower()] = (key, value)
50 |
51 | def __getitem__(self, key):
52 | return self._store[key.lower()][1]
53 |
54 | def __delitem__(self, key):
55 | del self._store[key.lower()]
56 |
57 | def __iter__(self):
58 | return (casedkey for casedkey, mappedvalue in self._store.values())
59 |
60 | def __len__(self):
61 | return len(self._store)
62 |
63 | def lower_items(self):
64 | """Like iteritems(), but with all lowercase keys."""
65 | return ((lowerkey, keyval[1]) for (lowerkey, keyval) in self._store.items())
66 |
67 | def __eq__(self, other):
68 | if isinstance(other, Mapping):
69 | other = CaseInsensitiveDict(other)
70 | else:
71 | return NotImplemented
72 | # Compare insensitively
73 | return dict(self.lower_items()) == dict(other.lower_items())
74 |
75 | # Copy is required
76 | def copy(self):
77 | return CaseInsensitiveDict(self._store.values())
78 |
79 | def __repr__(self):
80 | return str(dict(self.items()))
81 |
82 |
83 | class LookupDict(dict):
84 | """Dictionary lookup object."""
85 |
86 | def __init__(self, name=None):
87 | self.name = name
88 | super().__init__()
89 |
90 | def __repr__(self):
91 | return f"<lookup '{self.name}'>"
92 |
93 | def __getitem__(self, key):
94 | # We allow fall-through here, so values default to None
95 |
96 | return self.__dict__.get(key, None)
97 |
98 | def get(self, key, default=None):
99 | return self.__dict__.get(key, default)
100 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/requests/structures.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | requests.structures
3 | ~~~~~~~~~~~~~~~~~~~
4 |
5 | Data structures that power Requests.
6 | """
7 |
8 | from collections import OrderedDict
9 |
10 | from .compat import Mapping, MutableMapping
11 |
12 |
13 | class CaseInsensitiveDict(MutableMapping):
14 | """A case-insensitive ``dict``-like object.
15 |
16 | Implements all methods and operations of
17 | ``MutableMapping`` as well as dict's ``copy``. Also
18 | provides ``lower_items``.
19 |
20 | All keys are expected to be strings. The structure remembers the
21 | case of the last key to be set, and ``iter(instance)``,
22 | ``keys()``, ``items()``, ``iterkeys()``, and ``iteritems()``
23 | will contain case-sensitive keys. However, querying and contains
24 | testing is case insensitive::
25 |
26 | cid = CaseInsensitiveDict()
27 | cid['Accept'] = 'application/json'
28 | cid['aCCEPT'] == 'application/json' # True
29 | list(cid) == ['Accept'] # True
30 |
31 | For example, ``headers['content-encoding']`` will return the
32 | value of a ``'Content-Encoding'`` response header, regardless
33 | of how the header name was originally stored.
34 |
35 | If the constructor, ``.update``, or equality comparison
36 | operations are given keys that have equal ``.lower()``s, the
37 | behavior is undefined.
38 | """
39 |
40 | def __init__(self, data=None, **kwargs):
41 | self._store = OrderedDict()
42 | if data is None:
43 | data = {}
44 | self.update(data, **kwargs)
45 |
46 | def __setitem__(self, key, value):
47 | # Use the lowercased key for lookups, but store the actual
48 | # key alongside the value.
49 | self._store[key.lower()] = (key, value)
50 |
51 | def __getitem__(self, key):
52 | return self._store[key.lower()][1]
53 |
54 | def __delitem__(self, key):
55 | del self._store[key.lower()]
56 |
57 | def __iter__(self):
58 | return (casedkey for casedkey, mappedvalue in self._store.values())
59 |
60 | def __len__(self):
61 | return len(self._store)
62 |
63 | def lower_items(self):
64 | """Like iteritems(), but with all lowercase keys."""
65 | return ((lowerkey, keyval[1]) for (lowerkey, keyval) in self._store.items())
66 |
67 | def __eq__(self, other):
68 | if isinstance(other, Mapping):
69 | other = CaseInsensitiveDict(other)
70 | else:
71 | return NotImplemented
72 | # Compare insensitively
73 | return dict(self.lower_items()) == dict(other.lower_items())
74 |
75 | # Copy is required
76 | def copy(self):
77 | return CaseInsensitiveDict(self._store.values())
78 |
79 | def __repr__(self):
80 | return str(dict(self.items()))
81 |
82 |
83 | class LookupDict(dict):
84 | """Dictionary lookup object."""
85 |
86 | def __init__(self, name=None):
87 | self.name = name
88 | super().__init__()
89 |
90 | def __repr__(self):
91 | return f"<lookup '{self.name}'>"
92 |
93 | def __getitem__(self, key):
94 | # We allow fall-through here, so values default to None
95 |
96 | return self.__dict__.get(key, None)
97 |
98 | def get(self, key, default=None):
99 | return self.__dict__.get(key, default)
100 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/werkzeug/datastructures/etag.py:
--------------------------------------------------------------------------------
```python
1 | from __future__ import annotations
2 |
3 | from collections.abc import Collection
4 |
5 |
6 | class ETags(Collection):
7 | """A set that can be used to check if one etag is present in a collection
8 | of etags.
9 | """
10 |
11 | def __init__(self, strong_etags=None, weak_etags=None, star_tag=False):
12 | if not star_tag and strong_etags:
13 | self._strong = frozenset(strong_etags)
14 | else:
15 | self._strong = frozenset()
16 |
17 | self._weak = frozenset(weak_etags or ())
18 | self.star_tag = star_tag
19 |
20 | def as_set(self, include_weak=False):
21 | """Convert the `ETags` object into a python set. Per default all the
22 | weak etags are not part of this set."""
23 | rv = set(self._strong)
24 | if include_weak:
25 | rv.update(self._weak)
26 | return rv
27 |
28 | def is_weak(self, etag):
29 | """Check if an etag is weak."""
30 | return etag in self._weak
31 |
32 | def is_strong(self, etag):
33 | """Check if an etag is strong."""
34 | return etag in self._strong
35 |
36 | def contains_weak(self, etag):
37 | """Check if an etag is part of the set including weak and strong tags."""
38 | return self.is_weak(etag) or self.contains(etag)
39 |
40 | def contains(self, etag):
41 | """Check if an etag is part of the set ignoring weak tags.
42 | It is also possible to use the ``in`` operator.
43 | """
44 | if self.star_tag:
45 | return True
46 | return self.is_strong(etag)
47 |
48 | def contains_raw(self, etag):
49 | """When passed a quoted tag it will check if this tag is part of the
50 | set. If the tag is weak it is checked against weak and strong tags,
51 | otherwise strong only."""
52 | from ..http import unquote_etag
53 |
54 | etag, weak = unquote_etag(etag)
55 | if weak:
56 | return self.contains_weak(etag)
57 | return self.contains(etag)
58 |
59 | def to_header(self):
60 | """Convert the etags set into a HTTP header string."""
61 | if self.star_tag:
62 | return "*"
63 | return ", ".join(
64 | [f'"{x}"' for x in self._strong] + [f'W/"{x}"' for x in self._weak]
65 | )
66 |
67 | def __call__(self, etag=None, data=None, include_weak=False):
68 | if [etag, data].count(None) != 1:
69 | raise TypeError("either tag or data required, but at least one")
70 | if etag is None:
71 | from ..http import generate_etag
72 |
73 | etag = generate_etag(data)
74 | if include_weak:
75 | if etag in self._weak:
76 | return True
77 | return etag in self._strong
78 |
79 | def __bool__(self):
80 | return bool(self.star_tag or self._strong or self._weak)
81 |
82 | def __str__(self):
83 | return self.to_header()
84 |
85 | def __len__(self):
86 | return len(self._strong)
87 |
88 | def __iter__(self):
89 | return iter(self._strong)
90 |
91 | def __contains__(self, etag):
92 | return self.contains(etag)
93 |
94 | def __repr__(self):
95 | return f"<{type(self).__name__} {str(self)!r}>"
96 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/tomli/_re.py:
--------------------------------------------------------------------------------
```python
1 | # SPDX-License-Identifier: MIT
2 | # SPDX-FileCopyrightText: 2021 Taneli Hukkinen
3 | # Licensed to PSF under a Contributor Agreement.
4 |
5 | from __future__ import annotations
6 |
7 | from datetime import date, datetime, time, timedelta, timezone, tzinfo
8 | from functools import lru_cache
9 | import re
10 | from typing import Any
11 |
12 | from ._types import ParseFloat
13 |
14 | # E.g.
15 | # - 00:32:00.999999
16 | # - 00:32:00
17 | _TIME_RE_STR = r"([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])(?:\.([0-9]{1,6})[0-9]*)?"
18 |
19 | RE_NUMBER = re.compile(
20 | r"""
21 | 0
22 | (?:
23 | x[0-9A-Fa-f](?:_?[0-9A-Fa-f])* # hex
24 | |
25 | b[01](?:_?[01])* # bin
26 | |
27 | o[0-7](?:_?[0-7])* # oct
28 | )
29 | |
30 | [+-]?(?:0|[1-9](?:_?[0-9])*) # dec, integer part
31 | (?P<floatpart>
32 | (?:\.[0-9](?:_?[0-9])*)? # optional fractional part
33 | (?:[eE][+-]?[0-9](?:_?[0-9])*)? # optional exponent part
34 | )
35 | """,
36 | flags=re.VERBOSE,
37 | )
38 | RE_LOCALTIME = re.compile(_TIME_RE_STR)
39 | RE_DATETIME = re.compile(
40 | rf"""
41 | ([0-9]{{4}})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01]) # date, e.g. 1988-10-27
42 | (?:
43 | [Tt ]
44 | {_TIME_RE_STR}
45 | (?:([Zz])|([+-])([01][0-9]|2[0-3]):([0-5][0-9]))? # optional time offset
46 | )?
47 | """,
48 | flags=re.VERBOSE,
49 | )
50 |
51 |
52 | def match_to_datetime(match: re.Match) -> datetime | date:
53 | """Convert a `RE_DATETIME` match to `datetime.datetime` or `datetime.date`.
54 |
55 | Raises ValueError if the match does not correspond to a valid date
56 | or datetime.
57 | """
58 | (
59 | year_str,
60 | month_str,
61 | day_str,
62 | hour_str,
63 | minute_str,
64 | sec_str,
65 | micros_str,
66 | zulu_time,
67 | offset_sign_str,
68 | offset_hour_str,
69 | offset_minute_str,
70 | ) = match.groups()
71 | year, month, day = int(year_str), int(month_str), int(day_str)
72 | if hour_str is None:
73 | return date(year, month, day)
74 | hour, minute, sec = int(hour_str), int(minute_str), int(sec_str)
75 | micros = int(micros_str.ljust(6, "0")) if micros_str else 0
76 | if offset_sign_str:
77 | tz: tzinfo | None = cached_tz(
78 | offset_hour_str, offset_minute_str, offset_sign_str
79 | )
80 | elif zulu_time:
81 | tz = timezone.utc
82 | else: # local date-time
83 | tz = None
84 | return datetime(year, month, day, hour, minute, sec, micros, tzinfo=tz)
85 |
86 |
87 | @lru_cache(maxsize=None)
88 | def cached_tz(hour_str: str, minute_str: str, sign_str: str) -> timezone:
89 | sign = 1 if sign_str == "+" else -1
90 | return timezone(
91 | timedelta(
92 | hours=sign * int(hour_str),
93 | minutes=sign * int(minute_str),
94 | )
95 | )
96 |
97 |
98 | def match_to_localtime(match: re.Match) -> time:
99 | hour_str, minute_str, sec_str, micros_str = match.groups()
100 | micros = int(micros_str.ljust(6, "0")) if micros_str else 0
101 | return time(int(hour_str), int(minute_str), int(sec_str), micros)
102 |
103 |
104 | def match_to_number(match: re.Match, parse_float: ParseFloat) -> Any:
105 | if match.group("floatpart"):
106 | return parse_float(match.group())
107 | return int(match.group(), 0)
108 |
```