#
tokens: 48627/50000 11/808 files (page 13/168)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 13 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/urllib3/util/connection.py:
--------------------------------------------------------------------------------

```python
  1 | from __future__ import annotations
  2 | 
  3 | import socket
  4 | import typing
  5 | 
  6 | from ..exceptions import LocationParseError
  7 | from .timeout import _DEFAULT_TIMEOUT, _TYPE_TIMEOUT
  8 | 
  9 | _TYPE_SOCKET_OPTIONS = typing.List[typing.Tuple[int, int, typing.Union[int, bytes]]]
 10 | 
 11 | if typing.TYPE_CHECKING:
 12 |     from .._base_connection import BaseHTTPConnection
 13 | 
 14 | 
 15 | def is_connection_dropped(conn: BaseHTTPConnection) -> bool:  # Platform-specific
 16 |     """
 17 |     Returns True if the connection is dropped and should be closed.
 18 |     :param conn: :class:`urllib3.connection.HTTPConnection` object.
 19 |     """
 20 |     return not conn.is_connected
 21 | 
 22 | 
 23 | # This function is copied from socket.py in the Python 2.7 standard
 24 | # library test suite. Added to its signature is only `socket_options`.
 25 | # One additional modification is that we avoid binding to IPv6 servers
 26 | # discovered in DNS if the system doesn't have IPv6 functionality.
 27 | def create_connection(
 28 |     address: tuple[str, int],
 29 |     timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT,
 30 |     source_address: tuple[str, int] | None = None,
 31 |     socket_options: _TYPE_SOCKET_OPTIONS | None = None,
 32 | ) -> socket.socket:
 33 |     """Connect to *address* and return the socket object.
 34 | 
 35 |     Convenience function.  Connect to *address* (a 2-tuple ``(host,
 36 |     port)``) and return the socket object.  Passing the optional
 37 |     *timeout* parameter will set the timeout on the socket instance
 38 |     before attempting to connect.  If no *timeout* is supplied, the
 39 |     global default timeout setting returned by :func:`socket.getdefaulttimeout`
 40 |     is used.  If *source_address* is set it must be a tuple of (host, port)
 41 |     for the socket to bind as a source address before making the connection.
 42 |     An host of '' or port 0 tells the OS to use the default.
 43 |     """
 44 | 
 45 |     host, port = address
 46 |     if host.startswith("["):
 47 |         host = host.strip("[]")
 48 |     err = None
 49 | 
 50 |     # Using the value from allowed_gai_family() in the context of getaddrinfo lets
 51 |     # us select whether to work with IPv4 DNS records, IPv6 records, or both.
 52 |     # The original create_connection function always returns all records.
 53 |     family = allowed_gai_family()
 54 | 
 55 |     try:
 56 |         host.encode("idna")
 57 |     except UnicodeError:
 58 |         raise LocationParseError(f"'{host}', label empty or too long") from None
 59 | 
 60 |     for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
 61 |         af, socktype, proto, canonname, sa = res
 62 |         sock = None
 63 |         try:
 64 |             sock = socket.socket(af, socktype, proto)
 65 | 
 66 |             # If provided, set socket level options before connecting.
 67 |             _set_socket_options(sock, socket_options)
 68 | 
 69 |             if timeout is not _DEFAULT_TIMEOUT:
 70 |                 sock.settimeout(timeout)
 71 |             if source_address:
 72 |                 sock.bind(source_address)
 73 |             sock.connect(sa)
 74 |             # Break explicitly a reference cycle
 75 |             err = None
 76 |             return sock
 77 | 
 78 |         except OSError as _:
 79 |             err = _
 80 |             if sock is not None:
 81 |                 sock.close()
 82 | 
 83 |     if err is not None:
 84 |         try:
 85 |             raise err
 86 |         finally:
 87 |             # Break explicitly a reference cycle
 88 |             err = None
 89 |     else:
 90 |         raise OSError("getaddrinfo returns an empty list")
 91 | 
 92 | 
 93 | def _set_socket_options(
 94 |     sock: socket.socket, options: _TYPE_SOCKET_OPTIONS | None
 95 | ) -> None:
 96 |     if options is None:
 97 |         return
 98 | 
 99 |     for opt in options:
100 |         sock.setsockopt(*opt)
101 | 
102 | 
103 | def allowed_gai_family() -> socket.AddressFamily:
104 |     """This function is designed to work in the context of
105 |     getaddrinfo, where family=socket.AF_UNSPEC is the default and
106 |     will perform a DNS search for both IPv6 and IPv4 records."""
107 | 
108 |     family = socket.AF_INET
109 |     if HAS_IPV6:
110 |         family = socket.AF_UNSPEC
111 |     return family
112 | 
113 | 
114 | def _has_ipv6(host: str) -> bool:
115 |     """Returns True if the system can bind an IPv6 address."""
116 |     sock = None
117 |     has_ipv6 = False
118 | 
119 |     if socket.has_ipv6:
120 |         # has_ipv6 returns true if cPython was compiled with IPv6 support.
121 |         # It does not tell us if the system has IPv6 support enabled. To
122 |         # determine that we must bind to an IPv6 address.
123 |         # https://github.com/urllib3/urllib3/pull/611
124 |         # https://bugs.python.org/issue658327
125 |         try:
126 |             sock = socket.socket(socket.AF_INET6)
127 |             sock.bind((host, 0))
128 |             has_ipv6 = True
129 |         except Exception:
130 |             pass
131 | 
132 |     if sock:
133 |         sock.close()
134 |     return has_ipv6
135 | 
136 | 
137 | HAS_IPV6 = _has_ipv6("::1")
138 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/certifi/core.py:
--------------------------------------------------------------------------------

```python
  1 | """
  2 | certifi.py
  3 | ~~~~~~~~~~
  4 | 
  5 | This module returns the installation location of cacert.pem or its contents.
  6 | """
  7 | import sys
  8 | import atexit
  9 | 
 10 | def exit_cacert_ctx() -> None:
 11 |     _CACERT_CTX.__exit__(None, None, None)  # type: ignore[union-attr]
 12 | 
 13 | 
 14 | if sys.version_info >= (3, 11):
 15 | 
 16 |     from importlib.resources import as_file, files
 17 | 
 18 |     _CACERT_CTX = None
 19 |     _CACERT_PATH = None
 20 | 
 21 |     def where() -> str:
 22 |         # This is slightly terrible, but we want to delay extracting the file
 23 |         # in cases where we're inside of a zipimport situation until someone
 24 |         # actually calls where(), but we don't want to re-extract the file
 25 |         # on every call of where(), so we'll do it once then store it in a
 26 |         # global variable.
 27 |         global _CACERT_CTX
 28 |         global _CACERT_PATH
 29 |         if _CACERT_PATH is None:
 30 |             # This is slightly janky, the importlib.resources API wants you to
 31 |             # manage the cleanup of this file, so it doesn't actually return a
 32 |             # path, it returns a context manager that will give you the path
 33 |             # when you enter it and will do any cleanup when you leave it. In
 34 |             # the common case of not needing a temporary file, it will just
 35 |             # return the file system location and the __exit__() is a no-op.
 36 |             #
 37 |             # We also have to hold onto the actual context manager, because
 38 |             # it will do the cleanup whenever it gets garbage collected, so
 39 |             # we will also store that at the global level as well.
 40 |             _CACERT_CTX = as_file(files("pip._vendor.certifi").joinpath("cacert.pem"))
 41 |             _CACERT_PATH = str(_CACERT_CTX.__enter__())
 42 |             atexit.register(exit_cacert_ctx)
 43 | 
 44 |         return _CACERT_PATH
 45 | 
 46 |     def contents() -> str:
 47 |         return files("pip._vendor.certifi").joinpath("cacert.pem").read_text(encoding="ascii")
 48 | 
 49 | elif sys.version_info >= (3, 7):
 50 | 
 51 |     from importlib.resources import path as get_path, read_text
 52 | 
 53 |     _CACERT_CTX = None
 54 |     _CACERT_PATH = None
 55 | 
 56 |     def where() -> str:
 57 |         # This is slightly terrible, but we want to delay extracting the
 58 |         # file in cases where we're inside of a zipimport situation until
 59 |         # someone actually calls where(), but we don't want to re-extract
 60 |         # the file on every call of where(), so we'll do it once then store
 61 |         # it in a global variable.
 62 |         global _CACERT_CTX
 63 |         global _CACERT_PATH
 64 |         if _CACERT_PATH is None:
 65 |             # This is slightly janky, the importlib.resources API wants you
 66 |             # to manage the cleanup of this file, so it doesn't actually
 67 |             # return a path, it returns a context manager that will give
 68 |             # you the path when you enter it and will do any cleanup when
 69 |             # you leave it. In the common case of not needing a temporary
 70 |             # file, it will just return the file system location and the
 71 |             # __exit__() is a no-op.
 72 |             #
 73 |             # We also have to hold onto the actual context manager, because
 74 |             # it will do the cleanup whenever it gets garbage collected, so
 75 |             # we will also store that at the global level as well.
 76 |             _CACERT_CTX = get_path("pip._vendor.certifi", "cacert.pem")
 77 |             _CACERT_PATH = str(_CACERT_CTX.__enter__())
 78 |             atexit.register(exit_cacert_ctx)
 79 | 
 80 |         return _CACERT_PATH
 81 | 
 82 |     def contents() -> str:
 83 |         return read_text("pip._vendor.certifi", "cacert.pem", encoding="ascii")
 84 | 
 85 | else:
 86 |     import os
 87 |     import types
 88 |     from typing import Union
 89 | 
 90 |     Package = Union[types.ModuleType, str]
 91 |     Resource = Union[str, "os.PathLike"]
 92 | 
 93 |     # This fallback will work for Python versions prior to 3.7 that lack the
 94 |     # importlib.resources module but relies on the existing `where` function
 95 |     # so won't address issues with environments like PyOxidizer that don't set
 96 |     # __file__ on modules.
 97 |     def read_text(
 98 |         package: Package,
 99 |         resource: Resource,
100 |         encoding: str = 'utf-8',
101 |         errors: str = 'strict'
102 |     ) -> str:
103 |         with open(where(), encoding=encoding) as data:
104 |             return data.read()
105 | 
106 |     # If we don't have importlib.resources, then we will just do the old logic
107 |     # of assuming we're on the filesystem and munge the path directly.
108 |     def where() -> str:
109 |         f = os.path.dirname(__file__)
110 | 
111 |         return os.path.join(f, "cacert.pem")
112 | 
113 |     def contents() -> str:
114 |         return read_text("pip._vendor.certifi", "cacert.pem", encoding="ascii")
115 | 
```

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

```python
  1 | # --------------------------------------------------------------------
  2 | # The ElementTree toolkit is
  3 | # Copyright (c) 1999-2004 by Fredrik Lundh
  4 | # --------------------------------------------------------------------
  5 | 
  6 | """
  7 | A set of HTML generator tags for building HTML documents.
  8 | 
  9 | Usage::
 10 | 
 11 |     >>> from lxml.html.builder import *
 12 |     >>> html = HTML(
 13 |     ...            HEAD( TITLE("Hello World") ),
 14 |     ...            BODY( CLASS("main"),
 15 |     ...                  H1("Hello World !")
 16 |     ...            )
 17 |     ...        )
 18 | 
 19 |     >>> import lxml.etree
 20 |     >>> print lxml.etree.tostring(html, pretty_print=True)
 21 |     <html>
 22 |       <head>
 23 |         <title>Hello World</title>
 24 |       </head>
 25 |       <body class="main">
 26 |         <h1>Hello World !</h1>
 27 |       </body>
 28 |     </html>
 29 | 
 30 | """
 31 | 
 32 | from lxml.builder import ElementMaker
 33 | from lxml.html import html_parser
 34 | 
 35 | E = ElementMaker(makeelement=html_parser.makeelement)
 36 | 
 37 | # elements
 38 | A = E.a  #: anchor
 39 | ABBR = E.abbr  #: abbreviated form (e.g., WWW, HTTP, etc.)
 40 | ACRONYM = E.acronym  #: 
 41 | ADDRESS = E.address  #: information on author
 42 | APPLET = E.applet  #: Java applet (DEPRECATED)
 43 | AREA = E.area  #: client-side image map area
 44 | B = E.b  #: bold text style
 45 | BASE = E.base  #: document base URI
 46 | BASEFONT = E.basefont  #: base font size (DEPRECATED)
 47 | BDO = E.bdo  #: I18N BiDi over-ride
 48 | BIG = E.big  #: large text style
 49 | BLOCKQUOTE = E.blockquote  #: long quotation
 50 | BODY = E.body  #: document body
 51 | BR = E.br  #: forced line break
 52 | BUTTON = E.button  #: push button
 53 | CAPTION = E.caption  #: table caption
 54 | CENTER = E.center  #: shorthand for DIV align=center (DEPRECATED)
 55 | CITE = E.cite  #: citation
 56 | CODE = E.code  #: computer code fragment
 57 | COL = E.col  #: table column
 58 | COLGROUP = E.colgroup  #: table column group
 59 | DD = E.dd  #: definition description
 60 | DEL = getattr(E, 'del')  #: deleted text
 61 | DFN = E.dfn  #: instance definition
 62 | DIR = E.dir  #: directory list (DEPRECATED)
 63 | DIV = E.div  #: generic language/style container
 64 | DL = E.dl  #: definition list
 65 | DT = E.dt  #: definition term
 66 | EM = E.em  #: emphasis
 67 | FIELDSET = E.fieldset  #: form control group
 68 | FONT = E.font  #: local change to font (DEPRECATED)
 69 | FORM = E.form  #: interactive form
 70 | FRAME = E.frame  #: subwindow
 71 | FRAMESET = E.frameset  #: window subdivision
 72 | H1 = E.h1  #: heading
 73 | H2 = E.h2  #: heading
 74 | H3 = E.h3  #: heading
 75 | H4 = E.h4  #: heading
 76 | H5 = E.h5  #: heading
 77 | H6 = E.h6  #: heading
 78 | HEAD = E.head  #: document head
 79 | HR = E.hr  #: horizontal rule
 80 | HTML = E.html  #: document root element
 81 | I = E.i  #: italic text style
 82 | IFRAME = E.iframe  #: inline subwindow
 83 | IMG = E.img  #: Embedded image
 84 | INPUT = E.input  #: form control
 85 | INS = E.ins  #: inserted text
 86 | ISINDEX = E.isindex  #: single line prompt (DEPRECATED)
 87 | KBD = E.kbd  #: text to be entered by the user
 88 | LABEL = E.label  #: form field label text
 89 | LEGEND = E.legend  #: fieldset legend
 90 | LI = E.li  #: list item
 91 | LINK = E.link  #: a media-independent link
 92 | MAP = E.map  #: client-side image map
 93 | MENU = E.menu  #: menu list (DEPRECATED)
 94 | META = E.meta  #: generic metainformation
 95 | NOFRAMES = E.noframes  #: alternate content container for non frame-based rendering
 96 | NOSCRIPT = E.noscript  #: alternate content container for non script-based rendering
 97 | OBJECT = E.object  #: generic embedded object
 98 | OL = E.ol  #: ordered list
 99 | OPTGROUP = E.optgroup  #: option group
100 | OPTION = E.option  #: selectable choice
101 | P = E.p  #: paragraph
102 | PARAM = E.param  #: named property value
103 | PRE = E.pre  #: preformatted text
104 | Q = E.q  #: short inline quotation
105 | S = E.s  #: strike-through text style (DEPRECATED)
106 | SAMP = E.samp  #: sample program output, scripts, etc.
107 | SCRIPT = E.script  #: script statements
108 | SELECT = E.select  #: option selector
109 | SMALL = E.small  #: small text style
110 | SPAN = E.span  #: generic language/style container
111 | STRIKE = E.strike  #: strike-through text (DEPRECATED)
112 | STRONG = E.strong  #: strong emphasis
113 | STYLE = E.style  #: style info
114 | SUB = E.sub  #: subscript
115 | SUP = E.sup  #: superscript
116 | TABLE = E.table  #: 
117 | TBODY = E.tbody  #: table body
118 | TD = E.td  #: table data cell
119 | TEXTAREA = E.textarea  #: multi-line text field
120 | TFOOT = E.tfoot  #: table footer
121 | TH = E.th  #: table header cell
122 | THEAD = E.thead  #: table header
123 | TITLE = E.title  #: document title
124 | TR = E.tr  #: table row
125 | TT = E.tt  #: teletype or monospaced text style
126 | U = E.u  #: underlined text style (DEPRECATED)
127 | UL = E.ul  #: unordered list
128 | VAR = E.var  #: instance of a variable or program argument
129 | 
130 | # attributes (only reserved words are included here)
131 | ATTR = dict
132 | def CLASS(v): return {'class': v}
133 | def FOR(v): return {'for': v}
134 | 
```

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

```python
  1 | """Support functions for working with wheel files.
  2 | """
  3 | 
  4 | import logging
  5 | from email.message import Message
  6 | from email.parser import Parser
  7 | from typing import Tuple
  8 | from zipfile import BadZipFile, ZipFile
  9 | 
 10 | from pip._vendor.packaging.utils import canonicalize_name
 11 | 
 12 | from pip._internal.exceptions import UnsupportedWheel
 13 | 
 14 | VERSION_COMPATIBLE = (1, 0)
 15 | 
 16 | 
 17 | logger = logging.getLogger(__name__)
 18 | 
 19 | 
 20 | def parse_wheel(wheel_zip: ZipFile, name: str) -> Tuple[str, Message]:
 21 |     """Extract information from the provided wheel, ensuring it meets basic
 22 |     standards.
 23 | 
 24 |     Returns the name of the .dist-info directory and the parsed WHEEL metadata.
 25 |     """
 26 |     try:
 27 |         info_dir = wheel_dist_info_dir(wheel_zip, name)
 28 |         metadata = wheel_metadata(wheel_zip, info_dir)
 29 |         version = wheel_version(metadata)
 30 |     except UnsupportedWheel as e:
 31 |         raise UnsupportedWheel(f"{name} has an invalid wheel, {e}")
 32 | 
 33 |     check_compatibility(version, name)
 34 | 
 35 |     return info_dir, metadata
 36 | 
 37 | 
 38 | def wheel_dist_info_dir(source: ZipFile, name: str) -> str:
 39 |     """Returns the name of the contained .dist-info directory.
 40 | 
 41 |     Raises AssertionError or UnsupportedWheel if not found, >1 found, or
 42 |     it doesn't match the provided name.
 43 |     """
 44 |     # Zip file path separators must be /
 45 |     subdirs = {p.split("/", 1)[0] for p in source.namelist()}
 46 | 
 47 |     info_dirs = [s for s in subdirs if s.endswith(".dist-info")]
 48 | 
 49 |     if not info_dirs:
 50 |         raise UnsupportedWheel(".dist-info directory not found")
 51 | 
 52 |     if len(info_dirs) > 1:
 53 |         raise UnsupportedWheel(
 54 |             "multiple .dist-info directories found: {}".format(", ".join(info_dirs))
 55 |         )
 56 | 
 57 |     info_dir = info_dirs[0]
 58 | 
 59 |     info_dir_name = canonicalize_name(info_dir)
 60 |     canonical_name = canonicalize_name(name)
 61 |     if not info_dir_name.startswith(canonical_name):
 62 |         raise UnsupportedWheel(
 63 |             f".dist-info directory {info_dir!r} does not start with {canonical_name!r}"
 64 |         )
 65 | 
 66 |     return info_dir
 67 | 
 68 | 
 69 | def read_wheel_metadata_file(source: ZipFile, path: str) -> bytes:
 70 |     try:
 71 |         return source.read(path)
 72 |         # BadZipFile for general corruption, KeyError for missing entry,
 73 |         # and RuntimeError for password-protected files
 74 |     except (BadZipFile, KeyError, RuntimeError) as e:
 75 |         raise UnsupportedWheel(f"could not read {path!r} file: {e!r}")
 76 | 
 77 | 
 78 | def wheel_metadata(source: ZipFile, dist_info_dir: str) -> Message:
 79 |     """Return the WHEEL metadata of an extracted wheel, if possible.
 80 |     Otherwise, raise UnsupportedWheel.
 81 |     """
 82 |     path = f"{dist_info_dir}/WHEEL"
 83 |     # Zip file path separators must be /
 84 |     wheel_contents = read_wheel_metadata_file(source, path)
 85 | 
 86 |     try:
 87 |         wheel_text = wheel_contents.decode()
 88 |     except UnicodeDecodeError as e:
 89 |         raise UnsupportedWheel(f"error decoding {path!r}: {e!r}")
 90 | 
 91 |     # FeedParser (used by Parser) does not raise any exceptions. The returned
 92 |     # message may have .defects populated, but for backwards-compatibility we
 93 |     # currently ignore them.
 94 |     return Parser().parsestr(wheel_text)
 95 | 
 96 | 
 97 | def wheel_version(wheel_data: Message) -> Tuple[int, ...]:
 98 |     """Given WHEEL metadata, return the parsed Wheel-Version.
 99 |     Otherwise, raise UnsupportedWheel.
100 |     """
101 |     version_text = wheel_data["Wheel-Version"]
102 |     if version_text is None:
103 |         raise UnsupportedWheel("WHEEL is missing Wheel-Version")
104 | 
105 |     version = version_text.strip()
106 | 
107 |     try:
108 |         return tuple(map(int, version.split(".")))
109 |     except ValueError:
110 |         raise UnsupportedWheel(f"invalid Wheel-Version: {version!r}")
111 | 
112 | 
113 | def check_compatibility(version: Tuple[int, ...], name: str) -> None:
114 |     """Raises errors or warns if called with an incompatible Wheel-Version.
115 | 
116 |     pip should refuse to install a Wheel-Version that's a major series
117 |     ahead of what it's compatible with (e.g 2.0 > 1.1); and warn when
118 |     installing a version only minor version ahead (e.g 1.2 > 1.1).
119 | 
120 |     version: a 2-tuple representing a Wheel-Version (Major, Minor)
121 |     name: name of wheel or package to raise exception about
122 | 
123 |     :raises UnsupportedWheel: when an incompatible Wheel-Version is given
124 |     """
125 |     if version[0] > VERSION_COMPATIBLE[0]:
126 |         raise UnsupportedWheel(
127 |             "{}'s Wheel-Version ({}) is not compatible with this version "
128 |             "of pip".format(name, ".".join(map(str, version)))
129 |         )
130 |     elif version > VERSION_COMPATIBLE:
131 |         logger.warning(
132 |             "Installing from a newer Wheel-Version (%s)",
133 |             ".".join(map(str, version)),
134 |         )
135 | 
```

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

```python
  1 | """
  2 | NTLM authenticating pool, contributed by erikcederstran
  3 | 
  4 | Issue #10, see: http://code.google.com/p/urllib3/issues/detail?id=10
  5 | """
  6 | from __future__ import absolute_import
  7 | 
  8 | import warnings
  9 | from logging import getLogger
 10 | 
 11 | from ntlm import ntlm
 12 | 
 13 | from .. import HTTPSConnectionPool
 14 | from ..packages.six.moves.http_client import HTTPSConnection
 15 | 
 16 | warnings.warn(
 17 |     "The 'urllib3.contrib.ntlmpool' module is deprecated and will be removed "
 18 |     "in urllib3 v2.0 release, urllib3 is not able to support it properly due "
 19 |     "to reasons listed in issue: https://github.com/urllib3/urllib3/issues/2282. "
 20 |     "If you are a user of this module please comment in the mentioned issue.",
 21 |     DeprecationWarning,
 22 | )
 23 | 
 24 | log = getLogger(__name__)
 25 | 
 26 | 
 27 | class NTLMConnectionPool(HTTPSConnectionPool):
 28 |     """
 29 |     Implements an NTLM authentication version of an urllib3 connection pool
 30 |     """
 31 | 
 32 |     scheme = "https"
 33 | 
 34 |     def __init__(self, user, pw, authurl, *args, **kwargs):
 35 |         """
 36 |         authurl is a random URL on the server that is protected by NTLM.
 37 |         user is the Windows user, probably in the DOMAIN\\username format.
 38 |         pw is the password for the user.
 39 |         """
 40 |         super(NTLMConnectionPool, self).__init__(*args, **kwargs)
 41 |         self.authurl = authurl
 42 |         self.rawuser = user
 43 |         user_parts = user.split("\\", 1)
 44 |         self.domain = user_parts[0].upper()
 45 |         self.user = user_parts[1]
 46 |         self.pw = pw
 47 | 
 48 |     def _new_conn(self):
 49 |         # Performs the NTLM handshake that secures the connection. The socket
 50 |         # must be kept open while requests are performed.
 51 |         self.num_connections += 1
 52 |         log.debug(
 53 |             "Starting NTLM HTTPS connection no. %d: https://%s%s",
 54 |             self.num_connections,
 55 |             self.host,
 56 |             self.authurl,
 57 |         )
 58 | 
 59 |         headers = {"Connection": "Keep-Alive"}
 60 |         req_header = "Authorization"
 61 |         resp_header = "www-authenticate"
 62 | 
 63 |         conn = HTTPSConnection(host=self.host, port=self.port)
 64 | 
 65 |         # Send negotiation message
 66 |         headers[req_header] = "NTLM %s" % ntlm.create_NTLM_NEGOTIATE_MESSAGE(
 67 |             self.rawuser
 68 |         )
 69 |         log.debug("Request headers: %s", headers)
 70 |         conn.request("GET", self.authurl, None, headers)
 71 |         res = conn.getresponse()
 72 |         reshdr = dict(res.headers)
 73 |         log.debug("Response status: %s %s", res.status, res.reason)
 74 |         log.debug("Response headers: %s", reshdr)
 75 |         log.debug("Response data: %s [...]", res.read(100))
 76 | 
 77 |         # Remove the reference to the socket, so that it can not be closed by
 78 |         # the response object (we want to keep the socket open)
 79 |         res.fp = None
 80 | 
 81 |         # Server should respond with a challenge message
 82 |         auth_header_values = reshdr[resp_header].split(", ")
 83 |         auth_header_value = None
 84 |         for s in auth_header_values:
 85 |             if s[:5] == "NTLM ":
 86 |                 auth_header_value = s[5:]
 87 |         if auth_header_value is None:
 88 |             raise Exception(
 89 |                 "Unexpected %s response header: %s" % (resp_header, reshdr[resp_header])
 90 |             )
 91 | 
 92 |         # Send authentication message
 93 |         ServerChallenge, NegotiateFlags = ntlm.parse_NTLM_CHALLENGE_MESSAGE(
 94 |             auth_header_value
 95 |         )
 96 |         auth_msg = ntlm.create_NTLM_AUTHENTICATE_MESSAGE(
 97 |             ServerChallenge, self.user, self.domain, self.pw, NegotiateFlags
 98 |         )
 99 |         headers[req_header] = "NTLM %s" % auth_msg
100 |         log.debug("Request headers: %s", headers)
101 |         conn.request("GET", self.authurl, None, headers)
102 |         res = conn.getresponse()
103 |         log.debug("Response status: %s %s", res.status, res.reason)
104 |         log.debug("Response headers: %s", dict(res.headers))
105 |         log.debug("Response data: %s [...]", res.read()[:100])
106 |         if res.status != 200:
107 |             if res.status == 401:
108 |                 raise Exception("Server rejected request: wrong username or password")
109 |             raise Exception("Wrong server response: %s %s" % (res.status, res.reason))
110 | 
111 |         res.fp = None
112 |         log.debug("Connection established")
113 |         return conn
114 | 
115 |     def urlopen(
116 |         self,
117 |         method,
118 |         url,
119 |         body=None,
120 |         headers=None,
121 |         retries=3,
122 |         redirect=True,
123 |         assert_same_host=True,
124 |     ):
125 |         if headers is None:
126 |             headers = {}
127 |         headers["Connection"] = "Keep-Alive"
128 |         return super(NTLMConnectionPool, self).urlopen(
129 |             method, url, body, headers, retries, redirect, assert_same_host
130 |         )
131 | 
```

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

```python
  1 | import itertools
  2 | import logging
  3 | import os
  4 | import posixpath
  5 | import urllib.parse
  6 | from dataclasses import dataclass
  7 | from typing import List
  8 | 
  9 | from pip._vendor.packaging.utils import canonicalize_name
 10 | 
 11 | from pip._internal.models.index import PyPI
 12 | from pip._internal.utils.compat import has_tls
 13 | from pip._internal.utils.misc import normalize_path, redact_auth_from_url
 14 | 
 15 | logger = logging.getLogger(__name__)
 16 | 
 17 | 
 18 | @dataclass(frozen=True)
 19 | class SearchScope:
 20 |     """
 21 |     Encapsulates the locations that pip is configured to search.
 22 |     """
 23 | 
 24 |     __slots__ = ["find_links", "index_urls", "no_index"]
 25 | 
 26 |     find_links: List[str]
 27 |     index_urls: List[str]
 28 |     no_index: bool
 29 | 
 30 |     @classmethod
 31 |     def create(
 32 |         cls,
 33 |         find_links: List[str],
 34 |         index_urls: List[str],
 35 |         no_index: bool,
 36 |     ) -> "SearchScope":
 37 |         """
 38 |         Create a SearchScope object after normalizing the `find_links`.
 39 |         """
 40 |         # Build find_links. If an argument starts with ~, it may be
 41 |         # a local file relative to a home directory. So try normalizing
 42 |         # it and if it exists, use the normalized version.
 43 |         # This is deliberately conservative - it might be fine just to
 44 |         # blindly normalize anything starting with a ~...
 45 |         built_find_links: List[str] = []
 46 |         for link in find_links:
 47 |             if link.startswith("~"):
 48 |                 new_link = normalize_path(link)
 49 |                 if os.path.exists(new_link):
 50 |                     link = new_link
 51 |             built_find_links.append(link)
 52 | 
 53 |         # If we don't have TLS enabled, then WARN if anyplace we're looking
 54 |         # relies on TLS.
 55 |         if not has_tls():
 56 |             for link in itertools.chain(index_urls, built_find_links):
 57 |                 parsed = urllib.parse.urlparse(link)
 58 |                 if parsed.scheme == "https":
 59 |                     logger.warning(
 60 |                         "pip is configured with locations that require "
 61 |                         "TLS/SSL, however the ssl module in Python is not "
 62 |                         "available."
 63 |                     )
 64 |                     break
 65 | 
 66 |         return cls(
 67 |             find_links=built_find_links,
 68 |             index_urls=index_urls,
 69 |             no_index=no_index,
 70 |         )
 71 | 
 72 |     def get_formatted_locations(self) -> str:
 73 |         lines = []
 74 |         redacted_index_urls = []
 75 |         if self.index_urls and self.index_urls != [PyPI.simple_url]:
 76 |             for url in self.index_urls:
 77 |                 redacted_index_url = redact_auth_from_url(url)
 78 | 
 79 |                 # Parse the URL
 80 |                 purl = urllib.parse.urlsplit(redacted_index_url)
 81 | 
 82 |                 # URL is generally invalid if scheme and netloc is missing
 83 |                 # there are issues with Python and URL parsing, so this test
 84 |                 # is a bit crude. See bpo-20271, bpo-23505. Python doesn't
 85 |                 # always parse invalid URLs correctly - it should raise
 86 |                 # exceptions for malformed URLs
 87 |                 if not purl.scheme and not purl.netloc:
 88 |                     logger.warning(
 89 |                         'The index url "%s" seems invalid, please provide a scheme.',
 90 |                         redacted_index_url,
 91 |                     )
 92 | 
 93 |                 redacted_index_urls.append(redacted_index_url)
 94 | 
 95 |             lines.append(
 96 |                 "Looking in indexes: {}".format(", ".join(redacted_index_urls))
 97 |             )
 98 | 
 99 |         if self.find_links:
100 |             lines.append(
101 |                 "Looking in links: {}".format(
102 |                     ", ".join(redact_auth_from_url(url) for url in self.find_links)
103 |                 )
104 |             )
105 |         return "\n".join(lines)
106 | 
107 |     def get_index_urls_locations(self, project_name: str) -> List[str]:
108 |         """Returns the locations found via self.index_urls
109 | 
110 |         Checks the url_name on the main (first in the list) index and
111 |         use this url_name to produce all locations
112 |         """
113 | 
114 |         def mkurl_pypi_url(url: str) -> str:
115 |             loc = posixpath.join(
116 |                 url, urllib.parse.quote(canonicalize_name(project_name))
117 |             )
118 |             # For maximum compatibility with easy_install, ensure the path
119 |             # ends in a trailing slash.  Although this isn't in the spec
120 |             # (and PyPI can handle it without the slash) some other index
121 |             # implementations might break if they relied on easy_install's
122 |             # behavior.
123 |             if not loc.endswith("/"):
124 |                 loc = loc + "/"
125 |             return loc
126 | 
127 |         return [mkurl_pypi_url(url) for url in self.index_urls]
128 | 
```

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

```
  1 | /*
  2 |  * Summary: implementation of XML Schema Datatypes
  3 |  * Description: module providing the XML Schema Datatypes implementation
  4 |  *              both definition and validity checking
  5 |  *
  6 |  * Copy: See Copyright for the status of this software.
  7 |  *
  8 |  * Author: Daniel Veillard
  9 |  */
 10 | 
 11 | 
 12 | #ifndef __XML_SCHEMA_TYPES_H__
 13 | #define __XML_SCHEMA_TYPES_H__
 14 | 
 15 | #include <libxml/xmlversion.h>
 16 | 
 17 | #ifdef LIBXML_SCHEMAS_ENABLED
 18 | 
 19 | #include <libxml/schemasInternals.h>
 20 | #include <libxml/xmlschemas.h>
 21 | 
 22 | #ifdef __cplusplus
 23 | extern "C" {
 24 | #endif
 25 | 
 26 | typedef enum {
 27 |     XML_SCHEMA_WHITESPACE_UNKNOWN = 0,
 28 |     XML_SCHEMA_WHITESPACE_PRESERVE = 1,
 29 |     XML_SCHEMA_WHITESPACE_REPLACE = 2,
 30 |     XML_SCHEMA_WHITESPACE_COLLAPSE = 3
 31 | } xmlSchemaWhitespaceValueType;
 32 | 
 33 | XMLPUBFUN int
 34 | 		xmlSchemaInitTypes		(void);
 35 | XML_DEPRECATED
 36 | XMLPUBFUN void
 37 | 		xmlSchemaCleanupTypes		(void);
 38 | XMLPUBFUN xmlSchemaTypePtr
 39 | 		xmlSchemaGetPredefinedType	(const xmlChar *name,
 40 | 						 const xmlChar *ns);
 41 | XMLPUBFUN int
 42 | 		xmlSchemaValidatePredefinedType	(xmlSchemaTypePtr type,
 43 | 						 const xmlChar *value,
 44 | 						 xmlSchemaValPtr *val);
 45 | XMLPUBFUN int
 46 | 		xmlSchemaValPredefTypeNode	(xmlSchemaTypePtr type,
 47 | 						 const xmlChar *value,
 48 | 						 xmlSchemaValPtr *val,
 49 | 						 xmlNodePtr node);
 50 | XMLPUBFUN int
 51 | 		xmlSchemaValidateFacet		(xmlSchemaTypePtr base,
 52 | 						 xmlSchemaFacetPtr facet,
 53 | 						 const xmlChar *value,
 54 | 						 xmlSchemaValPtr val);
 55 | XMLPUBFUN int
 56 | 		xmlSchemaValidateFacetWhtsp	(xmlSchemaFacetPtr facet,
 57 | 						 xmlSchemaWhitespaceValueType fws,
 58 | 						 xmlSchemaValType valType,
 59 | 						 const xmlChar *value,
 60 | 						 xmlSchemaValPtr val,
 61 | 						 xmlSchemaWhitespaceValueType ws);
 62 | XMLPUBFUN void
 63 | 		xmlSchemaFreeValue		(xmlSchemaValPtr val);
 64 | XMLPUBFUN xmlSchemaFacetPtr
 65 | 		xmlSchemaNewFacet		(void);
 66 | XMLPUBFUN int
 67 | 		xmlSchemaCheckFacet		(xmlSchemaFacetPtr facet,
 68 | 						 xmlSchemaTypePtr typeDecl,
 69 | 						 xmlSchemaParserCtxtPtr ctxt,
 70 | 						 const xmlChar *name);
 71 | XMLPUBFUN void
 72 | 		xmlSchemaFreeFacet		(xmlSchemaFacetPtr facet);
 73 | XMLPUBFUN int
 74 | 		xmlSchemaCompareValues		(xmlSchemaValPtr x,
 75 | 						 xmlSchemaValPtr y);
 76 | XMLPUBFUN xmlSchemaTypePtr
 77 |     xmlSchemaGetBuiltInListSimpleTypeItemType	(xmlSchemaTypePtr type);
 78 | XMLPUBFUN int
 79 |     xmlSchemaValidateListSimpleTypeFacet	(xmlSchemaFacetPtr facet,
 80 | 						 const xmlChar *value,
 81 | 						 unsigned long actualLen,
 82 | 						 unsigned long *expectedLen);
 83 | XMLPUBFUN xmlSchemaTypePtr
 84 | 		xmlSchemaGetBuiltInType		(xmlSchemaValType type);
 85 | XMLPUBFUN int
 86 | 		xmlSchemaIsBuiltInTypeFacet	(xmlSchemaTypePtr type,
 87 | 						 int facetType);
 88 | XMLPUBFUN xmlChar *
 89 | 		xmlSchemaCollapseString		(const xmlChar *value);
 90 | XMLPUBFUN xmlChar *
 91 | 		xmlSchemaWhiteSpaceReplace	(const xmlChar *value);
 92 | XMLPUBFUN unsigned long 
 93 | 		xmlSchemaGetFacetValueAsULong	(xmlSchemaFacetPtr facet);
 94 | XMLPUBFUN int
 95 | 		xmlSchemaValidateLengthFacet	(xmlSchemaTypePtr type,
 96 | 						 xmlSchemaFacetPtr facet,
 97 | 						 const xmlChar *value,
 98 | 						 xmlSchemaValPtr val,
 99 | 						 unsigned long *length);
100 | XMLPUBFUN int
101 | 		xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet,
102 | 						  xmlSchemaValType valType,
103 | 						  const xmlChar *value,
104 | 						  xmlSchemaValPtr val,
105 | 						  unsigned long *length,
106 | 						  xmlSchemaWhitespaceValueType ws);
107 | XMLPUBFUN int
108 | 		xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type,
109 | 						 const xmlChar *value,
110 | 						 xmlSchemaValPtr *val,
111 | 						 xmlNodePtr node);
112 | XMLPUBFUN int
113 | 		xmlSchemaGetCanonValue		(xmlSchemaValPtr val,
114 | 						 const xmlChar **retValue);
115 | XMLPUBFUN int
116 | 		xmlSchemaGetCanonValueWhtsp	(xmlSchemaValPtr val,
117 | 						 const xmlChar **retValue,
118 | 						 xmlSchemaWhitespaceValueType ws);
119 | XMLPUBFUN int
120 | 		xmlSchemaValueAppend		(xmlSchemaValPtr prev,
121 | 						 xmlSchemaValPtr cur);
122 | XMLPUBFUN xmlSchemaValPtr
123 | 		xmlSchemaValueGetNext		(xmlSchemaValPtr cur);
124 | XMLPUBFUN const xmlChar *
125 | 		xmlSchemaValueGetAsString	(xmlSchemaValPtr val);
126 | XMLPUBFUN int
127 | 		xmlSchemaValueGetAsBoolean	(xmlSchemaValPtr val);
128 | XMLPUBFUN xmlSchemaValPtr
129 | 		xmlSchemaNewStringValue		(xmlSchemaValType type,
130 | 						 const xmlChar *value);
131 | XMLPUBFUN xmlSchemaValPtr
132 | 		xmlSchemaNewNOTATIONValue	(const xmlChar *name,
133 | 						 const xmlChar *ns);
134 | XMLPUBFUN xmlSchemaValPtr
135 | 		xmlSchemaNewQNameValue		(const xmlChar *namespaceName,
136 | 						 const xmlChar *localName);
137 | XMLPUBFUN int
138 | 		xmlSchemaCompareValuesWhtsp	(xmlSchemaValPtr x,
139 | 						 xmlSchemaWhitespaceValueType xws,
140 | 						 xmlSchemaValPtr y,
141 | 						 xmlSchemaWhitespaceValueType yws);
142 | XMLPUBFUN xmlSchemaValPtr
143 | 		xmlSchemaCopyValue		(xmlSchemaValPtr val);
144 | XMLPUBFUN xmlSchemaValType
145 | 		xmlSchemaGetValType		(xmlSchemaValPtr val);
146 | 
147 | #ifdef __cplusplus
148 | }
149 | #endif
150 | 
151 | #endif /* LIBXML_SCHEMAS_ENABLED */
152 | #endif /* __XML_SCHEMA_TYPES_H__ */
153 | 
```

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

```python
  1 | from typing import Union
  2 | 
  3 | from .align import AlignMethod
  4 | from .cells import cell_len, set_cell_size
  5 | from .console import Console, ConsoleOptions, RenderResult
  6 | from .jupyter import JupyterMixin
  7 | from .measure import Measurement
  8 | from .style import Style
  9 | from .text import Text
 10 | 
 11 | 
 12 | class Rule(JupyterMixin):
 13 |     """A console renderable to draw a horizontal rule (line).
 14 | 
 15 |     Args:
 16 |         title (Union[str, Text], optional): Text to render in the rule. Defaults to "".
 17 |         characters (str, optional): Character(s) used to draw the line. Defaults to "─".
 18 |         style (StyleType, optional): Style of Rule. Defaults to "rule.line".
 19 |         end (str, optional): Character at end of Rule. defaults to "\\\\n"
 20 |         align (str, optional): How to align the title, one of "left", "center", or "right". Defaults to "center".
 21 |     """
 22 | 
 23 |     def __init__(
 24 |         self,
 25 |         title: Union[str, Text] = "",
 26 |         *,
 27 |         characters: str = "─",
 28 |         style: Union[str, Style] = "rule.line",
 29 |         end: str = "\n",
 30 |         align: AlignMethod = "center",
 31 |     ) -> None:
 32 |         if cell_len(characters) < 1:
 33 |             raise ValueError(
 34 |                 "'characters' argument must have a cell width of at least 1"
 35 |             )
 36 |         if align not in ("left", "center", "right"):
 37 |             raise ValueError(
 38 |                 f'invalid value for align, expected "left", "center", "right" (not {align!r})'
 39 |             )
 40 |         self.title = title
 41 |         self.characters = characters
 42 |         self.style = style
 43 |         self.end = end
 44 |         self.align = align
 45 | 
 46 |     def __repr__(self) -> str:
 47 |         return f"Rule({self.title!r}, {self.characters!r})"
 48 | 
 49 |     def __rich_console__(
 50 |         self, console: Console, options: ConsoleOptions
 51 |     ) -> RenderResult:
 52 |         width = options.max_width
 53 | 
 54 |         characters = (
 55 |             "-"
 56 |             if (options.ascii_only and not self.characters.isascii())
 57 |             else self.characters
 58 |         )
 59 | 
 60 |         chars_len = cell_len(characters)
 61 |         if not self.title:
 62 |             yield self._rule_line(chars_len, width)
 63 |             return
 64 | 
 65 |         if isinstance(self.title, Text):
 66 |             title_text = self.title
 67 |         else:
 68 |             title_text = console.render_str(self.title, style="rule.text")
 69 | 
 70 |         title_text.plain = title_text.plain.replace("\n", " ")
 71 |         title_text.expand_tabs()
 72 | 
 73 |         required_space = 4 if self.align == "center" else 2
 74 |         truncate_width = max(0, width - required_space)
 75 |         if not truncate_width:
 76 |             yield self._rule_line(chars_len, width)
 77 |             return
 78 | 
 79 |         rule_text = Text(end=self.end)
 80 |         if self.align == "center":
 81 |             title_text.truncate(truncate_width, overflow="ellipsis")
 82 |             side_width = (width - cell_len(title_text.plain)) // 2
 83 |             left = Text(characters * (side_width // chars_len + 1))
 84 |             left.truncate(side_width - 1)
 85 |             right_length = width - cell_len(left.plain) - cell_len(title_text.plain)
 86 |             right = Text(characters * (side_width // chars_len + 1))
 87 |             right.truncate(right_length)
 88 |             rule_text.append(left.plain + " ", self.style)
 89 |             rule_text.append(title_text)
 90 |             rule_text.append(" " + right.plain, self.style)
 91 |         elif self.align == "left":
 92 |             title_text.truncate(truncate_width, overflow="ellipsis")
 93 |             rule_text.append(title_text)
 94 |             rule_text.append(" ")
 95 |             rule_text.append(characters * (width - rule_text.cell_len), self.style)
 96 |         elif self.align == "right":
 97 |             title_text.truncate(truncate_width, overflow="ellipsis")
 98 |             rule_text.append(characters * (width - title_text.cell_len - 1), self.style)
 99 |             rule_text.append(" ")
100 |             rule_text.append(title_text)
101 | 
102 |         rule_text.plain = set_cell_size(rule_text.plain, width)
103 |         yield rule_text
104 | 
105 |     def _rule_line(self, chars_len: int, width: int) -> Text:
106 |         rule_text = Text(self.characters * ((width // chars_len) + 1), self.style)
107 |         rule_text.truncate(width)
108 |         rule_text.plain = set_cell_size(rule_text.plain, width)
109 |         return rule_text
110 | 
111 |     def __rich_measure__(
112 |         self, console: Console, options: ConsoleOptions
113 |     ) -> Measurement:
114 |         return Measurement(1, 1)
115 | 
116 | 
117 | if __name__ == "__main__":  # pragma: no cover
118 |     import sys
119 | 
120 |     from pip._vendor.rich.console import Console
121 | 
122 |     try:
123 |         text = sys.argv[1]
124 |     except IndexError:
125 |         text = "Hello, World"
126 |     console = Console()
127 |     console.print(Rule(title=text))
128 | 
129 |     console = Console()
130 |     console.print(Rule("foo"), width=4)
131 | 
```

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

```python
  1 | """
  2 | Soup Sieve.
  3 | 
  4 | A CSS selector filter for BeautifulSoup4.
  5 | 
  6 | MIT License
  7 | 
  8 | Copyright (c) 2018 Isaac Muse
  9 | 
 10 | Permission is hereby granted, free of charge, to any person obtaining a copy
 11 | of this software and associated documentation files (the "Software"), to deal
 12 | in the Software without restriction, including without limitation the rights
 13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 14 | copies of the Software, and to permit persons to whom the Software is
 15 | furnished to do so, subject to the following conditions:
 16 | 
 17 | The above copyright notice and this permission notice shall be included in all
 18 | copies or substantial portions of the Software.
 19 | 
 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 26 | SOFTWARE.
 27 | """
 28 | from __future__ import annotations
 29 | from .__meta__ import __version__, __version_info__  # noqa: F401
 30 | from . import css_parser as cp
 31 | from . import css_match as cm
 32 | from . import css_types as ct
 33 | from .util import DEBUG, SelectorSyntaxError  # noqa: F401
 34 | import bs4  # type: ignore[import-untyped]
 35 | from typing import Any, Iterator, Iterable
 36 | 
 37 | __all__ = (
 38 |     'DEBUG', 'SelectorSyntaxError', 'SoupSieve',
 39 |     'closest', 'compile', 'filter', 'iselect',
 40 |     'match', 'select', 'select_one'
 41 | )
 42 | 
 43 | SoupSieve = cm.SoupSieve
 44 | 
 45 | 
 46 | def compile(  # noqa: A001
 47 |     pattern: str,
 48 |     namespaces: dict[str, str] | None = None,
 49 |     flags: int = 0,
 50 |     *,
 51 |     custom: dict[str, str] | None = None,
 52 |     **kwargs: Any
 53 | ) -> cm.SoupSieve:
 54 |     """Compile CSS pattern."""
 55 | 
 56 |     if isinstance(pattern, SoupSieve):
 57 |         if flags:
 58 |             raise ValueError("Cannot process 'flags' argument on a compiled selector list")
 59 |         elif namespaces is not None:
 60 |             raise ValueError("Cannot process 'namespaces' argument on a compiled selector list")
 61 |         elif custom is not None:
 62 |             raise ValueError("Cannot process 'custom' argument on a compiled selector list")
 63 |         return pattern
 64 | 
 65 |     return cp._cached_css_compile(
 66 |         pattern,
 67 |         ct.Namespaces(namespaces) if namespaces is not None else namespaces,
 68 |         ct.CustomSelectors(custom) if custom is not None else custom,
 69 |         flags
 70 |     )
 71 | 
 72 | 
 73 | def purge() -> None:
 74 |     """Purge cached patterns."""
 75 | 
 76 |     cp._purge_cache()
 77 | 
 78 | 
 79 | def closest(
 80 |     select: str,
 81 |     tag: bs4.Tag,
 82 |     namespaces: dict[str, str] | None = None,
 83 |     flags: int = 0,
 84 |     *,
 85 |     custom: dict[str, str] | None = None,
 86 |     **kwargs: Any
 87 | ) -> bs4.Tag:
 88 |     """Match closest ancestor."""
 89 | 
 90 |     return compile(select, namespaces, flags, **kwargs).closest(tag)
 91 | 
 92 | 
 93 | def match(
 94 |     select: str,
 95 |     tag: bs4.Tag,
 96 |     namespaces: dict[str, str] | None = None,
 97 |     flags: int = 0,
 98 |     *,
 99 |     custom: dict[str, str] | None = None,
100 |     **kwargs: Any
101 | ) -> bool:
102 |     """Match node."""
103 | 
104 |     return compile(select, namespaces, flags, **kwargs).match(tag)
105 | 
106 | 
107 | def filter(  # noqa: A001
108 |     select: str,
109 |     iterable: Iterable[bs4.Tag],
110 |     namespaces: dict[str, str] | None = None,
111 |     flags: int = 0,
112 |     *,
113 |     custom: dict[str, str] | None = None,
114 |     **kwargs: Any
115 | ) -> list[bs4.Tag]:
116 |     """Filter list of nodes."""
117 | 
118 |     return compile(select, namespaces, flags, **kwargs).filter(iterable)
119 | 
120 | 
121 | def select_one(
122 |     select: str,
123 |     tag: bs4.Tag,
124 |     namespaces: dict[str, str] | None = None,
125 |     flags: int = 0,
126 |     *,
127 |     custom: dict[str, str] | None = None,
128 |     **kwargs: Any
129 | ) -> bs4.Tag:
130 |     """Select a single tag."""
131 | 
132 |     return compile(select, namespaces, flags, **kwargs).select_one(tag)
133 | 
134 | 
135 | def select(
136 |     select: str,
137 |     tag: bs4.Tag,
138 |     namespaces: dict[str, str] | None = None,
139 |     limit: int = 0,
140 |     flags: int = 0,
141 |     *,
142 |     custom: dict[str, str] | None = None,
143 |     **kwargs: Any
144 | ) -> list[bs4.Tag]:
145 |     """Select the specified tags."""
146 | 
147 |     return compile(select, namespaces, flags, **kwargs).select(tag, limit)
148 | 
149 | 
150 | def iselect(
151 |     select: str,
152 |     tag: bs4.Tag,
153 |     namespaces: dict[str, str] | None = None,
154 |     limit: int = 0,
155 |     flags: int = 0,
156 |     *,
157 |     custom: dict[str, str] | None = None,
158 |     **kwargs: Any
159 | ) -> Iterator[bs4.Tag]:
160 |     """Iterate the specified tags."""
161 | 
162 |     yield from compile(select, namespaces, flags, **kwargs).iselect(tag, limit)
163 | 
164 | 
165 | def escape(ident: str) -> str:
166 |     """Escape identifier."""
167 | 
168 |     return cp.escape(ident)
169 | 
```

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

```
  1 | /**
  2 |  * Summary: interfaces to the Catalog handling system
  3 |  * Description: the catalog module implements the support for
  4 |  * XML Catalogs and SGML catalogs
  5 |  *
  6 |  * SGML Open Technical Resolution TR9401:1997.
  7 |  * http://www.jclark.com/sp/catalog.htm
  8 |  *
  9 |  * XML Catalogs Working Draft 06 August 2001
 10 |  * http://www.oasis-open.org/committees/entity/spec-2001-08-06.html
 11 |  *
 12 |  * Copy: See Copyright for the status of this software.
 13 |  *
 14 |  * Author: Daniel Veillard
 15 |  */
 16 | 
 17 | #ifndef __XML_CATALOG_H__
 18 | #define __XML_CATALOG_H__
 19 | 
 20 | #include <stdio.h>
 21 | 
 22 | #include <libxml/xmlversion.h>
 23 | #include <libxml/xmlstring.h>
 24 | #include <libxml/tree.h>
 25 | 
 26 | #ifdef LIBXML_CATALOG_ENABLED
 27 | 
 28 | #ifdef __cplusplus
 29 | extern "C" {
 30 | #endif
 31 | 
 32 | /**
 33 |  * XML_CATALOGS_NAMESPACE:
 34 |  *
 35 |  * The namespace for the XML Catalogs elements.
 36 |  */
 37 | #define XML_CATALOGS_NAMESPACE					\
 38 |     (const xmlChar *) "urn:oasis:names:tc:entity:xmlns:xml:catalog"
 39 | /**
 40 |  * XML_CATALOG_PI:
 41 |  *
 42 |  * The specific XML Catalog Processing Instruction name.
 43 |  */
 44 | #define XML_CATALOG_PI						\
 45 |     (const xmlChar *) "oasis-xml-catalog"
 46 | 
 47 | /*
 48 |  * The API is voluntarily limited to general cataloging.
 49 |  */
 50 | typedef enum {
 51 |     XML_CATA_PREFER_NONE = 0,
 52 |     XML_CATA_PREFER_PUBLIC = 1,
 53 |     XML_CATA_PREFER_SYSTEM
 54 | } xmlCatalogPrefer;
 55 | 
 56 | typedef enum {
 57 |     XML_CATA_ALLOW_NONE = 0,
 58 |     XML_CATA_ALLOW_GLOBAL = 1,
 59 |     XML_CATA_ALLOW_DOCUMENT = 2,
 60 |     XML_CATA_ALLOW_ALL = 3
 61 | } xmlCatalogAllow;
 62 | 
 63 | typedef struct _xmlCatalog xmlCatalog;
 64 | typedef xmlCatalog *xmlCatalogPtr;
 65 | 
 66 | /*
 67 |  * Operations on a given catalog.
 68 |  */
 69 | XMLPUBFUN xmlCatalogPtr
 70 | 		xmlNewCatalog		(int sgml);
 71 | XMLPUBFUN xmlCatalogPtr
 72 | 		xmlLoadACatalog		(const char *filename);
 73 | XMLPUBFUN xmlCatalogPtr
 74 | 		xmlLoadSGMLSuperCatalog	(const char *filename);
 75 | XMLPUBFUN int
 76 | 		xmlConvertSGMLCatalog	(xmlCatalogPtr catal);
 77 | XMLPUBFUN int
 78 | 		xmlACatalogAdd		(xmlCatalogPtr catal,
 79 | 					 const xmlChar *type,
 80 | 					 const xmlChar *orig,
 81 | 					 const xmlChar *replace);
 82 | XMLPUBFUN int
 83 | 		xmlACatalogRemove	(xmlCatalogPtr catal,
 84 | 					 const xmlChar *value);
 85 | XMLPUBFUN xmlChar *
 86 | 		xmlACatalogResolve	(xmlCatalogPtr catal,
 87 | 					 const xmlChar *pubID,
 88 | 	                                 const xmlChar *sysID);
 89 | XMLPUBFUN xmlChar *
 90 | 		xmlACatalogResolveSystem(xmlCatalogPtr catal,
 91 | 					 const xmlChar *sysID);
 92 | XMLPUBFUN xmlChar *
 93 | 		xmlACatalogResolvePublic(xmlCatalogPtr catal,
 94 | 					 const xmlChar *pubID);
 95 | XMLPUBFUN xmlChar *
 96 | 		xmlACatalogResolveURI	(xmlCatalogPtr catal,
 97 | 					 const xmlChar *URI);
 98 | #ifdef LIBXML_OUTPUT_ENABLED
 99 | XMLPUBFUN void
100 | 		xmlACatalogDump		(xmlCatalogPtr catal,
101 | 					 FILE *out);
102 | #endif /* LIBXML_OUTPUT_ENABLED */
103 | XMLPUBFUN void
104 | 		xmlFreeCatalog		(xmlCatalogPtr catal);
105 | XMLPUBFUN int
106 | 		xmlCatalogIsEmpty	(xmlCatalogPtr catal);
107 | 
108 | /*
109 |  * Global operations.
110 |  */
111 | XMLPUBFUN void
112 | 		xmlInitializeCatalog	(void);
113 | XMLPUBFUN int
114 | 		xmlLoadCatalog		(const char *filename);
115 | XMLPUBFUN void
116 | 		xmlLoadCatalogs		(const char *paths);
117 | XMLPUBFUN void
118 | 		xmlCatalogCleanup	(void);
119 | #ifdef LIBXML_OUTPUT_ENABLED
120 | XMLPUBFUN void
121 | 		xmlCatalogDump		(FILE *out);
122 | #endif /* LIBXML_OUTPUT_ENABLED */
123 | XMLPUBFUN xmlChar *
124 | 		xmlCatalogResolve	(const xmlChar *pubID,
125 | 	                                 const xmlChar *sysID);
126 | XMLPUBFUN xmlChar *
127 | 		xmlCatalogResolveSystem	(const xmlChar *sysID);
128 | XMLPUBFUN xmlChar *
129 | 		xmlCatalogResolvePublic	(const xmlChar *pubID);
130 | XMLPUBFUN xmlChar *
131 | 		xmlCatalogResolveURI	(const xmlChar *URI);
132 | XMLPUBFUN int
133 | 		xmlCatalogAdd		(const xmlChar *type,
134 | 					 const xmlChar *orig,
135 | 					 const xmlChar *replace);
136 | XMLPUBFUN int
137 | 		xmlCatalogRemove	(const xmlChar *value);
138 | XMLPUBFUN xmlDocPtr
139 | 		xmlParseCatalogFile	(const char *filename);
140 | XMLPUBFUN int
141 | 		xmlCatalogConvert	(void);
142 | 
143 | /*
144 |  * Strictly minimal interfaces for per-document catalogs used
145 |  * by the parser.
146 |  */
147 | XMLPUBFUN void
148 | 		xmlCatalogFreeLocal	(void *catalogs);
149 | XMLPUBFUN void *
150 | 		xmlCatalogAddLocal	(void *catalogs,
151 | 					 const xmlChar *URL);
152 | XMLPUBFUN xmlChar *
153 | 		xmlCatalogLocalResolve	(void *catalogs,
154 | 					 const xmlChar *pubID,
155 | 	                                 const xmlChar *sysID);
156 | XMLPUBFUN xmlChar *
157 | 		xmlCatalogLocalResolveURI(void *catalogs,
158 | 					 const xmlChar *URI);
159 | /*
160 |  * Preference settings.
161 |  */
162 | XMLPUBFUN int
163 | 		xmlCatalogSetDebug	(int level);
164 | XMLPUBFUN xmlCatalogPrefer
165 | 		xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer);
166 | XMLPUBFUN void
167 | 		xmlCatalogSetDefaults	(xmlCatalogAllow allow);
168 | XMLPUBFUN xmlCatalogAllow
169 | 		xmlCatalogGetDefaults	(void);
170 | 
171 | 
172 | /* DEPRECATED interfaces */
173 | XMLPUBFUN const xmlChar *
174 | 		xmlCatalogGetSystem	(const xmlChar *sysID);
175 | XMLPUBFUN const xmlChar *
176 | 		xmlCatalogGetPublic	(const xmlChar *pubID);
177 | 
178 | #ifdef __cplusplus
179 | }
180 | #endif
181 | #endif /* LIBXML_CATALOG_ENABLED */
182 | #endif /* __XML_CATALOG_H__ */
183 | 
```

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

```python
  1 | from __future__ import annotations
  2 | 
  3 | import re
  4 | from functools import lru_cache
  5 | from typing import Callable
  6 | 
  7 | from ._cell_widths import CELL_WIDTHS
  8 | 
  9 | # Regex to match sequence of the most common character ranges
 10 | _is_single_cell_widths = re.compile("^[\u0020-\u006f\u00a0\u02ff\u0370-\u0482]*$").match
 11 | 
 12 | 
 13 | @lru_cache(4096)
 14 | def cached_cell_len(text: str) -> int:
 15 |     """Get the number of cells required to display text.
 16 | 
 17 |     This method always caches, which may use up a lot of memory. It is recommended to use
 18 |     `cell_len` over this method.
 19 | 
 20 |     Args:
 21 |         text (str): Text to display.
 22 | 
 23 |     Returns:
 24 |         int: Get the number of cells required to display text.
 25 |     """
 26 |     _get_size = get_character_cell_size
 27 |     total_size = sum(_get_size(character) for character in text)
 28 |     return total_size
 29 | 
 30 | 
 31 | def cell_len(text: str, _cell_len: Callable[[str], int] = cached_cell_len) -> int:
 32 |     """Get the number of cells required to display text.
 33 | 
 34 |     Args:
 35 |         text (str): Text to display.
 36 | 
 37 |     Returns:
 38 |         int: Get the number of cells required to display text.
 39 |     """
 40 |     if len(text) < 512:
 41 |         return _cell_len(text)
 42 |     _get_size = get_character_cell_size
 43 |     total_size = sum(_get_size(character) for character in text)
 44 |     return total_size
 45 | 
 46 | 
 47 | @lru_cache(maxsize=4096)
 48 | def get_character_cell_size(character: str) -> int:
 49 |     """Get the cell size of a character.
 50 | 
 51 |     Args:
 52 |         character (str): A single character.
 53 | 
 54 |     Returns:
 55 |         int: Number of cells (0, 1 or 2) occupied by that character.
 56 |     """
 57 |     return _get_codepoint_cell_size(ord(character))
 58 | 
 59 | 
 60 | @lru_cache(maxsize=4096)
 61 | def _get_codepoint_cell_size(codepoint: int) -> int:
 62 |     """Get the cell size of a character.
 63 | 
 64 |     Args:
 65 |         codepoint (int): Codepoint of a character.
 66 | 
 67 |     Returns:
 68 |         int: Number of cells (0, 1 or 2) occupied by that character.
 69 |     """
 70 | 
 71 |     _table = CELL_WIDTHS
 72 |     lower_bound = 0
 73 |     upper_bound = len(_table) - 1
 74 |     index = (lower_bound + upper_bound) // 2
 75 |     while True:
 76 |         start, end, width = _table[index]
 77 |         if codepoint < start:
 78 |             upper_bound = index - 1
 79 |         elif codepoint > end:
 80 |             lower_bound = index + 1
 81 |         else:
 82 |             return 0 if width == -1 else width
 83 |         if upper_bound < lower_bound:
 84 |             break
 85 |         index = (lower_bound + upper_bound) // 2
 86 |     return 1
 87 | 
 88 | 
 89 | def set_cell_size(text: str, total: int) -> str:
 90 |     """Set the length of a string to fit within given number of cells."""
 91 | 
 92 |     if _is_single_cell_widths(text):
 93 |         size = len(text)
 94 |         if size < total:
 95 |             return text + " " * (total - size)
 96 |         return text[:total]
 97 | 
 98 |     if total <= 0:
 99 |         return ""
100 |     cell_size = cell_len(text)
101 |     if cell_size == total:
102 |         return text
103 |     if cell_size < total:
104 |         return text + " " * (total - cell_size)
105 | 
106 |     start = 0
107 |     end = len(text)
108 | 
109 |     # Binary search until we find the right size
110 |     while True:
111 |         pos = (start + end) // 2
112 |         before = text[: pos + 1]
113 |         before_len = cell_len(before)
114 |         if before_len == total + 1 and cell_len(before[-1]) == 2:
115 |             return before[:-1] + " "
116 |         if before_len == total:
117 |             return before
118 |         if before_len > total:
119 |             end = pos
120 |         else:
121 |             start = pos
122 | 
123 | 
124 | def chop_cells(
125 |     text: str,
126 |     width: int,
127 | ) -> list[str]:
128 |     """Split text into lines such that each line fits within the available (cell) width.
129 | 
130 |     Args:
131 |         text: The text to fold such that it fits in the given width.
132 |         width: The width available (number of cells).
133 | 
134 |     Returns:
135 |         A list of strings such that each string in the list has cell width
136 |         less than or equal to the available width.
137 |     """
138 |     _get_character_cell_size = get_character_cell_size
139 |     lines: list[list[str]] = [[]]
140 | 
141 |     append_new_line = lines.append
142 |     append_to_last_line = lines[-1].append
143 | 
144 |     total_width = 0
145 | 
146 |     for character in text:
147 |         cell_width = _get_character_cell_size(character)
148 |         char_doesnt_fit = total_width + cell_width > width
149 | 
150 |         if char_doesnt_fit:
151 |             append_new_line([character])
152 |             append_to_last_line = lines[-1].append
153 |             total_width = cell_width
154 |         else:
155 |             append_to_last_line(character)
156 |             total_width += cell_width
157 | 
158 |     return ["".join(line) for line in lines]
159 | 
160 | 
161 | if __name__ == "__main__":  # pragma: no cover
162 |     print(get_character_cell_size("😽"))
163 |     for line in chop_cells("""这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑。""", 8):
164 |         print(line)
165 |     for n in range(80, 1, -1):
166 |         print(set_cell_size("""这是对亚洲语言支持的测试。面对模棱两可的想法,拒绝猜测的诱惑。""", n) + "|")
167 |         print("x" * n)
168 | 
```
Page 13/168FirstPrevNextLast