#
tokens: 49574/50000 11/808 files (page 15/168)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 15 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/pip/_vendor/resolvelib/structs.py:
--------------------------------------------------------------------------------

```python
  1 | import itertools
  2 | 
  3 | from .compat import collections_abc
  4 | 
  5 | 
  6 | class DirectedGraph(object):
  7 |     """A graph structure with directed edges."""
  8 | 
  9 |     def __init__(self):
 10 |         self._vertices = set()
 11 |         self._forwards = {}  # <key> -> Set[<key>]
 12 |         self._backwards = {}  # <key> -> Set[<key>]
 13 | 
 14 |     def __iter__(self):
 15 |         return iter(self._vertices)
 16 | 
 17 |     def __len__(self):
 18 |         return len(self._vertices)
 19 | 
 20 |     def __contains__(self, key):
 21 |         return key in self._vertices
 22 | 
 23 |     def copy(self):
 24 |         """Return a shallow copy of this graph."""
 25 |         other = DirectedGraph()
 26 |         other._vertices = set(self._vertices)
 27 |         other._forwards = {k: set(v) for k, v in self._forwards.items()}
 28 |         other._backwards = {k: set(v) for k, v in self._backwards.items()}
 29 |         return other
 30 | 
 31 |     def add(self, key):
 32 |         """Add a new vertex to the graph."""
 33 |         if key in self._vertices:
 34 |             raise ValueError("vertex exists")
 35 |         self._vertices.add(key)
 36 |         self._forwards[key] = set()
 37 |         self._backwards[key] = set()
 38 | 
 39 |     def remove(self, key):
 40 |         """Remove a vertex from the graph, disconnecting all edges from/to it."""
 41 |         self._vertices.remove(key)
 42 |         for f in self._forwards.pop(key):
 43 |             self._backwards[f].remove(key)
 44 |         for t in self._backwards.pop(key):
 45 |             self._forwards[t].remove(key)
 46 | 
 47 |     def connected(self, f, t):
 48 |         return f in self._backwards[t] and t in self._forwards[f]
 49 | 
 50 |     def connect(self, f, t):
 51 |         """Connect two existing vertices.
 52 | 
 53 |         Nothing happens if the vertices are already connected.
 54 |         """
 55 |         if t not in self._vertices:
 56 |             raise KeyError(t)
 57 |         self._forwards[f].add(t)
 58 |         self._backwards[t].add(f)
 59 | 
 60 |     def iter_edges(self):
 61 |         for f, children in self._forwards.items():
 62 |             for t in children:
 63 |                 yield f, t
 64 | 
 65 |     def iter_children(self, key):
 66 |         return iter(self._forwards[key])
 67 | 
 68 |     def iter_parents(self, key):
 69 |         return iter(self._backwards[key])
 70 | 
 71 | 
 72 | class IteratorMapping(collections_abc.Mapping):
 73 |     def __init__(self, mapping, accessor, appends=None):
 74 |         self._mapping = mapping
 75 |         self._accessor = accessor
 76 |         self._appends = appends or {}
 77 | 
 78 |     def __repr__(self):
 79 |         return "IteratorMapping({!r}, {!r}, {!r})".format(
 80 |             self._mapping,
 81 |             self._accessor,
 82 |             self._appends,
 83 |         )
 84 | 
 85 |     def __bool__(self):
 86 |         return bool(self._mapping or self._appends)
 87 | 
 88 |     __nonzero__ = __bool__  # XXX: Python 2.
 89 | 
 90 |     def __contains__(self, key):
 91 |         return key in self._mapping or key in self._appends
 92 | 
 93 |     def __getitem__(self, k):
 94 |         try:
 95 |             v = self._mapping[k]
 96 |         except KeyError:
 97 |             return iter(self._appends[k])
 98 |         return itertools.chain(self._accessor(v), self._appends.get(k, ()))
 99 | 
100 |     def __iter__(self):
101 |         more = (k for k in self._appends if k not in self._mapping)
102 |         return itertools.chain(self._mapping, more)
103 | 
104 |     def __len__(self):
105 |         more = sum(1 for k in self._appends if k not in self._mapping)
106 |         return len(self._mapping) + more
107 | 
108 | 
109 | class _FactoryIterableView(object):
110 |     """Wrap an iterator factory returned by `find_matches()`.
111 | 
112 |     Calling `iter()` on this class would invoke the underlying iterator
113 |     factory, making it a "collection with ordering" that can be iterated
114 |     through multiple times, but lacks random access methods presented in
115 |     built-in Python sequence types.
116 |     """
117 | 
118 |     def __init__(self, factory):
119 |         self._factory = factory
120 |         self._iterable = None
121 | 
122 |     def __repr__(self):
123 |         return "{}({})".format(type(self).__name__, list(self))
124 | 
125 |     def __bool__(self):
126 |         try:
127 |             next(iter(self))
128 |         except StopIteration:
129 |             return False
130 |         return True
131 | 
132 |     __nonzero__ = __bool__  # XXX: Python 2.
133 | 
134 |     def __iter__(self):
135 |         iterable = (
136 |             self._factory() if self._iterable is None else self._iterable
137 |         )
138 |         self._iterable, current = itertools.tee(iterable)
139 |         return current
140 | 
141 | 
142 | class _SequenceIterableView(object):
143 |     """Wrap an iterable returned by find_matches().
144 | 
145 |     This is essentially just a proxy to the underlying sequence that provides
146 |     the same interface as `_FactoryIterableView`.
147 |     """
148 | 
149 |     def __init__(self, sequence):
150 |         self._sequence = sequence
151 | 
152 |     def __repr__(self):
153 |         return "{}({})".format(type(self).__name__, self._sequence)
154 | 
155 |     def __bool__(self):
156 |         return bool(self._sequence)
157 | 
158 |     __nonzero__ = __bool__  # XXX: Python 2.
159 | 
160 |     def __iter__(self):
161 |         return iter(self._sequence)
162 | 
163 | 
164 | def build_iter_view(matches):
165 |     """Build an iterable view from the value returned by `find_matches()`."""
166 |     if callable(matches):
167 |         return _FactoryIterableView(matches)
168 |     if not isinstance(matches, collections_abc.Sequence):
169 |         matches = list(matches)
170 |     return _SequenceIterableView(matches)
171 | 
```

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

```python
  1 | from typing import cast, List, Optional, Tuple, TYPE_CHECKING, Union
  2 | 
  3 | if TYPE_CHECKING:
  4 |     from .console import (
  5 |         Console,
  6 |         ConsoleOptions,
  7 |         RenderableType,
  8 |         RenderResult,
  9 |     )
 10 | from .jupyter import JupyterMixin
 11 | from .measure import Measurement
 12 | from .style import Style
 13 | from .segment import Segment
 14 | 
 15 | 
 16 | PaddingDimensions = Union[int, Tuple[int], Tuple[int, int], Tuple[int, int, int, int]]
 17 | 
 18 | 
 19 | class Padding(JupyterMixin):
 20 |     """Draw space around content.
 21 | 
 22 |     Example:
 23 |         >>> print(Padding("Hello", (2, 4), style="on blue"))
 24 | 
 25 |     Args:
 26 |         renderable (RenderableType): String or other renderable.
 27 |         pad (Union[int, Tuple[int]]): Padding for top, right, bottom, and left borders.
 28 |             May be specified with 1, 2, or 4 integers (CSS style).
 29 |         style (Union[str, Style], optional): Style for padding characters. Defaults to "none".
 30 |         expand (bool, optional): Expand padding to fit available width. Defaults to True.
 31 |     """
 32 | 
 33 |     def __init__(
 34 |         self,
 35 |         renderable: "RenderableType",
 36 |         pad: "PaddingDimensions" = (0, 0, 0, 0),
 37 |         *,
 38 |         style: Union[str, Style] = "none",
 39 |         expand: bool = True,
 40 |     ):
 41 |         self.renderable = renderable
 42 |         self.top, self.right, self.bottom, self.left = self.unpack(pad)
 43 |         self.style = style
 44 |         self.expand = expand
 45 | 
 46 |     @classmethod
 47 |     def indent(cls, renderable: "RenderableType", level: int) -> "Padding":
 48 |         """Make padding instance to render an indent.
 49 | 
 50 |         Args:
 51 |             renderable (RenderableType): String or other renderable.
 52 |             level (int): Number of characters to indent.
 53 | 
 54 |         Returns:
 55 |             Padding: A Padding instance.
 56 |         """
 57 | 
 58 |         return Padding(renderable, pad=(0, 0, 0, level), expand=False)
 59 | 
 60 |     @staticmethod
 61 |     def unpack(pad: "PaddingDimensions") -> Tuple[int, int, int, int]:
 62 |         """Unpack padding specified in CSS style."""
 63 |         if isinstance(pad, int):
 64 |             return (pad, pad, pad, pad)
 65 |         if len(pad) == 1:
 66 |             _pad = pad[0]
 67 |             return (_pad, _pad, _pad, _pad)
 68 |         if len(pad) == 2:
 69 |             pad_top, pad_right = cast(Tuple[int, int], pad)
 70 |             return (pad_top, pad_right, pad_top, pad_right)
 71 |         if len(pad) == 4:
 72 |             top, right, bottom, left = cast(Tuple[int, int, int, int], pad)
 73 |             return (top, right, bottom, left)
 74 |         raise ValueError(f"1, 2 or 4 integers required for padding; {len(pad)} given")
 75 | 
 76 |     def __repr__(self) -> str:
 77 |         return f"Padding({self.renderable!r}, ({self.top},{self.right},{self.bottom},{self.left}))"
 78 | 
 79 |     def __rich_console__(
 80 |         self, console: "Console", options: "ConsoleOptions"
 81 |     ) -> "RenderResult":
 82 |         style = console.get_style(self.style)
 83 |         if self.expand:
 84 |             width = options.max_width
 85 |         else:
 86 |             width = min(
 87 |                 Measurement.get(console, options, self.renderable).maximum
 88 |                 + self.left
 89 |                 + self.right,
 90 |                 options.max_width,
 91 |             )
 92 |         render_options = options.update_width(width - self.left - self.right)
 93 |         if render_options.height is not None:
 94 |             render_options = render_options.update_height(
 95 |                 height=render_options.height - self.top - self.bottom
 96 |             )
 97 |         lines = console.render_lines(
 98 |             self.renderable, render_options, style=style, pad=True
 99 |         )
100 |         _Segment = Segment
101 | 
102 |         left = _Segment(" " * self.left, style) if self.left else None
103 |         right = (
104 |             [_Segment(f'{" " * self.right}', style), _Segment.line()]
105 |             if self.right
106 |             else [_Segment.line()]
107 |         )
108 |         blank_line: Optional[List[Segment]] = None
109 |         if self.top:
110 |             blank_line = [_Segment(f'{" " * width}\n', style)]
111 |             yield from blank_line * self.top
112 |         if left:
113 |             for line in lines:
114 |                 yield left
115 |                 yield from line
116 |                 yield from right
117 |         else:
118 |             for line in lines:
119 |                 yield from line
120 |                 yield from right
121 |         if self.bottom:
122 |             blank_line = blank_line or [_Segment(f'{" " * width}\n', style)]
123 |             yield from blank_line * self.bottom
124 | 
125 |     def __rich_measure__(
126 |         self, console: "Console", options: "ConsoleOptions"
127 |     ) -> "Measurement":
128 |         max_width = options.max_width
129 |         extra_width = self.left + self.right
130 |         if max_width - extra_width < 1:
131 |             return Measurement(max_width, max_width)
132 |         measure_min, measure_max = Measurement.get(console, options, self.renderable)
133 |         measurement = Measurement(measure_min + extra_width, measure_max + extra_width)
134 |         measurement = measurement.with_maximum(max_width)
135 |         return measurement
136 | 
137 | 
138 | if __name__ == "__main__":  #  pragma: no cover
139 |     from pip._vendor.rich import print
140 | 
141 |     print(Padding("Hello, World", (2, 4), style="on blue"))
142 | 
```

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

```python
  1 | import hashlib
  2 | from typing import TYPE_CHECKING, BinaryIO, Dict, Iterable, List, NoReturn, Optional
  3 | 
  4 | from pip._internal.exceptions import HashMismatch, HashMissing, InstallationError
  5 | from pip._internal.utils.misc import read_chunks
  6 | 
  7 | if TYPE_CHECKING:
  8 |     from hashlib import _Hash
  9 | 
 10 | 
 11 | # The recommended hash algo of the moment. Change this whenever the state of
 12 | # the art changes; it won't hurt backward compatibility.
 13 | FAVORITE_HASH = "sha256"
 14 | 
 15 | 
 16 | # Names of hashlib algorithms allowed by the --hash option and ``pip hash``
 17 | # Currently, those are the ones at least as collision-resistant as sha256.
 18 | STRONG_HASHES = ["sha256", "sha384", "sha512"]
 19 | 
 20 | 
 21 | class Hashes:
 22 |     """A wrapper that builds multiple hashes at once and checks them against
 23 |     known-good values
 24 | 
 25 |     """
 26 | 
 27 |     def __init__(self, hashes: Optional[Dict[str, List[str]]] = None) -> None:
 28 |         """
 29 |         :param hashes: A dict of algorithm names pointing to lists of allowed
 30 |             hex digests
 31 |         """
 32 |         allowed = {}
 33 |         if hashes is not None:
 34 |             for alg, keys in hashes.items():
 35 |                 # Make sure values are always sorted (to ease equality checks)
 36 |                 allowed[alg] = [k.lower() for k in sorted(keys)]
 37 |         self._allowed = allowed
 38 | 
 39 |     def __and__(self, other: "Hashes") -> "Hashes":
 40 |         if not isinstance(other, Hashes):
 41 |             return NotImplemented
 42 | 
 43 |         # If either of the Hashes object is entirely empty (i.e. no hash
 44 |         # specified at all), all hashes from the other object are allowed.
 45 |         if not other:
 46 |             return self
 47 |         if not self:
 48 |             return other
 49 | 
 50 |         # Otherwise only hashes that present in both objects are allowed.
 51 |         new = {}
 52 |         for alg, values in other._allowed.items():
 53 |             if alg not in self._allowed:
 54 |                 continue
 55 |             new[alg] = [v for v in values if v in self._allowed[alg]]
 56 |         return Hashes(new)
 57 | 
 58 |     @property
 59 |     def digest_count(self) -> int:
 60 |         return sum(len(digests) for digests in self._allowed.values())
 61 | 
 62 |     def is_hash_allowed(self, hash_name: str, hex_digest: str) -> bool:
 63 |         """Return whether the given hex digest is allowed."""
 64 |         return hex_digest in self._allowed.get(hash_name, [])
 65 | 
 66 |     def check_against_chunks(self, chunks: Iterable[bytes]) -> None:
 67 |         """Check good hashes against ones built from iterable of chunks of
 68 |         data.
 69 | 
 70 |         Raise HashMismatch if none match.
 71 | 
 72 |         """
 73 |         gots = {}
 74 |         for hash_name in self._allowed.keys():
 75 |             try:
 76 |                 gots[hash_name] = hashlib.new(hash_name)
 77 |             except (ValueError, TypeError):
 78 |                 raise InstallationError(f"Unknown hash name: {hash_name}")
 79 | 
 80 |         for chunk in chunks:
 81 |             for hash in gots.values():
 82 |                 hash.update(chunk)
 83 | 
 84 |         for hash_name, got in gots.items():
 85 |             if got.hexdigest() in self._allowed[hash_name]:
 86 |                 return
 87 |         self._raise(gots)
 88 | 
 89 |     def _raise(self, gots: Dict[str, "_Hash"]) -> "NoReturn":
 90 |         raise HashMismatch(self._allowed, gots)
 91 | 
 92 |     def check_against_file(self, file: BinaryIO) -> None:
 93 |         """Check good hashes against a file-like object
 94 | 
 95 |         Raise HashMismatch if none match.
 96 | 
 97 |         """
 98 |         return self.check_against_chunks(read_chunks(file))
 99 | 
100 |     def check_against_path(self, path: str) -> None:
101 |         with open(path, "rb") as file:
102 |             return self.check_against_file(file)
103 | 
104 |     def has_one_of(self, hashes: Dict[str, str]) -> bool:
105 |         """Return whether any of the given hashes are allowed."""
106 |         for hash_name, hex_digest in hashes.items():
107 |             if self.is_hash_allowed(hash_name, hex_digest):
108 |                 return True
109 |         return False
110 | 
111 |     def __bool__(self) -> bool:
112 |         """Return whether I know any known-good hashes."""
113 |         return bool(self._allowed)
114 | 
115 |     def __eq__(self, other: object) -> bool:
116 |         if not isinstance(other, Hashes):
117 |             return NotImplemented
118 |         return self._allowed == other._allowed
119 | 
120 |     def __hash__(self) -> int:
121 |         return hash(
122 |             ",".join(
123 |                 sorted(
124 |                     ":".join((alg, digest))
125 |                     for alg, digest_list in self._allowed.items()
126 |                     for digest in digest_list
127 |                 )
128 |             )
129 |         )
130 | 
131 | 
132 | class MissingHashes(Hashes):
133 |     """A workalike for Hashes used when we're missing a hash for a requirement
134 | 
135 |     It computes the actual hash of the requirement and raises a HashMissing
136 |     exception showing it to the user.
137 | 
138 |     """
139 | 
140 |     def __init__(self) -> None:
141 |         """Don't offer the ``hashes`` kwarg."""
142 |         # Pass our favorite hash in to generate a "gotten hash". With the
143 |         # empty list, it will never match, so an error will always raise.
144 |         super().__init__(hashes={FAVORITE_HASH: []})
145 | 
146 |     def _raise(self, gots: Dict[str, "_Hash"]) -> "NoReturn":
147 |         raise HashMissing(gots[FAVORITE_HASH].hexdigest())
148 | 
```

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

```python
  1 | """
  2 |     pygments.formatters.irc
  3 |     ~~~~~~~~~~~~~~~~~~~~~~~
  4 | 
  5 |     Formatter for IRC output
  6 | 
  7 |     :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
  8 |     :license: BSD, see LICENSE for details.
  9 | """
 10 | 
 11 | from pip._vendor.pygments.formatter import Formatter
 12 | from pip._vendor.pygments.token import Keyword, Name, Comment, String, Error, \
 13 |     Number, Operator, Generic, Token, Whitespace
 14 | from pip._vendor.pygments.util import get_choice_opt
 15 | 
 16 | 
 17 | __all__ = ['IRCFormatter']
 18 | 
 19 | 
 20 | #: Map token types to a tuple of color values for light and dark
 21 | #: backgrounds.
 22 | IRC_COLORS = {
 23 |     Token:              ('',            ''),
 24 | 
 25 |     Whitespace:         ('gray',   'brightblack'),
 26 |     Comment:            ('gray',   'brightblack'),
 27 |     Comment.Preproc:    ('cyan',        'brightcyan'),
 28 |     Keyword:            ('blue',    'brightblue'),
 29 |     Keyword.Type:       ('cyan',        'brightcyan'),
 30 |     Operator.Word:      ('magenta',      'brightcyan'),
 31 |     Name.Builtin:       ('cyan',        'brightcyan'),
 32 |     Name.Function:      ('green',   'brightgreen'),
 33 |     Name.Namespace:     ('_cyan_',      '_brightcyan_'),
 34 |     Name.Class:         ('_green_', '_brightgreen_'),
 35 |     Name.Exception:     ('cyan',        'brightcyan'),
 36 |     Name.Decorator:     ('brightblack',    'gray'),
 37 |     Name.Variable:      ('red',     'brightred'),
 38 |     Name.Constant:      ('red',     'brightred'),
 39 |     Name.Attribute:     ('cyan',        'brightcyan'),
 40 |     Name.Tag:           ('brightblue',        'brightblue'),
 41 |     String:             ('yellow',       'yellow'),
 42 |     Number:             ('blue',    'brightblue'),
 43 | 
 44 |     Generic.Deleted:    ('brightred',        'brightred'),
 45 |     Generic.Inserted:   ('green',  'brightgreen'),
 46 |     Generic.Heading:    ('**',         '**'),
 47 |     Generic.Subheading: ('*magenta*',   '*brightmagenta*'),
 48 |     Generic.Error:      ('brightred',        'brightred'),
 49 | 
 50 |     Error:              ('_brightred_',      '_brightred_'),
 51 | }
 52 | 
 53 | 
 54 | IRC_COLOR_MAP = {
 55 |     'white': 0,
 56 |     'black': 1,
 57 |     'blue': 2,
 58 |     'brightgreen': 3,
 59 |     'brightred': 4,
 60 |     'yellow': 5,
 61 |     'magenta': 6,
 62 |     'orange': 7,
 63 |     'green': 7, #compat w/ ansi
 64 |     'brightyellow': 8,
 65 |     'lightgreen': 9,
 66 |     'brightcyan': 9, # compat w/ ansi
 67 |     'cyan': 10,
 68 |     'lightblue': 11,
 69 |     'red': 11, # compat w/ ansi
 70 |     'brightblue': 12,
 71 |     'brightmagenta': 13,
 72 |     'brightblack': 14,
 73 |     'gray': 15,
 74 | }
 75 | 
 76 | def ircformat(color, text):
 77 |     if len(color) < 1:
 78 |         return text
 79 |     add = sub = ''
 80 |     if '_' in color: # italic
 81 |         add += '\x1D'
 82 |         sub = '\x1D' + sub
 83 |         color = color.strip('_')
 84 |     if '*' in color: # bold
 85 |         add += '\x02'
 86 |         sub = '\x02' + sub
 87 |         color = color.strip('*')
 88 |     # underline (\x1F) not supported
 89 |     # backgrounds (\x03FF,BB) not supported
 90 |     if len(color) > 0: # actual color - may have issues with ircformat("red", "blah")+"10" type stuff
 91 |         add += '\x03' + str(IRC_COLOR_MAP[color]).zfill(2)
 92 |         sub = '\x03' + sub
 93 |     return add + text + sub
 94 |     return '<'+add+'>'+text+'</'+sub+'>'
 95 | 
 96 | 
 97 | class IRCFormatter(Formatter):
 98 |     r"""
 99 |     Format tokens with IRC color sequences
100 | 
101 |     The `get_style_defs()` method doesn't do anything special since there is
102 |     no support for common styles.
103 | 
104 |     Options accepted:
105 | 
106 |     `bg`
107 |         Set to ``"light"`` or ``"dark"`` depending on the terminal's background
108 |         (default: ``"light"``).
109 | 
110 |     `colorscheme`
111 |         A dictionary mapping token types to (lightbg, darkbg) color names or
112 |         ``None`` (default: ``None`` = use builtin colorscheme).
113 | 
114 |     `linenos`
115 |         Set to ``True`` to have line numbers in the output as well
116 |         (default: ``False`` = no line numbers).
117 |     """
118 |     name = 'IRC'
119 |     aliases = ['irc', 'IRC']
120 |     filenames = []
121 | 
122 |     def __init__(self, **options):
123 |         Formatter.__init__(self, **options)
124 |         self.darkbg = get_choice_opt(options, 'bg',
125 |                                      ['light', 'dark'], 'light') == 'dark'
126 |         self.colorscheme = options.get('colorscheme', None) or IRC_COLORS
127 |         self.linenos = options.get('linenos', False)
128 |         self._lineno = 0
129 | 
130 |     def _write_lineno(self, outfile):
131 |         if self.linenos:
132 |             self._lineno += 1
133 |             outfile.write("%04d: " % self._lineno)
134 | 
135 |     def format_unencoded(self, tokensource, outfile):
136 |         self._write_lineno(outfile)
137 | 
138 |         for ttype, value in tokensource:
139 |             color = self.colorscheme.get(ttype)
140 |             while color is None:
141 |                 ttype = ttype[:-1]
142 |                 color = self.colorscheme.get(ttype)
143 |             if color:
144 |                 color = color[self.darkbg]
145 |                 spl = value.split('\n')
146 |                 for line in spl[:-1]:
147 |                     if line:
148 |                         outfile.write(ircformat(color, line))
149 |                     outfile.write('\n')
150 |                     self._write_lineno(outfile)
151 |                 if spl[-1]:
152 |                     outfile.write(ircformat(color, spl[-1]))
153 |             else:
154 |                 outfile.write(value)
155 | 
```

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

```
  1 | /*
  2 |  * Summary: unfinished XLink detection module
  3 |  * Description: unfinished XLink detection module
  4 |  *
  5 |  * Copy: See Copyright for the status of this software.
  6 |  *
  7 |  * Author: Daniel Veillard
  8 |  */
  9 | 
 10 | #ifndef __XML_XLINK_H__
 11 | #define __XML_XLINK_H__
 12 | 
 13 | #include <libxml/xmlversion.h>
 14 | #include <libxml/tree.h>
 15 | 
 16 | #ifdef LIBXML_XPTR_ENABLED
 17 | 
 18 | #ifdef __cplusplus
 19 | extern "C" {
 20 | #endif
 21 | 
 22 | /**
 23 |  * Various defines for the various Link properties.
 24 |  *
 25 |  * NOTE: the link detection layer will try to resolve QName expansion
 26 |  *       of namespaces. If "foo" is the prefix for "http://foo.com/"
 27 |  *       then the link detection layer will expand role="foo:myrole"
 28 |  *       to "http://foo.com/:myrole".
 29 |  * NOTE: the link detection layer will expand URI-References found on
 30 |  *       href attributes by using the base mechanism if found.
 31 |  */
 32 | typedef xmlChar *xlinkHRef;
 33 | typedef xmlChar *xlinkRole;
 34 | typedef xmlChar *xlinkTitle;
 35 | 
 36 | typedef enum {
 37 |     XLINK_TYPE_NONE = 0,
 38 |     XLINK_TYPE_SIMPLE,
 39 |     XLINK_TYPE_EXTENDED,
 40 |     XLINK_TYPE_EXTENDED_SET
 41 | } xlinkType;
 42 | 
 43 | typedef enum {
 44 |     XLINK_SHOW_NONE = 0,
 45 |     XLINK_SHOW_NEW,
 46 |     XLINK_SHOW_EMBED,
 47 |     XLINK_SHOW_REPLACE
 48 | } xlinkShow;
 49 | 
 50 | typedef enum {
 51 |     XLINK_ACTUATE_NONE = 0,
 52 |     XLINK_ACTUATE_AUTO,
 53 |     XLINK_ACTUATE_ONREQUEST
 54 | } xlinkActuate;
 55 | 
 56 | /**
 57 |  * xlinkNodeDetectFunc:
 58 |  * @ctx:  user data pointer
 59 |  * @node:  the node to check
 60 |  *
 61 |  * This is the prototype for the link detection routine.
 62 |  * It calls the default link detection callbacks upon link detection.
 63 |  */
 64 | typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNodePtr node);
 65 | 
 66 | /*
 67 |  * The link detection module interact with the upper layers using
 68 |  * a set of callback registered at parsing time.
 69 |  */
 70 | 
 71 | /**
 72 |  * xlinkSimpleLinkFunk:
 73 |  * @ctx:  user data pointer
 74 |  * @node:  the node carrying the link
 75 |  * @href:  the target of the link
 76 |  * @role:  the role string
 77 |  * @title:  the link title
 78 |  *
 79 |  * This is the prototype for a simple link detection callback.
 80 |  */
 81 | typedef void
 82 | (*xlinkSimpleLinkFunk)	(void *ctx,
 83 | 			 xmlNodePtr node,
 84 | 			 const xlinkHRef href,
 85 | 			 const xlinkRole role,
 86 | 			 const xlinkTitle title);
 87 | 
 88 | /**
 89 |  * xlinkExtendedLinkFunk:
 90 |  * @ctx:  user data pointer
 91 |  * @node:  the node carrying the link
 92 |  * @nbLocators: the number of locators detected on the link
 93 |  * @hrefs:  pointer to the array of locator hrefs
 94 |  * @roles:  pointer to the array of locator roles
 95 |  * @nbArcs: the number of arcs detected on the link
 96 |  * @from:  pointer to the array of source roles found on the arcs
 97 |  * @to:  pointer to the array of target roles found on the arcs
 98 |  * @show:  array of values for the show attributes found on the arcs
 99 |  * @actuate:  array of values for the actuate attributes found on the arcs
100 |  * @nbTitles: the number of titles detected on the link
101 |  * @title:  array of titles detected on the link
102 |  * @langs:  array of xml:lang values for the titles
103 |  *
104 |  * This is the prototype for a extended link detection callback.
105 |  */
106 | typedef void
107 | (*xlinkExtendedLinkFunk)(void *ctx,
108 | 			 xmlNodePtr node,
109 | 			 int nbLocators,
110 | 			 const xlinkHRef *hrefs,
111 | 			 const xlinkRole *roles,
112 | 			 int nbArcs,
113 | 			 const xlinkRole *from,
114 | 			 const xlinkRole *to,
115 | 			 xlinkShow *show,
116 | 			 xlinkActuate *actuate,
117 | 			 int nbTitles,
118 | 			 const xlinkTitle *titles,
119 | 			 const xmlChar **langs);
120 | 
121 | /**
122 |  * xlinkExtendedLinkSetFunk:
123 |  * @ctx:  user data pointer
124 |  * @node:  the node carrying the link
125 |  * @nbLocators: the number of locators detected on the link
126 |  * @hrefs:  pointer to the array of locator hrefs
127 |  * @roles:  pointer to the array of locator roles
128 |  * @nbTitles: the number of titles detected on the link
129 |  * @title:  array of titles detected on the link
130 |  * @langs:  array of xml:lang values for the titles
131 |  *
132 |  * This is the prototype for a extended link set detection callback.
133 |  */
134 | typedef void
135 | (*xlinkExtendedLinkSetFunk)	(void *ctx,
136 | 				 xmlNodePtr node,
137 | 				 int nbLocators,
138 | 				 const xlinkHRef *hrefs,
139 | 				 const xlinkRole *roles,
140 | 				 int nbTitles,
141 | 				 const xlinkTitle *titles,
142 | 				 const xmlChar **langs);
143 | 
144 | /**
145 |  * This is the structure containing a set of Links detection callbacks.
146 |  *
147 |  * There is no default xlink callbacks, if one want to get link
148 |  * recognition activated, those call backs must be provided before parsing.
149 |  */
150 | typedef struct _xlinkHandler xlinkHandler;
151 | typedef xlinkHandler *xlinkHandlerPtr;
152 | struct _xlinkHandler {
153 |     xlinkSimpleLinkFunk simple;
154 |     xlinkExtendedLinkFunk extended;
155 |     xlinkExtendedLinkSetFunk set;
156 | };
157 | 
158 | /*
159 |  * The default detection routine, can be overridden, they call the default
160 |  * detection callbacks.
161 |  */
162 | 
163 | XMLPUBFUN xlinkNodeDetectFunc
164 | 		xlinkGetDefaultDetect	(void);
165 | XMLPUBFUN void
166 | 		xlinkSetDefaultDetect	(xlinkNodeDetectFunc func);
167 | 
168 | /*
169 |  * Routines to set/get the default handlers.
170 |  */
171 | XMLPUBFUN xlinkHandlerPtr
172 | 		xlinkGetDefaultHandler	(void);
173 | XMLPUBFUN void
174 | 		xlinkSetDefaultHandler	(xlinkHandlerPtr handler);
175 | 
176 | /*
177 |  * Link detection module itself.
178 |  */
179 | XMLPUBFUN xlinkType
180 | 		xlinkIsLink		(xmlDocPtr doc,
181 | 					 xmlNodePtr node);
182 | 
183 | #ifdef __cplusplus
184 | }
185 | #endif
186 | 
187 | #endif /* LIBXML_XPTR_ENABLED */
188 | 
189 | #endif /* __XML_XLINK_H__ */
190 | 
```

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

```python
  1 | from dataclasses import dataclass
  2 | from typing import FrozenSet, Iterable, Optional, Tuple
  3 | 
  4 | from pip._vendor.packaging.specifiers import SpecifierSet
  5 | from pip._vendor.packaging.utils import NormalizedName
  6 | from pip._vendor.packaging.version import Version
  7 | 
  8 | from pip._internal.models.link import Link, links_equivalent
  9 | from pip._internal.req.req_install import InstallRequirement
 10 | from pip._internal.utils.hashes import Hashes
 11 | 
 12 | CandidateLookup = Tuple[Optional["Candidate"], Optional[InstallRequirement]]
 13 | 
 14 | 
 15 | def format_name(project: NormalizedName, extras: FrozenSet[NormalizedName]) -> str:
 16 |     if not extras:
 17 |         return project
 18 |     extras_expr = ",".join(sorted(extras))
 19 |     return f"{project}[{extras_expr}]"
 20 | 
 21 | 
 22 | @dataclass(frozen=True)
 23 | class Constraint:
 24 |     specifier: SpecifierSet
 25 |     hashes: Hashes
 26 |     links: FrozenSet[Link]
 27 | 
 28 |     @classmethod
 29 |     def empty(cls) -> "Constraint":
 30 |         return Constraint(SpecifierSet(), Hashes(), frozenset())
 31 | 
 32 |     @classmethod
 33 |     def from_ireq(cls, ireq: InstallRequirement) -> "Constraint":
 34 |         links = frozenset([ireq.link]) if ireq.link else frozenset()
 35 |         return Constraint(ireq.specifier, ireq.hashes(trust_internet=False), links)
 36 | 
 37 |     def __bool__(self) -> bool:
 38 |         return bool(self.specifier) or bool(self.hashes) or bool(self.links)
 39 | 
 40 |     def __and__(self, other: InstallRequirement) -> "Constraint":
 41 |         if not isinstance(other, InstallRequirement):
 42 |             return NotImplemented
 43 |         specifier = self.specifier & other.specifier
 44 |         hashes = self.hashes & other.hashes(trust_internet=False)
 45 |         links = self.links
 46 |         if other.link:
 47 |             links = links.union([other.link])
 48 |         return Constraint(specifier, hashes, links)
 49 | 
 50 |     def is_satisfied_by(self, candidate: "Candidate") -> bool:
 51 |         # Reject if there are any mismatched URL constraints on this package.
 52 |         if self.links and not all(_match_link(link, candidate) for link in self.links):
 53 |             return False
 54 |         # We can safely always allow prereleases here since PackageFinder
 55 |         # already implements the prerelease logic, and would have filtered out
 56 |         # prerelease candidates if the user does not expect them.
 57 |         return self.specifier.contains(candidate.version, prereleases=True)
 58 | 
 59 | 
 60 | class Requirement:
 61 |     @property
 62 |     def project_name(self) -> NormalizedName:
 63 |         """The "project name" of a requirement.
 64 | 
 65 |         This is different from ``name`` if this requirement contains extras,
 66 |         in which case ``name`` would contain the ``[...]`` part, while this
 67 |         refers to the name of the project.
 68 |         """
 69 |         raise NotImplementedError("Subclass should override")
 70 | 
 71 |     @property
 72 |     def name(self) -> str:
 73 |         """The name identifying this requirement in the resolver.
 74 | 
 75 |         This is different from ``project_name`` if this requirement contains
 76 |         extras, where ``project_name`` would not contain the ``[...]`` part.
 77 |         """
 78 |         raise NotImplementedError("Subclass should override")
 79 | 
 80 |     def is_satisfied_by(self, candidate: "Candidate") -> bool:
 81 |         return False
 82 | 
 83 |     def get_candidate_lookup(self) -> CandidateLookup:
 84 |         raise NotImplementedError("Subclass should override")
 85 | 
 86 |     def format_for_error(self) -> str:
 87 |         raise NotImplementedError("Subclass should override")
 88 | 
 89 | 
 90 | def _match_link(link: Link, candidate: "Candidate") -> bool:
 91 |     if candidate.source_link:
 92 |         return links_equivalent(link, candidate.source_link)
 93 |     return False
 94 | 
 95 | 
 96 | class Candidate:
 97 |     @property
 98 |     def project_name(self) -> NormalizedName:
 99 |         """The "project name" of the candidate.
100 | 
101 |         This is different from ``name`` if this candidate contains extras,
102 |         in which case ``name`` would contain the ``[...]`` part, while this
103 |         refers to the name of the project.
104 |         """
105 |         raise NotImplementedError("Override in subclass")
106 | 
107 |     @property
108 |     def name(self) -> str:
109 |         """The name identifying this candidate in the resolver.
110 | 
111 |         This is different from ``project_name`` if this candidate contains
112 |         extras, where ``project_name`` would not contain the ``[...]`` part.
113 |         """
114 |         raise NotImplementedError("Override in subclass")
115 | 
116 |     @property
117 |     def version(self) -> Version:
118 |         raise NotImplementedError("Override in subclass")
119 | 
120 |     @property
121 |     def is_installed(self) -> bool:
122 |         raise NotImplementedError("Override in subclass")
123 | 
124 |     @property
125 |     def is_editable(self) -> bool:
126 |         raise NotImplementedError("Override in subclass")
127 | 
128 |     @property
129 |     def source_link(self) -> Optional[Link]:
130 |         raise NotImplementedError("Override in subclass")
131 | 
132 |     def iter_dependencies(self, with_requires: bool) -> Iterable[Optional[Requirement]]:
133 |         raise NotImplementedError("Override in subclass")
134 | 
135 |     def get_install_requirement(self) -> Optional[InstallRequirement]:
136 |         raise NotImplementedError("Override in subclass")
137 | 
138 |     def format_for_error(self) -> str:
139 |         raise NotImplementedError("Subclass should override")
140 | 
```

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

```python
  1 | from pathlib import Path
  2 | from json import loads, dumps
  3 | from typing import Any, Callable, Optional, Union
  4 | 
  5 | from .text import Text
  6 | from .highlighter import JSONHighlighter, NullHighlighter
  7 | 
  8 | 
  9 | class JSON:
 10 |     """A renderable which pretty prints JSON.
 11 | 
 12 |     Args:
 13 |         json (str): JSON encoded data.
 14 |         indent (Union[None, int, str], optional): Number of characters to indent by. Defaults to 2.
 15 |         highlight (bool, optional): Enable highlighting. Defaults to True.
 16 |         skip_keys (bool, optional): Skip keys not of a basic type. Defaults to False.
 17 |         ensure_ascii (bool, optional): Escape all non-ascii characters. Defaults to False.
 18 |         check_circular (bool, optional): Check for circular references. Defaults to True.
 19 |         allow_nan (bool, optional): Allow NaN and Infinity values. Defaults to True.
 20 |         default (Callable, optional): A callable that converts values that can not be encoded
 21 |             in to something that can be JSON encoded. Defaults to None.
 22 |         sort_keys (bool, optional): Sort dictionary keys. Defaults to False.
 23 |     """
 24 | 
 25 |     def __init__(
 26 |         self,
 27 |         json: str,
 28 |         indent: Union[None, int, str] = 2,
 29 |         highlight: bool = True,
 30 |         skip_keys: bool = False,
 31 |         ensure_ascii: bool = False,
 32 |         check_circular: bool = True,
 33 |         allow_nan: bool = True,
 34 |         default: Optional[Callable[[Any], Any]] = None,
 35 |         sort_keys: bool = False,
 36 |     ) -> None:
 37 |         data = loads(json)
 38 |         json = dumps(
 39 |             data,
 40 |             indent=indent,
 41 |             skipkeys=skip_keys,
 42 |             ensure_ascii=ensure_ascii,
 43 |             check_circular=check_circular,
 44 |             allow_nan=allow_nan,
 45 |             default=default,
 46 |             sort_keys=sort_keys,
 47 |         )
 48 |         highlighter = JSONHighlighter() if highlight else NullHighlighter()
 49 |         self.text = highlighter(json)
 50 |         self.text.no_wrap = True
 51 |         self.text.overflow = None
 52 | 
 53 |     @classmethod
 54 |     def from_data(
 55 |         cls,
 56 |         data: Any,
 57 |         indent: Union[None, int, str] = 2,
 58 |         highlight: bool = True,
 59 |         skip_keys: bool = False,
 60 |         ensure_ascii: bool = False,
 61 |         check_circular: bool = True,
 62 |         allow_nan: bool = True,
 63 |         default: Optional[Callable[[Any], Any]] = None,
 64 |         sort_keys: bool = False,
 65 |     ) -> "JSON":
 66 |         """Encodes a JSON object from arbitrary data.
 67 | 
 68 |         Args:
 69 |             data (Any): An object that may be encoded in to JSON
 70 |             indent (Union[None, int, str], optional): Number of characters to indent by. Defaults to 2.
 71 |             highlight (bool, optional): Enable highlighting. Defaults to True.
 72 |             default (Callable, optional): Optional callable which will be called for objects that cannot be serialized. Defaults to None.
 73 |             skip_keys (bool, optional): Skip keys not of a basic type. Defaults to False.
 74 |             ensure_ascii (bool, optional): Escape all non-ascii characters. Defaults to False.
 75 |             check_circular (bool, optional): Check for circular references. Defaults to True.
 76 |             allow_nan (bool, optional): Allow NaN and Infinity values. Defaults to True.
 77 |             default (Callable, optional): A callable that converts values that can not be encoded
 78 |                 in to something that can be JSON encoded. Defaults to None.
 79 |             sort_keys (bool, optional): Sort dictionary keys. Defaults to False.
 80 | 
 81 |         Returns:
 82 |             JSON: New JSON object from the given data.
 83 |         """
 84 |         json_instance: "JSON" = cls.__new__(cls)
 85 |         json = dumps(
 86 |             data,
 87 |             indent=indent,
 88 |             skipkeys=skip_keys,
 89 |             ensure_ascii=ensure_ascii,
 90 |             check_circular=check_circular,
 91 |             allow_nan=allow_nan,
 92 |             default=default,
 93 |             sort_keys=sort_keys,
 94 |         )
 95 |         highlighter = JSONHighlighter() if highlight else NullHighlighter()
 96 |         json_instance.text = highlighter(json)
 97 |         json_instance.text.no_wrap = True
 98 |         json_instance.text.overflow = None
 99 |         return json_instance
100 | 
101 |     def __rich__(self) -> Text:
102 |         return self.text
103 | 
104 | 
105 | if __name__ == "__main__":
106 |     import argparse
107 |     import sys
108 | 
109 |     parser = argparse.ArgumentParser(description="Pretty print json")
110 |     parser.add_argument(
111 |         "path",
112 |         metavar="PATH",
113 |         help="path to file, or - for stdin",
114 |     )
115 |     parser.add_argument(
116 |         "-i",
117 |         "--indent",
118 |         metavar="SPACES",
119 |         type=int,
120 |         help="Number of spaces in an indent",
121 |         default=2,
122 |     )
123 |     args = parser.parse_args()
124 | 
125 |     from pip._vendor.rich.console import Console
126 | 
127 |     console = Console()
128 |     error_console = Console(stderr=True)
129 | 
130 |     try:
131 |         if args.path == "-":
132 |             json_data = sys.stdin.read()
133 |         else:
134 |             json_data = Path(args.path).read_text()
135 |     except Exception as error:
136 |         error_console.print(f"Unable to read {args.path!r}; {error}")
137 |         sys.exit(-1)
138 | 
139 |     console.print(JSON(json_data, indent=args.indent), soft_wrap=True)
140 | 
```

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

```python
  1 | """
  2 |     pygments.formatters.other
  3 |     ~~~~~~~~~~~~~~~~~~~~~~~~~
  4 | 
  5 |     Other formatters: NullFormatter, RawTokenFormatter.
  6 | 
  7 |     :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
  8 |     :license: BSD, see LICENSE for details.
  9 | """
 10 | 
 11 | from pip._vendor.pygments.formatter import Formatter
 12 | from pip._vendor.pygments.util import get_choice_opt
 13 | from pip._vendor.pygments.token import Token
 14 | from pip._vendor.pygments.console import colorize
 15 | 
 16 | __all__ = ['NullFormatter', 'RawTokenFormatter', 'TestcaseFormatter']
 17 | 
 18 | 
 19 | class NullFormatter(Formatter):
 20 |     """
 21 |     Output the text unchanged without any formatting.
 22 |     """
 23 |     name = 'Text only'
 24 |     aliases = ['text', 'null']
 25 |     filenames = ['*.txt']
 26 | 
 27 |     def format(self, tokensource, outfile):
 28 |         enc = self.encoding
 29 |         for ttype, value in tokensource:
 30 |             if enc:
 31 |                 outfile.write(value.encode(enc))
 32 |             else:
 33 |                 outfile.write(value)
 34 | 
 35 | 
 36 | class RawTokenFormatter(Formatter):
 37 |     r"""
 38 |     Format tokens as a raw representation for storing token streams.
 39 | 
 40 |     The format is ``tokentype<TAB>repr(tokenstring)\n``. The output can later
 41 |     be converted to a token stream with the `RawTokenLexer`, described in the
 42 |     :doc:`lexer list <lexers>`.
 43 | 
 44 |     Only two options are accepted:
 45 | 
 46 |     `compress`
 47 |         If set to ``'gz'`` or ``'bz2'``, compress the output with the given
 48 |         compression algorithm after encoding (default: ``''``).
 49 |     `error_color`
 50 |         If set to a color name, highlight error tokens using that color.  If
 51 |         set but with no value, defaults to ``'red'``.
 52 | 
 53 |         .. versionadded:: 0.11
 54 | 
 55 |     """
 56 |     name = 'Raw tokens'
 57 |     aliases = ['raw', 'tokens']
 58 |     filenames = ['*.raw']
 59 | 
 60 |     unicodeoutput = False
 61 | 
 62 |     def __init__(self, **options):
 63 |         Formatter.__init__(self, **options)
 64 |         # We ignore self.encoding if it is set, since it gets set for lexer
 65 |         # and formatter if given with -Oencoding on the command line.
 66 |         # The RawTokenFormatter outputs only ASCII. Override here.
 67 |         self.encoding = 'ascii'  # let pygments.format() do the right thing
 68 |         self.compress = get_choice_opt(options, 'compress',
 69 |                                        ['', 'none', 'gz', 'bz2'], '')
 70 |         self.error_color = options.get('error_color', None)
 71 |         if self.error_color is True:
 72 |             self.error_color = 'red'
 73 |         if self.error_color is not None:
 74 |             try:
 75 |                 colorize(self.error_color, '')
 76 |             except KeyError:
 77 |                 raise ValueError(f"Invalid color {self.error_color!r} specified")
 78 | 
 79 |     def format(self, tokensource, outfile):
 80 |         try:
 81 |             outfile.write(b'')
 82 |         except TypeError:
 83 |             raise TypeError('The raw tokens formatter needs a binary '
 84 |                             'output file')
 85 |         if self.compress == 'gz':
 86 |             import gzip
 87 |             outfile = gzip.GzipFile('', 'wb', 9, outfile)
 88 | 
 89 |             write = outfile.write
 90 |             flush = outfile.close
 91 |         elif self.compress == 'bz2':
 92 |             import bz2
 93 |             compressor = bz2.BZ2Compressor(9)
 94 | 
 95 |             def write(text):
 96 |                 outfile.write(compressor.compress(text))
 97 | 
 98 |             def flush():
 99 |                 outfile.write(compressor.flush())
100 |                 outfile.flush()
101 |         else:
102 |             write = outfile.write
103 |             flush = outfile.flush
104 | 
105 |         if self.error_color:
106 |             for ttype, value in tokensource:
107 |                 line = b"%r\t%r\n" % (ttype, value)
108 |                 if ttype is Token.Error:
109 |                     write(colorize(self.error_color, line))
110 |                 else:
111 |                     write(line)
112 |         else:
113 |             for ttype, value in tokensource:
114 |                 write(b"%r\t%r\n" % (ttype, value))
115 |         flush()
116 | 
117 | 
118 | TESTCASE_BEFORE = '''\
119 |     def testNeedsName(lexer):
120 |         fragment = %r
121 |         tokens = [
122 | '''
123 | TESTCASE_AFTER = '''\
124 |         ]
125 |         assert list(lexer.get_tokens(fragment)) == tokens
126 | '''
127 | 
128 | 
129 | class TestcaseFormatter(Formatter):
130 |     """
131 |     Format tokens as appropriate for a new testcase.
132 | 
133 |     .. versionadded:: 2.0
134 |     """
135 |     name = 'Testcase'
136 |     aliases = ['testcase']
137 | 
138 |     def __init__(self, **options):
139 |         Formatter.__init__(self, **options)
140 |         if self.encoding is not None and self.encoding != 'utf-8':
141 |             raise ValueError("Only None and utf-8 are allowed encodings.")
142 | 
143 |     def format(self, tokensource, outfile):
144 |         indentation = ' ' * 12
145 |         rawbuf = []
146 |         outbuf = []
147 |         for ttype, value in tokensource:
148 |             rawbuf.append(value)
149 |             outbuf.append(f'{indentation}({ttype}, {value!r}),\n')
150 | 
151 |         before = TESTCASE_BEFORE % (''.join(rawbuf),)
152 |         during = ''.join(outbuf)
153 |         after = TESTCASE_AFTER
154 |         if self.encoding is None:
155 |             outfile.write(before + during + after)
156 |         else:
157 |             outfile.write(before.encode('utf-8'))
158 |             outfile.write(during.encode('utf-8'))
159 |             outfile.write(after.encode('utf-8'))
160 |         outfile.flush()
161 | 
```

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

```python
  1 | #   __
  2 | #  /__)  _  _     _   _ _/   _
  3 | # / (   (- (/ (/ (- _)  /  _)
  4 | #          /
  5 | 
  6 | """
  7 | Requests HTTP Library
  8 | ~~~~~~~~~~~~~~~~~~~~~
  9 | 
 10 | Requests is an HTTP library, written in Python, for human beings.
 11 | Basic GET usage:
 12 | 
 13 |    >>> import requests
 14 |    >>> r = requests.get('https://www.python.org')
 15 |    >>> r.status_code
 16 |    200
 17 |    >>> b'Python is a programming language' in r.content
 18 |    True
 19 | 
 20 | ... or POST:
 21 | 
 22 |    >>> payload = dict(key1='value1', key2='value2')
 23 |    >>> r = requests.post('https://httpbin.org/post', data=payload)
 24 |    >>> print(r.text)
 25 |    {
 26 |      ...
 27 |      "form": {
 28 |        "key1": "value1",
 29 |        "key2": "value2"
 30 |      },
 31 |      ...
 32 |    }
 33 | 
 34 | The other HTTP methods are supported - see `requests.api`. Full documentation
 35 | is at <https://requests.readthedocs.io>.
 36 | 
 37 | :copyright: (c) 2017 by Kenneth Reitz.
 38 | :license: Apache 2.0, see LICENSE for more details.
 39 | """
 40 | 
 41 | import warnings
 42 | 
 43 | from pip._vendor import urllib3
 44 | 
 45 | from .exceptions import RequestsDependencyWarning
 46 | 
 47 | charset_normalizer_version = None
 48 | chardet_version = None
 49 | 
 50 | 
 51 | def check_compatibility(urllib3_version, chardet_version, charset_normalizer_version):
 52 |     urllib3_version = urllib3_version.split(".")
 53 |     assert urllib3_version != ["dev"]  # Verify urllib3 isn't installed from git.
 54 | 
 55 |     # Sometimes, urllib3 only reports its version as 16.1.
 56 |     if len(urllib3_version) == 2:
 57 |         urllib3_version.append("0")
 58 | 
 59 |     # Check urllib3 for compatibility.
 60 |     major, minor, patch = urllib3_version  # noqa: F811
 61 |     major, minor, patch = int(major), int(minor), int(patch)
 62 |     # urllib3 >= 1.21.1
 63 |     assert major >= 1
 64 |     if major == 1:
 65 |         assert minor >= 21
 66 | 
 67 |     # Check charset_normalizer for compatibility.
 68 |     if chardet_version:
 69 |         major, minor, patch = chardet_version.split(".")[:3]
 70 |         major, minor, patch = int(major), int(minor), int(patch)
 71 |         # chardet_version >= 3.0.2, < 6.0.0
 72 |         assert (3, 0, 2) <= (major, minor, patch) < (6, 0, 0)
 73 |     elif charset_normalizer_version:
 74 |         major, minor, patch = charset_normalizer_version.split(".")[:3]
 75 |         major, minor, patch = int(major), int(minor), int(patch)
 76 |         # charset_normalizer >= 2.0.0 < 4.0.0
 77 |         assert (2, 0, 0) <= (major, minor, patch) < (4, 0, 0)
 78 |     else:
 79 |         # pip does not need or use character detection
 80 |         pass
 81 | 
 82 | 
 83 | def _check_cryptography(cryptography_version):
 84 |     # cryptography < 1.3.4
 85 |     try:
 86 |         cryptography_version = list(map(int, cryptography_version.split(".")))
 87 |     except ValueError:
 88 |         return
 89 | 
 90 |     if cryptography_version < [1, 3, 4]:
 91 |         warning = "Old version of cryptography ({}) may cause slowdown.".format(
 92 |             cryptography_version
 93 |         )
 94 |         warnings.warn(warning, RequestsDependencyWarning)
 95 | 
 96 | 
 97 | # Check imported dependencies for compatibility.
 98 | try:
 99 |     check_compatibility(
100 |         urllib3.__version__, chardet_version, charset_normalizer_version
101 |     )
102 | except (AssertionError, ValueError):
103 |     warnings.warn(
104 |         "urllib3 ({}) or chardet ({})/charset_normalizer ({}) doesn't match a supported "
105 |         "version!".format(
106 |             urllib3.__version__, chardet_version, charset_normalizer_version
107 |         ),
108 |         RequestsDependencyWarning,
109 |     )
110 | 
111 | # Attempt to enable urllib3's fallback for SNI support
112 | # if the standard library doesn't support SNI or the
113 | # 'ssl' library isn't available.
114 | try:
115 |     # Note: This logic prevents upgrading cryptography on Windows, if imported
116 |     #       as part of pip.
117 |     from pip._internal.utils.compat import WINDOWS
118 |     if not WINDOWS:
119 |         raise ImportError("pip internals: don't import cryptography on Windows")
120 |     try:
121 |         import ssl
122 |     except ImportError:
123 |         ssl = None
124 | 
125 |     if not getattr(ssl, "HAS_SNI", False):
126 |         from pip._vendor.urllib3.contrib import pyopenssl
127 | 
128 |         pyopenssl.inject_into_urllib3()
129 | 
130 |         # Check cryptography version
131 |         from cryptography import __version__ as cryptography_version
132 | 
133 |         _check_cryptography(cryptography_version)
134 | except ImportError:
135 |     pass
136 | 
137 | # urllib3's DependencyWarnings should be silenced.
138 | from pip._vendor.urllib3.exceptions import DependencyWarning
139 | 
140 | warnings.simplefilter("ignore", DependencyWarning)
141 | 
142 | # Set default logging handler to avoid "No handler found" warnings.
143 | import logging
144 | from logging import NullHandler
145 | 
146 | from . import packages, utils
147 | from .__version__ import (
148 |     __author__,
149 |     __author_email__,
150 |     __build__,
151 |     __cake__,
152 |     __copyright__,
153 |     __description__,
154 |     __license__,
155 |     __title__,
156 |     __url__,
157 |     __version__,
158 | )
159 | from .api import delete, get, head, options, patch, post, put, request
160 | from .exceptions import (
161 |     ConnectionError,
162 |     ConnectTimeout,
163 |     FileModeWarning,
164 |     HTTPError,
165 |     JSONDecodeError,
166 |     ReadTimeout,
167 |     RequestException,
168 |     Timeout,
169 |     TooManyRedirects,
170 |     URLRequired,
171 | )
172 | from .models import PreparedRequest, Request, Response
173 | from .sessions import Session, session
174 | from .status_codes import codes
175 | 
176 | logging.getLogger(__name__).addHandler(NullHandler())
177 | 
178 | # FileModeWarnings go off per the default.
179 | warnings.simplefilter("default", FileModeWarning, append=True)
180 | 
```

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

```python
  1 | import pytest
  2 | 
  3 | from bs4.element import (
  4 |     CData,
  5 |     Comment,
  6 |     Declaration,
  7 |     Doctype,
  8 |     NavigableString,
  9 |     RubyParenthesisString,
 10 |     RubyTextString,
 11 |     Script,
 12 |     Stylesheet,
 13 |     TemplateString,
 14 | )
 15 | 
 16 | from . import SoupTest
 17 | 
 18 | class TestNavigableString(SoupTest):
 19 | 
 20 |     def test_text_acquisition_methods(self):
 21 |         # These methods are intended for use against Tag, but they
 22 |         # work on NavigableString as well,
 23 |         
 24 |         s = NavigableString("fee ")
 25 |         cdata = CData("fie ")
 26 |         comment = Comment("foe ")
 27 | 
 28 |         assert "fee " == s.get_text()
 29 |         assert "fee" == s.get_text(strip=True)
 30 |         assert ["fee "] == list(s.strings)
 31 |         assert ["fee"] == list(s.stripped_strings)
 32 |         assert ["fee "] == list(s._all_strings())
 33 | 
 34 |         assert "fie " == cdata.get_text()
 35 |         assert "fie" == cdata.get_text(strip=True)
 36 |         assert ["fie "] == list(cdata.strings)
 37 |         assert ["fie"] == list(cdata.stripped_strings)
 38 |         assert ["fie "] == list(cdata._all_strings())
 39 |         
 40 |         # Since a Comment isn't normally considered 'text',
 41 |         # these methods generally do nothing.
 42 |         assert "" == comment.get_text()
 43 |         assert [] == list(comment.strings)
 44 |         assert [] == list(comment.stripped_strings)
 45 |         assert [] == list(comment._all_strings())
 46 | 
 47 |         # Unless you specifically say that comments are okay.
 48 |         assert "foe" == comment.get_text(strip=True, types=Comment)
 49 |         assert "foe " == comment.get_text(types=(Comment, NavigableString))
 50 | 
 51 |     def test_string_has_immutable_name_property(self):
 52 |         # string.name is defined as None and can't be modified
 53 |         string = self.soup("s").string
 54 |         assert None == string.name
 55 |         with pytest.raises(AttributeError):
 56 |             string.name = 'foo'
 57 | 
 58 | class TestNavigableStringSubclasses(SoupTest):
 59 | 
 60 |     def test_cdata(self):
 61 |         # None of the current builders turn CDATA sections into CData
 62 |         # objects, but you can create them manually.
 63 |         soup = self.soup("")
 64 |         cdata = CData("foo")
 65 |         soup.insert(1, cdata)
 66 |         assert str(soup) == "<![CDATA[foo]]>"
 67 |         assert soup.find(string="foo") == "foo"
 68 |         assert soup.contents[0] == "foo"
 69 | 
 70 |     def test_cdata_is_never_formatted(self):
 71 |         """Text inside a CData object is passed into the formatter.
 72 | 
 73 |         But the return value is ignored.
 74 |         """
 75 | 
 76 |         self.count = 0
 77 |         def increment(*args):
 78 |             self.count += 1
 79 |             return "BITTER FAILURE"
 80 | 
 81 |         soup = self.soup("")
 82 |         cdata = CData("<><><>")
 83 |         soup.insert(1, cdata)
 84 |         assert b"<![CDATA[<><><>]]>" == soup.encode(formatter=increment)
 85 |         assert 1 == self.count
 86 | 
 87 |     def test_doctype_ends_in_newline(self):
 88 |         # Unlike other NavigableString subclasses, a DOCTYPE always ends
 89 |         # in a newline.
 90 |         doctype = Doctype("foo")
 91 |         soup = self.soup("")
 92 |         soup.insert(1, doctype)
 93 |         assert soup.encode() == b"<!DOCTYPE foo>\n"
 94 | 
 95 |     def test_declaration(self):
 96 |         d = Declaration("foo")
 97 |         assert "<?foo?>" == d.output_ready()
 98 | 
 99 |     def test_default_string_containers(self):
100 |         # In some cases, we use different NavigableString subclasses for
101 |         # the same text in different tags.
102 |         soup = self.soup(
103 |             "<div>text</div><script>text</script><style>text</style>"
104 |         )
105 |         assert [NavigableString, Script, Stylesheet] == [
106 |             x.__class__ for x in soup.find_all(string=True)
107 |         ]
108 | 
109 |         # The TemplateString is a little unusual because it's generally found
110 |         # _inside_ children of a <template> element, not a direct child of the
111 |         # <template> element.
112 |         soup = self.soup(
113 |             "<template>Some text<p>In a tag</p></template>Some text outside"
114 |         )
115 |         assert all(
116 |             isinstance(x, TemplateString)
117 |             for x in soup.template._all_strings(types=None)
118 |         )
119 |         
120 |         # Once the <template> tag closed, we went back to using
121 |         # NavigableString.
122 |         outside = soup.template.next_sibling
123 |         assert isinstance(outside, NavigableString)
124 |         assert not isinstance(outside, TemplateString)
125 | 
126 |         # The TemplateString is also unusual because it can contain
127 |         # NavigableString subclasses of _other_ types, such as
128 |         # Comment.
129 |         markup = b"<template>Some text<p>In a tag</p><!--with a comment--></template>"
130 |         soup = self.soup(markup)
131 |         assert markup == soup.template.encode("utf8")
132 | 
133 |     def test_ruby_strings(self):
134 |         markup = "<ruby>漢 <rp>(</rp><rt>kan</rt><rp>)</rp> 字 <rp>(</rp><rt>ji</rt><rp>)</rp></ruby>"
135 |         soup = self.soup(markup)
136 |         assert isinstance(soup.rp.string, RubyParenthesisString)
137 |         assert isinstance(soup.rt.string, RubyTextString)
138 | 
139 |         # Just as a demo, here's what this means for get_text usage.
140 |         assert "漢字" == soup.get_text(strip=True)
141 |         assert "漢(kan)字(ji)" == soup.get_text(
142 |             strip=True,
143 |             types=(NavigableString, RubyTextString, RubyParenthesisString)
144 |         )
145 | 
```

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

```python
  1 | import typing as t
  2 | 
  3 | if t.TYPE_CHECKING:
  4 |     from .runtime import Undefined
  5 | 
  6 | 
  7 | class TemplateError(Exception):
  8 |     """Baseclass for all template errors."""
  9 | 
 10 |     def __init__(self, message: t.Optional[str] = None) -> None:
 11 |         super().__init__(message)
 12 | 
 13 |     @property
 14 |     def message(self) -> t.Optional[str]:
 15 |         return self.args[0] if self.args else None
 16 | 
 17 | 
 18 | class TemplateNotFound(IOError, LookupError, TemplateError):
 19 |     """Raised if a template does not exist.
 20 | 
 21 |     .. versionchanged:: 2.11
 22 |         If the given name is :class:`Undefined` and no message was
 23 |         provided, an :exc:`UndefinedError` is raised.
 24 |     """
 25 | 
 26 |     # Silence the Python warning about message being deprecated since
 27 |     # it's not valid here.
 28 |     message: t.Optional[str] = None
 29 | 
 30 |     def __init__(
 31 |         self,
 32 |         name: t.Optional[t.Union[str, "Undefined"]],
 33 |         message: t.Optional[str] = None,
 34 |     ) -> None:
 35 |         IOError.__init__(self, name)
 36 | 
 37 |         if message is None:
 38 |             from .runtime import Undefined
 39 | 
 40 |             if isinstance(name, Undefined):
 41 |                 name._fail_with_undefined_error()
 42 | 
 43 |             message = name
 44 | 
 45 |         self.message = message
 46 |         self.name = name
 47 |         self.templates = [name]
 48 | 
 49 |     def __str__(self) -> str:
 50 |         return str(self.message)
 51 | 
 52 | 
 53 | class TemplatesNotFound(TemplateNotFound):
 54 |     """Like :class:`TemplateNotFound` but raised if multiple templates
 55 |     are selected.  This is a subclass of :class:`TemplateNotFound`
 56 |     exception, so just catching the base exception will catch both.
 57 | 
 58 |     .. versionchanged:: 2.11
 59 |         If a name in the list of names is :class:`Undefined`, a message
 60 |         about it being undefined is shown rather than the empty string.
 61 | 
 62 |     .. versionadded:: 2.2
 63 |     """
 64 | 
 65 |     def __init__(
 66 |         self,
 67 |         names: t.Sequence[t.Union[str, "Undefined"]] = (),
 68 |         message: t.Optional[str] = None,
 69 |     ) -> None:
 70 |         if message is None:
 71 |             from .runtime import Undefined
 72 | 
 73 |             parts = []
 74 | 
 75 |             for name in names:
 76 |                 if isinstance(name, Undefined):
 77 |                     parts.append(name._undefined_message)
 78 |                 else:
 79 |                     parts.append(name)
 80 | 
 81 |             parts_str = ", ".join(map(str, parts))
 82 |             message = f"none of the templates given were found: {parts_str}"
 83 | 
 84 |         super().__init__(names[-1] if names else None, message)
 85 |         self.templates = list(names)
 86 | 
 87 | 
 88 | class TemplateSyntaxError(TemplateError):
 89 |     """Raised to tell the user that there is a problem with the template."""
 90 | 
 91 |     def __init__(
 92 |         self,
 93 |         message: str,
 94 |         lineno: int,
 95 |         name: t.Optional[str] = None,
 96 |         filename: t.Optional[str] = None,
 97 |     ) -> None:
 98 |         super().__init__(message)
 99 |         self.lineno = lineno
100 |         self.name = name
101 |         self.filename = filename
102 |         self.source: t.Optional[str] = None
103 | 
104 |         # this is set to True if the debug.translate_syntax_error
105 |         # function translated the syntax error into a new traceback
106 |         self.translated = False
107 | 
108 |     def __str__(self) -> str:
109 |         # for translated errors we only return the message
110 |         if self.translated:
111 |             return t.cast(str, self.message)
112 | 
113 |         # otherwise attach some stuff
114 |         location = f"line {self.lineno}"
115 |         name = self.filename or self.name
116 |         if name:
117 |             location = f'File "{name}", {location}'
118 |         lines = [t.cast(str, self.message), "  " + location]
119 | 
120 |         # if the source is set, add the line to the output
121 |         if self.source is not None:
122 |             try:
123 |                 line = self.source.splitlines()[self.lineno - 1]
124 |             except IndexError:
125 |                 pass
126 |             else:
127 |                 lines.append("    " + line.strip())
128 | 
129 |         return "\n".join(lines)
130 | 
131 |     def __reduce__(self):  # type: ignore
132 |         # https://bugs.python.org/issue1692335 Exceptions that take
133 |         # multiple required arguments have problems with pickling.
134 |         # Without this, raises TypeError: __init__() missing 1 required
135 |         # positional argument: 'lineno'
136 |         return self.__class__, (self.message, self.lineno, self.name, self.filename)
137 | 
138 | 
139 | class TemplateAssertionError(TemplateSyntaxError):
140 |     """Like a template syntax error, but covers cases where something in the
141 |     template caused an error at compile time that wasn't necessarily caused
142 |     by a syntax error.  However it's a direct subclass of
143 |     :exc:`TemplateSyntaxError` and has the same attributes.
144 |     """
145 | 
146 | 
147 | class TemplateRuntimeError(TemplateError):
148 |     """A generic runtime error in the template engine.  Under some situations
149 |     Jinja may raise this exception.
150 |     """
151 | 
152 | 
153 | class UndefinedError(TemplateRuntimeError):
154 |     """Raised if a template tries to operate on :class:`Undefined`."""
155 | 
156 | 
157 | class SecurityError(TemplateRuntimeError):
158 |     """Raised if a template tries to do something insecure if the
159 |     sandbox is enabled.
160 |     """
161 | 
162 | 
163 | class FilterArgumentError(TemplateRuntimeError):
164 |     """This error is raised if a filter was called with inappropriate
165 |     arguments
166 |     """
167 | 
```
Page 15/168FirstPrevNextLast