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

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

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

```
  1 | /*
  2 |  * Summary: Unicode character range checking
  3 |  * Description: this module exports interfaces for the character
  4 |  *               range validation APIs
  5 |  *
  6 |  * This file is automatically generated from the cvs source
  7 |  * definition files using the genChRanges.py Python script
  8 |  *
  9 |  * Generation date: Mon Mar 27 11:09:48 2006
 10 |  * Sources: chvalid.def
 11 |  * Author: William Brack <[email protected]>
 12 |  */
 13 | 
 14 | #ifndef __XML_CHVALID_H__
 15 | #define __XML_CHVALID_H__
 16 | 
 17 | #include <libxml/xmlversion.h>
 18 | #include <libxml/xmlstring.h>
 19 | 
 20 | #ifdef __cplusplus
 21 | extern "C" {
 22 | #endif
 23 | 
 24 | /*
 25 |  * Define our typedefs and structures
 26 |  *
 27 |  */
 28 | typedef struct _xmlChSRange xmlChSRange;
 29 | typedef xmlChSRange *xmlChSRangePtr;
 30 | struct _xmlChSRange {
 31 |     unsigned short	low;
 32 |     unsigned short	high;
 33 | };
 34 | 
 35 | typedef struct _xmlChLRange xmlChLRange;
 36 | typedef xmlChLRange *xmlChLRangePtr;
 37 | struct _xmlChLRange {
 38 |     unsigned int	low;
 39 |     unsigned int	high;
 40 | };
 41 | 
 42 | typedef struct _xmlChRangeGroup xmlChRangeGroup;
 43 | typedef xmlChRangeGroup *xmlChRangeGroupPtr;
 44 | struct _xmlChRangeGroup {
 45 |     int			nbShortRange;
 46 |     int			nbLongRange;
 47 |     const xmlChSRange	*shortRange;	/* points to an array of ranges */
 48 |     const xmlChLRange	*longRange;
 49 | };
 50 | 
 51 | /**
 52 |  * Range checking routine
 53 |  */
 54 | XMLPUBFUN int
 55 | 		xmlCharInRange(unsigned int val, const xmlChRangeGroup *group);
 56 | 
 57 | 
 58 | /**
 59 |  * xmlIsBaseChar_ch:
 60 |  * @c: char to validate
 61 |  *
 62 |  * Automatically generated by genChRanges.py
 63 |  */
 64 | #define xmlIsBaseChar_ch(c)	(((0x41 <= (c)) && ((c) <= 0x5a)) || \
 65 | 				 ((0x61 <= (c)) && ((c) <= 0x7a)) || \
 66 | 				 ((0xc0 <= (c)) && ((c) <= 0xd6)) || \
 67 | 				 ((0xd8 <= (c)) && ((c) <= 0xf6)) || \
 68 | 				  (0xf8 <= (c)))
 69 | 
 70 | /**
 71 |  * xmlIsBaseCharQ:
 72 |  * @c: char to validate
 73 |  *
 74 |  * Automatically generated by genChRanges.py
 75 |  */
 76 | #define xmlIsBaseCharQ(c)	(((c) < 0x100) ? \
 77 | 				 xmlIsBaseChar_ch((c)) : \
 78 | 				 xmlCharInRange((c), &xmlIsBaseCharGroup))
 79 | 
 80 | XMLPUBVAR const xmlChRangeGroup xmlIsBaseCharGroup;
 81 | 
 82 | /**
 83 |  * xmlIsBlank_ch:
 84 |  * @c: char to validate
 85 |  *
 86 |  * Automatically generated by genChRanges.py
 87 |  */
 88 | #define xmlIsBlank_ch(c)	(((c) == 0x20) || \
 89 | 				 ((0x9 <= (c)) && ((c) <= 0xa)) || \
 90 | 				 ((c) == 0xd))
 91 | 
 92 | /**
 93 |  * xmlIsBlankQ:
 94 |  * @c: char to validate
 95 |  *
 96 |  * Automatically generated by genChRanges.py
 97 |  */
 98 | #define xmlIsBlankQ(c)		(((c) < 0x100) ? \
 99 | 				 xmlIsBlank_ch((c)) : 0)
100 | 
101 | 
102 | /**
103 |  * xmlIsChar_ch:
104 |  * @c: char to validate
105 |  *
106 |  * Automatically generated by genChRanges.py
107 |  */
108 | #define xmlIsChar_ch(c)		(((0x9 <= (c)) && ((c) <= 0xa)) || \
109 | 				 ((c) == 0xd) || \
110 | 				  (0x20 <= (c)))
111 | 
112 | /**
113 |  * xmlIsCharQ:
114 |  * @c: char to validate
115 |  *
116 |  * Automatically generated by genChRanges.py
117 |  */
118 | #define xmlIsCharQ(c)		(((c) < 0x100) ? \
119 | 				 xmlIsChar_ch((c)) :\
120 | 				(((0x100 <= (c)) && ((c) <= 0xd7ff)) || \
121 | 				 ((0xe000 <= (c)) && ((c) <= 0xfffd)) || \
122 | 				 ((0x10000 <= (c)) && ((c) <= 0x10ffff))))
123 | 
124 | XMLPUBVAR const xmlChRangeGroup xmlIsCharGroup;
125 | 
126 | /**
127 |  * xmlIsCombiningQ:
128 |  * @c: char to validate
129 |  *
130 |  * Automatically generated by genChRanges.py
131 |  */
132 | #define xmlIsCombiningQ(c)	(((c) < 0x100) ? \
133 | 				 0 : \
134 | 				 xmlCharInRange((c), &xmlIsCombiningGroup))
135 | 
136 | XMLPUBVAR const xmlChRangeGroup xmlIsCombiningGroup;
137 | 
138 | /**
139 |  * xmlIsDigit_ch:
140 |  * @c: char to validate
141 |  *
142 |  * Automatically generated by genChRanges.py
143 |  */
144 | #define xmlIsDigit_ch(c)	(((0x30 <= (c)) && ((c) <= 0x39)))
145 | 
146 | /**
147 |  * xmlIsDigitQ:
148 |  * @c: char to validate
149 |  *
150 |  * Automatically generated by genChRanges.py
151 |  */
152 | #define xmlIsDigitQ(c)		(((c) < 0x100) ? \
153 | 				 xmlIsDigit_ch((c)) : \
154 | 				 xmlCharInRange((c), &xmlIsDigitGroup))
155 | 
156 | XMLPUBVAR const xmlChRangeGroup xmlIsDigitGroup;
157 | 
158 | /**
159 |  * xmlIsExtender_ch:
160 |  * @c: char to validate
161 |  *
162 |  * Automatically generated by genChRanges.py
163 |  */
164 | #define xmlIsExtender_ch(c)	(((c) == 0xb7))
165 | 
166 | /**
167 |  * xmlIsExtenderQ:
168 |  * @c: char to validate
169 |  *
170 |  * Automatically generated by genChRanges.py
171 |  */
172 | #define xmlIsExtenderQ(c)	(((c) < 0x100) ? \
173 | 				 xmlIsExtender_ch((c)) : \
174 | 				 xmlCharInRange((c), &xmlIsExtenderGroup))
175 | 
176 | XMLPUBVAR const xmlChRangeGroup xmlIsExtenderGroup;
177 | 
178 | /**
179 |  * xmlIsIdeographicQ:
180 |  * @c: char to validate
181 |  *
182 |  * Automatically generated by genChRanges.py
183 |  */
184 | #define xmlIsIdeographicQ(c)	(((c) < 0x100) ? \
185 | 				 0 :\
186 | 				(((0x4e00 <= (c)) && ((c) <= 0x9fa5)) || \
187 | 				 ((c) == 0x3007) || \
188 | 				 ((0x3021 <= (c)) && ((c) <= 0x3029))))
189 | 
190 | XMLPUBVAR const xmlChRangeGroup xmlIsIdeographicGroup;
191 | XMLPUBVAR const unsigned char xmlIsPubidChar_tab[256];
192 | 
193 | /**
194 |  * xmlIsPubidChar_ch:
195 |  * @c: char to validate
196 |  *
197 |  * Automatically generated by genChRanges.py
198 |  */
199 | #define xmlIsPubidChar_ch(c)	(xmlIsPubidChar_tab[(c)])
200 | 
201 | /**
202 |  * xmlIsPubidCharQ:
203 |  * @c: char to validate
204 |  *
205 |  * Automatically generated by genChRanges.py
206 |  */
207 | #define xmlIsPubidCharQ(c)	(((c) < 0x100) ? \
208 | 				 xmlIsPubidChar_ch((c)) : 0)
209 | 
210 | XMLPUBFUN int
211 | 		xmlIsBaseChar(unsigned int ch);
212 | XMLPUBFUN int
213 | 		xmlIsBlank(unsigned int ch);
214 | XMLPUBFUN int
215 | 		xmlIsChar(unsigned int ch);
216 | XMLPUBFUN int
217 | 		xmlIsCombining(unsigned int ch);
218 | XMLPUBFUN int
219 | 		xmlIsDigit(unsigned int ch);
220 | XMLPUBFUN int
221 | 		xmlIsExtender(unsigned int ch);
222 | XMLPUBFUN int
223 | 		xmlIsIdeographic(unsigned int ch);
224 | XMLPUBFUN int
225 | 		xmlIsPubidChar(unsigned int ch);
226 | 
227 | #ifdef __cplusplus
228 | }
229 | #endif
230 | #endif /* __XML_CHVALID_H__ */
231 | 
```

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

```python
  1 | """
  2 |     pygments.formatters.groff
  3 |     ~~~~~~~~~~~~~~~~~~~~~~~~~
  4 | 
  5 |     Formatter for groff output.
  6 | 
  7 |     :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
  8 |     :license: BSD, see LICENSE for details.
  9 | """
 10 | 
 11 | import math
 12 | from pip._vendor.pygments.formatter import Formatter
 13 | from pip._vendor.pygments.util import get_bool_opt, get_int_opt
 14 | 
 15 | __all__ = ['GroffFormatter']
 16 | 
 17 | 
 18 | class GroffFormatter(Formatter):
 19 |     """
 20 |     Format tokens with groff escapes to change their color and font style.
 21 | 
 22 |     .. versionadded:: 2.11
 23 | 
 24 |     Additional options accepted:
 25 | 
 26 |     `style`
 27 |         The style to use, can be a string or a Style subclass (default:
 28 |         ``'default'``).
 29 | 
 30 |     `monospaced`
 31 |         If set to true, monospace font will be used (default: ``true``).
 32 | 
 33 |     `linenos`
 34 |         If set to true, print the line numbers (default: ``false``).
 35 | 
 36 |     `wrap`
 37 |         Wrap lines to the specified number of characters. Disabled if set to 0
 38 |         (default: ``0``).
 39 |     """
 40 | 
 41 |     name = 'groff'
 42 |     aliases = ['groff','troff','roff']
 43 |     filenames = []
 44 | 
 45 |     def __init__(self, **options):
 46 |         Formatter.__init__(self, **options)
 47 | 
 48 |         self.monospaced = get_bool_opt(options, 'monospaced', True)
 49 |         self.linenos = get_bool_opt(options, 'linenos', False)
 50 |         self._lineno = 0
 51 |         self.wrap = get_int_opt(options, 'wrap', 0)
 52 |         self._linelen = 0
 53 | 
 54 |         self.styles = {}
 55 |         self._make_styles()
 56 | 
 57 | 
 58 |     def _make_styles(self):
 59 |         regular = '\\f[CR]' if self.monospaced else '\\f[R]'
 60 |         bold = '\\f[CB]' if self.monospaced else '\\f[B]'
 61 |         italic = '\\f[CI]' if self.monospaced else '\\f[I]'
 62 | 
 63 |         for ttype, ndef in self.style:
 64 |             start = end = ''
 65 |             if ndef['color']:
 66 |                 start += '\\m[{}]'.format(ndef['color'])
 67 |                 end = '\\m[]' + end
 68 |             if ndef['bold']:
 69 |                 start += bold
 70 |                 end = regular + end
 71 |             if ndef['italic']:
 72 |                 start += italic
 73 |                 end = regular + end
 74 |             if ndef['bgcolor']:
 75 |                 start += '\\M[{}]'.format(ndef['bgcolor'])
 76 |                 end = '\\M[]' + end
 77 | 
 78 |             self.styles[ttype] = start, end
 79 | 
 80 | 
 81 |     def _define_colors(self, outfile):
 82 |         colors = set()
 83 |         for _, ndef in self.style:
 84 |             if ndef['color'] is not None:
 85 |                 colors.add(ndef['color'])
 86 | 
 87 |         for color in sorted(colors):
 88 |             outfile.write('.defcolor ' + color + ' rgb #' + color + '\n')
 89 | 
 90 | 
 91 |     def _write_lineno(self, outfile):
 92 |         self._lineno += 1
 93 |         outfile.write("%s% 4d " % (self._lineno != 1 and '\n' or '', self._lineno))
 94 | 
 95 | 
 96 |     def _wrap_line(self, line):
 97 |         length = len(line.rstrip('\n'))
 98 |         space = '     ' if self.linenos else ''
 99 |         newline = ''
100 | 
101 |         if length > self.wrap:
102 |             for i in range(0, math.floor(length / self.wrap)):
103 |                 chunk = line[i*self.wrap:i*self.wrap+self.wrap]
104 |                 newline += (chunk + '\n' + space)
105 |             remainder = length % self.wrap
106 |             if remainder > 0:
107 |                 newline += line[-remainder-1:]
108 |                 self._linelen = remainder
109 |         elif self._linelen + length > self.wrap:
110 |             newline = ('\n' + space) + line
111 |             self._linelen = length
112 |         else:
113 |             newline = line
114 |             self._linelen += length
115 | 
116 |         return newline
117 | 
118 | 
119 |     def _escape_chars(self, text):
120 |         text = text.replace('\\', '\\[u005C]'). \
121 |                     replace('.', '\\[char46]'). \
122 |                     replace('\'', '\\[u0027]'). \
123 |                     replace('`', '\\[u0060]'). \
124 |                     replace('~', '\\[u007E]')
125 |         copy = text
126 | 
127 |         for char in copy:
128 |             if len(char) != len(char.encode()):
129 |                 uni = char.encode('unicode_escape') \
130 |                     .decode()[1:] \
131 |                     .replace('x', 'u00') \
132 |                     .upper()
133 |                 text = text.replace(char, '\\[u' + uni[1:] + ']')
134 | 
135 |         return text
136 | 
137 | 
138 |     def format_unencoded(self, tokensource, outfile):
139 |         self._define_colors(outfile)
140 | 
141 |         outfile.write('.nf\n\\f[CR]\n')
142 | 
143 |         if self.linenos:
144 |             self._write_lineno(outfile)
145 | 
146 |         for ttype, value in tokensource:
147 |             while ttype not in self.styles:
148 |                 ttype = ttype.parent
149 |             start, end = self.styles[ttype]
150 | 
151 |             for line in value.splitlines(True):
152 |                 if self.wrap > 0:
153 |                     line = self._wrap_line(line)
154 | 
155 |                 if start and end:
156 |                     text = self._escape_chars(line.rstrip('\n'))
157 |                     if text != '':
158 |                         outfile.write(''.join((start, text, end)))
159 |                 else:
160 |                     outfile.write(self._escape_chars(line.rstrip('\n')))
161 | 
162 |                 if line.endswith('\n'):
163 |                     if self.linenos:
164 |                         self._write_lineno(outfile)
165 |                         self._linelen = 0
166 |                     else:
167 |                         outfile.write('\n')
168 |                         self._linelen = 0
169 | 
170 |         outfile.write('\n.fi')
171 | 
```

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

```python
  1 | """Tests of the builder registry."""
  2 | 
  3 | import pytest
  4 | import warnings
  5 | 
  6 | from bs4 import BeautifulSoup
  7 | from bs4.builder import (
  8 |     builder_registry as registry,
  9 |     HTMLParserTreeBuilder,
 10 |     TreeBuilderRegistry,
 11 | )
 12 | 
 13 | from . import (
 14 |     HTML5LIB_PRESENT,
 15 |     LXML_PRESENT,
 16 | )
 17 | 
 18 | if HTML5LIB_PRESENT:
 19 |     from bs4.builder import HTML5TreeBuilder
 20 | 
 21 | if LXML_PRESENT:
 22 |     from bs4.builder import (
 23 |         LXMLTreeBuilderForXML,
 24 |         LXMLTreeBuilder,
 25 |         )
 26 | 
 27 | 
 28 | # TODO: Split out the lxml and html5lib tests into their own classes
 29 | # and gate with pytest.mark.skipIf.
 30 | class TestBuiltInRegistry(object):
 31 |     """Test the built-in registry with the default builders registered."""
 32 | 
 33 |     def test_combination(self):
 34 |         assert registry.lookup('strict', 'html') == HTMLParserTreeBuilder
 35 |         if LXML_PRESENT:
 36 |             assert registry.lookup('fast', 'html') == LXMLTreeBuilder
 37 |             assert registry.lookup('permissive', 'xml') == LXMLTreeBuilderForXML
 38 |         if HTML5LIB_PRESENT:
 39 |             assert registry.lookup('html5lib', 'html') == HTML5TreeBuilder
 40 | 
 41 |     def test_lookup_by_markup_type(self):
 42 |         if LXML_PRESENT:
 43 |             assert registry.lookup('html') == LXMLTreeBuilder
 44 |             assert registry.lookup('xml') == LXMLTreeBuilderForXML
 45 |         else:
 46 |             assert registry.lookup('xml') == None
 47 |             if HTML5LIB_PRESENT:
 48 |                 assert registry.lookup('html') == HTML5TreeBuilder
 49 |             else:
 50 |                 assert registry.lookup('html') == HTMLParserTreeBuilder
 51 | 
 52 |     def test_named_library(self):
 53 |         if LXML_PRESENT:
 54 |             assert registry.lookup('lxml', 'xml') == LXMLTreeBuilderForXML
 55 |             assert registry.lookup('lxml', 'html') == LXMLTreeBuilder
 56 |         if HTML5LIB_PRESENT:
 57 |             assert registry.lookup('html5lib') == HTML5TreeBuilder
 58 | 
 59 |         assert registry.lookup('html.parser') == HTMLParserTreeBuilder
 60 | 
 61 |     def test_beautifulsoup_constructor_does_lookup(self):
 62 | 
 63 |         with warnings.catch_warnings(record=True) as w:
 64 |             # This will create a warning about not explicitly
 65 |             # specifying a parser, but we'll ignore it.
 66 | 
 67 |             # You can pass in a string.
 68 |             BeautifulSoup("", features="html")
 69 |             # Or a list of strings.
 70 |             BeautifulSoup("", features=["html", "fast"])
 71 |             pass
 72 |             
 73 |         # You'll get an exception if BS can't find an appropriate
 74 |         # builder.
 75 |         with pytest.raises(ValueError):
 76 |             BeautifulSoup("", features="no-such-feature")
 77 | 
 78 | class TestRegistry(object):
 79 |     """Test the TreeBuilderRegistry class in general."""
 80 | 
 81 |     def setup_method(self):
 82 |         self.registry = TreeBuilderRegistry()
 83 | 
 84 |     def builder_for_features(self, *feature_list):
 85 |         cls = type('Builder_' + '_'.join(feature_list),
 86 |                    (object,), {'features' : feature_list})
 87 | 
 88 |         self.registry.register(cls)
 89 |         return cls
 90 | 
 91 |     def test_register_with_no_features(self):
 92 |         builder = self.builder_for_features()
 93 | 
 94 |         # Since the builder advertises no features, you can't find it
 95 |         # by looking up features.
 96 |         assert self.registry.lookup('foo') is None
 97 | 
 98 |         # But you can find it by doing a lookup with no features, if
 99 |         # this happens to be the only registered builder.
100 |         assert self.registry.lookup() == builder
101 | 
102 |     def test_register_with_features_makes_lookup_succeed(self):
103 |         builder = self.builder_for_features('foo', 'bar')
104 |         assert self.registry.lookup('foo') is builder
105 |         assert self.registry.lookup('bar') is builder
106 | 
107 |     def test_lookup_fails_when_no_builder_implements_feature(self):
108 |         builder = self.builder_for_features('foo', 'bar')
109 |         assert self.registry.lookup('baz') is None
110 | 
111 |     def test_lookup_gets_most_recent_registration_when_no_feature_specified(self):
112 |         builder1 = self.builder_for_features('foo')
113 |         builder2 = self.builder_for_features('bar')
114 |         assert self.registry.lookup() == builder2
115 | 
116 |     def test_lookup_fails_when_no_tree_builders_registered(self):
117 |         assert self.registry.lookup() is None
118 | 
119 |     def test_lookup_gets_most_recent_builder_supporting_all_features(self):
120 |         has_one = self.builder_for_features('foo')
121 |         has_the_other = self.builder_for_features('bar')
122 |         has_both_early = self.builder_for_features('foo', 'bar', 'baz')
123 |         has_both_late = self.builder_for_features('foo', 'bar', 'quux')
124 |         lacks_one = self.builder_for_features('bar')
125 |         has_the_other = self.builder_for_features('foo')
126 | 
127 |         # There are two builders featuring 'foo' and 'bar', but
128 |         # the one that also features 'quux' was registered later.
129 |         assert self.registry.lookup('foo', 'bar') == has_both_late
130 | 
131 |         # There is only one builder featuring 'foo', 'bar', and 'baz'.
132 |         assert self.registry.lookup('foo', 'bar', 'baz') == has_both_early
133 | 
134 |     def test_lookup_fails_when_cannot_reconcile_requested_features(self):
135 |         builder1 = self.builder_for_features('foo', 'bar')
136 |         builder2 = self.builder_for_features('foo', 'baz')
137 |         assert self.registry.lookup('bar', 'baz') is None
138 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/cli/spinners.py:
--------------------------------------------------------------------------------

```python
  1 | import contextlib
  2 | import itertools
  3 | import logging
  4 | import sys
  5 | import time
  6 | from typing import IO, Generator, Optional
  7 | 
  8 | from pip._internal.utils.compat import WINDOWS
  9 | from pip._internal.utils.logging import get_indentation
 10 | 
 11 | logger = logging.getLogger(__name__)
 12 | 
 13 | 
 14 | class SpinnerInterface:
 15 |     def spin(self) -> None:
 16 |         raise NotImplementedError()
 17 | 
 18 |     def finish(self, final_status: str) -> None:
 19 |         raise NotImplementedError()
 20 | 
 21 | 
 22 | class InteractiveSpinner(SpinnerInterface):
 23 |     def __init__(
 24 |         self,
 25 |         message: str,
 26 |         file: Optional[IO[str]] = None,
 27 |         spin_chars: str = "-\\|/",
 28 |         # Empirically, 8 updates/second looks nice
 29 |         min_update_interval_seconds: float = 0.125,
 30 |     ):
 31 |         self._message = message
 32 |         if file is None:
 33 |             file = sys.stdout
 34 |         self._file = file
 35 |         self._rate_limiter = RateLimiter(min_update_interval_seconds)
 36 |         self._finished = False
 37 | 
 38 |         self._spin_cycle = itertools.cycle(spin_chars)
 39 | 
 40 |         self._file.write(" " * get_indentation() + self._message + " ... ")
 41 |         self._width = 0
 42 | 
 43 |     def _write(self, status: str) -> None:
 44 |         assert not self._finished
 45 |         # Erase what we wrote before by backspacing to the beginning, writing
 46 |         # spaces to overwrite the old text, and then backspacing again
 47 |         backup = "\b" * self._width
 48 |         self._file.write(backup + " " * self._width + backup)
 49 |         # Now we have a blank slate to add our status
 50 |         self._file.write(status)
 51 |         self._width = len(status)
 52 |         self._file.flush()
 53 |         self._rate_limiter.reset()
 54 | 
 55 |     def spin(self) -> None:
 56 |         if self._finished:
 57 |             return
 58 |         if not self._rate_limiter.ready():
 59 |             return
 60 |         self._write(next(self._spin_cycle))
 61 | 
 62 |     def finish(self, final_status: str) -> None:
 63 |         if self._finished:
 64 |             return
 65 |         self._write(final_status)
 66 |         self._file.write("\n")
 67 |         self._file.flush()
 68 |         self._finished = True
 69 | 
 70 | 
 71 | # Used for dumb terminals, non-interactive installs (no tty), etc.
 72 | # We still print updates occasionally (once every 60 seconds by default) to
 73 | # act as a keep-alive for systems like Travis-CI that take lack-of-output as
 74 | # an indication that a task has frozen.
 75 | class NonInteractiveSpinner(SpinnerInterface):
 76 |     def __init__(self, message: str, min_update_interval_seconds: float = 60.0) -> None:
 77 |         self._message = message
 78 |         self._finished = False
 79 |         self._rate_limiter = RateLimiter(min_update_interval_seconds)
 80 |         self._update("started")
 81 | 
 82 |     def _update(self, status: str) -> None:
 83 |         assert not self._finished
 84 |         self._rate_limiter.reset()
 85 |         logger.info("%s: %s", self._message, status)
 86 | 
 87 |     def spin(self) -> None:
 88 |         if self._finished:
 89 |             return
 90 |         if not self._rate_limiter.ready():
 91 |             return
 92 |         self._update("still running...")
 93 | 
 94 |     def finish(self, final_status: str) -> None:
 95 |         if self._finished:
 96 |             return
 97 |         self._update(f"finished with status '{final_status}'")
 98 |         self._finished = True
 99 | 
100 | 
101 | class RateLimiter:
102 |     def __init__(self, min_update_interval_seconds: float) -> None:
103 |         self._min_update_interval_seconds = min_update_interval_seconds
104 |         self._last_update: float = 0
105 | 
106 |     def ready(self) -> bool:
107 |         now = time.time()
108 |         delta = now - self._last_update
109 |         return delta >= self._min_update_interval_seconds
110 | 
111 |     def reset(self) -> None:
112 |         self._last_update = time.time()
113 | 
114 | 
115 | @contextlib.contextmanager
116 | def open_spinner(message: str) -> Generator[SpinnerInterface, None, None]:
117 |     # Interactive spinner goes directly to sys.stdout rather than being routed
118 |     # through the logging system, but it acts like it has level INFO,
119 |     # i.e. it's only displayed if we're at level INFO or better.
120 |     # Non-interactive spinner goes through the logging system, so it is always
121 |     # in sync with logging configuration.
122 |     if sys.stdout.isatty() and logger.getEffectiveLevel() <= logging.INFO:
123 |         spinner: SpinnerInterface = InteractiveSpinner(message)
124 |     else:
125 |         spinner = NonInteractiveSpinner(message)
126 |     try:
127 |         with hidden_cursor(sys.stdout):
128 |             yield spinner
129 |     except KeyboardInterrupt:
130 |         spinner.finish("canceled")
131 |         raise
132 |     except Exception:
133 |         spinner.finish("error")
134 |         raise
135 |     else:
136 |         spinner.finish("done")
137 | 
138 | 
139 | HIDE_CURSOR = "\x1b[?25l"
140 | SHOW_CURSOR = "\x1b[?25h"
141 | 
142 | 
143 | @contextlib.contextmanager
144 | def hidden_cursor(file: IO[str]) -> Generator[None, None, None]:
145 |     # The Windows terminal does not support the hide/show cursor ANSI codes,
146 |     # even via colorama. So don't even try.
147 |     if WINDOWS:
148 |         yield
149 |     # We don't want to clutter the output with control characters if we're
150 |     # writing to a file, or if the user is running with --quiet.
151 |     # See https://github.com/pypa/pip/issues/3418
152 |     elif not file.isatty() or logger.getEffectiveLevel() > logging.INFO:
153 |         yield
154 |     else:
155 |         file.write(HIDE_CURSOR)
156 |         try:
157 |             yield
158 |         finally:
159 |             file.write(SHOW_CURSOR)
160 | 
```

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

```
  1 | /*
  2 |  * Summary: regular expressions handling
  3 |  * Description: basic API for libxml regular expressions handling used
  4 |  *              for XML Schemas and validation.
  5 |  *
  6 |  * Copy: See Copyright for the status of this software.
  7 |  *
  8 |  * Author: Daniel Veillard
  9 |  */
 10 | 
 11 | #ifndef __XML_REGEXP_H__
 12 | #define __XML_REGEXP_H__
 13 | 
 14 | #include <stdio.h>
 15 | #include <libxml/xmlversion.h>
 16 | #include <libxml/xmlstring.h>
 17 | 
 18 | #ifdef LIBXML_REGEXP_ENABLED
 19 | 
 20 | #ifdef __cplusplus
 21 | extern "C" {
 22 | #endif
 23 | 
 24 | /**
 25 |  * xmlRegexpPtr:
 26 |  *
 27 |  * A libxml regular expression, they can actually be far more complex
 28 |  * thank the POSIX regex expressions.
 29 |  */
 30 | typedef struct _xmlRegexp xmlRegexp;
 31 | typedef xmlRegexp *xmlRegexpPtr;
 32 | 
 33 | /**
 34 |  * xmlRegExecCtxtPtr:
 35 |  *
 36 |  * A libxml progressive regular expression evaluation context
 37 |  */
 38 | typedef struct _xmlRegExecCtxt xmlRegExecCtxt;
 39 | typedef xmlRegExecCtxt *xmlRegExecCtxtPtr;
 40 | 
 41 | /*
 42 |  * The POSIX like API
 43 |  */
 44 | XMLPUBFUN xmlRegexpPtr
 45 | 		    xmlRegexpCompile	(const xmlChar *regexp);
 46 | XMLPUBFUN void			 xmlRegFreeRegexp(xmlRegexpPtr regexp);
 47 | XMLPUBFUN int
 48 | 		    xmlRegexpExec	(xmlRegexpPtr comp,
 49 | 					 const xmlChar *value);
 50 | XMLPUBFUN void
 51 | 		    xmlRegexpPrint	(FILE *output,
 52 | 					 xmlRegexpPtr regexp);
 53 | XMLPUBFUN int
 54 | 		    xmlRegexpIsDeterminist(xmlRegexpPtr comp);
 55 | 
 56 | /**
 57 |  * xmlRegExecCallbacks:
 58 |  * @exec: the regular expression context
 59 |  * @token: the current token string
 60 |  * @transdata: transition data
 61 |  * @inputdata: input data
 62 |  *
 63 |  * Callback function when doing a transition in the automata
 64 |  */
 65 | typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec,
 66 | 	                             const xmlChar *token,
 67 | 				     void *transdata,
 68 | 				     void *inputdata);
 69 | 
 70 | /*
 71 |  * The progressive API
 72 |  */
 73 | XMLPUBFUN xmlRegExecCtxtPtr
 74 | 		    xmlRegNewExecCtxt	(xmlRegexpPtr comp,
 75 | 					 xmlRegExecCallbacks callback,
 76 | 					 void *data);
 77 | XMLPUBFUN void
 78 | 		    xmlRegFreeExecCtxt	(xmlRegExecCtxtPtr exec);
 79 | XMLPUBFUN int
 80 | 		    xmlRegExecPushString(xmlRegExecCtxtPtr exec,
 81 | 					 const xmlChar *value,
 82 | 					 void *data);
 83 | XMLPUBFUN int
 84 | 		    xmlRegExecPushString2(xmlRegExecCtxtPtr exec,
 85 | 					 const xmlChar *value,
 86 | 					 const xmlChar *value2,
 87 | 					 void *data);
 88 | 
 89 | XMLPUBFUN int
 90 | 		    xmlRegExecNextValues(xmlRegExecCtxtPtr exec,
 91 | 					 int *nbval,
 92 | 					 int *nbneg,
 93 | 					 xmlChar **values,
 94 | 					 int *terminal);
 95 | XMLPUBFUN int
 96 | 		    xmlRegExecErrInfo	(xmlRegExecCtxtPtr exec,
 97 | 					 const xmlChar **string,
 98 | 					 int *nbval,
 99 | 					 int *nbneg,
100 | 					 xmlChar **values,
101 | 					 int *terminal);
102 | #ifdef LIBXML_EXPR_ENABLED
103 | /*
104 |  * Formal regular expression handling
105 |  * Its goal is to do some formal work on content models
106 |  */
107 | 
108 | /* expressions are used within a context */
109 | typedef struct _xmlExpCtxt xmlExpCtxt;
110 | typedef xmlExpCtxt *xmlExpCtxtPtr;
111 | 
112 | XMLPUBFUN void
113 | 			xmlExpFreeCtxt	(xmlExpCtxtPtr ctxt);
114 | XMLPUBFUN xmlExpCtxtPtr
115 | 			xmlExpNewCtxt	(int maxNodes,
116 | 					 xmlDictPtr dict);
117 | 
118 | XMLPUBFUN int
119 | 			xmlExpCtxtNbNodes(xmlExpCtxtPtr ctxt);
120 | XMLPUBFUN int
121 | 			xmlExpCtxtNbCons(xmlExpCtxtPtr ctxt);
122 | 
123 | /* Expressions are trees but the tree is opaque */
124 | typedef struct _xmlExpNode xmlExpNode;
125 | typedef xmlExpNode *xmlExpNodePtr;
126 | 
127 | typedef enum {
128 |     XML_EXP_EMPTY = 0,
129 |     XML_EXP_FORBID = 1,
130 |     XML_EXP_ATOM = 2,
131 |     XML_EXP_SEQ = 3,
132 |     XML_EXP_OR = 4,
133 |     XML_EXP_COUNT = 5
134 | } xmlExpNodeType;
135 | 
136 | /*
137 |  * 2 core expressions shared by all for the empty language set
138 |  * and for the set with just the empty token
139 |  */
140 | XMLPUBVAR xmlExpNodePtr forbiddenExp;
141 | XMLPUBVAR xmlExpNodePtr emptyExp;
142 | 
143 | /*
144 |  * Expressions are reference counted internally
145 |  */
146 | XMLPUBFUN void
147 | 			xmlExpFree	(xmlExpCtxtPtr ctxt,
148 | 					 xmlExpNodePtr expr);
149 | XMLPUBFUN void
150 | 			xmlExpRef	(xmlExpNodePtr expr);
151 | 
152 | /*
153 |  * constructors can be either manual or from a string
154 |  */
155 | XMLPUBFUN xmlExpNodePtr
156 | 			xmlExpParse	(xmlExpCtxtPtr ctxt,
157 | 					 const char *expr);
158 | XMLPUBFUN xmlExpNodePtr
159 | 			xmlExpNewAtom	(xmlExpCtxtPtr ctxt,
160 | 					 const xmlChar *name,
161 | 					 int len);
162 | XMLPUBFUN xmlExpNodePtr
163 | 			xmlExpNewOr	(xmlExpCtxtPtr ctxt,
164 | 					 xmlExpNodePtr left,
165 | 					 xmlExpNodePtr right);
166 | XMLPUBFUN xmlExpNodePtr
167 | 			xmlExpNewSeq	(xmlExpCtxtPtr ctxt,
168 | 					 xmlExpNodePtr left,
169 | 					 xmlExpNodePtr right);
170 | XMLPUBFUN xmlExpNodePtr
171 | 			xmlExpNewRange	(xmlExpCtxtPtr ctxt,
172 | 					 xmlExpNodePtr subset,
173 | 					 int min,
174 | 					 int max);
175 | /*
176 |  * The really interesting APIs
177 |  */
178 | XMLPUBFUN int
179 | 			xmlExpIsNillable(xmlExpNodePtr expr);
180 | XMLPUBFUN int
181 | 			xmlExpMaxToken	(xmlExpNodePtr expr);
182 | XMLPUBFUN int
183 | 			xmlExpGetLanguage(xmlExpCtxtPtr ctxt,
184 | 					 xmlExpNodePtr expr,
185 | 					 const xmlChar**langList,
186 | 					 int len);
187 | XMLPUBFUN int
188 | 			xmlExpGetStart	(xmlExpCtxtPtr ctxt,
189 | 					 xmlExpNodePtr expr,
190 | 					 const xmlChar**tokList,
191 | 					 int len);
192 | XMLPUBFUN xmlExpNodePtr
193 | 			xmlExpStringDerive(xmlExpCtxtPtr ctxt,
194 | 					 xmlExpNodePtr expr,
195 | 					 const xmlChar *str,
196 | 					 int len);
197 | XMLPUBFUN xmlExpNodePtr
198 | 			xmlExpExpDerive	(xmlExpCtxtPtr ctxt,
199 | 					 xmlExpNodePtr expr,
200 | 					 xmlExpNodePtr sub);
201 | XMLPUBFUN int
202 | 			xmlExpSubsume	(xmlExpCtxtPtr ctxt,
203 | 					 xmlExpNodePtr expr,
204 | 					 xmlExpNodePtr sub);
205 | XMLPUBFUN void
206 | 			xmlExpDump	(xmlBufferPtr buf,
207 | 					 xmlExpNodePtr expr);
208 | #endif /* LIBXML_EXPR_ENABLED */
209 | #ifdef __cplusplus
210 | }
211 | #endif
212 | 
213 | #endif /* LIBXML_REGEXP_ENABLED */
214 | 
215 | #endif /*__XML_REGEXP_H__ */
216 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/serialize.py:
--------------------------------------------------------------------------------

```python
  1 | # SPDX-FileCopyrightText: 2015 Eric Larson
  2 | #
  3 | # SPDX-License-Identifier: Apache-2.0
  4 | from __future__ import annotations
  5 | 
  6 | import io
  7 | from typing import IO, TYPE_CHECKING, Any, Mapping, cast
  8 | 
  9 | from pip._vendor import msgpack
 10 | from pip._vendor.requests.structures import CaseInsensitiveDict
 11 | from pip._vendor.urllib3 import HTTPResponse
 12 | 
 13 | if TYPE_CHECKING:
 14 |     from pip._vendor.requests import PreparedRequest
 15 | 
 16 | 
 17 | class Serializer:
 18 |     serde_version = "4"
 19 | 
 20 |     def dumps(
 21 |         self,
 22 |         request: PreparedRequest,
 23 |         response: HTTPResponse,
 24 |         body: bytes | None = None,
 25 |     ) -> bytes:
 26 |         response_headers: CaseInsensitiveDict[str] = CaseInsensitiveDict(
 27 |             response.headers
 28 |         )
 29 | 
 30 |         if body is None:
 31 |             # When a body isn't passed in, we'll read the response. We
 32 |             # also update the response with a new file handler to be
 33 |             # sure it acts as though it was never read.
 34 |             body = response.read(decode_content=False)
 35 |             response._fp = io.BytesIO(body)  # type: ignore[assignment]
 36 |             response.length_remaining = len(body)
 37 | 
 38 |         data = {
 39 |             "response": {
 40 |                 "body": body,  # Empty bytestring if body is stored separately
 41 |                 "headers": {str(k): str(v) for k, v in response.headers.items()},
 42 |                 "status": response.status,
 43 |                 "version": response.version,
 44 |                 "reason": str(response.reason),
 45 |                 "decode_content": response.decode_content,
 46 |             }
 47 |         }
 48 | 
 49 |         # Construct our vary headers
 50 |         data["vary"] = {}
 51 |         if "vary" in response_headers:
 52 |             varied_headers = response_headers["vary"].split(",")
 53 |             for header in varied_headers:
 54 |                 header = str(header).strip()
 55 |                 header_value = request.headers.get(header, None)
 56 |                 if header_value is not None:
 57 |                     header_value = str(header_value)
 58 |                 data["vary"][header] = header_value
 59 | 
 60 |         return b",".join([f"cc={self.serde_version}".encode(), self.serialize(data)])
 61 | 
 62 |     def serialize(self, data: dict[str, Any]) -> bytes:
 63 |         return cast(bytes, msgpack.dumps(data, use_bin_type=True))
 64 | 
 65 |     def loads(
 66 |         self,
 67 |         request: PreparedRequest,
 68 |         data: bytes,
 69 |         body_file: IO[bytes] | None = None,
 70 |     ) -> HTTPResponse | None:
 71 |         # Short circuit if we've been given an empty set of data
 72 |         if not data:
 73 |             return None
 74 | 
 75 |         # Previous versions of this library supported other serialization
 76 |         # formats, but these have all been removed.
 77 |         if not data.startswith(f"cc={self.serde_version},".encode()):
 78 |             return None
 79 | 
 80 |         data = data[5:]
 81 |         return self._loads_v4(request, data, body_file)
 82 | 
 83 |     def prepare_response(
 84 |         self,
 85 |         request: PreparedRequest,
 86 |         cached: Mapping[str, Any],
 87 |         body_file: IO[bytes] | None = None,
 88 |     ) -> HTTPResponse | None:
 89 |         """Verify our vary headers match and construct a real urllib3
 90 |         HTTPResponse object.
 91 |         """
 92 |         # Special case the '*' Vary value as it means we cannot actually
 93 |         # determine if the cached response is suitable for this request.
 94 |         # This case is also handled in the controller code when creating
 95 |         # a cache entry, but is left here for backwards compatibility.
 96 |         if "*" in cached.get("vary", {}):
 97 |             return None
 98 | 
 99 |         # Ensure that the Vary headers for the cached response match our
100 |         # request
101 |         for header, value in cached.get("vary", {}).items():
102 |             if request.headers.get(header, None) != value:
103 |                 return None
104 | 
105 |         body_raw = cached["response"].pop("body")
106 | 
107 |         headers: CaseInsensitiveDict[str] = CaseInsensitiveDict(
108 |             data=cached["response"]["headers"]
109 |         )
110 |         if headers.get("transfer-encoding", "") == "chunked":
111 |             headers.pop("transfer-encoding")
112 | 
113 |         cached["response"]["headers"] = headers
114 | 
115 |         try:
116 |             body: IO[bytes]
117 |             if body_file is None:
118 |                 body = io.BytesIO(body_raw)
119 |             else:
120 |                 body = body_file
121 |         except TypeError:
122 |             # This can happen if cachecontrol serialized to v1 format (pickle)
123 |             # using Python 2. A Python 2 str(byte string) will be unpickled as
124 |             # a Python 3 str (unicode string), which will cause the above to
125 |             # fail with:
126 |             #
127 |             #     TypeError: 'str' does not support the buffer interface
128 |             body = io.BytesIO(body_raw.encode("utf8"))
129 | 
130 |         # Discard any `strict` parameter serialized by older version of cachecontrol.
131 |         cached["response"].pop("strict", None)
132 | 
133 |         return HTTPResponse(body=body, preload_content=False, **cached["response"])
134 | 
135 |     def _loads_v4(
136 |         self,
137 |         request: PreparedRequest,
138 |         data: bytes,
139 |         body_file: IO[bytes] | None = None,
140 |     ) -> HTTPResponse | None:
141 |         try:
142 |             cached = msgpack.loads(data, raw=False)
143 |         except ValueError:
144 |             return None
145 | 
146 |         return self.prepare_response(request, cached, body_file)
147 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/vcs/mercurial.py:
--------------------------------------------------------------------------------

```python
  1 | import configparser
  2 | import logging
  3 | import os
  4 | from typing import List, Optional, Tuple
  5 | 
  6 | from pip._internal.exceptions import BadCommand, InstallationError
  7 | from pip._internal.utils.misc import HiddenText, display_path
  8 | from pip._internal.utils.subprocess import make_command
  9 | from pip._internal.utils.urls import path_to_url
 10 | from pip._internal.vcs.versioncontrol import (
 11 |     RevOptions,
 12 |     VersionControl,
 13 |     find_path_to_project_root_from_repo_root,
 14 |     vcs,
 15 | )
 16 | 
 17 | logger = logging.getLogger(__name__)
 18 | 
 19 | 
 20 | class Mercurial(VersionControl):
 21 |     name = "hg"
 22 |     dirname = ".hg"
 23 |     repo_name = "clone"
 24 |     schemes = (
 25 |         "hg+file",
 26 |         "hg+http",
 27 |         "hg+https",
 28 |         "hg+ssh",
 29 |         "hg+static-http",
 30 |     )
 31 | 
 32 |     @staticmethod
 33 |     def get_base_rev_args(rev: str) -> List[str]:
 34 |         return [f"--rev={rev}"]
 35 | 
 36 |     def fetch_new(
 37 |         self, dest: str, url: HiddenText, rev_options: RevOptions, verbosity: int
 38 |     ) -> None:
 39 |         rev_display = rev_options.to_display()
 40 |         logger.info(
 41 |             "Cloning hg %s%s to %s",
 42 |             url,
 43 |             rev_display,
 44 |             display_path(dest),
 45 |         )
 46 |         if verbosity <= 0:
 47 |             flags: Tuple[str, ...] = ("--quiet",)
 48 |         elif verbosity == 1:
 49 |             flags = ()
 50 |         elif verbosity == 2:
 51 |             flags = ("--verbose",)
 52 |         else:
 53 |             flags = ("--verbose", "--debug")
 54 |         self.run_command(make_command("clone", "--noupdate", *flags, url, dest))
 55 |         self.run_command(
 56 |             make_command("update", *flags, rev_options.to_args()),
 57 |             cwd=dest,
 58 |         )
 59 | 
 60 |     def switch(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None:
 61 |         repo_config = os.path.join(dest, self.dirname, "hgrc")
 62 |         config = configparser.RawConfigParser()
 63 |         try:
 64 |             config.read(repo_config)
 65 |             config.set("paths", "default", url.secret)
 66 |             with open(repo_config, "w") as config_file:
 67 |                 config.write(config_file)
 68 |         except (OSError, configparser.NoSectionError) as exc:
 69 |             logger.warning("Could not switch Mercurial repository to %s: %s", url, exc)
 70 |         else:
 71 |             cmd_args = make_command("update", "-q", rev_options.to_args())
 72 |             self.run_command(cmd_args, cwd=dest)
 73 | 
 74 |     def update(self, dest: str, url: HiddenText, rev_options: RevOptions) -> None:
 75 |         self.run_command(["pull", "-q"], cwd=dest)
 76 |         cmd_args = make_command("update", "-q", rev_options.to_args())
 77 |         self.run_command(cmd_args, cwd=dest)
 78 | 
 79 |     @classmethod
 80 |     def get_remote_url(cls, location: str) -> str:
 81 |         url = cls.run_command(
 82 |             ["showconfig", "paths.default"],
 83 |             show_stdout=False,
 84 |             stdout_only=True,
 85 |             cwd=location,
 86 |         ).strip()
 87 |         if cls._is_local_repository(url):
 88 |             url = path_to_url(url)
 89 |         return url.strip()
 90 | 
 91 |     @classmethod
 92 |     def get_revision(cls, location: str) -> str:
 93 |         """
 94 |         Return the repository-local changeset revision number, as an integer.
 95 |         """
 96 |         current_revision = cls.run_command(
 97 |             ["parents", "--template={rev}"],
 98 |             show_stdout=False,
 99 |             stdout_only=True,
100 |             cwd=location,
101 |         ).strip()
102 |         return current_revision
103 | 
104 |     @classmethod
105 |     def get_requirement_revision(cls, location: str) -> str:
106 |         """
107 |         Return the changeset identification hash, as a 40-character
108 |         hexadecimal string
109 |         """
110 |         current_rev_hash = cls.run_command(
111 |             ["parents", "--template={node}"],
112 |             show_stdout=False,
113 |             stdout_only=True,
114 |             cwd=location,
115 |         ).strip()
116 |         return current_rev_hash
117 | 
118 |     @classmethod
119 |     def is_commit_id_equal(cls, dest: str, name: Optional[str]) -> bool:
120 |         """Always assume the versions don't match"""
121 |         return False
122 | 
123 |     @classmethod
124 |     def get_subdirectory(cls, location: str) -> Optional[str]:
125 |         """
126 |         Return the path to Python project root, relative to the repo root.
127 |         Return None if the project root is in the repo root.
128 |         """
129 |         # find the repo root
130 |         repo_root = cls.run_command(
131 |             ["root"], show_stdout=False, stdout_only=True, cwd=location
132 |         ).strip()
133 |         if not os.path.isabs(repo_root):
134 |             repo_root = os.path.abspath(os.path.join(location, repo_root))
135 |         return find_path_to_project_root_from_repo_root(location, repo_root)
136 | 
137 |     @classmethod
138 |     def get_repository_root(cls, location: str) -> Optional[str]:
139 |         loc = super().get_repository_root(location)
140 |         if loc:
141 |             return loc
142 |         try:
143 |             r = cls.run_command(
144 |                 ["root"],
145 |                 cwd=location,
146 |                 show_stdout=False,
147 |                 stdout_only=True,
148 |                 on_returncode="raise",
149 |                 log_failed_cmd=False,
150 |             )
151 |         except BadCommand:
152 |             logger.debug(
153 |                 "could not determine if %s is under hg control "
154 |                 "because hg is not available",
155 |                 location,
156 |             )
157 |             return None
158 |         except InstallationError:
159 |             return None
160 |         return os.path.normpath(r.rstrip("\r\n"))
161 | 
162 | 
163 | vcs.register(Mercurial)
164 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/distlib/markers.py:
--------------------------------------------------------------------------------

```python
  1 | # -*- coding: utf-8 -*-
  2 | #
  3 | # Copyright (C) 2012-2023 Vinay Sajip.
  4 | # Licensed to the Python Software Foundation under a contributor agreement.
  5 | # See LICENSE.txt and CONTRIBUTORS.txt.
  6 | #
  7 | """
  8 | Parser for the environment markers micro-language defined in PEP 508.
  9 | """
 10 | 
 11 | # Note: In PEP 345, the micro-language was Python compatible, so the ast
 12 | # module could be used to parse it. However, PEP 508 introduced operators such
 13 | # as ~= and === which aren't in Python, necessitating a different approach.
 14 | 
 15 | import os
 16 | import re
 17 | import sys
 18 | import platform
 19 | 
 20 | from .compat import string_types
 21 | from .util import in_venv, parse_marker
 22 | from .version import LegacyVersion as LV
 23 | 
 24 | __all__ = ['interpret']
 25 | 
 26 | _VERSION_PATTERN = re.compile(
 27 |     r'((\d+(\.\d+)*\w*)|\'(\d+(\.\d+)*\w*)\'|\"(\d+(\.\d+)*\w*)\")')
 28 | _VERSION_MARKERS = {'python_version', 'python_full_version'}
 29 | 
 30 | 
 31 | def _is_version_marker(s):
 32 |     return isinstance(s, string_types) and s in _VERSION_MARKERS
 33 | 
 34 | 
 35 | def _is_literal(o):
 36 |     if not isinstance(o, string_types) or not o:
 37 |         return False
 38 |     return o[0] in '\'"'
 39 | 
 40 | 
 41 | def _get_versions(s):
 42 |     return {LV(m.groups()[0]) for m in _VERSION_PATTERN.finditer(s)}
 43 | 
 44 | 
 45 | class Evaluator(object):
 46 |     """
 47 |     This class is used to evaluate marker expressions.
 48 |     """
 49 | 
 50 |     operations = {
 51 |         '==': lambda x, y: x == y,
 52 |         '===': lambda x, y: x == y,
 53 |         '~=': lambda x, y: x == y or x > y,
 54 |         '!=': lambda x, y: x != y,
 55 |         '<': lambda x, y: x < y,
 56 |         '<=': lambda x, y: x == y or x < y,
 57 |         '>': lambda x, y: x > y,
 58 |         '>=': lambda x, y: x == y or x > y,
 59 |         'and': lambda x, y: x and y,
 60 |         'or': lambda x, y: x or y,
 61 |         'in': lambda x, y: x in y,
 62 |         'not in': lambda x, y: x not in y,
 63 |     }
 64 | 
 65 |     def evaluate(self, expr, context):
 66 |         """
 67 |         Evaluate a marker expression returned by the :func:`parse_requirement`
 68 |         function in the specified context.
 69 |         """
 70 |         if isinstance(expr, string_types):
 71 |             if expr[0] in '\'"':
 72 |                 result = expr[1:-1]
 73 |             else:
 74 |                 if expr not in context:
 75 |                     raise SyntaxError('unknown variable: %s' % expr)
 76 |                 result = context[expr]
 77 |         else:
 78 |             assert isinstance(expr, dict)
 79 |             op = expr['op']
 80 |             if op not in self.operations:
 81 |                 raise NotImplementedError('op not implemented: %s' % op)
 82 |             elhs = expr['lhs']
 83 |             erhs = expr['rhs']
 84 |             if _is_literal(expr['lhs']) and _is_literal(expr['rhs']):
 85 |                 raise SyntaxError('invalid comparison: %s %s %s' %
 86 |                                   (elhs, op, erhs))
 87 | 
 88 |             lhs = self.evaluate(elhs, context)
 89 |             rhs = self.evaluate(erhs, context)
 90 |             if ((_is_version_marker(elhs) or _is_version_marker(erhs))
 91 |                     and op in ('<', '<=', '>', '>=', '===', '==', '!=', '~=')):
 92 |                 lhs = LV(lhs)
 93 |                 rhs = LV(rhs)
 94 |             elif _is_version_marker(elhs) and op in ('in', 'not in'):
 95 |                 lhs = LV(lhs)
 96 |                 rhs = _get_versions(rhs)
 97 |             result = self.operations[op](lhs, rhs)
 98 |         return result
 99 | 
100 | 
101 | _DIGITS = re.compile(r'\d+\.\d+')
102 | 
103 | 
104 | def default_context():
105 | 
106 |     def format_full_version(info):
107 |         version = '%s.%s.%s' % (info.major, info.minor, info.micro)
108 |         kind = info.releaselevel
109 |         if kind != 'final':
110 |             version += kind[0] + str(info.serial)
111 |         return version
112 | 
113 |     if hasattr(sys, 'implementation'):
114 |         implementation_version = format_full_version(
115 |             sys.implementation.version)
116 |         implementation_name = sys.implementation.name
117 |     else:
118 |         implementation_version = '0'
119 |         implementation_name = ''
120 | 
121 |     ppv = platform.python_version()
122 |     m = _DIGITS.match(ppv)
123 |     pv = m.group(0)
124 |     result = {
125 |         'implementation_name': implementation_name,
126 |         'implementation_version': implementation_version,
127 |         'os_name': os.name,
128 |         'platform_machine': platform.machine(),
129 |         'platform_python_implementation': platform.python_implementation(),
130 |         'platform_release': platform.release(),
131 |         'platform_system': platform.system(),
132 |         'platform_version': platform.version(),
133 |         'platform_in_venv': str(in_venv()),
134 |         'python_full_version': ppv,
135 |         'python_version': pv,
136 |         'sys_platform': sys.platform,
137 |     }
138 |     return result
139 | 
140 | 
141 | DEFAULT_CONTEXT = default_context()
142 | del default_context
143 | 
144 | evaluator = Evaluator()
145 | 
146 | 
147 | def interpret(marker, execution_context=None):
148 |     """
149 |     Interpret a marker and return a result depending on environment.
150 | 
151 |     :param marker: The marker to interpret.
152 |     :type marker: str
153 |     :param execution_context: The context used for name lookup.
154 |     :type execution_context: mapping
155 |     """
156 |     try:
157 |         expr, rest = parse_marker(marker)
158 |     except Exception as e:
159 |         raise SyntaxError('Unable to interpret marker syntax: %s: %s' %
160 |                           (marker, e))
161 |     if rest and rest[0] != '#':
162 |         raise SyntaxError('unexpected trailing data in marker: %s: %s' %
163 |                           (marker, rest))
164 |     context = dict(DEFAULT_CONTEXT)
165 |     if execution_context:
166 |         context.update(execution_context)
167 |     return evaluator.evaluate(expr, context)
168 | 
```

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

```
  1 | /*
  2 |  * Summary: set of routines to process strings
  3 |  * Description: type and interfaces needed for the internal string handling
  4 |  *              of the library, especially UTF8 processing.
  5 |  *
  6 |  * Copy: See Copyright for the status of this software.
  7 |  *
  8 |  * Author: Daniel Veillard
  9 |  */
 10 | 
 11 | #ifndef __XML_STRING_H__
 12 | #define __XML_STRING_H__
 13 | 
 14 | #include <stdarg.h>
 15 | #include <libxml/xmlversion.h>
 16 | 
 17 | #ifdef __cplusplus
 18 | extern "C" {
 19 | #endif
 20 | 
 21 | /**
 22 |  * xmlChar:
 23 |  *
 24 |  * This is a basic byte in an UTF-8 encoded string.
 25 |  * It's unsigned allowing to pinpoint case where char * are assigned
 26 |  * to xmlChar * (possibly making serialization back impossible).
 27 |  */
 28 | typedef unsigned char xmlChar;
 29 | 
 30 | /**
 31 |  * BAD_CAST:
 32 |  *
 33 |  * Macro to cast a string to an xmlChar * when one know its safe.
 34 |  */
 35 | #define BAD_CAST (xmlChar *)
 36 | 
 37 | /*
 38 |  * xmlChar handling
 39 |  */
 40 | XMLPUBFUN xmlChar *
 41 |                 xmlStrdup                (const xmlChar *cur);
 42 | XMLPUBFUN xmlChar *
 43 |                 xmlStrndup               (const xmlChar *cur,
 44 |                                          int len);
 45 | XMLPUBFUN xmlChar *
 46 |                 xmlCharStrndup           (const char *cur,
 47 |                                          int len);
 48 | XMLPUBFUN xmlChar *
 49 |                 xmlCharStrdup            (const char *cur);
 50 | XMLPUBFUN xmlChar *
 51 |                 xmlStrsub                (const xmlChar *str,
 52 |                                          int start,
 53 |                                          int len);
 54 | XMLPUBFUN const xmlChar *
 55 |                 xmlStrchr                (const xmlChar *str,
 56 |                                          xmlChar val);
 57 | XMLPUBFUN const xmlChar *
 58 |                 xmlStrstr                (const xmlChar *str,
 59 |                                          const xmlChar *val);
 60 | XMLPUBFUN const xmlChar *
 61 |                 xmlStrcasestr            (const xmlChar *str,
 62 |                                          const xmlChar *val);
 63 | XMLPUBFUN int
 64 |                 xmlStrcmp                (const xmlChar *str1,
 65 |                                          const xmlChar *str2);
 66 | XMLPUBFUN int
 67 |                 xmlStrncmp               (const xmlChar *str1,
 68 |                                          const xmlChar *str2,
 69 |                                          int len);
 70 | XMLPUBFUN int
 71 |                 xmlStrcasecmp            (const xmlChar *str1,
 72 |                                          const xmlChar *str2);
 73 | XMLPUBFUN int
 74 |                 xmlStrncasecmp           (const xmlChar *str1,
 75 |                                          const xmlChar *str2,
 76 |                                          int len);
 77 | XMLPUBFUN int
 78 |                 xmlStrEqual              (const xmlChar *str1,
 79 |                                          const xmlChar *str2);
 80 | XMLPUBFUN int
 81 |                 xmlStrQEqual             (const xmlChar *pref,
 82 |                                          const xmlChar *name,
 83 |                                          const xmlChar *str);
 84 | XMLPUBFUN int
 85 |                 xmlStrlen                (const xmlChar *str);
 86 | XMLPUBFUN xmlChar *
 87 |                 xmlStrcat                (xmlChar *cur,
 88 |                                          const xmlChar *add);
 89 | XMLPUBFUN xmlChar *
 90 |                 xmlStrncat               (xmlChar *cur,
 91 |                                          const xmlChar *add,
 92 |                                          int len);
 93 | XMLPUBFUN xmlChar *
 94 |                 xmlStrncatNew            (const xmlChar *str1,
 95 |                                          const xmlChar *str2,
 96 |                                          int len);
 97 | XMLPUBFUN int
 98 |                 xmlStrPrintf             (xmlChar *buf,
 99 |                                          int len,
100 |                                          const char *msg,
101 |                                          ...) LIBXML_ATTR_FORMAT(3,4);
102 | XMLPUBFUN int
103 |                 xmlStrVPrintf                (xmlChar *buf,
104 |                                          int len,
105 |                                          const char *msg,
106 |                                          va_list ap) LIBXML_ATTR_FORMAT(3,0);
107 | 
108 | XMLPUBFUN int
109 |         xmlGetUTF8Char                   (const unsigned char *utf,
110 |                                          int *len);
111 | XMLPUBFUN int
112 |         xmlCheckUTF8                     (const unsigned char *utf);
113 | XMLPUBFUN int
114 |         xmlUTF8Strsize                   (const xmlChar *utf,
115 |                                          int len);
116 | XMLPUBFUN xmlChar *
117 |         xmlUTF8Strndup                   (const xmlChar *utf,
118 |                                          int len);
119 | XMLPUBFUN const xmlChar *
120 |         xmlUTF8Strpos                    (const xmlChar *utf,
121 |                                          int pos);
122 | XMLPUBFUN int
123 |         xmlUTF8Strloc                    (const xmlChar *utf,
124 |                                          const xmlChar *utfchar);
125 | XMLPUBFUN xmlChar *
126 |         xmlUTF8Strsub                    (const xmlChar *utf,
127 |                                          int start,
128 |                                          int len);
129 | XMLPUBFUN int
130 |         xmlUTF8Strlen                    (const xmlChar *utf);
131 | XMLPUBFUN int
132 |         xmlUTF8Size                      (const xmlChar *utf);
133 | XMLPUBFUN int
134 |         xmlUTF8Charcmp                   (const xmlChar *utf1,
135 |                                          const xmlChar *utf2);
136 | 
137 | #ifdef __cplusplus
138 | }
139 | #endif
140 | #endif /* __XML_STRING_H__ */
141 | 
```
Page 16/168FirstPrevNextLast