#
tokens: 48877/50000 11/808 files (page 14/168)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 14 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/entities.h:
--------------------------------------------------------------------------------

```
  1 | /*
  2 |  * Summary: interface for the XML entities handling
  3 |  * Description: this module provides some of the entity API needed
  4 |  *              for the parser and applications.
  5 |  *
  6 |  * Copy: See Copyright for the status of this software.
  7 |  *
  8 |  * Author: Daniel Veillard
  9 |  */
 10 | 
 11 | #ifndef __XML_ENTITIES_H__
 12 | #define __XML_ENTITIES_H__
 13 | 
 14 | #include <libxml/xmlversion.h>
 15 | #define XML_TREE_INTERNALS
 16 | #include <libxml/tree.h>
 17 | #undef XML_TREE_INTERNALS
 18 | 
 19 | #ifdef __cplusplus
 20 | extern "C" {
 21 | #endif
 22 | 
 23 | /*
 24 |  * The different valid entity types.
 25 |  */
 26 | typedef enum {
 27 |     XML_INTERNAL_GENERAL_ENTITY = 1,
 28 |     XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2,
 29 |     XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3,
 30 |     XML_INTERNAL_PARAMETER_ENTITY = 4,
 31 |     XML_EXTERNAL_PARAMETER_ENTITY = 5,
 32 |     XML_INTERNAL_PREDEFINED_ENTITY = 6
 33 | } xmlEntityType;
 34 | 
 35 | /*
 36 |  * An unit of storage for an entity, contains the string, the value
 37 |  * and the linkind data needed for the linking in the hash table.
 38 |  */
 39 | 
 40 | struct _xmlEntity {
 41 |     void           *_private;	        /* application data */
 42 |     xmlElementType          type;       /* XML_ENTITY_DECL, must be second ! */
 43 |     const xmlChar          *name;	/* Entity name */
 44 |     struct _xmlNode    *children;	/* First child link */
 45 |     struct _xmlNode        *last;	/* Last child link */
 46 |     struct _xmlDtd       *parent;	/* -> DTD */
 47 |     struct _xmlNode        *next;	/* next sibling link  */
 48 |     struct _xmlNode        *prev;	/* previous sibling link  */
 49 |     struct _xmlDoc          *doc;       /* the containing document */
 50 | 
 51 |     xmlChar                *orig;	/* content without ref substitution */
 52 |     xmlChar             *content;	/* content or ndata if unparsed */
 53 |     int                   length;	/* the content length */
 54 |     xmlEntityType          etype;	/* The entity type */
 55 |     const xmlChar    *ExternalID;	/* External identifier for PUBLIC */
 56 |     const xmlChar      *SystemID;	/* URI for a SYSTEM or PUBLIC Entity */
 57 | 
 58 |     struct _xmlEntity     *nexte;	/* unused */
 59 |     const xmlChar           *URI;	/* the full URI as computed */
 60 |     int                    owner;	/* does the entity own the childrens */
 61 |     int                    flags;       /* various flags */
 62 |     unsigned long   expandedSize;       /* expanded size */
 63 | };
 64 | 
 65 | /*
 66 |  * All entities are stored in an hash table.
 67 |  * There is 2 separate hash tables for global and parameter entities.
 68 |  */
 69 | 
 70 | typedef struct _xmlHashTable xmlEntitiesTable;
 71 | typedef xmlEntitiesTable *xmlEntitiesTablePtr;
 72 | 
 73 | /*
 74 |  * External functions:
 75 |  */
 76 | 
 77 | #ifdef LIBXML_LEGACY_ENABLED
 78 | XML_DEPRECATED
 79 | XMLPUBFUN void
 80 | 		xmlInitializePredefinedEntities	(void);
 81 | #endif /* LIBXML_LEGACY_ENABLED */
 82 | 
 83 | XMLPUBFUN xmlEntityPtr
 84 | 			xmlNewEntity		(xmlDocPtr doc,
 85 | 						 const xmlChar *name,
 86 | 						 int type,
 87 | 						 const xmlChar *ExternalID,
 88 | 						 const xmlChar *SystemID,
 89 | 						 const xmlChar *content);
 90 | XMLPUBFUN void
 91 | 			xmlFreeEntity		(xmlEntityPtr entity);
 92 | XMLPUBFUN xmlEntityPtr
 93 | 			xmlAddDocEntity		(xmlDocPtr doc,
 94 | 						 const xmlChar *name,
 95 | 						 int type,
 96 | 						 const xmlChar *ExternalID,
 97 | 						 const xmlChar *SystemID,
 98 | 						 const xmlChar *content);
 99 | XMLPUBFUN xmlEntityPtr
100 | 			xmlAddDtdEntity		(xmlDocPtr doc,
101 | 						 const xmlChar *name,
102 | 						 int type,
103 | 						 const xmlChar *ExternalID,
104 | 						 const xmlChar *SystemID,
105 | 						 const xmlChar *content);
106 | XMLPUBFUN xmlEntityPtr
107 | 			xmlGetPredefinedEntity	(const xmlChar *name);
108 | XMLPUBFUN xmlEntityPtr
109 | 			xmlGetDocEntity		(const xmlDoc *doc,
110 | 						 const xmlChar *name);
111 | XMLPUBFUN xmlEntityPtr
112 | 			xmlGetDtdEntity		(xmlDocPtr doc,
113 | 						 const xmlChar *name);
114 | XMLPUBFUN xmlEntityPtr
115 | 			xmlGetParameterEntity	(xmlDocPtr doc,
116 | 						 const xmlChar *name);
117 | #ifdef LIBXML_LEGACY_ENABLED
118 | XML_DEPRECATED
119 | XMLPUBFUN const xmlChar *
120 | 			xmlEncodeEntities	(xmlDocPtr doc,
121 | 						 const xmlChar *input);
122 | #endif /* LIBXML_LEGACY_ENABLED */
123 | XMLPUBFUN xmlChar *
124 | 			xmlEncodeEntitiesReentrant(xmlDocPtr doc,
125 | 						 const xmlChar *input);
126 | XMLPUBFUN xmlChar *
127 | 			xmlEncodeSpecialChars	(const xmlDoc *doc,
128 | 						 const xmlChar *input);
129 | XMLPUBFUN xmlEntitiesTablePtr
130 | 			xmlCreateEntitiesTable	(void);
131 | #ifdef LIBXML_TREE_ENABLED
132 | XMLPUBFUN xmlEntitiesTablePtr
133 | 			xmlCopyEntitiesTable	(xmlEntitiesTablePtr table);
134 | #endif /* LIBXML_TREE_ENABLED */
135 | XMLPUBFUN void
136 | 			xmlFreeEntitiesTable	(xmlEntitiesTablePtr table);
137 | #ifdef LIBXML_OUTPUT_ENABLED
138 | XMLPUBFUN void
139 | 			xmlDumpEntitiesTable	(xmlBufferPtr buf,
140 | 						 xmlEntitiesTablePtr table);
141 | XMLPUBFUN void
142 | 			xmlDumpEntityDecl	(xmlBufferPtr buf,
143 | 						 xmlEntityPtr ent);
144 | #endif /* LIBXML_OUTPUT_ENABLED */
145 | #ifdef LIBXML_LEGACY_ENABLED
146 | XMLPUBFUN void
147 | 			xmlCleanupPredefinedEntities(void);
148 | #endif /* LIBXML_LEGACY_ENABLED */
149 | 
150 | 
151 | #ifdef __cplusplus
152 | }
153 | #endif
154 | 
155 | # endif /* __XML_ENTITIES_H__ */
156 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal.py:
--------------------------------------------------------------------------------

```python
  1 | """
  2 |     pygments.formatters.terminal
  3 |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  4 | 
  5 |     Formatter for terminal output with ANSI sequences.
  6 | 
  7 |     :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
  8 |     :license: BSD, see LICENSE for details.
  9 | """
 10 | 
 11 | from pip._vendor.pygments.formatter import Formatter
 12 | from pip._vendor.pygments.token import Keyword, Name, Comment, String, Error, \
 13 |     Number, Operator, Generic, Token, Whitespace
 14 | from pip._vendor.pygments.console import ansiformat
 15 | from pip._vendor.pygments.util import get_choice_opt
 16 | 
 17 | 
 18 | __all__ = ['TerminalFormatter']
 19 | 
 20 | 
 21 | #: Map token types to a tuple of color values for light and dark
 22 | #: backgrounds.
 23 | TERMINAL_COLORS = {
 24 |     Token:              ('',            ''),
 25 | 
 26 |     Whitespace:         ('gray',   'brightblack'),
 27 |     Comment:            ('gray',   'brightblack'),
 28 |     Comment.Preproc:    ('cyan',        'brightcyan'),
 29 |     Keyword:            ('blue',    'brightblue'),
 30 |     Keyword.Type:       ('cyan',        'brightcyan'),
 31 |     Operator.Word:      ('magenta',      'brightmagenta'),
 32 |     Name.Builtin:       ('cyan',        'brightcyan'),
 33 |     Name.Function:      ('green',   'brightgreen'),
 34 |     Name.Namespace:     ('_cyan_',      '_brightcyan_'),
 35 |     Name.Class:         ('_green_', '_brightgreen_'),
 36 |     Name.Exception:     ('cyan',        'brightcyan'),
 37 |     Name.Decorator:     ('brightblack',    'gray'),
 38 |     Name.Variable:      ('red',     'brightred'),
 39 |     Name.Constant:      ('red',     'brightred'),
 40 |     Name.Attribute:     ('cyan',        'brightcyan'),
 41 |     Name.Tag:           ('brightblue',        'brightblue'),
 42 |     String:             ('yellow',       'yellow'),
 43 |     Number:             ('blue',    'brightblue'),
 44 | 
 45 |     Generic.Deleted:    ('brightred',        'brightred'),
 46 |     Generic.Inserted:   ('green',  'brightgreen'),
 47 |     Generic.Heading:    ('**',         '**'),
 48 |     Generic.Subheading: ('*magenta*',   '*brightmagenta*'),
 49 |     Generic.Prompt:     ('**',         '**'),
 50 |     Generic.Error:      ('brightred',        'brightred'),
 51 | 
 52 |     Error:              ('_brightred_',      '_brightred_'),
 53 | }
 54 | 
 55 | 
 56 | class TerminalFormatter(Formatter):
 57 |     r"""
 58 |     Format tokens with ANSI color sequences, for output in a text console.
 59 |     Color sequences are terminated at newlines, so that paging the output
 60 |     works correctly.
 61 | 
 62 |     The `get_style_defs()` method doesn't do anything special since there is
 63 |     no support for common styles.
 64 | 
 65 |     Options accepted:
 66 | 
 67 |     `bg`
 68 |         Set to ``"light"`` or ``"dark"`` depending on the terminal's background
 69 |         (default: ``"light"``).
 70 | 
 71 |     `colorscheme`
 72 |         A dictionary mapping token types to (lightbg, darkbg) color names or
 73 |         ``None`` (default: ``None`` = use builtin colorscheme).
 74 | 
 75 |     `linenos`
 76 |         Set to ``True`` to have line numbers on the terminal output as well
 77 |         (default: ``False`` = no line numbers).
 78 |     """
 79 |     name = 'Terminal'
 80 |     aliases = ['terminal', 'console']
 81 |     filenames = []
 82 | 
 83 |     def __init__(self, **options):
 84 |         Formatter.__init__(self, **options)
 85 |         self.darkbg = get_choice_opt(options, 'bg',
 86 |                                      ['light', 'dark'], 'light') == 'dark'
 87 |         self.colorscheme = options.get('colorscheme', None) or TERMINAL_COLORS
 88 |         self.linenos = options.get('linenos', False)
 89 |         self._lineno = 0
 90 | 
 91 |     def format(self, tokensource, outfile):
 92 |         return Formatter.format(self, tokensource, outfile)
 93 | 
 94 |     def _write_lineno(self, outfile):
 95 |         self._lineno += 1
 96 |         outfile.write("%s%04d: " % (self._lineno != 1 and '\n' or '', self._lineno))
 97 | 
 98 |     def _get_color(self, ttype):
 99 |         # self.colorscheme is a dict containing usually generic types, so we
100 |         # have to walk the tree of dots.  The base Token type must be a key,
101 |         # even if it's empty string, as in the default above.
102 |         colors = self.colorscheme.get(ttype)
103 |         while colors is None:
104 |             ttype = ttype.parent
105 |             colors = self.colorscheme.get(ttype)
106 |         return colors[self.darkbg]
107 | 
108 |     def format_unencoded(self, tokensource, outfile):
109 |         if self.linenos:
110 |             self._write_lineno(outfile)
111 | 
112 |         for ttype, value in tokensource:
113 |             color = self._get_color(ttype)
114 | 
115 |             for line in value.splitlines(True):
116 |                 if color:
117 |                     outfile.write(ansiformat(color, line.rstrip('\n')))
118 |                 else:
119 |                     outfile.write(line.rstrip('\n'))
120 |                 if line.endswith('\n'):
121 |                     if self.linenos:
122 |                         self._write_lineno(outfile)
123 |                     else:
124 |                         outfile.write('\n')
125 | 
126 |         if self.linenos:
127 |             outfile.write("\n")
128 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/commands/index.py:
--------------------------------------------------------------------------------

```python
  1 | import logging
  2 | from optparse import Values
  3 | from typing import Any, Iterable, List, Optional
  4 | 
  5 | from pip._vendor.packaging.version import Version
  6 | 
  7 | from pip._internal.cli import cmdoptions
  8 | from pip._internal.cli.req_command import IndexGroupCommand
  9 | from pip._internal.cli.status_codes import ERROR, SUCCESS
 10 | from pip._internal.commands.search import print_dist_installation_info
 11 | from pip._internal.exceptions import CommandError, DistributionNotFound, PipError
 12 | from pip._internal.index.collector import LinkCollector
 13 | from pip._internal.index.package_finder import PackageFinder
 14 | from pip._internal.models.selection_prefs import SelectionPreferences
 15 | from pip._internal.models.target_python import TargetPython
 16 | from pip._internal.network.session import PipSession
 17 | from pip._internal.utils.misc import write_output
 18 | 
 19 | logger = logging.getLogger(__name__)
 20 | 
 21 | 
 22 | class IndexCommand(IndexGroupCommand):
 23 |     """
 24 |     Inspect information available from package indexes.
 25 |     """
 26 | 
 27 |     ignore_require_venv = True
 28 |     usage = """
 29 |         %prog versions <package>
 30 |     """
 31 | 
 32 |     def add_options(self) -> None:
 33 |         cmdoptions.add_target_python_options(self.cmd_opts)
 34 | 
 35 |         self.cmd_opts.add_option(cmdoptions.ignore_requires_python())
 36 |         self.cmd_opts.add_option(cmdoptions.pre())
 37 |         self.cmd_opts.add_option(cmdoptions.no_binary())
 38 |         self.cmd_opts.add_option(cmdoptions.only_binary())
 39 | 
 40 |         index_opts = cmdoptions.make_option_group(
 41 |             cmdoptions.index_group,
 42 |             self.parser,
 43 |         )
 44 | 
 45 |         self.parser.insert_option_group(0, index_opts)
 46 |         self.parser.insert_option_group(0, self.cmd_opts)
 47 | 
 48 |     def run(self, options: Values, args: List[str]) -> int:
 49 |         handlers = {
 50 |             "versions": self.get_available_package_versions,
 51 |         }
 52 | 
 53 |         logger.warning(
 54 |             "pip index is currently an experimental command. "
 55 |             "It may be removed/changed in a future release "
 56 |             "without prior warning."
 57 |         )
 58 | 
 59 |         # Determine action
 60 |         if not args or args[0] not in handlers:
 61 |             logger.error(
 62 |                 "Need an action (%s) to perform.",
 63 |                 ", ".join(sorted(handlers)),
 64 |             )
 65 |             return ERROR
 66 | 
 67 |         action = args[0]
 68 | 
 69 |         # Error handling happens here, not in the action-handlers.
 70 |         try:
 71 |             handlers[action](options, args[1:])
 72 |         except PipError as e:
 73 |             logger.error(e.args[0])
 74 |             return ERROR
 75 | 
 76 |         return SUCCESS
 77 | 
 78 |     def _build_package_finder(
 79 |         self,
 80 |         options: Values,
 81 |         session: PipSession,
 82 |         target_python: Optional[TargetPython] = None,
 83 |         ignore_requires_python: Optional[bool] = None,
 84 |     ) -> PackageFinder:
 85 |         """
 86 |         Create a package finder appropriate to the index command.
 87 |         """
 88 |         link_collector = LinkCollector.create(session, options=options)
 89 | 
 90 |         # Pass allow_yanked=False to ignore yanked versions.
 91 |         selection_prefs = SelectionPreferences(
 92 |             allow_yanked=False,
 93 |             allow_all_prereleases=options.pre,
 94 |             ignore_requires_python=ignore_requires_python,
 95 |         )
 96 | 
 97 |         return PackageFinder.create(
 98 |             link_collector=link_collector,
 99 |             selection_prefs=selection_prefs,
100 |             target_python=target_python,
101 |         )
102 | 
103 |     def get_available_package_versions(self, options: Values, args: List[Any]) -> None:
104 |         if len(args) != 1:
105 |             raise CommandError("You need to specify exactly one argument")
106 | 
107 |         target_python = cmdoptions.make_target_python(options)
108 |         query = args[0]
109 | 
110 |         with self._build_session(options) as session:
111 |             finder = self._build_package_finder(
112 |                 options=options,
113 |                 session=session,
114 |                 target_python=target_python,
115 |                 ignore_requires_python=options.ignore_requires_python,
116 |             )
117 | 
118 |             versions: Iterable[Version] = (
119 |                 candidate.version for candidate in finder.find_all_candidates(query)
120 |             )
121 | 
122 |             if not options.pre:
123 |                 # Remove prereleases
124 |                 versions = (
125 |                     version for version in versions if not version.is_prerelease
126 |                 )
127 |             versions = set(versions)
128 | 
129 |             if not versions:
130 |                 raise DistributionNotFound(
131 |                     f"No matching distribution found for {query}"
132 |                 )
133 | 
134 |             formatted_versions = [str(ver) for ver in sorted(versions, reverse=True)]
135 |             latest = formatted_versions[0]
136 | 
137 |         write_output(f"{query} ({latest})")
138 |         write_output("Available versions: {}".format(", ".join(formatted_versions)))
139 |         print_dist_installation_info(query, latest)
140 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/werkzeug/routing/__init__.py:
--------------------------------------------------------------------------------

```python
  1 | """When it comes to combining multiple controller or view functions
  2 | (however you want to call them) you need a dispatcher. A simple way
  3 | would be applying regular expression tests on the ``PATH_INFO`` and
  4 | calling registered callback functions that return the value then.
  5 | 
  6 | This module implements a much more powerful system than simple regular
  7 | expression matching because it can also convert values in the URLs and
  8 | build URLs.
  9 | 
 10 | Here a simple example that creates a URL map for an application with
 11 | two subdomains (www and kb) and some URL rules:
 12 | 
 13 | .. code-block:: python
 14 | 
 15 |     m = Map([
 16 |         # Static URLs
 17 |         Rule('/', endpoint='static/index'),
 18 |         Rule('/about', endpoint='static/about'),
 19 |         Rule('/help', endpoint='static/help'),
 20 |         # Knowledge Base
 21 |         Subdomain('kb', [
 22 |             Rule('/', endpoint='kb/index'),
 23 |             Rule('/browse/', endpoint='kb/browse'),
 24 |             Rule('/browse/<int:id>/', endpoint='kb/browse'),
 25 |             Rule('/browse/<int:id>/<int:page>', endpoint='kb/browse')
 26 |         ])
 27 |     ], default_subdomain='www')
 28 | 
 29 | If the application doesn't use subdomains it's perfectly fine to not set
 30 | the default subdomain and not use the `Subdomain` rule factory. The
 31 | endpoint in the rules can be anything, for example import paths or
 32 | unique identifiers. The WSGI application can use those endpoints to get the
 33 | handler for that URL.  It doesn't have to be a string at all but it's
 34 | recommended.
 35 | 
 36 | Now it's possible to create a URL adapter for one of the subdomains and
 37 | build URLs:
 38 | 
 39 | .. code-block:: python
 40 | 
 41 |     c = m.bind('example.com')
 42 | 
 43 |     c.build("kb/browse", dict(id=42))
 44 |     'http://kb.example.com/browse/42/'
 45 | 
 46 |     c.build("kb/browse", dict())
 47 |     'http://kb.example.com/browse/'
 48 | 
 49 |     c.build("kb/browse", dict(id=42, page=3))
 50 |     'http://kb.example.com/browse/42/3'
 51 | 
 52 |     c.build("static/about")
 53 |     '/about'
 54 | 
 55 |     c.build("static/index", force_external=True)
 56 |     'http://www.example.com/'
 57 | 
 58 |     c = m.bind('example.com', subdomain='kb')
 59 | 
 60 |     c.build("static/about")
 61 |     'http://www.example.com/about'
 62 | 
 63 | The first argument to bind is the server name *without* the subdomain.
 64 | Per default it will assume that the script is mounted on the root, but
 65 | often that's not the case so you can provide the real mount point as
 66 | second argument:
 67 | 
 68 | .. code-block:: python
 69 | 
 70 |     c = m.bind('example.com', '/applications/example')
 71 | 
 72 | The third argument can be the subdomain, if not given the default
 73 | subdomain is used.  For more details about binding have a look at the
 74 | documentation of the `MapAdapter`.
 75 | 
 76 | And here is how you can match URLs:
 77 | 
 78 | .. code-block:: python
 79 | 
 80 |     c = m.bind('example.com')
 81 | 
 82 |     c.match("/")
 83 |     ('static/index', {})
 84 | 
 85 |     c.match("/about")
 86 |     ('static/about', {})
 87 | 
 88 |     c = m.bind('example.com', '/', 'kb')
 89 | 
 90 |     c.match("/")
 91 |     ('kb/index', {})
 92 | 
 93 |     c.match("/browse/42/23")
 94 |     ('kb/browse', {'id': 42, 'page': 23})
 95 | 
 96 | If matching fails you get a ``NotFound`` exception, if the rule thinks
 97 | it's a good idea to redirect (for example because the URL was defined
 98 | to have a slash at the end but the request was missing that slash) it
 99 | will raise a ``RequestRedirect`` exception. Both are subclasses of
100 | ``HTTPException`` so you can use those errors as responses in the
101 | application.
102 | 
103 | If matching succeeded but the URL rule was incompatible to the given
104 | method (for example there were only rules for ``GET`` and ``HEAD`` but
105 | routing tried to match a ``POST`` request) a ``MethodNotAllowed``
106 | exception is raised.
107 | """
108 | 
109 | from .converters import AnyConverter as AnyConverter
110 | from .converters import BaseConverter as BaseConverter
111 | from .converters import FloatConverter as FloatConverter
112 | from .converters import IntegerConverter as IntegerConverter
113 | from .converters import PathConverter as PathConverter
114 | from .converters import UnicodeConverter as UnicodeConverter
115 | from .converters import UUIDConverter as UUIDConverter
116 | from .converters import ValidationError as ValidationError
117 | from .exceptions import BuildError as BuildError
118 | from .exceptions import NoMatch as NoMatch
119 | from .exceptions import RequestAliasRedirect as RequestAliasRedirect
120 | from .exceptions import RequestPath as RequestPath
121 | from .exceptions import RequestRedirect as RequestRedirect
122 | from .exceptions import RoutingException as RoutingException
123 | from .exceptions import WebsocketMismatch as WebsocketMismatch
124 | from .map import Map as Map
125 | from .map import MapAdapter as MapAdapter
126 | from .matcher import StateMachineMatcher as StateMachineMatcher
127 | from .rules import EndpointPrefix as EndpointPrefix
128 | from .rules import parse_converter_args as parse_converter_args
129 | from .rules import Rule as Rule
130 | from .rules import RuleFactory as RuleFactory
131 | from .rules import RuleTemplate as RuleTemplate
132 | from .rules import RuleTemplateFactory as RuleTemplateFactory
133 | from .rules import Subdomain as Subdomain
134 | from .rules import Submount as Submount
135 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/heuristics.py:
--------------------------------------------------------------------------------

```python
  1 | # SPDX-FileCopyrightText: 2015 Eric Larson
  2 | #
  3 | # SPDX-License-Identifier: Apache-2.0
  4 | from __future__ import annotations
  5 | 
  6 | import calendar
  7 | import time
  8 | from datetime import datetime, timedelta, timezone
  9 | from email.utils import formatdate, parsedate, parsedate_tz
 10 | from typing import TYPE_CHECKING, Any, Mapping
 11 | 
 12 | if TYPE_CHECKING:
 13 |     from pip._vendor.urllib3 import HTTPResponse
 14 | 
 15 | TIME_FMT = "%a, %d %b %Y %H:%M:%S GMT"
 16 | 
 17 | 
 18 | def expire_after(delta: timedelta, date: datetime | None = None) -> datetime:
 19 |     date = date or datetime.now(timezone.utc)
 20 |     return date + delta
 21 | 
 22 | 
 23 | def datetime_to_header(dt: datetime) -> str:
 24 |     return formatdate(calendar.timegm(dt.timetuple()))
 25 | 
 26 | 
 27 | class BaseHeuristic:
 28 |     def warning(self, response: HTTPResponse) -> str | None:
 29 |         """
 30 |         Return a valid 1xx warning header value describing the cache
 31 |         adjustments.
 32 | 
 33 |         The response is provided too allow warnings like 113
 34 |         http://tools.ietf.org/html/rfc7234#section-5.5.4 where we need
 35 |         to explicitly say response is over 24 hours old.
 36 |         """
 37 |         return '110 - "Response is Stale"'
 38 | 
 39 |     def update_headers(self, response: HTTPResponse) -> dict[str, str]:
 40 |         """Update the response headers with any new headers.
 41 | 
 42 |         NOTE: This SHOULD always include some Warning header to
 43 |               signify that the response was cached by the client, not
 44 |               by way of the provided headers.
 45 |         """
 46 |         return {}
 47 | 
 48 |     def apply(self, response: HTTPResponse) -> HTTPResponse:
 49 |         updated_headers = self.update_headers(response)
 50 | 
 51 |         if updated_headers:
 52 |             response.headers.update(updated_headers)
 53 |             warning_header_value = self.warning(response)
 54 |             if warning_header_value is not None:
 55 |                 response.headers.update({"Warning": warning_header_value})
 56 | 
 57 |         return response
 58 | 
 59 | 
 60 | class OneDayCache(BaseHeuristic):
 61 |     """
 62 |     Cache the response by providing an expires 1 day in the
 63 |     future.
 64 |     """
 65 | 
 66 |     def update_headers(self, response: HTTPResponse) -> dict[str, str]:
 67 |         headers = {}
 68 | 
 69 |         if "expires" not in response.headers:
 70 |             date = parsedate(response.headers["date"])
 71 |             expires = expire_after(timedelta(days=1), date=datetime(*date[:6], tzinfo=timezone.utc))  # type: ignore[index,misc]
 72 |             headers["expires"] = datetime_to_header(expires)
 73 |             headers["cache-control"] = "public"
 74 |         return headers
 75 | 
 76 | 
 77 | class ExpiresAfter(BaseHeuristic):
 78 |     """
 79 |     Cache **all** requests for a defined time period.
 80 |     """
 81 | 
 82 |     def __init__(self, **kw: Any) -> None:
 83 |         self.delta = timedelta(**kw)
 84 | 
 85 |     def update_headers(self, response: HTTPResponse) -> dict[str, str]:
 86 |         expires = expire_after(self.delta)
 87 |         return {"expires": datetime_to_header(expires), "cache-control": "public"}
 88 | 
 89 |     def warning(self, response: HTTPResponse) -> str | None:
 90 |         tmpl = "110 - Automatically cached for %s. Response might be stale"
 91 |         return tmpl % self.delta
 92 | 
 93 | 
 94 | class LastModified(BaseHeuristic):
 95 |     """
 96 |     If there is no Expires header already, fall back on Last-Modified
 97 |     using the heuristic from
 98 |     http://tools.ietf.org/html/rfc7234#section-4.2.2
 99 |     to calculate a reasonable value.
100 | 
101 |     Firefox also does something like this per
102 |     https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ
103 |     http://lxr.mozilla.org/mozilla-release/source/netwerk/protocol/http/nsHttpResponseHead.cpp#397
104 |     Unlike mozilla we limit this to 24-hr.
105 |     """
106 | 
107 |     cacheable_by_default_statuses = {
108 |         200,
109 |         203,
110 |         204,
111 |         206,
112 |         300,
113 |         301,
114 |         404,
115 |         405,
116 |         410,
117 |         414,
118 |         501,
119 |     }
120 | 
121 |     def update_headers(self, resp: HTTPResponse) -> dict[str, str]:
122 |         headers: Mapping[str, str] = resp.headers
123 | 
124 |         if "expires" in headers:
125 |             return {}
126 | 
127 |         if "cache-control" in headers and headers["cache-control"] != "public":
128 |             return {}
129 | 
130 |         if resp.status not in self.cacheable_by_default_statuses:
131 |             return {}
132 | 
133 |         if "date" not in headers or "last-modified" not in headers:
134 |             return {}
135 | 
136 |         time_tuple = parsedate_tz(headers["date"])
137 |         assert time_tuple is not None
138 |         date = calendar.timegm(time_tuple[:6])
139 |         last_modified = parsedate(headers["last-modified"])
140 |         if last_modified is None:
141 |             return {}
142 | 
143 |         now = time.time()
144 |         current_age = max(0, now - date)
145 |         delta = date - calendar.timegm(last_modified)
146 |         freshness_lifetime = max(0, min(delta / 10, 24 * 3600))
147 |         if freshness_lifetime <= current_age:
148 |             return {}
149 | 
150 |         expires = date + freshness_lifetime
151 |         return {"expires": time.strftime(TIME_FMT, time.gmtime(expires))}
152 | 
153 |     def warning(self, resp: HTTPResponse) -> str | None:
154 |         return None
155 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/werkzeug/routing/exceptions.py:
--------------------------------------------------------------------------------

```python
  1 | from __future__ import annotations
  2 | 
  3 | import difflib
  4 | import typing as t
  5 | 
  6 | from ..exceptions import BadRequest
  7 | from ..exceptions import HTTPException
  8 | from ..utils import cached_property
  9 | from ..utils import redirect
 10 | 
 11 | if t.TYPE_CHECKING:
 12 |     from _typeshed.wsgi import WSGIEnvironment
 13 | 
 14 |     from ..wrappers.request import Request
 15 |     from ..wrappers.response import Response
 16 |     from .map import MapAdapter
 17 |     from .rules import Rule
 18 | 
 19 | 
 20 | class RoutingException(Exception):
 21 |     """Special exceptions that require the application to redirect, notifying
 22 |     about missing urls, etc.
 23 | 
 24 |     :internal:
 25 |     """
 26 | 
 27 | 
 28 | class RequestRedirect(HTTPException, RoutingException):
 29 |     """Raise if the map requests a redirect. This is for example the case if
 30 |     `strict_slashes` are activated and an url that requires a trailing slash.
 31 | 
 32 |     The attribute `new_url` contains the absolute destination url.
 33 |     """
 34 | 
 35 |     code = 308
 36 | 
 37 |     def __init__(self, new_url: str) -> None:
 38 |         super().__init__(new_url)
 39 |         self.new_url = new_url
 40 | 
 41 |     def get_response(
 42 |         self,
 43 |         environ: WSGIEnvironment | Request | None = None,
 44 |         scope: dict[str, t.Any] | None = None,
 45 |     ) -> Response:
 46 |         return redirect(self.new_url, self.code)
 47 | 
 48 | 
 49 | class RequestPath(RoutingException):
 50 |     """Internal exception."""
 51 | 
 52 |     __slots__ = ("path_info",)
 53 | 
 54 |     def __init__(self, path_info: str) -> None:
 55 |         super().__init__()
 56 |         self.path_info = path_info
 57 | 
 58 | 
 59 | class RequestAliasRedirect(RoutingException):  # noqa: B903
 60 |     """This rule is an alias and wants to redirect to the canonical URL."""
 61 | 
 62 |     def __init__(self, matched_values: t.Mapping[str, t.Any], endpoint: t.Any) -> None:
 63 |         super().__init__()
 64 |         self.matched_values = matched_values
 65 |         self.endpoint = endpoint
 66 | 
 67 | 
 68 | class BuildError(RoutingException, LookupError):
 69 |     """Raised if the build system cannot find a URL for an endpoint with the
 70 |     values provided.
 71 |     """
 72 | 
 73 |     def __init__(
 74 |         self,
 75 |         endpoint: t.Any,
 76 |         values: t.Mapping[str, t.Any],
 77 |         method: str | None,
 78 |         adapter: MapAdapter | None = None,
 79 |     ) -> None:
 80 |         super().__init__(endpoint, values, method)
 81 |         self.endpoint = endpoint
 82 |         self.values = values
 83 |         self.method = method
 84 |         self.adapter = adapter
 85 | 
 86 |     @cached_property
 87 |     def suggested(self) -> Rule | None:
 88 |         return self.closest_rule(self.adapter)
 89 | 
 90 |     def closest_rule(self, adapter: MapAdapter | None) -> Rule | None:
 91 |         def _score_rule(rule: Rule) -> float:
 92 |             return sum(
 93 |                 [
 94 |                     0.98
 95 |                     * difflib.SequenceMatcher(
 96 |                         # endpoints can be any type, compare as strings
 97 |                         None,
 98 |                         str(rule.endpoint),
 99 |                         str(self.endpoint),
100 |                     ).ratio(),
101 |                     0.01 * bool(set(self.values or ()).issubset(rule.arguments)),
102 |                     0.01 * bool(rule.methods and self.method in rule.methods),
103 |                 ]
104 |             )
105 | 
106 |         if adapter and adapter.map._rules:
107 |             return max(adapter.map._rules, key=_score_rule)
108 | 
109 |         return None
110 | 
111 |     def __str__(self) -> str:
112 |         message = [f"Could not build url for endpoint {self.endpoint!r}"]
113 |         if self.method:
114 |             message.append(f" ({self.method!r})")
115 |         if self.values:
116 |             message.append(f" with values {sorted(self.values)!r}")
117 |         message.append(".")
118 |         if self.suggested:
119 |             if self.endpoint == self.suggested.endpoint:
120 |                 if (
121 |                     self.method
122 |                     and self.suggested.methods is not None
123 |                     and self.method not in self.suggested.methods
124 |                 ):
125 |                     message.append(
126 |                         " Did you mean to use methods"
127 |                         f" {sorted(self.suggested.methods)!r}?"
128 |                     )
129 |                 missing_values = self.suggested.arguments.union(
130 |                     set(self.suggested.defaults or ())
131 |                 ) - set(self.values.keys())
132 |                 if missing_values:
133 |                     message.append(
134 |                         f" Did you forget to specify values {sorted(missing_values)!r}?"
135 |                     )
136 |             else:
137 |                 message.append(f" Did you mean {self.suggested.endpoint!r} instead?")
138 |         return "".join(message)
139 | 
140 | 
141 | class WebsocketMismatch(BadRequest):
142 |     """The only matched rule is either a WebSocket and the request is
143 |     HTTP, or the rule is HTTP and the request is a WebSocket.
144 |     """
145 | 
146 | 
147 | class NoMatch(Exception):
148 |     __slots__ = ("have_match_for", "websocket_mismatch")
149 | 
150 |     def __init__(self, have_match_for: set[str], websocket_mismatch: bool) -> None:
151 |         self.have_match_for = have_match_for
152 |         self.websocket_mismatch = websocket_mismatch
153 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/__init__.py:
--------------------------------------------------------------------------------

```python
  1 | """
  2 | pip._vendor is for vendoring dependencies of pip to prevent needing pip to
  3 | depend on something external.
  4 | 
  5 | Files inside of pip._vendor should be considered immutable and should only be
  6 | updated to versions from upstream.
  7 | """
  8 | from __future__ import absolute_import
  9 | 
 10 | import glob
 11 | import os.path
 12 | import sys
 13 | 
 14 | # Downstream redistributors which have debundled our dependencies should also
 15 | # patch this value to be true. This will trigger the additional patching
 16 | # to cause things like "six" to be available as pip.
 17 | DEBUNDLED = False
 18 | 
 19 | # By default, look in this directory for a bunch of .whl files which we will
 20 | # add to the beginning of sys.path before attempting to import anything. This
 21 | # is done to support downstream re-distributors like Debian and Fedora who
 22 | # wish to create their own Wheels for our dependencies to aid in debundling.
 23 | WHEEL_DIR = os.path.abspath(os.path.dirname(__file__))
 24 | 
 25 | 
 26 | # Define a small helper function to alias our vendored modules to the real ones
 27 | # if the vendored ones do not exist. This idea of this was taken from
 28 | # https://github.com/kennethreitz/requests/pull/2567.
 29 | def vendored(modulename):
 30 |     vendored_name = "{0}.{1}".format(__name__, modulename)
 31 | 
 32 |     try:
 33 |         __import__(modulename, globals(), locals(), level=0)
 34 |     except ImportError:
 35 |         # We can just silently allow import failures to pass here. If we
 36 |         # got to this point it means that ``import pip._vendor.whatever``
 37 |         # failed and so did ``import whatever``. Since we're importing this
 38 |         # upfront in an attempt to alias imports, not erroring here will
 39 |         # just mean we get a regular import error whenever pip *actually*
 40 |         # tries to import one of these modules to use it, which actually
 41 |         # gives us a better error message than we would have otherwise
 42 |         # gotten.
 43 |         pass
 44 |     else:
 45 |         sys.modules[vendored_name] = sys.modules[modulename]
 46 |         base, head = vendored_name.rsplit(".", 1)
 47 |         setattr(sys.modules[base], head, sys.modules[modulename])
 48 | 
 49 | 
 50 | # If we're operating in a debundled setup, then we want to go ahead and trigger
 51 | # the aliasing of our vendored libraries as well as looking for wheels to add
 52 | # to our sys.path. This will cause all of this code to be a no-op typically
 53 | # however downstream redistributors can enable it in a consistent way across
 54 | # all platforms.
 55 | if DEBUNDLED:
 56 |     # Actually look inside of WHEEL_DIR to find .whl files and add them to the
 57 |     # front of our sys.path.
 58 |     sys.path[:] = glob.glob(os.path.join(WHEEL_DIR, "*.whl")) + sys.path
 59 | 
 60 |     # Actually alias all of our vendored dependencies.
 61 |     vendored("cachecontrol")
 62 |     vendored("certifi")
 63 |     vendored("distlib")
 64 |     vendored("distro")
 65 |     vendored("packaging")
 66 |     vendored("packaging.version")
 67 |     vendored("packaging.specifiers")
 68 |     vendored("pkg_resources")
 69 |     vendored("platformdirs")
 70 |     vendored("progress")
 71 |     vendored("pyproject_hooks")
 72 |     vendored("requests")
 73 |     vendored("requests.exceptions")
 74 |     vendored("requests.packages")
 75 |     vendored("requests.packages.urllib3")
 76 |     vendored("requests.packages.urllib3._collections")
 77 |     vendored("requests.packages.urllib3.connection")
 78 |     vendored("requests.packages.urllib3.connectionpool")
 79 |     vendored("requests.packages.urllib3.contrib")
 80 |     vendored("requests.packages.urllib3.contrib.ntlmpool")
 81 |     vendored("requests.packages.urllib3.contrib.pyopenssl")
 82 |     vendored("requests.packages.urllib3.exceptions")
 83 |     vendored("requests.packages.urllib3.fields")
 84 |     vendored("requests.packages.urllib3.filepost")
 85 |     vendored("requests.packages.urllib3.packages")
 86 |     vendored("requests.packages.urllib3.packages.ordered_dict")
 87 |     vendored("requests.packages.urllib3.packages.six")
 88 |     vendored("requests.packages.urllib3.packages.ssl_match_hostname")
 89 |     vendored("requests.packages.urllib3.packages.ssl_match_hostname."
 90 |              "_implementation")
 91 |     vendored("requests.packages.urllib3.poolmanager")
 92 |     vendored("requests.packages.urllib3.request")
 93 |     vendored("requests.packages.urllib3.response")
 94 |     vendored("requests.packages.urllib3.util")
 95 |     vendored("requests.packages.urllib3.util.connection")
 96 |     vendored("requests.packages.urllib3.util.request")
 97 |     vendored("requests.packages.urllib3.util.response")
 98 |     vendored("requests.packages.urllib3.util.retry")
 99 |     vendored("requests.packages.urllib3.util.ssl_")
100 |     vendored("requests.packages.urllib3.util.timeout")
101 |     vendored("requests.packages.urllib3.util.url")
102 |     vendored("resolvelib")
103 |     vendored("rich")
104 |     vendored("rich.console")
105 |     vendored("rich.highlighter")
106 |     vendored("rich.logging")
107 |     vendored("rich.markup")
108 |     vendored("rich.progress")
109 |     vendored("rich.segment")
110 |     vendored("rich.style")
111 |     vendored("rich.text")
112 |     vendored("rich.traceback")
113 |     if sys.version_info < (3, 11):
114 |         vendored("tomli")
115 |     vendored("truststore")
116 |     vendored("urllib3")
117 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/connection.py:
--------------------------------------------------------------------------------

```python
  1 | from __future__ import absolute_import
  2 | 
  3 | import socket
  4 | 
  5 | from ..contrib import _appengine_environ
  6 | from ..exceptions import LocationParseError
  7 | from ..packages import six
  8 | from .wait import NoWayToWaitForSocketError, wait_for_read
  9 | 
 10 | 
 11 | def is_connection_dropped(conn):  # Platform-specific
 12 |     """
 13 |     Returns True if the connection is dropped and should be closed.
 14 | 
 15 |     :param conn:
 16 |         :class:`http.client.HTTPConnection` object.
 17 | 
 18 |     Note: For platforms like AppEngine, this will always return ``False`` to
 19 |     let the platform handle connection recycling transparently for us.
 20 |     """
 21 |     sock = getattr(conn, "sock", False)
 22 |     if sock is False:  # Platform-specific: AppEngine
 23 |         return False
 24 |     if sock is None:  # Connection already closed (such as by httplib).
 25 |         return True
 26 |     try:
 27 |         # Returns True if readable, which here means it's been dropped
 28 |         return wait_for_read(sock, timeout=0.0)
 29 |     except NoWayToWaitForSocketError:  # Platform-specific: AppEngine
 30 |         return False
 31 | 
 32 | 
 33 | # This function is copied from socket.py in the Python 2.7 standard
 34 | # library test suite. Added to its signature is only `socket_options`.
 35 | # One additional modification is that we avoid binding to IPv6 servers
 36 | # discovered in DNS if the system doesn't have IPv6 functionality.
 37 | def create_connection(
 38 |     address,
 39 |     timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
 40 |     source_address=None,
 41 |     socket_options=None,
 42 | ):
 43 |     """Connect to *address* and return the socket object.
 44 | 
 45 |     Convenience function.  Connect to *address* (a 2-tuple ``(host,
 46 |     port)``) and return the socket object.  Passing the optional
 47 |     *timeout* parameter will set the timeout on the socket instance
 48 |     before attempting to connect.  If no *timeout* is supplied, the
 49 |     global default timeout setting returned by :func:`socket.getdefaulttimeout`
 50 |     is used.  If *source_address* is set it must be a tuple of (host, port)
 51 |     for the socket to bind as a source address before making the connection.
 52 |     An host of '' or port 0 tells the OS to use the default.
 53 |     """
 54 | 
 55 |     host, port = address
 56 |     if host.startswith("["):
 57 |         host = host.strip("[]")
 58 |     err = None
 59 | 
 60 |     # Using the value from allowed_gai_family() in the context of getaddrinfo lets
 61 |     # us select whether to work with IPv4 DNS records, IPv6 records, or both.
 62 |     # The original create_connection function always returns all records.
 63 |     family = allowed_gai_family()
 64 | 
 65 |     try:
 66 |         host.encode("idna")
 67 |     except UnicodeError:
 68 |         return six.raise_from(
 69 |             LocationParseError(u"'%s', label empty or too long" % host), None
 70 |         )
 71 | 
 72 |     for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
 73 |         af, socktype, proto, canonname, sa = res
 74 |         sock = None
 75 |         try:
 76 |             sock = socket.socket(af, socktype, proto)
 77 | 
 78 |             # If provided, set socket level options before connecting.
 79 |             _set_socket_options(sock, socket_options)
 80 | 
 81 |             if timeout is not socket._GLOBAL_DEFAULT_TIMEOUT:
 82 |                 sock.settimeout(timeout)
 83 |             if source_address:
 84 |                 sock.bind(source_address)
 85 |             sock.connect(sa)
 86 |             return sock
 87 | 
 88 |         except socket.error as e:
 89 |             err = e
 90 |             if sock is not None:
 91 |                 sock.close()
 92 |                 sock = None
 93 | 
 94 |     if err is not None:
 95 |         raise err
 96 | 
 97 |     raise socket.error("getaddrinfo returns an empty list")
 98 | 
 99 | 
100 | def _set_socket_options(sock, options):
101 |     if options is None:
102 |         return
103 | 
104 |     for opt in options:
105 |         sock.setsockopt(*opt)
106 | 
107 | 
108 | def allowed_gai_family():
109 |     """This function is designed to work in the context of
110 |     getaddrinfo, where family=socket.AF_UNSPEC is the default and
111 |     will perform a DNS search for both IPv6 and IPv4 records."""
112 | 
113 |     family = socket.AF_INET
114 |     if HAS_IPV6:
115 |         family = socket.AF_UNSPEC
116 |     return family
117 | 
118 | 
119 | def _has_ipv6(host):
120 |     """Returns True if the system can bind an IPv6 address."""
121 |     sock = None
122 |     has_ipv6 = False
123 | 
124 |     # App Engine doesn't support IPV6 sockets and actually has a quota on the
125 |     # number of sockets that can be used, so just early out here instead of
126 |     # creating a socket needlessly.
127 |     # See https://github.com/urllib3/urllib3/issues/1446
128 |     if _appengine_environ.is_appengine_sandbox():
129 |         return False
130 | 
131 |     if socket.has_ipv6:
132 |         # has_ipv6 returns true if cPython was compiled with IPv6 support.
133 |         # It does not tell us if the system has IPv6 support enabled. To
134 |         # determine that we must bind to an IPv6 address.
135 |         # https://github.com/urllib3/urllib3/pull/611
136 |         # https://bugs.python.org/issue658327
137 |         try:
138 |             sock = socket.socket(socket.AF_INET6)
139 |             sock.bind((host, 0))
140 |             has_ipv6 = True
141 |         except Exception:
142 |             pass
143 | 
144 |     if sock:
145 |         sock.close()
146 |     return has_ipv6
147 | 
148 | 
149 | HAS_IPV6 = _has_ipv6("::1")
150 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxml/debugXML.h:
--------------------------------------------------------------------------------

```
  1 | /*
  2 |  * Summary: Tree debugging APIs
  3 |  * Description: Interfaces to a set of routines used for debugging the tree
  4 |  *              produced by the XML parser.
  5 |  *
  6 |  * Copy: See Copyright for the status of this software.
  7 |  *
  8 |  * Author: Daniel Veillard
  9 |  */
 10 | 
 11 | #ifndef __DEBUG_XML__
 12 | #define __DEBUG_XML__
 13 | #include <stdio.h>
 14 | #include <libxml/xmlversion.h>
 15 | #include <libxml/tree.h>
 16 | 
 17 | #ifdef LIBXML_DEBUG_ENABLED
 18 | 
 19 | #include <libxml/xpath.h>
 20 | 
 21 | #ifdef __cplusplus
 22 | extern "C" {
 23 | #endif
 24 | 
 25 | /*
 26 |  * The standard Dump routines.
 27 |  */
 28 | XMLPUBFUN void
 29 | 	xmlDebugDumpString	(FILE *output,
 30 | 				 const xmlChar *str);
 31 | XMLPUBFUN void
 32 | 	xmlDebugDumpAttr	(FILE *output,
 33 | 				 xmlAttrPtr attr,
 34 | 				 int depth);
 35 | XMLPUBFUN void
 36 | 	xmlDebugDumpAttrList	(FILE *output,
 37 | 				 xmlAttrPtr attr,
 38 | 				 int depth);
 39 | XMLPUBFUN void
 40 | 	xmlDebugDumpOneNode	(FILE *output,
 41 | 				 xmlNodePtr node,
 42 | 				 int depth);
 43 | XMLPUBFUN void
 44 | 	xmlDebugDumpNode	(FILE *output,
 45 | 				 xmlNodePtr node,
 46 | 				 int depth);
 47 | XMLPUBFUN void
 48 | 	xmlDebugDumpNodeList	(FILE *output,
 49 | 				 xmlNodePtr node,
 50 | 				 int depth);
 51 | XMLPUBFUN void
 52 | 	xmlDebugDumpDocumentHead(FILE *output,
 53 | 				 xmlDocPtr doc);
 54 | XMLPUBFUN void
 55 | 	xmlDebugDumpDocument	(FILE *output,
 56 | 				 xmlDocPtr doc);
 57 | XMLPUBFUN void
 58 | 	xmlDebugDumpDTD		(FILE *output,
 59 | 				 xmlDtdPtr dtd);
 60 | XMLPUBFUN void
 61 | 	xmlDebugDumpEntities	(FILE *output,
 62 | 				 xmlDocPtr doc);
 63 | 
 64 | /****************************************************************
 65 |  *								*
 66 |  *			Checking routines			*
 67 |  *								*
 68 |  ****************************************************************/
 69 | 
 70 | XMLPUBFUN int
 71 | 	xmlDebugCheckDocument	(FILE * output,
 72 | 				 xmlDocPtr doc);
 73 | 
 74 | /****************************************************************
 75 |  *								*
 76 |  *			XML shell helpers			*
 77 |  *								*
 78 |  ****************************************************************/
 79 | 
 80 | XMLPUBFUN void
 81 | 	xmlLsOneNode		(FILE *output, xmlNodePtr node);
 82 | XMLPUBFUN int
 83 | 	xmlLsCountNode		(xmlNodePtr node);
 84 | 
 85 | XMLPUBFUN const char *
 86 | 	xmlBoolToText		(int boolval);
 87 | 
 88 | /****************************************************************
 89 |  *								*
 90 |  *	 The XML shell related structures and functions		*
 91 |  *								*
 92 |  ****************************************************************/
 93 | 
 94 | #ifdef LIBXML_XPATH_ENABLED
 95 | /**
 96 |  * xmlShellReadlineFunc:
 97 |  * @prompt:  a string prompt
 98 |  *
 99 |  * This is a generic signature for the XML shell input function.
100 |  *
101 |  * Returns a string which will be freed by the Shell.
102 |  */
103 | typedef char * (* xmlShellReadlineFunc)(char *prompt);
104 | 
105 | /**
106 |  * xmlShellCtxt:
107 |  *
108 |  * A debugging shell context.
109 |  * TODO: add the defined function tables.
110 |  */
111 | typedef struct _xmlShellCtxt xmlShellCtxt;
112 | typedef xmlShellCtxt *xmlShellCtxtPtr;
113 | struct _xmlShellCtxt {
114 |     char *filename;
115 |     xmlDocPtr doc;
116 |     xmlNodePtr node;
117 |     xmlXPathContextPtr pctxt;
118 |     int loaded;
119 |     FILE *output;
120 |     xmlShellReadlineFunc input;
121 | };
122 | 
123 | /**
124 |  * xmlShellCmd:
125 |  * @ctxt:  a shell context
126 |  * @arg:  a string argument
127 |  * @node:  a first node
128 |  * @node2:  a second node
129 |  *
130 |  * This is a generic signature for the XML shell functions.
131 |  *
132 |  * Returns an int, negative returns indicating errors.
133 |  */
134 | typedef int (* xmlShellCmd) (xmlShellCtxtPtr ctxt,
135 |                              char *arg,
136 | 			     xmlNodePtr node,
137 | 			     xmlNodePtr node2);
138 | 
139 | XMLPUBFUN void
140 | 	xmlShellPrintXPathError	(int errorType,
141 | 				 const char *arg);
142 | XMLPUBFUN void
143 | 	xmlShellPrintXPathResult(xmlXPathObjectPtr list);
144 | XMLPUBFUN int
145 | 	xmlShellList		(xmlShellCtxtPtr ctxt,
146 | 				 char *arg,
147 | 				 xmlNodePtr node,
148 | 				 xmlNodePtr node2);
149 | XMLPUBFUN int
150 | 	xmlShellBase		(xmlShellCtxtPtr ctxt,
151 | 				 char *arg,
152 | 				 xmlNodePtr node,
153 | 				 xmlNodePtr node2);
154 | XMLPUBFUN int
155 | 	xmlShellDir		(xmlShellCtxtPtr ctxt,
156 | 				 char *arg,
157 | 				 xmlNodePtr node,
158 | 				 xmlNodePtr node2);
159 | XMLPUBFUN int
160 | 	xmlShellLoad		(xmlShellCtxtPtr ctxt,
161 | 				 char *filename,
162 | 				 xmlNodePtr node,
163 | 				 xmlNodePtr node2);
164 | #ifdef LIBXML_OUTPUT_ENABLED
165 | XMLPUBFUN void
166 | 	xmlShellPrintNode	(xmlNodePtr node);
167 | XMLPUBFUN int
168 | 	xmlShellCat		(xmlShellCtxtPtr ctxt,
169 | 				 char *arg,
170 | 				 xmlNodePtr node,
171 | 				 xmlNodePtr node2);
172 | XMLPUBFUN int
173 | 	xmlShellWrite		(xmlShellCtxtPtr ctxt,
174 | 				 char *filename,
175 | 				 xmlNodePtr node,
176 | 				 xmlNodePtr node2);
177 | XMLPUBFUN int
178 | 	xmlShellSave		(xmlShellCtxtPtr ctxt,
179 | 				 char *filename,
180 | 				 xmlNodePtr node,
181 | 				 xmlNodePtr node2);
182 | #endif /* LIBXML_OUTPUT_ENABLED */
183 | #ifdef LIBXML_VALID_ENABLED
184 | XMLPUBFUN int
185 | 	xmlShellValidate	(xmlShellCtxtPtr ctxt,
186 | 				 char *dtd,
187 | 				 xmlNodePtr node,
188 | 				 xmlNodePtr node2);
189 | #endif /* LIBXML_VALID_ENABLED */
190 | XMLPUBFUN int
191 | 	xmlShellDu		(xmlShellCtxtPtr ctxt,
192 | 				 char *arg,
193 | 				 xmlNodePtr tree,
194 | 				 xmlNodePtr node2);
195 | XMLPUBFUN int
196 | 	xmlShellPwd		(xmlShellCtxtPtr ctxt,
197 | 				 char *buffer,
198 | 				 xmlNodePtr node,
199 | 				 xmlNodePtr node2);
200 | 
201 | /*
202 |  * The Shell interface.
203 |  */
204 | XMLPUBFUN void
205 | 	xmlShell		(xmlDocPtr doc,
206 | 				 char *filename,
207 | 				 xmlShellReadlineFunc input,
208 | 				 FILE *output);
209 | 
210 | #endif /* LIBXML_XPATH_ENABLED */
211 | 
212 | #ifdef __cplusplus
213 | }
214 | #endif
215 | 
216 | #endif /* LIBXML_DEBUG_ENABLED */
217 | #endif /* __DEBUG_XML__ */
218 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/utils/filesystem.py:
--------------------------------------------------------------------------------

```python
  1 | import fnmatch
  2 | import os
  3 | import os.path
  4 | import random
  5 | import sys
  6 | from contextlib import contextmanager
  7 | from tempfile import NamedTemporaryFile
  8 | from typing import Any, BinaryIO, Generator, List, Union, cast
  9 | 
 10 | from pip._internal.utils.compat import get_path_uid
 11 | from pip._internal.utils.misc import format_size
 12 | from pip._internal.utils.retry import retry
 13 | 
 14 | 
 15 | def check_path_owner(path: str) -> bool:
 16 |     # If we don't have a way to check the effective uid of this process, then
 17 |     # we'll just assume that we own the directory.
 18 |     if sys.platform == "win32" or not hasattr(os, "geteuid"):
 19 |         return True
 20 | 
 21 |     assert os.path.isabs(path)
 22 | 
 23 |     previous = None
 24 |     while path != previous:
 25 |         if os.path.lexists(path):
 26 |             # Check if path is writable by current user.
 27 |             if os.geteuid() == 0:
 28 |                 # Special handling for root user in order to handle properly
 29 |                 # cases where users use sudo without -H flag.
 30 |                 try:
 31 |                     path_uid = get_path_uid(path)
 32 |                 except OSError:
 33 |                     return False
 34 |                 return path_uid == 0
 35 |             else:
 36 |                 return os.access(path, os.W_OK)
 37 |         else:
 38 |             previous, path = path, os.path.dirname(path)
 39 |     return False  # assume we don't own the path
 40 | 
 41 | 
 42 | @contextmanager
 43 | def adjacent_tmp_file(path: str, **kwargs: Any) -> Generator[BinaryIO, None, None]:
 44 |     """Return a file-like object pointing to a tmp file next to path.
 45 | 
 46 |     The file is created securely and is ensured to be written to disk
 47 |     after the context reaches its end.
 48 | 
 49 |     kwargs will be passed to tempfile.NamedTemporaryFile to control
 50 |     the way the temporary file will be opened.
 51 |     """
 52 |     with NamedTemporaryFile(
 53 |         delete=False,
 54 |         dir=os.path.dirname(path),
 55 |         prefix=os.path.basename(path),
 56 |         suffix=".tmp",
 57 |         **kwargs,
 58 |     ) as f:
 59 |         result = cast(BinaryIO, f)
 60 |         try:
 61 |             yield result
 62 |         finally:
 63 |             result.flush()
 64 |             os.fsync(result.fileno())
 65 | 
 66 | 
 67 | replace = retry(stop_after_delay=1, wait=0.25)(os.replace)
 68 | 
 69 | 
 70 | # test_writable_dir and _test_writable_dir_win are copied from Flit,
 71 | # with the author's agreement to also place them under pip's license.
 72 | def test_writable_dir(path: str) -> bool:
 73 |     """Check if a directory is writable.
 74 | 
 75 |     Uses os.access() on POSIX, tries creating files on Windows.
 76 |     """
 77 |     # If the directory doesn't exist, find the closest parent that does.
 78 |     while not os.path.isdir(path):
 79 |         parent = os.path.dirname(path)
 80 |         if parent == path:
 81 |             break  # Should never get here, but infinite loops are bad
 82 |         path = parent
 83 | 
 84 |     if os.name == "posix":
 85 |         return os.access(path, os.W_OK)
 86 | 
 87 |     return _test_writable_dir_win(path)
 88 | 
 89 | 
 90 | def _test_writable_dir_win(path: str) -> bool:
 91 |     # os.access doesn't work on Windows: http://bugs.python.org/issue2528
 92 |     # and we can't use tempfile: http://bugs.python.org/issue22107
 93 |     basename = "accesstest_deleteme_fishfingers_custard_"
 94 |     alphabet = "abcdefghijklmnopqrstuvwxyz0123456789"
 95 |     for _ in range(10):
 96 |         name = basename + "".join(random.choice(alphabet) for _ in range(6))
 97 |         file = os.path.join(path, name)
 98 |         try:
 99 |             fd = os.open(file, os.O_RDWR | os.O_CREAT | os.O_EXCL)
100 |         except FileExistsError:
101 |             pass
102 |         except PermissionError:
103 |             # This could be because there's a directory with the same name.
104 |             # But it's highly unlikely there's a directory called that,
105 |             # so we'll assume it's because the parent dir is not writable.
106 |             # This could as well be because the parent dir is not readable,
107 |             # due to non-privileged user access.
108 |             return False
109 |         else:
110 |             os.close(fd)
111 |             os.unlink(file)
112 |             return True
113 | 
114 |     # This should never be reached
115 |     raise OSError("Unexpected condition testing for writable directory")
116 | 
117 | 
118 | def find_files(path: str, pattern: str) -> List[str]:
119 |     """Returns a list of absolute paths of files beneath path, recursively,
120 |     with filenames which match the UNIX-style shell glob pattern."""
121 |     result: List[str] = []
122 |     for root, _, files in os.walk(path):
123 |         matches = fnmatch.filter(files, pattern)
124 |         result.extend(os.path.join(root, f) for f in matches)
125 |     return result
126 | 
127 | 
128 | def file_size(path: str) -> Union[int, float]:
129 |     # If it's a symlink, return 0.
130 |     if os.path.islink(path):
131 |         return 0
132 |     return os.path.getsize(path)
133 | 
134 | 
135 | def format_file_size(path: str) -> str:
136 |     return format_size(file_size(path))
137 | 
138 | 
139 | def directory_size(path: str) -> Union[int, float]:
140 |     size = 0.0
141 |     for root, _dirs, files in os.walk(path):
142 |         for filename in files:
143 |             file_path = os.path.join(root, filename)
144 |             size += file_size(file_path)
145 |     return size
146 | 
147 | 
148 | def format_directory_size(path: str) -> str:
149 |     return format_size(directory_size(path))
150 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/werkzeug/sansio/utils.py:
--------------------------------------------------------------------------------

```python
  1 | from __future__ import annotations
  2 | 
  3 | import typing as t
  4 | from urllib.parse import quote
  5 | 
  6 | from .._internal import _plain_int
  7 | from ..exceptions import SecurityError
  8 | from ..urls import uri_to_iri
  9 | 
 10 | 
 11 | def host_is_trusted(hostname: str | None, trusted_list: t.Iterable[str]) -> bool:
 12 |     """Check if a host matches a list of trusted names.
 13 | 
 14 |     :param hostname: The name to check.
 15 |     :param trusted_list: A list of valid names to match. If a name
 16 |         starts with a dot it will match all subdomains.
 17 | 
 18 |     .. versionadded:: 0.9
 19 |     """
 20 |     if not hostname:
 21 |         return False
 22 | 
 23 |     try:
 24 |         hostname = hostname.partition(":")[0].encode("idna").decode("ascii")
 25 |     except UnicodeEncodeError:
 26 |         return False
 27 | 
 28 |     if isinstance(trusted_list, str):
 29 |         trusted_list = [trusted_list]
 30 | 
 31 |     for ref in trusted_list:
 32 |         if ref.startswith("."):
 33 |             ref = ref[1:]
 34 |             suffix_match = True
 35 |         else:
 36 |             suffix_match = False
 37 | 
 38 |         try:
 39 |             ref = ref.partition(":")[0].encode("idna").decode("ascii")
 40 |         except UnicodeEncodeError:
 41 |             return False
 42 | 
 43 |         if ref == hostname or (suffix_match and hostname.endswith(f".{ref}")):
 44 |             return True
 45 | 
 46 |     return False
 47 | 
 48 | 
 49 | def get_host(
 50 |     scheme: str,
 51 |     host_header: str | None,
 52 |     server: tuple[str, int | None] | None = None,
 53 |     trusted_hosts: t.Iterable[str] | None = None,
 54 | ) -> str:
 55 |     """Return the host for the given parameters.
 56 | 
 57 |     This first checks the ``host_header``. If it's not present, then
 58 |     ``server`` is used. The host will only contain the port if it is
 59 |     different than the standard port for the protocol.
 60 | 
 61 |     Optionally, verify that the host is trusted using
 62 |     :func:`host_is_trusted` and raise a
 63 |     :exc:`~werkzeug.exceptions.SecurityError` if it is not.
 64 | 
 65 |     :param scheme: The protocol the request used, like ``"https"``.
 66 |     :param host_header: The ``Host`` header value.
 67 |     :param server: Address of the server. ``(host, port)``, or
 68 |         ``(path, None)`` for unix sockets.
 69 |     :param trusted_hosts: A list of trusted host names.
 70 | 
 71 |     :return: Host, with port if necessary.
 72 |     :raise ~werkzeug.exceptions.SecurityError: If the host is not
 73 |         trusted.
 74 |     """
 75 |     host = ""
 76 | 
 77 |     if host_header is not None:
 78 |         host = host_header
 79 |     elif server is not None:
 80 |         host = server[0]
 81 | 
 82 |         if server[1] is not None:
 83 |             host = f"{host}:{server[1]}"
 84 | 
 85 |     if scheme in {"http", "ws"} and host.endswith(":80"):
 86 |         host = host[:-3]
 87 |     elif scheme in {"https", "wss"} and host.endswith(":443"):
 88 |         host = host[:-4]
 89 | 
 90 |     if trusted_hosts is not None:
 91 |         if not host_is_trusted(host, trusted_hosts):
 92 |             raise SecurityError(f"Host {host!r} is not trusted.")
 93 | 
 94 |     return host
 95 | 
 96 | 
 97 | def get_current_url(
 98 |     scheme: str,
 99 |     host: str,
100 |     root_path: str | None = None,
101 |     path: str | None = None,
102 |     query_string: bytes | None = None,
103 | ) -> str:
104 |     """Recreate the URL for a request. If an optional part isn't
105 |     provided, it and subsequent parts are not included in the URL.
106 | 
107 |     The URL is an IRI, not a URI, so it may contain Unicode characters.
108 |     Use :func:`~werkzeug.urls.iri_to_uri` to convert it to ASCII.
109 | 
110 |     :param scheme: The protocol the request used, like ``"https"``.
111 |     :param host: The host the request was made to. See :func:`get_host`.
112 |     :param root_path: Prefix that the application is mounted under. This
113 |         is prepended to ``path``.
114 |     :param path: The path part of the URL after ``root_path``.
115 |     :param query_string: The portion of the URL after the "?".
116 |     """
117 |     url = [scheme, "://", host]
118 | 
119 |     if root_path is None:
120 |         url.append("/")
121 |         return uri_to_iri("".join(url))
122 | 
123 |     # safe = https://url.spec.whatwg.org/#url-path-segment-string
124 |     # as well as percent for things that are already quoted
125 |     url.append(quote(root_path.rstrip("/"), safe="!$&'()*+,/:;=@%"))
126 |     url.append("/")
127 | 
128 |     if path is None:
129 |         return uri_to_iri("".join(url))
130 | 
131 |     url.append(quote(path.lstrip("/"), safe="!$&'()*+,/:;=@%"))
132 | 
133 |     if query_string:
134 |         url.append("?")
135 |         url.append(quote(query_string, safe="!$&'()*+,/:;=?@%"))
136 | 
137 |     return uri_to_iri("".join(url))
138 | 
139 | 
140 | def get_content_length(
141 |     http_content_length: str | None = None,
142 |     http_transfer_encoding: str | None = None,
143 | ) -> int | None:
144 |     """Return the ``Content-Length`` header value as an int. If the header is not given
145 |     or the ``Transfer-Encoding`` header is ``chunked``, ``None`` is returned to indicate
146 |     a streaming request. If the value is not an integer, or negative, 0 is returned.
147 | 
148 |     :param http_content_length: The Content-Length HTTP header.
149 |     :param http_transfer_encoding: The Transfer-Encoding HTTP header.
150 | 
151 |     .. versionadded:: 2.2
152 |     """
153 |     if http_transfer_encoding == "chunked" or http_content_length is None:
154 |         return None
155 | 
156 |     try:
157 |         return max(0, _plain_int(http_content_length))
158 |     except ValueError:
159 |         return 0
160 | 
```
Page 14/168FirstPrevNextLast