#
tokens: 49192/50000 13/808 files (page 10/168)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 10 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/rich/theme.py:
--------------------------------------------------------------------------------

```python
  1 | import configparser
  2 | from typing import Dict, List, IO, Mapping, Optional
  3 | 
  4 | from .default_styles import DEFAULT_STYLES
  5 | from .style import Style, StyleType
  6 | 
  7 | 
  8 | class Theme:
  9 |     """A container for style information, used by :class:`~rich.console.Console`.
 10 | 
 11 |     Args:
 12 |         styles (Dict[str, Style], optional): A mapping of style names on to styles. Defaults to None for a theme with no styles.
 13 |         inherit (bool, optional): Inherit default styles. Defaults to True.
 14 |     """
 15 | 
 16 |     styles: Dict[str, Style]
 17 | 
 18 |     def __init__(
 19 |         self, styles: Optional[Mapping[str, StyleType]] = None, inherit: bool = True
 20 |     ):
 21 |         self.styles = DEFAULT_STYLES.copy() if inherit else {}
 22 |         if styles is not None:
 23 |             self.styles.update(
 24 |                 {
 25 |                     name: style if isinstance(style, Style) else Style.parse(style)
 26 |                     for name, style in styles.items()
 27 |                 }
 28 |             )
 29 | 
 30 |     @property
 31 |     def config(self) -> str:
 32 |         """Get contents of a config file for this theme."""
 33 |         config = "[styles]\n" + "\n".join(
 34 |             f"{name} = {style}" for name, style in sorted(self.styles.items())
 35 |         )
 36 |         return config
 37 | 
 38 |     @classmethod
 39 |     def from_file(
 40 |         cls, config_file: IO[str], source: Optional[str] = None, inherit: bool = True
 41 |     ) -> "Theme":
 42 |         """Load a theme from a text mode file.
 43 | 
 44 |         Args:
 45 |             config_file (IO[str]): An open conf file.
 46 |             source (str, optional): The filename of the open file. Defaults to None.
 47 |             inherit (bool, optional): Inherit default styles. Defaults to True.
 48 | 
 49 |         Returns:
 50 |             Theme: A New theme instance.
 51 |         """
 52 |         config = configparser.ConfigParser()
 53 |         config.read_file(config_file, source=source)
 54 |         styles = {name: Style.parse(value) for name, value in config.items("styles")}
 55 |         theme = Theme(styles, inherit=inherit)
 56 |         return theme
 57 | 
 58 |     @classmethod
 59 |     def read(
 60 |         cls, path: str, inherit: bool = True, encoding: Optional[str] = None
 61 |     ) -> "Theme":
 62 |         """Read a theme from a path.
 63 | 
 64 |         Args:
 65 |             path (str): Path to a config file readable by Python configparser module.
 66 |             inherit (bool, optional): Inherit default styles. Defaults to True.
 67 |             encoding (str, optional): Encoding of the config file. Defaults to None.
 68 | 
 69 |         Returns:
 70 |             Theme: A new theme instance.
 71 |         """
 72 |         with open(path, "rt", encoding=encoding) as config_file:
 73 |             return cls.from_file(config_file, source=path, inherit=inherit)
 74 | 
 75 | 
 76 | class ThemeStackError(Exception):
 77 |     """Base exception for errors related to the theme stack."""
 78 | 
 79 | 
 80 | class ThemeStack:
 81 |     """A stack of themes.
 82 | 
 83 |     Args:
 84 |         theme (Theme): A theme instance
 85 |     """
 86 | 
 87 |     def __init__(self, theme: Theme) -> None:
 88 |         self._entries: List[Dict[str, Style]] = [theme.styles]
 89 |         self.get = self._entries[-1].get
 90 | 
 91 |     def push_theme(self, theme: Theme, inherit: bool = True) -> None:
 92 |         """Push a theme on the top of the stack.
 93 | 
 94 |         Args:
 95 |             theme (Theme): A Theme instance.
 96 |             inherit (boolean, optional): Inherit styles from current top of stack.
 97 |         """
 98 |         styles: Dict[str, Style]
 99 |         styles = (
100 |             {**self._entries[-1], **theme.styles} if inherit else theme.styles.copy()
101 |         )
102 |         self._entries.append(styles)
103 |         self.get = self._entries[-1].get
104 | 
105 |     def pop_theme(self) -> None:
106 |         """Pop (and discard) the top-most theme."""
107 |         if len(self._entries) == 1:
108 |             raise ThemeStackError("Unable to pop base theme")
109 |         self._entries.pop()
110 |         self.get = self._entries[-1].get
111 | 
112 | 
113 | if __name__ == "__main__":  # pragma: no cover
114 |     theme = Theme()
115 |     print(theme.config)
116 | 
```

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

```
  1 | /*
  2 |  * Summary: API to build regexp automata
  3 |  * Description: the API to build regexp automata
  4 |  *
  5 |  * Copy: See Copyright for the status of this software.
  6 |  *
  7 |  * Author: Daniel Veillard
  8 |  */
  9 | 
 10 | #ifndef __XML_AUTOMATA_H__
 11 | #define __XML_AUTOMATA_H__
 12 | 
 13 | #include <libxml/xmlversion.h>
 14 | 
 15 | #ifdef LIBXML_REGEXP_ENABLED
 16 | #ifdef LIBXML_AUTOMATA_ENABLED
 17 | 
 18 | #include <libxml/xmlstring.h>
 19 | 
 20 | #ifdef __cplusplus
 21 | extern "C" {
 22 | #endif
 23 | 
 24 | /**
 25 |  * xmlAutomataPtr:
 26 |  *
 27 |  * A libxml automata description, It can be compiled into a regexp
 28 |  */
 29 | typedef struct _xmlAutomata xmlAutomata;
 30 | typedef xmlAutomata *xmlAutomataPtr;
 31 | 
 32 | /**
 33 |  * xmlAutomataStatePtr:
 34 |  *
 35 |  * A state int the automata description,
 36 |  */
 37 | typedef struct _xmlAutomataState xmlAutomataState;
 38 | typedef xmlAutomataState *xmlAutomataStatePtr;
 39 | 
 40 | /*
 41 |  * Building API
 42 |  */
 43 | XMLPUBFUN xmlAutomataPtr
 44 | 		    xmlNewAutomata		(void);
 45 | XMLPUBFUN void
 46 | 		    xmlFreeAutomata		(xmlAutomataPtr am);
 47 | 
 48 | XMLPUBFUN xmlAutomataStatePtr
 49 | 		    xmlAutomataGetInitState	(xmlAutomataPtr am);
 50 | XMLPUBFUN int
 51 | 		    xmlAutomataSetFinalState	(xmlAutomataPtr am,
 52 | 						 xmlAutomataStatePtr state);
 53 | XMLPUBFUN xmlAutomataStatePtr
 54 | 		    xmlAutomataNewState		(xmlAutomataPtr am);
 55 | XMLPUBFUN xmlAutomataStatePtr
 56 | 		    xmlAutomataNewTransition	(xmlAutomataPtr am,
 57 | 						 xmlAutomataStatePtr from,
 58 | 						 xmlAutomataStatePtr to,
 59 | 						 const xmlChar *token,
 60 | 						 void *data);
 61 | XMLPUBFUN xmlAutomataStatePtr
 62 | 		    xmlAutomataNewTransition2	(xmlAutomataPtr am,
 63 | 						 xmlAutomataStatePtr from,
 64 | 						 xmlAutomataStatePtr to,
 65 | 						 const xmlChar *token,
 66 | 						 const xmlChar *token2,
 67 | 						 void *data);
 68 | XMLPUBFUN xmlAutomataStatePtr
 69 |                     xmlAutomataNewNegTrans	(xmlAutomataPtr am,
 70 | 						 xmlAutomataStatePtr from,
 71 | 						 xmlAutomataStatePtr to,
 72 | 						 const xmlChar *token,
 73 | 						 const xmlChar *token2,
 74 | 						 void *data);
 75 | 
 76 | XMLPUBFUN xmlAutomataStatePtr
 77 | 		    xmlAutomataNewCountTrans	(xmlAutomataPtr am,
 78 | 						 xmlAutomataStatePtr from,
 79 | 						 xmlAutomataStatePtr to,
 80 | 						 const xmlChar *token,
 81 | 						 int min,
 82 | 						 int max,
 83 | 						 void *data);
 84 | XMLPUBFUN xmlAutomataStatePtr
 85 | 		    xmlAutomataNewCountTrans2	(xmlAutomataPtr am,
 86 | 						 xmlAutomataStatePtr from,
 87 | 						 xmlAutomataStatePtr to,
 88 | 						 const xmlChar *token,
 89 | 						 const xmlChar *token2,
 90 | 						 int min,
 91 | 						 int max,
 92 | 						 void *data);
 93 | XMLPUBFUN xmlAutomataStatePtr
 94 | 		    xmlAutomataNewOnceTrans	(xmlAutomataPtr am,
 95 | 						 xmlAutomataStatePtr from,
 96 | 						 xmlAutomataStatePtr to,
 97 | 						 const xmlChar *token,
 98 | 						 int min,
 99 | 						 int max,
100 | 						 void *data);
101 | XMLPUBFUN xmlAutomataStatePtr
102 | 		    xmlAutomataNewOnceTrans2	(xmlAutomataPtr am,
103 | 						 xmlAutomataStatePtr from,
104 | 						 xmlAutomataStatePtr to,
105 | 						 const xmlChar *token,
106 | 						 const xmlChar *token2,
107 | 						 int min,
108 | 						 int max,
109 | 						 void *data);
110 | XMLPUBFUN xmlAutomataStatePtr
111 | 		    xmlAutomataNewAllTrans	(xmlAutomataPtr am,
112 | 						 xmlAutomataStatePtr from,
113 | 						 xmlAutomataStatePtr to,
114 | 						 int lax);
115 | XMLPUBFUN xmlAutomataStatePtr
116 | 		    xmlAutomataNewEpsilon	(xmlAutomataPtr am,
117 | 						 xmlAutomataStatePtr from,
118 | 						 xmlAutomataStatePtr to);
119 | XMLPUBFUN xmlAutomataStatePtr
120 | 		    xmlAutomataNewCountedTrans	(xmlAutomataPtr am,
121 | 						 xmlAutomataStatePtr from,
122 | 						 xmlAutomataStatePtr to,
123 | 						 int counter);
124 | XMLPUBFUN xmlAutomataStatePtr
125 | 		    xmlAutomataNewCounterTrans	(xmlAutomataPtr am,
126 | 						 xmlAutomataStatePtr from,
127 | 						 xmlAutomataStatePtr to,
128 | 						 int counter);
129 | XMLPUBFUN int
130 | 		    xmlAutomataNewCounter	(xmlAutomataPtr am,
131 | 						 int min,
132 | 						 int max);
133 | 
134 | XMLPUBFUN struct _xmlRegexp *
135 | 		    xmlAutomataCompile		(xmlAutomataPtr am);
136 | XMLPUBFUN int
137 | 		    xmlAutomataIsDeterminist	(xmlAutomataPtr am);
138 | 
139 | #ifdef __cplusplus
140 | }
141 | #endif
142 | 
143 | #endif /* LIBXML_AUTOMATA_ENABLED */
144 | #endif /* LIBXML_REGEXP_ENABLED */
145 | 
146 | #endif /* __XML_AUTOMATA_H__ */
147 | 
```

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

```python
  1 | """Module containing bug report helper(s)."""
  2 | 
  3 | import json
  4 | import platform
  5 | import ssl
  6 | import sys
  7 | 
  8 | from pip._vendor import idna
  9 | from pip._vendor import urllib3
 10 | 
 11 | from . import __version__ as requests_version
 12 | 
 13 | charset_normalizer = None
 14 | chardet = None
 15 | 
 16 | try:
 17 |     from pip._vendor.urllib3.contrib import pyopenssl
 18 | except ImportError:
 19 |     pyopenssl = None
 20 |     OpenSSL = None
 21 |     cryptography = None
 22 | else:
 23 |     import cryptography
 24 |     import OpenSSL
 25 | 
 26 | 
 27 | def _implementation():
 28 |     """Return a dict with the Python implementation and version.
 29 | 
 30 |     Provide both the name and the version of the Python implementation
 31 |     currently running. For example, on CPython 3.10.3 it will return
 32 |     {'name': 'CPython', 'version': '3.10.3'}.
 33 | 
 34 |     This function works best on CPython and PyPy: in particular, it probably
 35 |     doesn't work for Jython or IronPython. Future investigation should be done
 36 |     to work out the correct shape of the code for those platforms.
 37 |     """
 38 |     implementation = platform.python_implementation()
 39 | 
 40 |     if implementation == "CPython":
 41 |         implementation_version = platform.python_version()
 42 |     elif implementation == "PyPy":
 43 |         implementation_version = "{}.{}.{}".format(
 44 |             sys.pypy_version_info.major,
 45 |             sys.pypy_version_info.minor,
 46 |             sys.pypy_version_info.micro,
 47 |         )
 48 |         if sys.pypy_version_info.releaselevel != "final":
 49 |             implementation_version = "".join(
 50 |                 [implementation_version, sys.pypy_version_info.releaselevel]
 51 |             )
 52 |     elif implementation == "Jython":
 53 |         implementation_version = platform.python_version()  # Complete Guess
 54 |     elif implementation == "IronPython":
 55 |         implementation_version = platform.python_version()  # Complete Guess
 56 |     else:
 57 |         implementation_version = "Unknown"
 58 | 
 59 |     return {"name": implementation, "version": implementation_version}
 60 | 
 61 | 
 62 | def info():
 63 |     """Generate information for a bug report."""
 64 |     try:
 65 |         platform_info = {
 66 |             "system": platform.system(),
 67 |             "release": platform.release(),
 68 |         }
 69 |     except OSError:
 70 |         platform_info = {
 71 |             "system": "Unknown",
 72 |             "release": "Unknown",
 73 |         }
 74 | 
 75 |     implementation_info = _implementation()
 76 |     urllib3_info = {"version": urllib3.__version__}
 77 |     charset_normalizer_info = {"version": None}
 78 |     chardet_info = {"version": None}
 79 |     if charset_normalizer:
 80 |         charset_normalizer_info = {"version": charset_normalizer.__version__}
 81 |     if chardet:
 82 |         chardet_info = {"version": chardet.__version__}
 83 | 
 84 |     pyopenssl_info = {
 85 |         "version": None,
 86 |         "openssl_version": "",
 87 |     }
 88 |     if OpenSSL:
 89 |         pyopenssl_info = {
 90 |             "version": OpenSSL.__version__,
 91 |             "openssl_version": f"{OpenSSL.SSL.OPENSSL_VERSION_NUMBER:x}",
 92 |         }
 93 |     cryptography_info = {
 94 |         "version": getattr(cryptography, "__version__", ""),
 95 |     }
 96 |     idna_info = {
 97 |         "version": getattr(idna, "__version__", ""),
 98 |     }
 99 | 
100 |     system_ssl = ssl.OPENSSL_VERSION_NUMBER
101 |     system_ssl_info = {"version": f"{system_ssl:x}" if system_ssl is not None else ""}
102 | 
103 |     return {
104 |         "platform": platform_info,
105 |         "implementation": implementation_info,
106 |         "system_ssl": system_ssl_info,
107 |         "using_pyopenssl": pyopenssl is not None,
108 |         "using_charset_normalizer": chardet is None,
109 |         "pyOpenSSL": pyopenssl_info,
110 |         "urllib3": urllib3_info,
111 |         "chardet": chardet_info,
112 |         "charset_normalizer": charset_normalizer_info,
113 |         "cryptography": cryptography_info,
114 |         "idna": idna_info,
115 |         "requests": {
116 |             "version": requests_version,
117 |         },
118 |     }
119 | 
120 | 
121 | def main():
122 |     """Pretty-print the bug information as JSON."""
123 |     print(json.dumps(info(), sort_keys=True, indent=2))
124 | 
125 | 
126 | if __name__ == "__main__":
127 |     main()
128 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/requests/help.py:
--------------------------------------------------------------------------------

```python
  1 | """Module containing bug report helper(s)."""
  2 | 
  3 | import json
  4 | import platform
  5 | import ssl
  6 | import sys
  7 | 
  8 | import idna
  9 | import urllib3
 10 | 
 11 | from . import __version__ as requests_version
 12 | 
 13 | try:
 14 |     import charset_normalizer
 15 | except ImportError:
 16 |     charset_normalizer = None
 17 | 
 18 | try:
 19 |     import chardet
 20 | except ImportError:
 21 |     chardet = None
 22 | 
 23 | try:
 24 |     from urllib3.contrib import pyopenssl
 25 | except ImportError:
 26 |     pyopenssl = None
 27 |     OpenSSL = None
 28 |     cryptography = None
 29 | else:
 30 |     import cryptography
 31 |     import OpenSSL
 32 | 
 33 | 
 34 | def _implementation():
 35 |     """Return a dict with the Python implementation and version.
 36 | 
 37 |     Provide both the name and the version of the Python implementation
 38 |     currently running. For example, on CPython 3.10.3 it will return
 39 |     {'name': 'CPython', 'version': '3.10.3'}.
 40 | 
 41 |     This function works best on CPython and PyPy: in particular, it probably
 42 |     doesn't work for Jython or IronPython. Future investigation should be done
 43 |     to work out the correct shape of the code for those platforms.
 44 |     """
 45 |     implementation = platform.python_implementation()
 46 | 
 47 |     if implementation == "CPython":
 48 |         implementation_version = platform.python_version()
 49 |     elif implementation == "PyPy":
 50 |         implementation_version = "{}.{}.{}".format(
 51 |             sys.pypy_version_info.major,
 52 |             sys.pypy_version_info.minor,
 53 |             sys.pypy_version_info.micro,
 54 |         )
 55 |         if sys.pypy_version_info.releaselevel != "final":
 56 |             implementation_version = "".join(
 57 |                 [implementation_version, sys.pypy_version_info.releaselevel]
 58 |             )
 59 |     elif implementation == "Jython":
 60 |         implementation_version = platform.python_version()  # Complete Guess
 61 |     elif implementation == "IronPython":
 62 |         implementation_version = platform.python_version()  # Complete Guess
 63 |     else:
 64 |         implementation_version = "Unknown"
 65 | 
 66 |     return {"name": implementation, "version": implementation_version}
 67 | 
 68 | 
 69 | def info():
 70 |     """Generate information for a bug report."""
 71 |     try:
 72 |         platform_info = {
 73 |             "system": platform.system(),
 74 |             "release": platform.release(),
 75 |         }
 76 |     except OSError:
 77 |         platform_info = {
 78 |             "system": "Unknown",
 79 |             "release": "Unknown",
 80 |         }
 81 | 
 82 |     implementation_info = _implementation()
 83 |     urllib3_info = {"version": urllib3.__version__}
 84 |     charset_normalizer_info = {"version": None}
 85 |     chardet_info = {"version": None}
 86 |     if charset_normalizer:
 87 |         charset_normalizer_info = {"version": charset_normalizer.__version__}
 88 |     if chardet:
 89 |         chardet_info = {"version": chardet.__version__}
 90 | 
 91 |     pyopenssl_info = {
 92 |         "version": None,
 93 |         "openssl_version": "",
 94 |     }
 95 |     if OpenSSL:
 96 |         pyopenssl_info = {
 97 |             "version": OpenSSL.__version__,
 98 |             "openssl_version": f"{OpenSSL.SSL.OPENSSL_VERSION_NUMBER:x}",
 99 |         }
100 |     cryptography_info = {
101 |         "version": getattr(cryptography, "__version__", ""),
102 |     }
103 |     idna_info = {
104 |         "version": getattr(idna, "__version__", ""),
105 |     }
106 | 
107 |     system_ssl = ssl.OPENSSL_VERSION_NUMBER
108 |     system_ssl_info = {"version": f"{system_ssl:x}" if system_ssl is not None else ""}
109 | 
110 |     return {
111 |         "platform": platform_info,
112 |         "implementation": implementation_info,
113 |         "system_ssl": system_ssl_info,
114 |         "using_pyopenssl": pyopenssl is not None,
115 |         "using_charset_normalizer": chardet is None,
116 |         "pyOpenSSL": pyopenssl_info,
117 |         "urllib3": urllib3_info,
118 |         "chardet": chardet_info,
119 |         "charset_normalizer": charset_normalizer_info,
120 |         "cryptography": cryptography_info,
121 |         "idna": idna_info,
122 |         "requests": {
123 |             "version": requests_version,
124 |         },
125 |     }
126 | 
127 | 
128 | def main():
129 |     """Pretty-print the bug information as JSON."""
130 |     print(json.dumps(info(), sort_keys=True, indent=2))
131 | 
132 | 
133 | if __name__ == "__main__":
134 |     main()
135 | 
```

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

```python
  1 | """
  2 | Package containing all pip commands
  3 | """
  4 | 
  5 | import importlib
  6 | from collections import namedtuple
  7 | from typing import Any, Dict, Optional
  8 | 
  9 | from pip._internal.cli.base_command import Command
 10 | 
 11 | CommandInfo = namedtuple("CommandInfo", "module_path, class_name, summary")
 12 | 
 13 | # This dictionary does a bunch of heavy lifting for help output:
 14 | # - Enables avoiding additional (costly) imports for presenting `--help`.
 15 | # - The ordering matters for help display.
 16 | #
 17 | # Even though the module path starts with the same "pip._internal.commands"
 18 | # prefix, the full path makes testing easier (specifically when modifying
 19 | # `commands_dict` in test setup / teardown).
 20 | commands_dict: Dict[str, CommandInfo] = {
 21 |     "install": CommandInfo(
 22 |         "pip._internal.commands.install",
 23 |         "InstallCommand",
 24 |         "Install packages.",
 25 |     ),
 26 |     "download": CommandInfo(
 27 |         "pip._internal.commands.download",
 28 |         "DownloadCommand",
 29 |         "Download packages.",
 30 |     ),
 31 |     "uninstall": CommandInfo(
 32 |         "pip._internal.commands.uninstall",
 33 |         "UninstallCommand",
 34 |         "Uninstall packages.",
 35 |     ),
 36 |     "freeze": CommandInfo(
 37 |         "pip._internal.commands.freeze",
 38 |         "FreezeCommand",
 39 |         "Output installed packages in requirements format.",
 40 |     ),
 41 |     "inspect": CommandInfo(
 42 |         "pip._internal.commands.inspect",
 43 |         "InspectCommand",
 44 |         "Inspect the python environment.",
 45 |     ),
 46 |     "list": CommandInfo(
 47 |         "pip._internal.commands.list",
 48 |         "ListCommand",
 49 |         "List installed packages.",
 50 |     ),
 51 |     "show": CommandInfo(
 52 |         "pip._internal.commands.show",
 53 |         "ShowCommand",
 54 |         "Show information about installed packages.",
 55 |     ),
 56 |     "check": CommandInfo(
 57 |         "pip._internal.commands.check",
 58 |         "CheckCommand",
 59 |         "Verify installed packages have compatible dependencies.",
 60 |     ),
 61 |     "config": CommandInfo(
 62 |         "pip._internal.commands.configuration",
 63 |         "ConfigurationCommand",
 64 |         "Manage local and global configuration.",
 65 |     ),
 66 |     "search": CommandInfo(
 67 |         "pip._internal.commands.search",
 68 |         "SearchCommand",
 69 |         "Search PyPI for packages.",
 70 |     ),
 71 |     "cache": CommandInfo(
 72 |         "pip._internal.commands.cache",
 73 |         "CacheCommand",
 74 |         "Inspect and manage pip's wheel cache.",
 75 |     ),
 76 |     "index": CommandInfo(
 77 |         "pip._internal.commands.index",
 78 |         "IndexCommand",
 79 |         "Inspect information available from package indexes.",
 80 |     ),
 81 |     "wheel": CommandInfo(
 82 |         "pip._internal.commands.wheel",
 83 |         "WheelCommand",
 84 |         "Build wheels from your requirements.",
 85 |     ),
 86 |     "hash": CommandInfo(
 87 |         "pip._internal.commands.hash",
 88 |         "HashCommand",
 89 |         "Compute hashes of package archives.",
 90 |     ),
 91 |     "completion": CommandInfo(
 92 |         "pip._internal.commands.completion",
 93 |         "CompletionCommand",
 94 |         "A helper command used for command completion.",
 95 |     ),
 96 |     "debug": CommandInfo(
 97 |         "pip._internal.commands.debug",
 98 |         "DebugCommand",
 99 |         "Show information useful for debugging.",
100 |     ),
101 |     "help": CommandInfo(
102 |         "pip._internal.commands.help",
103 |         "HelpCommand",
104 |         "Show help for commands.",
105 |     ),
106 | }
107 | 
108 | 
109 | def create_command(name: str, **kwargs: Any) -> Command:
110 |     """
111 |     Create an instance of the Command class with the given name.
112 |     """
113 |     module_path, class_name, summary = commands_dict[name]
114 |     module = importlib.import_module(module_path)
115 |     command_class = getattr(module, class_name)
116 |     command = command_class(name=name, summary=summary, **kwargs)
117 | 
118 |     return command
119 | 
120 | 
121 | def get_similar_commands(name: str) -> Optional[str]:
122 |     """Command name auto-correct."""
123 |     from difflib import get_close_matches
124 | 
125 |     name = name.lower()
126 | 
127 |     close_commands = get_close_matches(name, commands_dict.keys())
128 | 
129 |     if close_commands:
130 |         return close_commands[0]
131 |     else:
132 |         return None
133 | 
```

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

```python
  1 | import logging
  2 | from optparse import Values
  3 | from typing import List
  4 | 
  5 | from pip._vendor.packaging.utils import canonicalize_name
  6 | 
  7 | from pip._internal.cli import cmdoptions
  8 | from pip._internal.cli.base_command import Command
  9 | from pip._internal.cli.index_command import SessionCommandMixin
 10 | from pip._internal.cli.status_codes import SUCCESS
 11 | from pip._internal.exceptions import InstallationError
 12 | from pip._internal.req import parse_requirements
 13 | from pip._internal.req.constructors import (
 14 |     install_req_from_line,
 15 |     install_req_from_parsed_requirement,
 16 | )
 17 | from pip._internal.utils.misc import (
 18 |     check_externally_managed,
 19 |     protect_pip_from_modification_on_windows,
 20 |     warn_if_run_as_root,
 21 | )
 22 | 
 23 | logger = logging.getLogger(__name__)
 24 | 
 25 | 
 26 | class UninstallCommand(Command, SessionCommandMixin):
 27 |     """
 28 |     Uninstall packages.
 29 | 
 30 |     pip is able to uninstall most installed packages. Known exceptions are:
 31 | 
 32 |     - Pure distutils packages installed with ``python setup.py install``, which
 33 |       leave behind no metadata to determine what files were installed.
 34 |     - Script wrappers installed by ``python setup.py develop``.
 35 |     """
 36 | 
 37 |     usage = """
 38 |       %prog [options] <package> ...
 39 |       %prog [options] -r <requirements file> ..."""
 40 | 
 41 |     def add_options(self) -> None:
 42 |         self.cmd_opts.add_option(
 43 |             "-r",
 44 |             "--requirement",
 45 |             dest="requirements",
 46 |             action="append",
 47 |             default=[],
 48 |             metavar="file",
 49 |             help=(
 50 |                 "Uninstall all the packages listed in the given requirements "
 51 |                 "file.  This option can be used multiple times."
 52 |             ),
 53 |         )
 54 |         self.cmd_opts.add_option(
 55 |             "-y",
 56 |             "--yes",
 57 |             dest="yes",
 58 |             action="store_true",
 59 |             help="Don't ask for confirmation of uninstall deletions.",
 60 |         )
 61 |         self.cmd_opts.add_option(cmdoptions.root_user_action())
 62 |         self.cmd_opts.add_option(cmdoptions.override_externally_managed())
 63 |         self.parser.insert_option_group(0, self.cmd_opts)
 64 | 
 65 |     def run(self, options: Values, args: List[str]) -> int:
 66 |         session = self.get_default_session(options)
 67 | 
 68 |         reqs_to_uninstall = {}
 69 |         for name in args:
 70 |             req = install_req_from_line(
 71 |                 name,
 72 |                 isolated=options.isolated_mode,
 73 |             )
 74 |             if req.name:
 75 |                 reqs_to_uninstall[canonicalize_name(req.name)] = req
 76 |             else:
 77 |                 logger.warning(
 78 |                     "Invalid requirement: %r ignored -"
 79 |                     " the uninstall command expects named"
 80 |                     " requirements.",
 81 |                     name,
 82 |                 )
 83 |         for filename in options.requirements:
 84 |             for parsed_req in parse_requirements(
 85 |                 filename, options=options, session=session
 86 |             ):
 87 |                 req = install_req_from_parsed_requirement(
 88 |                     parsed_req, isolated=options.isolated_mode
 89 |                 )
 90 |                 if req.name:
 91 |                     reqs_to_uninstall[canonicalize_name(req.name)] = req
 92 |         if not reqs_to_uninstall:
 93 |             raise InstallationError(
 94 |                 f"You must give at least one requirement to {self.name} (see "
 95 |                 f'"pip help {self.name}")'
 96 |             )
 97 | 
 98 |         if not options.override_externally_managed:
 99 |             check_externally_managed()
100 | 
101 |         protect_pip_from_modification_on_windows(
102 |             modifying_pip="pip" in reqs_to_uninstall
103 |         )
104 | 
105 |         for req in reqs_to_uninstall.values():
106 |             uninstall_pathset = req.uninstall(
107 |                 auto_confirm=options.yes,
108 |                 verbose=self.verbosity > 0,
109 |             )
110 |             if uninstall_pathset:
111 |                 uninstall_pathset.commit()
112 |         if options.root_user_action == "warn":
113 |             warn_if_run_as_root()
114 |         return SUCCESS
115 | 
```

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

```python
  1 | """HTTP cache implementation.
  2 | """
  3 | 
  4 | import os
  5 | from contextlib import contextmanager
  6 | from datetime import datetime
  7 | from typing import BinaryIO, Generator, Optional, Union
  8 | 
  9 | from pip._vendor.cachecontrol.cache import SeparateBodyBaseCache
 10 | from pip._vendor.cachecontrol.caches import SeparateBodyFileCache
 11 | from pip._vendor.requests.models import Response
 12 | 
 13 | from pip._internal.utils.filesystem import adjacent_tmp_file, replace
 14 | from pip._internal.utils.misc import ensure_dir
 15 | 
 16 | 
 17 | def is_from_cache(response: Response) -> bool:
 18 |     return getattr(response, "from_cache", False)
 19 | 
 20 | 
 21 | @contextmanager
 22 | def suppressed_cache_errors() -> Generator[None, None, None]:
 23 |     """If we can't access the cache then we can just skip caching and process
 24 |     requests as if caching wasn't enabled.
 25 |     """
 26 |     try:
 27 |         yield
 28 |     except OSError:
 29 |         pass
 30 | 
 31 | 
 32 | class SafeFileCache(SeparateBodyBaseCache):
 33 |     """
 34 |     A file based cache which is safe to use even when the target directory may
 35 |     not be accessible or writable.
 36 | 
 37 |     There is a race condition when two processes try to write and/or read the
 38 |     same entry at the same time, since each entry consists of two separate
 39 |     files (https://github.com/psf/cachecontrol/issues/324).  We therefore have
 40 |     additional logic that makes sure that both files to be present before
 41 |     returning an entry; this fixes the read side of the race condition.
 42 | 
 43 |     For the write side, we assume that the server will only ever return the
 44 |     same data for the same URL, which ought to be the case for files pip is
 45 |     downloading.  PyPI does not have a mechanism to swap out a wheel for
 46 |     another wheel, for example.  If this assumption is not true, the
 47 |     CacheControl issue will need to be fixed.
 48 |     """
 49 | 
 50 |     def __init__(self, directory: str) -> None:
 51 |         assert directory is not None, "Cache directory must not be None."
 52 |         super().__init__()
 53 |         self.directory = directory
 54 | 
 55 |     def _get_cache_path(self, name: str) -> str:
 56 |         # From cachecontrol.caches.file_cache.FileCache._fn, brought into our
 57 |         # class for backwards-compatibility and to avoid using a non-public
 58 |         # method.
 59 |         hashed = SeparateBodyFileCache.encode(name)
 60 |         parts = list(hashed[:5]) + [hashed]
 61 |         return os.path.join(self.directory, *parts)
 62 | 
 63 |     def get(self, key: str) -> Optional[bytes]:
 64 |         # The cache entry is only valid if both metadata and body exist.
 65 |         metadata_path = self._get_cache_path(key)
 66 |         body_path = metadata_path + ".body"
 67 |         if not (os.path.exists(metadata_path) and os.path.exists(body_path)):
 68 |             return None
 69 |         with suppressed_cache_errors():
 70 |             with open(metadata_path, "rb") as f:
 71 |                 return f.read()
 72 | 
 73 |     def _write(self, path: str, data: bytes) -> None:
 74 |         with suppressed_cache_errors():
 75 |             ensure_dir(os.path.dirname(path))
 76 | 
 77 |             with adjacent_tmp_file(path) as f:
 78 |                 f.write(data)
 79 | 
 80 |             replace(f.name, path)
 81 | 
 82 |     def set(
 83 |         self, key: str, value: bytes, expires: Union[int, datetime, None] = None
 84 |     ) -> None:
 85 |         path = self._get_cache_path(key)
 86 |         self._write(path, value)
 87 | 
 88 |     def delete(self, key: str) -> None:
 89 |         path = self._get_cache_path(key)
 90 |         with suppressed_cache_errors():
 91 |             os.remove(path)
 92 |         with suppressed_cache_errors():
 93 |             os.remove(path + ".body")
 94 | 
 95 |     def get_body(self, key: str) -> Optional[BinaryIO]:
 96 |         # The cache entry is only valid if both metadata and body exist.
 97 |         metadata_path = self._get_cache_path(key)
 98 |         body_path = metadata_path + ".body"
 99 |         if not (os.path.exists(metadata_path) and os.path.exists(body_path)):
100 |             return None
101 |         with suppressed_cache_errors():
102 |             return open(body_path, "rb")
103 | 
104 |     def set_body(self, key: str, body: bytes) -> None:
105 |         path = self._get_cache_path(key) + ".body"
106 |         self._write(path, body)
107 | 
```

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

```python
  1 | from __future__ import absolute_import
  2 | 
  3 | from base64 import b64encode
  4 | 
  5 | from ..exceptions import UnrewindableBodyError
  6 | from ..packages.six import b, integer_types
  7 | 
  8 | # Pass as a value within ``headers`` to skip
  9 | # emitting some HTTP headers that are added automatically.
 10 | # The only headers that are supported are ``Accept-Encoding``,
 11 | # ``Host``, and ``User-Agent``.
 12 | SKIP_HEADER = "@@@SKIP_HEADER@@@"
 13 | SKIPPABLE_HEADERS = frozenset(["accept-encoding", "host", "user-agent"])
 14 | 
 15 | ACCEPT_ENCODING = "gzip,deflate"
 16 | 
 17 | _FAILEDTELL = object()
 18 | 
 19 | 
 20 | def make_headers(
 21 |     keep_alive=None,
 22 |     accept_encoding=None,
 23 |     user_agent=None,
 24 |     basic_auth=None,
 25 |     proxy_basic_auth=None,
 26 |     disable_cache=None,
 27 | ):
 28 |     """
 29 |     Shortcuts for generating request headers.
 30 | 
 31 |     :param keep_alive:
 32 |         If ``True``, adds 'connection: keep-alive' header.
 33 | 
 34 |     :param accept_encoding:
 35 |         Can be a boolean, list, or string.
 36 |         ``True`` translates to 'gzip,deflate'.
 37 |         List will get joined by comma.
 38 |         String will be used as provided.
 39 | 
 40 |     :param user_agent:
 41 |         String representing the user-agent you want, such as
 42 |         "python-urllib3/0.6"
 43 | 
 44 |     :param basic_auth:
 45 |         Colon-separated username:password string for 'authorization: basic ...'
 46 |         auth header.
 47 | 
 48 |     :param proxy_basic_auth:
 49 |         Colon-separated username:password string for 'proxy-authorization: basic ...'
 50 |         auth header.
 51 | 
 52 |     :param disable_cache:
 53 |         If ``True``, adds 'cache-control: no-cache' header.
 54 | 
 55 |     Example::
 56 | 
 57 |         >>> make_headers(keep_alive=True, user_agent="Batman/1.0")
 58 |         {'connection': 'keep-alive', 'user-agent': 'Batman/1.0'}
 59 |         >>> make_headers(accept_encoding=True)
 60 |         {'accept-encoding': 'gzip,deflate'}
 61 |     """
 62 |     headers = {}
 63 |     if accept_encoding:
 64 |         if isinstance(accept_encoding, str):
 65 |             pass
 66 |         elif isinstance(accept_encoding, list):
 67 |             accept_encoding = ",".join(accept_encoding)
 68 |         else:
 69 |             accept_encoding = ACCEPT_ENCODING
 70 |         headers["accept-encoding"] = accept_encoding
 71 | 
 72 |     if user_agent:
 73 |         headers["user-agent"] = user_agent
 74 | 
 75 |     if keep_alive:
 76 |         headers["connection"] = "keep-alive"
 77 | 
 78 |     if basic_auth:
 79 |         headers["authorization"] = "Basic " + b64encode(b(basic_auth)).decode("utf-8")
 80 | 
 81 |     if proxy_basic_auth:
 82 |         headers["proxy-authorization"] = "Basic " + b64encode(
 83 |             b(proxy_basic_auth)
 84 |         ).decode("utf-8")
 85 | 
 86 |     if disable_cache:
 87 |         headers["cache-control"] = "no-cache"
 88 | 
 89 |     return headers
 90 | 
 91 | 
 92 | def set_file_position(body, pos):
 93 |     """
 94 |     If a position is provided, move file to that point.
 95 |     Otherwise, we'll attempt to record a position for future use.
 96 |     """
 97 |     if pos is not None:
 98 |         rewind_body(body, pos)
 99 |     elif getattr(body, "tell", None) is not None:
100 |         try:
101 |             pos = body.tell()
102 |         except (IOError, OSError):
103 |             # This differentiates from None, allowing us to catch
104 |             # a failed `tell()` later when trying to rewind the body.
105 |             pos = _FAILEDTELL
106 | 
107 |     return pos
108 | 
109 | 
110 | def rewind_body(body, body_pos):
111 |     """
112 |     Attempt to rewind body to a certain position.
113 |     Primarily used for request redirects and retries.
114 | 
115 |     :param body:
116 |         File-like object that supports seek.
117 | 
118 |     :param int pos:
119 |         Position to seek to in file.
120 |     """
121 |     body_seek = getattr(body, "seek", None)
122 |     if body_seek is not None and isinstance(body_pos, integer_types):
123 |         try:
124 |             body_seek(body_pos)
125 |         except (IOError, OSError):
126 |             raise UnrewindableBodyError(
127 |                 "An error occurred when rewinding request body for redirect/retry."
128 |             )
129 |     elif body_pos is _FAILEDTELL:
130 |         raise UnrewindableBodyError(
131 |             "Unable to record file position for rewinding "
132 |             "request body during a redirect/retry."
133 |         )
134 |     else:
135 |         raise ValueError(
136 |             "body_pos must be of type integer, instead it was %s." % type(body_pos)
137 |         )
138 | 
```

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

```
  1 | /*
  2 |  * Summary: minimal FTP implementation
  3 |  * Description: minimal FTP implementation allowing to fetch resources
  4 |  *              like external subset. This module is DEPRECATED, do not
  5 |  *              use any of its functions.
  6 |  *
  7 |  * Copy: See Copyright for the status of this software.
  8 |  *
  9 |  * Author: Daniel Veillard
 10 |  */
 11 | 
 12 | #ifndef __NANO_FTP_H__
 13 | #define __NANO_FTP_H__
 14 | 
 15 | #include <libxml/xmlversion.h>
 16 | 
 17 | #if defined(LIBXML_FTP_ENABLED)
 18 | 
 19 | /* Needed for portability to Windows 64 bits */
 20 | #if defined(_WIN32)
 21 | #include <winsock2.h>
 22 | #else
 23 | /**
 24 |  * SOCKET:
 25 |  *
 26 |  * macro used to provide portability of code to windows sockets
 27 |  */
 28 | #define SOCKET int
 29 | /**
 30 |  * INVALID_SOCKET:
 31 |  *
 32 |  * macro used to provide portability of code to windows sockets
 33 |  * the value to be used when the socket is not valid
 34 |  */
 35 | #undef  INVALID_SOCKET
 36 | #define INVALID_SOCKET (-1)
 37 | #endif
 38 | 
 39 | #ifdef __cplusplus
 40 | extern "C" {
 41 | #endif
 42 | 
 43 | /**
 44 |  * ftpListCallback:
 45 |  * @userData:  user provided data for the callback
 46 |  * @filename:  the file name (including "->" when links are shown)
 47 |  * @attrib:  the attribute string
 48 |  * @owner:  the owner string
 49 |  * @group:  the group string
 50 |  * @size:  the file size
 51 |  * @links:  the link count
 52 |  * @year:  the year
 53 |  * @month:  the month
 54 |  * @day:  the day
 55 |  * @hour:  the hour
 56 |  * @minute:  the minute
 57 |  *
 58 |  * A callback for the xmlNanoFTPList command.
 59 |  * Note that only one of year and day:minute are specified.
 60 |  */
 61 | typedef void (*ftpListCallback) (void *userData,
 62 | 	                         const char *filename, const char *attrib,
 63 | 	                         const char *owner, const char *group,
 64 | 				 unsigned long size, int links, int year,
 65 | 				 const char *month, int day, int hour,
 66 | 				 int minute);
 67 | /**
 68 |  * ftpDataCallback:
 69 |  * @userData: the user provided context
 70 |  * @data: the data received
 71 |  * @len: its size in bytes
 72 |  *
 73 |  * A callback for the xmlNanoFTPGet command.
 74 |  */
 75 | typedef void (*ftpDataCallback) (void *userData,
 76 | 				 const char *data,
 77 | 				 int len);
 78 | 
 79 | /*
 80 |  * Init
 81 |  */
 82 | XML_DEPRECATED
 83 | XMLPUBFUN void
 84 | 	xmlNanoFTPInit		(void);
 85 | XML_DEPRECATED
 86 | XMLPUBFUN void
 87 | 	xmlNanoFTPCleanup	(void);
 88 | 
 89 | /*
 90 |  * Creating/freeing contexts.
 91 |  */
 92 | XML_DEPRECATED
 93 | XMLPUBFUN void *
 94 | 	xmlNanoFTPNewCtxt	(const char *URL);
 95 | XML_DEPRECATED
 96 | XMLPUBFUN void
 97 | 	xmlNanoFTPFreeCtxt	(void * ctx);
 98 | XML_DEPRECATED
 99 | XMLPUBFUN void *
100 | 	xmlNanoFTPConnectTo	(const char *server,
101 | 				 int port);
102 | /*
103 |  * Opening/closing session connections.
104 |  */
105 | XML_DEPRECATED
106 | XMLPUBFUN void *
107 | 	xmlNanoFTPOpen		(const char *URL);
108 | XML_DEPRECATED
109 | XMLPUBFUN int
110 | 	xmlNanoFTPConnect	(void *ctx);
111 | XML_DEPRECATED
112 | XMLPUBFUN int
113 | 	xmlNanoFTPClose		(void *ctx);
114 | XML_DEPRECATED
115 | XMLPUBFUN int
116 | 	xmlNanoFTPQuit		(void *ctx);
117 | XML_DEPRECATED
118 | XMLPUBFUN void
119 | 	xmlNanoFTPScanProxy	(const char *URL);
120 | XML_DEPRECATED
121 | XMLPUBFUN void
122 | 	xmlNanoFTPProxy		(const char *host,
123 | 				 int port,
124 | 				 const char *user,
125 | 				 const char *passwd,
126 | 				 int type);
127 | XML_DEPRECATED
128 | XMLPUBFUN int
129 | 	xmlNanoFTPUpdateURL	(void *ctx,
130 | 				 const char *URL);
131 | 
132 | /*
133 |  * Rather internal commands.
134 |  */
135 | XML_DEPRECATED
136 | XMLPUBFUN int
137 | 	xmlNanoFTPGetResponse	(void *ctx);
138 | XML_DEPRECATED
139 | XMLPUBFUN int
140 | 	xmlNanoFTPCheckResponse	(void *ctx);
141 | 
142 | /*
143 |  * CD/DIR/GET handlers.
144 |  */
145 | XML_DEPRECATED
146 | XMLPUBFUN int
147 | 	xmlNanoFTPCwd		(void *ctx,
148 | 				 const char *directory);
149 | XML_DEPRECATED
150 | XMLPUBFUN int
151 | 	xmlNanoFTPDele		(void *ctx,
152 | 				 const char *file);
153 | 
154 | XML_DEPRECATED
155 | XMLPUBFUN SOCKET
156 | 	xmlNanoFTPGetConnection	(void *ctx);
157 | XML_DEPRECATED
158 | XMLPUBFUN int
159 | 	xmlNanoFTPCloseConnection(void *ctx);
160 | XML_DEPRECATED
161 | XMLPUBFUN int
162 | 	xmlNanoFTPList		(void *ctx,
163 | 				 ftpListCallback callback,
164 | 				 void *userData,
165 | 				 const char *filename);
166 | XML_DEPRECATED
167 | XMLPUBFUN SOCKET
168 | 	xmlNanoFTPGetSocket	(void *ctx,
169 | 				 const char *filename);
170 | XML_DEPRECATED
171 | XMLPUBFUN int
172 | 	xmlNanoFTPGet		(void *ctx,
173 | 				 ftpDataCallback callback,
174 | 				 void *userData,
175 | 				 const char *filename);
176 | XML_DEPRECATED
177 | XMLPUBFUN int
178 | 	xmlNanoFTPRead		(void *ctx,
179 | 				 void *dest,
180 | 				 int len);
181 | 
182 | #ifdef __cplusplus
183 | }
184 | #endif
185 | #endif /* defined(LIBXML_FTP_ENABLED) || defined(LIBXML_LEGACY_ENABLED) */
186 | #endif /* __NANO_FTP_H__ */
187 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/soupsieve/pretty.py:
--------------------------------------------------------------------------------

```python
  1 | """
  2 | Format a pretty string of a `SoupSieve` object for easy debugging.
  3 | 
  4 | This won't necessarily support all types and such, and definitely
  5 | not support custom outputs.
  6 | 
  7 | It is mainly geared towards our types as the `SelectorList`
  8 | object is a beast to look at without some indentation and newlines.
  9 | The format and various output types is fairly known (though it
 10 | hasn't been tested extensively to make sure we aren't missing corners).
 11 | 
 12 | Example:
 13 | -------
 14 | ```
 15 | >>> import soupsieve as sv
 16 | >>> sv.compile('this > that.class[name=value]').selectors.pretty()
 17 | SelectorList(
 18 |     selectors=(
 19 |         Selector(
 20 |             tag=SelectorTag(
 21 |                 name='that',
 22 |                 prefix=None),
 23 |             ids=(),
 24 |             classes=(
 25 |                 'class',
 26 |                 ),
 27 |             attributes=(
 28 |                 SelectorAttribute(
 29 |                     attribute='name',
 30 |                     prefix='',
 31 |                     pattern=re.compile(
 32 |                         '^value$'),
 33 |                     xml_type_pattern=None),
 34 |                 ),
 35 |             nth=(),
 36 |             selectors=(),
 37 |             relation=SelectorList(
 38 |                 selectors=(
 39 |                     Selector(
 40 |                         tag=SelectorTag(
 41 |                             name='this',
 42 |                             prefix=None),
 43 |                         ids=(),
 44 |                         classes=(),
 45 |                         attributes=(),
 46 |                         nth=(),
 47 |                         selectors=(),
 48 |                         relation=SelectorList(
 49 |                             selectors=(),
 50 |                             is_not=False,
 51 |                             is_html=False),
 52 |                         rel_type='>',
 53 |                         contains=(),
 54 |                         lang=(),
 55 |                         flags=0),
 56 |                     ),
 57 |                 is_not=False,
 58 |                 is_html=False),
 59 |             rel_type=None,
 60 |             contains=(),
 61 |             lang=(),
 62 |             flags=0),
 63 |         ),
 64 |     is_not=False,
 65 |     is_html=False)
 66 | ```
 67 | 
 68 | """
 69 | from __future__ import annotations
 70 | import re
 71 | from typing import Any
 72 | 
 73 | RE_CLASS = re.compile(r'(?i)[a-z_][_a-z\d\.]+\(')
 74 | RE_PARAM = re.compile(r'(?i)[_a-z][_a-z\d]+=')
 75 | RE_EMPTY = re.compile(r'\(\)|\[\]|\{\}')
 76 | RE_LSTRT = re.compile(r'\[')
 77 | RE_DSTRT = re.compile(r'\{')
 78 | RE_TSTRT = re.compile(r'\(')
 79 | RE_LEND = re.compile(r'\]')
 80 | RE_DEND = re.compile(r'\}')
 81 | RE_TEND = re.compile(r'\)')
 82 | RE_INT = re.compile(r'\d+')
 83 | RE_KWORD = re.compile(r'(?i)[_a-z][_a-z\d]+')
 84 | RE_DQSTR = re.compile(r'"(?:\\.|[^"\\])*"')
 85 | RE_SQSTR = re.compile(r"'(?:\\.|[^'\\])*'")
 86 | RE_SEP = re.compile(r'\s*(,)\s*')
 87 | RE_DSEP = re.compile(r'\s*(:)\s*')
 88 | 
 89 | TOKENS = {
 90 |     'class': RE_CLASS,
 91 |     'param': RE_PARAM,
 92 |     'empty': RE_EMPTY,
 93 |     'lstrt': RE_LSTRT,
 94 |     'dstrt': RE_DSTRT,
 95 |     'tstrt': RE_TSTRT,
 96 |     'lend': RE_LEND,
 97 |     'dend': RE_DEND,
 98 |     'tend': RE_TEND,
 99 |     'sqstr': RE_SQSTR,
100 |     'sep': RE_SEP,
101 |     'dsep': RE_DSEP,
102 |     'int': RE_INT,
103 |     'kword': RE_KWORD,
104 |     'dqstr': RE_DQSTR
105 | }
106 | 
107 | 
108 | def pretty(obj: Any) -> str:  # pragma: no cover
109 |     """Make the object output string pretty."""
110 | 
111 |     sel = str(obj)
112 |     index = 0
113 |     end = len(sel) - 1
114 |     indent = 0
115 |     output = []
116 | 
117 |     while index <= end:
118 |         m = None
119 |         for k, v in TOKENS.items():
120 |             m = v.match(sel, index)
121 | 
122 |             if m:
123 |                 name = k
124 |                 index = m.end(0)
125 |                 if name in ('class', 'lstrt', 'dstrt', 'tstrt'):
126 |                     indent += 4
127 |                     output.append(f'{m.group(0)}\n{" " * indent}')
128 |                 elif name in ('param', 'int', 'kword', 'sqstr', 'dqstr', 'empty'):
129 |                     output.append(m.group(0))
130 |                 elif name in ('lend', 'dend', 'tend'):
131 |                     indent -= 4
132 |                     output.append(m.group(0))
133 |                 elif name in ('sep',):
134 |                     output.append(f'{m.group(1)}\n{" " * indent}')
135 |                 elif name in ('dsep',):
136 |                     output.append(f'{m.group(1)} ')
137 |                 break
138 | 
139 |     return ''.join(output)
140 | 
```

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

```python
 1 | from typing import Dict, Generator
 2 | 
 3 | from pip._vendor.requests.models import Response
 4 | 
 5 | from pip._internal.exceptions import NetworkConnectionError
 6 | 
 7 | # The following comments and HTTP headers were originally added by
 8 | # Donald Stufft in git commit 22c562429a61bb77172039e480873fb239dd8c03.
 9 | #
10 | # We use Accept-Encoding: identity here because requests defaults to
11 | # accepting compressed responses. This breaks in a variety of ways
12 | # depending on how the server is configured.
13 | # - Some servers will notice that the file isn't a compressible file
14 | #   and will leave the file alone and with an empty Content-Encoding
15 | # - Some servers will notice that the file is already compressed and
16 | #   will leave the file alone, adding a Content-Encoding: gzip header
17 | # - Some servers won't notice anything at all and will take a file
18 | #   that's already been compressed and compress it again, and set
19 | #   the Content-Encoding: gzip header
20 | # By setting this to request only the identity encoding we're hoping
21 | # to eliminate the third case.  Hopefully there does not exist a server
22 | # which when given a file will notice it is already compressed and that
23 | # you're not asking for a compressed file and will then decompress it
24 | # before sending because if that's the case I don't think it'll ever be
25 | # possible to make this work.
26 | HEADERS: Dict[str, str] = {"Accept-Encoding": "identity"}
27 | 
28 | DOWNLOAD_CHUNK_SIZE = 256 * 1024
29 | 
30 | 
31 | def raise_for_status(resp: Response) -> None:
32 |     http_error_msg = ""
33 |     if isinstance(resp.reason, bytes):
34 |         # We attempt to decode utf-8 first because some servers
35 |         # choose to localize their reason strings. If the string
36 |         # isn't utf-8, we fall back to iso-8859-1 for all other
37 |         # encodings.
38 |         try:
39 |             reason = resp.reason.decode("utf-8")
40 |         except UnicodeDecodeError:
41 |             reason = resp.reason.decode("iso-8859-1")
42 |     else:
43 |         reason = resp.reason
44 | 
45 |     if 400 <= resp.status_code < 500:
46 |         http_error_msg = (
47 |             f"{resp.status_code} Client Error: {reason} for url: {resp.url}"
48 |         )
49 | 
50 |     elif 500 <= resp.status_code < 600:
51 |         http_error_msg = (
52 |             f"{resp.status_code} Server Error: {reason} for url: {resp.url}"
53 |         )
54 | 
55 |     if http_error_msg:
56 |         raise NetworkConnectionError(http_error_msg, response=resp)
57 | 
58 | 
59 | def response_chunks(
60 |     response: Response, chunk_size: int = DOWNLOAD_CHUNK_SIZE
61 | ) -> Generator[bytes, None, None]:
62 |     """Given a requests Response, provide the data chunks."""
63 |     try:
64 |         # Special case for urllib3.
65 |         for chunk in response.raw.stream(
66 |             chunk_size,
67 |             # We use decode_content=False here because we don't
68 |             # want urllib3 to mess with the raw bytes we get
69 |             # from the server. If we decompress inside of
70 |             # urllib3 then we cannot verify the checksum
71 |             # because the checksum will be of the compressed
72 |             # file. This breakage will only occur if the
73 |             # server adds a Content-Encoding header, which
74 |             # depends on how the server was configured:
75 |             # - Some servers will notice that the file isn't a
76 |             #   compressible file and will leave the file alone
77 |             #   and with an empty Content-Encoding
78 |             # - Some servers will notice that the file is
79 |             #   already compressed and will leave the file
80 |             #   alone and will add a Content-Encoding: gzip
81 |             #   header
82 |             # - Some servers won't notice anything at all and
83 |             #   will take a file that's already been compressed
84 |             #   and compress it again and set the
85 |             #   Content-Encoding: gzip header
86 |             #
87 |             # By setting this not to decode automatically we
88 |             # hope to eliminate problems with the second case.
89 |             decode_content=False,
90 |         ):
91 |             yield chunk
92 |     except AttributeError:
93 |         # Standard file-like object.
94 |         while True:
95 |             chunk = response.raw.read(chunk_size)
96 |             if not chunk:
97 |                 break
98 |             yield chunk
99 | 
```

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

```python
  1 | import pytest
  2 | 
  3 | from bs4.element import Tag
  4 | from bs4.formatter import (
  5 |     Formatter,
  6 |     HTMLFormatter,
  7 |     XMLFormatter,
  8 | )
  9 | from . import SoupTest
 10 | 
 11 | class TestFormatter(SoupTest):
 12 | 
 13 |     def test_default_attributes(self):
 14 |         # Test the default behavior of Formatter.attributes().
 15 |         formatter = Formatter()
 16 |         tag = Tag(name="tag")
 17 |         tag['b'] = 1
 18 |         tag['a'] = 2
 19 | 
 20 |         # Attributes come out sorted by name. In Python 3, attributes
 21 |         # normally come out of a dictionary in the order they were
 22 |         # added.
 23 |         assert [('a', 2), ('b', 1)] == formatter.attributes(tag)
 24 | 
 25 |         # This works even if Tag.attrs is None, though this shouldn't
 26 |         # normally happen.
 27 |         tag.attrs = None
 28 |         assert [] == formatter.attributes(tag)
 29 | 
 30 |         assert ' ' == formatter.indent
 31 |         
 32 |     def test_sort_attributes(self):
 33 |         # Test the ability to override Formatter.attributes() to,
 34 |         # e.g., disable the normal sorting of attributes.
 35 |         class UnsortedFormatter(Formatter):
 36 |             def attributes(self, tag):
 37 |                 self.called_with = tag
 38 |                 for k, v in sorted(tag.attrs.items()):
 39 |                     if k == 'ignore':
 40 |                         continue
 41 |                     yield k,v
 42 | 
 43 |         soup = self.soup('<p cval="1" aval="2" ignore="ignored"></p>')
 44 |         formatter = UnsortedFormatter()
 45 |         decoded = soup.decode(formatter=formatter)
 46 | 
 47 |         # attributes() was called on the <p> tag. It filtered out one
 48 |         # attribute and sorted the other two.
 49 |         assert formatter.called_with == soup.p
 50 |         assert '<p aval="2" cval="1"></p>' == decoded
 51 | 
 52 |     def test_empty_attributes_are_booleans(self):
 53 |         # Test the behavior of empty_attributes_are_booleans as well
 54 |         # as which Formatters have it enabled.
 55 |         
 56 |         for name in ('html', 'minimal', None):
 57 |             formatter = HTMLFormatter.REGISTRY[name]
 58 |             assert False == formatter.empty_attributes_are_booleans
 59 | 
 60 |         formatter = XMLFormatter.REGISTRY[None]
 61 |         assert False == formatter.empty_attributes_are_booleans
 62 | 
 63 |         formatter = HTMLFormatter.REGISTRY['html5']
 64 |         assert True == formatter.empty_attributes_are_booleans
 65 | 
 66 |         # Verify that the constructor sets the value.
 67 |         formatter = Formatter(empty_attributes_are_booleans=True)
 68 |         assert True == formatter.empty_attributes_are_booleans
 69 | 
 70 |         # Now demonstrate what it does to markup.
 71 |         for markup in (
 72 |                 "<option selected></option>",
 73 |                 '<option selected=""></option>'
 74 |         ):
 75 |             soup = self.soup(markup)
 76 |             for formatter in ('html', 'minimal', 'xml', None):
 77 |                 assert b'<option selected=""></option>' == soup.option.encode(formatter='html')
 78 |                 assert b'<option selected></option>' == soup.option.encode(formatter='html5')
 79 | 
 80 |     @pytest.mark.parametrize(
 81 |         "indent,expect",
 82 |         [
 83 |             (None, '<a>\n<b>\ntext\n</b>\n</a>\n'),
 84 |             (-1, '<a>\n<b>\ntext\n</b>\n</a>\n'),
 85 |             (0, '<a>\n<b>\ntext\n</b>\n</a>\n'),
 86 |             ("", '<a>\n<b>\ntext\n</b>\n</a>\n'),
 87 | 
 88 |             (1, '<a>\n <b>\n  text\n </b>\n</a>\n'),
 89 |             (2, '<a>\n  <b>\n    text\n  </b>\n</a>\n'),
 90 | 
 91 |             ("\t", '<a>\n\t<b>\n\t\ttext\n\t</b>\n</a>\n'),
 92 |             ('abc', '<a>\nabc<b>\nabcabctext\nabc</b>\n</a>\n'),
 93 | 
 94 |             # Some invalid inputs -- the default behavior is used.
 95 |             (object(), '<a>\n <b>\n  text\n </b>\n</a>\n'),
 96 |             (b'bytes', '<a>\n <b>\n  text\n </b>\n</a>\n'),
 97 |         ]
 98 |     )
 99 |     def test_indent(self, indent, expect):
100 |         # Pretty-print a tree with a Formatter set to
101 |         # indent in a certain way and verify the results.
102 |         soup = self.soup("<a><b>text</b></a>")
103 |         formatter = Formatter(indent=indent)
104 |         assert soup.prettify(formatter=formatter) == expect
105 | 
106 |         # Pretty-printing only happens with prettify(), not
107 |         # encode().
108 |         assert soup.encode(formatter=formatter) != expect
109 |         
110 |     def test_default_indent_value(self):
111 |         formatter = Formatter()
112 |         assert formatter.indent == ' '
113 | 
114 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/markupsafe/_speedups.c:
--------------------------------------------------------------------------------

```cpp
  1 | #include <Python.h>
  2 | 
  3 | #define GET_DELTA(inp, inp_end, delta) \
  4 | 	while (inp < inp_end) { \
  5 | 		switch (*inp++) { \
  6 | 		case '"': \
  7 | 		case '\'': \
  8 | 		case '&': \
  9 | 			delta += 4; \
 10 | 			break; \
 11 | 		case '<': \
 12 | 		case '>': \
 13 | 			delta += 3; \
 14 | 			break; \
 15 | 		} \
 16 | 	}
 17 | 
 18 | #define DO_ESCAPE(inp, inp_end, outp) \
 19 | 	{ \
 20 | 		Py_ssize_t ncopy = 0; \
 21 | 		while (inp < inp_end) { \
 22 | 			switch (*inp) { \
 23 | 			case '"': \
 24 | 				memcpy(outp, inp-ncopy, sizeof(*outp)*ncopy); \
 25 | 				outp += ncopy; ncopy = 0; \
 26 | 				*outp++ = '&'; \
 27 | 				*outp++ = '#'; \
 28 | 				*outp++ = '3'; \
 29 | 				*outp++ = '4'; \
 30 | 				*outp++ = ';'; \
 31 | 				break; \
 32 | 			case '\'': \
 33 | 				memcpy(outp, inp-ncopy, sizeof(*outp)*ncopy); \
 34 | 				outp += ncopy; ncopy = 0; \
 35 | 				*outp++ = '&'; \
 36 | 				*outp++ = '#'; \
 37 | 				*outp++ = '3'; \
 38 | 				*outp++ = '9'; \
 39 | 				*outp++ = ';'; \
 40 | 				break; \
 41 | 			case '&': \
 42 | 				memcpy(outp, inp-ncopy, sizeof(*outp)*ncopy); \
 43 | 				outp += ncopy; ncopy = 0; \
 44 | 				*outp++ = '&'; \
 45 | 				*outp++ = 'a'; \
 46 | 				*outp++ = 'm'; \
 47 | 				*outp++ = 'p'; \
 48 | 				*outp++ = ';'; \
 49 | 				break; \
 50 | 			case '<': \
 51 | 				memcpy(outp, inp-ncopy, sizeof(*outp)*ncopy); \
 52 | 				outp += ncopy; ncopy = 0; \
 53 | 				*outp++ = '&'; \
 54 | 				*outp++ = 'l'; \
 55 | 				*outp++ = 't'; \
 56 | 				*outp++ = ';'; \
 57 | 				break; \
 58 | 			case '>': \
 59 | 				memcpy(outp, inp-ncopy, sizeof(*outp)*ncopy); \
 60 | 				outp += ncopy; ncopy = 0; \
 61 | 				*outp++ = '&'; \
 62 | 				*outp++ = 'g'; \
 63 | 				*outp++ = 't'; \
 64 | 				*outp++ = ';'; \
 65 | 				break; \
 66 | 			default: \
 67 | 				ncopy++; \
 68 | 			} \
 69 | 			inp++; \
 70 | 		} \
 71 | 		memcpy(outp, inp-ncopy, sizeof(*outp)*ncopy); \
 72 | 	}
 73 | 
 74 | static PyObject*
 75 | escape_unicode_kind1(PyUnicodeObject *in)
 76 | {
 77 | 	Py_UCS1 *inp = PyUnicode_1BYTE_DATA(in);
 78 | 	Py_UCS1 *inp_end = inp + PyUnicode_GET_LENGTH(in);
 79 | 	Py_UCS1 *outp;
 80 | 	PyObject *out;
 81 | 	Py_ssize_t delta = 0;
 82 | 
 83 | 	GET_DELTA(inp, inp_end, delta);
 84 | 	if (!delta) {
 85 | 		Py_INCREF(in);
 86 | 		return (PyObject*)in;
 87 | 	}
 88 | 
 89 | 	out = PyUnicode_New(PyUnicode_GET_LENGTH(in) + delta,
 90 | 						PyUnicode_IS_ASCII(in) ? 127 : 255);
 91 | 	if (!out)
 92 | 		return NULL;
 93 | 
 94 | 	inp = PyUnicode_1BYTE_DATA(in);
 95 | 	outp = PyUnicode_1BYTE_DATA(out);
 96 | 	DO_ESCAPE(inp, inp_end, outp);
 97 | 	return out;
 98 | }
 99 | 
100 | static PyObject*
101 | escape_unicode_kind2(PyUnicodeObject *in)
102 | {
103 | 	Py_UCS2 *inp = PyUnicode_2BYTE_DATA(in);
104 | 	Py_UCS2 *inp_end = inp + PyUnicode_GET_LENGTH(in);
105 | 	Py_UCS2 *outp;
106 | 	PyObject *out;
107 | 	Py_ssize_t delta = 0;
108 | 
109 | 	GET_DELTA(inp, inp_end, delta);
110 | 	if (!delta) {
111 | 		Py_INCREF(in);
112 | 		return (PyObject*)in;
113 | 	}
114 | 
115 | 	out = PyUnicode_New(PyUnicode_GET_LENGTH(in) + delta, 65535);
116 | 	if (!out)
117 | 		return NULL;
118 | 
119 | 	inp = PyUnicode_2BYTE_DATA(in);
120 | 	outp = PyUnicode_2BYTE_DATA(out);
121 | 	DO_ESCAPE(inp, inp_end, outp);
122 | 	return out;
123 | }
124 | 
125 | 
126 | static PyObject*
127 | escape_unicode_kind4(PyUnicodeObject *in)
128 | {
129 | 	Py_UCS4 *inp = PyUnicode_4BYTE_DATA(in);
130 | 	Py_UCS4 *inp_end = inp + PyUnicode_GET_LENGTH(in);
131 | 	Py_UCS4 *outp;
132 | 	PyObject *out;
133 | 	Py_ssize_t delta = 0;
134 | 
135 | 	GET_DELTA(inp, inp_end, delta);
136 | 	if (!delta) {
137 | 		Py_INCREF(in);
138 | 		return (PyObject*)in;
139 | 	}
140 | 
141 | 	out = PyUnicode_New(PyUnicode_GET_LENGTH(in) + delta, 1114111);
142 | 	if (!out)
143 | 		return NULL;
144 | 
145 | 	inp = PyUnicode_4BYTE_DATA(in);
146 | 	outp = PyUnicode_4BYTE_DATA(out);
147 | 	DO_ESCAPE(inp, inp_end, outp);
148 | 	return out;
149 | }
150 | 
151 | static PyObject*
152 | escape_unicode(PyObject *self, PyObject *s)
153 | {
154 | 	if (!PyUnicode_CheckExact(s))
155 | 		return NULL;
156 | 
157 |     // This check is no longer needed in Python 3.12.
158 | 	if (PyUnicode_READY(s))
159 | 		return NULL;
160 | 
161 | 	switch (PyUnicode_KIND(s)) {
162 | 	case PyUnicode_1BYTE_KIND:
163 | 		return escape_unicode_kind1((PyUnicodeObject*) s);
164 | 	case PyUnicode_2BYTE_KIND:
165 | 		return escape_unicode_kind2((PyUnicodeObject*) s);
166 | 	case PyUnicode_4BYTE_KIND:
167 | 		return escape_unicode_kind4((PyUnicodeObject*) s);
168 | 	}
169 | 	assert(0);  /* shouldn't happen */
170 | 	return NULL;
171 | }
172 | 
173 | static PyMethodDef module_methods[] = {
174 | 	{"_escape_inner", (PyCFunction)escape_unicode, METH_O, NULL},
175 | 	{NULL, NULL, 0, NULL}  /* Sentinel */
176 | };
177 | 
178 | static struct PyModuleDef module_definition = {
179 | 	PyModuleDef_HEAD_INIT,
180 | 	"markupsafe._speedups",
181 | 	NULL,
182 | 	-1,
183 | 	module_methods,
184 | 	NULL,
185 | 	NULL,
186 | 	NULL,
187 | 	NULL
188 | };
189 | 
190 | PyMODINIT_FUNC
191 | PyInit__speedups(void)
192 | {
193 | 	PyObject *m = PyModule_Create(&module_definition);
194 | 
195 | 	if (m == NULL) {
196 | 		return NULL;
197 | 	}
198 | 
199 | 	#ifdef Py_GIL_DISABLED
200 | 	PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
201 | 	#endif
202 | 
203 | 	return m;
204 | }
205 | 
```
Page 10/168FirstPrevNextLast