#
tokens: 48680/50000 7/808 files (page 24/168)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 24 of 168. Use http://codebase.md/romanshablio/mcp_server?lines=true&page={x} to view the full context.

# Directory Structure

```
├── .DS_Store
├── .venv
│   ├── __pycache__
│   │   └── hello.cpython-312.pyc
│   ├── bin
│   │   ├── activate
│   │   ├── activate.csh
│   │   ├── activate.fish
│   │   ├── Activate.ps1
│   │   ├── flask
│   │   ├── normalizer
│   │   ├── pip
│   │   ├── pip3
│   │   ├── pip3.12
│   │   ├── python
│   │   ├── python3
│   │   └── python3.12
│   ├── hello.py
│   ├── lib
│   │   └── python3.12
│   │       └── site-packages
│   │           ├── beautifulsoup4-4.12.3.dist-info
│   │           │   ├── INSTALLER
│   │           │   ├── licenses
│   │           │   │   ├── AUTHORS
│   │           │   │   └── LICENSE
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   ├── REQUESTED
│   │           │   └── WHEEL
│   │           ├── blinker
│   │           │   ├── __init__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── _utilities.cpython-312.pyc
│   │           │   │   └── base.cpython-312.pyc
│   │           │   ├── _utilities.py
│   │           │   ├── base.py
│   │           │   └── py.typed
│   │           ├── blinker-1.8.2.dist-info
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE.txt
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   └── WHEEL
│   │           ├── bs4
│   │           │   ├── __init__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── css.cpython-312.pyc
│   │           │   │   ├── dammit.cpython-312.pyc
│   │           │   │   ├── diagnose.cpython-312.pyc
│   │           │   │   ├── element.cpython-312.pyc
│   │           │   │   └── formatter.cpython-312.pyc
│   │           │   ├── builder
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   ├── _html5lib.cpython-312.pyc
│   │           │   │   │   ├── _htmlparser.cpython-312.pyc
│   │           │   │   │   └── _lxml.cpython-312.pyc
│   │           │   │   ├── _html5lib.py
│   │           │   │   ├── _htmlparser.py
│   │           │   │   └── _lxml.py
│   │           │   ├── css.py
│   │           │   ├── dammit.py
│   │           │   ├── diagnose.py
│   │           │   ├── element.py
│   │           │   ├── formatter.py
│   │           │   └── tests
│   │           │       ├── __init__.py
│   │           │       ├── __pycache__
│   │           │       │   ├── __init__.cpython-312.pyc
│   │           │       │   ├── test_builder_registry.cpython-312.pyc
│   │           │       │   ├── test_builder.cpython-312.pyc
│   │           │       │   ├── test_css.cpython-312.pyc
│   │           │       │   ├── test_dammit.cpython-312.pyc
│   │           │       │   ├── test_docs.cpython-312.pyc
│   │           │       │   ├── test_element.cpython-312.pyc
│   │           │       │   ├── test_formatter.cpython-312.pyc
│   │           │       │   ├── test_fuzz.cpython-312.pyc
│   │           │       │   ├── test_html5lib.cpython-312.pyc
│   │           │       │   ├── test_htmlparser.cpython-312.pyc
│   │           │       │   ├── test_lxml.cpython-312.pyc
│   │           │       │   ├── test_navigablestring.cpython-312.pyc
│   │           │       │   ├── test_pageelement.cpython-312.pyc
│   │           │       │   ├── test_soup.cpython-312.pyc
│   │           │       │   ├── test_tag.cpython-312.pyc
│   │           │       │   └── test_tree.cpython-312.pyc
│   │           │       ├── fuzz
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6306874195312640.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase
│   │           │       │   ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase
│   │           │       │   ├── crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase
│   │           │       │   └── crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase
│   │           │       ├── test_builder_registry.py
│   │           │       ├── test_builder.py
│   │           │       ├── test_css.py
│   │           │       ├── test_dammit.py
│   │           │       ├── test_docs.py
│   │           │       ├── test_element.py
│   │           │       ├── test_formatter.py
│   │           │       ├── test_fuzz.py
│   │           │       ├── test_html5lib.py
│   │           │       ├── test_htmlparser.py
│   │           │       ├── test_lxml.py
│   │           │       ├── test_navigablestring.py
│   │           │       ├── test_pageelement.py
│   │           │       ├── test_soup.py
│   │           │       ├── test_tag.py
│   │           │       └── test_tree.py
│   │           ├── certifi
│   │           │   ├── __init__.py
│   │           │   ├── __main__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── __main__.cpython-312.pyc
│   │           │   │   └── core.cpython-312.pyc
│   │           │   ├── cacert.pem
│   │           │   ├── core.py
│   │           │   └── py.typed
│   │           ├── certifi-2024.8.30.dist-info
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   ├── top_level.txt
│   │           │   └── WHEEL
│   │           ├── charset_normalizer
│   │           │   ├── __init__.py
│   │           │   ├── __main__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── __main__.cpython-312.pyc
│   │           │   │   ├── api.cpython-312.pyc
│   │           │   │   ├── cd.cpython-312.pyc
│   │           │   │   ├── constant.cpython-312.pyc
│   │           │   │   ├── legacy.cpython-312.pyc
│   │           │   │   ├── md.cpython-312.pyc
│   │           │   │   ├── models.cpython-312.pyc
│   │           │   │   ├── utils.cpython-312.pyc
│   │           │   │   └── version.cpython-312.pyc
│   │           │   ├── api.py
│   │           │   ├── cd.py
│   │           │   ├── cli
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __main__.py
│   │           │   │   └── __pycache__
│   │           │   │       ├── __init__.cpython-312.pyc
│   │           │   │       └── __main__.cpython-312.pyc
│   │           │   ├── constant.py
│   │           │   ├── legacy.py
│   │           │   ├── md__mypyc.cpython-312-darwin.so
│   │           │   ├── md.cpython-312-darwin.so
│   │           │   ├── md.py
│   │           │   ├── models.py
│   │           │   ├── py.typed
│   │           │   ├── utils.py
│   │           │   └── version.py
│   │           ├── charset_normalizer-3.4.0.dist-info
│   │           │   ├── entry_points.txt
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   ├── top_level.txt
│   │           │   └── WHEEL
│   │           ├── click
│   │           │   ├── __init__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── _compat.cpython-312.pyc
│   │           │   │   ├── _termui_impl.cpython-312.pyc
│   │           │   │   ├── _textwrap.cpython-312.pyc
│   │           │   │   ├── _winconsole.cpython-312.pyc
│   │           │   │   ├── core.cpython-312.pyc
│   │           │   │   ├── decorators.cpython-312.pyc
│   │           │   │   ├── exceptions.cpython-312.pyc
│   │           │   │   ├── formatting.cpython-312.pyc
│   │           │   │   ├── globals.cpython-312.pyc
│   │           │   │   ├── parser.cpython-312.pyc
│   │           │   │   ├── shell_completion.cpython-312.pyc
│   │           │   │   ├── termui.cpython-312.pyc
│   │           │   │   ├── testing.cpython-312.pyc
│   │           │   │   ├── types.cpython-312.pyc
│   │           │   │   └── utils.cpython-312.pyc
│   │           │   ├── _compat.py
│   │           │   ├── _termui_impl.py
│   │           │   ├── _textwrap.py
│   │           │   ├── _winconsole.py
│   │           │   ├── core.py
│   │           │   ├── decorators.py
│   │           │   ├── exceptions.py
│   │           │   ├── formatting.py
│   │           │   ├── globals.py
│   │           │   ├── parser.py
│   │           │   ├── py.typed
│   │           │   ├── shell_completion.py
│   │           │   ├── termui.py
│   │           │   ├── testing.py
│   │           │   ├── types.py
│   │           │   └── utils.py
│   │           ├── click-8.1.7.dist-info
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE.rst
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   ├── top_level.txt
│   │           │   └── WHEEL
│   │           ├── fake_useragent
│   │           │   ├── __init__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── errors.cpython-312.pyc
│   │           │   │   ├── fake.cpython-312.pyc
│   │           │   │   ├── log.cpython-312.pyc
│   │           │   │   ├── settings.cpython-312.pyc
│   │           │   │   └── utils.cpython-312.pyc
│   │           │   ├── data
│   │           │   │   └── browsers.json
│   │           │   ├── errors.py
│   │           │   ├── fake.py
│   │           │   ├── log.py
│   │           │   ├── settings.py
│   │           │   └── utils.py
│   │           ├── fake_useragent-1.5.1.dist-info
│   │           │   ├── AUTHORS
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   ├── REQUESTED
│   │           │   ├── top_level.txt
│   │           │   └── WHEEL
│   │           ├── flask
│   │           │   ├── __init__.py
│   │           │   ├── __main__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── __main__.cpython-312.pyc
│   │           │   │   ├── app.cpython-312.pyc
│   │           │   │   ├── blueprints.cpython-312.pyc
│   │           │   │   ├── cli.cpython-312.pyc
│   │           │   │   ├── config.cpython-312.pyc
│   │           │   │   ├── ctx.cpython-312.pyc
│   │           │   │   ├── debughelpers.cpython-312.pyc
│   │           │   │   ├── globals.cpython-312.pyc
│   │           │   │   ├── helpers.cpython-312.pyc
│   │           │   │   ├── logging.cpython-312.pyc
│   │           │   │   ├── sessions.cpython-312.pyc
│   │           │   │   ├── signals.cpython-312.pyc
│   │           │   │   ├── templating.cpython-312.pyc
│   │           │   │   ├── testing.cpython-312.pyc
│   │           │   │   ├── typing.cpython-312.pyc
│   │           │   │   ├── views.cpython-312.pyc
│   │           │   │   └── wrappers.cpython-312.pyc
│   │           │   ├── app.py
│   │           │   ├── blueprints.py
│   │           │   ├── cli.py
│   │           │   ├── config.py
│   │           │   ├── ctx.py
│   │           │   ├── debughelpers.py
│   │           │   ├── globals.py
│   │           │   ├── helpers.py
│   │           │   ├── json
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   ├── provider.cpython-312.pyc
│   │           │   │   │   └── tag.cpython-312.pyc
│   │           │   │   ├── provider.py
│   │           │   │   └── tag.py
│   │           │   ├── logging.py
│   │           │   ├── py.typed
│   │           │   ├── sansio
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── app.cpython-312.pyc
│   │           │   │   │   ├── blueprints.cpython-312.pyc
│   │           │   │   │   └── scaffold.cpython-312.pyc
│   │           │   │   ├── app.py
│   │           │   │   ├── blueprints.py
│   │           │   │   ├── README.md
│   │           │   │   └── scaffold.py
│   │           │   ├── sessions.py
│   │           │   ├── signals.py
│   │           │   ├── templating.py
│   │           │   ├── testing.py
│   │           │   ├── typing.py
│   │           │   ├── views.py
│   │           │   └── wrappers.py
│   │           ├── flask-3.0.3.dist-info
│   │           │   ├── entry_points.txt
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE.txt
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   ├── REQUESTED
│   │           │   └── WHEEL
│   │           ├── idna
│   │           │   ├── __init__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── codec.cpython-312.pyc
│   │           │   │   ├── compat.cpython-312.pyc
│   │           │   │   ├── core.cpython-312.pyc
│   │           │   │   ├── idnadata.cpython-312.pyc
│   │           │   │   ├── intranges.cpython-312.pyc
│   │           │   │   ├── package_data.cpython-312.pyc
│   │           │   │   └── uts46data.cpython-312.pyc
│   │           │   ├── codec.py
│   │           │   ├── compat.py
│   │           │   ├── core.py
│   │           │   ├── idnadata.py
│   │           │   ├── intranges.py
│   │           │   ├── package_data.py
│   │           │   ├── py.typed
│   │           │   └── uts46data.py
│   │           ├── idna-3.10.dist-info
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE.md
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   └── WHEEL
│   │           ├── itsdangerous
│   │           │   ├── __init__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── _json.cpython-312.pyc
│   │           │   │   ├── encoding.cpython-312.pyc
│   │           │   │   ├── exc.cpython-312.pyc
│   │           │   │   ├── serializer.cpython-312.pyc
│   │           │   │   ├── signer.cpython-312.pyc
│   │           │   │   ├── timed.cpython-312.pyc
│   │           │   │   └── url_safe.cpython-312.pyc
│   │           │   ├── _json.py
│   │           │   ├── encoding.py
│   │           │   ├── exc.py
│   │           │   ├── py.typed
│   │           │   ├── serializer.py
│   │           │   ├── signer.py
│   │           │   ├── timed.py
│   │           │   └── url_safe.py
│   │           ├── itsdangerous-2.2.0.dist-info
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE.txt
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   └── WHEEL
│   │           ├── jinja2
│   │           │   ├── __init__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── _identifier.cpython-312.pyc
│   │           │   │   ├── async_utils.cpython-312.pyc
│   │           │   │   ├── bccache.cpython-312.pyc
│   │           │   │   ├── compiler.cpython-312.pyc
│   │           │   │   ├── constants.cpython-312.pyc
│   │           │   │   ├── debug.cpython-312.pyc
│   │           │   │   ├── defaults.cpython-312.pyc
│   │           │   │   ├── environment.cpython-312.pyc
│   │           │   │   ├── exceptions.cpython-312.pyc
│   │           │   │   ├── ext.cpython-312.pyc
│   │           │   │   ├── filters.cpython-312.pyc
│   │           │   │   ├── idtracking.cpython-312.pyc
│   │           │   │   ├── lexer.cpython-312.pyc
│   │           │   │   ├── loaders.cpython-312.pyc
│   │           │   │   ├── meta.cpython-312.pyc
│   │           │   │   ├── nativetypes.cpython-312.pyc
│   │           │   │   ├── nodes.cpython-312.pyc
│   │           │   │   ├── optimizer.cpython-312.pyc
│   │           │   │   ├── parser.cpython-312.pyc
│   │           │   │   ├── runtime.cpython-312.pyc
│   │           │   │   ├── sandbox.cpython-312.pyc
│   │           │   │   ├── tests.cpython-312.pyc
│   │           │   │   ├── utils.cpython-312.pyc
│   │           │   │   └── visitor.cpython-312.pyc
│   │           │   ├── _identifier.py
│   │           │   ├── async_utils.py
│   │           │   ├── bccache.py
│   │           │   ├── compiler.py
│   │           │   ├── constants.py
│   │           │   ├── debug.py
│   │           │   ├── defaults.py
│   │           │   ├── environment.py
│   │           │   ├── exceptions.py
│   │           │   ├── ext.py
│   │           │   ├── filters.py
│   │           │   ├── idtracking.py
│   │           │   ├── lexer.py
│   │           │   ├── loaders.py
│   │           │   ├── meta.py
│   │           │   ├── nativetypes.py
│   │           │   ├── nodes.py
│   │           │   ├── optimizer.py
│   │           │   ├── parser.py
│   │           │   ├── py.typed
│   │           │   ├── runtime.py
│   │           │   ├── sandbox.py
│   │           │   ├── tests.py
│   │           │   ├── utils.py
│   │           │   └── visitor.py
│   │           ├── jinja2-3.1.4.dist-info
│   │           │   ├── entry_points.txt
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE.txt
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   └── WHEEL
│   │           ├── lxml
│   │           │   ├── __init__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── _elementpath.cpython-312.pyc
│   │           │   │   ├── builder.cpython-312.pyc
│   │           │   │   ├── cssselect.cpython-312.pyc
│   │           │   │   ├── doctestcompare.cpython-312.pyc
│   │           │   │   ├── ElementInclude.cpython-312.pyc
│   │           │   │   ├── pyclasslookup.cpython-312.pyc
│   │           │   │   ├── sax.cpython-312.pyc
│   │           │   │   └── usedoctest.cpython-312.pyc
│   │           │   ├── _elementpath.cpython-312-darwin.so
│   │           │   ├── _elementpath.py
│   │           │   ├── apihelpers.pxi
│   │           │   ├── builder.cpython-312-darwin.so
│   │           │   ├── builder.py
│   │           │   ├── classlookup.pxi
│   │           │   ├── cleanup.pxi
│   │           │   ├── cssselect.py
│   │           │   ├── debug.pxi
│   │           │   ├── docloader.pxi
│   │           │   ├── doctestcompare.py
│   │           │   ├── dtd.pxi
│   │           │   ├── ElementInclude.py
│   │           │   ├── etree_api.h
│   │           │   ├── etree.cpython-312-darwin.so
│   │           │   ├── etree.h
│   │           │   ├── etree.pyx
│   │           │   ├── extensions.pxi
│   │           │   ├── html
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   ├── _diffcommand.cpython-312.pyc
│   │           │   │   │   ├── _html5builder.cpython-312.pyc
│   │           │   │   │   ├── _setmixin.cpython-312.pyc
│   │           │   │   │   ├── builder.cpython-312.pyc
│   │           │   │   │   ├── clean.cpython-312.pyc
│   │           │   │   │   ├── defs.cpython-312.pyc
│   │           │   │   │   ├── diff.cpython-312.pyc
│   │           │   │   │   ├── ElementSoup.cpython-312.pyc
│   │           │   │   │   ├── formfill.cpython-312.pyc
│   │           │   │   │   ├── html5parser.cpython-312.pyc
│   │           │   │   │   ├── soupparser.cpython-312.pyc
│   │           │   │   │   └── usedoctest.cpython-312.pyc
│   │           │   │   ├── _diffcommand.py
│   │           │   │   ├── _html5builder.py
│   │           │   │   ├── _setmixin.py
│   │           │   │   ├── builder.py
│   │           │   │   ├── clean.py
│   │           │   │   ├── defs.py
│   │           │   │   ├── diff.cpython-312-darwin.so
│   │           │   │   ├── diff.py
│   │           │   │   ├── ElementSoup.py
│   │           │   │   ├── formfill.py
│   │           │   │   ├── html5parser.py
│   │           │   │   ├── soupparser.py
│   │           │   │   └── usedoctest.py
│   │           │   ├── includes
│   │           │   │   ├── __init__.pxd
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   └── __init__.cpython-312.pyc
│   │           │   │   ├── c14n.pxd
│   │           │   │   ├── config.pxd
│   │           │   │   ├── dtdvalid.pxd
│   │           │   │   ├── etree_defs.h
│   │           │   │   ├── etreepublic.pxd
│   │           │   │   ├── extlibs
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   └── __init__.cpython-312.pyc
│   │           │   │   │   ├── libcharset.h
│   │           │   │   │   ├── localcharset.h
│   │           │   │   │   ├── zconf.h
│   │           │   │   │   └── zlib.h
│   │           │   │   ├── htmlparser.pxd
│   │           │   │   ├── libexslt
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   └── __init__.cpython-312.pyc
│   │           │   │   │   ├── exslt.h
│   │           │   │   │   ├── exsltconfig.h
│   │           │   │   │   └── exsltexports.h
│   │           │   │   ├── libxml
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   └── __init__.cpython-312.pyc
│   │           │   │   │   ├── c14n.h
│   │           │   │   │   ├── catalog.h
│   │           │   │   │   ├── chvalid.h
│   │           │   │   │   ├── debugXML.h
│   │           │   │   │   ├── dict.h
│   │           │   │   │   ├── encoding.h
│   │           │   │   │   ├── entities.h
│   │           │   │   │   ├── globals.h
│   │           │   │   │   ├── hash.h
│   │           │   │   │   ├── HTMLparser.h
│   │           │   │   │   ├── HTMLtree.h
│   │           │   │   │   ├── list.h
│   │           │   │   │   ├── nanoftp.h
│   │           │   │   │   ├── nanohttp.h
│   │           │   │   │   ├── parser.h
│   │           │   │   │   ├── parserInternals.h
│   │           │   │   │   ├── relaxng.h
│   │           │   │   │   ├── SAX.h
│   │           │   │   │   ├── SAX2.h
│   │           │   │   │   ├── schemasInternals.h
│   │           │   │   │   ├── schematron.h
│   │           │   │   │   ├── threads.h
│   │           │   │   │   ├── tree.h
│   │           │   │   │   ├── uri.h
│   │           │   │   │   ├── valid.h
│   │           │   │   │   ├── xinclude.h
│   │           │   │   │   ├── xlink.h
│   │           │   │   │   ├── xmlautomata.h
│   │           │   │   │   ├── xmlerror.h
│   │           │   │   │   ├── xmlexports.h
│   │           │   │   │   ├── xmlIO.h
│   │           │   │   │   ├── xmlmemory.h
│   │           │   │   │   ├── xmlmodule.h
│   │           │   │   │   ├── xmlreader.h
│   │           │   │   │   ├── xmlregexp.h
│   │           │   │   │   ├── xmlsave.h
│   │           │   │   │   ├── xmlschemas.h
│   │           │   │   │   ├── xmlschemastypes.h
│   │           │   │   │   ├── xmlstring.h
│   │           │   │   │   ├── xmlunicode.h
│   │           │   │   │   ├── xmlversion.h
│   │           │   │   │   ├── xmlwriter.h
│   │           │   │   │   ├── xpath.h
│   │           │   │   │   ├── xpathInternals.h
│   │           │   │   │   └── xpointer.h
│   │           │   │   ├── libxslt
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   └── __init__.cpython-312.pyc
│   │           │   │   │   ├── attributes.h
│   │           │   │   │   ├── documents.h
│   │           │   │   │   ├── extensions.h
│   │           │   │   │   ├── extra.h
│   │           │   │   │   ├── functions.h
│   │           │   │   │   ├── imports.h
│   │           │   │   │   ├── keys.h
│   │           │   │   │   ├── namespaces.h
│   │           │   │   │   ├── numbersInternals.h
│   │           │   │   │   ├── pattern.h
│   │           │   │   │   ├── preproc.h
│   │           │   │   │   ├── security.h
│   │           │   │   │   ├── templates.h
│   │           │   │   │   ├── transform.h
│   │           │   │   │   ├── variables.h
│   │           │   │   │   ├── xslt.h
│   │           │   │   │   ├── xsltconfig.h
│   │           │   │   │   ├── xsltexports.h
│   │           │   │   │   ├── xsltInternals.h
│   │           │   │   │   ├── xsltlocale.h
│   │           │   │   │   └── xsltutils.h
│   │           │   │   ├── lxml-version.h
│   │           │   │   ├── relaxng.pxd
│   │           │   │   ├── schematron.pxd
│   │           │   │   ├── tree.pxd
│   │           │   │   ├── uri.pxd
│   │           │   │   ├── xinclude.pxd
│   │           │   │   ├── xmlerror.pxd
│   │           │   │   ├── xmlparser.pxd
│   │           │   │   ├── xmlschema.pxd
│   │           │   │   ├── xpath.pxd
│   │           │   │   └── xslt.pxd
│   │           │   ├── isoschematron
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   └── __init__.cpython-312.pyc
│   │           │   │   └── resources
│   │           │   │       ├── rng
│   │           │   │       │   └── iso-schematron.rng
│   │           │   │       └── xsl
│   │           │   │           ├── iso-schematron-xslt1
│   │           │   │           │   ├── iso_abstract_expand.xsl
│   │           │   │           │   ├── iso_dsdl_include.xsl
│   │           │   │           │   ├── iso_schematron_message.xsl
│   │           │   │           │   ├── iso_schematron_skeleton_for_xslt1.xsl
│   │           │   │           │   ├── iso_svrl_for_xslt1.xsl
│   │           │   │           │   └── readme.txt
│   │           │   │           ├── RNG2Schtrn.xsl
│   │           │   │           └── XSD2Schtrn.xsl
│   │           │   ├── iterparse.pxi
│   │           │   ├── lxml.etree_api.h
│   │           │   ├── lxml.etree.h
│   │           │   ├── nsclasses.pxi
│   │           │   ├── objectify.cpython-312-darwin.so
│   │           │   ├── objectify.pyx
│   │           │   ├── objectpath.pxi
│   │           │   ├── parser.pxi
│   │           │   ├── parsertarget.pxi
│   │           │   ├── proxy.pxi
│   │           │   ├── public-api.pxi
│   │           │   ├── pyclasslookup.py
│   │           │   ├── readonlytree.pxi
│   │           │   ├── relaxng.pxi
│   │           │   ├── sax.cpython-312-darwin.so
│   │           │   ├── sax.py
│   │           │   ├── saxparser.pxi
│   │           │   ├── schematron.pxi
│   │           │   ├── serializer.pxi
│   │           │   ├── usedoctest.py
│   │           │   ├── xinclude.pxi
│   │           │   ├── xmlerror.pxi
│   │           │   ├── xmlid.pxi
│   │           │   ├── xmlschema.pxi
│   │           │   ├── xpath.pxi
│   │           │   ├── xslt.pxi
│   │           │   └── xsltext.pxi
│   │           ├── lxml-5.3.0.dist-info
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE.txt
│   │           │   ├── LICENSES.txt
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   ├── REQUESTED
│   │           │   ├── top_level.txt
│   │           │   └── WHEEL
│   │           ├── markupsafe
│   │           │   ├── __init__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   └── _native.cpython-312.pyc
│   │           │   ├── _native.py
│   │           │   ├── _speedups.c
│   │           │   ├── _speedups.cpython-312-darwin.so
│   │           │   ├── _speedups.pyi
│   │           │   └── py.typed
│   │           ├── MarkupSafe-3.0.1.dist-info
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE.txt
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   ├── top_level.txt
│   │           │   └── WHEEL
│   │           ├── pip
│   │           │   ├── __init__.py
│   │           │   ├── __main__.py
│   │           │   ├── __pip-runner__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── __main__.cpython-312.pyc
│   │           │   │   └── __pip-runner__.cpython-312.pyc
│   │           │   ├── _internal
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   ├── build_env.cpython-312.pyc
│   │           │   │   │   ├── cache.cpython-312.pyc
│   │           │   │   │   ├── configuration.cpython-312.pyc
│   │           │   │   │   ├── exceptions.cpython-312.pyc
│   │           │   │   │   ├── main.cpython-312.pyc
│   │           │   │   │   ├── pyproject.cpython-312.pyc
│   │           │   │   │   ├── self_outdated_check.cpython-312.pyc
│   │           │   │   │   └── wheel_builder.cpython-312.pyc
│   │           │   │   ├── build_env.py
│   │           │   │   ├── cache.py
│   │           │   │   ├── cli
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── autocompletion.cpython-312.pyc
│   │           │   │   │   │   ├── base_command.cpython-312.pyc
│   │           │   │   │   │   ├── cmdoptions.cpython-312.pyc
│   │           │   │   │   │   ├── command_context.cpython-312.pyc
│   │           │   │   │   │   ├── index_command.cpython-312.pyc
│   │           │   │   │   │   ├── main_parser.cpython-312.pyc
│   │           │   │   │   │   ├── main.cpython-312.pyc
│   │           │   │   │   │   ├── parser.cpython-312.pyc
│   │           │   │   │   │   ├── progress_bars.cpython-312.pyc
│   │           │   │   │   │   ├── req_command.cpython-312.pyc
│   │           │   │   │   │   ├── spinners.cpython-312.pyc
│   │           │   │   │   │   └── status_codes.cpython-312.pyc
│   │           │   │   │   ├── autocompletion.py
│   │           │   │   │   ├── base_command.py
│   │           │   │   │   ├── cmdoptions.py
│   │           │   │   │   ├── command_context.py
│   │           │   │   │   ├── index_command.py
│   │           │   │   │   ├── main_parser.py
│   │           │   │   │   ├── main.py
│   │           │   │   │   ├── parser.py
│   │           │   │   │   ├── progress_bars.py
│   │           │   │   │   ├── req_command.py
│   │           │   │   │   ├── spinners.py
│   │           │   │   │   └── status_codes.py
│   │           │   │   ├── commands
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── cache.cpython-312.pyc
│   │           │   │   │   │   ├── check.cpython-312.pyc
│   │           │   │   │   │   ├── completion.cpython-312.pyc
│   │           │   │   │   │   ├── configuration.cpython-312.pyc
│   │           │   │   │   │   ├── debug.cpython-312.pyc
│   │           │   │   │   │   ├── download.cpython-312.pyc
│   │           │   │   │   │   ├── freeze.cpython-312.pyc
│   │           │   │   │   │   ├── hash.cpython-312.pyc
│   │           │   │   │   │   ├── help.cpython-312.pyc
│   │           │   │   │   │   ├── index.cpython-312.pyc
│   │           │   │   │   │   ├── inspect.cpython-312.pyc
│   │           │   │   │   │   ├── install.cpython-312.pyc
│   │           │   │   │   │   ├── list.cpython-312.pyc
│   │           │   │   │   │   ├── search.cpython-312.pyc
│   │           │   │   │   │   ├── show.cpython-312.pyc
│   │           │   │   │   │   ├── uninstall.cpython-312.pyc
│   │           │   │   │   │   └── wheel.cpython-312.pyc
│   │           │   │   │   ├── cache.py
│   │           │   │   │   ├── check.py
│   │           │   │   │   ├── completion.py
│   │           │   │   │   ├── configuration.py
│   │           │   │   │   ├── debug.py
│   │           │   │   │   ├── download.py
│   │           │   │   │   ├── freeze.py
│   │           │   │   │   ├── hash.py
│   │           │   │   │   ├── help.py
│   │           │   │   │   ├── index.py
│   │           │   │   │   ├── inspect.py
│   │           │   │   │   ├── install.py
│   │           │   │   │   ├── list.py
│   │           │   │   │   ├── search.py
│   │           │   │   │   ├── show.py
│   │           │   │   │   ├── uninstall.py
│   │           │   │   │   └── wheel.py
│   │           │   │   ├── configuration.py
│   │           │   │   ├── distributions
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── base.cpython-312.pyc
│   │           │   │   │   │   ├── installed.cpython-312.pyc
│   │           │   │   │   │   ├── sdist.cpython-312.pyc
│   │           │   │   │   │   └── wheel.cpython-312.pyc
│   │           │   │   │   ├── base.py
│   │           │   │   │   ├── installed.py
│   │           │   │   │   ├── sdist.py
│   │           │   │   │   └── wheel.py
│   │           │   │   ├── exceptions.py
│   │           │   │   ├── index
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── collector.cpython-312.pyc
│   │           │   │   │   │   ├── package_finder.cpython-312.pyc
│   │           │   │   │   │   └── sources.cpython-312.pyc
│   │           │   │   │   ├── collector.py
│   │           │   │   │   ├── package_finder.py
│   │           │   │   │   └── sources.py
│   │           │   │   ├── locations
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── _distutils.cpython-312.pyc
│   │           │   │   │   │   ├── _sysconfig.cpython-312.pyc
│   │           │   │   │   │   └── base.cpython-312.pyc
│   │           │   │   │   ├── _distutils.py
│   │           │   │   │   ├── _sysconfig.py
│   │           │   │   │   └── base.py
│   │           │   │   ├── main.py
│   │           │   │   ├── metadata
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── _json.cpython-312.pyc
│   │           │   │   │   │   ├── base.cpython-312.pyc
│   │           │   │   │   │   └── pkg_resources.cpython-312.pyc
│   │           │   │   │   ├── _json.py
│   │           │   │   │   ├── base.py
│   │           │   │   │   ├── importlib
│   │           │   │   │   │   ├── __init__.py
│   │           │   │   │   │   ├── __pycache__
│   │           │   │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   │   ├── _compat.cpython-312.pyc
│   │           │   │   │   │   │   ├── _dists.cpython-312.pyc
│   │           │   │   │   │   │   └── _envs.cpython-312.pyc
│   │           │   │   │   │   ├── _compat.py
│   │           │   │   │   │   ├── _dists.py
│   │           │   │   │   │   └── _envs.py
│   │           │   │   │   └── pkg_resources.py
│   │           │   │   ├── models
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── candidate.cpython-312.pyc
│   │           │   │   │   │   ├── direct_url.cpython-312.pyc
│   │           │   │   │   │   ├── format_control.cpython-312.pyc
│   │           │   │   │   │   ├── index.cpython-312.pyc
│   │           │   │   │   │   ├── installation_report.cpython-312.pyc
│   │           │   │   │   │   ├── link.cpython-312.pyc
│   │           │   │   │   │   ├── scheme.cpython-312.pyc
│   │           │   │   │   │   ├── search_scope.cpython-312.pyc
│   │           │   │   │   │   ├── selection_prefs.cpython-312.pyc
│   │           │   │   │   │   ├── target_python.cpython-312.pyc
│   │           │   │   │   │   └── wheel.cpython-312.pyc
│   │           │   │   │   ├── candidate.py
│   │           │   │   │   ├── direct_url.py
│   │           │   │   │   ├── format_control.py
│   │           │   │   │   ├── index.py
│   │           │   │   │   ├── installation_report.py
│   │           │   │   │   ├── link.py
│   │           │   │   │   ├── scheme.py
│   │           │   │   │   ├── search_scope.py
│   │           │   │   │   ├── selection_prefs.py
│   │           │   │   │   ├── target_python.py
│   │           │   │   │   └── wheel.py
│   │           │   │   ├── network
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── auth.cpython-312.pyc
│   │           │   │   │   │   ├── cache.cpython-312.pyc
│   │           │   │   │   │   ├── download.cpython-312.pyc
│   │           │   │   │   │   ├── lazy_wheel.cpython-312.pyc
│   │           │   │   │   │   ├── session.cpython-312.pyc
│   │           │   │   │   │   ├── utils.cpython-312.pyc
│   │           │   │   │   │   └── xmlrpc.cpython-312.pyc
│   │           │   │   │   ├── auth.py
│   │           │   │   │   ├── cache.py
│   │           │   │   │   ├── download.py
│   │           │   │   │   ├── lazy_wheel.py
│   │           │   │   │   ├── session.py
│   │           │   │   │   ├── utils.py
│   │           │   │   │   └── xmlrpc.py
│   │           │   │   ├── operations
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── check.cpython-312.pyc
│   │           │   │   │   │   ├── freeze.cpython-312.pyc
│   │           │   │   │   │   └── prepare.cpython-312.pyc
│   │           │   │   │   ├── build
│   │           │   │   │   │   ├── __init__.py
│   │           │   │   │   │   ├── __pycache__
│   │           │   │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   │   ├── build_tracker.cpython-312.pyc
│   │           │   │   │   │   │   ├── metadata_editable.cpython-312.pyc
│   │           │   │   │   │   │   ├── metadata_legacy.cpython-312.pyc
│   │           │   │   │   │   │   ├── metadata.cpython-312.pyc
│   │           │   │   │   │   │   ├── wheel_editable.cpython-312.pyc
│   │           │   │   │   │   │   ├── wheel_legacy.cpython-312.pyc
│   │           │   │   │   │   │   └── wheel.cpython-312.pyc
│   │           │   │   │   │   ├── build_tracker.py
│   │           │   │   │   │   ├── metadata_editable.py
│   │           │   │   │   │   ├── metadata_legacy.py
│   │           │   │   │   │   ├── metadata.py
│   │           │   │   │   │   ├── wheel_editable.py
│   │           │   │   │   │   ├── wheel_legacy.py
│   │           │   │   │   │   └── wheel.py
│   │           │   │   │   ├── check.py
│   │           │   │   │   ├── freeze.py
│   │           │   │   │   ├── install
│   │           │   │   │   │   ├── __init__.py
│   │           │   │   │   │   ├── __pycache__
│   │           │   │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   │   ├── editable_legacy.cpython-312.pyc
│   │           │   │   │   │   │   └── wheel.cpython-312.pyc
│   │           │   │   │   │   ├── editable_legacy.py
│   │           │   │   │   │   └── wheel.py
│   │           │   │   │   └── prepare.py
│   │           │   │   ├── pyproject.py
│   │           │   │   ├── req
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── constructors.cpython-312.pyc
│   │           │   │   │   │   ├── req_file.cpython-312.pyc
│   │           │   │   │   │   ├── req_install.cpython-312.pyc
│   │           │   │   │   │   ├── req_set.cpython-312.pyc
│   │           │   │   │   │   └── req_uninstall.cpython-312.pyc
│   │           │   │   │   ├── constructors.py
│   │           │   │   │   ├── req_file.py
│   │           │   │   │   ├── req_install.py
│   │           │   │   │   ├── req_set.py
│   │           │   │   │   └── req_uninstall.py
│   │           │   │   ├── resolution
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   └── base.cpython-312.pyc
│   │           │   │   │   ├── base.py
│   │           │   │   │   ├── legacy
│   │           │   │   │   │   ├── __init__.py
│   │           │   │   │   │   ├── __pycache__
│   │           │   │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   │   └── resolver.cpython-312.pyc
│   │           │   │   │   │   └── resolver.py
│   │           │   │   │   └── resolvelib
│   │           │   │   │       ├── __init__.py
│   │           │   │   │       ├── __pycache__
│   │           │   │   │       │   ├── __init__.cpython-312.pyc
│   │           │   │   │       │   ├── base.cpython-312.pyc
│   │           │   │   │       │   ├── candidates.cpython-312.pyc
│   │           │   │   │       │   ├── factory.cpython-312.pyc
│   │           │   │   │       │   ├── found_candidates.cpython-312.pyc
│   │           │   │   │       │   ├── provider.cpython-312.pyc
│   │           │   │   │       │   ├── reporter.cpython-312.pyc
│   │           │   │   │       │   ├── requirements.cpython-312.pyc
│   │           │   │   │       │   └── resolver.cpython-312.pyc
│   │           │   │   │       ├── base.py
│   │           │   │   │       ├── candidates.py
│   │           │   │   │       ├── factory.py
│   │           │   │   │       ├── found_candidates.py
│   │           │   │   │       ├── provider.py
│   │           │   │   │       ├── reporter.py
│   │           │   │   │       ├── requirements.py
│   │           │   │   │       └── resolver.py
│   │           │   │   ├── self_outdated_check.py
│   │           │   │   ├── utils
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── _jaraco_text.cpython-312.pyc
│   │           │   │   │   │   ├── _log.cpython-312.pyc
│   │           │   │   │   │   ├── appdirs.cpython-312.pyc
│   │           │   │   │   │   ├── compat.cpython-312.pyc
│   │           │   │   │   │   ├── compatibility_tags.cpython-312.pyc
│   │           │   │   │   │   ├── datetime.cpython-312.pyc
│   │           │   │   │   │   ├── deprecation.cpython-312.pyc
│   │           │   │   │   │   ├── direct_url_helpers.cpython-312.pyc
│   │           │   │   │   │   ├── egg_link.cpython-312.pyc
│   │           │   │   │   │   ├── encoding.cpython-312.pyc
│   │           │   │   │   │   ├── entrypoints.cpython-312.pyc
│   │           │   │   │   │   ├── filesystem.cpython-312.pyc
│   │           │   │   │   │   ├── filetypes.cpython-312.pyc
│   │           │   │   │   │   ├── glibc.cpython-312.pyc
│   │           │   │   │   │   ├── hashes.cpython-312.pyc
│   │           │   │   │   │   ├── logging.cpython-312.pyc
│   │           │   │   │   │   ├── misc.cpython-312.pyc
│   │           │   │   │   │   ├── packaging.cpython-312.pyc
│   │           │   │   │   │   ├── retry.cpython-312.pyc
│   │           │   │   │   │   ├── setuptools_build.cpython-312.pyc
│   │           │   │   │   │   ├── subprocess.cpython-312.pyc
│   │           │   │   │   │   ├── temp_dir.cpython-312.pyc
│   │           │   │   │   │   ├── unpacking.cpython-312.pyc
│   │           │   │   │   │   ├── urls.cpython-312.pyc
│   │           │   │   │   │   ├── virtualenv.cpython-312.pyc
│   │           │   │   │   │   └── wheel.cpython-312.pyc
│   │           │   │   │   ├── _jaraco_text.py
│   │           │   │   │   ├── _log.py
│   │           │   │   │   ├── appdirs.py
│   │           │   │   │   ├── compat.py
│   │           │   │   │   ├── compatibility_tags.py
│   │           │   │   │   ├── datetime.py
│   │           │   │   │   ├── deprecation.py
│   │           │   │   │   ├── direct_url_helpers.py
│   │           │   │   │   ├── egg_link.py
│   │           │   │   │   ├── encoding.py
│   │           │   │   │   ├── entrypoints.py
│   │           │   │   │   ├── filesystem.py
│   │           │   │   │   ├── filetypes.py
│   │           │   │   │   ├── glibc.py
│   │           │   │   │   ├── hashes.py
│   │           │   │   │   ├── logging.py
│   │           │   │   │   ├── misc.py
│   │           │   │   │   ├── packaging.py
│   │           │   │   │   ├── retry.py
│   │           │   │   │   ├── setuptools_build.py
│   │           │   │   │   ├── subprocess.py
│   │           │   │   │   ├── temp_dir.py
│   │           │   │   │   ├── unpacking.py
│   │           │   │   │   ├── urls.py
│   │           │   │   │   ├── virtualenv.py
│   │           │   │   │   └── wheel.py
│   │           │   │   ├── vcs
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── bazaar.cpython-312.pyc
│   │           │   │   │   │   ├── git.cpython-312.pyc
│   │           │   │   │   │   ├── mercurial.cpython-312.pyc
│   │           │   │   │   │   ├── subversion.cpython-312.pyc
│   │           │   │   │   │   └── versioncontrol.cpython-312.pyc
│   │           │   │   │   ├── bazaar.py
│   │           │   │   │   ├── git.py
│   │           │   │   │   ├── mercurial.py
│   │           │   │   │   ├── subversion.py
│   │           │   │   │   └── versioncontrol.py
│   │           │   │   └── wheel_builder.py
│   │           │   ├── _vendor
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   └── typing_extensions.cpython-312.pyc
│   │           │   │   ├── cachecontrol
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── _cmd.cpython-312.pyc
│   │           │   │   │   │   ├── adapter.cpython-312.pyc
│   │           │   │   │   │   ├── cache.cpython-312.pyc
│   │           │   │   │   │   ├── controller.cpython-312.pyc
│   │           │   │   │   │   ├── filewrapper.cpython-312.pyc
│   │           │   │   │   │   ├── heuristics.cpython-312.pyc
│   │           │   │   │   │   ├── serialize.cpython-312.pyc
│   │           │   │   │   │   └── wrapper.cpython-312.pyc
│   │           │   │   │   ├── _cmd.py
│   │           │   │   │   ├── adapter.py
│   │           │   │   │   ├── cache.py
│   │           │   │   │   ├── caches
│   │           │   │   │   │   ├── __init__.py
│   │           │   │   │   │   ├── __pycache__
│   │           │   │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   │   ├── file_cache.cpython-312.pyc
│   │           │   │   │   │   │   └── redis_cache.cpython-312.pyc
│   │           │   │   │   │   ├── file_cache.py
│   │           │   │   │   │   └── redis_cache.py
│   │           │   │   │   ├── controller.py
│   │           │   │   │   ├── filewrapper.py
│   │           │   │   │   ├── heuristics.py
│   │           │   │   │   ├── py.typed
│   │           │   │   │   ├── serialize.py
│   │           │   │   │   └── wrapper.py
│   │           │   │   ├── certifi
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __main__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── __main__.cpython-312.pyc
│   │           │   │   │   │   └── core.cpython-312.pyc
│   │           │   │   │   ├── cacert.pem
│   │           │   │   │   ├── core.py
│   │           │   │   │   └── py.typed
│   │           │   │   ├── distlib
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── compat.cpython-312.pyc
│   │           │   │   │   │   ├── database.cpython-312.pyc
│   │           │   │   │   │   ├── index.cpython-312.pyc
│   │           │   │   │   │   ├── locators.cpython-312.pyc
│   │           │   │   │   │   ├── manifest.cpython-312.pyc
│   │           │   │   │   │   ├── markers.cpython-312.pyc
│   │           │   │   │   │   ├── metadata.cpython-312.pyc
│   │           │   │   │   │   ├── resources.cpython-312.pyc
│   │           │   │   │   │   ├── scripts.cpython-312.pyc
│   │           │   │   │   │   ├── util.cpython-312.pyc
│   │           │   │   │   │   ├── version.cpython-312.pyc
│   │           │   │   │   │   └── wheel.cpython-312.pyc
│   │           │   │   │   ├── compat.py
│   │           │   │   │   ├── database.py
│   │           │   │   │   ├── index.py
│   │           │   │   │   ├── locators.py
│   │           │   │   │   ├── manifest.py
│   │           │   │   │   ├── markers.py
│   │           │   │   │   ├── metadata.py
│   │           │   │   │   ├── resources.py
│   │           │   │   │   ├── scripts.py
│   │           │   │   │   ├── t32.exe
│   │           │   │   │   ├── t64-arm.exe
│   │           │   │   │   ├── t64.exe
│   │           │   │   │   ├── util.py
│   │           │   │   │   ├── version.py
│   │           │   │   │   ├── w32.exe
│   │           │   │   │   ├── w64-arm.exe
│   │           │   │   │   ├── w64.exe
│   │           │   │   │   └── wheel.py
│   │           │   │   ├── distro
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __main__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── __main__.cpython-312.pyc
│   │           │   │   │   │   └── distro.cpython-312.pyc
│   │           │   │   │   ├── distro.py
│   │           │   │   │   └── py.typed
│   │           │   │   ├── idna
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── codec.cpython-312.pyc
│   │           │   │   │   │   ├── compat.cpython-312.pyc
│   │           │   │   │   │   ├── core.cpython-312.pyc
│   │           │   │   │   │   ├── idnadata.cpython-312.pyc
│   │           │   │   │   │   ├── intranges.cpython-312.pyc
│   │           │   │   │   │   ├── package_data.cpython-312.pyc
│   │           │   │   │   │   └── uts46data.cpython-312.pyc
│   │           │   │   │   ├── codec.py
│   │           │   │   │   ├── compat.py
│   │           │   │   │   ├── core.py
│   │           │   │   │   ├── idnadata.py
│   │           │   │   │   ├── intranges.py
│   │           │   │   │   ├── package_data.py
│   │           │   │   │   ├── py.typed
│   │           │   │   │   └── uts46data.py
│   │           │   │   ├── msgpack
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── exceptions.cpython-312.pyc
│   │           │   │   │   │   ├── ext.cpython-312.pyc
│   │           │   │   │   │   └── fallback.cpython-312.pyc
│   │           │   │   │   ├── exceptions.py
│   │           │   │   │   ├── ext.py
│   │           │   │   │   └── fallback.py
│   │           │   │   ├── packaging
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── _elffile.cpython-312.pyc
│   │           │   │   │   │   ├── _manylinux.cpython-312.pyc
│   │           │   │   │   │   ├── _musllinux.cpython-312.pyc
│   │           │   │   │   │   ├── _parser.cpython-312.pyc
│   │           │   │   │   │   ├── _structures.cpython-312.pyc
│   │           │   │   │   │   ├── _tokenizer.cpython-312.pyc
│   │           │   │   │   │   ├── markers.cpython-312.pyc
│   │           │   │   │   │   ├── metadata.cpython-312.pyc
│   │           │   │   │   │   ├── requirements.cpython-312.pyc
│   │           │   │   │   │   ├── specifiers.cpython-312.pyc
│   │           │   │   │   │   ├── tags.cpython-312.pyc
│   │           │   │   │   │   ├── utils.cpython-312.pyc
│   │           │   │   │   │   └── version.cpython-312.pyc
│   │           │   │   │   ├── _elffile.py
│   │           │   │   │   ├── _manylinux.py
│   │           │   │   │   ├── _musllinux.py
│   │           │   │   │   ├── _parser.py
│   │           │   │   │   ├── _structures.py
│   │           │   │   │   ├── _tokenizer.py
│   │           │   │   │   ├── markers.py
│   │           │   │   │   ├── metadata.py
│   │           │   │   │   ├── py.typed
│   │           │   │   │   ├── requirements.py
│   │           │   │   │   ├── specifiers.py
│   │           │   │   │   ├── tags.py
│   │           │   │   │   ├── utils.py
│   │           │   │   │   └── version.py
│   │           │   │   ├── pkg_resources
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   └── __pycache__
│   │           │   │   │       └── __init__.cpython-312.pyc
│   │           │   │   ├── platformdirs
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __main__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── __main__.cpython-312.pyc
│   │           │   │   │   │   ├── android.cpython-312.pyc
│   │           │   │   │   │   ├── api.cpython-312.pyc
│   │           │   │   │   │   ├── macos.cpython-312.pyc
│   │           │   │   │   │   ├── unix.cpython-312.pyc
│   │           │   │   │   │   ├── version.cpython-312.pyc
│   │           │   │   │   │   └── windows.cpython-312.pyc
│   │           │   │   │   ├── android.py
│   │           │   │   │   ├── api.py
│   │           │   │   │   ├── macos.py
│   │           │   │   │   ├── py.typed
│   │           │   │   │   ├── unix.py
│   │           │   │   │   ├── version.py
│   │           │   │   │   └── windows.py
│   │           │   │   ├── pygments
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __main__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── __main__.cpython-312.pyc
│   │           │   │   │   │   ├── cmdline.cpython-312.pyc
│   │           │   │   │   │   ├── console.cpython-312.pyc
│   │           │   │   │   │   ├── filter.cpython-312.pyc
│   │           │   │   │   │   ├── formatter.cpython-312.pyc
│   │           │   │   │   │   ├── lexer.cpython-312.pyc
│   │           │   │   │   │   ├── modeline.cpython-312.pyc
│   │           │   │   │   │   ├── plugin.cpython-312.pyc
│   │           │   │   │   │   ├── regexopt.cpython-312.pyc
│   │           │   │   │   │   ├── scanner.cpython-312.pyc
│   │           │   │   │   │   ├── sphinxext.cpython-312.pyc
│   │           │   │   │   │   ├── style.cpython-312.pyc
│   │           │   │   │   │   ├── token.cpython-312.pyc
│   │           │   │   │   │   ├── unistring.cpython-312.pyc
│   │           │   │   │   │   └── util.cpython-312.pyc
│   │           │   │   │   ├── cmdline.py
│   │           │   │   │   ├── console.py
│   │           │   │   │   ├── filter.py
│   │           │   │   │   ├── filters
│   │           │   │   │   │   ├── __init__.py
│   │           │   │   │   │   └── __pycache__
│   │           │   │   │   │       └── __init__.cpython-312.pyc
│   │           │   │   │   ├── formatter.py
│   │           │   │   │   ├── formatters
│   │           │   │   │   │   ├── __init__.py
│   │           │   │   │   │   ├── __pycache__
│   │           │   │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   │   ├── _mapping.cpython-312.pyc
│   │           │   │   │   │   │   ├── bbcode.cpython-312.pyc
│   │           │   │   │   │   │   ├── groff.cpython-312.pyc
│   │           │   │   │   │   │   ├── html.cpython-312.pyc
│   │           │   │   │   │   │   ├── img.cpython-312.pyc
│   │           │   │   │   │   │   ├── irc.cpython-312.pyc
│   │           │   │   │   │   │   ├── latex.cpython-312.pyc
│   │           │   │   │   │   │   ├── other.cpython-312.pyc
│   │           │   │   │   │   │   ├── pangomarkup.cpython-312.pyc
│   │           │   │   │   │   │   ├── rtf.cpython-312.pyc
│   │           │   │   │   │   │   ├── svg.cpython-312.pyc
│   │           │   │   │   │   │   ├── terminal.cpython-312.pyc
│   │           │   │   │   │   │   └── terminal256.cpython-312.pyc
│   │           │   │   │   │   ├── _mapping.py
│   │           │   │   │   │   ├── bbcode.py
│   │           │   │   │   │   ├── groff.py
│   │           │   │   │   │   ├── html.py
│   │           │   │   │   │   ├── img.py
│   │           │   │   │   │   ├── irc.py
│   │           │   │   │   │   ├── latex.py
│   │           │   │   │   │   ├── other.py
│   │           │   │   │   │   ├── pangomarkup.py
│   │           │   │   │   │   ├── rtf.py
│   │           │   │   │   │   ├── svg.py
│   │           │   │   │   │   ├── terminal.py
│   │           │   │   │   │   └── terminal256.py
│   │           │   │   │   ├── lexer.py
│   │           │   │   │   ├── lexers
│   │           │   │   │   │   ├── __init__.py
│   │           │   │   │   │   ├── __pycache__
│   │           │   │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   │   ├── _mapping.cpython-312.pyc
│   │           │   │   │   │   │   └── python.cpython-312.pyc
│   │           │   │   │   │   ├── _mapping.py
│   │           │   │   │   │   └── python.py
│   │           │   │   │   ├── modeline.py
│   │           │   │   │   ├── plugin.py
│   │           │   │   │   ├── regexopt.py
│   │           │   │   │   ├── scanner.py
│   │           │   │   │   ├── sphinxext.py
│   │           │   │   │   ├── style.py
│   │           │   │   │   ├── styles
│   │           │   │   │   │   ├── __init__.py
│   │           │   │   │   │   ├── __pycache__
│   │           │   │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   │   └── _mapping.cpython-312.pyc
│   │           │   │   │   │   └── _mapping.py
│   │           │   │   │   ├── token.py
│   │           │   │   │   ├── unistring.py
│   │           │   │   │   └── util.py
│   │           │   │   ├── pyproject_hooks
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── _compat.cpython-312.pyc
│   │           │   │   │   │   └── _impl.cpython-312.pyc
│   │           │   │   │   ├── _compat.py
│   │           │   │   │   ├── _impl.py
│   │           │   │   │   └── _in_process
│   │           │   │   │       ├── __init__.py
│   │           │   │   │       ├── __pycache__
│   │           │   │   │       │   ├── __init__.cpython-312.pyc
│   │           │   │   │       │   └── _in_process.cpython-312.pyc
│   │           │   │   │       └── _in_process.py
│   │           │   │   ├── requests
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── __version__.cpython-312.pyc
│   │           │   │   │   │   ├── _internal_utils.cpython-312.pyc
│   │           │   │   │   │   ├── adapters.cpython-312.pyc
│   │           │   │   │   │   ├── api.cpython-312.pyc
│   │           │   │   │   │   ├── auth.cpython-312.pyc
│   │           │   │   │   │   ├── certs.cpython-312.pyc
│   │           │   │   │   │   ├── compat.cpython-312.pyc
│   │           │   │   │   │   ├── cookies.cpython-312.pyc
│   │           │   │   │   │   ├── exceptions.cpython-312.pyc
│   │           │   │   │   │   ├── help.cpython-312.pyc
│   │           │   │   │   │   ├── hooks.cpython-312.pyc
│   │           │   │   │   │   ├── models.cpython-312.pyc
│   │           │   │   │   │   ├── packages.cpython-312.pyc
│   │           │   │   │   │   ├── sessions.cpython-312.pyc
│   │           │   │   │   │   ├── status_codes.cpython-312.pyc
│   │           │   │   │   │   ├── structures.cpython-312.pyc
│   │           │   │   │   │   └── utils.cpython-312.pyc
│   │           │   │   │   ├── __version__.py
│   │           │   │   │   ├── _internal_utils.py
│   │           │   │   │   ├── adapters.py
│   │           │   │   │   ├── api.py
│   │           │   │   │   ├── auth.py
│   │           │   │   │   ├── certs.py
│   │           │   │   │   ├── compat.py
│   │           │   │   │   ├── cookies.py
│   │           │   │   │   ├── exceptions.py
│   │           │   │   │   ├── help.py
│   │           │   │   │   ├── hooks.py
│   │           │   │   │   ├── models.py
│   │           │   │   │   ├── packages.py
│   │           │   │   │   ├── sessions.py
│   │           │   │   │   ├── status_codes.py
│   │           │   │   │   ├── structures.py
│   │           │   │   │   └── utils.py
│   │           │   │   ├── resolvelib
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── providers.cpython-312.pyc
│   │           │   │   │   │   ├── reporters.cpython-312.pyc
│   │           │   │   │   │   ├── resolvers.cpython-312.pyc
│   │           │   │   │   │   └── structs.cpython-312.pyc
│   │           │   │   │   ├── compat
│   │           │   │   │   │   ├── __init__.py
│   │           │   │   │   │   ├── __pycache__
│   │           │   │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   │   └── collections_abc.cpython-312.pyc
│   │           │   │   │   │   └── collections_abc.py
│   │           │   │   │   ├── providers.py
│   │           │   │   │   ├── py.typed
│   │           │   │   │   ├── reporters.py
│   │           │   │   │   ├── resolvers.py
│   │           │   │   │   └── structs.py
│   │           │   │   ├── rich
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __main__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── __main__.cpython-312.pyc
│   │           │   │   │   │   ├── _cell_widths.cpython-312.pyc
│   │           │   │   │   │   ├── _emoji_codes.cpython-312.pyc
│   │           │   │   │   │   ├── _emoji_replace.cpython-312.pyc
│   │           │   │   │   │   ├── _export_format.cpython-312.pyc
│   │           │   │   │   │   ├── _extension.cpython-312.pyc
│   │           │   │   │   │   ├── _fileno.cpython-312.pyc
│   │           │   │   │   │   ├── _inspect.cpython-312.pyc
│   │           │   │   │   │   ├── _log_render.cpython-312.pyc
│   │           │   │   │   │   ├── _loop.cpython-312.pyc
│   │           │   │   │   │   ├── _null_file.cpython-312.pyc
│   │           │   │   │   │   ├── _palettes.cpython-312.pyc
│   │           │   │   │   │   ├── _pick.cpython-312.pyc
│   │           │   │   │   │   ├── _ratio.cpython-312.pyc
│   │           │   │   │   │   ├── _spinners.cpython-312.pyc
│   │           │   │   │   │   ├── _stack.cpython-312.pyc
│   │           │   │   │   │   ├── _timer.cpython-312.pyc
│   │           │   │   │   │   ├── _win32_console.cpython-312.pyc
│   │           │   │   │   │   ├── _windows_renderer.cpython-312.pyc
│   │           │   │   │   │   ├── _windows.cpython-312.pyc
│   │           │   │   │   │   ├── _wrap.cpython-312.pyc
│   │           │   │   │   │   ├── abc.cpython-312.pyc
│   │           │   │   │   │   ├── align.cpython-312.pyc
│   │           │   │   │   │   ├── ansi.cpython-312.pyc
│   │           │   │   │   │   ├── bar.cpython-312.pyc
│   │           │   │   │   │   ├── box.cpython-312.pyc
│   │           │   │   │   │   ├── cells.cpython-312.pyc
│   │           │   │   │   │   ├── color_triplet.cpython-312.pyc
│   │           │   │   │   │   ├── color.cpython-312.pyc
│   │           │   │   │   │   ├── columns.cpython-312.pyc
│   │           │   │   │   │   ├── console.cpython-312.pyc
│   │           │   │   │   │   ├── constrain.cpython-312.pyc
│   │           │   │   │   │   ├── containers.cpython-312.pyc
│   │           │   │   │   │   ├── control.cpython-312.pyc
│   │           │   │   │   │   ├── default_styles.cpython-312.pyc
│   │           │   │   │   │   ├── diagnose.cpython-312.pyc
│   │           │   │   │   │   ├── emoji.cpython-312.pyc
│   │           │   │   │   │   ├── errors.cpython-312.pyc
│   │           │   │   │   │   ├── file_proxy.cpython-312.pyc
│   │           │   │   │   │   ├── filesize.cpython-312.pyc
│   │           │   │   │   │   ├── highlighter.cpython-312.pyc
│   │           │   │   │   │   ├── json.cpython-312.pyc
│   │           │   │   │   │   ├── jupyter.cpython-312.pyc
│   │           │   │   │   │   ├── layout.cpython-312.pyc
│   │           │   │   │   │   ├── live_render.cpython-312.pyc
│   │           │   │   │   │   ├── live.cpython-312.pyc
│   │           │   │   │   │   ├── logging.cpython-312.pyc
│   │           │   │   │   │   ├── markup.cpython-312.pyc
│   │           │   │   │   │   ├── measure.cpython-312.pyc
│   │           │   │   │   │   ├── padding.cpython-312.pyc
│   │           │   │   │   │   ├── pager.cpython-312.pyc
│   │           │   │   │   │   ├── palette.cpython-312.pyc
│   │           │   │   │   │   ├── panel.cpython-312.pyc
│   │           │   │   │   │   ├── pretty.cpython-312.pyc
│   │           │   │   │   │   ├── progress_bar.cpython-312.pyc
│   │           │   │   │   │   ├── progress.cpython-312.pyc
│   │           │   │   │   │   ├── prompt.cpython-312.pyc
│   │           │   │   │   │   ├── protocol.cpython-312.pyc
│   │           │   │   │   │   ├── region.cpython-312.pyc
│   │           │   │   │   │   ├── repr.cpython-312.pyc
│   │           │   │   │   │   ├── rule.cpython-312.pyc
│   │           │   │   │   │   ├── scope.cpython-312.pyc
│   │           │   │   │   │   ├── screen.cpython-312.pyc
│   │           │   │   │   │   ├── segment.cpython-312.pyc
│   │           │   │   │   │   ├── spinner.cpython-312.pyc
│   │           │   │   │   │   ├── status.cpython-312.pyc
│   │           │   │   │   │   ├── style.cpython-312.pyc
│   │           │   │   │   │   ├── styled.cpython-312.pyc
│   │           │   │   │   │   ├── syntax.cpython-312.pyc
│   │           │   │   │   │   ├── table.cpython-312.pyc
│   │           │   │   │   │   ├── terminal_theme.cpython-312.pyc
│   │           │   │   │   │   ├── text.cpython-312.pyc
│   │           │   │   │   │   ├── theme.cpython-312.pyc
│   │           │   │   │   │   ├── themes.cpython-312.pyc
│   │           │   │   │   │   ├── traceback.cpython-312.pyc
│   │           │   │   │   │   └── tree.cpython-312.pyc
│   │           │   │   │   ├── _cell_widths.py
│   │           │   │   │   ├── _emoji_codes.py
│   │           │   │   │   ├── _emoji_replace.py
│   │           │   │   │   ├── _export_format.py
│   │           │   │   │   ├── _extension.py
│   │           │   │   │   ├── _fileno.py
│   │           │   │   │   ├── _inspect.py
│   │           │   │   │   ├── _log_render.py
│   │           │   │   │   ├── _loop.py
│   │           │   │   │   ├── _null_file.py
│   │           │   │   │   ├── _palettes.py
│   │           │   │   │   ├── _pick.py
│   │           │   │   │   ├── _ratio.py
│   │           │   │   │   ├── _spinners.py
│   │           │   │   │   ├── _stack.py
│   │           │   │   │   ├── _timer.py
│   │           │   │   │   ├── _win32_console.py
│   │           │   │   │   ├── _windows_renderer.py
│   │           │   │   │   ├── _windows.py
│   │           │   │   │   ├── _wrap.py
│   │           │   │   │   ├── abc.py
│   │           │   │   │   ├── align.py
│   │           │   │   │   ├── ansi.py
│   │           │   │   │   ├── bar.py
│   │           │   │   │   ├── box.py
│   │           │   │   │   ├── cells.py
│   │           │   │   │   ├── color_triplet.py
│   │           │   │   │   ├── color.py
│   │           │   │   │   ├── columns.py
│   │           │   │   │   ├── console.py
│   │           │   │   │   ├── constrain.py
│   │           │   │   │   ├── containers.py
│   │           │   │   │   ├── control.py
│   │           │   │   │   ├── default_styles.py
│   │           │   │   │   ├── diagnose.py
│   │           │   │   │   ├── emoji.py
│   │           │   │   │   ├── errors.py
│   │           │   │   │   ├── file_proxy.py
│   │           │   │   │   ├── filesize.py
│   │           │   │   │   ├── highlighter.py
│   │           │   │   │   ├── json.py
│   │           │   │   │   ├── jupyter.py
│   │           │   │   │   ├── layout.py
│   │           │   │   │   ├── live_render.py
│   │           │   │   │   ├── live.py
│   │           │   │   │   ├── logging.py
│   │           │   │   │   ├── markup.py
│   │           │   │   │   ├── measure.py
│   │           │   │   │   ├── padding.py
│   │           │   │   │   ├── pager.py
│   │           │   │   │   ├── palette.py
│   │           │   │   │   ├── panel.py
│   │           │   │   │   ├── pretty.py
│   │           │   │   │   ├── progress_bar.py
│   │           │   │   │   ├── progress.py
│   │           │   │   │   ├── prompt.py
│   │           │   │   │   ├── protocol.py
│   │           │   │   │   ├── py.typed
│   │           │   │   │   ├── region.py
│   │           │   │   │   ├── repr.py
│   │           │   │   │   ├── rule.py
│   │           │   │   │   ├── scope.py
│   │           │   │   │   ├── screen.py
│   │           │   │   │   ├── segment.py
│   │           │   │   │   ├── spinner.py
│   │           │   │   │   ├── status.py
│   │           │   │   │   ├── style.py
│   │           │   │   │   ├── styled.py
│   │           │   │   │   ├── syntax.py
│   │           │   │   │   ├── table.py
│   │           │   │   │   ├── terminal_theme.py
│   │           │   │   │   ├── text.py
│   │           │   │   │   ├── theme.py
│   │           │   │   │   ├── themes.py
│   │           │   │   │   ├── traceback.py
│   │           │   │   │   └── tree.py
│   │           │   │   ├── tomli
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── _parser.cpython-312.pyc
│   │           │   │   │   │   ├── _re.cpython-312.pyc
│   │           │   │   │   │   └── _types.cpython-312.pyc
│   │           │   │   │   ├── _parser.py
│   │           │   │   │   ├── _re.py
│   │           │   │   │   ├── _types.py
│   │           │   │   │   └── py.typed
│   │           │   │   ├── truststore
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── _api.cpython-312.pyc
│   │           │   │   │   │   ├── _macos.cpython-312.pyc
│   │           │   │   │   │   ├── _openssl.cpython-312.pyc
│   │           │   │   │   │   ├── _ssl_constants.cpython-312.pyc
│   │           │   │   │   │   └── _windows.cpython-312.pyc
│   │           │   │   │   ├── _api.py
│   │           │   │   │   ├── _macos.py
│   │           │   │   │   ├── _openssl.py
│   │           │   │   │   ├── _ssl_constants.py
│   │           │   │   │   ├── _windows.py
│   │           │   │   │   └── py.typed
│   │           │   │   ├── typing_extensions.py
│   │           │   │   ├── urllib3
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── _collections.cpython-312.pyc
│   │           │   │   │   │   ├── _version.cpython-312.pyc
│   │           │   │   │   │   ├── connection.cpython-312.pyc
│   │           │   │   │   │   ├── connectionpool.cpython-312.pyc
│   │           │   │   │   │   ├── exceptions.cpython-312.pyc
│   │           │   │   │   │   ├── fields.cpython-312.pyc
│   │           │   │   │   │   ├── filepost.cpython-312.pyc
│   │           │   │   │   │   ├── poolmanager.cpython-312.pyc
│   │           │   │   │   │   ├── request.cpython-312.pyc
│   │           │   │   │   │   └── response.cpython-312.pyc
│   │           │   │   │   ├── _collections.py
│   │           │   │   │   ├── _version.py
│   │           │   │   │   ├── connection.py
│   │           │   │   │   ├── connectionpool.py
│   │           │   │   │   ├── contrib
│   │           │   │   │   │   ├── __init__.py
│   │           │   │   │   │   ├── __pycache__
│   │           │   │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   │   ├── _appengine_environ.cpython-312.pyc
│   │           │   │   │   │   │   ├── appengine.cpython-312.pyc
│   │           │   │   │   │   │   ├── ntlmpool.cpython-312.pyc
│   │           │   │   │   │   │   ├── pyopenssl.cpython-312.pyc
│   │           │   │   │   │   │   ├── securetransport.cpython-312.pyc
│   │           │   │   │   │   │   └── socks.cpython-312.pyc
│   │           │   │   │   │   ├── _appengine_environ.py
│   │           │   │   │   │   ├── _securetransport
│   │           │   │   │   │   │   ├── __init__.py
│   │           │   │   │   │   │   ├── __pycache__
│   │           │   │   │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   │   │   ├── bindings.cpython-312.pyc
│   │           │   │   │   │   │   │   └── low_level.cpython-312.pyc
│   │           │   │   │   │   │   ├── bindings.py
│   │           │   │   │   │   │   └── low_level.py
│   │           │   │   │   │   ├── appengine.py
│   │           │   │   │   │   ├── ntlmpool.py
│   │           │   │   │   │   ├── pyopenssl.py
│   │           │   │   │   │   ├── securetransport.py
│   │           │   │   │   │   └── socks.py
│   │           │   │   │   ├── exceptions.py
│   │           │   │   │   ├── fields.py
│   │           │   │   │   ├── filepost.py
│   │           │   │   │   ├── packages
│   │           │   │   │   │   ├── __init__.py
│   │           │   │   │   │   ├── __pycache__
│   │           │   │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   │   └── six.cpython-312.pyc
│   │           │   │   │   │   ├── backports
│   │           │   │   │   │   │   ├── __init__.py
│   │           │   │   │   │   │   ├── __pycache__
│   │           │   │   │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   │   │   ├── makefile.cpython-312.pyc
│   │           │   │   │   │   │   │   └── weakref_finalize.cpython-312.pyc
│   │           │   │   │   │   │   ├── makefile.py
│   │           │   │   │   │   │   └── weakref_finalize.py
│   │           │   │   │   │   └── six.py
│   │           │   │   │   ├── poolmanager.py
│   │           │   │   │   ├── request.py
│   │           │   │   │   ├── response.py
│   │           │   │   │   └── util
│   │           │   │   │       ├── __init__.py
│   │           │   │   │       ├── __pycache__
│   │           │   │   │       │   ├── __init__.cpython-312.pyc
│   │           │   │   │       │   ├── connection.cpython-312.pyc
│   │           │   │   │       │   ├── proxy.cpython-312.pyc
│   │           │   │   │       │   ├── queue.cpython-312.pyc
│   │           │   │   │       │   ├── request.cpython-312.pyc
│   │           │   │   │       │   ├── response.cpython-312.pyc
│   │           │   │   │       │   ├── retry.cpython-312.pyc
│   │           │   │   │       │   ├── ssl_.cpython-312.pyc
│   │           │   │   │       │   ├── ssl_match_hostname.cpython-312.pyc
│   │           │   │   │       │   ├── ssltransport.cpython-312.pyc
│   │           │   │   │       │   ├── timeout.cpython-312.pyc
│   │           │   │   │       │   ├── url.cpython-312.pyc
│   │           │   │   │       │   └── wait.cpython-312.pyc
│   │           │   │   │       ├── connection.py
│   │           │   │   │       ├── proxy.py
│   │           │   │   │       ├── queue.py
│   │           │   │   │       ├── request.py
│   │           │   │   │       ├── response.py
│   │           │   │   │       ├── retry.py
│   │           │   │   │       ├── ssl_.py
│   │           │   │   │       ├── ssl_match_hostname.py
│   │           │   │   │       ├── ssltransport.py
│   │           │   │   │       ├── timeout.py
│   │           │   │   │       ├── url.py
│   │           │   │   │       └── wait.py
│   │           │   │   └── vendor.txt
│   │           │   └── py.typed
│   │           ├── pip-24.2.dist-info
│   │           │   ├── AUTHORS.txt
│   │           │   ├── entry_points.txt
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE.txt
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   ├── REQUESTED
│   │           │   ├── top_level.txt
│   │           │   └── WHEEL
│   │           ├── requests
│   │           │   ├── __init__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── __version__.cpython-312.pyc
│   │           │   │   ├── _internal_utils.cpython-312.pyc
│   │           │   │   ├── adapters.cpython-312.pyc
│   │           │   │   ├── api.cpython-312.pyc
│   │           │   │   ├── auth.cpython-312.pyc
│   │           │   │   ├── certs.cpython-312.pyc
│   │           │   │   ├── compat.cpython-312.pyc
│   │           │   │   ├── cookies.cpython-312.pyc
│   │           │   │   ├── exceptions.cpython-312.pyc
│   │           │   │   ├── help.cpython-312.pyc
│   │           │   │   ├── hooks.cpython-312.pyc
│   │           │   │   ├── models.cpython-312.pyc
│   │           │   │   ├── packages.cpython-312.pyc
│   │           │   │   ├── sessions.cpython-312.pyc
│   │           │   │   ├── status_codes.cpython-312.pyc
│   │           │   │   ├── structures.cpython-312.pyc
│   │           │   │   └── utils.cpython-312.pyc
│   │           │   ├── __version__.py
│   │           │   ├── _internal_utils.py
│   │           │   ├── adapters.py
│   │           │   ├── api.py
│   │           │   ├── auth.py
│   │           │   ├── certs.py
│   │           │   ├── compat.py
│   │           │   ├── cookies.py
│   │           │   ├── exceptions.py
│   │           │   ├── help.py
│   │           │   ├── hooks.py
│   │           │   ├── models.py
│   │           │   ├── packages.py
│   │           │   ├── sessions.py
│   │           │   ├── status_codes.py
│   │           │   ├── structures.py
│   │           │   └── utils.py
│   │           ├── requests-2.32.3.dist-info
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   ├── REQUESTED
│   │           │   ├── top_level.txt
│   │           │   └── WHEEL
│   │           ├── soupsieve
│   │           │   ├── __init__.py
│   │           │   ├── __meta__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── __meta__.cpython-312.pyc
│   │           │   │   ├── css_match.cpython-312.pyc
│   │           │   │   ├── css_parser.cpython-312.pyc
│   │           │   │   ├── css_types.cpython-312.pyc
│   │           │   │   ├── pretty.cpython-312.pyc
│   │           │   │   └── util.cpython-312.pyc
│   │           │   ├── css_match.py
│   │           │   ├── css_parser.py
│   │           │   ├── css_types.py
│   │           │   ├── pretty.py
│   │           │   ├── py.typed
│   │           │   └── util.py
│   │           ├── soupsieve-2.6.dist-info
│   │           │   ├── INSTALLER
│   │           │   ├── licenses
│   │           │   │   └── LICENSE.md
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   └── WHEEL
│   │           ├── urllib3
│   │           │   ├── __init__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── _base_connection.cpython-312.pyc
│   │           │   │   ├── _collections.cpython-312.pyc
│   │           │   │   ├── _request_methods.cpython-312.pyc
│   │           │   │   ├── _version.cpython-312.pyc
│   │           │   │   ├── connection.cpython-312.pyc
│   │           │   │   ├── connectionpool.cpython-312.pyc
│   │           │   │   ├── exceptions.cpython-312.pyc
│   │           │   │   ├── fields.cpython-312.pyc
│   │           │   │   ├── filepost.cpython-312.pyc
│   │           │   │   ├── poolmanager.cpython-312.pyc
│   │           │   │   └── response.cpython-312.pyc
│   │           │   ├── _base_connection.py
│   │           │   ├── _collections.py
│   │           │   ├── _request_methods.py
│   │           │   ├── _version.py
│   │           │   ├── connection.py
│   │           │   ├── connectionpool.py
│   │           │   ├── contrib
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   ├── pyopenssl.cpython-312.pyc
│   │           │   │   │   └── socks.cpython-312.pyc
│   │           │   │   ├── emscripten
│   │           │   │   │   ├── __init__.py
│   │           │   │   │   ├── __pycache__
│   │           │   │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   │   ├── connection.cpython-312.pyc
│   │           │   │   │   │   ├── fetch.cpython-312.pyc
│   │           │   │   │   │   ├── request.cpython-312.pyc
│   │           │   │   │   │   └── response.cpython-312.pyc
│   │           │   │   │   ├── connection.py
│   │           │   │   │   ├── emscripten_fetch_worker.js
│   │           │   │   │   ├── fetch.py
│   │           │   │   │   ├── request.py
│   │           │   │   │   └── response.py
│   │           │   │   ├── pyopenssl.py
│   │           │   │   └── socks.py
│   │           │   ├── exceptions.py
│   │           │   ├── fields.py
│   │           │   ├── filepost.py
│   │           │   ├── http2
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   ├── connection.cpython-312.pyc
│   │           │   │   │   └── probe.cpython-312.pyc
│   │           │   │   ├── connection.py
│   │           │   │   └── probe.py
│   │           │   ├── poolmanager.py
│   │           │   ├── py.typed
│   │           │   ├── response.py
│   │           │   └── util
│   │           │       ├── __init__.py
│   │           │       ├── __pycache__
│   │           │       │   ├── __init__.cpython-312.pyc
│   │           │       │   ├── connection.cpython-312.pyc
│   │           │       │   ├── proxy.cpython-312.pyc
│   │           │       │   ├── request.cpython-312.pyc
│   │           │       │   ├── response.cpython-312.pyc
│   │           │       │   ├── retry.cpython-312.pyc
│   │           │       │   ├── ssl_.cpython-312.pyc
│   │           │       │   ├── ssl_match_hostname.cpython-312.pyc
│   │           │       │   ├── ssltransport.cpython-312.pyc
│   │           │       │   ├── timeout.cpython-312.pyc
│   │           │       │   ├── url.cpython-312.pyc
│   │           │       │   ├── util.cpython-312.pyc
│   │           │       │   └── wait.cpython-312.pyc
│   │           │       ├── connection.py
│   │           │       ├── proxy.py
│   │           │       ├── request.py
│   │           │       ├── response.py
│   │           │       ├── retry.py
│   │           │       ├── ssl_.py
│   │           │       ├── ssl_match_hostname.py
│   │           │       ├── ssltransport.py
│   │           │       ├── timeout.py
│   │           │       ├── url.py
│   │           │       ├── util.py
│   │           │       └── wait.py
│   │           ├── urllib3-2.2.3.dist-info
│   │           │   ├── INSTALLER
│   │           │   ├── licenses
│   │           │   │   └── LICENSE.txt
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   └── WHEEL
│   │           ├── useragent
│   │           │   ├── __init__.py
│   │           │   ├── __init__.pyc
│   │           │   ├── __pycache__
│   │           │   │   └── __init__.cpython-312.pyc
│   │           │   ├── resources
│   │           │   │   └── user_agent_data.json
│   │           │   └── test
│   │           │       ├── __init__.py
│   │           │       ├── __pycache__
│   │           │       │   └── __init__.cpython-312.pyc
│   │           │       ├── test_additional_os.json
│   │           │       ├── test_browser.json
│   │           │       ├── test_device.json
│   │           │       ├── test_firefox.json
│   │           │       ├── test_os.json
│   │           │       └── test_pgts_browser.json
│   │           ├── useragent-0.1.1.dist-info
│   │           │   ├── INSTALLER
│   │           │   ├── LICENSE.txt
│   │           │   ├── METADATA
│   │           │   ├── RECORD
│   │           │   ├── REQUESTED
│   │           │   ├── top_level.txt
│   │           │   └── WHEEL
│   │           ├── werkzeug
│   │           │   ├── __init__.py
│   │           │   ├── __pycache__
│   │           │   │   ├── __init__.cpython-312.pyc
│   │           │   │   ├── _internal.cpython-312.pyc
│   │           │   │   ├── _reloader.cpython-312.pyc
│   │           │   │   ├── exceptions.cpython-312.pyc
│   │           │   │   ├── formparser.cpython-312.pyc
│   │           │   │   ├── http.cpython-312.pyc
│   │           │   │   ├── local.cpython-312.pyc
│   │           │   │   ├── security.cpython-312.pyc
│   │           │   │   ├── serving.cpython-312.pyc
│   │           │   │   ├── test.cpython-312.pyc
│   │           │   │   ├── testapp.cpython-312.pyc
│   │           │   │   ├── urls.cpython-312.pyc
│   │           │   │   ├── user_agent.cpython-312.pyc
│   │           │   │   ├── utils.cpython-312.pyc
│   │           │   │   └── wsgi.cpython-312.pyc
│   │           │   ├── _internal.py
│   │           │   ├── _reloader.py
│   │           │   ├── datastructures
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   ├── accept.cpython-312.pyc
│   │           │   │   │   ├── auth.cpython-312.pyc
│   │           │   │   │   ├── cache_control.cpython-312.pyc
│   │           │   │   │   ├── csp.cpython-312.pyc
│   │           │   │   │   ├── etag.cpython-312.pyc
│   │           │   │   │   ├── file_storage.cpython-312.pyc
│   │           │   │   │   ├── headers.cpython-312.pyc
│   │           │   │   │   ├── mixins.cpython-312.pyc
│   │           │   │   │   ├── range.cpython-312.pyc
│   │           │   │   │   └── structures.cpython-312.pyc
│   │           │   │   ├── accept.py
│   │           │   │   ├── accept.pyi
│   │           │   │   ├── auth.py
│   │           │   │   ├── cache_control.py
│   │           │   │   ├── cache_control.pyi
│   │           │   │   ├── csp.py
│   │           │   │   ├── csp.pyi
│   │           │   │   ├── etag.py
│   │           │   │   ├── etag.pyi
│   │           │   │   ├── file_storage.py
│   │           │   │   ├── file_storage.pyi
│   │           │   │   ├── headers.py
│   │           │   │   ├── headers.pyi
│   │           │   │   ├── mixins.py
│   │           │   │   ├── mixins.pyi
│   │           │   │   ├── range.py
│   │           │   │   ├── range.pyi
│   │           │   │   ├── structures.py
│   │           │   │   └── structures.pyi
│   │           │   ├── debug
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   ├── console.cpython-312.pyc
│   │           │   │   │   ├── repr.cpython-312.pyc
│   │           │   │   │   └── tbtools.cpython-312.pyc
│   │           │   │   ├── console.py
│   │           │   │   ├── repr.py
│   │           │   │   ├── shared
│   │           │   │   │   ├── console.png
│   │           │   │   │   ├── debugger.js
│   │           │   │   │   ├── ICON_LICENSE.md
│   │           │   │   │   ├── less.png
│   │           │   │   │   ├── more.png
│   │           │   │   │   └── style.css
│   │           │   │   └── tbtools.py
│   │           │   ├── exceptions.py
│   │           │   ├── formparser.py
│   │           │   ├── http.py
│   │           │   ├── local.py
│   │           │   ├── middleware
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   ├── dispatcher.cpython-312.pyc
│   │           │   │   │   ├── http_proxy.cpython-312.pyc
│   │           │   │   │   ├── lint.cpython-312.pyc
│   │           │   │   │   ├── profiler.cpython-312.pyc
│   │           │   │   │   ├── proxy_fix.cpython-312.pyc
│   │           │   │   │   └── shared_data.cpython-312.pyc
│   │           │   │   ├── dispatcher.py
│   │           │   │   ├── http_proxy.py
│   │           │   │   ├── lint.py
│   │           │   │   ├── profiler.py
│   │           │   │   ├── proxy_fix.py
│   │           │   │   └── shared_data.py
│   │           │   ├── py.typed
│   │           │   ├── routing
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   ├── converters.cpython-312.pyc
│   │           │   │   │   ├── exceptions.cpython-312.pyc
│   │           │   │   │   ├── map.cpython-312.pyc
│   │           │   │   │   ├── matcher.cpython-312.pyc
│   │           │   │   │   └── rules.cpython-312.pyc
│   │           │   │   ├── converters.py
│   │           │   │   ├── exceptions.py
│   │           │   │   ├── map.py
│   │           │   │   ├── matcher.py
│   │           │   │   └── rules.py
│   │           │   ├── sansio
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   ├── http.cpython-312.pyc
│   │           │   │   │   ├── multipart.cpython-312.pyc
│   │           │   │   │   ├── request.cpython-312.pyc
│   │           │   │   │   ├── response.cpython-312.pyc
│   │           │   │   │   └── utils.cpython-312.pyc
│   │           │   │   ├── http.py
│   │           │   │   ├── multipart.py
│   │           │   │   ├── request.py
│   │           │   │   ├── response.py
│   │           │   │   └── utils.py
│   │           │   ├── security.py
│   │           │   ├── serving.py
│   │           │   ├── test.py
│   │           │   ├── testapp.py
│   │           │   ├── urls.py
│   │           │   ├── user_agent.py
│   │           │   ├── utils.py
│   │           │   ├── wrappers
│   │           │   │   ├── __init__.py
│   │           │   │   ├── __pycache__
│   │           │   │   │   ├── __init__.cpython-312.pyc
│   │           │   │   │   ├── request.cpython-312.pyc
│   │           │   │   │   └── response.cpython-312.pyc
│   │           │   │   ├── request.py
│   │           │   │   └── response.py
│   │           │   └── wsgi.py
│   │           └── werkzeug-3.0.4.dist-info
│   │               ├── INSTALLER
│   │               ├── LICENSE.txt
│   │               ├── METADATA
│   │               ├── RECORD
│   │               └── WHEEL
│   ├── pyvenv.cfg
│   ├── static
│   │   └── styles.css
│   ├── templates
│   │   └── index.html
│   └── test.py
├── cline_config.json
├── mcp_server.py
├── README.md
├── search_results.json
├── settings.json
└── test_files
    ├── text1.txt
    └── text2.txt
```

# Files

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

```
  1 | /*
  2 |  * Summary: incomplete XML Schemas structure implementation
  3 |  * Description: interface to the XML Schemas handling and schema validity
  4 |  *              checking, it is incomplete right now.
  5 |  *
  6 |  * Copy: See Copyright for the status of this software.
  7 |  *
  8 |  * Author: Daniel Veillard
  9 |  */
 10 | 
 11 | 
 12 | #ifndef __XML_SCHEMA_H__
 13 | #define __XML_SCHEMA_H__
 14 | 
 15 | #include <libxml/xmlversion.h>
 16 | 
 17 | #ifdef LIBXML_SCHEMAS_ENABLED
 18 | 
 19 | #include <stdio.h>
 20 | #include <libxml/encoding.h>
 21 | #include <libxml/tree.h>
 22 | #include <libxml/xmlerror.h>
 23 | 
 24 | #ifdef __cplusplus
 25 | extern "C" {
 26 | #endif
 27 | 
 28 | /**
 29 |  * This error codes are obsolete; not used any more.
 30 |  */
 31 | typedef enum {
 32 |     XML_SCHEMAS_ERR_OK		= 0,
 33 |     XML_SCHEMAS_ERR_NOROOT	= 1,
 34 |     XML_SCHEMAS_ERR_UNDECLAREDELEM,
 35 |     XML_SCHEMAS_ERR_NOTTOPLEVEL,
 36 |     XML_SCHEMAS_ERR_MISSING,
 37 |     XML_SCHEMAS_ERR_WRONGELEM,
 38 |     XML_SCHEMAS_ERR_NOTYPE,
 39 |     XML_SCHEMAS_ERR_NOROLLBACK,
 40 |     XML_SCHEMAS_ERR_ISABSTRACT,
 41 |     XML_SCHEMAS_ERR_NOTEMPTY,
 42 |     XML_SCHEMAS_ERR_ELEMCONT,
 43 |     XML_SCHEMAS_ERR_HAVEDEFAULT,
 44 |     XML_SCHEMAS_ERR_NOTNILLABLE,
 45 |     XML_SCHEMAS_ERR_EXTRACONTENT,
 46 |     XML_SCHEMAS_ERR_INVALIDATTR,
 47 |     XML_SCHEMAS_ERR_INVALIDELEM,
 48 |     XML_SCHEMAS_ERR_NOTDETERMINIST,
 49 |     XML_SCHEMAS_ERR_CONSTRUCT,
 50 |     XML_SCHEMAS_ERR_INTERNAL,
 51 |     XML_SCHEMAS_ERR_NOTSIMPLE,
 52 |     XML_SCHEMAS_ERR_ATTRUNKNOWN,
 53 |     XML_SCHEMAS_ERR_ATTRINVALID,
 54 |     XML_SCHEMAS_ERR_VALUE,
 55 |     XML_SCHEMAS_ERR_FACET,
 56 |     XML_SCHEMAS_ERR_,
 57 |     XML_SCHEMAS_ERR_XXX
 58 | } xmlSchemaValidError;
 59 | 
 60 | /*
 61 | * ATTENTION: Change xmlSchemaSetValidOptions's check
 62 | * for invalid values, if adding to the validation
 63 | * options below.
 64 | */
 65 | /**
 66 |  * xmlSchemaValidOption:
 67 |  *
 68 |  * This is the set of XML Schema validation options.
 69 |  */
 70 | typedef enum {
 71 |     XML_SCHEMA_VAL_VC_I_CREATE			= 1<<0
 72 | 	/* Default/fixed: create an attribute node
 73 | 	* or an element's text node on the instance.
 74 | 	*/
 75 | } xmlSchemaValidOption;
 76 | 
 77 | /*
 78 |     XML_SCHEMA_VAL_XSI_ASSEMBLE			= 1<<1,
 79 | 	* assemble schemata using
 80 | 	* xsi:schemaLocation and
 81 | 	* xsi:noNamespaceSchemaLocation
 82 | */
 83 | 
 84 | /**
 85 |  * The schemas related types are kept internal
 86 |  */
 87 | typedef struct _xmlSchema xmlSchema;
 88 | typedef xmlSchema *xmlSchemaPtr;
 89 | 
 90 | /**
 91 |  * xmlSchemaValidityErrorFunc:
 92 |  * @ctx: the validation context
 93 |  * @msg: the message
 94 |  * @...: extra arguments
 95 |  *
 96 |  * Signature of an error callback from an XSD validation
 97 |  */
 98 | typedef void (*xmlSchemaValidityErrorFunc)
 99 |                  (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
100 | 
101 | /**
102 |  * xmlSchemaValidityWarningFunc:
103 |  * @ctx: the validation context
104 |  * @msg: the message
105 |  * @...: extra arguments
106 |  *
107 |  * Signature of a warning callback from an XSD validation
108 |  */
109 | typedef void (*xmlSchemaValidityWarningFunc)
110 |                  (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
111 | 
112 | /**
113 |  * A schemas validation context
114 |  */
115 | typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt;
116 | typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr;
117 | 
118 | typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt;
119 | typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr;
120 | 
121 | /**
122 |  * xmlSchemaValidityLocatorFunc:
123 |  * @ctx: user provided context
124 |  * @file: returned file information
125 |  * @line: returned line information
126 |  *
127 |  * A schemas validation locator, a callback called by the validator.
128 |  * This is used when file or node information are not available
129 |  * to find out what file and line number are affected
130 |  *
131 |  * Returns: 0 in case of success and -1 in case of error
132 |  */
133 | 
134 | typedef int (*xmlSchemaValidityLocatorFunc) (void *ctx,
135 |                            const char **file, unsigned long *line);
136 | 
137 | /*
138 |  * Interfaces for parsing.
139 |  */
140 | XMLPUBFUN xmlSchemaParserCtxtPtr
141 | 	    xmlSchemaNewParserCtxt	(const char *URL);
142 | XMLPUBFUN xmlSchemaParserCtxtPtr
143 | 	    xmlSchemaNewMemParserCtxt	(const char *buffer,
144 | 					 int size);
145 | XMLPUBFUN xmlSchemaParserCtxtPtr
146 | 	    xmlSchemaNewDocParserCtxt	(xmlDocPtr doc);
147 | XMLPUBFUN void
148 | 	    xmlSchemaFreeParserCtxt	(xmlSchemaParserCtxtPtr ctxt);
149 | XMLPUBFUN void
150 | 	    xmlSchemaSetParserErrors	(xmlSchemaParserCtxtPtr ctxt,
151 | 					 xmlSchemaValidityErrorFunc err,
152 | 					 xmlSchemaValidityWarningFunc warn,
153 | 					 void *ctx);
154 | XMLPUBFUN void
155 | 	    xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt,
156 | 					 xmlStructuredErrorFunc serror,
157 | 					 void *ctx);
158 | XMLPUBFUN int
159 | 		xmlSchemaGetParserErrors(xmlSchemaParserCtxtPtr ctxt,
160 | 					xmlSchemaValidityErrorFunc * err,
161 | 					xmlSchemaValidityWarningFunc * warn,
162 | 					void **ctx);
163 | XMLPUBFUN int
164 | 		xmlSchemaIsValid	(xmlSchemaValidCtxtPtr ctxt);
165 | 
166 | XMLPUBFUN xmlSchemaPtr
167 | 	    xmlSchemaParse		(xmlSchemaParserCtxtPtr ctxt);
168 | XMLPUBFUN void
169 | 	    xmlSchemaFree		(xmlSchemaPtr schema);
170 | #ifdef LIBXML_OUTPUT_ENABLED
171 | XMLPUBFUN void
172 | 	    xmlSchemaDump		(FILE *output,
173 | 					 xmlSchemaPtr schema);
174 | #endif /* LIBXML_OUTPUT_ENABLED */
175 | /*
176 |  * Interfaces for validating
177 |  */
178 | XMLPUBFUN void
179 | 	    xmlSchemaSetValidErrors	(xmlSchemaValidCtxtPtr ctxt,
180 | 					 xmlSchemaValidityErrorFunc err,
181 | 					 xmlSchemaValidityWarningFunc warn,
182 | 					 void *ctx);
183 | XMLPUBFUN void
184 | 	    xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt,
185 | 					 xmlStructuredErrorFunc serror,
186 | 					 void *ctx);
187 | XMLPUBFUN int
188 | 	    xmlSchemaGetValidErrors	(xmlSchemaValidCtxtPtr ctxt,
189 | 					 xmlSchemaValidityErrorFunc *err,
190 | 					 xmlSchemaValidityWarningFunc *warn,
191 | 					 void **ctx);
192 | XMLPUBFUN int
193 | 	    xmlSchemaSetValidOptions	(xmlSchemaValidCtxtPtr ctxt,
194 | 					 int options);
195 | XMLPUBFUN void
196 |             xmlSchemaValidateSetFilename(xmlSchemaValidCtxtPtr vctxt,
197 | 	                                 const char *filename);
198 | XMLPUBFUN int
199 | 	    xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt);
200 | 
201 | XMLPUBFUN xmlSchemaValidCtxtPtr
202 | 	    xmlSchemaNewValidCtxt	(xmlSchemaPtr schema);
203 | XMLPUBFUN void
204 | 	    xmlSchemaFreeValidCtxt	(xmlSchemaValidCtxtPtr ctxt);
205 | XMLPUBFUN int
206 | 	    xmlSchemaValidateDoc	(xmlSchemaValidCtxtPtr ctxt,
207 | 					 xmlDocPtr instance);
208 | XMLPUBFUN int
209 |             xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt,
210 | 			                 xmlNodePtr elem);
211 | XMLPUBFUN int
212 | 	    xmlSchemaValidateStream	(xmlSchemaValidCtxtPtr ctxt,
213 | 					 xmlParserInputBufferPtr input,
214 | 					 xmlCharEncoding enc,
215 | 					 xmlSAXHandlerPtr sax,
216 | 					 void *user_data);
217 | XMLPUBFUN int
218 | 	    xmlSchemaValidateFile	(xmlSchemaValidCtxtPtr ctxt,
219 | 					 const char * filename,
220 | 					 int options);
221 | 
222 | XMLPUBFUN xmlParserCtxtPtr
223 | 	    xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt);
224 | 
225 | /*
226 |  * Interface to insert Schemas SAX validation in a SAX stream
227 |  */
228 | typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct;
229 | typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr;
230 | 
231 | XMLPUBFUN xmlSchemaSAXPlugPtr
232 |             xmlSchemaSAXPlug		(xmlSchemaValidCtxtPtr ctxt,
233 | 					 xmlSAXHandlerPtr *sax,
234 | 					 void **user_data);
235 | XMLPUBFUN int
236 |             xmlSchemaSAXUnplug		(xmlSchemaSAXPlugPtr plug);
237 | 
238 | 
239 | XMLPUBFUN void
240 |             xmlSchemaValidateSetLocator	(xmlSchemaValidCtxtPtr vctxt,
241 | 					 xmlSchemaValidityLocatorFunc f,
242 | 					 void *ctxt);
243 | 
244 | #ifdef __cplusplus
245 | }
246 | #endif
247 | 
248 | #endif /* LIBXML_SCHEMAS_ENABLED */
249 | #endif /* __XML_SCHEMA_H__ */
250 | 
```

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

```python
  1 | import re
  2 | import sys
  3 | from contextlib import suppress
  4 | from typing import Iterable, NamedTuple, Optional
  5 | 
  6 | from .color import Color
  7 | from .style import Style
  8 | from .text import Text
  9 | 
 10 | re_ansi = re.compile(
 11 |     r"""
 12 | (?:\x1b\](.*?)\x1b\\)|
 13 | (?:\x1b([(@-Z\\-_]|\[[0-?]*[ -/]*[@-~]))
 14 | """,
 15 |     re.VERBOSE,
 16 | )
 17 | 
 18 | 
 19 | class _AnsiToken(NamedTuple):
 20 |     """Result of ansi tokenized string."""
 21 | 
 22 |     plain: str = ""
 23 |     sgr: Optional[str] = ""
 24 |     osc: Optional[str] = ""
 25 | 
 26 | 
 27 | def _ansi_tokenize(ansi_text: str) -> Iterable[_AnsiToken]:
 28 |     """Tokenize a string in to plain text and ANSI codes.
 29 | 
 30 |     Args:
 31 |         ansi_text (str): A String containing ANSI codes.
 32 | 
 33 |     Yields:
 34 |         AnsiToken: A named tuple of (plain, sgr, osc)
 35 |     """
 36 | 
 37 |     position = 0
 38 |     sgr: Optional[str]
 39 |     osc: Optional[str]
 40 |     for match in re_ansi.finditer(ansi_text):
 41 |         start, end = match.span(0)
 42 |         osc, sgr = match.groups()
 43 |         if start > position:
 44 |             yield _AnsiToken(ansi_text[position:start])
 45 |         if sgr:
 46 |             if sgr == "(":
 47 |                 position = end + 1
 48 |                 continue
 49 |             if sgr.endswith("m"):
 50 |                 yield _AnsiToken("", sgr[1:-1], osc)
 51 |         else:
 52 |             yield _AnsiToken("", sgr, osc)
 53 |         position = end
 54 |     if position < len(ansi_text):
 55 |         yield _AnsiToken(ansi_text[position:])
 56 | 
 57 | 
 58 | SGR_STYLE_MAP = {
 59 |     1: "bold",
 60 |     2: "dim",
 61 |     3: "italic",
 62 |     4: "underline",
 63 |     5: "blink",
 64 |     6: "blink2",
 65 |     7: "reverse",
 66 |     8: "conceal",
 67 |     9: "strike",
 68 |     21: "underline2",
 69 |     22: "not dim not bold",
 70 |     23: "not italic",
 71 |     24: "not underline",
 72 |     25: "not blink",
 73 |     26: "not blink2",
 74 |     27: "not reverse",
 75 |     28: "not conceal",
 76 |     29: "not strike",
 77 |     30: "color(0)",
 78 |     31: "color(1)",
 79 |     32: "color(2)",
 80 |     33: "color(3)",
 81 |     34: "color(4)",
 82 |     35: "color(5)",
 83 |     36: "color(6)",
 84 |     37: "color(7)",
 85 |     39: "default",
 86 |     40: "on color(0)",
 87 |     41: "on color(1)",
 88 |     42: "on color(2)",
 89 |     43: "on color(3)",
 90 |     44: "on color(4)",
 91 |     45: "on color(5)",
 92 |     46: "on color(6)",
 93 |     47: "on color(7)",
 94 |     49: "on default",
 95 |     51: "frame",
 96 |     52: "encircle",
 97 |     53: "overline",
 98 |     54: "not frame not encircle",
 99 |     55: "not overline",
100 |     90: "color(8)",
101 |     91: "color(9)",
102 |     92: "color(10)",
103 |     93: "color(11)",
104 |     94: "color(12)",
105 |     95: "color(13)",
106 |     96: "color(14)",
107 |     97: "color(15)",
108 |     100: "on color(8)",
109 |     101: "on color(9)",
110 |     102: "on color(10)",
111 |     103: "on color(11)",
112 |     104: "on color(12)",
113 |     105: "on color(13)",
114 |     106: "on color(14)",
115 |     107: "on color(15)",
116 | }
117 | 
118 | 
119 | class AnsiDecoder:
120 |     """Translate ANSI code in to styled Text."""
121 | 
122 |     def __init__(self) -> None:
123 |         self.style = Style.null()
124 | 
125 |     def decode(self, terminal_text: str) -> Iterable[Text]:
126 |         """Decode ANSI codes in an iterable of lines.
127 | 
128 |         Args:
129 |             lines (Iterable[str]): An iterable of lines of terminal output.
130 | 
131 |         Yields:
132 |             Text: Marked up Text.
133 |         """
134 |         for line in terminal_text.splitlines():
135 |             yield self.decode_line(line)
136 | 
137 |     def decode_line(self, line: str) -> Text:
138 |         """Decode a line containing ansi codes.
139 | 
140 |         Args:
141 |             line (str): A line of terminal output.
142 | 
143 |         Returns:
144 |             Text: A Text instance marked up according to ansi codes.
145 |         """
146 |         from_ansi = Color.from_ansi
147 |         from_rgb = Color.from_rgb
148 |         _Style = Style
149 |         text = Text()
150 |         append = text.append
151 |         line = line.rsplit("\r", 1)[-1]
152 |         for plain_text, sgr, osc in _ansi_tokenize(line):
153 |             if plain_text:
154 |                 append(plain_text, self.style or None)
155 |             elif osc is not None:
156 |                 if osc.startswith("8;"):
157 |                     _params, semicolon, link = osc[2:].partition(";")
158 |                     if semicolon:
159 |                         self.style = self.style.update_link(link or None)
160 |             elif sgr is not None:
161 |                 # Translate in to semi-colon separated codes
162 |                 # Ignore invalid codes, because we want to be lenient
163 |                 codes = [
164 |                     min(255, int(_code) if _code else 0)
165 |                     for _code in sgr.split(";")
166 |                     if _code.isdigit() or _code == ""
167 |                 ]
168 |                 iter_codes = iter(codes)
169 |                 for code in iter_codes:
170 |                     if code == 0:
171 |                         # reset
172 |                         self.style = _Style.null()
173 |                     elif code in SGR_STYLE_MAP:
174 |                         # styles
175 |                         self.style += _Style.parse(SGR_STYLE_MAP[code])
176 |                     elif code == 38:
177 |                         #  Foreground
178 |                         with suppress(StopIteration):
179 |                             color_type = next(iter_codes)
180 |                             if color_type == 5:
181 |                                 self.style += _Style.from_color(
182 |                                     from_ansi(next(iter_codes))
183 |                                 )
184 |                             elif color_type == 2:
185 |                                 self.style += _Style.from_color(
186 |                                     from_rgb(
187 |                                         next(iter_codes),
188 |                                         next(iter_codes),
189 |                                         next(iter_codes),
190 |                                     )
191 |                                 )
192 |                     elif code == 48:
193 |                         # Background
194 |                         with suppress(StopIteration):
195 |                             color_type = next(iter_codes)
196 |                             if color_type == 5:
197 |                                 self.style += _Style.from_color(
198 |                                     None, from_ansi(next(iter_codes))
199 |                                 )
200 |                             elif color_type == 2:
201 |                                 self.style += _Style.from_color(
202 |                                     None,
203 |                                     from_rgb(
204 |                                         next(iter_codes),
205 |                                         next(iter_codes),
206 |                                         next(iter_codes),
207 |                                     ),
208 |                                 )
209 | 
210 |         return text
211 | 
212 | 
213 | if sys.platform != "win32" and __name__ == "__main__":  # pragma: no cover
214 |     import io
215 |     import os
216 |     import pty
217 |     import sys
218 | 
219 |     decoder = AnsiDecoder()
220 | 
221 |     stdout = io.BytesIO()
222 | 
223 |     def read(fd: int) -> bytes:
224 |         data = os.read(fd, 1024)
225 |         stdout.write(data)
226 |         return data
227 | 
228 |     pty.spawn(sys.argv[1:], read)
229 | 
230 |     from .console import Console
231 | 
232 |     console = Console(record=True)
233 | 
234 |     stdout_result = stdout.getvalue().decode("utf-8")
235 |     print(stdout_result)
236 | 
237 |     for line in decoder.decode(stdout_result):
238 |         console.print(line)
239 | 
240 |     console.save_html("stdout.html")
241 | 
```

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

```python
  1 | from __future__ import annotations
  2 | 
  3 | import typing as t
  4 | 
  5 | from . import typing as ft
  6 | from .globals import current_app
  7 | from .globals import request
  8 | 
  9 | F = t.TypeVar("F", bound=t.Callable[..., t.Any])
 10 | 
 11 | http_method_funcs = frozenset(
 12 |     ["get", "post", "head", "options", "delete", "put", "trace", "patch"]
 13 | )
 14 | 
 15 | 
 16 | class View:
 17 |     """Subclass this class and override :meth:`dispatch_request` to
 18 |     create a generic class-based view. Call :meth:`as_view` to create a
 19 |     view function that creates an instance of the class with the given
 20 |     arguments and calls its ``dispatch_request`` method with any URL
 21 |     variables.
 22 | 
 23 |     See :doc:`views` for a detailed guide.
 24 | 
 25 |     .. code-block:: python
 26 | 
 27 |         class Hello(View):
 28 |             init_every_request = False
 29 | 
 30 |             def dispatch_request(self, name):
 31 |                 return f"Hello, {name}!"
 32 | 
 33 |         app.add_url_rule(
 34 |             "/hello/<name>", view_func=Hello.as_view("hello")
 35 |         )
 36 | 
 37 |     Set :attr:`methods` on the class to change what methods the view
 38 |     accepts.
 39 | 
 40 |     Set :attr:`decorators` on the class to apply a list of decorators to
 41 |     the generated view function. Decorators applied to the class itself
 42 |     will not be applied to the generated view function!
 43 | 
 44 |     Set :attr:`init_every_request` to ``False`` for efficiency, unless
 45 |     you need to store request-global data on ``self``.
 46 |     """
 47 | 
 48 |     #: The methods this view is registered for. Uses the same default
 49 |     #: (``["GET", "HEAD", "OPTIONS"]``) as ``route`` and
 50 |     #: ``add_url_rule`` by default.
 51 |     methods: t.ClassVar[t.Collection[str] | None] = None
 52 | 
 53 |     #: Control whether the ``OPTIONS`` method is handled automatically.
 54 |     #: Uses the same default (``True``) as ``route`` and
 55 |     #: ``add_url_rule`` by default.
 56 |     provide_automatic_options: t.ClassVar[bool | None] = None
 57 | 
 58 |     #: A list of decorators to apply, in order, to the generated view
 59 |     #: function. Remember that ``@decorator`` syntax is applied bottom
 60 |     #: to top, so the first decorator in the list would be the bottom
 61 |     #: decorator.
 62 |     #:
 63 |     #: .. versionadded:: 0.8
 64 |     decorators: t.ClassVar[list[t.Callable[[F], F]]] = []
 65 | 
 66 |     #: Create a new instance of this view class for every request by
 67 |     #: default. If a view subclass sets this to ``False``, the same
 68 |     #: instance is used for every request.
 69 |     #:
 70 |     #: A single instance is more efficient, especially if complex setup
 71 |     #: is done during init. However, storing data on ``self`` is no
 72 |     #: longer safe across requests, and :data:`~flask.g` should be used
 73 |     #: instead.
 74 |     #:
 75 |     #: .. versionadded:: 2.2
 76 |     init_every_request: t.ClassVar[bool] = True
 77 | 
 78 |     def dispatch_request(self) -> ft.ResponseReturnValue:
 79 |         """The actual view function behavior. Subclasses must override
 80 |         this and return a valid response. Any variables from the URL
 81 |         rule are passed as keyword arguments.
 82 |         """
 83 |         raise NotImplementedError()
 84 | 
 85 |     @classmethod
 86 |     def as_view(
 87 |         cls, name: str, *class_args: t.Any, **class_kwargs: t.Any
 88 |     ) -> ft.RouteCallable:
 89 |         """Convert the class into a view function that can be registered
 90 |         for a route.
 91 | 
 92 |         By default, the generated view will create a new instance of the
 93 |         view class for every request and call its
 94 |         :meth:`dispatch_request` method. If the view class sets
 95 |         :attr:`init_every_request` to ``False``, the same instance will
 96 |         be used for every request.
 97 | 
 98 |         Except for ``name``, all other arguments passed to this method
 99 |         are forwarded to the view class ``__init__`` method.
100 | 
101 |         .. versionchanged:: 2.2
102 |             Added the ``init_every_request`` class attribute.
103 |         """
104 |         if cls.init_every_request:
105 | 
106 |             def view(**kwargs: t.Any) -> ft.ResponseReturnValue:
107 |                 self = view.view_class(  # type: ignore[attr-defined]
108 |                     *class_args, **class_kwargs
109 |                 )
110 |                 return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
111 | 
112 |         else:
113 |             self = cls(*class_args, **class_kwargs)
114 | 
115 |             def view(**kwargs: t.Any) -> ft.ResponseReturnValue:
116 |                 return current_app.ensure_sync(self.dispatch_request)(**kwargs)  # type: ignore[no-any-return]
117 | 
118 |         if cls.decorators:
119 |             view.__name__ = name
120 |             view.__module__ = cls.__module__
121 |             for decorator in cls.decorators:
122 |                 view = decorator(view)
123 | 
124 |         # We attach the view class to the view function for two reasons:
125 |         # first of all it allows us to easily figure out what class-based
126 |         # view this thing came from, secondly it's also used for instantiating
127 |         # the view class so you can actually replace it with something else
128 |         # for testing purposes and debugging.
129 |         view.view_class = cls  # type: ignore
130 |         view.__name__ = name
131 |         view.__doc__ = cls.__doc__
132 |         view.__module__ = cls.__module__
133 |         view.methods = cls.methods  # type: ignore
134 |         view.provide_automatic_options = cls.provide_automatic_options  # type: ignore
135 |         return view
136 | 
137 | 
138 | class MethodView(View):
139 |     """Dispatches request methods to the corresponding instance methods.
140 |     For example, if you implement a ``get`` method, it will be used to
141 |     handle ``GET`` requests.
142 | 
143 |     This can be useful for defining a REST API.
144 | 
145 |     :attr:`methods` is automatically set based on the methods defined on
146 |     the class.
147 | 
148 |     See :doc:`views` for a detailed guide.
149 | 
150 |     .. code-block:: python
151 | 
152 |         class CounterAPI(MethodView):
153 |             def get(self):
154 |                 return str(session.get("counter", 0))
155 | 
156 |             def post(self):
157 |                 session["counter"] = session.get("counter", 0) + 1
158 |                 return redirect(url_for("counter"))
159 | 
160 |         app.add_url_rule(
161 |             "/counter", view_func=CounterAPI.as_view("counter")
162 |         )
163 |     """
164 | 
165 |     def __init_subclass__(cls, **kwargs: t.Any) -> None:
166 |         super().__init_subclass__(**kwargs)
167 | 
168 |         if "methods" not in cls.__dict__:
169 |             methods = set()
170 | 
171 |             for base in cls.__bases__:
172 |                 if getattr(base, "methods", None):
173 |                     methods.update(base.methods)  # type: ignore[attr-defined]
174 | 
175 |             for key in http_method_funcs:
176 |                 if hasattr(cls, key):
177 |                     methods.add(key.upper())
178 | 
179 |             if methods:
180 |                 cls.methods = methods
181 | 
182 |     def dispatch_request(self, **kwargs: t.Any) -> ft.ResponseReturnValue:
183 |         meth = getattr(self, request.method.lower(), None)
184 | 
185 |         # If the request method is HEAD and we don't have a handler for it
186 |         # retry with GET.
187 |         if meth is None and request.method == "HEAD":
188 |             meth = getattr(self, "get", None)
189 | 
190 |         assert meth is not None, f"Unimplemented method {request.method!r}"
191 |         return current_app.ensure_sync(meth)(**kwargs)  # type: ignore[no-any-return]
192 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/bs4/tests/test_fuzz.py:
--------------------------------------------------------------------------------

```python
  1 | """This file contains test cases reported by third parties using
  2 | fuzzing tools, primarily from Google's oss-fuzz project. Some of these
  3 | represent real problems with Beautiful Soup, but many are problems in
  4 | libraries that Beautiful Soup depends on, and many of the test cases
  5 | represent different ways of triggering the same problem.
  6 | 
  7 | Grouping these test cases together makes it easy to see which test
  8 | cases represent the same problem, and puts the test cases in close
  9 | proximity to code that can trigger the problems.
 10 | """
 11 | import os
 12 | import pytest
 13 | from bs4 import (
 14 |     BeautifulSoup,
 15 |     ParserRejectedMarkup,
 16 | )
 17 | try:
 18 |     from soupsieve.util import SelectorSyntaxError
 19 |     import lxml
 20 |     import html5lib
 21 |     fully_fuzzable = True
 22 | except ImportError:
 23 |     fully_fuzzable = False
 24 |     
 25 | 
 26 | @pytest.mark.skipif(not fully_fuzzable, reason="Prerequisites for fuzz tests are not installed.")
 27 | class TestFuzz(object):
 28 | 
 29 |     # Test case markup files from fuzzers are given this extension so
 30 |     # they can be included in builds.
 31 |     TESTCASE_SUFFIX = ".testcase"
 32 | 
 33 |     # Copied 20230512 from
 34 |     # https://github.com/google/oss-fuzz/blob/4ac6a645a197a695fe76532251feb5067076b3f3/projects/bs4/bs4_fuzzer.py
 35 |     #
 36 |     # Copying the code lets us precisely duplicate the behavior of
 37 |     # oss-fuzz.  The downside is that this code changes over time, so
 38 |     # multiple copies of the code must be kept around to run against
 39 |     # older tests. I'm not sure what to do about this, but I may
 40 |     # retire old tests after a time.
 41 |     def fuzz_test_with_css(self, filename):
 42 |         data = self.__markup(filename)
 43 |         parsers = ['lxml-xml', 'html5lib', 'html.parser', 'lxml']
 44 |         try:
 45 |             idx = int(data[0]) % len(parsers)
 46 |         except ValueError:
 47 |             return
 48 | 
 49 |         css_selector, data = data[1:10], data[10:]
 50 | 
 51 |         try:
 52 |             soup = BeautifulSoup(data[1:], features=parsers[idx])
 53 |         except ParserRejectedMarkup:
 54 |             return
 55 |         except ValueError:
 56 |             return
 57 | 
 58 |         list(soup.find_all(True))
 59 |         try:
 60 |             soup.css.select(css_selector.decode('utf-8', 'replace'))
 61 |         except SelectorSyntaxError:
 62 |             return
 63 |         soup.prettify()
 64 |     
 65 |     # This class of error has been fixed by catching a less helpful
 66 |     # exception from html.parser and raising ParserRejectedMarkup
 67 |     # instead.
 68 |     @pytest.mark.parametrize(
 69 |         "filename", [
 70 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912",
 71 |             "crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a",
 72 |         ]
 73 |     )
 74 |     def test_rejected_markup(self, filename):
 75 |         markup = self.__markup(filename)
 76 |         with pytest.raises(ParserRejectedMarkup):
 77 |             BeautifulSoup(markup, 'html.parser')
 78 |             
 79 |     # This class of error has to do with very deeply nested documents
 80 |     # which overflow the Python call stack when the tree is converted
 81 |     # to a string. This is an issue with Beautiful Soup which was fixed
 82 |     # as part of [bug=1471755].
 83 |     #
 84 |     # These test cases are in the older format that doesn't specify
 85 |     # which parser to use or give a CSS selector.
 86 |     @pytest.mark.parametrize(
 87 |         "filename", [
 88 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440",
 89 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632",
 90 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464",
 91 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400",
 92 |         ]
 93 |     )
 94 |     def test_deeply_nested_document_without_css(self, filename):
 95 |         # Parsing the document and encoding it back to a string is
 96 |         # sufficient to demonstrate that the overflow problem has
 97 |         # been fixed.
 98 |         markup = self.__markup(filename)
 99 |         BeautifulSoup(markup, 'html.parser').encode()
100 | 
101 |     # This class of error has to do with very deeply nested documents
102 |     # which overflow the Python call stack when the tree is converted
103 |     # to a string. This is an issue with Beautiful Soup which was fixed
104 |     # as part of [bug=1471755].
105 |     @pytest.mark.parametrize(
106 |         "filename", [
107 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016",
108 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000",
109 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624",
110 |         ]
111 |     )
112 |     def test_deeply_nested_document(self, filename): 
113 |        self.fuzz_test_with_css(filename)
114 |         
115 |     @pytest.mark.parametrize(
116 |         "filename", [
117 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256",
118 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824",
119 |         ]
120 |     )
121 |     def test_soupsieve_errors(self, filename):
122 |         self.fuzz_test_with_css(filename)
123 |         
124 |     # This class of error represents problems with html5lib's parser,
125 |     # not Beautiful Soup. I use
126 |     # https://github.com/html5lib/html5lib-python/issues/568 to notify
127 |     # the html5lib developers of these issues.
128 |     #
129 |     # These test cases are in the older format that doesn't specify
130 |     # which parser to use or give a CSS selector.
131 |     @pytest.mark.skip(reason="html5lib-specific problems")
132 |     @pytest.mark.parametrize(
133 |         "filename", [
134 |             # b"""ÿ<!DOCTyPEV PUBLIC'''Ð'"""
135 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320",
136 | 
137 |             # b')<a><math><TR><a><mI><a><p><a>'
138 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456",
139 | 
140 |             # b'-<math><sElect><mi><sElect><sElect>'
141 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896",
142 |            
143 |             # b'ñ<table><svg><html>'
144 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224",
145 | 
146 |             # <TABLE>, some ^@ characters, some <math> tags.
147 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744",
148 | 
149 |             # Nested table
150 |             "crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08"
151 |         ]
152 |     )
153 |     def test_html5lib_parse_errors_without_css(self, filename):
154 |         markup = self.__markup(filename)
155 |         print(BeautifulSoup(markup, 'html5lib').encode())
156 | 
157 |     # This class of error represents problems with html5lib's parser,
158 |     # not Beautiful Soup. I use
159 |     # https://github.com/html5lib/html5lib-python/issues/568 to notify
160 |     # the html5lib developers of these issues.
161 |     @pytest.mark.skip(reason="html5lib-specific problems")
162 |     @pytest.mark.parametrize(
163 |         "filename", [
164 |             # b'-      \xff\xff  <math>\x10<select><mi><select><select>t'
165 |             "clusterfuzz-testcase-minimized-bs4_fuzzer-6306874195312640",
166 |         ]
167 |     )
168 |     def test_html5lib_parse_errors(self, filename):
169 |         self.fuzz_test_with_css(filename)
170 |         
171 |     def __markup(self, filename):
172 |         if not filename.endswith(self.TESTCASE_SUFFIX):
173 |             filename += self.TESTCASE_SUFFIX
174 |         this_dir = os.path.split(__file__)[0]
175 |         path = os.path.join(this_dir, 'fuzz', filename)
176 |         return open(path, 'rb').read()
177 | 
```

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

```python
  1 | """
  2 | Python HTTP library with thread-safe connection pooling, file post support, user friendly, and more
  3 | """
  4 | 
  5 | from __future__ import annotations
  6 | 
  7 | # Set default logging handler to avoid "No handler found" warnings.
  8 | import logging
  9 | import sys
 10 | import typing
 11 | import warnings
 12 | from logging import NullHandler
 13 | 
 14 | from . import exceptions
 15 | from ._base_connection import _TYPE_BODY
 16 | from ._collections import HTTPHeaderDict
 17 | from ._version import __version__
 18 | from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url
 19 | from .filepost import _TYPE_FIELDS, encode_multipart_formdata
 20 | from .poolmanager import PoolManager, ProxyManager, proxy_from_url
 21 | from .response import BaseHTTPResponse, HTTPResponse
 22 | from .util.request import make_headers
 23 | from .util.retry import Retry
 24 | from .util.timeout import Timeout
 25 | 
 26 | # Ensure that Python is compiled with OpenSSL 1.1.1+
 27 | # If the 'ssl' module isn't available at all that's
 28 | # fine, we only care if the module is available.
 29 | try:
 30 |     import ssl
 31 | except ImportError:
 32 |     pass
 33 | else:
 34 |     if not ssl.OPENSSL_VERSION.startswith("OpenSSL "):  # Defensive:
 35 |         warnings.warn(
 36 |             "urllib3 v2 only supports OpenSSL 1.1.1+, currently "
 37 |             f"the 'ssl' module is compiled with {ssl.OPENSSL_VERSION!r}. "
 38 |             "See: https://github.com/urllib3/urllib3/issues/3020",
 39 |             exceptions.NotOpenSSLWarning,
 40 |         )
 41 |     elif ssl.OPENSSL_VERSION_INFO < (1, 1, 1):  # Defensive:
 42 |         raise ImportError(
 43 |             "urllib3 v2 only supports OpenSSL 1.1.1+, currently "
 44 |             f"the 'ssl' module is compiled with {ssl.OPENSSL_VERSION!r}. "
 45 |             "See: https://github.com/urllib3/urllib3/issues/2168"
 46 |         )
 47 | 
 48 | __author__ = "Andrey Petrov ([email protected])"
 49 | __license__ = "MIT"
 50 | __version__ = __version__
 51 | 
 52 | __all__ = (
 53 |     "HTTPConnectionPool",
 54 |     "HTTPHeaderDict",
 55 |     "HTTPSConnectionPool",
 56 |     "PoolManager",
 57 |     "ProxyManager",
 58 |     "HTTPResponse",
 59 |     "Retry",
 60 |     "Timeout",
 61 |     "add_stderr_logger",
 62 |     "connection_from_url",
 63 |     "disable_warnings",
 64 |     "encode_multipart_formdata",
 65 |     "make_headers",
 66 |     "proxy_from_url",
 67 |     "request",
 68 |     "BaseHTTPResponse",
 69 | )
 70 | 
 71 | logging.getLogger(__name__).addHandler(NullHandler())
 72 | 
 73 | 
 74 | def add_stderr_logger(
 75 |     level: int = logging.DEBUG,
 76 | ) -> logging.StreamHandler[typing.TextIO]:
 77 |     """
 78 |     Helper for quickly adding a StreamHandler to the logger. Useful for
 79 |     debugging.
 80 | 
 81 |     Returns the handler after adding it.
 82 |     """
 83 |     # This method needs to be in this __init__.py to get the __name__ correct
 84 |     # even if urllib3 is vendored within another package.
 85 |     logger = logging.getLogger(__name__)
 86 |     handler = logging.StreamHandler()
 87 |     handler.setFormatter(logging.Formatter("%(asctime)s %(levelname)s %(message)s"))
 88 |     logger.addHandler(handler)
 89 |     logger.setLevel(level)
 90 |     logger.debug("Added a stderr logging handler to logger: %s", __name__)
 91 |     return handler
 92 | 
 93 | 
 94 | # ... Clean up.
 95 | del NullHandler
 96 | 
 97 | 
 98 | # All warning filters *must* be appended unless you're really certain that they
 99 | # shouldn't be: otherwise, it's very hard for users to use most Python
100 | # mechanisms to silence them.
101 | # SecurityWarning's always go off by default.
102 | warnings.simplefilter("always", exceptions.SecurityWarning, append=True)
103 | # InsecurePlatformWarning's don't vary between requests, so we keep it default.
104 | warnings.simplefilter("default", exceptions.InsecurePlatformWarning, append=True)
105 | 
106 | 
107 | def disable_warnings(category: type[Warning] = exceptions.HTTPWarning) -> None:
108 |     """
109 |     Helper for quickly disabling all urllib3 warnings.
110 |     """
111 |     warnings.simplefilter("ignore", category)
112 | 
113 | 
114 | _DEFAULT_POOL = PoolManager()
115 | 
116 | 
117 | def request(
118 |     method: str,
119 |     url: str,
120 |     *,
121 |     body: _TYPE_BODY | None = None,
122 |     fields: _TYPE_FIELDS | None = None,
123 |     headers: typing.Mapping[str, str] | None = None,
124 |     preload_content: bool | None = True,
125 |     decode_content: bool | None = True,
126 |     redirect: bool | None = True,
127 |     retries: Retry | bool | int | None = None,
128 |     timeout: Timeout | float | int | None = 3,
129 |     json: typing.Any | None = None,
130 | ) -> BaseHTTPResponse:
131 |     """
132 |     A convenience, top-level request method. It uses a module-global ``PoolManager`` instance.
133 |     Therefore, its side effects could be shared across dependencies relying on it.
134 |     To avoid side effects create a new ``PoolManager`` instance and use it instead.
135 |     The method does not accept low-level ``**urlopen_kw`` keyword arguments.
136 | 
137 |     :param method:
138 |         HTTP request method (such as GET, POST, PUT, etc.)
139 | 
140 |     :param url:
141 |         The URL to perform the request on.
142 | 
143 |     :param body:
144 |         Data to send in the request body, either :class:`str`, :class:`bytes`,
145 |         an iterable of :class:`str`/:class:`bytes`, or a file-like object.
146 | 
147 |     :param fields:
148 |         Data to encode and send in the request body.
149 | 
150 |     :param headers:
151 |         Dictionary of custom headers to send, such as User-Agent,
152 |         If-None-Match, etc.
153 | 
154 |     :param bool preload_content:
155 |         If True, the response's body will be preloaded into memory.
156 | 
157 |     :param bool decode_content:
158 |         If True, will attempt to decode the body based on the
159 |         'content-encoding' header.
160 | 
161 |     :param redirect:
162 |         If True, automatically handle redirects (status codes 301, 302,
163 |         303, 307, 308). Each redirect counts as a retry. Disabling retries
164 |         will disable redirect, too.
165 | 
166 |     :param retries:
167 |         Configure the number of retries to allow before raising a
168 |         :class:`~urllib3.exceptions.MaxRetryError` exception.
169 | 
170 |         If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a
171 |         :class:`~urllib3.util.retry.Retry` object for fine-grained control
172 |         over different types of retries.
173 |         Pass an integer number to retry connection errors that many times,
174 |         but no other types of errors. Pass zero to never retry.
175 | 
176 |         If ``False``, then retries are disabled and any exception is raised
177 |         immediately. Also, instead of raising a MaxRetryError on redirects,
178 |         the redirect response will be returned.
179 | 
180 |     :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.
181 | 
182 |     :param timeout:
183 |         If specified, overrides the default timeout for this one
184 |         request. It may be a float (in seconds) or an instance of
185 |         :class:`urllib3.util.Timeout`.
186 | 
187 |     :param json:
188 |         Data to encode and send as JSON with UTF-encoded in the request body.
189 |         The ``"Content-Type"`` header will be set to ``"application/json"``
190 |         unless specified otherwise.
191 |     """
192 | 
193 |     return _DEFAULT_POOL.request(
194 |         method,
195 |         url,
196 |         body=body,
197 |         fields=fields,
198 |         headers=headers,
199 |         preload_content=preload_content,
200 |         decode_content=decode_content,
201 |         redirect=redirect,
202 |         retries=retries,
203 |         timeout=timeout,
204 |         json=json,
205 |     )
206 | 
207 | 
208 | if sys.platform == "emscripten":
209 |     from .contrib.emscripten import inject_into_urllib3  # noqa: 401
210 | 
211 |     inject_into_urllib3()
212 | 
```

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

```python
  1 | from .palette import Palette
  2 | 
  3 | 
  4 | # Taken from https://en.wikipedia.org/wiki/ANSI_escape_code (Windows 10 column)
  5 | WINDOWS_PALETTE = Palette(
  6 |     [
  7 |         (12, 12, 12),
  8 |         (197, 15, 31),
  9 |         (19, 161, 14),
 10 |         (193, 156, 0),
 11 |         (0, 55, 218),
 12 |         (136, 23, 152),
 13 |         (58, 150, 221),
 14 |         (204, 204, 204),
 15 |         (118, 118, 118),
 16 |         (231, 72, 86),
 17 |         (22, 198, 12),
 18 |         (249, 241, 165),
 19 |         (59, 120, 255),
 20 |         (180, 0, 158),
 21 |         (97, 214, 214),
 22 |         (242, 242, 242),
 23 |     ]
 24 | )
 25 | 
 26 | # # The standard ansi colors (including bright variants)
 27 | STANDARD_PALETTE = Palette(
 28 |     [
 29 |         (0, 0, 0),
 30 |         (170, 0, 0),
 31 |         (0, 170, 0),
 32 |         (170, 85, 0),
 33 |         (0, 0, 170),
 34 |         (170, 0, 170),
 35 |         (0, 170, 170),
 36 |         (170, 170, 170),
 37 |         (85, 85, 85),
 38 |         (255, 85, 85),
 39 |         (85, 255, 85),
 40 |         (255, 255, 85),
 41 |         (85, 85, 255),
 42 |         (255, 85, 255),
 43 |         (85, 255, 255),
 44 |         (255, 255, 255),
 45 |     ]
 46 | )
 47 | 
 48 | 
 49 | # The 256 color palette
 50 | EIGHT_BIT_PALETTE = Palette(
 51 |     [
 52 |         (0, 0, 0),
 53 |         (128, 0, 0),
 54 |         (0, 128, 0),
 55 |         (128, 128, 0),
 56 |         (0, 0, 128),
 57 |         (128, 0, 128),
 58 |         (0, 128, 128),
 59 |         (192, 192, 192),
 60 |         (128, 128, 128),
 61 |         (255, 0, 0),
 62 |         (0, 255, 0),
 63 |         (255, 255, 0),
 64 |         (0, 0, 255),
 65 |         (255, 0, 255),
 66 |         (0, 255, 255),
 67 |         (255, 255, 255),
 68 |         (0, 0, 0),
 69 |         (0, 0, 95),
 70 |         (0, 0, 135),
 71 |         (0, 0, 175),
 72 |         (0, 0, 215),
 73 |         (0, 0, 255),
 74 |         (0, 95, 0),
 75 |         (0, 95, 95),
 76 |         (0, 95, 135),
 77 |         (0, 95, 175),
 78 |         (0, 95, 215),
 79 |         (0, 95, 255),
 80 |         (0, 135, 0),
 81 |         (0, 135, 95),
 82 |         (0, 135, 135),
 83 |         (0, 135, 175),
 84 |         (0, 135, 215),
 85 |         (0, 135, 255),
 86 |         (0, 175, 0),
 87 |         (0, 175, 95),
 88 |         (0, 175, 135),
 89 |         (0, 175, 175),
 90 |         (0, 175, 215),
 91 |         (0, 175, 255),
 92 |         (0, 215, 0),
 93 |         (0, 215, 95),
 94 |         (0, 215, 135),
 95 |         (0, 215, 175),
 96 |         (0, 215, 215),
 97 |         (0, 215, 255),
 98 |         (0, 255, 0),
 99 |         (0, 255, 95),
100 |         (0, 255, 135),
101 |         (0, 255, 175),
102 |         (0, 255, 215),
103 |         (0, 255, 255),
104 |         (95, 0, 0),
105 |         (95, 0, 95),
106 |         (95, 0, 135),
107 |         (95, 0, 175),
108 |         (95, 0, 215),
109 |         (95, 0, 255),
110 |         (95, 95, 0),
111 |         (95, 95, 95),
112 |         (95, 95, 135),
113 |         (95, 95, 175),
114 |         (95, 95, 215),
115 |         (95, 95, 255),
116 |         (95, 135, 0),
117 |         (95, 135, 95),
118 |         (95, 135, 135),
119 |         (95, 135, 175),
120 |         (95, 135, 215),
121 |         (95, 135, 255),
122 |         (95, 175, 0),
123 |         (95, 175, 95),
124 |         (95, 175, 135),
125 |         (95, 175, 175),
126 |         (95, 175, 215),
127 |         (95, 175, 255),
128 |         (95, 215, 0),
129 |         (95, 215, 95),
130 |         (95, 215, 135),
131 |         (95, 215, 175),
132 |         (95, 215, 215),
133 |         (95, 215, 255),
134 |         (95, 255, 0),
135 |         (95, 255, 95),
136 |         (95, 255, 135),
137 |         (95, 255, 175),
138 |         (95, 255, 215),
139 |         (95, 255, 255),
140 |         (135, 0, 0),
141 |         (135, 0, 95),
142 |         (135, 0, 135),
143 |         (135, 0, 175),
144 |         (135, 0, 215),
145 |         (135, 0, 255),
146 |         (135, 95, 0),
147 |         (135, 95, 95),
148 |         (135, 95, 135),
149 |         (135, 95, 175),
150 |         (135, 95, 215),
151 |         (135, 95, 255),
152 |         (135, 135, 0),
153 |         (135, 135, 95),
154 |         (135, 135, 135),
155 |         (135, 135, 175),
156 |         (135, 135, 215),
157 |         (135, 135, 255),
158 |         (135, 175, 0),
159 |         (135, 175, 95),
160 |         (135, 175, 135),
161 |         (135, 175, 175),
162 |         (135, 175, 215),
163 |         (135, 175, 255),
164 |         (135, 215, 0),
165 |         (135, 215, 95),
166 |         (135, 215, 135),
167 |         (135, 215, 175),
168 |         (135, 215, 215),
169 |         (135, 215, 255),
170 |         (135, 255, 0),
171 |         (135, 255, 95),
172 |         (135, 255, 135),
173 |         (135, 255, 175),
174 |         (135, 255, 215),
175 |         (135, 255, 255),
176 |         (175, 0, 0),
177 |         (175, 0, 95),
178 |         (175, 0, 135),
179 |         (175, 0, 175),
180 |         (175, 0, 215),
181 |         (175, 0, 255),
182 |         (175, 95, 0),
183 |         (175, 95, 95),
184 |         (175, 95, 135),
185 |         (175, 95, 175),
186 |         (175, 95, 215),
187 |         (175, 95, 255),
188 |         (175, 135, 0),
189 |         (175, 135, 95),
190 |         (175, 135, 135),
191 |         (175, 135, 175),
192 |         (175, 135, 215),
193 |         (175, 135, 255),
194 |         (175, 175, 0),
195 |         (175, 175, 95),
196 |         (175, 175, 135),
197 |         (175, 175, 175),
198 |         (175, 175, 215),
199 |         (175, 175, 255),
200 |         (175, 215, 0),
201 |         (175, 215, 95),
202 |         (175, 215, 135),
203 |         (175, 215, 175),
204 |         (175, 215, 215),
205 |         (175, 215, 255),
206 |         (175, 255, 0),
207 |         (175, 255, 95),
208 |         (175, 255, 135),
209 |         (175, 255, 175),
210 |         (175, 255, 215),
211 |         (175, 255, 255),
212 |         (215, 0, 0),
213 |         (215, 0, 95),
214 |         (215, 0, 135),
215 |         (215, 0, 175),
216 |         (215, 0, 215),
217 |         (215, 0, 255),
218 |         (215, 95, 0),
219 |         (215, 95, 95),
220 |         (215, 95, 135),
221 |         (215, 95, 175),
222 |         (215, 95, 215),
223 |         (215, 95, 255),
224 |         (215, 135, 0),
225 |         (215, 135, 95),
226 |         (215, 135, 135),
227 |         (215, 135, 175),
228 |         (215, 135, 215),
229 |         (215, 135, 255),
230 |         (215, 175, 0),
231 |         (215, 175, 95),
232 |         (215, 175, 135),
233 |         (215, 175, 175),
234 |         (215, 175, 215),
235 |         (215, 175, 255),
236 |         (215, 215, 0),
237 |         (215, 215, 95),
238 |         (215, 215, 135),
239 |         (215, 215, 175),
240 |         (215, 215, 215),
241 |         (215, 215, 255),
242 |         (215, 255, 0),
243 |         (215, 255, 95),
244 |         (215, 255, 135),
245 |         (215, 255, 175),
246 |         (215, 255, 215),
247 |         (215, 255, 255),
248 |         (255, 0, 0),
249 |         (255, 0, 95),
250 |         (255, 0, 135),
251 |         (255, 0, 175),
252 |         (255, 0, 215),
253 |         (255, 0, 255),
254 |         (255, 95, 0),
255 |         (255, 95, 95),
256 |         (255, 95, 135),
257 |         (255, 95, 175),
258 |         (255, 95, 215),
259 |         (255, 95, 255),
260 |         (255, 135, 0),
261 |         (255, 135, 95),
262 |         (255, 135, 135),
263 |         (255, 135, 175),
264 |         (255, 135, 215),
265 |         (255, 135, 255),
266 |         (255, 175, 0),
267 |         (255, 175, 95),
268 |         (255, 175, 135),
269 |         (255, 175, 175),
270 |         (255, 175, 215),
271 |         (255, 175, 255),
272 |         (255, 215, 0),
273 |         (255, 215, 95),
274 |         (255, 215, 135),
275 |         (255, 215, 175),
276 |         (255, 215, 215),
277 |         (255, 215, 255),
278 |         (255, 255, 0),
279 |         (255, 255, 95),
280 |         (255, 255, 135),
281 |         (255, 255, 175),
282 |         (255, 255, 215),
283 |         (255, 255, 255),
284 |         (8, 8, 8),
285 |         (18, 18, 18),
286 |         (28, 28, 28),
287 |         (38, 38, 38),
288 |         (48, 48, 48),
289 |         (58, 58, 58),
290 |         (68, 68, 68),
291 |         (78, 78, 78),
292 |         (88, 88, 88),
293 |         (98, 98, 98),
294 |         (108, 108, 108),
295 |         (118, 118, 118),
296 |         (128, 128, 128),
297 |         (138, 138, 138),
298 |         (148, 148, 148),
299 |         (158, 158, 158),
300 |         (168, 168, 168),
301 |         (178, 178, 178),
302 |         (188, 188, 188),
303 |         (198, 198, 198),
304 |         (208, 208, 208),
305 |         (218, 218, 218),
306 |         (228, 228, 228),
307 |         (238, 238, 238),
308 |     ]
309 | )
310 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/socks.py:
--------------------------------------------------------------------------------

```python
  1 | # -*- coding: utf-8 -*-
  2 | """
  3 | This module contains provisional support for SOCKS proxies from within
  4 | urllib3. This module supports SOCKS4, SOCKS4A (an extension of SOCKS4), and
  5 | SOCKS5. To enable its functionality, either install PySocks or install this
  6 | module with the ``socks`` extra.
  7 | 
  8 | The SOCKS implementation supports the full range of urllib3 features. It also
  9 | supports the following SOCKS features:
 10 | 
 11 | - SOCKS4A (``proxy_url='socks4a://...``)
 12 | - SOCKS4 (``proxy_url='socks4://...``)
 13 | - SOCKS5 with remote DNS (``proxy_url='socks5h://...``)
 14 | - SOCKS5 with local DNS (``proxy_url='socks5://...``)
 15 | - Usernames and passwords for the SOCKS proxy
 16 | 
 17 | .. note::
 18 |    It is recommended to use ``socks5h://`` or ``socks4a://`` schemes in
 19 |    your ``proxy_url`` to ensure that DNS resolution is done from the remote
 20 |    server instead of client-side when connecting to a domain name.
 21 | 
 22 | SOCKS4 supports IPv4 and domain names with the SOCKS4A extension. SOCKS5
 23 | supports IPv4, IPv6, and domain names.
 24 | 
 25 | When connecting to a SOCKS4 proxy the ``username`` portion of the ``proxy_url``
 26 | will be sent as the ``userid`` section of the SOCKS request:
 27 | 
 28 | .. code-block:: python
 29 | 
 30 |     proxy_url="socks4a://<userid>@proxy-host"
 31 | 
 32 | When connecting to a SOCKS5 proxy the ``username`` and ``password`` portion
 33 | of the ``proxy_url`` will be sent as the username/password to authenticate
 34 | with the proxy:
 35 | 
 36 | .. code-block:: python
 37 | 
 38 |     proxy_url="socks5h://<username>:<password>@proxy-host"
 39 | 
 40 | """
 41 | from __future__ import absolute_import
 42 | 
 43 | try:
 44 |     import socks
 45 | except ImportError:
 46 |     import warnings
 47 | 
 48 |     from ..exceptions import DependencyWarning
 49 | 
 50 |     warnings.warn(
 51 |         (
 52 |             "SOCKS support in urllib3 requires the installation of optional "
 53 |             "dependencies: specifically, PySocks.  For more information, see "
 54 |             "https://urllib3.readthedocs.io/en/1.26.x/contrib.html#socks-proxies"
 55 |         ),
 56 |         DependencyWarning,
 57 |     )
 58 |     raise
 59 | 
 60 | from socket import error as SocketError
 61 | from socket import timeout as SocketTimeout
 62 | 
 63 | from ..connection import HTTPConnection, HTTPSConnection
 64 | from ..connectionpool import HTTPConnectionPool, HTTPSConnectionPool
 65 | from ..exceptions import ConnectTimeoutError, NewConnectionError
 66 | from ..poolmanager import PoolManager
 67 | from ..util.url import parse_url
 68 | 
 69 | try:
 70 |     import ssl
 71 | except ImportError:
 72 |     ssl = None
 73 | 
 74 | 
 75 | class SOCKSConnection(HTTPConnection):
 76 |     """
 77 |     A plain-text HTTP connection that connects via a SOCKS proxy.
 78 |     """
 79 | 
 80 |     def __init__(self, *args, **kwargs):
 81 |         self._socks_options = kwargs.pop("_socks_options")
 82 |         super(SOCKSConnection, self).__init__(*args, **kwargs)
 83 | 
 84 |     def _new_conn(self):
 85 |         """
 86 |         Establish a new connection via the SOCKS proxy.
 87 |         """
 88 |         extra_kw = {}
 89 |         if self.source_address:
 90 |             extra_kw["source_address"] = self.source_address
 91 | 
 92 |         if self.socket_options:
 93 |             extra_kw["socket_options"] = self.socket_options
 94 | 
 95 |         try:
 96 |             conn = socks.create_connection(
 97 |                 (self.host, self.port),
 98 |                 proxy_type=self._socks_options["socks_version"],
 99 |                 proxy_addr=self._socks_options["proxy_host"],
100 |                 proxy_port=self._socks_options["proxy_port"],
101 |                 proxy_username=self._socks_options["username"],
102 |                 proxy_password=self._socks_options["password"],
103 |                 proxy_rdns=self._socks_options["rdns"],
104 |                 timeout=self.timeout,
105 |                 **extra_kw
106 |             )
107 | 
108 |         except SocketTimeout:
109 |             raise ConnectTimeoutError(
110 |                 self,
111 |                 "Connection to %s timed out. (connect timeout=%s)"
112 |                 % (self.host, self.timeout),
113 |             )
114 | 
115 |         except socks.ProxyError as e:
116 |             # This is fragile as hell, but it seems to be the only way to raise
117 |             # useful errors here.
118 |             if e.socket_err:
119 |                 error = e.socket_err
120 |                 if isinstance(error, SocketTimeout):
121 |                     raise ConnectTimeoutError(
122 |                         self,
123 |                         "Connection to %s timed out. (connect timeout=%s)"
124 |                         % (self.host, self.timeout),
125 |                     )
126 |                 else:
127 |                     raise NewConnectionError(
128 |                         self, "Failed to establish a new connection: %s" % error
129 |                     )
130 |             else:
131 |                 raise NewConnectionError(
132 |                     self, "Failed to establish a new connection: %s" % e
133 |                 )
134 | 
135 |         except SocketError as e:  # Defensive: PySocks should catch all these.
136 |             raise NewConnectionError(
137 |                 self, "Failed to establish a new connection: %s" % e
138 |             )
139 | 
140 |         return conn
141 | 
142 | 
143 | # We don't need to duplicate the Verified/Unverified distinction from
144 | # urllib3/connection.py here because the HTTPSConnection will already have been
145 | # correctly set to either the Verified or Unverified form by that module. This
146 | # means the SOCKSHTTPSConnection will automatically be the correct type.
147 | class SOCKSHTTPSConnection(SOCKSConnection, HTTPSConnection):
148 |     pass
149 | 
150 | 
151 | class SOCKSHTTPConnectionPool(HTTPConnectionPool):
152 |     ConnectionCls = SOCKSConnection
153 | 
154 | 
155 | class SOCKSHTTPSConnectionPool(HTTPSConnectionPool):
156 |     ConnectionCls = SOCKSHTTPSConnection
157 | 
158 | 
159 | class SOCKSProxyManager(PoolManager):
160 |     """
161 |     A version of the urllib3 ProxyManager that routes connections via the
162 |     defined SOCKS proxy.
163 |     """
164 | 
165 |     pool_classes_by_scheme = {
166 |         "http": SOCKSHTTPConnectionPool,
167 |         "https": SOCKSHTTPSConnectionPool,
168 |     }
169 | 
170 |     def __init__(
171 |         self,
172 |         proxy_url,
173 |         username=None,
174 |         password=None,
175 |         num_pools=10,
176 |         headers=None,
177 |         **connection_pool_kw
178 |     ):
179 |         parsed = parse_url(proxy_url)
180 | 
181 |         if username is None and password is None and parsed.auth is not None:
182 |             split = parsed.auth.split(":")
183 |             if len(split) == 2:
184 |                 username, password = split
185 |         if parsed.scheme == "socks5":
186 |             socks_version = socks.PROXY_TYPE_SOCKS5
187 |             rdns = False
188 |         elif parsed.scheme == "socks5h":
189 |             socks_version = socks.PROXY_TYPE_SOCKS5
190 |             rdns = True
191 |         elif parsed.scheme == "socks4":
192 |             socks_version = socks.PROXY_TYPE_SOCKS4
193 |             rdns = False
194 |         elif parsed.scheme == "socks4a":
195 |             socks_version = socks.PROXY_TYPE_SOCKS4
196 |             rdns = True
197 |         else:
198 |             raise ValueError("Unable to determine SOCKS version from %s" % proxy_url)
199 | 
200 |         self.proxy_url = proxy_url
201 | 
202 |         socks_options = {
203 |             "socks_version": socks_version,
204 |             "proxy_host": parsed.host,
205 |             "proxy_port": parsed.port,
206 |             "username": username,
207 |             "password": password,
208 |             "rdns": rdns,
209 |         }
210 |         connection_pool_kw["_socks_options"] = socks_options
211 | 
212 |         super(SOCKSProxyManager, self).__init__(
213 |             num_pools, headers, **connection_pool_kw
214 |         )
215 | 
216 |         self.pool_classes_by_scheme = SOCKSProxyManager.pool_classes_by_scheme
217 | 
```
Page 24/168FirstPrevNextLast