#
tokens: 49673/50000 28/808 files (page 4/168)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 4 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/flask/globals.py:
--------------------------------------------------------------------------------

```python
 1 | from __future__ import annotations
 2 | 
 3 | import typing as t
 4 | from contextvars import ContextVar
 5 | 
 6 | from werkzeug.local import LocalProxy
 7 | 
 8 | if t.TYPE_CHECKING:  # pragma: no cover
 9 |     from .app import Flask
10 |     from .ctx import _AppCtxGlobals
11 |     from .ctx import AppContext
12 |     from .ctx import RequestContext
13 |     from .sessions import SessionMixin
14 |     from .wrappers import Request
15 | 
16 | 
17 | _no_app_msg = """\
18 | Working outside of application context.
19 | 
20 | This typically means that you attempted to use functionality that needed
21 | the current application. To solve this, set up an application context
22 | with app.app_context(). See the documentation for more information.\
23 | """
24 | _cv_app: ContextVar[AppContext] = ContextVar("flask.app_ctx")
25 | app_ctx: AppContext = LocalProxy(  # type: ignore[assignment]
26 |     _cv_app, unbound_message=_no_app_msg
27 | )
28 | current_app: Flask = LocalProxy(  # type: ignore[assignment]
29 |     _cv_app, "app", unbound_message=_no_app_msg
30 | )
31 | g: _AppCtxGlobals = LocalProxy(  # type: ignore[assignment]
32 |     _cv_app, "g", unbound_message=_no_app_msg
33 | )
34 | 
35 | _no_req_msg = """\
36 | Working outside of request context.
37 | 
38 | This typically means that you attempted to use functionality that needed
39 | an active HTTP request. Consult the documentation on testing for
40 | information about how to avoid this problem.\
41 | """
42 | _cv_request: ContextVar[RequestContext] = ContextVar("flask.request_ctx")
43 | request_ctx: RequestContext = LocalProxy(  # type: ignore[assignment]
44 |     _cv_request, unbound_message=_no_req_msg
45 | )
46 | request: Request = LocalProxy(  # type: ignore[assignment]
47 |     _cv_request, "request", unbound_message=_no_req_msg
48 | )
49 | session: SessionMixin = LocalProxy(  # type: ignore[assignment]
50 |     _cv_request, "session", unbound_message=_no_req_msg
51 | )
52 | 
```

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

```python
 1 | """
 2 |     pygments.console
 3 |     ~~~~~~~~~~~~~~~~
 4 | 
 5 |     Format colored console output.
 6 | 
 7 |     :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
 8 |     :license: BSD, see LICENSE for details.
 9 | """
10 | 
11 | esc = "\x1b["
12 | 
13 | codes = {}
14 | codes[""] = ""
15 | codes["reset"] = esc + "39;49;00m"
16 | 
17 | codes["bold"] = esc + "01m"
18 | codes["faint"] = esc + "02m"
19 | codes["standout"] = esc + "03m"
20 | codes["underline"] = esc + "04m"
21 | codes["blink"] = esc + "05m"
22 | codes["overline"] = esc + "06m"
23 | 
24 | dark_colors = ["black", "red", "green", "yellow", "blue",
25 |                "magenta", "cyan", "gray"]
26 | light_colors = ["brightblack", "brightred", "brightgreen", "brightyellow", "brightblue",
27 |                 "brightmagenta", "brightcyan", "white"]
28 | 
29 | x = 30
30 | for dark, light in zip(dark_colors, light_colors):
31 |     codes[dark] = esc + "%im" % x
32 |     codes[light] = esc + "%im" % (60 + x)
33 |     x += 1
34 | 
35 | del dark, light, x
36 | 
37 | codes["white"] = codes["bold"]
38 | 
39 | 
40 | def reset_color():
41 |     return codes["reset"]
42 | 
43 | 
44 | def colorize(color_key, text):
45 |     return codes[color_key] + text + codes["reset"]
46 | 
47 | 
48 | def ansiformat(attr, text):
49 |     """
50 |     Format ``text`` with a color and/or some attributes::
51 | 
52 |         color       normal color
53 |         *color*     bold color
54 |         _color_     underlined color
55 |         +color+     blinking color
56 |     """
57 |     result = []
58 |     if attr[:1] == attr[-1:] == '+':
59 |         result.append(codes['blink'])
60 |         attr = attr[1:-1]
61 |     if attr[:1] == attr[-1:] == '*':
62 |         result.append(codes['bold'])
63 |         attr = attr[1:-1]
64 |     if attr[:1] == attr[-1:] == '_':
65 |         result.append(codes['underline'])
66 |         attr = attr[1:-1]
67 |     result.append(codes[attr])
68 |     result.append(text)
69 |     result.append(codes['reset'])
70 |     return ''.join(result)
71 | 
```

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

```
 1 | /**
 2 |  * Summary: interfaces for thread handling
 3 |  * Description: set of generic threading related routines
 4 |  *              should work with pthreads, Windows native or TLS threads
 5 |  *
 6 |  * Copy: See Copyright for the status of this software.
 7 |  *
 8 |  * Author: Daniel Veillard
 9 |  */
10 | 
11 | #ifndef __XML_THREADS_H__
12 | #define __XML_THREADS_H__
13 | 
14 | #include <libxml/xmlversion.h>
15 | 
16 | #ifdef __cplusplus
17 | extern "C" {
18 | #endif
19 | 
20 | /*
21 |  * xmlMutex are a simple mutual exception locks.
22 |  */
23 | typedef struct _xmlMutex xmlMutex;
24 | typedef xmlMutex *xmlMutexPtr;
25 | 
26 | /*
27 |  * xmlRMutex are reentrant mutual exception locks.
28 |  */
29 | typedef struct _xmlRMutex xmlRMutex;
30 | typedef xmlRMutex *xmlRMutexPtr;
31 | 
32 | XMLPUBFUN int
33 | 			xmlCheckThreadLocalStorage(void);
34 | 
35 | XMLPUBFUN xmlMutexPtr
36 | 			xmlNewMutex	(void);
37 | XMLPUBFUN void
38 | 			xmlMutexLock	(xmlMutexPtr tok);
39 | XMLPUBFUN void
40 | 			xmlMutexUnlock	(xmlMutexPtr tok);
41 | XMLPUBFUN void
42 | 			xmlFreeMutex	(xmlMutexPtr tok);
43 | 
44 | XMLPUBFUN xmlRMutexPtr
45 | 			xmlNewRMutex	(void);
46 | XMLPUBFUN void
47 | 			xmlRMutexLock	(xmlRMutexPtr tok);
48 | XMLPUBFUN void
49 | 			xmlRMutexUnlock	(xmlRMutexPtr tok);
50 | XMLPUBFUN void
51 | 			xmlFreeRMutex	(xmlRMutexPtr tok);
52 | 
53 | /*
54 |  * Library wide APIs.
55 |  */
56 | XML_DEPRECATED
57 | XMLPUBFUN void
58 | 			xmlInitThreads	(void);
59 | XMLPUBFUN void
60 | 			xmlLockLibrary	(void);
61 | XMLPUBFUN void
62 | 			xmlUnlockLibrary(void);
63 | XML_DEPRECATED
64 | XMLPUBFUN int
65 | 			xmlGetThreadId	(void);
66 | XML_DEPRECATED
67 | XMLPUBFUN int
68 | 			xmlIsMainThread	(void);
69 | XML_DEPRECATED
70 | XMLPUBFUN void
71 | 			xmlCleanupThreads(void);
72 | 
73 | /** DOC_DISABLE */
74 | #if defined(LIBXML_THREAD_ENABLED) && defined(_WIN32) && \
75 |     defined(LIBXML_STATIC_FOR_DLL)
76 | int
77 | xmlDllMain(void *hinstDLL, unsigned long fdwReason,
78 |            void *lpvReserved);
79 | #endif
80 | /** DOC_ENABLE */
81 | 
82 | #ifdef __cplusplus
83 | }
84 | #endif
85 | 
86 | 
87 | #endif /* __XML_THREADS_H__ */
88 | 
```

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

```python
 1 | # SPDX-FileCopyrightText: 2015 Eric Larson
 2 | #
 3 | # SPDX-License-Identifier: Apache-2.0
 4 | from __future__ import annotations
 5 | 
 6 | import logging
 7 | from argparse import ArgumentParser
 8 | from typing import TYPE_CHECKING
 9 | 
10 | from pip._vendor import requests
11 | 
12 | from pip._vendor.cachecontrol.adapter import CacheControlAdapter
13 | from pip._vendor.cachecontrol.cache import DictCache
14 | from pip._vendor.cachecontrol.controller import logger
15 | 
16 | if TYPE_CHECKING:
17 |     from argparse import Namespace
18 | 
19 |     from pip._vendor.cachecontrol.controller import CacheController
20 | 
21 | 
22 | def setup_logging() -> None:
23 |     logger.setLevel(logging.DEBUG)
24 |     handler = logging.StreamHandler()
25 |     logger.addHandler(handler)
26 | 
27 | 
28 | def get_session() -> requests.Session:
29 |     adapter = CacheControlAdapter(
30 |         DictCache(), cache_etags=True, serializer=None, heuristic=None
31 |     )
32 |     sess = requests.Session()
33 |     sess.mount("http://", adapter)
34 |     sess.mount("https://", adapter)
35 | 
36 |     sess.cache_controller = adapter.controller  # type: ignore[attr-defined]
37 |     return sess
38 | 
39 | 
40 | def get_args() -> Namespace:
41 |     parser = ArgumentParser()
42 |     parser.add_argument("url", help="The URL to try and cache")
43 |     return parser.parse_args()
44 | 
45 | 
46 | def main() -> None:
47 |     args = get_args()
48 |     sess = get_session()
49 | 
50 |     # Make a request to get a response
51 |     resp = sess.get(args.url)
52 | 
53 |     # Turn on logging
54 |     setup_logging()
55 | 
56 |     # try setting the cache
57 |     cache_controller: CacheController = (
58 |         sess.cache_controller  # type: ignore[attr-defined]
59 |     )
60 |     cache_controller.cache_response(resp.request, resp.raw)
61 | 
62 |     # Now try to get it
63 |     if cache_controller.cached_request(resp.request):
64 |         print("Cached!")
65 |     else:
66 |         print("Not cached :(")
67 | 
68 | 
69 | if __name__ == "__main__":
70 |     main()
71 | 
```

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

```python
 1 | from __future__ import annotations
 2 | 
 3 | from importlib.metadata import version
 4 | 
 5 | __all__ = [
 6 |     "inject_into_urllib3",
 7 |     "extract_from_urllib3",
 8 | ]
 9 | 
10 | import typing
11 | 
12 | orig_HTTPSConnection: typing.Any = None
13 | 
14 | 
15 | def inject_into_urllib3() -> None:
16 |     # First check if h2 version is valid
17 |     h2_version = version("h2")
18 |     if not h2_version.startswith("4."):
19 |         raise ImportError(
20 |             "urllib3 v2 supports h2 version 4.x.x, currently "
21 |             f"the 'h2' module is compiled with {h2_version!r}. "
22 |             "See: https://github.com/urllib3/urllib3/issues/3290"
23 |         )
24 | 
25 |     # Import here to avoid circular dependencies.
26 |     from .. import connection as urllib3_connection
27 |     from .. import util as urllib3_util
28 |     from ..connectionpool import HTTPSConnectionPool
29 |     from ..util import ssl_ as urllib3_util_ssl
30 |     from .connection import HTTP2Connection
31 | 
32 |     global orig_HTTPSConnection
33 |     orig_HTTPSConnection = urllib3_connection.HTTPSConnection
34 | 
35 |     HTTPSConnectionPool.ConnectionCls = HTTP2Connection
36 |     urllib3_connection.HTTPSConnection = HTTP2Connection  # type: ignore[misc]
37 | 
38 |     # TODO: Offer 'http/1.1' as well, but for testing purposes this is handy.
39 |     urllib3_util.ALPN_PROTOCOLS = ["h2"]
40 |     urllib3_util_ssl.ALPN_PROTOCOLS = ["h2"]
41 | 
42 | 
43 | def extract_from_urllib3() -> None:
44 |     from .. import connection as urllib3_connection
45 |     from .. import util as urllib3_util
46 |     from ..connectionpool import HTTPSConnectionPool
47 |     from ..util import ssl_ as urllib3_util_ssl
48 | 
49 |     HTTPSConnectionPool.ConnectionCls = orig_HTTPSConnection
50 |     urllib3_connection.HTTPSConnection = orig_HTTPSConnection  # type: ignore[misc]
51 | 
52 |     urllib3_util.ALPN_PROTOCOLS = ["http/1.1"]
53 |     urllib3_util_ssl.ALPN_PROTOCOLS = ["http/1.1"]
54 | 
```

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

```
 1 | /*
 2 |  * Summary: string dictionary
 3 |  * Description: dictionary of reusable strings, just used to avoid allocation
 4 |  *         and freeing operations.
 5 |  *
 6 |  * Copy: See Copyright for the status of this software.
 7 |  *
 8 |  * Author: Daniel Veillard
 9 |  */
10 | 
11 | #ifndef __XML_DICT_H__
12 | #define __XML_DICT_H__
13 | 
14 | #include <stddef.h>
15 | #include <libxml/xmlversion.h>
16 | #include <libxml/xmlstring.h>
17 | 
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 | 
22 | /*
23 |  * The dictionary.
24 |  */
25 | typedef struct _xmlDict xmlDict;
26 | typedef xmlDict *xmlDictPtr;
27 | 
28 | /*
29 |  * Initializer
30 |  */
31 | XML_DEPRECATED
32 | XMLPUBFUN int  xmlInitializeDict(void);
33 | 
34 | /*
35 |  * Constructor and destructor.
36 |  */
37 | XMLPUBFUN xmlDictPtr
38 | 			xmlDictCreate	(void);
39 | XMLPUBFUN size_t
40 | 			xmlDictSetLimit	(xmlDictPtr dict,
41 |                                          size_t limit);
42 | XMLPUBFUN size_t
43 | 			xmlDictGetUsage (xmlDictPtr dict);
44 | XMLPUBFUN xmlDictPtr
45 | 			xmlDictCreateSub(xmlDictPtr sub);
46 | XMLPUBFUN int
47 | 			xmlDictReference(xmlDictPtr dict);
48 | XMLPUBFUN void
49 | 			xmlDictFree	(xmlDictPtr dict);
50 | 
51 | /*
52 |  * Lookup of entry in the dictionary.
53 |  */
54 | XMLPUBFUN const xmlChar *
55 | 			xmlDictLookup	(xmlDictPtr dict,
56 | 		                         const xmlChar *name,
57 | 		                         int len);
58 | XMLPUBFUN const xmlChar *
59 | 			xmlDictExists	(xmlDictPtr dict,
60 | 		                         const xmlChar *name,
61 | 		                         int len);
62 | XMLPUBFUN const xmlChar *
63 | 			xmlDictQLookup	(xmlDictPtr dict,
64 | 		                         const xmlChar *prefix,
65 | 		                         const xmlChar *name);
66 | XMLPUBFUN int
67 | 			xmlDictOwns	(xmlDictPtr dict,
68 | 					 const xmlChar *str);
69 | XMLPUBFUN int
70 | 			xmlDictSize	(xmlDictPtr dict);
71 | 
72 | /*
73 |  * Cleanup function
74 |  */
75 | XML_DEPRECATED
76 | XMLPUBFUN void
77 |                         xmlDictCleanup  (void);
78 | 
79 | #ifdef __cplusplus
80 | }
81 | #endif
82 | #endif /* ! __XML_DICT_H__ */
83 | 
```

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

```python
 1 | import abc
 2 | from typing import TYPE_CHECKING, Optional
 3 | 
 4 | from pip._internal.metadata.base import BaseDistribution
 5 | from pip._internal.req import InstallRequirement
 6 | 
 7 | if TYPE_CHECKING:
 8 |     from pip._internal.index.package_finder import PackageFinder
 9 | 
10 | 
11 | class AbstractDistribution(metaclass=abc.ABCMeta):
12 |     """A base class for handling installable artifacts.
13 | 
14 |     The requirements for anything installable are as follows:
15 | 
16 |      - we must be able to determine the requirement name
17 |        (or we can't correctly handle the non-upgrade case).
18 | 
19 |      - for packages with setup requirements, we must also be able
20 |        to determine their requirements without installing additional
21 |        packages (for the same reason as run-time dependencies)
22 | 
23 |      - we must be able to create a Distribution object exposing the
24 |        above metadata.
25 | 
26 |      - if we need to do work in the build tracker, we must be able to generate a unique
27 |        string to identify the requirement in the build tracker.
28 |     """
29 | 
30 |     def __init__(self, req: InstallRequirement) -> None:
31 |         super().__init__()
32 |         self.req = req
33 | 
34 |     @abc.abstractproperty
35 |     def build_tracker_id(self) -> Optional[str]:
36 |         """A string that uniquely identifies this requirement to the build tracker.
37 | 
38 |         If None, then this dist has no work to do in the build tracker, and
39 |         ``.prepare_distribution_metadata()`` will not be called."""
40 |         raise NotImplementedError()
41 | 
42 |     @abc.abstractmethod
43 |     def get_metadata_distribution(self) -> BaseDistribution:
44 |         raise NotImplementedError()
45 | 
46 |     @abc.abstractmethod
47 |     def prepare_distribution_metadata(
48 |         self,
49 |         finder: "PackageFinder",
50 |         build_isolation: bool,
51 |         check_build_deps: bool,
52 |     ) -> None:
53 |         raise NotImplementedError()
54 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/fake_useragent/utils.py:
--------------------------------------------------------------------------------

```python
 1 | import json
 2 | import sys
 3 | 
 4 | # We need files() from Python 3.10 or higher
 5 | if sys.version_info >= (3, 10):
 6 |     import importlib.resources as ilr
 7 | else:
 8 |     import importlib_resources as ilr
 9 | 
10 | from fake_useragent.log import logger
11 | 
12 | str_types = (str,)
13 | 
14 | 
15 | # Load all lines from browser.json file
16 | # Returns array of objects
17 | def load():
18 |     data, ret = [], None
19 |     try:
20 |         json_lines = (
21 |             ilr.files("fake_useragent.data").joinpath("browsers.json").read_text()
22 |         )
23 |         for line in json_lines.splitlines():
24 |             data.append(json.loads(line))
25 |         ret = data
26 |     except Exception as exc:
27 |         # Empty data just to be sure
28 |         data = []
29 |         logger.warning(
30 |             "Unable to find local data/json file or could not parse the contents using importlib-resources. Try pkg-resource next.",
31 |             exc_info=exc,
32 |         )
33 |         try:
34 |             from pkg_resources import resource_filename
35 | 
36 |             with open(
37 |                 resource_filename("fake_useragent", "data/browsers.json")
38 |             ) as file:
39 |                 json_lines = file.read()
40 |                 for line in json_lines.splitlines():
41 |                     data.append(json.loads(line))
42 |             ret = data
43 |         except Exception as exc2:
44 |             # Empty data just to be sure
45 |             data = []
46 |             logger.warning(
47 |                 "Could not find local data/json file or could not parse the contents using pkg-resource.",
48 |                 exc_info=exc2,
49 |             )
50 | 
51 |     if not ret:
52 |         raise FakeUserAgentError("Data list is empty", ret)
53 | 
54 |     if not isinstance(ret, list):
55 |         raise FakeUserAgentError("Data is not a list ", ret)
56 |     return ret
57 | 
58 | 
59 | from fake_useragent import settings  # noqa # isort:skip
60 | from fake_useragent.errors import FakeUserAgentError  # noqa # isort:skip
61 | 
```

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

```python
 1 | """
 2 | requests.compat
 3 | ~~~~~~~~~~~~~~~
 4 | 
 5 | This module previously handled import compatibility issues
 6 | between Python 2 and Python 3. It remains for backwards
 7 | compatibility until the next major version.
 8 | """
 9 | 
10 | import importlib
11 | import sys
12 | 
13 | # -------------------
14 | # Character Detection
15 | # -------------------
16 | 
17 | 
18 | def _resolve_char_detection():
19 |     """Find supported character detection libraries."""
20 |     chardet = None
21 |     for lib in ("chardet", "charset_normalizer"):
22 |         if chardet is None:
23 |             try:
24 |                 chardet = importlib.import_module(lib)
25 |             except ImportError:
26 |                 pass
27 |     return chardet
28 | 
29 | 
30 | chardet = _resolve_char_detection()
31 | 
32 | # -------
33 | # Pythons
34 | # -------
35 | 
36 | # Syntax sugar.
37 | _ver = sys.version_info
38 | 
39 | #: Python 2.x?
40 | is_py2 = _ver[0] == 2
41 | 
42 | #: Python 3.x?
43 | is_py3 = _ver[0] == 3
44 | 
45 | # json/simplejson module import resolution
46 | has_simplejson = False
47 | try:
48 |     import simplejson as json
49 | 
50 |     has_simplejson = True
51 | except ImportError:
52 |     import json
53 | 
54 | if has_simplejson:
55 |     from simplejson import JSONDecodeError
56 | else:
57 |     from json import JSONDecodeError
58 | 
59 | # Keep OrderedDict for backwards compatibility.
60 | from collections import OrderedDict
61 | from collections.abc import Callable, Mapping, MutableMapping
62 | from http import cookiejar as cookielib
63 | from http.cookies import Morsel
64 | from io import StringIO
65 | 
66 | # --------------
67 | # Legacy Imports
68 | # --------------
69 | from urllib.parse import (
70 |     quote,
71 |     quote_plus,
72 |     unquote,
73 |     unquote_plus,
74 |     urldefrag,
75 |     urlencode,
76 |     urljoin,
77 |     urlparse,
78 |     urlsplit,
79 |     urlunparse,
80 | )
81 | from urllib.request import (
82 |     getproxies,
83 |     getproxies_environment,
84 |     parse_http_list,
85 |     proxy_bypass,
86 |     proxy_bypass_environment,
87 | )
88 | 
89 | builtin_str = str
90 | str = str
91 | bytes = bytes
92 | basestring = (str, bytes)
93 | numeric_types = (int, float)
94 | integer_types = (int,)
95 | 
```

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

```python
 1 | """xmlrpclib.Transport implementation
 2 | """
 3 | 
 4 | import logging
 5 | import urllib.parse
 6 | import xmlrpc.client
 7 | from typing import TYPE_CHECKING, Tuple
 8 | 
 9 | from pip._internal.exceptions import NetworkConnectionError
10 | from pip._internal.network.session import PipSession
11 | from pip._internal.network.utils import raise_for_status
12 | 
13 | if TYPE_CHECKING:
14 |     from xmlrpc.client import _HostType, _Marshallable
15 | 
16 |     from _typeshed import SizedBuffer
17 | 
18 | logger = logging.getLogger(__name__)
19 | 
20 | 
21 | class PipXmlrpcTransport(xmlrpc.client.Transport):
22 |     """Provide a `xmlrpclib.Transport` implementation via a `PipSession`
23 |     object.
24 |     """
25 | 
26 |     def __init__(
27 |         self, index_url: str, session: PipSession, use_datetime: bool = False
28 |     ) -> None:
29 |         super().__init__(use_datetime)
30 |         index_parts = urllib.parse.urlparse(index_url)
31 |         self._scheme = index_parts.scheme
32 |         self._session = session
33 | 
34 |     def request(
35 |         self,
36 |         host: "_HostType",
37 |         handler: str,
38 |         request_body: "SizedBuffer",
39 |         verbose: bool = False,
40 |     ) -> Tuple["_Marshallable", ...]:
41 |         assert isinstance(host, str)
42 |         parts = (self._scheme, host, handler, None, None, None)
43 |         url = urllib.parse.urlunparse(parts)
44 |         try:
45 |             headers = {"Content-Type": "text/xml"}
46 |             response = self._session.post(
47 |                 url,
48 |                 data=request_body,
49 |                 headers=headers,
50 |                 stream=True,
51 |             )
52 |             raise_for_status(response)
53 |             self.verbose = verbose
54 |             return self.parse_response(response.raw)
55 |         except NetworkConnectionError as exc:
56 |             assert exc.response
57 |             logger.critical(
58 |                 "HTTP error %s while getting %s",
59 |                 exc.response.status_code,
60 |                 url,
61 |             )
62 |             raise
63 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/imports.h:
--------------------------------------------------------------------------------

```
 1 | /*
 2 |  * Summary: interface for the XSLT import support
 3 |  * Description: macros and fuctions needed to implement and
 4 |  *              access the import tree
 5 |  *
 6 |  * Copy: See Copyright for the status of this software.
 7 |  *
 8 |  * Author: Daniel Veillard
 9 |  */
10 | 
11 | #ifndef __XML_XSLT_IMPORTS_H__
12 | #define __XML_XSLT_IMPORTS_H__
13 | 
14 | #include <libxml/tree.h>
15 | #include "xsltexports.h"
16 | #include "xsltInternals.h"
17 | 
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 | 
22 | /**
23 |  * XSLT_GET_IMPORT_PTR:
24 |  *
25 |  * A macro to import pointers from the stylesheet cascading order.
26 |  */
27 | #define XSLT_GET_IMPORT_PTR(res, style, name) {			\
28 |     xsltStylesheetPtr st = style;				\
29 |     res = NULL;							\
30 |     while (st != NULL) {					\
31 | 	if (st->name != NULL) { res = st->name; break; }	\
32 | 	st = xsltNextImport(st);				\
33 |     }}
34 | 
35 | /**
36 |  * XSLT_GET_IMPORT_INT:
37 |  *
38 |  * A macro to import intergers from the stylesheet cascading order.
39 |  */
40 | #define XSLT_GET_IMPORT_INT(res, style, name) {			\
41 |     xsltStylesheetPtr st = style;				\
42 |     res = -1;							\
43 |     while (st != NULL) {					\
44 | 	if (st->name != -1) { res = st->name; break; }	\
45 | 	st = xsltNextImport(st);				\
46 |     }}
47 | 
48 | /*
49 |  * Module interfaces
50 |  */
51 | XSLTPUBFUN int XSLTCALL
52 | 			xsltParseStylesheetImport(xsltStylesheetPtr style,
53 | 						  xmlNodePtr cur);
54 | XSLTPUBFUN int XSLTCALL
55 | 			xsltParseStylesheetInclude
56 | 						 (xsltStylesheetPtr style,
57 | 						  xmlNodePtr cur);
58 | XSLTPUBFUN xsltStylesheetPtr XSLTCALL
59 | 			xsltNextImport		 (xsltStylesheetPtr style);
60 | XSLTPUBFUN int XSLTCALL
61 | 			xsltNeedElemSpaceHandling(xsltTransformContextPtr ctxt);
62 | XSLTPUBFUN int XSLTCALL
63 | 			xsltFindElemSpaceHandling(xsltTransformContextPtr ctxt,
64 | 						  xmlNodePtr node);
65 | XSLTPUBFUN xsltTemplatePtr XSLTCALL
66 | 			xsltFindTemplate	 (xsltTransformContextPtr ctxt,
67 | 						  const xmlChar *name,
68 | 						  const xmlChar *nameURI);
69 | 
70 | #ifdef __cplusplus
71 | }
72 | #endif
73 | 
74 | #endif /* __XML_XSLT_IMPORTS_H__ */
75 | 
76 | 
```

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

```
 1 | /*
 2 |  * Summary: minimal HTTP implementation
 3 |  * Description: minimal HTTP implementation allowing to fetch resources
 4 |  *              like external subset.
 5 |  *
 6 |  * Copy: See Copyright for the status of this software.
 7 |  *
 8 |  * Author: Daniel Veillard
 9 |  */
10 | 
11 | #ifndef __NANO_HTTP_H__
12 | #define __NANO_HTTP_H__
13 | 
14 | #include <libxml/xmlversion.h>
15 | 
16 | #ifdef LIBXML_HTTP_ENABLED
17 | 
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 | XMLPUBFUN void
22 | 	xmlNanoHTTPInit		(void);
23 | XMLPUBFUN void
24 | 	xmlNanoHTTPCleanup	(void);
25 | XMLPUBFUN void
26 | 	xmlNanoHTTPScanProxy	(const char *URL);
27 | XMLPUBFUN int
28 | 	xmlNanoHTTPFetch	(const char *URL,
29 | 				 const char *filename,
30 | 				 char **contentType);
31 | XMLPUBFUN void *
32 | 	xmlNanoHTTPMethod	(const char *URL,
33 | 				 const char *method,
34 | 				 const char *input,
35 | 				 char **contentType,
36 | 				 const char *headers,
37 | 				 int   ilen);
38 | XMLPUBFUN void *
39 | 	xmlNanoHTTPMethodRedir	(const char *URL,
40 | 				 const char *method,
41 | 				 const char *input,
42 | 				 char **contentType,
43 | 				 char **redir,
44 | 				 const char *headers,
45 | 				 int   ilen);
46 | XMLPUBFUN void *
47 | 	xmlNanoHTTPOpen		(const char *URL,
48 | 				 char **contentType);
49 | XMLPUBFUN void *
50 | 	xmlNanoHTTPOpenRedir	(const char *URL,
51 | 				 char **contentType,
52 | 				 char **redir);
53 | XMLPUBFUN int
54 | 	xmlNanoHTTPReturnCode	(void *ctx);
55 | XMLPUBFUN const char *
56 | 	xmlNanoHTTPAuthHeader	(void *ctx);
57 | XMLPUBFUN const char *
58 | 	xmlNanoHTTPRedir	(void *ctx);
59 | XMLPUBFUN int
60 | 	xmlNanoHTTPContentLength( void * ctx );
61 | XMLPUBFUN const char *
62 | 	xmlNanoHTTPEncoding	(void *ctx);
63 | XMLPUBFUN const char *
64 | 	xmlNanoHTTPMimeType	(void *ctx);
65 | XMLPUBFUN int
66 | 	xmlNanoHTTPRead		(void *ctx,
67 | 				 void *dest,
68 | 				 int len);
69 | #ifdef LIBXML_OUTPUT_ENABLED
70 | XMLPUBFUN int
71 | 	xmlNanoHTTPSave		(void *ctxt,
72 | 				 const char *filename);
73 | #endif /* LIBXML_OUTPUT_ENABLED */
74 | XMLPUBFUN void
75 | 	xmlNanoHTTPClose	(void *ctx);
76 | #ifdef __cplusplus
77 | }
78 | #endif
79 | 
80 | #endif /* LIBXML_HTTP_ENABLED */
81 | #endif /* __NANO_HTTP_H__ */
82 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/idna/intranges.py:
--------------------------------------------------------------------------------

```python
 1 | """
 2 | Given a list of integers, made up of (hopefully) a small number of long runs
 3 | of consecutive integers, compute a representation of the form
 4 | ((start1, end1), (start2, end2) ...). Then answer the question "was x present
 5 | in the original list?" in time O(log(# runs)).
 6 | """
 7 | 
 8 | import bisect
 9 | from typing import List, Tuple
10 | 
11 | def intranges_from_list(list_: List[int]) -> Tuple[int, ...]:
12 |     """Represent a list of integers as a sequence of ranges:
13 |     ((start_0, end_0), (start_1, end_1), ...), such that the original
14 |     integers are exactly those x such that start_i <= x < end_i for some i.
15 | 
16 |     Ranges are encoded as single integers (start << 32 | end), not as tuples.
17 |     """
18 | 
19 |     sorted_list = sorted(list_)
20 |     ranges = []
21 |     last_write = -1
22 |     for i in range(len(sorted_list)):
23 |         if i+1 < len(sorted_list):
24 |             if sorted_list[i] == sorted_list[i+1]-1:
25 |                 continue
26 |         current_range = sorted_list[last_write+1:i+1]
27 |         ranges.append(_encode_range(current_range[0], current_range[-1] + 1))
28 |         last_write = i
29 | 
30 |     return tuple(ranges)
31 | 
32 | def _encode_range(start: int, end: int) -> int:
33 |     return (start << 32) | end
34 | 
35 | def _decode_range(r: int) -> Tuple[int, int]:
36 |     return (r >> 32), (r & ((1 << 32) - 1))
37 | 
38 | 
39 | def intranges_contain(int_: int, ranges: Tuple[int, ...]) -> bool:
40 |     """Determine if `int_` falls into one of the ranges in `ranges`."""
41 |     tuple_ = _encode_range(int_, 0)
42 |     pos = bisect.bisect_left(ranges, tuple_)
43 |     # we could be immediately ahead of a tuple (start, end)
44 |     # with start < int_ <= end
45 |     if pos > 0:
46 |         left, right = _decode_range(ranges[pos-1])
47 |         if left <= int_ < right:
48 |             return True
49 |     # or we could be immediately behind a tuple (int_, end)
50 |     if pos < len(ranges):
51 |         left, _ = _decode_range(ranges[pos])
52 |         if left == int_:
53 |             return True
54 |     return False
55 | 
```

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

```python
 1 | """
 2 |     pygments.plugin
 3 |     ~~~~~~~~~~~~~~~
 4 | 
 5 |     Pygments plugin interface.
 6 | 
 7 |     lexer plugins::
 8 | 
 9 |         [pygments.lexers]
10 |         yourlexer = yourmodule:YourLexer
11 | 
12 |     formatter plugins::
13 | 
14 |         [pygments.formatters]
15 |         yourformatter = yourformatter:YourFormatter
16 |         /.ext = yourformatter:YourFormatter
17 | 
18 |     As you can see, you can define extensions for the formatter
19 |     with a leading slash.
20 | 
21 |     syntax plugins::
22 | 
23 |         [pygments.styles]
24 |         yourstyle = yourstyle:YourStyle
25 | 
26 |     filter plugin::
27 | 
28 |         [pygments.filter]
29 |         yourfilter = yourfilter:YourFilter
30 | 
31 | 
32 |     :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
33 |     :license: BSD, see LICENSE for details.
34 | """
35 | from importlib.metadata import entry_points
36 | 
37 | LEXER_ENTRY_POINT = 'pygments.lexers'
38 | FORMATTER_ENTRY_POINT = 'pygments.formatters'
39 | STYLE_ENTRY_POINT = 'pygments.styles'
40 | FILTER_ENTRY_POINT = 'pygments.filters'
41 | 
42 | 
43 | def iter_entry_points(group_name):
44 |     groups = entry_points()
45 |     if hasattr(groups, 'select'):
46 |         # New interface in Python 3.10 and newer versions of the
47 |         # importlib_metadata backport.
48 |         return groups.select(group=group_name)
49 |     else:
50 |         # Older interface, deprecated in Python 3.10 and recent
51 |         # importlib_metadata, but we need it in Python 3.8 and 3.9.
52 |         return groups.get(group_name, [])
53 | 
54 | 
55 | def find_plugin_lexers():
56 |     for entrypoint in iter_entry_points(LEXER_ENTRY_POINT):
57 |         yield entrypoint.load()
58 | 
59 | 
60 | def find_plugin_formatters():
61 |     for entrypoint in iter_entry_points(FORMATTER_ENTRY_POINT):
62 |         yield entrypoint.name, entrypoint.load()
63 | 
64 | 
65 | def find_plugin_styles():
66 |     for entrypoint in iter_entry_points(STYLE_ENTRY_POINT):
67 |         yield entrypoint.name, entrypoint.load()
68 | 
69 | 
70 | def find_plugin_filters():
71 |     for entrypoint in iter_entry_points(FILTER_ENTRY_POINT):
72 |         yield entrypoint.name, entrypoint.load()
73 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/idna/intranges.py:
--------------------------------------------------------------------------------

```python
 1 | """
 2 | Given a list of integers, made up of (hopefully) a small number of long runs
 3 | of consecutive integers, compute a representation of the form
 4 | ((start1, end1), (start2, end2) ...). Then answer the question "was x present
 5 | in the original list?" in time O(log(# runs)).
 6 | """
 7 | 
 8 | import bisect
 9 | from typing import List, Tuple
10 | 
11 | 
12 | def intranges_from_list(list_: List[int]) -> Tuple[int, ...]:
13 |     """Represent a list of integers as a sequence of ranges:
14 |     ((start_0, end_0), (start_1, end_1), ...), such that the original
15 |     integers are exactly those x such that start_i <= x < end_i for some i.
16 | 
17 |     Ranges are encoded as single integers (start << 32 | end), not as tuples.
18 |     """
19 | 
20 |     sorted_list = sorted(list_)
21 |     ranges = []
22 |     last_write = -1
23 |     for i in range(len(sorted_list)):
24 |         if i + 1 < len(sorted_list):
25 |             if sorted_list[i] == sorted_list[i + 1] - 1:
26 |                 continue
27 |         current_range = sorted_list[last_write + 1 : i + 1]
28 |         ranges.append(_encode_range(current_range[0], current_range[-1] + 1))
29 |         last_write = i
30 | 
31 |     return tuple(ranges)
32 | 
33 | 
34 | def _encode_range(start: int, end: int) -> int:
35 |     return (start << 32) | end
36 | 
37 | 
38 | def _decode_range(r: int) -> Tuple[int, int]:
39 |     return (r >> 32), (r & ((1 << 32) - 1))
40 | 
41 | 
42 | def intranges_contain(int_: int, ranges: Tuple[int, ...]) -> bool:
43 |     """Determine if `int_` falls into one of the ranges in `ranges`."""
44 |     tuple_ = _encode_range(int_, 0)
45 |     pos = bisect.bisect_left(ranges, tuple_)
46 |     # we could be immediately ahead of a tuple (start, end)
47 |     # with start < int_ <= end
48 |     if pos > 0:
49 |         left, right = _decode_range(ranges[pos - 1])
50 |         if left <= int_ < right:
51 |             return True
52 |     # or we could be immediately behind a tuple (int_, end)
53 |     if pos < len(ranges):
54 |         left, _ = _decode_range(ranges[pos])
55 |         if left == int_:
56 |             return True
57 |     return False
58 | 
```

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

```python
 1 | from .accept import Accept as Accept
 2 | from .accept import CharsetAccept as CharsetAccept
 3 | from .accept import LanguageAccept as LanguageAccept
 4 | from .accept import MIMEAccept as MIMEAccept
 5 | from .auth import Authorization as Authorization
 6 | from .auth import WWWAuthenticate as WWWAuthenticate
 7 | from .cache_control import RequestCacheControl as RequestCacheControl
 8 | from .cache_control import ResponseCacheControl as ResponseCacheControl
 9 | from .csp import ContentSecurityPolicy as ContentSecurityPolicy
10 | from .etag import ETags as ETags
11 | from .file_storage import FileMultiDict as FileMultiDict
12 | from .file_storage import FileStorage as FileStorage
13 | from .headers import EnvironHeaders as EnvironHeaders
14 | from .headers import Headers as Headers
15 | from .mixins import ImmutableDictMixin as ImmutableDictMixin
16 | from .mixins import ImmutableHeadersMixin as ImmutableHeadersMixin
17 | from .mixins import ImmutableListMixin as ImmutableListMixin
18 | from .mixins import ImmutableMultiDictMixin as ImmutableMultiDictMixin
19 | from .mixins import UpdateDictMixin as UpdateDictMixin
20 | from .range import ContentRange as ContentRange
21 | from .range import IfRange as IfRange
22 | from .range import Range as Range
23 | from .structures import CallbackDict as CallbackDict
24 | from .structures import CombinedMultiDict as CombinedMultiDict
25 | from .structures import HeaderSet as HeaderSet
26 | from .structures import ImmutableDict as ImmutableDict
27 | from .structures import ImmutableList as ImmutableList
28 | from .structures import ImmutableMultiDict as ImmutableMultiDict
29 | from .structures import ImmutableOrderedMultiDict as ImmutableOrderedMultiDict
30 | from .structures import ImmutableTypeConversionDict as ImmutableTypeConversionDict
31 | from .structures import iter_multi_items as iter_multi_items
32 | from .structures import MultiDict as MultiDict
33 | from .structures import OrderedMultiDict as OrderedMultiDict
34 | from .structures import TypeConversionDict as TypeConversionDict
35 | 
```

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

```python
 1 | """
 2 |     pygments.filter
 3 |     ~~~~~~~~~~~~~~~
 4 | 
 5 |     Module that implements the default filter.
 6 | 
 7 |     :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
 8 |     :license: BSD, see LICENSE for details.
 9 | """
10 | 
11 | 
12 | def apply_filters(stream, filters, lexer=None):
13 |     """
14 |     Use this method to apply an iterable of filters to
15 |     a stream. If lexer is given it's forwarded to the
16 |     filter, otherwise the filter receives `None`.
17 |     """
18 |     def _apply(filter_, stream):
19 |         yield from filter_.filter(lexer, stream)
20 |     for filter_ in filters:
21 |         stream = _apply(filter_, stream)
22 |     return stream
23 | 
24 | 
25 | def simplefilter(f):
26 |     """
27 |     Decorator that converts a function into a filter::
28 | 
29 |         @simplefilter
30 |         def lowercase(self, lexer, stream, options):
31 |             for ttype, value in stream:
32 |                 yield ttype, value.lower()
33 |     """
34 |     return type(f.__name__, (FunctionFilter,), {
35 |         '__module__': getattr(f, '__module__'),
36 |         '__doc__': f.__doc__,
37 |         'function': f,
38 |     })
39 | 
40 | 
41 | class Filter:
42 |     """
43 |     Default filter. Subclass this class or use the `simplefilter`
44 |     decorator to create own filters.
45 |     """
46 | 
47 |     def __init__(self, **options):
48 |         self.options = options
49 | 
50 |     def filter(self, lexer, stream):
51 |         raise NotImplementedError()
52 | 
53 | 
54 | class FunctionFilter(Filter):
55 |     """
56 |     Abstract class used by `simplefilter` to create simple
57 |     function filters on the fly. The `simplefilter` decorator
58 |     automatically creates subclasses of this class for
59 |     functions passed to it.
60 |     """
61 |     function = None
62 | 
63 |     def __init__(self, **options):
64 |         if not hasattr(self, 'function'):
65 |             raise TypeError(f'{self.__class__.__name__!r} used without bound function')
66 |         Filter.__init__(self, **options)
67 | 
68 |     def filter(self, lexer, stream):
69 |         # pylint: disable=not-callable
70 |         yield from self.function(lexer, stream, self.options)
71 | 
```

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

```python
 1 | import sys
 2 | from dataclasses import dataclass
 3 | 
 4 | 
 5 | @dataclass
 6 | class WindowsConsoleFeatures:
 7 |     """Windows features available."""
 8 | 
 9 |     vt: bool = False
10 |     """The console supports VT codes."""
11 |     truecolor: bool = False
12 |     """The console supports truecolor."""
13 | 
14 | 
15 | try:
16 |     import ctypes
17 |     from ctypes import LibraryLoader
18 | 
19 |     if sys.platform == "win32":
20 |         windll = LibraryLoader(ctypes.WinDLL)
21 |     else:
22 |         windll = None
23 |         raise ImportError("Not windows")
24 | 
25 |     from pip._vendor.rich._win32_console import (
26 |         ENABLE_VIRTUAL_TERMINAL_PROCESSING,
27 |         GetConsoleMode,
28 |         GetStdHandle,
29 |         LegacyWindowsError,
30 |     )
31 | 
32 | except (AttributeError, ImportError, ValueError):
33 |     # Fallback if we can't load the Windows DLL
34 |     def get_windows_console_features() -> WindowsConsoleFeatures:
35 |         features = WindowsConsoleFeatures()
36 |         return features
37 | 
38 | else:
39 | 
40 |     def get_windows_console_features() -> WindowsConsoleFeatures:
41 |         """Get windows console features.
42 | 
43 |         Returns:
44 |             WindowsConsoleFeatures: An instance of WindowsConsoleFeatures.
45 |         """
46 |         handle = GetStdHandle()
47 |         try:
48 |             console_mode = GetConsoleMode(handle)
49 |             success = True
50 |         except LegacyWindowsError:
51 |             console_mode = 0
52 |             success = False
53 |         vt = bool(success and console_mode & ENABLE_VIRTUAL_TERMINAL_PROCESSING)
54 |         truecolor = False
55 |         if vt:
56 |             win_version = sys.getwindowsversion()
57 |             truecolor = win_version.major > 10 or (
58 |                 win_version.major == 10 and win_version.build >= 15063
59 |             )
60 |         features = WindowsConsoleFeatures(vt=vt, truecolor=truecolor)
61 |         return features
62 | 
63 | 
64 | if __name__ == "__main__":
65 |     import platform
66 | 
67 |     features = get_windows_console_features()
68 |     from pip._vendor.rich import print
69 | 
70 |     print(f'platform="{platform.system()}"')
71 |     print(repr(features))
72 | 
```

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

```python
 1 | """Jinja is a template engine written in pure Python. It provides a
 2 | non-XML syntax that supports inline expressions and an optional
 3 | sandboxed environment.
 4 | """
 5 | 
 6 | from .bccache import BytecodeCache as BytecodeCache
 7 | from .bccache import FileSystemBytecodeCache as FileSystemBytecodeCache
 8 | from .bccache import MemcachedBytecodeCache as MemcachedBytecodeCache
 9 | from .environment import Environment as Environment
10 | from .environment import Template as Template
11 | from .exceptions import TemplateAssertionError as TemplateAssertionError
12 | from .exceptions import TemplateError as TemplateError
13 | from .exceptions import TemplateNotFound as TemplateNotFound
14 | from .exceptions import TemplateRuntimeError as TemplateRuntimeError
15 | from .exceptions import TemplatesNotFound as TemplatesNotFound
16 | from .exceptions import TemplateSyntaxError as TemplateSyntaxError
17 | from .exceptions import UndefinedError as UndefinedError
18 | from .loaders import BaseLoader as BaseLoader
19 | from .loaders import ChoiceLoader as ChoiceLoader
20 | from .loaders import DictLoader as DictLoader
21 | from .loaders import FileSystemLoader as FileSystemLoader
22 | from .loaders import FunctionLoader as FunctionLoader
23 | from .loaders import ModuleLoader as ModuleLoader
24 | from .loaders import PackageLoader as PackageLoader
25 | from .loaders import PrefixLoader as PrefixLoader
26 | from .runtime import ChainableUndefined as ChainableUndefined
27 | from .runtime import DebugUndefined as DebugUndefined
28 | from .runtime import make_logging_undefined as make_logging_undefined
29 | from .runtime import StrictUndefined as StrictUndefined
30 | from .runtime import Undefined as Undefined
31 | from .utils import clear_caches as clear_caches
32 | from .utils import is_undefined as is_undefined
33 | from .utils import pass_context as pass_context
34 | from .utils import pass_environment as pass_environment
35 | from .utils import pass_eval_context as pass_eval_context
36 | from .utils import select_autoescape as select_autoescape
37 | 
38 | __version__ = "3.1.4"
39 | 
```

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

```python
 1 | # SPDX-FileCopyrightText: 2015 Eric Larson
 2 | #
 3 | # SPDX-License-Identifier: Apache-2.0
 4 | 
 5 | """
 6 | The cache object API for implementing caches. The default is a thread
 7 | safe in-memory dictionary.
 8 | """
 9 | from __future__ import annotations
10 | 
11 | from threading import Lock
12 | from typing import IO, TYPE_CHECKING, MutableMapping
13 | 
14 | if TYPE_CHECKING:
15 |     from datetime import datetime
16 | 
17 | 
18 | class BaseCache:
19 |     def get(self, key: str) -> bytes | None:
20 |         raise NotImplementedError()
21 | 
22 |     def set(
23 |         self, key: str, value: bytes, expires: int | datetime | None = None
24 |     ) -> None:
25 |         raise NotImplementedError()
26 | 
27 |     def delete(self, key: str) -> None:
28 |         raise NotImplementedError()
29 | 
30 |     def close(self) -> None:
31 |         pass
32 | 
33 | 
34 | class DictCache(BaseCache):
35 |     def __init__(self, init_dict: MutableMapping[str, bytes] | None = None) -> None:
36 |         self.lock = Lock()
37 |         self.data = init_dict or {}
38 | 
39 |     def get(self, key: str) -> bytes | None:
40 |         return self.data.get(key, None)
41 | 
42 |     def set(
43 |         self, key: str, value: bytes, expires: int | datetime | None = None
44 |     ) -> None:
45 |         with self.lock:
46 |             self.data.update({key: value})
47 | 
48 |     def delete(self, key: str) -> None:
49 |         with self.lock:
50 |             if key in self.data:
51 |                 self.data.pop(key)
52 | 
53 | 
54 | class SeparateBodyBaseCache(BaseCache):
55 |     """
56 |     In this variant, the body is not stored mixed in with the metadata, but is
57 |     passed in (as a bytes-like object) in a separate call to ``set_body()``.
58 | 
59 |     That is, the expected interaction pattern is::
60 | 
61 |         cache.set(key, serialized_metadata)
62 |         cache.set_body(key)
63 | 
64 |     Similarly, the body should be loaded separately via ``get_body()``.
65 |     """
66 | 
67 |     def set_body(self, key: str, body: bytes) -> None:
68 |         raise NotImplementedError()
69 | 
70 |     def get_body(self, key: str) -> IO[bytes] | None:
71 |         """
72 |         Return the body as file-like object.
73 |         """
74 |         raise NotImplementedError()
75 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/click/globals.py:
--------------------------------------------------------------------------------

```python
 1 | import typing as t
 2 | from threading import local
 3 | 
 4 | if t.TYPE_CHECKING:
 5 |     import typing_extensions as te
 6 |     from .core import Context
 7 | 
 8 | _local = local()
 9 | 
10 | 
11 | @t.overload
12 | def get_current_context(silent: "te.Literal[False]" = False) -> "Context":
13 |     ...
14 | 
15 | 
16 | @t.overload
17 | def get_current_context(silent: bool = ...) -> t.Optional["Context"]:
18 |     ...
19 | 
20 | 
21 | def get_current_context(silent: bool = False) -> t.Optional["Context"]:
22 |     """Returns the current click context.  This can be used as a way to
23 |     access the current context object from anywhere.  This is a more implicit
24 |     alternative to the :func:`pass_context` decorator.  This function is
25 |     primarily useful for helpers such as :func:`echo` which might be
26 |     interested in changing its behavior based on the current context.
27 | 
28 |     To push the current context, :meth:`Context.scope` can be used.
29 | 
30 |     .. versionadded:: 5.0
31 | 
32 |     :param silent: if set to `True` the return value is `None` if no context
33 |                    is available.  The default behavior is to raise a
34 |                    :exc:`RuntimeError`.
35 |     """
36 |     try:
37 |         return t.cast("Context", _local.stack[-1])
38 |     except (AttributeError, IndexError) as e:
39 |         if not silent:
40 |             raise RuntimeError("There is no active click context.") from e
41 | 
42 |     return None
43 | 
44 | 
45 | def push_context(ctx: "Context") -> None:
46 |     """Pushes a new context to the current stack."""
47 |     _local.__dict__.setdefault("stack", []).append(ctx)
48 | 
49 | 
50 | def pop_context() -> None:
51 |     """Removes the top level from the stack."""
52 |     _local.stack.pop()
53 | 
54 | 
55 | def resolve_color_default(color: t.Optional[bool] = None) -> t.Optional[bool]:
56 |     """Internal helper to get the default value of the color flag.  If a
57 |     value is passed it's returned unchanged, otherwise it's looked up from
58 |     the current context.
59 |     """
60 |     if color is not None:
61 |         return color
62 | 
63 |     ctx = get_current_context(silent=True)
64 | 
65 |     if ctx is not None:
66 |         return ctx.color
67 | 
68 |     return None
69 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/xslt.h:
--------------------------------------------------------------------------------

```
  1 | /*
  2 |  * Summary: Interfaces, constants and types related to the XSLT engine
  3 |  * Description: Interfaces, constants and types related to the XSLT engine
  4 |  *
  5 |  * Copy: See Copyright for the status of this software.
  6 |  *
  7 |  * Author: Daniel Veillard
  8 |  */
  9 | 
 10 | #ifndef __XML_XSLT_H__
 11 | #define __XML_XSLT_H__
 12 | 
 13 | #include <libxml/tree.h>
 14 | #include "xsltexports.h"
 15 | 
 16 | #ifdef __cplusplus
 17 | extern "C" {
 18 | #endif
 19 | 
 20 | /**
 21 |  * XSLT_DEFAULT_VERSION:
 22 |  *
 23 |  * The default version of XSLT supported.
 24 |  */
 25 | #define XSLT_DEFAULT_VERSION     "1.0"
 26 | 
 27 | /**
 28 |  * XSLT_DEFAULT_VENDOR:
 29 |  *
 30 |  * The XSLT "vendor" string for this processor.
 31 |  */
 32 | #define XSLT_DEFAULT_VENDOR      "libxslt"
 33 | 
 34 | /**
 35 |  * XSLT_DEFAULT_URL:
 36 |  *
 37 |  * The XSLT "vendor" URL for this processor.
 38 |  */
 39 | #define XSLT_DEFAULT_URL         "http://xmlsoft.org/XSLT/"
 40 | 
 41 | /**
 42 |  * XSLT_NAMESPACE:
 43 |  *
 44 |  * The XSLT specification namespace.
 45 |  */
 46 | #define XSLT_NAMESPACE ((const xmlChar *)"http://www.w3.org/1999/XSL/Transform")
 47 | 
 48 | /**
 49 |  * XSLT_PARSE_OPTIONS:
 50 |  *
 51 |  * The set of options to pass to an xmlReadxxx when loading files for
 52 |  * XSLT consumption.
 53 |  */
 54 | #define XSLT_PARSE_OPTIONS \
 55 |  XML_PARSE_NOENT | XML_PARSE_DTDLOAD | XML_PARSE_DTDATTR | XML_PARSE_NOCDATA
 56 | 
 57 | /**
 58 |  * xsltMaxDepth:
 59 |  *
 60 |  * This value is used to detect templates loops.
 61 |  */
 62 | XSLTPUBVAR int xsltMaxDepth;
 63 | 
 64 | /**
 65 |  *  * xsltMaxVars:
 66 |  *   *
 67 |  *    * This value is used to detect templates loops.
 68 |  *     */
 69 | XSLTPUBVAR int xsltMaxVars;
 70 | 
 71 | /**
 72 |  * xsltEngineVersion:
 73 |  *
 74 |  * The version string for libxslt.
 75 |  */
 76 | XSLTPUBVAR const char *xsltEngineVersion;
 77 | 
 78 | /**
 79 |  * xsltLibxsltVersion:
 80 |  *
 81 |  * The version of libxslt compiled.
 82 |  */
 83 | XSLTPUBVAR const int xsltLibxsltVersion;
 84 | 
 85 | /**
 86 |  * xsltLibxmlVersion:
 87 |  *
 88 |  * The version of libxml libxslt was compiled against.
 89 |  */
 90 | XSLTPUBVAR const int xsltLibxmlVersion;
 91 | 
 92 | /*
 93 |  * Global initialization function.
 94 |  */
 95 | 
 96 | XSLTPUBFUN void XSLTCALL
 97 | 		xsltInit		(void);
 98 | 
 99 | /*
100 |  * Global cleanup function.
101 |  */
102 | XSLTPUBFUN void XSLTCALL
103 | 		xsltCleanupGlobals	(void);
104 | 
105 | #ifdef __cplusplus
106 | }
107 | #endif
108 | 
109 | #endif /* __XML_XSLT_H__ */
110 | 
111 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/functions.h:
--------------------------------------------------------------------------------

```
 1 | /*
 2 |  * Summary: interface for the XSLT functions not from XPath
 3 |  * Description: a set of extra functions coming from XSLT but not in XPath
 4 |  *
 5 |  * Copy: See Copyright for the status of this software.
 6 |  *
 7 |  * Author: Daniel Veillard and Bjorn Reese <[email protected]>
 8 |  */
 9 | 
10 | #ifndef __XML_XSLT_FUNCTIONS_H__
11 | #define __XML_XSLT_FUNCTIONS_H__
12 | 
13 | #include <libxml/xpath.h>
14 | #include <libxml/xpathInternals.h>
15 | #include "xsltexports.h"
16 | #include "xsltInternals.h"
17 | 
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 | 
22 | /**
23 |  * XSLT_REGISTER_FUNCTION_LOOKUP:
24 |  *
25 |  * Registering macro, not general purpose at all but used in different modules.
26 |  */
27 | #define XSLT_REGISTER_FUNCTION_LOOKUP(ctxt)			\
28 |     xmlXPathRegisterFuncLookup((ctxt)->xpathCtxt,		\
29 | 	xsltXPathFunctionLookup,				\
30 | 	(void *)(ctxt->xpathCtxt));
31 | 
32 | XSLTPUBFUN xmlXPathFunction XSLTCALL
33 | 	xsltXPathFunctionLookup		(void *vctxt,
34 | 					 const xmlChar *name,
35 | 					 const xmlChar *ns_uri);
36 | 
37 | /*
38 |  * Interfaces for the functions implementations.
39 |  */
40 | 
41 | XSLTPUBFUN void XSLTCALL
42 | 	xsltDocumentFunction		(xmlXPathParserContextPtr ctxt,
43 | 					 int nargs);
44 | XSLTPUBFUN void XSLTCALL
45 | 	xsltKeyFunction			(xmlXPathParserContextPtr ctxt,
46 | 					 int nargs);
47 | XSLTPUBFUN void XSLTCALL
48 | 	xsltUnparsedEntityURIFunction	(xmlXPathParserContextPtr ctxt,
49 | 					 int nargs);
50 | XSLTPUBFUN void XSLTCALL
51 | 	xsltFormatNumberFunction	(xmlXPathParserContextPtr ctxt,
52 | 					 int nargs);
53 | XSLTPUBFUN void XSLTCALL
54 | 	xsltGenerateIdFunction		(xmlXPathParserContextPtr ctxt,
55 | 					 int nargs);
56 | XSLTPUBFUN void XSLTCALL
57 | 	xsltSystemPropertyFunction	(xmlXPathParserContextPtr ctxt,
58 | 					 int nargs);
59 | XSLTPUBFUN void XSLTCALL
60 | 	xsltElementAvailableFunction	(xmlXPathParserContextPtr ctxt,
61 | 					 int nargs);
62 | XSLTPUBFUN void XSLTCALL
63 | 	xsltFunctionAvailableFunction	(xmlXPathParserContextPtr ctxt,
64 | 					 int nargs);
65 | 
66 | /*
67 |  * And the registration
68 |  */
69 | 
70 | XSLTPUBFUN void XSLTCALL
71 | 	xsltRegisterAllFunctions	(xmlXPathContextPtr ctxt);
72 | 
73 | #ifdef __cplusplus
74 | }
75 | #endif
76 | 
77 | #endif /* __XML_XSLT_FUNCTIONS_H__ */
78 | 
79 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/models/selection_prefs.py:
--------------------------------------------------------------------------------

```python
 1 | from typing import Optional
 2 | 
 3 | from pip._internal.models.format_control import FormatControl
 4 | 
 5 | 
 6 | # TODO: This needs Python 3.10's improved slots support for dataclasses
 7 | # to be converted into a dataclass.
 8 | class SelectionPreferences:
 9 |     """
10 |     Encapsulates the candidate selection preferences for downloading
11 |     and installing files.
12 |     """
13 | 
14 |     __slots__ = [
15 |         "allow_yanked",
16 |         "allow_all_prereleases",
17 |         "format_control",
18 |         "prefer_binary",
19 |         "ignore_requires_python",
20 |     ]
21 | 
22 |     # Don't include an allow_yanked default value to make sure each call
23 |     # site considers whether yanked releases are allowed. This also causes
24 |     # that decision to be made explicit in the calling code, which helps
25 |     # people when reading the code.
26 |     def __init__(
27 |         self,
28 |         allow_yanked: bool,
29 |         allow_all_prereleases: bool = False,
30 |         format_control: Optional[FormatControl] = None,
31 |         prefer_binary: bool = False,
32 |         ignore_requires_python: Optional[bool] = None,
33 |     ) -> None:
34 |         """Create a SelectionPreferences object.
35 | 
36 |         :param allow_yanked: Whether files marked as yanked (in the sense
37 |             of PEP 592) are permitted to be candidates for install.
38 |         :param format_control: A FormatControl object or None. Used to control
39 |             the selection of source packages / binary packages when consulting
40 |             the index and links.
41 |         :param prefer_binary: Whether to prefer an old, but valid, binary
42 |             dist over a new source dist.
43 |         :param ignore_requires_python: Whether to ignore incompatible
44 |             "Requires-Python" values in links. Defaults to False.
45 |         """
46 |         if ignore_requires_python is None:
47 |             ignore_requires_python = False
48 | 
49 |         self.allow_yanked = allow_yanked
50 |         self.allow_all_prereleases = allow_all_prereleases
51 |         self.format_control = format_control
52 |         self.prefer_binary = prefer_binary
53 |         self.ignore_requires_python = ignore_requires_python
54 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/numbersInternals.h:
--------------------------------------------------------------------------------

```
 1 | /*
 2 |  * Summary: Implementation of the XSLT number functions
 3 |  * Description: Implementation of the XSLT number functions
 4 |  *
 5 |  * Copy: See Copyright for the status of this software.
 6 |  *
 7 |  * Author: Bjorn Reese <[email protected]> and Daniel Veillard
 8 |  */
 9 | 
10 | #ifndef __XML_XSLT_NUMBERSINTERNALS_H__
11 | #define __XML_XSLT_NUMBERSINTERNALS_H__
12 | 
13 | #include <libxml/tree.h>
14 | #include "xsltexports.h"
15 | 
16 | #ifdef __cplusplus
17 | extern "C" {
18 | #endif
19 | 
20 | struct _xsltCompMatch;
21 | 
22 | /**
23 |  * xsltNumberData:
24 |  *
25 |  * This data structure is just a wrapper to pass xsl:number data in.
26 |  */
27 | typedef struct _xsltNumberData xsltNumberData;
28 | typedef xsltNumberData *xsltNumberDataPtr;
29 | 
30 | struct _xsltNumberData {
31 |     const xmlChar *level;
32 |     const xmlChar *count;
33 |     const xmlChar *from;
34 |     const xmlChar *value;
35 |     const xmlChar *format;
36 |     int has_format;
37 |     int digitsPerGroup;
38 |     int groupingCharacter;
39 |     int groupingCharacterLen;
40 |     xmlDocPtr doc;
41 |     xmlNodePtr node;
42 |     struct _xsltCompMatch *countPat;
43 |     struct _xsltCompMatch *fromPat;
44 | 
45 |     /*
46 |      * accelerators
47 |      */
48 | };
49 | 
50 | /**
51 |  * xsltFormatNumberInfo,:
52 |  *
53 |  * This data structure lists the various parameters needed to format numbers.
54 |  */
55 | typedef struct _xsltFormatNumberInfo xsltFormatNumberInfo;
56 | typedef xsltFormatNumberInfo *xsltFormatNumberInfoPtr;
57 | 
58 | struct _xsltFormatNumberInfo {
59 |     int	    integer_hash;	/* Number of '#' in integer part */
60 |     int	    integer_digits;	/* Number of '0' in integer part */
61 |     int	    frac_digits;	/* Number of '0' in fractional part */
62 |     int	    frac_hash;		/* Number of '#' in fractional part */
63 |     int	    group;		/* Number of chars per display 'group' */
64 |     int     multiplier;		/* Scaling for percent or permille */
65 |     char    add_decimal;	/* Flag for whether decimal point appears in pattern */
66 |     char    is_multiplier_set;	/* Flag to catch multiple occurences of percent/permille */
67 |     char    is_negative_pattern;/* Flag for processing -ve prefix/suffix */
68 | };
69 | 
70 | #ifdef __cplusplus
71 | }
72 | #endif
73 | #endif /* __XML_XSLT_NUMBERSINTERNALS_H__ */
74 | 
```

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

```python
 1 | """
 2 |     pygments.styles
 3 |     ~~~~~~~~~~~~~~~
 4 | 
 5 |     Contains built-in styles.
 6 | 
 7 |     :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
 8 |     :license: BSD, see LICENSE for details.
 9 | """
10 | 
11 | from pip._vendor.pygments.plugin import find_plugin_styles
12 | from pip._vendor.pygments.util import ClassNotFound
13 | from pip._vendor.pygments.styles._mapping import STYLES
14 | 
15 | #: A dictionary of built-in styles, mapping style names to
16 | #: ``'submodule::classname'`` strings.
17 | #: This list is deprecated. Use `pygments.styles.STYLES` instead
18 | STYLE_MAP = {v[1]: v[0].split('.')[-1] + '::' + k for k, v in STYLES.items()}
19 | 
20 | #: Internal reverse mapping to make `get_style_by_name` more efficient
21 | _STYLE_NAME_TO_MODULE_MAP = {v[1]: (v[0], k) for k, v in STYLES.items()}
22 | 
23 | 
24 | def get_style_by_name(name):
25 |     """
26 |     Return a style class by its short name. The names of the builtin styles
27 |     are listed in :data:`pygments.styles.STYLE_MAP`.
28 | 
29 |     Will raise :exc:`pygments.util.ClassNotFound` if no style of that name is
30 |     found.
31 |     """
32 |     if name in _STYLE_NAME_TO_MODULE_MAP:
33 |         mod, cls = _STYLE_NAME_TO_MODULE_MAP[name]
34 |         builtin = "yes"
35 |     else:
36 |         for found_name, style in find_plugin_styles():
37 |             if name == found_name:
38 |                 return style
39 |         # perhaps it got dropped into our styles package
40 |         builtin = ""
41 |         mod = 'pygments.styles.' + name
42 |         cls = name.title() + "Style"
43 | 
44 |     try:
45 |         mod = __import__(mod, None, None, [cls])
46 |     except ImportError:
47 |         raise ClassNotFound(f"Could not find style module {mod!r}" +
48 |                             (builtin and ", though it should be builtin")
49 |                             + ".")
50 |     try:
51 |         return getattr(mod, cls)
52 |     except AttributeError:
53 |         raise ClassNotFound(f"Could not find style class {cls!r} in style module.")
54 | 
55 | 
56 | def get_all_styles():
57 |     """Return a generator for all styles by name, both builtin and plugin."""
58 |     for v in STYLES.values():
59 |         yield v[1]
60 |     for name, _ in find_plugin_styles():
61 |         yield name
62 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/html/_diffcommand.py:
--------------------------------------------------------------------------------

```python
 1 | import optparse
 2 | import sys
 3 | import re
 4 | import os
 5 | from .diff import htmldiff
 6 | 
 7 | description = """\
 8 | """
 9 | 
10 | parser = optparse.OptionParser(
11 |     usage="%prog [OPTIONS] FILE1 FILE2\n"
12 |     "%prog --annotate [OPTIONS] INFO1 FILE1 INFO2 FILE2 ...",
13 |     description=description,
14 |     )
15 | 
16 | parser.add_option(
17 |     '-o', '--output',
18 |     metavar="FILE",
19 |     dest="output",
20 |     default="-",
21 |     help="File to write the difference to",
22 |     )
23 | 
24 | parser.add_option(
25 |     '-a', '--annotation',
26 |     action="store_true",
27 |     dest="annotation",
28 |     help="Do an annotation")
29 | 
30 | def main(args=None):
31 |     if args is None:
32 |         args = sys.argv[1:]
33 |     options, args = parser.parse_args(args)
34 |     if options.annotation:
35 |         return annotate(options, args)
36 |     if len(args) != 2:
37 |         print('Error: you must give two files')
38 |         parser.print_help()
39 |         sys.exit(1)
40 |     file1, file2 = args
41 |     input1 = read_file(file1)
42 |     input2 = read_file(file2)
43 |     body1 = split_body(input1)[1]
44 |     pre, body2, post = split_body(input2)
45 |     result = htmldiff(body1, body2)
46 |     result = pre + result + post
47 |     if options.output == '-':
48 |         if not result.endswith('\n'):
49 |             result += '\n'
50 |         sys.stdout.write(result)
51 |     else:
52 |         with open(options.output, 'wb') as f:
53 |             f.write(result)
54 | 
55 | def read_file(filename):
56 |     if filename == '-':
57 |         c = sys.stdin.read()
58 |     elif not os.path.exists(filename):
59 |         raise OSError(
60 |             "Input file %s does not exist" % filename)
61 |     else:
62 |         with open(filename, 'rb') as f:
63 |             c = f.read()
64 |     return c
65 | 
66 | body_start_re = re.compile(
67 |     r"<body.*?>", re.I|re.S)
68 | body_end_re = re.compile(
69 |     r"</body.*?>", re.I|re.S)
70 |     
71 | def split_body(html):
72 |     pre = post = ''
73 |     match = body_start_re.search(html)
74 |     if match:
75 |         pre = html[:match.end()]
76 |         html = html[match.end():]
77 |     match = body_end_re.search(html)
78 |     if match:
79 |         post = html[match.start():]
80 |         html = html[:match.start()]
81 |     return pre, html, post
82 | 
83 | def annotate(options, args):
84 |     print("Not yet implemented")
85 |     sys.exit(1)
86 |     
87 | 
```

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

```python
 1 | import functools
 2 | import logging
 3 | import re
 4 | from typing import NewType, Optional, Tuple, cast
 5 | 
 6 | from pip._vendor.packaging import specifiers, version
 7 | from pip._vendor.packaging.requirements import Requirement
 8 | 
 9 | NormalizedExtra = NewType("NormalizedExtra", str)
10 | 
11 | logger = logging.getLogger(__name__)
12 | 
13 | 
14 | def check_requires_python(
15 |     requires_python: Optional[str], version_info: Tuple[int, ...]
16 | ) -> bool:
17 |     """
18 |     Check if the given Python version matches a "Requires-Python" specifier.
19 | 
20 |     :param version_info: A 3-tuple of ints representing a Python
21 |         major-minor-micro version to check (e.g. `sys.version_info[:3]`).
22 | 
23 |     :return: `True` if the given Python version satisfies the requirement.
24 |         Otherwise, return `False`.
25 | 
26 |     :raises InvalidSpecifier: If `requires_python` has an invalid format.
27 |     """
28 |     if requires_python is None:
29 |         # The package provides no information
30 |         return True
31 |     requires_python_specifier = specifiers.SpecifierSet(requires_python)
32 | 
33 |     python_version = version.parse(".".join(map(str, version_info)))
34 |     return python_version in requires_python_specifier
35 | 
36 | 
37 | @functools.lru_cache(maxsize=2048)
38 | def get_requirement(req_string: str) -> Requirement:
39 |     """Construct a packaging.Requirement object with caching"""
40 |     # Parsing requirement strings is expensive, and is also expected to happen
41 |     # with a low diversity of different arguments (at least relative the number
42 |     # constructed). This method adds a cache to requirement object creation to
43 |     # minimize repeated parsing of the same string to construct equivalent
44 |     # Requirement objects.
45 |     return Requirement(req_string)
46 | 
47 | 
48 | def safe_extra(extra: str) -> NormalizedExtra:
49 |     """Convert an arbitrary string to a standard 'extra' name
50 | 
51 |     Any runs of non-alphanumeric characters are replaced with a single '_',
52 |     and the result is always lowercased.
53 | 
54 |     This function is duplicated from ``pkg_resources``. Note that this is not
55 |     the same to either ``canonicalize_name`` or ``_egg_link_name``.
56 |     """
57 |     return cast(NormalizedExtra, re.sub("[^A-Za-z0-9.-]+", "_", extra).lower())
58 | 
```
Page 4/168FirstPrevNextLast