#
tokens: 49699/50000 9/808 files (page 20/168)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 20 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/jinja2/tests.py:
--------------------------------------------------------------------------------

```python
  1 | """Built-in template tests used with the ``is`` operator."""
  2 | 
  3 | import operator
  4 | import typing as t
  5 | from collections import abc
  6 | from numbers import Number
  7 | 
  8 | from .runtime import Undefined
  9 | from .utils import pass_environment
 10 | 
 11 | if t.TYPE_CHECKING:
 12 |     from .environment import Environment
 13 | 
 14 | 
 15 | def test_odd(value: int) -> bool:
 16 |     """Return true if the variable is odd."""
 17 |     return value % 2 == 1
 18 | 
 19 | 
 20 | def test_even(value: int) -> bool:
 21 |     """Return true if the variable is even."""
 22 |     return value % 2 == 0
 23 | 
 24 | 
 25 | def test_divisibleby(value: int, num: int) -> bool:
 26 |     """Check if a variable is divisible by a number."""
 27 |     return value % num == 0
 28 | 
 29 | 
 30 | def test_defined(value: t.Any) -> bool:
 31 |     """Return true if the variable is defined:
 32 | 
 33 |     .. sourcecode:: jinja
 34 | 
 35 |         {% if variable is defined %}
 36 |             value of variable: {{ variable }}
 37 |         {% else %}
 38 |             variable is not defined
 39 |         {% endif %}
 40 | 
 41 |     See the :func:`default` filter for a simple way to set undefined
 42 |     variables.
 43 |     """
 44 |     return not isinstance(value, Undefined)
 45 | 
 46 | 
 47 | def test_undefined(value: t.Any) -> bool:
 48 |     """Like :func:`defined` but the other way round."""
 49 |     return isinstance(value, Undefined)
 50 | 
 51 | 
 52 | @pass_environment
 53 | def test_filter(env: "Environment", value: str) -> bool:
 54 |     """Check if a filter exists by name. Useful if a filter may be
 55 |     optionally available.
 56 | 
 57 |     .. code-block:: jinja
 58 | 
 59 |         {% if 'markdown' is filter %}
 60 |             {{ value | markdown }}
 61 |         {% else %}
 62 |             {{ value }}
 63 |         {% endif %}
 64 | 
 65 |     .. versionadded:: 3.0
 66 |     """
 67 |     return value in env.filters
 68 | 
 69 | 
 70 | @pass_environment
 71 | def test_test(env: "Environment", value: str) -> bool:
 72 |     """Check if a test exists by name. Useful if a test may be
 73 |     optionally available.
 74 | 
 75 |     .. code-block:: jinja
 76 | 
 77 |         {% if 'loud' is test %}
 78 |             {% if value is loud %}
 79 |                 {{ value|upper }}
 80 |             {% else %}
 81 |                 {{ value|lower }}
 82 |             {% endif %}
 83 |         {% else %}
 84 |             {{ value }}
 85 |         {% endif %}
 86 | 
 87 |     .. versionadded:: 3.0
 88 |     """
 89 |     return value in env.tests
 90 | 
 91 | 
 92 | def test_none(value: t.Any) -> bool:
 93 |     """Return true if the variable is none."""
 94 |     return value is None
 95 | 
 96 | 
 97 | def test_boolean(value: t.Any) -> bool:
 98 |     """Return true if the object is a boolean value.
 99 | 
100 |     .. versionadded:: 2.11
101 |     """
102 |     return value is True or value is False
103 | 
104 | 
105 | def test_false(value: t.Any) -> bool:
106 |     """Return true if the object is False.
107 | 
108 |     .. versionadded:: 2.11
109 |     """
110 |     return value is False
111 | 
112 | 
113 | def test_true(value: t.Any) -> bool:
114 |     """Return true if the object is True.
115 | 
116 |     .. versionadded:: 2.11
117 |     """
118 |     return value is True
119 | 
120 | 
121 | # NOTE: The existing 'number' test matches booleans and floats
122 | def test_integer(value: t.Any) -> bool:
123 |     """Return true if the object is an integer.
124 | 
125 |     .. versionadded:: 2.11
126 |     """
127 |     return isinstance(value, int) and value is not True and value is not False
128 | 
129 | 
130 | # NOTE: The existing 'number' test matches booleans and integers
131 | def test_float(value: t.Any) -> bool:
132 |     """Return true if the object is a float.
133 | 
134 |     .. versionadded:: 2.11
135 |     """
136 |     return isinstance(value, float)
137 | 
138 | 
139 | def test_lower(value: str) -> bool:
140 |     """Return true if the variable is lowercased."""
141 |     return str(value).islower()
142 | 
143 | 
144 | def test_upper(value: str) -> bool:
145 |     """Return true if the variable is uppercased."""
146 |     return str(value).isupper()
147 | 
148 | 
149 | def test_string(value: t.Any) -> bool:
150 |     """Return true if the object is a string."""
151 |     return isinstance(value, str)
152 | 
153 | 
154 | def test_mapping(value: t.Any) -> bool:
155 |     """Return true if the object is a mapping (dict etc.).
156 | 
157 |     .. versionadded:: 2.6
158 |     """
159 |     return isinstance(value, abc.Mapping)
160 | 
161 | 
162 | def test_number(value: t.Any) -> bool:
163 |     """Return true if the variable is a number."""
164 |     return isinstance(value, Number)
165 | 
166 | 
167 | def test_sequence(value: t.Any) -> bool:
168 |     """Return true if the variable is a sequence. Sequences are variables
169 |     that are iterable.
170 |     """
171 |     try:
172 |         len(value)
173 |         value.__getitem__  # noqa B018
174 |     except Exception:
175 |         return False
176 | 
177 |     return True
178 | 
179 | 
180 | def test_sameas(value: t.Any, other: t.Any) -> bool:
181 |     """Check if an object points to the same memory address than another
182 |     object:
183 | 
184 |     .. sourcecode:: jinja
185 | 
186 |         {% if foo.attribute is sameas false %}
187 |             the foo attribute really is the `False` singleton
188 |         {% endif %}
189 |     """
190 |     return value is other
191 | 
192 | 
193 | def test_iterable(value: t.Any) -> bool:
194 |     """Check if it's possible to iterate over an object."""
195 |     try:
196 |         iter(value)
197 |     except TypeError:
198 |         return False
199 | 
200 |     return True
201 | 
202 | 
203 | def test_escaped(value: t.Any) -> bool:
204 |     """Check if the value is escaped."""
205 |     return hasattr(value, "__html__")
206 | 
207 | 
208 | def test_in(value: t.Any, seq: t.Container[t.Any]) -> bool:
209 |     """Check if value is in seq.
210 | 
211 |     .. versionadded:: 2.10
212 |     """
213 |     return value in seq
214 | 
215 | 
216 | TESTS = {
217 |     "odd": test_odd,
218 |     "even": test_even,
219 |     "divisibleby": test_divisibleby,
220 |     "defined": test_defined,
221 |     "undefined": test_undefined,
222 |     "filter": test_filter,
223 |     "test": test_test,
224 |     "none": test_none,
225 |     "boolean": test_boolean,
226 |     "false": test_false,
227 |     "true": test_true,
228 |     "integer": test_integer,
229 |     "float": test_float,
230 |     "lower": test_lower,
231 |     "upper": test_upper,
232 |     "string": test_string,
233 |     "mapping": test_mapping,
234 |     "number": test_number,
235 |     "sequence": test_sequence,
236 |     "iterable": test_iterable,
237 |     "callable": callable,
238 |     "sameas": test_sameas,
239 |     "escaped": test_escaped,
240 |     "in": test_in,
241 |     "==": operator.eq,
242 |     "eq": operator.eq,
243 |     "equalto": operator.eq,
244 |     "!=": operator.ne,
245 |     "ne": operator.ne,
246 |     ">": operator.gt,
247 |     "gt": operator.gt,
248 |     "greaterthan": operator.gt,
249 |     "ge": operator.ge,
250 |     ">=": operator.ge,
251 |     "<": operator.lt,
252 |     "lt": operator.lt,
253 |     "lessthan": operator.lt,
254 |     "<=": operator.le,
255 |     "le": operator.le,
256 | }
257 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/locations/_distutils.py:
--------------------------------------------------------------------------------

```python
  1 | """Locations where we look for configs, install stuff, etc"""
  2 | 
  3 | # The following comment should be removed at some point in the future.
  4 | # mypy: strict-optional=False
  5 | 
  6 | # If pip's going to use distutils, it should not be using the copy that setuptools
  7 | # might have injected into the environment. This is done by removing the injected
  8 | # shim, if it's injected.
  9 | #
 10 | # See https://github.com/pypa/pip/issues/8761 for the original discussion and
 11 | # rationale for why this is done within pip.
 12 | try:
 13 |     __import__("_distutils_hack").remove_shim()
 14 | except (ImportError, AttributeError):
 15 |     pass
 16 | 
 17 | import logging
 18 | import os
 19 | import sys
 20 | from distutils.cmd import Command as DistutilsCommand
 21 | from distutils.command.install import SCHEME_KEYS
 22 | from distutils.command.install import install as distutils_install_command
 23 | from distutils.sysconfig import get_python_lib
 24 | from typing import Dict, List, Optional, Union, cast
 25 | 
 26 | from pip._internal.models.scheme import Scheme
 27 | from pip._internal.utils.compat import WINDOWS
 28 | from pip._internal.utils.virtualenv import running_under_virtualenv
 29 | 
 30 | from .base import get_major_minor_version
 31 | 
 32 | logger = logging.getLogger(__name__)
 33 | 
 34 | 
 35 | def distutils_scheme(
 36 |     dist_name: str,
 37 |     user: bool = False,
 38 |     home: Optional[str] = None,
 39 |     root: Optional[str] = None,
 40 |     isolated: bool = False,
 41 |     prefix: Optional[str] = None,
 42 |     *,
 43 |     ignore_config_files: bool = False,
 44 | ) -> Dict[str, str]:
 45 |     """
 46 |     Return a distutils install scheme
 47 |     """
 48 |     from distutils.dist import Distribution
 49 | 
 50 |     dist_args: Dict[str, Union[str, List[str]]] = {"name": dist_name}
 51 |     if isolated:
 52 |         dist_args["script_args"] = ["--no-user-cfg"]
 53 | 
 54 |     d = Distribution(dist_args)
 55 |     if not ignore_config_files:
 56 |         try:
 57 |             d.parse_config_files()
 58 |         except UnicodeDecodeError:
 59 |             paths = d.find_config_files()
 60 |             logger.warning(
 61 |                 "Ignore distutils configs in %s due to encoding errors.",
 62 |                 ", ".join(os.path.basename(p) for p in paths),
 63 |             )
 64 |     obj: Optional[DistutilsCommand] = None
 65 |     obj = d.get_command_obj("install", create=True)
 66 |     assert obj is not None
 67 |     i = cast(distutils_install_command, obj)
 68 |     # NOTE: setting user or home has the side-effect of creating the home dir
 69 |     # or user base for installations during finalize_options()
 70 |     # ideally, we'd prefer a scheme class that has no side-effects.
 71 |     assert not (user and prefix), f"user={user} prefix={prefix}"
 72 |     assert not (home and prefix), f"home={home} prefix={prefix}"
 73 |     i.user = user or i.user
 74 |     if user or home:
 75 |         i.prefix = ""
 76 |     i.prefix = prefix or i.prefix
 77 |     i.home = home or i.home
 78 |     i.root = root or i.root
 79 |     i.finalize_options()
 80 | 
 81 |     scheme = {}
 82 |     for key in SCHEME_KEYS:
 83 |         scheme[key] = getattr(i, "install_" + key)
 84 | 
 85 |     # install_lib specified in setup.cfg should install *everything*
 86 |     # into there (i.e. it takes precedence over both purelib and
 87 |     # platlib).  Note, i.install_lib is *always* set after
 88 |     # finalize_options(); we only want to override here if the user
 89 |     # has explicitly requested it hence going back to the config
 90 |     if "install_lib" in d.get_option_dict("install"):
 91 |         scheme.update({"purelib": i.install_lib, "platlib": i.install_lib})
 92 | 
 93 |     if running_under_virtualenv():
 94 |         if home:
 95 |             prefix = home
 96 |         elif user:
 97 |             prefix = i.install_userbase
 98 |         else:
 99 |             prefix = i.prefix
100 |         scheme["headers"] = os.path.join(
101 |             prefix,
102 |             "include",
103 |             "site",
104 |             f"python{get_major_minor_version()}",
105 |             dist_name,
106 |         )
107 | 
108 |         if root is not None:
109 |             path_no_drive = os.path.splitdrive(os.path.abspath(scheme["headers"]))[1]
110 |             scheme["headers"] = os.path.join(root, path_no_drive[1:])
111 | 
112 |     return scheme
113 | 
114 | 
115 | def get_scheme(
116 |     dist_name: str,
117 |     user: bool = False,
118 |     home: Optional[str] = None,
119 |     root: Optional[str] = None,
120 |     isolated: bool = False,
121 |     prefix: Optional[str] = None,
122 | ) -> Scheme:
123 |     """
124 |     Get the "scheme" corresponding to the input parameters. The distutils
125 |     documentation provides the context for the available schemes:
126 |     https://docs.python.org/3/install/index.html#alternate-installation
127 | 
128 |     :param dist_name: the name of the package to retrieve the scheme for, used
129 |         in the headers scheme path
130 |     :param user: indicates to use the "user" scheme
131 |     :param home: indicates to use the "home" scheme and provides the base
132 |         directory for the same
133 |     :param root: root under which other directories are re-based
134 |     :param isolated: equivalent to --no-user-cfg, i.e. do not consider
135 |         ~/.pydistutils.cfg (posix) or ~/pydistutils.cfg (non-posix) for
136 |         scheme paths
137 |     :param prefix: indicates to use the "prefix" scheme and provides the
138 |         base directory for the same
139 |     """
140 |     scheme = distutils_scheme(dist_name, user, home, root, isolated, prefix)
141 |     return Scheme(
142 |         platlib=scheme["platlib"],
143 |         purelib=scheme["purelib"],
144 |         headers=scheme["headers"],
145 |         scripts=scheme["scripts"],
146 |         data=scheme["data"],
147 |     )
148 | 
149 | 
150 | def get_bin_prefix() -> str:
151 |     # XXX: In old virtualenv versions, sys.prefix can contain '..' components,
152 |     # so we need to call normpath to eliminate them.
153 |     prefix = os.path.normpath(sys.prefix)
154 |     if WINDOWS:
155 |         bin_py = os.path.join(prefix, "Scripts")
156 |         # buildout uses 'bin' on Windows too?
157 |         if not os.path.exists(bin_py):
158 |             bin_py = os.path.join(prefix, "bin")
159 |         return bin_py
160 |     # Forcing to use /usr/local/bin for standard macOS framework installs
161 |     # Also log to ~/Library/Logs/ for use with the Console.app log viewer
162 |     if sys.platform[:6] == "darwin" and prefix[:16] == "/System/Library/":
163 |         return "/usr/local/bin"
164 |     return os.path.join(prefix, "bin")
165 | 
166 | 
167 | def get_purelib() -> str:
168 |     return get_python_lib(plat_specific=False)
169 | 
170 | 
171 | def get_platlib() -> str:
172 |     return get_python_lib(plat_specific=True)
173 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/werkzeug/datastructures/cache_control.py:
--------------------------------------------------------------------------------

```python
  1 | from __future__ import annotations
  2 | 
  3 | from .mixins import ImmutableDictMixin
  4 | from .mixins import UpdateDictMixin
  5 | 
  6 | 
  7 | def cache_control_property(key, empty, type):
  8 |     """Return a new property object for a cache header. Useful if you
  9 |     want to add support for a cache extension in a subclass.
 10 | 
 11 |     .. versionchanged:: 2.0
 12 |         Renamed from ``cache_property``.
 13 |     """
 14 |     return property(
 15 |         lambda x: x._get_cache_value(key, empty, type),
 16 |         lambda x, v: x._set_cache_value(key, v, type),
 17 |         lambda x: x._del_cache_value(key),
 18 |         f"accessor for {key!r}",
 19 |     )
 20 | 
 21 | 
 22 | class _CacheControl(UpdateDictMixin, dict):
 23 |     """Subclass of a dict that stores values for a Cache-Control header.  It
 24 |     has accessors for all the cache-control directives specified in RFC 2616.
 25 |     The class does not differentiate between request and response directives.
 26 | 
 27 |     Because the cache-control directives in the HTTP header use dashes the
 28 |     python descriptors use underscores for that.
 29 | 
 30 |     To get a header of the :class:`CacheControl` object again you can convert
 31 |     the object into a string or call the :meth:`to_header` method.  If you plan
 32 |     to subclass it and add your own items have a look at the sourcecode for
 33 |     that class.
 34 | 
 35 |     .. versionchanged:: 2.1.0
 36 |         Setting int properties such as ``max_age`` will convert the
 37 |         value to an int.
 38 | 
 39 |     .. versionchanged:: 0.4
 40 | 
 41 |        Setting `no_cache` or `private` to boolean `True` will set the implicit
 42 |        none-value which is ``*``:
 43 | 
 44 |        >>> cc = ResponseCacheControl()
 45 |        >>> cc.no_cache = True
 46 |        >>> cc
 47 |        <ResponseCacheControl 'no-cache'>
 48 |        >>> cc.no_cache
 49 |        '*'
 50 |        >>> cc.no_cache = None
 51 |        >>> cc
 52 |        <ResponseCacheControl ''>
 53 | 
 54 |        In versions before 0.5 the behavior documented here affected the now
 55 |        no longer existing `CacheControl` class.
 56 |     """
 57 | 
 58 |     no_cache = cache_control_property("no-cache", "*", None)
 59 |     no_store = cache_control_property("no-store", None, bool)
 60 |     max_age = cache_control_property("max-age", -1, int)
 61 |     no_transform = cache_control_property("no-transform", None, None)
 62 | 
 63 |     def __init__(self, values=(), on_update=None):
 64 |         dict.__init__(self, values or ())
 65 |         self.on_update = on_update
 66 |         self.provided = values is not None
 67 | 
 68 |     def _get_cache_value(self, key, empty, type):
 69 |         """Used internally by the accessor properties."""
 70 |         if type is bool:
 71 |             return key in self
 72 |         if key in self:
 73 |             value = self[key]
 74 |             if value is None:
 75 |                 return empty
 76 |             elif type is not None:
 77 |                 try:
 78 |                     value = type(value)
 79 |                 except ValueError:
 80 |                     pass
 81 |             return value
 82 |         return None
 83 | 
 84 |     def _set_cache_value(self, key, value, type):
 85 |         """Used internally by the accessor properties."""
 86 |         if type is bool:
 87 |             if value:
 88 |                 self[key] = None
 89 |             else:
 90 |                 self.pop(key, None)
 91 |         else:
 92 |             if value is None:
 93 |                 self.pop(key, None)
 94 |             elif value is True:
 95 |                 self[key] = None
 96 |             else:
 97 |                 if type is not None:
 98 |                     self[key] = type(value)
 99 |                 else:
100 |                     self[key] = value
101 | 
102 |     def _del_cache_value(self, key):
103 |         """Used internally by the accessor properties."""
104 |         if key in self:
105 |             del self[key]
106 | 
107 |     def to_header(self):
108 |         """Convert the stored values into a cache control header."""
109 |         return http.dump_header(self)
110 | 
111 |     def __str__(self):
112 |         return self.to_header()
113 | 
114 |     def __repr__(self):
115 |         kv_str = " ".join(f"{k}={v!r}" for k, v in sorted(self.items()))
116 |         return f"<{type(self).__name__} {kv_str}>"
117 | 
118 |     cache_property = staticmethod(cache_control_property)
119 | 
120 | 
121 | class RequestCacheControl(ImmutableDictMixin, _CacheControl):
122 |     """A cache control for requests.  This is immutable and gives access
123 |     to all the request-relevant cache control headers.
124 | 
125 |     To get a header of the :class:`RequestCacheControl` object again you can
126 |     convert the object into a string or call the :meth:`to_header` method.  If
127 |     you plan to subclass it and add your own items have a look at the sourcecode
128 |     for that class.
129 | 
130 |     .. versionchanged:: 2.1.0
131 |         Setting int properties such as ``max_age`` will convert the
132 |         value to an int.
133 | 
134 |     .. versionadded:: 0.5
135 |        In previous versions a `CacheControl` class existed that was used
136 |        both for request and response.
137 |     """
138 | 
139 |     max_stale = cache_control_property("max-stale", "*", int)
140 |     min_fresh = cache_control_property("min-fresh", "*", int)
141 |     only_if_cached = cache_control_property("only-if-cached", None, bool)
142 | 
143 | 
144 | class ResponseCacheControl(_CacheControl):
145 |     """A cache control for responses.  Unlike :class:`RequestCacheControl`
146 |     this is mutable and gives access to response-relevant cache control
147 |     headers.
148 | 
149 |     To get a header of the :class:`ResponseCacheControl` object again you can
150 |     convert the object into a string or call the :meth:`to_header` method.  If
151 |     you plan to subclass it and add your own items have a look at the sourcecode
152 |     for that class.
153 | 
154 |     .. versionchanged:: 2.1.1
155 |         ``s_maxage`` converts the value to an int.
156 | 
157 |     .. versionchanged:: 2.1.0
158 |         Setting int properties such as ``max_age`` will convert the
159 |         value to an int.
160 | 
161 |     .. versionadded:: 0.5
162 |        In previous versions a `CacheControl` class existed that was used
163 |        both for request and response.
164 |     """
165 | 
166 |     public = cache_control_property("public", None, bool)
167 |     private = cache_control_property("private", "*", None)
168 |     must_revalidate = cache_control_property("must-revalidate", None, bool)
169 |     proxy_revalidate = cache_control_property("proxy-revalidate", None, bool)
170 |     s_maxage = cache_control_property("s-maxage", None, int)
171 |     immutable = cache_control_property("immutable", None, bool)
172 | 
173 | 
174 | # circular dependencies
175 | from .. import http
176 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/network/download.py:
--------------------------------------------------------------------------------

```python
  1 | """Download files with progress indicators.
  2 | """
  3 | 
  4 | import email.message
  5 | import logging
  6 | import mimetypes
  7 | import os
  8 | from typing import Iterable, Optional, Tuple
  9 | 
 10 | from pip._vendor.requests.models import Response
 11 | 
 12 | from pip._internal.cli.progress_bars import get_download_progress_renderer
 13 | from pip._internal.exceptions import NetworkConnectionError
 14 | from pip._internal.models.index import PyPI
 15 | from pip._internal.models.link import Link
 16 | from pip._internal.network.cache import is_from_cache
 17 | from pip._internal.network.session import PipSession
 18 | from pip._internal.network.utils import HEADERS, raise_for_status, response_chunks
 19 | from pip._internal.utils.misc import format_size, redact_auth_from_url, splitext
 20 | 
 21 | logger = logging.getLogger(__name__)
 22 | 
 23 | 
 24 | def _get_http_response_size(resp: Response) -> Optional[int]:
 25 |     try:
 26 |         return int(resp.headers["content-length"])
 27 |     except (ValueError, KeyError, TypeError):
 28 |         return None
 29 | 
 30 | 
 31 | def _prepare_download(
 32 |     resp: Response,
 33 |     link: Link,
 34 |     progress_bar: str,
 35 | ) -> Iterable[bytes]:
 36 |     total_length = _get_http_response_size(resp)
 37 | 
 38 |     if link.netloc == PyPI.file_storage_domain:
 39 |         url = link.show_url
 40 |     else:
 41 |         url = link.url_without_fragment
 42 | 
 43 |     logged_url = redact_auth_from_url(url)
 44 | 
 45 |     if total_length:
 46 |         logged_url = f"{logged_url} ({format_size(total_length)})"
 47 | 
 48 |     if is_from_cache(resp):
 49 |         logger.info("Using cached %s", logged_url)
 50 |     else:
 51 |         logger.info("Downloading %s", logged_url)
 52 | 
 53 |     if logger.getEffectiveLevel() > logging.INFO:
 54 |         show_progress = False
 55 |     elif is_from_cache(resp):
 56 |         show_progress = False
 57 |     elif not total_length:
 58 |         show_progress = True
 59 |     elif total_length > (512 * 1024):
 60 |         show_progress = True
 61 |     else:
 62 |         show_progress = False
 63 | 
 64 |     chunks = response_chunks(resp)
 65 | 
 66 |     if not show_progress:
 67 |         return chunks
 68 | 
 69 |     renderer = get_download_progress_renderer(bar_type=progress_bar, size=total_length)
 70 |     return renderer(chunks)
 71 | 
 72 | 
 73 | def sanitize_content_filename(filename: str) -> str:
 74 |     """
 75 |     Sanitize the "filename" value from a Content-Disposition header.
 76 |     """
 77 |     return os.path.basename(filename)
 78 | 
 79 | 
 80 | def parse_content_disposition(content_disposition: str, default_filename: str) -> str:
 81 |     """
 82 |     Parse the "filename" value from a Content-Disposition header, and
 83 |     return the default filename if the result is empty.
 84 |     """
 85 |     m = email.message.Message()
 86 |     m["content-type"] = content_disposition
 87 |     filename = m.get_param("filename")
 88 |     if filename:
 89 |         # We need to sanitize the filename to prevent directory traversal
 90 |         # in case the filename contains ".." path parts.
 91 |         filename = sanitize_content_filename(str(filename))
 92 |     return filename or default_filename
 93 | 
 94 | 
 95 | def _get_http_response_filename(resp: Response, link: Link) -> str:
 96 |     """Get an ideal filename from the given HTTP response, falling back to
 97 |     the link filename if not provided.
 98 |     """
 99 |     filename = link.filename  # fallback
100 |     # Have a look at the Content-Disposition header for a better guess
101 |     content_disposition = resp.headers.get("content-disposition")
102 |     if content_disposition:
103 |         filename = parse_content_disposition(content_disposition, filename)
104 |     ext: Optional[str] = splitext(filename)[1]
105 |     if not ext:
106 |         ext = mimetypes.guess_extension(resp.headers.get("content-type", ""))
107 |         if ext:
108 |             filename += ext
109 |     if not ext and link.url != resp.url:
110 |         ext = os.path.splitext(resp.url)[1]
111 |         if ext:
112 |             filename += ext
113 |     return filename
114 | 
115 | 
116 | def _http_get_download(session: PipSession, link: Link) -> Response:
117 |     target_url = link.url.split("#", 1)[0]
118 |     resp = session.get(target_url, headers=HEADERS, stream=True)
119 |     raise_for_status(resp)
120 |     return resp
121 | 
122 | 
123 | class Downloader:
124 |     def __init__(
125 |         self,
126 |         session: PipSession,
127 |         progress_bar: str,
128 |     ) -> None:
129 |         self._session = session
130 |         self._progress_bar = progress_bar
131 | 
132 |     def __call__(self, link: Link, location: str) -> Tuple[str, str]:
133 |         """Download the file given by link into location."""
134 |         try:
135 |             resp = _http_get_download(self._session, link)
136 |         except NetworkConnectionError as e:
137 |             assert e.response is not None
138 |             logger.critical(
139 |                 "HTTP error %s while getting %s", e.response.status_code, link
140 |             )
141 |             raise
142 | 
143 |         filename = _get_http_response_filename(resp, link)
144 |         filepath = os.path.join(location, filename)
145 | 
146 |         chunks = _prepare_download(resp, link, self._progress_bar)
147 |         with open(filepath, "wb") as content_file:
148 |             for chunk in chunks:
149 |                 content_file.write(chunk)
150 |         content_type = resp.headers.get("Content-Type", "")
151 |         return filepath, content_type
152 | 
153 | 
154 | class BatchDownloader:
155 |     def __init__(
156 |         self,
157 |         session: PipSession,
158 |         progress_bar: str,
159 |     ) -> None:
160 |         self._session = session
161 |         self._progress_bar = progress_bar
162 | 
163 |     def __call__(
164 |         self, links: Iterable[Link], location: str
165 |     ) -> Iterable[Tuple[Link, Tuple[str, str]]]:
166 |         """Download the files given by links into location."""
167 |         for link in links:
168 |             try:
169 |                 resp = _http_get_download(self._session, link)
170 |             except NetworkConnectionError as e:
171 |                 assert e.response is not None
172 |                 logger.critical(
173 |                     "HTTP error %s while getting %s",
174 |                     e.response.status_code,
175 |                     link,
176 |                 )
177 |                 raise
178 | 
179 |             filename = _get_http_response_filename(resp, link)
180 |             filepath = os.path.join(location, filename)
181 | 
182 |             chunks = _prepare_download(resp, link, self._progress_bar)
183 |             with open(filepath, "wb") as content_file:
184 |                 for chunk in chunks:
185 |                     content_file.write(chunk)
186 |             content_type = resp.headers.get("Content-Type", "")
187 |             yield link, (filepath, content_type)
188 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/werkzeug/debug/shared/style.css:
--------------------------------------------------------------------------------

```css
  1 | body, input  { font-family: sans-serif; color: #000; text-align: center;
  2 |                margin: 1em; padding: 0; font-size: 15px; }
  3 | h1, h2, h3   { font-weight: normal; }
  4 | 
  5 | input        { background-color: #fff; margin: 0; text-align: left;
  6 |                outline: none !important; }
  7 | input[type="submit"] { padding: 3px 6px; }
  8 | a            { color: #11557C; }
  9 | a:hover      { color: #177199; }
 10 | pre, code,
 11 | textarea     { font-family: monospace; font-size: 14px; }
 12 | 
 13 | div.debugger { text-align: left; padding: 12px; margin: auto;
 14 |                background-color: white; }
 15 | h1           { font-size: 36px; margin: 0 0 0.3em 0; }
 16 | div.detail { cursor: pointer; }
 17 | div.detail p { margin: 0 0 8px 13px; font-size: 14px; white-space: pre-wrap;
 18 |                font-family: monospace; }
 19 | div.explanation { margin: 20px 13px; font-size: 15px; color: #555; }
 20 | div.footer   { font-size: 13px; text-align: right; margin: 30px 0;
 21 |                color: #86989B; }
 22 | 
 23 | h2           { font-size: 16px; margin: 1.3em 0 0.0 0; padding: 9px;
 24 |                background-color: #11557C; color: white; }
 25 | h2 em, h3 em { font-style: normal; color: #A5D6D9; font-weight: normal; }
 26 | 
 27 | div.traceback, div.plain { border: 1px solid #ddd; margin: 0 0 1em 0; padding: 10px; }
 28 | div.plain p      { margin: 0; }
 29 | div.plain textarea,
 30 | div.plain pre { margin: 10px 0 0 0; padding: 4px;
 31 |                 background-color: #E8EFF0; border: 1px solid #D3E7E9; }
 32 | div.plain textarea { width: 99%; height: 300px; }
 33 | div.traceback h3 { font-size: 1em; margin: 0 0 0.8em 0; }
 34 | div.traceback ul { list-style: none; margin: 0; padding: 0 0 0 1em; }
 35 | div.traceback h4 { font-size: 13px; font-weight: normal; margin: 0.7em 0 0.1em 0; }
 36 | div.traceback pre { margin: 0; padding: 5px 0 3px 15px;
 37 |                     background-color: #E8EFF0; border: 1px solid #D3E7E9; }
 38 | div.traceback .library .current { background: white; color: #555; }
 39 | div.traceback .expanded .current { background: #E8EFF0; color: black; }
 40 | div.traceback pre:hover { background-color: #DDECEE; color: black; cursor: pointer; }
 41 | div.traceback div.source.expanded pre + pre { border-top: none; }
 42 | 
 43 | div.traceback span.ws { display: none; }
 44 | div.traceback pre.before, div.traceback pre.after { display: none; background: white; }
 45 | div.traceback div.source.expanded pre.before,
 46 | div.traceback div.source.expanded pre.after {
 47 |     display: block;
 48 | }
 49 | 
 50 | div.traceback div.source.expanded span.ws {
 51 |     display: inline;
 52 | }
 53 | 
 54 | div.traceback blockquote { margin: 1em 0 0 0; padding: 0; white-space: pre-line; }
 55 | div.traceback img { float: right; padding: 2px; margin: -3px 2px 0 0; display: none; }
 56 | div.traceback img:hover { background-color: #ddd; cursor: pointer;
 57 |                           border-color: #BFDDE0; }
 58 | div.traceback pre:hover img { display: block; }
 59 | div.traceback cite.filename { font-style: normal; color: #3B666B; }
 60 | 
 61 | pre.console { border: 1px solid #ccc; background: white!important;
 62 |               color: black; padding: 5px!important;
 63 |               margin: 3px 0 0 0!important; cursor: default!important;
 64 |               max-height: 400px; overflow: auto; }
 65 | pre.console form { color: #555; }
 66 | pre.console input { background-color: transparent; color: #555;
 67 |                     width: 90%; font-family: monospace; font-size: 14px;
 68 |                      border: none!important; }
 69 | 
 70 | span.string { color: #30799B; }
 71 | span.number { color: #9C1A1C; }
 72 | span.help   { color: #3A7734; }
 73 | span.object { color: #485F6E; }
 74 | span.extended { opacity: 0.5; }
 75 | span.extended:hover { opacity: 1; }
 76 | a.toggle { text-decoration: none; background-repeat: no-repeat;
 77 |            background-position: center center;
 78 |            background-image: url(?__debugger__=yes&cmd=resource&f=more.png); }
 79 | a.toggle:hover { background-color: #444; }
 80 | a.open { background-image: url(?__debugger__=yes&cmd=resource&f=less.png); }
 81 | 
 82 | pre.console div.traceback,
 83 | pre.console div.box { margin: 5px 10px; white-space: normal;
 84 |                       border: 1px solid #11557C; padding: 10px;
 85 |                       font-family: sans-serif;  }
 86 | pre.console div.box h3,
 87 | pre.console div.traceback h3 { margin: -10px -10px 10px -10px; padding: 5px;
 88 |                                background: #11557C; color: white; }
 89 | 
 90 | pre.console div.traceback pre:hover { cursor: default; background: #E8EFF0; }
 91 | pre.console div.traceback pre.syntaxerror { background: inherit; border: none;
 92 |                                             margin: 20px -10px -10px -10px;
 93 |                                             padding: 10px; border-top: 1px solid #BFDDE0;
 94 |                                             background: #E8EFF0; }
 95 | pre.console div.noframe-traceback pre.syntaxerror { margin-top: -10px; border: none; }
 96 | 
 97 | pre.console div.box pre.repr { padding: 0; margin: 0; background-color: white; border: none; }
 98 | pre.console div.box table { margin-top: 6px; }
 99 | pre.console div.box pre { border: none; }
100 | pre.console div.box pre.help { background-color: white; }
101 | pre.console div.box pre.help:hover { cursor: default; }
102 | pre.console table tr { vertical-align: top; }
103 | div.console { border: 1px solid #ccc; padding: 4px; background-color: #fafafa; }
104 | 
105 | div.traceback pre, div.console pre {
106 |     white-space: pre-wrap;       /* css-3 should we be so lucky... */
107 |     white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
108 |     white-space: -pre-wrap;      /* Opera 4-6 ?? */
109 |     white-space: -o-pre-wrap;    /* Opera 7 ?? */
110 |     word-wrap: break-word;       /* Internet Explorer 5.5+ */
111 |     _white-space: pre;           /* IE only hack to re-specify in
112 |                                  addition to word-wrap  */
113 | }
114 | 
115 | 
116 | div.pin-prompt {
117 |     position: absolute;
118 |     display: none;
119 |     top: 0;
120 |     bottom: 0;
121 |     left: 0;
122 |     right: 0;
123 |     background: rgba(255, 255, 255, 0.8);
124 | }
125 | 
126 | div.pin-prompt .inner {
127 |     background: #eee;
128 |     padding: 10px 50px;
129 |     width: 350px;
130 |     margin: 10% auto 0 auto;
131 |     border: 1px solid #ccc;
132 |     border-radius: 2px;
133 | }
134 | 
135 | div.exc-divider {
136 |     margin: 0.7em 0 0 -1em;
137 |     padding: 0.5em;
138 |     background: #11557C;
139 |     color: #ddd;
140 |     border: 1px solid #ddd;
141 | }
142 | 
143 | .console.active {
144 |     max-height: 0!important;
145 |     display: none;
146 | }
147 | 
148 | .hidden {
149 |     display: none;
150 | }
151 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/flask/debughelpers.py:
--------------------------------------------------------------------------------

```python
  1 | from __future__ import annotations
  2 | 
  3 | import typing as t
  4 | 
  5 | from jinja2.loaders import BaseLoader
  6 | from werkzeug.routing import RequestRedirect
  7 | 
  8 | from .blueprints import Blueprint
  9 | from .globals import request_ctx
 10 | from .sansio.app import App
 11 | 
 12 | if t.TYPE_CHECKING:
 13 |     from .sansio.scaffold import Scaffold
 14 |     from .wrappers import Request
 15 | 
 16 | 
 17 | class UnexpectedUnicodeError(AssertionError, UnicodeError):
 18 |     """Raised in places where we want some better error reporting for
 19 |     unexpected unicode or binary data.
 20 |     """
 21 | 
 22 | 
 23 | class DebugFilesKeyError(KeyError, AssertionError):
 24 |     """Raised from request.files during debugging.  The idea is that it can
 25 |     provide a better error message than just a generic KeyError/BadRequest.
 26 |     """
 27 | 
 28 |     def __init__(self, request: Request, key: str) -> None:
 29 |         form_matches = request.form.getlist(key)
 30 |         buf = [
 31 |             f"You tried to access the file {key!r} in the request.files"
 32 |             " dictionary but it does not exist. The mimetype for the"
 33 |             f" request is {request.mimetype!r} instead of"
 34 |             " 'multipart/form-data' which means that no file contents"
 35 |             " were transmitted. To fix this error you should provide"
 36 |             ' enctype="multipart/form-data" in your form.'
 37 |         ]
 38 |         if form_matches:
 39 |             names = ", ".join(repr(x) for x in form_matches)
 40 |             buf.append(
 41 |                 "\n\nThe browser instead transmitted some file names. "
 42 |                 f"This was submitted: {names}"
 43 |             )
 44 |         self.msg = "".join(buf)
 45 | 
 46 |     def __str__(self) -> str:
 47 |         return self.msg
 48 | 
 49 | 
 50 | class FormDataRoutingRedirect(AssertionError):
 51 |     """This exception is raised in debug mode if a routing redirect
 52 |     would cause the browser to drop the method or body. This happens
 53 |     when method is not GET, HEAD or OPTIONS and the status code is not
 54 |     307 or 308.
 55 |     """
 56 | 
 57 |     def __init__(self, request: Request) -> None:
 58 |         exc = request.routing_exception
 59 |         assert isinstance(exc, RequestRedirect)
 60 |         buf = [
 61 |             f"A request was sent to '{request.url}', but routing issued"
 62 |             f" a redirect to the canonical URL '{exc.new_url}'."
 63 |         ]
 64 | 
 65 |         if f"{request.base_url}/" == exc.new_url.partition("?")[0]:
 66 |             buf.append(
 67 |                 " The URL was defined with a trailing slash. Flask"
 68 |                 " will redirect to the URL with a trailing slash if it"
 69 |                 " was accessed without one."
 70 |             )
 71 | 
 72 |         buf.append(
 73 |             " Send requests to the canonical URL, or use 307 or 308 for"
 74 |             " routing redirects. Otherwise, browsers will drop form"
 75 |             " data.\n\n"
 76 |             "This exception is only raised in debug mode."
 77 |         )
 78 |         super().__init__("".join(buf))
 79 | 
 80 | 
 81 | def attach_enctype_error_multidict(request: Request) -> None:
 82 |     """Patch ``request.files.__getitem__`` to raise a descriptive error
 83 |     about ``enctype=multipart/form-data``.
 84 | 
 85 |     :param request: The request to patch.
 86 |     :meta private:
 87 |     """
 88 |     oldcls = request.files.__class__
 89 | 
 90 |     class newcls(oldcls):  # type: ignore[valid-type, misc]
 91 |         def __getitem__(self, key: str) -> t.Any:
 92 |             try:
 93 |                 return super().__getitem__(key)
 94 |             except KeyError as e:
 95 |                 if key not in request.form:
 96 |                     raise
 97 | 
 98 |                 raise DebugFilesKeyError(request, key).with_traceback(
 99 |                     e.__traceback__
100 |                 ) from None
101 | 
102 |     newcls.__name__ = oldcls.__name__
103 |     newcls.__module__ = oldcls.__module__
104 |     request.files.__class__ = newcls
105 | 
106 | 
107 | def _dump_loader_info(loader: BaseLoader) -> t.Iterator[str]:
108 |     yield f"class: {type(loader).__module__}.{type(loader).__name__}"
109 |     for key, value in sorted(loader.__dict__.items()):
110 |         if key.startswith("_"):
111 |             continue
112 |         if isinstance(value, (tuple, list)):
113 |             if not all(isinstance(x, str) for x in value):
114 |                 continue
115 |             yield f"{key}:"
116 |             for item in value:
117 |                 yield f"  - {item}"
118 |             continue
119 |         elif not isinstance(value, (str, int, float, bool)):
120 |             continue
121 |         yield f"{key}: {value!r}"
122 | 
123 | 
124 | def explain_template_loading_attempts(
125 |     app: App,
126 |     template: str,
127 |     attempts: list[
128 |         tuple[
129 |             BaseLoader,
130 |             Scaffold,
131 |             tuple[str, str | None, t.Callable[[], bool] | None] | None,
132 |         ]
133 |     ],
134 | ) -> None:
135 |     """This should help developers understand what failed"""
136 |     info = [f"Locating template {template!r}:"]
137 |     total_found = 0
138 |     blueprint = None
139 |     if request_ctx and request_ctx.request.blueprint is not None:
140 |         blueprint = request_ctx.request.blueprint
141 | 
142 |     for idx, (loader, srcobj, triple) in enumerate(attempts):
143 |         if isinstance(srcobj, App):
144 |             src_info = f"application {srcobj.import_name!r}"
145 |         elif isinstance(srcobj, Blueprint):
146 |             src_info = f"blueprint {srcobj.name!r} ({srcobj.import_name})"
147 |         else:
148 |             src_info = repr(srcobj)
149 | 
150 |         info.append(f"{idx + 1:5}: trying loader of {src_info}")
151 | 
152 |         for line in _dump_loader_info(loader):
153 |             info.append(f"       {line}")
154 | 
155 |         if triple is None:
156 |             detail = "no match"
157 |         else:
158 |             detail = f"found ({triple[1] or '<string>'!r})"
159 |             total_found += 1
160 |         info.append(f"       -> {detail}")
161 | 
162 |     seems_fishy = False
163 |     if total_found == 0:
164 |         info.append("Error: the template could not be found.")
165 |         seems_fishy = True
166 |     elif total_found > 1:
167 |         info.append("Warning: multiple loaders returned a match for the template.")
168 |         seems_fishy = True
169 | 
170 |     if blueprint is not None and seems_fishy:
171 |         info.append(
172 |             "  The template was looked up from an endpoint that belongs"
173 |             f" to the blueprint {blueprint!r}."
174 |         )
175 |         info.append("  Maybe you did not place a template in the right folder?")
176 |         info.append("  See https://flask.palletsprojects.com/blueprints/#templates")
177 | 
178 |     app.logger.info("\n".join(info))
179 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/werkzeug/debug/console.py:
--------------------------------------------------------------------------------

```python
  1 | from __future__ import annotations
  2 | 
  3 | import code
  4 | import sys
  5 | import typing as t
  6 | from contextvars import ContextVar
  7 | from types import CodeType
  8 | 
  9 | from markupsafe import escape
 10 | 
 11 | from .repr import debug_repr
 12 | from .repr import dump
 13 | from .repr import helper
 14 | 
 15 | _stream: ContextVar[HTMLStringO] = ContextVar("werkzeug.debug.console.stream")
 16 | _ipy: ContextVar[_InteractiveConsole] = ContextVar("werkzeug.debug.console.ipy")
 17 | 
 18 | 
 19 | class HTMLStringO:
 20 |     """A StringO version that HTML escapes on write."""
 21 | 
 22 |     def __init__(self) -> None:
 23 |         self._buffer: list[str] = []
 24 | 
 25 |     def isatty(self) -> bool:
 26 |         return False
 27 | 
 28 |     def close(self) -> None:
 29 |         pass
 30 | 
 31 |     def flush(self) -> None:
 32 |         pass
 33 | 
 34 |     def seek(self, n: int, mode: int = 0) -> None:
 35 |         pass
 36 | 
 37 |     def readline(self) -> str:
 38 |         if len(self._buffer) == 0:
 39 |             return ""
 40 |         ret = self._buffer[0]
 41 |         del self._buffer[0]
 42 |         return ret
 43 | 
 44 |     def reset(self) -> str:
 45 |         val = "".join(self._buffer)
 46 |         del self._buffer[:]
 47 |         return val
 48 | 
 49 |     def _write(self, x: str) -> None:
 50 |         self._buffer.append(x)
 51 | 
 52 |     def write(self, x: str) -> None:
 53 |         self._write(escape(x))
 54 | 
 55 |     def writelines(self, x: t.Iterable[str]) -> None:
 56 |         self._write(escape("".join(x)))
 57 | 
 58 | 
 59 | class ThreadedStream:
 60 |     """Thread-local wrapper for sys.stdout for the interactive console."""
 61 | 
 62 |     @staticmethod
 63 |     def push() -> None:
 64 |         if not isinstance(sys.stdout, ThreadedStream):
 65 |             sys.stdout = t.cast(t.TextIO, ThreadedStream())
 66 | 
 67 |         _stream.set(HTMLStringO())
 68 | 
 69 |     @staticmethod
 70 |     def fetch() -> str:
 71 |         try:
 72 |             stream = _stream.get()
 73 |         except LookupError:
 74 |             return ""
 75 | 
 76 |         return stream.reset()
 77 | 
 78 |     @staticmethod
 79 |     def displayhook(obj: object) -> None:
 80 |         try:
 81 |             stream = _stream.get()
 82 |         except LookupError:
 83 |             return _displayhook(obj)  # type: ignore
 84 | 
 85 |         # stream._write bypasses escaping as debug_repr is
 86 |         # already generating HTML for us.
 87 |         if obj is not None:
 88 |             _ipy.get().locals["_"] = obj
 89 |             stream._write(debug_repr(obj))
 90 | 
 91 |     def __setattr__(self, name: str, value: t.Any) -> None:
 92 |         raise AttributeError(f"read only attribute {name}")
 93 | 
 94 |     def __dir__(self) -> list[str]:
 95 |         return dir(sys.__stdout__)
 96 | 
 97 |     def __getattribute__(self, name: str) -> t.Any:
 98 |         try:
 99 |             stream = _stream.get()
100 |         except LookupError:
101 |             stream = sys.__stdout__  # type: ignore[assignment]
102 | 
103 |         return getattr(stream, name)
104 | 
105 |     def __repr__(self) -> str:
106 |         return repr(sys.__stdout__)
107 | 
108 | 
109 | # add the threaded stream as display hook
110 | _displayhook = sys.displayhook
111 | sys.displayhook = ThreadedStream.displayhook
112 | 
113 | 
114 | class _ConsoleLoader:
115 |     def __init__(self) -> None:
116 |         self._storage: dict[int, str] = {}
117 | 
118 |     def register(self, code: CodeType, source: str) -> None:
119 |         self._storage[id(code)] = source
120 |         # register code objects of wrapped functions too.
121 |         for var in code.co_consts:
122 |             if isinstance(var, CodeType):
123 |                 self._storage[id(var)] = source
124 | 
125 |     def get_source_by_code(self, code: CodeType) -> str | None:
126 |         try:
127 |             return self._storage[id(code)]
128 |         except KeyError:
129 |             return None
130 | 
131 | 
132 | class _InteractiveConsole(code.InteractiveInterpreter):
133 |     locals: dict[str, t.Any]
134 | 
135 |     def __init__(self, globals: dict[str, t.Any], locals: dict[str, t.Any]) -> None:
136 |         self.loader = _ConsoleLoader()
137 |         locals = {
138 |             **globals,
139 |             **locals,
140 |             "dump": dump,
141 |             "help": helper,
142 |             "__loader__": self.loader,
143 |         }
144 |         super().__init__(locals)
145 |         original_compile = self.compile
146 | 
147 |         def compile(source: str, filename: str, symbol: str) -> CodeType | None:
148 |             code = original_compile(source, filename, symbol)
149 | 
150 |             if code is not None:
151 |                 self.loader.register(code, source)
152 | 
153 |             return code
154 | 
155 |         self.compile = compile  # type: ignore[assignment]
156 |         self.more = False
157 |         self.buffer: list[str] = []
158 | 
159 |     def runsource(self, source: str, **kwargs: t.Any) -> str:  # type: ignore
160 |         source = f"{source.rstrip()}\n"
161 |         ThreadedStream.push()
162 |         prompt = "... " if self.more else ">>> "
163 |         try:
164 |             source_to_eval = "".join(self.buffer + [source])
165 |             if super().runsource(source_to_eval, "<debugger>", "single"):
166 |                 self.more = True
167 |                 self.buffer.append(source)
168 |             else:
169 |                 self.more = False
170 |                 del self.buffer[:]
171 |         finally:
172 |             output = ThreadedStream.fetch()
173 |         return f"{prompt}{escape(source)}{output}"
174 | 
175 |     def runcode(self, code: CodeType) -> None:
176 |         try:
177 |             exec(code, self.locals)
178 |         except Exception:
179 |             self.showtraceback()
180 | 
181 |     def showtraceback(self) -> None:
182 |         from .tbtools import DebugTraceback
183 | 
184 |         exc = t.cast(BaseException, sys.exc_info()[1])
185 |         te = DebugTraceback(exc, skip=1)
186 |         sys.stdout._write(te.render_traceback_html())  # type: ignore
187 | 
188 |     def showsyntaxerror(self, filename: str | None = None) -> None:
189 |         from .tbtools import DebugTraceback
190 | 
191 |         exc = t.cast(BaseException, sys.exc_info()[1])
192 |         te = DebugTraceback(exc, skip=4)
193 |         sys.stdout._write(te.render_traceback_html())  # type: ignore
194 | 
195 |     def write(self, data: str) -> None:
196 |         sys.stdout.write(data)
197 | 
198 | 
199 | class Console:
200 |     """An interactive console."""
201 | 
202 |     def __init__(
203 |         self,
204 |         globals: dict[str, t.Any] | None = None,
205 |         locals: dict[str, t.Any] | None = None,
206 |     ) -> None:
207 |         if locals is None:
208 |             locals = {}
209 |         if globals is None:
210 |             globals = {}
211 |         self._ipy = _InteractiveConsole(globals, locals)
212 | 
213 |     def eval(self, code: str) -> str:
214 |         _ipy.set(self._ipy)
215 |         old_sys_stdout = sys.stdout
216 |         try:
217 |             return self._ipy.runsource(code)
218 |         finally:
219 |             sys.stdout = old_sys_stdout
220 | 
```

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

```python
  1 | """Rich text and beautiful formatting in the terminal."""
  2 | 
  3 | import os
  4 | from typing import IO, TYPE_CHECKING, Any, Callable, Optional, Union
  5 | 
  6 | from ._extension import load_ipython_extension  # noqa: F401
  7 | 
  8 | __all__ = ["get_console", "reconfigure", "print", "inspect", "print_json"]
  9 | 
 10 | if TYPE_CHECKING:
 11 |     from .console import Console
 12 | 
 13 | # Global console used by alternative print
 14 | _console: Optional["Console"] = None
 15 | 
 16 | try:
 17 |     _IMPORT_CWD = os.path.abspath(os.getcwd())
 18 | except FileNotFoundError:
 19 |     # Can happen if the cwd has been deleted
 20 |     _IMPORT_CWD = ""
 21 | 
 22 | 
 23 | def get_console() -> "Console":
 24 |     """Get a global :class:`~rich.console.Console` instance. This function is used when Rich requires a Console,
 25 |     and hasn't been explicitly given one.
 26 | 
 27 |     Returns:
 28 |         Console: A console instance.
 29 |     """
 30 |     global _console
 31 |     if _console is None:
 32 |         from .console import Console
 33 | 
 34 |         _console = Console()
 35 | 
 36 |     return _console
 37 | 
 38 | 
 39 | def reconfigure(*args: Any, **kwargs: Any) -> None:
 40 |     """Reconfigures the global console by replacing it with another.
 41 | 
 42 |     Args:
 43 |         *args (Any): Positional arguments for the replacement :class:`~rich.console.Console`.
 44 |         **kwargs (Any): Keyword arguments for the replacement :class:`~rich.console.Console`.
 45 |     """
 46 |     from pip._vendor.rich.console import Console
 47 | 
 48 |     new_console = Console(*args, **kwargs)
 49 |     _console = get_console()
 50 |     _console.__dict__ = new_console.__dict__
 51 | 
 52 | 
 53 | def print(
 54 |     *objects: Any,
 55 |     sep: str = " ",
 56 |     end: str = "\n",
 57 |     file: Optional[IO[str]] = None,
 58 |     flush: bool = False,
 59 | ) -> None:
 60 |     r"""Print object(s) supplied via positional arguments.
 61 |     This function has an identical signature to the built-in print.
 62 |     For more advanced features, see the :class:`~rich.console.Console` class.
 63 | 
 64 |     Args:
 65 |         sep (str, optional): Separator between printed objects. Defaults to " ".
 66 |         end (str, optional): Character to write at end of output. Defaults to "\\n".
 67 |         file (IO[str], optional): File to write to, or None for stdout. Defaults to None.
 68 |         flush (bool, optional): Has no effect as Rich always flushes output. Defaults to False.
 69 | 
 70 |     """
 71 |     from .console import Console
 72 | 
 73 |     write_console = get_console() if file is None else Console(file=file)
 74 |     return write_console.print(*objects, sep=sep, end=end)
 75 | 
 76 | 
 77 | def print_json(
 78 |     json: Optional[str] = None,
 79 |     *,
 80 |     data: Any = None,
 81 |     indent: Union[None, int, str] = 2,
 82 |     highlight: bool = True,
 83 |     skip_keys: bool = False,
 84 |     ensure_ascii: bool = False,
 85 |     check_circular: bool = True,
 86 |     allow_nan: bool = True,
 87 |     default: Optional[Callable[[Any], Any]] = None,
 88 |     sort_keys: bool = False,
 89 | ) -> None:
 90 |     """Pretty prints JSON. Output will be valid JSON.
 91 | 
 92 |     Args:
 93 |         json (str): A string containing JSON.
 94 |         data (Any): If json is not supplied, then encode this data.
 95 |         indent (int, optional): Number of spaces to indent. Defaults to 2.
 96 |         highlight (bool, optional): Enable highlighting of output: Defaults to True.
 97 |         skip_keys (bool, optional): Skip keys not of a basic type. Defaults to False.
 98 |         ensure_ascii (bool, optional): Escape all non-ascii characters. Defaults to False.
 99 |         check_circular (bool, optional): Check for circular references. Defaults to True.
100 |         allow_nan (bool, optional): Allow NaN and Infinity values. Defaults to True.
101 |         default (Callable, optional): A callable that converts values that can not be encoded
102 |             in to something that can be JSON encoded. Defaults to None.
103 |         sort_keys (bool, optional): Sort dictionary keys. Defaults to False.
104 |     """
105 | 
106 |     get_console().print_json(
107 |         json,
108 |         data=data,
109 |         indent=indent,
110 |         highlight=highlight,
111 |         skip_keys=skip_keys,
112 |         ensure_ascii=ensure_ascii,
113 |         check_circular=check_circular,
114 |         allow_nan=allow_nan,
115 |         default=default,
116 |         sort_keys=sort_keys,
117 |     )
118 | 
119 | 
120 | def inspect(
121 |     obj: Any,
122 |     *,
123 |     console: Optional["Console"] = None,
124 |     title: Optional[str] = None,
125 |     help: bool = False,
126 |     methods: bool = False,
127 |     docs: bool = True,
128 |     private: bool = False,
129 |     dunder: bool = False,
130 |     sort: bool = True,
131 |     all: bool = False,
132 |     value: bool = True,
133 | ) -> None:
134 |     """Inspect any Python object.
135 | 
136 |     * inspect(<OBJECT>) to see summarized info.
137 |     * inspect(<OBJECT>, methods=True) to see methods.
138 |     * inspect(<OBJECT>, help=True) to see full (non-abbreviated) help.
139 |     * inspect(<OBJECT>, private=True) to see private attributes (single underscore).
140 |     * inspect(<OBJECT>, dunder=True) to see attributes beginning with double underscore.
141 |     * inspect(<OBJECT>, all=True) to see all attributes.
142 | 
143 |     Args:
144 |         obj (Any): An object to inspect.
145 |         title (str, optional): Title to display over inspect result, or None use type. Defaults to None.
146 |         help (bool, optional): Show full help text rather than just first paragraph. Defaults to False.
147 |         methods (bool, optional): Enable inspection of callables. Defaults to False.
148 |         docs (bool, optional): Also render doc strings. Defaults to True.
149 |         private (bool, optional): Show private attributes (beginning with underscore). Defaults to False.
150 |         dunder (bool, optional): Show attributes starting with double underscore. Defaults to False.
151 |         sort (bool, optional): Sort attributes alphabetically. Defaults to True.
152 |         all (bool, optional): Show all attributes. Defaults to False.
153 |         value (bool, optional): Pretty print value. Defaults to True.
154 |     """
155 |     _console = console or get_console()
156 |     from pip._vendor.rich._inspect import Inspect
157 | 
158 |     # Special case for inspect(inspect)
159 |     is_inspect = obj is inspect
160 | 
161 |     _inspect = Inspect(
162 |         obj,
163 |         title=title,
164 |         help=is_inspect or help,
165 |         methods=is_inspect or methods,
166 |         docs=is_inspect or docs,
167 |         private=private,
168 |         dunder=dunder,
169 |         sort=sort,
170 |         all=all,
171 |         value=value,
172 |     )
173 |     _console.print(_inspect)
174 | 
175 | 
176 | if __name__ == "__main__":  # pragma: no cover
177 |     print("Hello, **World**")
178 | 
```

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

```
  1 | /*
  2 |  * Summary: interface for the memory allocator
  3 |  * Description: provides interfaces for the memory allocator,
  4 |  *              including debugging capabilities.
  5 |  *
  6 |  * Copy: See Copyright for the status of this software.
  7 |  *
  8 |  * Author: Daniel Veillard
  9 |  */
 10 | 
 11 | 
 12 | #ifndef __DEBUG_MEMORY_ALLOC__
 13 | #define __DEBUG_MEMORY_ALLOC__
 14 | 
 15 | #include <stdio.h>
 16 | #include <libxml/xmlversion.h>
 17 | 
 18 | #ifdef __cplusplus
 19 | extern "C" {
 20 | #endif
 21 | 
 22 | /*
 23 |  * The XML memory wrapper support 4 basic overloadable functions.
 24 |  */
 25 | /**
 26 |  * xmlFreeFunc:
 27 |  * @mem: an already allocated block of memory
 28 |  *
 29 |  * Signature for a free() implementation.
 30 |  */
 31 | typedef void (*xmlFreeFunc)(void *mem);
 32 | /**
 33 |  * xmlMallocFunc:
 34 |  * @size:  the size requested in bytes
 35 |  *
 36 |  * Signature for a malloc() implementation.
 37 |  *
 38 |  * Returns a pointer to the newly allocated block or NULL in case of error.
 39 |  */
 40 | typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) *xmlMallocFunc)(size_t size);
 41 | 
 42 | /**
 43 |  * xmlReallocFunc:
 44 |  * @mem: an already allocated block of memory
 45 |  * @size:  the new size requested in bytes
 46 |  *
 47 |  * Signature for a realloc() implementation.
 48 |  *
 49 |  * Returns a pointer to the newly reallocated block or NULL in case of error.
 50 |  */
 51 | typedef void *(*xmlReallocFunc)(void *mem, size_t size);
 52 | 
 53 | /**
 54 |  * xmlStrdupFunc:
 55 |  * @str: a zero terminated string
 56 |  *
 57 |  * Signature for an strdup() implementation.
 58 |  *
 59 |  * Returns the copy of the string or NULL in case of error.
 60 |  */
 61 | typedef char *(*xmlStrdupFunc)(const char *str);
 62 | 
 63 | /*
 64 |  * In general the memory allocation entry points are not kept
 65 |  * thread specific but this can be overridden by LIBXML_THREAD_ALLOC_ENABLED
 66 |  *    - xmlMalloc
 67 |  *    - xmlMallocAtomic
 68 |  *    - xmlRealloc
 69 |  *    - xmlMemStrdup
 70 |  *    - xmlFree
 71 |  */
 72 | /** DOC_DISABLE */
 73 | #ifdef LIBXML_THREAD_ALLOC_ENABLED
 74 |   #define XML_GLOBALS_ALLOC \
 75 |     XML_OP(xmlMalloc, xmlMallocFunc, XML_NO_ATTR) \
 76 |     XML_OP(xmlMallocAtomic, xmlMallocFunc, XML_NO_ATTR) \
 77 |     XML_OP(xmlRealloc, xmlReallocFunc, XML_NO_ATTR) \
 78 |     XML_OP(xmlFree, xmlFreeFunc, XML_NO_ATTR) \
 79 |     XML_OP(xmlMemStrdup, xmlStrdupFunc, XML_NO_ATTR)
 80 |   #define XML_OP XML_DECLARE_GLOBAL
 81 |     XML_GLOBALS_ALLOC
 82 |   #undef XML_OP
 83 |   #if defined(LIBXML_THREAD_ENABLED) && !defined(XML_GLOBALS_NO_REDEFINITION)
 84 |     #define xmlMalloc XML_GLOBAL_MACRO(xmlMalloc)
 85 |     #define xmlMallocAtomic XML_GLOBAL_MACRO(xmlMallocAtomic)
 86 |     #define xmlRealloc XML_GLOBAL_MACRO(xmlRealloc)
 87 |     #define xmlFree XML_GLOBAL_MACRO(xmlFree)
 88 |     #define xmlMemStrdup XML_GLOBAL_MACRO(xmlMemStrdup)
 89 |   #endif
 90 | #else
 91 |   #define XML_GLOBALS_ALLOC
 92 | /** DOC_ENABLE */
 93 |   XMLPUBVAR xmlMallocFunc xmlMalloc;
 94 |   XMLPUBVAR xmlMallocFunc xmlMallocAtomic;
 95 |   XMLPUBVAR xmlReallocFunc xmlRealloc;
 96 |   XMLPUBVAR xmlFreeFunc xmlFree;
 97 |   XMLPUBVAR xmlStrdupFunc xmlMemStrdup;
 98 | #endif
 99 | 
100 | /*
101 |  * The way to overload the existing functions.
102 |  * The xmlGc function have an extra entry for atomic block
103 |  * allocations useful for garbage collected memory allocators
104 |  */
105 | XMLPUBFUN int
106 | 	xmlMemSetup	(xmlFreeFunc freeFunc,
107 | 			 xmlMallocFunc mallocFunc,
108 | 			 xmlReallocFunc reallocFunc,
109 | 			 xmlStrdupFunc strdupFunc);
110 | XMLPUBFUN int
111 | 	xmlMemGet	(xmlFreeFunc *freeFunc,
112 | 			 xmlMallocFunc *mallocFunc,
113 | 			 xmlReallocFunc *reallocFunc,
114 | 			 xmlStrdupFunc *strdupFunc);
115 | XMLPUBFUN int
116 | 	xmlGcMemSetup	(xmlFreeFunc freeFunc,
117 | 			 xmlMallocFunc mallocFunc,
118 | 			 xmlMallocFunc mallocAtomicFunc,
119 | 			 xmlReallocFunc reallocFunc,
120 | 			 xmlStrdupFunc strdupFunc);
121 | XMLPUBFUN int
122 | 	xmlGcMemGet	(xmlFreeFunc *freeFunc,
123 | 			 xmlMallocFunc *mallocFunc,
124 | 			 xmlMallocFunc *mallocAtomicFunc,
125 | 			 xmlReallocFunc *reallocFunc,
126 | 			 xmlStrdupFunc *strdupFunc);
127 | 
128 | /*
129 |  * Initialization of the memory layer.
130 |  */
131 | XML_DEPRECATED
132 | XMLPUBFUN int
133 | 	xmlInitMemory	(void);
134 | 
135 | /*
136 |  * Cleanup of the memory layer.
137 |  */
138 | XML_DEPRECATED
139 | XMLPUBFUN void
140 |                 xmlCleanupMemory        (void);
141 | /*
142 |  * These are specific to the XML debug memory wrapper.
143 |  */
144 | XMLPUBFUN size_t
145 | 	xmlMemSize	(void *ptr);
146 | XMLPUBFUN int
147 | 	xmlMemUsed	(void);
148 | XMLPUBFUN int
149 | 	xmlMemBlocks	(void);
150 | XMLPUBFUN void
151 | 	xmlMemDisplay	(FILE *fp);
152 | XMLPUBFUN void
153 | 	xmlMemDisplayLast(FILE *fp, long nbBytes);
154 | XMLPUBFUN void
155 | 	xmlMemShow	(FILE *fp, int nr);
156 | XMLPUBFUN void
157 | 	xmlMemoryDump	(void);
158 | XMLPUBFUN void *
159 | 	xmlMemMalloc	(size_t size) LIBXML_ATTR_ALLOC_SIZE(1);
160 | XMLPUBFUN void *
161 | 	xmlMemRealloc	(void *ptr,size_t size);
162 | XMLPUBFUN void
163 | 	xmlMemFree	(void *ptr);
164 | XMLPUBFUN char *
165 | 	xmlMemoryStrdup	(const char *str);
166 | XMLPUBFUN void *
167 | 	xmlMallocLoc	(size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1);
168 | XMLPUBFUN void *
169 | 	xmlReallocLoc	(void *ptr, size_t size, const char *file, int line);
170 | XMLPUBFUN void *
171 | 	xmlMallocAtomicLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1);
172 | XMLPUBFUN char *
173 | 	xmlMemStrdupLoc	(const char *str, const char *file, int line);
174 | 
175 | 
176 | /** DOC_DISABLE */
177 | #ifdef DEBUG_MEMORY_LOCATION
178 | /**
179 |  * xmlMalloc:
180 |  * @size:  number of bytes to allocate
181 |  *
182 |  * Wrapper for the malloc() function used in the XML library.
183 |  *
184 |  * Returns the pointer to the allocated area or NULL in case of error.
185 |  */
186 | #define xmlMalloc(size) xmlMallocLoc((size), __FILE__, __LINE__)
187 | /**
188 |  * xmlMallocAtomic:
189 |  * @size:  number of bytes to allocate
190 |  *
191 |  * Wrapper for the malloc() function used in the XML library for allocation
192 |  * of block not containing pointers to other areas.
193 |  *
194 |  * Returns the pointer to the allocated area or NULL in case of error.
195 |  */
196 | #define xmlMallocAtomic(size) xmlMallocAtomicLoc((size), __FILE__, __LINE__)
197 | /**
198 |  * xmlRealloc:
199 |  * @ptr:  pointer to the existing allocated area
200 |  * @size:  number of bytes to allocate
201 |  *
202 |  * Wrapper for the realloc() function used in the XML library.
203 |  *
204 |  * Returns the pointer to the allocated area or NULL in case of error.
205 |  */
206 | #define xmlRealloc(ptr, size) xmlReallocLoc((ptr), (size), __FILE__, __LINE__)
207 | /**
208 |  * xmlMemStrdup:
209 |  * @str:  pointer to the existing string
210 |  *
211 |  * Wrapper for the strdup() function, xmlStrdup() is usually preferred.
212 |  *
213 |  * Returns the pointer to the allocated area or NULL in case of error.
214 |  */
215 | #define xmlMemStrdup(str) xmlMemStrdupLoc((str), __FILE__, __LINE__)
216 | 
217 | #endif /* DEBUG_MEMORY_LOCATION */
218 | /** DOC_ENABLE */
219 | 
220 | #ifdef __cplusplus
221 | }
222 | #endif /* __cplusplus */
223 | 
224 | #endif  /* __DEBUG_MEMORY_ALLOC__ */
225 | 
226 | 
```
Page 20/168FirstPrevNextLast