#
tokens: 48813/50000 7/808 files (page 27/168)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 27 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/click/_winconsole.py:
--------------------------------------------------------------------------------

```python
  1 | # This module is based on the excellent work by Adam Bartoš who
  2 | # provided a lot of what went into the implementation here in
  3 | # the discussion to issue1602 in the Python bug tracker.
  4 | #
  5 | # There are some general differences in regards to how this works
  6 | # compared to the original patches as we do not need to patch
  7 | # the entire interpreter but just work in our little world of
  8 | # echo and prompt.
  9 | import io
 10 | import sys
 11 | import time
 12 | import typing as t
 13 | from ctypes import byref
 14 | from ctypes import c_char
 15 | from ctypes import c_char_p
 16 | from ctypes import c_int
 17 | from ctypes import c_ssize_t
 18 | from ctypes import c_ulong
 19 | from ctypes import c_void_p
 20 | from ctypes import POINTER
 21 | from ctypes import py_object
 22 | from ctypes import Structure
 23 | from ctypes.wintypes import DWORD
 24 | from ctypes.wintypes import HANDLE
 25 | from ctypes.wintypes import LPCWSTR
 26 | from ctypes.wintypes import LPWSTR
 27 | 
 28 | from ._compat import _NonClosingTextIOWrapper
 29 | 
 30 | assert sys.platform == "win32"
 31 | import msvcrt  # noqa: E402
 32 | from ctypes import windll  # noqa: E402
 33 | from ctypes import WINFUNCTYPE  # noqa: E402
 34 | 
 35 | c_ssize_p = POINTER(c_ssize_t)
 36 | 
 37 | kernel32 = windll.kernel32
 38 | GetStdHandle = kernel32.GetStdHandle
 39 | ReadConsoleW = kernel32.ReadConsoleW
 40 | WriteConsoleW = kernel32.WriteConsoleW
 41 | GetConsoleMode = kernel32.GetConsoleMode
 42 | GetLastError = kernel32.GetLastError
 43 | GetCommandLineW = WINFUNCTYPE(LPWSTR)(("GetCommandLineW", windll.kernel32))
 44 | CommandLineToArgvW = WINFUNCTYPE(POINTER(LPWSTR), LPCWSTR, POINTER(c_int))(
 45 |     ("CommandLineToArgvW", windll.shell32)
 46 | )
 47 | LocalFree = WINFUNCTYPE(c_void_p, c_void_p)(("LocalFree", windll.kernel32))
 48 | 
 49 | STDIN_HANDLE = GetStdHandle(-10)
 50 | STDOUT_HANDLE = GetStdHandle(-11)
 51 | STDERR_HANDLE = GetStdHandle(-12)
 52 | 
 53 | PyBUF_SIMPLE = 0
 54 | PyBUF_WRITABLE = 1
 55 | 
 56 | ERROR_SUCCESS = 0
 57 | ERROR_NOT_ENOUGH_MEMORY = 8
 58 | ERROR_OPERATION_ABORTED = 995
 59 | 
 60 | STDIN_FILENO = 0
 61 | STDOUT_FILENO = 1
 62 | STDERR_FILENO = 2
 63 | 
 64 | EOF = b"\x1a"
 65 | MAX_BYTES_WRITTEN = 32767
 66 | 
 67 | try:
 68 |     from ctypes import pythonapi
 69 | except ImportError:
 70 |     # On PyPy we cannot get buffers so our ability to operate here is
 71 |     # severely limited.
 72 |     get_buffer = None
 73 | else:
 74 | 
 75 |     class Py_buffer(Structure):
 76 |         _fields_ = [
 77 |             ("buf", c_void_p),
 78 |             ("obj", py_object),
 79 |             ("len", c_ssize_t),
 80 |             ("itemsize", c_ssize_t),
 81 |             ("readonly", c_int),
 82 |             ("ndim", c_int),
 83 |             ("format", c_char_p),
 84 |             ("shape", c_ssize_p),
 85 |             ("strides", c_ssize_p),
 86 |             ("suboffsets", c_ssize_p),
 87 |             ("internal", c_void_p),
 88 |         ]
 89 | 
 90 |     PyObject_GetBuffer = pythonapi.PyObject_GetBuffer
 91 |     PyBuffer_Release = pythonapi.PyBuffer_Release
 92 | 
 93 |     def get_buffer(obj, writable=False):
 94 |         buf = Py_buffer()
 95 |         flags = PyBUF_WRITABLE if writable else PyBUF_SIMPLE
 96 |         PyObject_GetBuffer(py_object(obj), byref(buf), flags)
 97 | 
 98 |         try:
 99 |             buffer_type = c_char * buf.len
100 |             return buffer_type.from_address(buf.buf)
101 |         finally:
102 |             PyBuffer_Release(byref(buf))
103 | 
104 | 
105 | class _WindowsConsoleRawIOBase(io.RawIOBase):
106 |     def __init__(self, handle):
107 |         self.handle = handle
108 | 
109 |     def isatty(self):
110 |         super().isatty()
111 |         return True
112 | 
113 | 
114 | class _WindowsConsoleReader(_WindowsConsoleRawIOBase):
115 |     def readable(self):
116 |         return True
117 | 
118 |     def readinto(self, b):
119 |         bytes_to_be_read = len(b)
120 |         if not bytes_to_be_read:
121 |             return 0
122 |         elif bytes_to_be_read % 2:
123 |             raise ValueError(
124 |                 "cannot read odd number of bytes from UTF-16-LE encoded console"
125 |             )
126 | 
127 |         buffer = get_buffer(b, writable=True)
128 |         code_units_to_be_read = bytes_to_be_read // 2
129 |         code_units_read = c_ulong()
130 | 
131 |         rv = ReadConsoleW(
132 |             HANDLE(self.handle),
133 |             buffer,
134 |             code_units_to_be_read,
135 |             byref(code_units_read),
136 |             None,
137 |         )
138 |         if GetLastError() == ERROR_OPERATION_ABORTED:
139 |             # wait for KeyboardInterrupt
140 |             time.sleep(0.1)
141 |         if not rv:
142 |             raise OSError(f"Windows error: {GetLastError()}")
143 | 
144 |         if buffer[0] == EOF:
145 |             return 0
146 |         return 2 * code_units_read.value
147 | 
148 | 
149 | class _WindowsConsoleWriter(_WindowsConsoleRawIOBase):
150 |     def writable(self):
151 |         return True
152 | 
153 |     @staticmethod
154 |     def _get_error_message(errno):
155 |         if errno == ERROR_SUCCESS:
156 |             return "ERROR_SUCCESS"
157 |         elif errno == ERROR_NOT_ENOUGH_MEMORY:
158 |             return "ERROR_NOT_ENOUGH_MEMORY"
159 |         return f"Windows error {errno}"
160 | 
161 |     def write(self, b):
162 |         bytes_to_be_written = len(b)
163 |         buf = get_buffer(b)
164 |         code_units_to_be_written = min(bytes_to_be_written, MAX_BYTES_WRITTEN) // 2
165 |         code_units_written = c_ulong()
166 | 
167 |         WriteConsoleW(
168 |             HANDLE(self.handle),
169 |             buf,
170 |             code_units_to_be_written,
171 |             byref(code_units_written),
172 |             None,
173 |         )
174 |         bytes_written = 2 * code_units_written.value
175 | 
176 |         if bytes_written == 0 and bytes_to_be_written > 0:
177 |             raise OSError(self._get_error_message(GetLastError()))
178 |         return bytes_written
179 | 
180 | 
181 | class ConsoleStream:
182 |     def __init__(self, text_stream: t.TextIO, byte_stream: t.BinaryIO) -> None:
183 |         self._text_stream = text_stream
184 |         self.buffer = byte_stream
185 | 
186 |     @property
187 |     def name(self) -> str:
188 |         return self.buffer.name
189 | 
190 |     def write(self, x: t.AnyStr) -> int:
191 |         if isinstance(x, str):
192 |             return self._text_stream.write(x)
193 |         try:
194 |             self.flush()
195 |         except Exception:
196 |             pass
197 |         return self.buffer.write(x)
198 | 
199 |     def writelines(self, lines: t.Iterable[t.AnyStr]) -> None:
200 |         for line in lines:
201 |             self.write(line)
202 | 
203 |     def __getattr__(self, name: str) -> t.Any:
204 |         return getattr(self._text_stream, name)
205 | 
206 |     def isatty(self) -> bool:
207 |         return self.buffer.isatty()
208 | 
209 |     def __repr__(self):
210 |         return f"<ConsoleStream name={self.name!r} encoding={self.encoding!r}>"
211 | 
212 | 
213 | def _get_text_stdin(buffer_stream: t.BinaryIO) -> t.TextIO:
214 |     text_stream = _NonClosingTextIOWrapper(
215 |         io.BufferedReader(_WindowsConsoleReader(STDIN_HANDLE)),
216 |         "utf-16-le",
217 |         "strict",
218 |         line_buffering=True,
219 |     )
220 |     return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream))
221 | 
222 | 
223 | def _get_text_stdout(buffer_stream: t.BinaryIO) -> t.TextIO:
224 |     text_stream = _NonClosingTextIOWrapper(
225 |         io.BufferedWriter(_WindowsConsoleWriter(STDOUT_HANDLE)),
226 |         "utf-16-le",
227 |         "strict",
228 |         line_buffering=True,
229 |     )
230 |     return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream))
231 | 
232 | 
233 | def _get_text_stderr(buffer_stream: t.BinaryIO) -> t.TextIO:
234 |     text_stream = _NonClosingTextIOWrapper(
235 |         io.BufferedWriter(_WindowsConsoleWriter(STDERR_HANDLE)),
236 |         "utf-16-le",
237 |         "strict",
238 |         line_buffering=True,
239 |     )
240 |     return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream))
241 | 
242 | 
243 | _stream_factories: t.Mapping[int, t.Callable[[t.BinaryIO], t.TextIO]] = {
244 |     0: _get_text_stdin,
245 |     1: _get_text_stdout,
246 |     2: _get_text_stderr,
247 | }
248 | 
249 | 
250 | def _is_console(f: t.TextIO) -> bool:
251 |     if not hasattr(f, "fileno"):
252 |         return False
253 | 
254 |     try:
255 |         fileno = f.fileno()
256 |     except (OSError, io.UnsupportedOperation):
257 |         return False
258 | 
259 |     handle = msvcrt.get_osfhandle(fileno)
260 |     return bool(GetConsoleMode(handle, byref(DWORD())))
261 | 
262 | 
263 | def _get_windows_console_stream(
264 |     f: t.TextIO, encoding: t.Optional[str], errors: t.Optional[str]
265 | ) -> t.Optional[t.TextIO]:
266 |     if (
267 |         get_buffer is not None
268 |         and encoding in {"utf-16-le", None}
269 |         and errors in {"strict", None}
270 |         and _is_console(f)
271 |     ):
272 |         func = _stream_factories.get(f.fileno())
273 |         if func is not None:
274 |             b = getattr(f, "buffer", None)
275 | 
276 |             if b is None:
277 |                 return None
278 | 
279 |             return func(b)
280 | 
```

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

```python
  1 | import os
  2 | import textwrap
  3 | from optparse import Values
  4 | from typing import Any, List
  5 | 
  6 | from pip._internal.cli.base_command import Command
  7 | from pip._internal.cli.status_codes import ERROR, SUCCESS
  8 | from pip._internal.exceptions import CommandError, PipError
  9 | from pip._internal.utils import filesystem
 10 | from pip._internal.utils.logging import getLogger
 11 | 
 12 | logger = getLogger(__name__)
 13 | 
 14 | 
 15 | class CacheCommand(Command):
 16 |     """
 17 |     Inspect and manage pip's wheel cache.
 18 | 
 19 |     Subcommands:
 20 | 
 21 |     - dir: Show the cache directory.
 22 |     - info: Show information about the cache.
 23 |     - list: List filenames of packages stored in the cache.
 24 |     - remove: Remove one or more package from the cache.
 25 |     - purge: Remove all items from the cache.
 26 | 
 27 |     ``<pattern>`` can be a glob expression or a package name.
 28 |     """
 29 | 
 30 |     ignore_require_venv = True
 31 |     usage = """
 32 |         %prog dir
 33 |         %prog info
 34 |         %prog list [<pattern>] [--format=[human, abspath]]
 35 |         %prog remove <pattern>
 36 |         %prog purge
 37 |     """
 38 | 
 39 |     def add_options(self) -> None:
 40 |         self.cmd_opts.add_option(
 41 |             "--format",
 42 |             action="store",
 43 |             dest="list_format",
 44 |             default="human",
 45 |             choices=("human", "abspath"),
 46 |             help="Select the output format among: human (default) or abspath",
 47 |         )
 48 | 
 49 |         self.parser.insert_option_group(0, self.cmd_opts)
 50 | 
 51 |     def run(self, options: Values, args: List[str]) -> int:
 52 |         handlers = {
 53 |             "dir": self.get_cache_dir,
 54 |             "info": self.get_cache_info,
 55 |             "list": self.list_cache_items,
 56 |             "remove": self.remove_cache_items,
 57 |             "purge": self.purge_cache,
 58 |         }
 59 | 
 60 |         if not options.cache_dir:
 61 |             logger.error("pip cache commands can not function since cache is disabled.")
 62 |             return ERROR
 63 | 
 64 |         # Determine action
 65 |         if not args or args[0] not in handlers:
 66 |             logger.error(
 67 |                 "Need an action (%s) to perform.",
 68 |                 ", ".join(sorted(handlers)),
 69 |             )
 70 |             return ERROR
 71 | 
 72 |         action = args[0]
 73 | 
 74 |         # Error handling happens here, not in the action-handlers.
 75 |         try:
 76 |             handlers[action](options, args[1:])
 77 |         except PipError as e:
 78 |             logger.error(e.args[0])
 79 |             return ERROR
 80 | 
 81 |         return SUCCESS
 82 | 
 83 |     def get_cache_dir(self, options: Values, args: List[Any]) -> None:
 84 |         if args:
 85 |             raise CommandError("Too many arguments")
 86 | 
 87 |         logger.info(options.cache_dir)
 88 | 
 89 |     def get_cache_info(self, options: Values, args: List[Any]) -> None:
 90 |         if args:
 91 |             raise CommandError("Too many arguments")
 92 | 
 93 |         num_http_files = len(self._find_http_files(options))
 94 |         num_packages = len(self._find_wheels(options, "*"))
 95 | 
 96 |         http_cache_location = self._cache_dir(options, "http-v2")
 97 |         old_http_cache_location = self._cache_dir(options, "http")
 98 |         wheels_cache_location = self._cache_dir(options, "wheels")
 99 |         http_cache_size = filesystem.format_size(
100 |             filesystem.directory_size(http_cache_location)
101 |             + filesystem.directory_size(old_http_cache_location)
102 |         )
103 |         wheels_cache_size = filesystem.format_directory_size(wheels_cache_location)
104 | 
105 |         message = (
106 |             textwrap.dedent(
107 |                 """
108 |                     Package index page cache location (pip v23.3+): {http_cache_location}
109 |                     Package index page cache location (older pips): {old_http_cache_location}
110 |                     Package index page cache size: {http_cache_size}
111 |                     Number of HTTP files: {num_http_files}
112 |                     Locally built wheels location: {wheels_cache_location}
113 |                     Locally built wheels size: {wheels_cache_size}
114 |                     Number of locally built wheels: {package_count}
115 |                 """  # noqa: E501
116 |             )
117 |             .format(
118 |                 http_cache_location=http_cache_location,
119 |                 old_http_cache_location=old_http_cache_location,
120 |                 http_cache_size=http_cache_size,
121 |                 num_http_files=num_http_files,
122 |                 wheels_cache_location=wheels_cache_location,
123 |                 package_count=num_packages,
124 |                 wheels_cache_size=wheels_cache_size,
125 |             )
126 |             .strip()
127 |         )
128 | 
129 |         logger.info(message)
130 | 
131 |     def list_cache_items(self, options: Values, args: List[Any]) -> None:
132 |         if len(args) > 1:
133 |             raise CommandError("Too many arguments")
134 | 
135 |         if args:
136 |             pattern = args[0]
137 |         else:
138 |             pattern = "*"
139 | 
140 |         files = self._find_wheels(options, pattern)
141 |         if options.list_format == "human":
142 |             self.format_for_human(files)
143 |         else:
144 |             self.format_for_abspath(files)
145 | 
146 |     def format_for_human(self, files: List[str]) -> None:
147 |         if not files:
148 |             logger.info("No locally built wheels cached.")
149 |             return
150 | 
151 |         results = []
152 |         for filename in files:
153 |             wheel = os.path.basename(filename)
154 |             size = filesystem.format_file_size(filename)
155 |             results.append(f" - {wheel} ({size})")
156 |         logger.info("Cache contents:\n")
157 |         logger.info("\n".join(sorted(results)))
158 | 
159 |     def format_for_abspath(self, files: List[str]) -> None:
160 |         if files:
161 |             logger.info("\n".join(sorted(files)))
162 | 
163 |     def remove_cache_items(self, options: Values, args: List[Any]) -> None:
164 |         if len(args) > 1:
165 |             raise CommandError("Too many arguments")
166 | 
167 |         if not args:
168 |             raise CommandError("Please provide a pattern")
169 | 
170 |         files = self._find_wheels(options, args[0])
171 | 
172 |         no_matching_msg = "No matching packages"
173 |         if args[0] == "*":
174 |             # Only fetch http files if no specific pattern given
175 |             files += self._find_http_files(options)
176 |         else:
177 |             # Add the pattern to the log message
178 |             no_matching_msg += f' for pattern "{args[0]}"'
179 | 
180 |         if not files:
181 |             logger.warning(no_matching_msg)
182 | 
183 |         for filename in files:
184 |             os.unlink(filename)
185 |             logger.verbose("Removed %s", filename)
186 |         logger.info("Files removed: %s", len(files))
187 | 
188 |     def purge_cache(self, options: Values, args: List[Any]) -> None:
189 |         if args:
190 |             raise CommandError("Too many arguments")
191 | 
192 |         return self.remove_cache_items(options, ["*"])
193 | 
194 |     def _cache_dir(self, options: Values, subdir: str) -> str:
195 |         return os.path.join(options.cache_dir, subdir)
196 | 
197 |     def _find_http_files(self, options: Values) -> List[str]:
198 |         old_http_dir = self._cache_dir(options, "http")
199 |         new_http_dir = self._cache_dir(options, "http-v2")
200 |         return filesystem.find_files(old_http_dir, "*") + filesystem.find_files(
201 |             new_http_dir, "*"
202 |         )
203 | 
204 |     def _find_wheels(self, options: Values, pattern: str) -> List[str]:
205 |         wheel_dir = self._cache_dir(options, "wheels")
206 | 
207 |         # The wheel filename format, as specified in PEP 427, is:
208 |         #     {distribution}-{version}(-{build})?-{python}-{abi}-{platform}.whl
209 |         #
210 |         # Additionally, non-alphanumeric values in the distribution are
211 |         # normalized to underscores (_), meaning hyphens can never occur
212 |         # before `-{version}`.
213 |         #
214 |         # Given that information:
215 |         # - If the pattern we're given contains a hyphen (-), the user is
216 |         #   providing at least the version. Thus, we can just append `*.whl`
217 |         #   to match the rest of it.
218 |         # - If the pattern we're given doesn't contain a hyphen (-), the
219 |         #   user is only providing the name. Thus, we append `-*.whl` to
220 |         #   match the hyphen before the version, followed by anything else.
221 |         #
222 |         # PEP 427: https://www.python.org/dev/peps/pep-0427/
223 |         pattern = pattern + ("*.whl" if "-" in pattern else "-*.whl")
224 | 
225 |         return filesystem.find_files(wheel_dir, pattern)
226 | 
```

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

```python
  1 | """
  2 |     pygments.sphinxext
  3 |     ~~~~~~~~~~~~~~~~~~
  4 | 
  5 |     Sphinx extension to generate automatic documentation of lexers,
  6 |     formatters and filters.
  7 | 
  8 |     :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
  9 |     :license: BSD, see LICENSE for details.
 10 | """
 11 | 
 12 | import sys
 13 | 
 14 | from docutils import nodes
 15 | from docutils.statemachine import ViewList
 16 | from docutils.parsers.rst import Directive
 17 | from sphinx.util.nodes import nested_parse_with_titles
 18 | 
 19 | 
 20 | MODULEDOC = '''
 21 | .. module:: %s
 22 | 
 23 | %s
 24 | %s
 25 | '''
 26 | 
 27 | LEXERDOC = '''
 28 | .. class:: %s
 29 | 
 30 |     :Short names: %s
 31 |     :Filenames:   %s
 32 |     :MIME types:  %s
 33 | 
 34 |     %s
 35 | 
 36 |     %s
 37 | 
 38 | '''
 39 | 
 40 | FMTERDOC = '''
 41 | .. class:: %s
 42 | 
 43 |     :Short names: %s
 44 |     :Filenames: %s
 45 | 
 46 |     %s
 47 | 
 48 | '''
 49 | 
 50 | FILTERDOC = '''
 51 | .. class:: %s
 52 | 
 53 |     :Name: %s
 54 | 
 55 |     %s
 56 | 
 57 | '''
 58 | 
 59 | 
 60 | class PygmentsDoc(Directive):
 61 |     """
 62 |     A directive to collect all lexers/formatters/filters and generate
 63 |     autoclass directives for them.
 64 |     """
 65 |     has_content = False
 66 |     required_arguments = 1
 67 |     optional_arguments = 0
 68 |     final_argument_whitespace = False
 69 |     option_spec = {}
 70 | 
 71 |     def run(self):
 72 |         self.filenames = set()
 73 |         if self.arguments[0] == 'lexers':
 74 |             out = self.document_lexers()
 75 |         elif self.arguments[0] == 'formatters':
 76 |             out = self.document_formatters()
 77 |         elif self.arguments[0] == 'filters':
 78 |             out = self.document_filters()
 79 |         elif self.arguments[0] == 'lexers_overview':
 80 |             out = self.document_lexers_overview()
 81 |         else:
 82 |             raise Exception('invalid argument for "pygmentsdoc" directive')
 83 |         node = nodes.compound()
 84 |         vl = ViewList(out.split('\n'), source='')
 85 |         nested_parse_with_titles(self.state, vl, node)
 86 |         for fn in self.filenames:
 87 |             self.state.document.settings.record_dependencies.add(fn)
 88 |         return node.children
 89 | 
 90 |     def document_lexers_overview(self):
 91 |         """Generate a tabular overview of all lexers.
 92 | 
 93 |         The columns are the lexer name, the extensions handled by this lexer
 94 |         (or "None"), the aliases and a link to the lexer class."""
 95 |         from pip._vendor.pygments.lexers._mapping import LEXERS
 96 |         from pip._vendor.pygments.lexers import find_lexer_class
 97 |         out = []
 98 | 
 99 |         table = []
100 | 
101 |         def format_link(name, url):
102 |             if url:
103 |                 return f'`{name} <{url}>`_'
104 |             return name
105 | 
106 |         for classname, data in sorted(LEXERS.items(), key=lambda x: x[1][1].lower()):
107 |             lexer_cls = find_lexer_class(data[1])
108 |             extensions = lexer_cls.filenames + lexer_cls.alias_filenames
109 | 
110 |             table.append({
111 |                 'name': format_link(data[1], lexer_cls.url),
112 |                 'extensions': ', '.join(extensions).replace('*', '\\*').replace('_', '\\') or 'None',
113 |                 'aliases': ', '.join(data[2]),
114 |                 'class': f'{data[0]}.{classname}'
115 |             })
116 | 
117 |         column_names = ['name', 'extensions', 'aliases', 'class']
118 |         column_lengths = [max([len(row[column]) for row in table if row[column]])
119 |                           for column in column_names]
120 | 
121 |         def write_row(*columns):
122 |             """Format a table row"""
123 |             out = []
124 |             for length, col in zip(column_lengths, columns):
125 |                 if col:
126 |                     out.append(col.ljust(length))
127 |                 else:
128 |                     out.append(' '*length)
129 | 
130 |             return ' '.join(out)
131 | 
132 |         def write_seperator():
133 |             """Write a table separator row"""
134 |             sep = ['='*c for c in column_lengths]
135 |             return write_row(*sep)
136 | 
137 |         out.append(write_seperator())
138 |         out.append(write_row('Name', 'Extension(s)', 'Short name(s)', 'Lexer class'))
139 |         out.append(write_seperator())
140 |         for row in table:
141 |             out.append(write_row(
142 |                 row['name'],
143 |                 row['extensions'],
144 |                 row['aliases'],
145 |                 f':class:`~{row["class"]}`'))
146 |         out.append(write_seperator())
147 | 
148 |         return '\n'.join(out)
149 | 
150 |     def document_lexers(self):
151 |         from pip._vendor.pygments.lexers._mapping import LEXERS
152 |         from pip._vendor import pygments
153 |         import inspect
154 |         import pathlib
155 | 
156 |         out = []
157 |         modules = {}
158 |         moduledocstrings = {}
159 |         for classname, data in sorted(LEXERS.items(), key=lambda x: x[0]):
160 |             module = data[0]
161 |             mod = __import__(module, None, None, [classname])
162 |             self.filenames.add(mod.__file__)
163 |             cls = getattr(mod, classname)
164 |             if not cls.__doc__:
165 |                 print(f"Warning: {classname} does not have a docstring.")
166 |             docstring = cls.__doc__
167 |             if isinstance(docstring, bytes):
168 |                 docstring = docstring.decode('utf8')
169 | 
170 |             example_file = getattr(cls, '_example', None)
171 |             if example_file:
172 |                 p = pathlib.Path(inspect.getabsfile(pygments)).parent.parent /\
173 |                     'tests' / 'examplefiles' / example_file
174 |                 content = p.read_text(encoding='utf-8')
175 |                 if not content:
176 |                     raise Exception(
177 |                         f"Empty example file '{example_file}' for lexer "
178 |                         f"{classname}")
179 | 
180 |                 if data[2]:
181 |                     lexer_name = data[2][0]
182 |                     docstring += '\n\n    .. admonition:: Example\n'
183 |                     docstring += f'\n      .. code-block:: {lexer_name}\n\n'
184 |                     for line in content.splitlines():
185 |                         docstring += f'          {line}\n'
186 | 
187 |             if cls.version_added:
188 |                 version_line = f'.. versionadded:: {cls.version_added}'
189 |             else:
190 |                 version_line = ''
191 | 
192 |             modules.setdefault(module, []).append((
193 |                 classname,
194 |                 ', '.join(data[2]) or 'None',
195 |                 ', '.join(data[3]).replace('*', '\\*').replace('_', '\\') or 'None',
196 |                 ', '.join(data[4]) or 'None',
197 |                 docstring,
198 |                 version_line))
199 |             if module not in moduledocstrings:
200 |                 moddoc = mod.__doc__
201 |                 if isinstance(moddoc, bytes):
202 |                     moddoc = moddoc.decode('utf8')
203 |                 moduledocstrings[module] = moddoc
204 | 
205 |         for module, lexers in sorted(modules.items(), key=lambda x: x[0]):
206 |             if moduledocstrings[module] is None:
207 |                 raise Exception(f"Missing docstring for {module}")
208 |             heading = moduledocstrings[module].splitlines()[4].strip().rstrip('.')
209 |             out.append(MODULEDOC % (module, heading, '-'*len(heading)))
210 |             for data in lexers:
211 |                 out.append(LEXERDOC % data)
212 | 
213 |         return ''.join(out)
214 | 
215 |     def document_formatters(self):
216 |         from pip._vendor.pygments.formatters import FORMATTERS
217 | 
218 |         out = []
219 |         for classname, data in sorted(FORMATTERS.items(), key=lambda x: x[0]):
220 |             module = data[0]
221 |             mod = __import__(module, None, None, [classname])
222 |             self.filenames.add(mod.__file__)
223 |             cls = getattr(mod, classname)
224 |             docstring = cls.__doc__
225 |             if isinstance(docstring, bytes):
226 |                 docstring = docstring.decode('utf8')
227 |             heading = cls.__name__
228 |             out.append(FMTERDOC % (heading, ', '.join(data[2]) or 'None',
229 |                                    ', '.join(data[3]).replace('*', '\\*') or 'None',
230 |                                    docstring))
231 |         return ''.join(out)
232 | 
233 |     def document_filters(self):
234 |         from pip._vendor.pygments.filters import FILTERS
235 | 
236 |         out = []
237 |         for name, cls in FILTERS.items():
238 |             self.filenames.add(sys.modules[cls.__module__].__file__)
239 |             docstring = cls.__doc__
240 |             if isinstance(docstring, bytes):
241 |                 docstring = docstring.decode('utf8')
242 |             out.append(FILTERDOC % (cls.__name__, name, docstring))
243 |         return ''.join(out)
244 | 
245 | 
246 | def setup(app):
247 |     app.add_directive('pygmentsdoc', PygmentsDoc)
248 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_dists.py:
--------------------------------------------------------------------------------

```python
  1 | import email.message
  2 | import importlib.metadata
  3 | import pathlib
  4 | import zipfile
  5 | from typing import (
  6 |     Collection,
  7 |     Dict,
  8 |     Iterable,
  9 |     Iterator,
 10 |     Mapping,
 11 |     Optional,
 12 |     Sequence,
 13 |     cast,
 14 | )
 15 | 
 16 | from pip._vendor.packaging.requirements import Requirement
 17 | from pip._vendor.packaging.utils import NormalizedName, canonicalize_name
 18 | from pip._vendor.packaging.version import Version
 19 | from pip._vendor.packaging.version import parse as parse_version
 20 | 
 21 | from pip._internal.exceptions import InvalidWheel, UnsupportedWheel
 22 | from pip._internal.metadata.base import (
 23 |     BaseDistribution,
 24 |     BaseEntryPoint,
 25 |     InfoPath,
 26 |     Wheel,
 27 | )
 28 | from pip._internal.utils.misc import normalize_path
 29 | from pip._internal.utils.packaging import get_requirement
 30 | from pip._internal.utils.temp_dir import TempDirectory
 31 | from pip._internal.utils.wheel import parse_wheel, read_wheel_metadata_file
 32 | 
 33 | from ._compat import (
 34 |     BasePath,
 35 |     get_dist_canonical_name,
 36 |     parse_name_and_version_from_info_directory,
 37 | )
 38 | 
 39 | 
 40 | class WheelDistribution(importlib.metadata.Distribution):
 41 |     """An ``importlib.metadata.Distribution`` read from a wheel.
 42 | 
 43 |     Although ``importlib.metadata.PathDistribution`` accepts ``zipfile.Path``,
 44 |     its implementation is too "lazy" for pip's needs (we can't keep the ZipFile
 45 |     handle open for the entire lifetime of the distribution object).
 46 | 
 47 |     This implementation eagerly reads the entire metadata directory into the
 48 |     memory instead, and operates from that.
 49 |     """
 50 | 
 51 |     def __init__(
 52 |         self,
 53 |         files: Mapping[pathlib.PurePosixPath, bytes],
 54 |         info_location: pathlib.PurePosixPath,
 55 |     ) -> None:
 56 |         self._files = files
 57 |         self.info_location = info_location
 58 | 
 59 |     @classmethod
 60 |     def from_zipfile(
 61 |         cls,
 62 |         zf: zipfile.ZipFile,
 63 |         name: str,
 64 |         location: str,
 65 |     ) -> "WheelDistribution":
 66 |         info_dir, _ = parse_wheel(zf, name)
 67 |         paths = (
 68 |             (name, pathlib.PurePosixPath(name.split("/", 1)[-1]))
 69 |             for name in zf.namelist()
 70 |             if name.startswith(f"{info_dir}/")
 71 |         )
 72 |         files = {
 73 |             relpath: read_wheel_metadata_file(zf, fullpath)
 74 |             for fullpath, relpath in paths
 75 |         }
 76 |         info_location = pathlib.PurePosixPath(location, info_dir)
 77 |         return cls(files, info_location)
 78 | 
 79 |     def iterdir(self, path: InfoPath) -> Iterator[pathlib.PurePosixPath]:
 80 |         # Only allow iterating through the metadata directory.
 81 |         if pathlib.PurePosixPath(str(path)) in self._files:
 82 |             return iter(self._files)
 83 |         raise FileNotFoundError(path)
 84 | 
 85 |     def read_text(self, filename: str) -> Optional[str]:
 86 |         try:
 87 |             data = self._files[pathlib.PurePosixPath(filename)]
 88 |         except KeyError:
 89 |             return None
 90 |         try:
 91 |             text = data.decode("utf-8")
 92 |         except UnicodeDecodeError as e:
 93 |             wheel = self.info_location.parent
 94 |             error = f"Error decoding metadata for {wheel}: {e} in {filename} file"
 95 |             raise UnsupportedWheel(error)
 96 |         return text
 97 | 
 98 | 
 99 | class Distribution(BaseDistribution):
100 |     def __init__(
101 |         self,
102 |         dist: importlib.metadata.Distribution,
103 |         info_location: Optional[BasePath],
104 |         installed_location: Optional[BasePath],
105 |     ) -> None:
106 |         self._dist = dist
107 |         self._info_location = info_location
108 |         self._installed_location = installed_location
109 | 
110 |     @classmethod
111 |     def from_directory(cls, directory: str) -> BaseDistribution:
112 |         info_location = pathlib.Path(directory)
113 |         dist = importlib.metadata.Distribution.at(info_location)
114 |         return cls(dist, info_location, info_location.parent)
115 | 
116 |     @classmethod
117 |     def from_metadata_file_contents(
118 |         cls,
119 |         metadata_contents: bytes,
120 |         filename: str,
121 |         project_name: str,
122 |     ) -> BaseDistribution:
123 |         # Generate temp dir to contain the metadata file, and write the file contents.
124 |         temp_dir = pathlib.Path(
125 |             TempDirectory(kind="metadata", globally_managed=True).path
126 |         )
127 |         metadata_path = temp_dir / "METADATA"
128 |         metadata_path.write_bytes(metadata_contents)
129 |         # Construct dist pointing to the newly created directory.
130 |         dist = importlib.metadata.Distribution.at(metadata_path.parent)
131 |         return cls(dist, metadata_path.parent, None)
132 | 
133 |     @classmethod
134 |     def from_wheel(cls, wheel: Wheel, name: str) -> BaseDistribution:
135 |         try:
136 |             with wheel.as_zipfile() as zf:
137 |                 dist = WheelDistribution.from_zipfile(zf, name, wheel.location)
138 |         except zipfile.BadZipFile as e:
139 |             raise InvalidWheel(wheel.location, name) from e
140 |         return cls(dist, dist.info_location, pathlib.PurePosixPath(wheel.location))
141 | 
142 |     @property
143 |     def location(self) -> Optional[str]:
144 |         if self._info_location is None:
145 |             return None
146 |         return str(self._info_location.parent)
147 | 
148 |     @property
149 |     def info_location(self) -> Optional[str]:
150 |         if self._info_location is None:
151 |             return None
152 |         return str(self._info_location)
153 | 
154 |     @property
155 |     def installed_location(self) -> Optional[str]:
156 |         if self._installed_location is None:
157 |             return None
158 |         return normalize_path(str(self._installed_location))
159 | 
160 |     @property
161 |     def canonical_name(self) -> NormalizedName:
162 |         return get_dist_canonical_name(self._dist)
163 | 
164 |     @property
165 |     def version(self) -> Version:
166 |         if version := parse_name_and_version_from_info_directory(self._dist)[1]:
167 |             return parse_version(version)
168 |         return parse_version(self._dist.version)
169 | 
170 |     @property
171 |     def raw_version(self) -> str:
172 |         return self._dist.version
173 | 
174 |     def is_file(self, path: InfoPath) -> bool:
175 |         return self._dist.read_text(str(path)) is not None
176 | 
177 |     def iter_distutils_script_names(self) -> Iterator[str]:
178 |         # A distutils installation is always "flat" (not in e.g. egg form), so
179 |         # if this distribution's info location is NOT a pathlib.Path (but e.g.
180 |         # zipfile.Path), it can never contain any distutils scripts.
181 |         if not isinstance(self._info_location, pathlib.Path):
182 |             return
183 |         for child in self._info_location.joinpath("scripts").iterdir():
184 |             yield child.name
185 | 
186 |     def read_text(self, path: InfoPath) -> str:
187 |         content = self._dist.read_text(str(path))
188 |         if content is None:
189 |             raise FileNotFoundError(path)
190 |         return content
191 | 
192 |     def iter_entry_points(self) -> Iterable[BaseEntryPoint]:
193 |         # importlib.metadata's EntryPoint structure sasitfies BaseEntryPoint.
194 |         return self._dist.entry_points
195 | 
196 |     def _metadata_impl(self) -> email.message.Message:
197 |         # From Python 3.10+, importlib.metadata declares PackageMetadata as the
198 |         # return type. This protocol is unfortunately a disaster now and misses
199 |         # a ton of fields that we need, including get() and get_payload(). We
200 |         # rely on the implementation that the object is actually a Message now,
201 |         # until upstream can improve the protocol. (python/cpython#94952)
202 |         return cast(email.message.Message, self._dist.metadata)
203 | 
204 |     def iter_provided_extras(self) -> Iterable[NormalizedName]:
205 |         return [
206 |             canonicalize_name(extra)
207 |             for extra in self.metadata.get_all("Provides-Extra", [])
208 |         ]
209 | 
210 |     def iter_dependencies(self, extras: Collection[str] = ()) -> Iterable[Requirement]:
211 |         contexts: Sequence[Dict[str, str]] = [{"extra": e} for e in extras]
212 |         for req_string in self.metadata.get_all("Requires-Dist", []):
213 |             # strip() because email.message.Message.get_all() may return a leading \n
214 |             # in case a long header was wrapped.
215 |             req = get_requirement(req_string.strip())
216 |             if not req.marker:
217 |                 yield req
218 |             elif not extras and req.marker.evaluate({"extra": ""}):
219 |                 yield req
220 |             elif any(req.marker.evaluate(context) for context in contexts):
221 |                 yield req
222 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/urllib3/util/request.py:
--------------------------------------------------------------------------------

```python
  1 | from __future__ import annotations
  2 | 
  3 | import io
  4 | import typing
  5 | from base64 import b64encode
  6 | from enum import Enum
  7 | 
  8 | from ..exceptions import UnrewindableBodyError
  9 | from .util import to_bytes
 10 | 
 11 | if typing.TYPE_CHECKING:
 12 |     from typing import Final
 13 | 
 14 | # Pass as a value within ``headers`` to skip
 15 | # emitting some HTTP headers that are added automatically.
 16 | # The only headers that are supported are ``Accept-Encoding``,
 17 | # ``Host``, and ``User-Agent``.
 18 | SKIP_HEADER = "@@@SKIP_HEADER@@@"
 19 | SKIPPABLE_HEADERS = frozenset(["accept-encoding", "host", "user-agent"])
 20 | 
 21 | ACCEPT_ENCODING = "gzip,deflate"
 22 | try:
 23 |     try:
 24 |         import brotlicffi as _unused_module_brotli  # type: ignore[import-not-found] # noqa: F401
 25 |     except ImportError:
 26 |         import brotli as _unused_module_brotli  # type: ignore[import-not-found] # noqa: F401
 27 | except ImportError:
 28 |     pass
 29 | else:
 30 |     ACCEPT_ENCODING += ",br"
 31 | try:
 32 |     import zstandard as _unused_module_zstd  # noqa: F401
 33 | except ImportError:
 34 |     pass
 35 | else:
 36 |     ACCEPT_ENCODING += ",zstd"
 37 | 
 38 | 
 39 | class _TYPE_FAILEDTELL(Enum):
 40 |     token = 0
 41 | 
 42 | 
 43 | _FAILEDTELL: Final[_TYPE_FAILEDTELL] = _TYPE_FAILEDTELL.token
 44 | 
 45 | _TYPE_BODY_POSITION = typing.Union[int, _TYPE_FAILEDTELL]
 46 | 
 47 | # When sending a request with these methods we aren't expecting
 48 | # a body so don't need to set an explicit 'Content-Length: 0'
 49 | # The reason we do this in the negative instead of tracking methods
 50 | # which 'should' have a body is because unknown methods should be
 51 | # treated as if they were 'POST' which *does* expect a body.
 52 | _METHODS_NOT_EXPECTING_BODY = {"GET", "HEAD", "DELETE", "TRACE", "OPTIONS", "CONNECT"}
 53 | 
 54 | 
 55 | def make_headers(
 56 |     keep_alive: bool | None = None,
 57 |     accept_encoding: bool | list[str] | str | None = None,
 58 |     user_agent: str | None = None,
 59 |     basic_auth: str | None = None,
 60 |     proxy_basic_auth: str | None = None,
 61 |     disable_cache: bool | None = None,
 62 | ) -> dict[str, str]:
 63 |     """
 64 |     Shortcuts for generating request headers.
 65 | 
 66 |     :param keep_alive:
 67 |         If ``True``, adds 'connection: keep-alive' header.
 68 | 
 69 |     :param accept_encoding:
 70 |         Can be a boolean, list, or string.
 71 |         ``True`` translates to 'gzip,deflate'.  If either the ``brotli`` or
 72 |         ``brotlicffi`` package is installed 'gzip,deflate,br' is used instead.
 73 |         List will get joined by comma.
 74 |         String will be used as provided.
 75 | 
 76 |     :param user_agent:
 77 |         String representing the user-agent you want, such as
 78 |         "python-urllib3/0.6"
 79 | 
 80 |     :param basic_auth:
 81 |         Colon-separated username:password string for 'authorization: basic ...'
 82 |         auth header.
 83 | 
 84 |     :param proxy_basic_auth:
 85 |         Colon-separated username:password string for 'proxy-authorization: basic ...'
 86 |         auth header.
 87 | 
 88 |     :param disable_cache:
 89 |         If ``True``, adds 'cache-control: no-cache' header.
 90 | 
 91 |     Example:
 92 | 
 93 |     .. code-block:: python
 94 | 
 95 |         import urllib3
 96 | 
 97 |         print(urllib3.util.make_headers(keep_alive=True, user_agent="Batman/1.0"))
 98 |         # {'connection': 'keep-alive', 'user-agent': 'Batman/1.0'}
 99 |         print(urllib3.util.make_headers(accept_encoding=True))
100 |         # {'accept-encoding': 'gzip,deflate'}
101 |     """
102 |     headers: dict[str, str] = {}
103 |     if accept_encoding:
104 |         if isinstance(accept_encoding, str):
105 |             pass
106 |         elif isinstance(accept_encoding, list):
107 |             accept_encoding = ",".join(accept_encoding)
108 |         else:
109 |             accept_encoding = ACCEPT_ENCODING
110 |         headers["accept-encoding"] = accept_encoding
111 | 
112 |     if user_agent:
113 |         headers["user-agent"] = user_agent
114 | 
115 |     if keep_alive:
116 |         headers["connection"] = "keep-alive"
117 | 
118 |     if basic_auth:
119 |         headers[
120 |             "authorization"
121 |         ] = f"Basic {b64encode(basic_auth.encode('latin-1')).decode()}"
122 | 
123 |     if proxy_basic_auth:
124 |         headers[
125 |             "proxy-authorization"
126 |         ] = f"Basic {b64encode(proxy_basic_auth.encode('latin-1')).decode()}"
127 | 
128 |     if disable_cache:
129 |         headers["cache-control"] = "no-cache"
130 | 
131 |     return headers
132 | 
133 | 
134 | def set_file_position(
135 |     body: typing.Any, pos: _TYPE_BODY_POSITION | None
136 | ) -> _TYPE_BODY_POSITION | None:
137 |     """
138 |     If a position is provided, move file to that point.
139 |     Otherwise, we'll attempt to record a position for future use.
140 |     """
141 |     if pos is not None:
142 |         rewind_body(body, pos)
143 |     elif getattr(body, "tell", None) is not None:
144 |         try:
145 |             pos = body.tell()
146 |         except OSError:
147 |             # This differentiates from None, allowing us to catch
148 |             # a failed `tell()` later when trying to rewind the body.
149 |             pos = _FAILEDTELL
150 | 
151 |     return pos
152 | 
153 | 
154 | def rewind_body(body: typing.IO[typing.AnyStr], body_pos: _TYPE_BODY_POSITION) -> None:
155 |     """
156 |     Attempt to rewind body to a certain position.
157 |     Primarily used for request redirects and retries.
158 | 
159 |     :param body:
160 |         File-like object that supports seek.
161 | 
162 |     :param int pos:
163 |         Position to seek to in file.
164 |     """
165 |     body_seek = getattr(body, "seek", None)
166 |     if body_seek is not None and isinstance(body_pos, int):
167 |         try:
168 |             body_seek(body_pos)
169 |         except OSError as e:
170 |             raise UnrewindableBodyError(
171 |                 "An error occurred when rewinding request body for redirect/retry."
172 |             ) from e
173 |     elif body_pos is _FAILEDTELL:
174 |         raise UnrewindableBodyError(
175 |             "Unable to record file position for rewinding "
176 |             "request body during a redirect/retry."
177 |         )
178 |     else:
179 |         raise ValueError(
180 |             f"body_pos must be of type integer, instead it was {type(body_pos)}."
181 |         )
182 | 
183 | 
184 | class ChunksAndContentLength(typing.NamedTuple):
185 |     chunks: typing.Iterable[bytes] | None
186 |     content_length: int | None
187 | 
188 | 
189 | def body_to_chunks(
190 |     body: typing.Any | None, method: str, blocksize: int
191 | ) -> ChunksAndContentLength:
192 |     """Takes the HTTP request method, body, and blocksize and
193 |     transforms them into an iterable of chunks to pass to
194 |     socket.sendall() and an optional 'Content-Length' header.
195 | 
196 |     A 'Content-Length' of 'None' indicates the length of the body
197 |     can't be determined so should use 'Transfer-Encoding: chunked'
198 |     for framing instead.
199 |     """
200 | 
201 |     chunks: typing.Iterable[bytes] | None
202 |     content_length: int | None
203 | 
204 |     # No body, we need to make a recommendation on 'Content-Length'
205 |     # based on whether that request method is expected to have
206 |     # a body or not.
207 |     if body is None:
208 |         chunks = None
209 |         if method.upper() not in _METHODS_NOT_EXPECTING_BODY:
210 |             content_length = 0
211 |         else:
212 |             content_length = None
213 | 
214 |     # Bytes or strings become bytes
215 |     elif isinstance(body, (str, bytes)):
216 |         chunks = (to_bytes(body),)
217 |         content_length = len(chunks[0])
218 | 
219 |     # File-like object, TODO: use seek() and tell() for length?
220 |     elif hasattr(body, "read"):
221 | 
222 |         def chunk_readable() -> typing.Iterable[bytes]:
223 |             nonlocal body, blocksize
224 |             encode = isinstance(body, io.TextIOBase)
225 |             while True:
226 |                 datablock = body.read(blocksize)
227 |                 if not datablock:
228 |                     break
229 |                 if encode:
230 |                     datablock = datablock.encode("utf-8")
231 |                 yield datablock
232 | 
233 |         chunks = chunk_readable()
234 |         content_length = None
235 | 
236 |     # Otherwise we need to start checking via duck-typing.
237 |     else:
238 |         try:
239 |             # Check if the body implements the buffer API.
240 |             mv = memoryview(body)
241 |         except TypeError:
242 |             try:
243 |                 # Check if the body is an iterable
244 |                 chunks = iter(body)
245 |                 content_length = None
246 |             except TypeError:
247 |                 raise TypeError(
248 |                     f"'body' must be a bytes-like object, file-like "
249 |                     f"object, or iterable. Instead was {body!r}"
250 |                 ) from None
251 |         else:
252 |             # Since it implements the buffer API can be passed directly to socket.sendall()
253 |             chunks = (body,)
254 |             content_length = mv.nbytes
255 | 
256 |     return ChunksAndContentLength(chunks=chunks, content_length=content_length)
257 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/requirements.py:
--------------------------------------------------------------------------------

```python
  1 | from typing import Any, Optional
  2 | 
  3 | from pip._vendor.packaging.specifiers import SpecifierSet
  4 | from pip._vendor.packaging.utils import NormalizedName, canonicalize_name
  5 | 
  6 | from pip._internal.req.constructors import install_req_drop_extras
  7 | from pip._internal.req.req_install import InstallRequirement
  8 | 
  9 | from .base import Candidate, CandidateLookup, Requirement, format_name
 10 | 
 11 | 
 12 | class ExplicitRequirement(Requirement):
 13 |     def __init__(self, candidate: Candidate) -> None:
 14 |         self.candidate = candidate
 15 | 
 16 |     def __str__(self) -> str:
 17 |         return str(self.candidate)
 18 | 
 19 |     def __repr__(self) -> str:
 20 |         return f"{self.__class__.__name__}({self.candidate!r})"
 21 | 
 22 |     def __hash__(self) -> int:
 23 |         return hash(self.candidate)
 24 | 
 25 |     def __eq__(self, other: Any) -> bool:
 26 |         if not isinstance(other, ExplicitRequirement):
 27 |             return False
 28 |         return self.candidate == other.candidate
 29 | 
 30 |     @property
 31 |     def project_name(self) -> NormalizedName:
 32 |         # No need to canonicalize - the candidate did this
 33 |         return self.candidate.project_name
 34 | 
 35 |     @property
 36 |     def name(self) -> str:
 37 |         # No need to canonicalize - the candidate did this
 38 |         return self.candidate.name
 39 | 
 40 |     def format_for_error(self) -> str:
 41 |         return self.candidate.format_for_error()
 42 | 
 43 |     def get_candidate_lookup(self) -> CandidateLookup:
 44 |         return self.candidate, None
 45 | 
 46 |     def is_satisfied_by(self, candidate: Candidate) -> bool:
 47 |         return candidate == self.candidate
 48 | 
 49 | 
 50 | class SpecifierRequirement(Requirement):
 51 |     def __init__(self, ireq: InstallRequirement) -> None:
 52 |         assert ireq.link is None, "This is a link, not a specifier"
 53 |         self._ireq = ireq
 54 |         self._equal_cache: Optional[str] = None
 55 |         self._hash: Optional[int] = None
 56 |         self._extras = frozenset(canonicalize_name(e) for e in self._ireq.extras)
 57 | 
 58 |     @property
 59 |     def _equal(self) -> str:
 60 |         if self._equal_cache is not None:
 61 |             return self._equal_cache
 62 | 
 63 |         self._equal_cache = str(self._ireq)
 64 |         return self._equal_cache
 65 | 
 66 |     def __str__(self) -> str:
 67 |         return str(self._ireq.req)
 68 | 
 69 |     def __repr__(self) -> str:
 70 |         return f"{self.__class__.__name__}({str(self._ireq.req)!r})"
 71 | 
 72 |     def __eq__(self, other: object) -> bool:
 73 |         if not isinstance(other, SpecifierRequirement):
 74 |             return NotImplemented
 75 |         return self._equal == other._equal
 76 | 
 77 |     def __hash__(self) -> int:
 78 |         if self._hash is not None:
 79 |             return self._hash
 80 | 
 81 |         self._hash = hash(self._equal)
 82 |         return self._hash
 83 | 
 84 |     @property
 85 |     def project_name(self) -> NormalizedName:
 86 |         assert self._ireq.req, "Specifier-backed ireq is always PEP 508"
 87 |         return canonicalize_name(self._ireq.req.name)
 88 | 
 89 |     @property
 90 |     def name(self) -> str:
 91 |         return format_name(self.project_name, self._extras)
 92 | 
 93 |     def format_for_error(self) -> str:
 94 |         # Convert comma-separated specifiers into "A, B, ..., F and G"
 95 |         # This makes the specifier a bit more "human readable", without
 96 |         # risking a change in meaning. (Hopefully! Not all edge cases have
 97 |         # been checked)
 98 |         parts = [s.strip() for s in str(self).split(",")]
 99 |         if len(parts) == 0:
100 |             return ""
101 |         elif len(parts) == 1:
102 |             return parts[0]
103 | 
104 |         return ", ".join(parts[:-1]) + " and " + parts[-1]
105 | 
106 |     def get_candidate_lookup(self) -> CandidateLookup:
107 |         return None, self._ireq
108 | 
109 |     def is_satisfied_by(self, candidate: Candidate) -> bool:
110 |         assert candidate.name == self.name, (
111 |             f"Internal issue: Candidate is not for this requirement "
112 |             f"{candidate.name} vs {self.name}"
113 |         )
114 |         # We can safely always allow prereleases here since PackageFinder
115 |         # already implements the prerelease logic, and would have filtered out
116 |         # prerelease candidates if the user does not expect them.
117 |         assert self._ireq.req, "Specifier-backed ireq is always PEP 508"
118 |         spec = self._ireq.req.specifier
119 |         return spec.contains(candidate.version, prereleases=True)
120 | 
121 | 
122 | class SpecifierWithoutExtrasRequirement(SpecifierRequirement):
123 |     """
124 |     Requirement backed by an install requirement on a base package.
125 |     Trims extras from its install requirement if there are any.
126 |     """
127 | 
128 |     def __init__(self, ireq: InstallRequirement) -> None:
129 |         assert ireq.link is None, "This is a link, not a specifier"
130 |         self._ireq = install_req_drop_extras(ireq)
131 |         self._equal_cache: Optional[str] = None
132 |         self._hash: Optional[int] = None
133 |         self._extras = frozenset(canonicalize_name(e) for e in self._ireq.extras)
134 | 
135 |     @property
136 |     def _equal(self) -> str:
137 |         if self._equal_cache is not None:
138 |             return self._equal_cache
139 | 
140 |         self._equal_cache = str(self._ireq)
141 |         return self._equal_cache
142 | 
143 |     def __eq__(self, other: object) -> bool:
144 |         if not isinstance(other, SpecifierWithoutExtrasRequirement):
145 |             return NotImplemented
146 |         return self._equal == other._equal
147 | 
148 |     def __hash__(self) -> int:
149 |         if self._hash is not None:
150 |             return self._hash
151 | 
152 |         self._hash = hash(self._equal)
153 |         return self._hash
154 | 
155 | 
156 | class RequiresPythonRequirement(Requirement):
157 |     """A requirement representing Requires-Python metadata."""
158 | 
159 |     def __init__(self, specifier: SpecifierSet, match: Candidate) -> None:
160 |         self.specifier = specifier
161 |         self._specifier_string = str(specifier)  # for faster __eq__
162 |         self._hash: Optional[int] = None
163 |         self._candidate = match
164 | 
165 |     def __str__(self) -> str:
166 |         return f"Python {self.specifier}"
167 | 
168 |     def __repr__(self) -> str:
169 |         return f"{self.__class__.__name__}({str(self.specifier)!r})"
170 | 
171 |     def __hash__(self) -> int:
172 |         if self._hash is not None:
173 |             return self._hash
174 | 
175 |         self._hash = hash((self._specifier_string, self._candidate))
176 |         return self._hash
177 | 
178 |     def __eq__(self, other: Any) -> bool:
179 |         if not isinstance(other, RequiresPythonRequirement):
180 |             return False
181 |         return (
182 |             self._specifier_string == other._specifier_string
183 |             and self._candidate == other._candidate
184 |         )
185 | 
186 |     @property
187 |     def project_name(self) -> NormalizedName:
188 |         return self._candidate.project_name
189 | 
190 |     @property
191 |     def name(self) -> str:
192 |         return self._candidate.name
193 | 
194 |     def format_for_error(self) -> str:
195 |         return str(self)
196 | 
197 |     def get_candidate_lookup(self) -> CandidateLookup:
198 |         if self.specifier.contains(self._candidate.version, prereleases=True):
199 |             return self._candidate, None
200 |         return None, None
201 | 
202 |     def is_satisfied_by(self, candidate: Candidate) -> bool:
203 |         assert candidate.name == self._candidate.name, "Not Python candidate"
204 |         # We can safely always allow prereleases here since PackageFinder
205 |         # already implements the prerelease logic, and would have filtered out
206 |         # prerelease candidates if the user does not expect them.
207 |         return self.specifier.contains(candidate.version, prereleases=True)
208 | 
209 | 
210 | class UnsatisfiableRequirement(Requirement):
211 |     """A requirement that cannot be satisfied."""
212 | 
213 |     def __init__(self, name: NormalizedName) -> None:
214 |         self._name = name
215 | 
216 |     def __str__(self) -> str:
217 |         return f"{self._name} (unavailable)"
218 | 
219 |     def __repr__(self) -> str:
220 |         return f"{self.__class__.__name__}({str(self._name)!r})"
221 | 
222 |     def __eq__(self, other: object) -> bool:
223 |         if not isinstance(other, UnsatisfiableRequirement):
224 |             return NotImplemented
225 |         return self._name == other._name
226 | 
227 |     def __hash__(self) -> int:
228 |         return hash(self._name)
229 | 
230 |     @property
231 |     def project_name(self) -> NormalizedName:
232 |         return self._name
233 | 
234 |     @property
235 |     def name(self) -> str:
236 |         return self._name
237 | 
238 |     def format_for_error(self) -> str:
239 |         return str(self)
240 | 
241 |     def get_candidate_lookup(self) -> CandidateLookup:
242 |         return None, None
243 | 
244 |     def is_satisfied_by(self, candidate: Candidate) -> bool:
245 |         return False
246 | 
```

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

```python
  1 | from typing import Dict
  2 | 
  3 | from .style import Style
  4 | 
  5 | DEFAULT_STYLES: Dict[str, Style] = {
  6 |     "none": Style.null(),
  7 |     "reset": Style(
  8 |         color="default",
  9 |         bgcolor="default",
 10 |         dim=False,
 11 |         bold=False,
 12 |         italic=False,
 13 |         underline=False,
 14 |         blink=False,
 15 |         blink2=False,
 16 |         reverse=False,
 17 |         conceal=False,
 18 |         strike=False,
 19 |     ),
 20 |     "dim": Style(dim=True),
 21 |     "bright": Style(dim=False),
 22 |     "bold": Style(bold=True),
 23 |     "strong": Style(bold=True),
 24 |     "code": Style(reverse=True, bold=True),
 25 |     "italic": Style(italic=True),
 26 |     "emphasize": Style(italic=True),
 27 |     "underline": Style(underline=True),
 28 |     "blink": Style(blink=True),
 29 |     "blink2": Style(blink2=True),
 30 |     "reverse": Style(reverse=True),
 31 |     "strike": Style(strike=True),
 32 |     "black": Style(color="black"),
 33 |     "red": Style(color="red"),
 34 |     "green": Style(color="green"),
 35 |     "yellow": Style(color="yellow"),
 36 |     "magenta": Style(color="magenta"),
 37 |     "cyan": Style(color="cyan"),
 38 |     "white": Style(color="white"),
 39 |     "inspect.attr": Style(color="yellow", italic=True),
 40 |     "inspect.attr.dunder": Style(color="yellow", italic=True, dim=True),
 41 |     "inspect.callable": Style(bold=True, color="red"),
 42 |     "inspect.async_def": Style(italic=True, color="bright_cyan"),
 43 |     "inspect.def": Style(italic=True, color="bright_cyan"),
 44 |     "inspect.class": Style(italic=True, color="bright_cyan"),
 45 |     "inspect.error": Style(bold=True, color="red"),
 46 |     "inspect.equals": Style(),
 47 |     "inspect.help": Style(color="cyan"),
 48 |     "inspect.doc": Style(dim=True),
 49 |     "inspect.value.border": Style(color="green"),
 50 |     "live.ellipsis": Style(bold=True, color="red"),
 51 |     "layout.tree.row": Style(dim=False, color="red"),
 52 |     "layout.tree.column": Style(dim=False, color="blue"),
 53 |     "logging.keyword": Style(bold=True, color="yellow"),
 54 |     "logging.level.notset": Style(dim=True),
 55 |     "logging.level.debug": Style(color="green"),
 56 |     "logging.level.info": Style(color="blue"),
 57 |     "logging.level.warning": Style(color="red"),
 58 |     "logging.level.error": Style(color="red", bold=True),
 59 |     "logging.level.critical": Style(color="red", bold=True, reverse=True),
 60 |     "log.level": Style.null(),
 61 |     "log.time": Style(color="cyan", dim=True),
 62 |     "log.message": Style.null(),
 63 |     "log.path": Style(dim=True),
 64 |     "repr.ellipsis": Style(color="yellow"),
 65 |     "repr.indent": Style(color="green", dim=True),
 66 |     "repr.error": Style(color="red", bold=True),
 67 |     "repr.str": Style(color="green", italic=False, bold=False),
 68 |     "repr.brace": Style(bold=True),
 69 |     "repr.comma": Style(bold=True),
 70 |     "repr.ipv4": Style(bold=True, color="bright_green"),
 71 |     "repr.ipv6": Style(bold=True, color="bright_green"),
 72 |     "repr.eui48": Style(bold=True, color="bright_green"),
 73 |     "repr.eui64": Style(bold=True, color="bright_green"),
 74 |     "repr.tag_start": Style(bold=True),
 75 |     "repr.tag_name": Style(color="bright_magenta", bold=True),
 76 |     "repr.tag_contents": Style(color="default"),
 77 |     "repr.tag_end": Style(bold=True),
 78 |     "repr.attrib_name": Style(color="yellow", italic=False),
 79 |     "repr.attrib_equal": Style(bold=True),
 80 |     "repr.attrib_value": Style(color="magenta", italic=False),
 81 |     "repr.number": Style(color="cyan", bold=True, italic=False),
 82 |     "repr.number_complex": Style(color="cyan", bold=True, italic=False),  # same
 83 |     "repr.bool_true": Style(color="bright_green", italic=True),
 84 |     "repr.bool_false": Style(color="bright_red", italic=True),
 85 |     "repr.none": Style(color="magenta", italic=True),
 86 |     "repr.url": Style(underline=True, color="bright_blue", italic=False, bold=False),
 87 |     "repr.uuid": Style(color="bright_yellow", bold=False),
 88 |     "repr.call": Style(color="magenta", bold=True),
 89 |     "repr.path": Style(color="magenta"),
 90 |     "repr.filename": Style(color="bright_magenta"),
 91 |     "rule.line": Style(color="bright_green"),
 92 |     "rule.text": Style.null(),
 93 |     "json.brace": Style(bold=True),
 94 |     "json.bool_true": Style(color="bright_green", italic=True),
 95 |     "json.bool_false": Style(color="bright_red", italic=True),
 96 |     "json.null": Style(color="magenta", italic=True),
 97 |     "json.number": Style(color="cyan", bold=True, italic=False),
 98 |     "json.str": Style(color="green", italic=False, bold=False),
 99 |     "json.key": Style(color="blue", bold=True),
100 |     "prompt": Style.null(),
101 |     "prompt.choices": Style(color="magenta", bold=True),
102 |     "prompt.default": Style(color="cyan", bold=True),
103 |     "prompt.invalid": Style(color="red"),
104 |     "prompt.invalid.choice": Style(color="red"),
105 |     "pretty": Style.null(),
106 |     "scope.border": Style(color="blue"),
107 |     "scope.key": Style(color="yellow", italic=True),
108 |     "scope.key.special": Style(color="yellow", italic=True, dim=True),
109 |     "scope.equals": Style(color="red"),
110 |     "table.header": Style(bold=True),
111 |     "table.footer": Style(bold=True),
112 |     "table.cell": Style.null(),
113 |     "table.title": Style(italic=True),
114 |     "table.caption": Style(italic=True, dim=True),
115 |     "traceback.error": Style(color="red", italic=True),
116 |     "traceback.border.syntax_error": Style(color="bright_red"),
117 |     "traceback.border": Style(color="red"),
118 |     "traceback.text": Style.null(),
119 |     "traceback.title": Style(color="red", bold=True),
120 |     "traceback.exc_type": Style(color="bright_red", bold=True),
121 |     "traceback.exc_value": Style.null(),
122 |     "traceback.offset": Style(color="bright_red", bold=True),
123 |     "bar.back": Style(color="grey23"),
124 |     "bar.complete": Style(color="rgb(249,38,114)"),
125 |     "bar.finished": Style(color="rgb(114,156,31)"),
126 |     "bar.pulse": Style(color="rgb(249,38,114)"),
127 |     "progress.description": Style.null(),
128 |     "progress.filesize": Style(color="green"),
129 |     "progress.filesize.total": Style(color="green"),
130 |     "progress.download": Style(color="green"),
131 |     "progress.elapsed": Style(color="yellow"),
132 |     "progress.percentage": Style(color="magenta"),
133 |     "progress.remaining": Style(color="cyan"),
134 |     "progress.data.speed": Style(color="red"),
135 |     "progress.spinner": Style(color="green"),
136 |     "status.spinner": Style(color="green"),
137 |     "tree": Style(),
138 |     "tree.line": Style(),
139 |     "markdown.paragraph": Style(),
140 |     "markdown.text": Style(),
141 |     "markdown.em": Style(italic=True),
142 |     "markdown.emph": Style(italic=True),  # For commonmark backwards compatibility
143 |     "markdown.strong": Style(bold=True),
144 |     "markdown.code": Style(bold=True, color="cyan", bgcolor="black"),
145 |     "markdown.code_block": Style(color="cyan", bgcolor="black"),
146 |     "markdown.block_quote": Style(color="magenta"),
147 |     "markdown.list": Style(color="cyan"),
148 |     "markdown.item": Style(),
149 |     "markdown.item.bullet": Style(color="yellow", bold=True),
150 |     "markdown.item.number": Style(color="yellow", bold=True),
151 |     "markdown.hr": Style(color="yellow"),
152 |     "markdown.h1.border": Style(),
153 |     "markdown.h1": Style(bold=True),
154 |     "markdown.h2": Style(bold=True, underline=True),
155 |     "markdown.h3": Style(bold=True),
156 |     "markdown.h4": Style(bold=True, dim=True),
157 |     "markdown.h5": Style(underline=True),
158 |     "markdown.h6": Style(italic=True),
159 |     "markdown.h7": Style(italic=True, dim=True),
160 |     "markdown.link": Style(color="bright_blue"),
161 |     "markdown.link_url": Style(color="blue", underline=True),
162 |     "markdown.s": Style(strike=True),
163 |     "iso8601.date": Style(color="blue"),
164 |     "iso8601.time": Style(color="magenta"),
165 |     "iso8601.timezone": Style(color="yellow"),
166 | }
167 | 
168 | 
169 | if __name__ == "__main__":  # pragma: no cover
170 |     import argparse
171 |     import io
172 | 
173 |     from pip._vendor.rich.console import Console
174 |     from pip._vendor.rich.table import Table
175 |     from pip._vendor.rich.text import Text
176 | 
177 |     parser = argparse.ArgumentParser()
178 |     parser.add_argument("--html", action="store_true", help="Export as HTML table")
179 |     args = parser.parse_args()
180 |     html: bool = args.html
181 |     console = Console(record=True, width=70, file=io.StringIO()) if html else Console()
182 | 
183 |     table = Table("Name", "Styling")
184 | 
185 |     for style_name, style in DEFAULT_STYLES.items():
186 |         table.add_row(Text(style_name, style=style), str(style))
187 | 
188 |     console.print(table)
189 |     if html:
190 |         print(console.export_html(inline_styles=True))
191 | 
```
Page 27/168FirstPrevNextLast