This is page 4 of 168. Use http://codebase.md/romanshablio/mcp_server?lines=true&page={x} to view the full context.
# Directory Structure
```
├── .DS_Store
├── .venv
│ ├── __pycache__
│ │ └── hello.cpython-312.pyc
│ ├── bin
│ │ ├── activate
│ │ ├── activate.csh
│ │ ├── activate.fish
│ │ ├── Activate.ps1
│ │ ├── flask
│ │ ├── normalizer
│ │ ├── pip
│ │ ├── pip3
│ │ ├── pip3.12
│ │ ├── python
│ │ ├── python3
│ │ └── python3.12
│ ├── hello.py
│ ├── lib
│ │ └── python3.12
│ │ └── site-packages
│ │ ├── beautifulsoup4-4.12.3.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── licenses
│ │ │ │ ├── AUTHORS
│ │ │ │ └── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ └── WHEEL
│ │ ├── blinker
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _utilities.cpython-312.pyc
│ │ │ │ └── base.cpython-312.pyc
│ │ │ ├── _utilities.py
│ │ │ ├── base.py
│ │ │ └── py.typed
│ │ ├── blinker-1.8.2.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── bs4
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── css.cpython-312.pyc
│ │ │ │ ├── dammit.cpython-312.pyc
│ │ │ │ ├── diagnose.cpython-312.pyc
│ │ │ │ ├── element.cpython-312.pyc
│ │ │ │ └── formatter.cpython-312.pyc
│ │ │ ├── builder
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── _html5lib.cpython-312.pyc
│ │ │ │ │ ├── _htmlparser.cpython-312.pyc
│ │ │ │ │ └── _lxml.cpython-312.pyc
│ │ │ │ ├── _html5lib.py
│ │ │ │ ├── _htmlparser.py
│ │ │ │ └── _lxml.py
│ │ │ ├── css.py
│ │ │ ├── dammit.py
│ │ │ ├── diagnose.py
│ │ │ ├── element.py
│ │ │ ├── formatter.py
│ │ │ └── tests
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── test_builder_registry.cpython-312.pyc
│ │ │ │ ├── test_builder.cpython-312.pyc
│ │ │ │ ├── test_css.cpython-312.pyc
│ │ │ │ ├── test_dammit.cpython-312.pyc
│ │ │ │ ├── test_docs.cpython-312.pyc
│ │ │ │ ├── test_element.cpython-312.pyc
│ │ │ │ ├── test_formatter.cpython-312.pyc
│ │ │ │ ├── test_fuzz.cpython-312.pyc
│ │ │ │ ├── test_html5lib.cpython-312.pyc
│ │ │ │ ├── test_htmlparser.cpython-312.pyc
│ │ │ │ ├── test_lxml.cpython-312.pyc
│ │ │ │ ├── test_navigablestring.cpython-312.pyc
│ │ │ │ ├── test_pageelement.cpython-312.pyc
│ │ │ │ ├── test_soup.cpython-312.pyc
│ │ │ │ ├── test_tag.cpython-312.pyc
│ │ │ │ └── test_tree.cpython-312.pyc
│ │ │ ├── fuzz
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6306874195312640.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase
│ │ │ │ ├── crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase
│ │ │ │ └── crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase
│ │ │ ├── test_builder_registry.py
│ │ │ ├── test_builder.py
│ │ │ ├── test_css.py
│ │ │ ├── test_dammit.py
│ │ │ ├── test_docs.py
│ │ │ ├── test_element.py
│ │ │ ├── test_formatter.py
│ │ │ ├── test_fuzz.py
│ │ │ ├── test_html5lib.py
│ │ │ ├── test_htmlparser.py
│ │ │ ├── test_lxml.py
│ │ │ ├── test_navigablestring.py
│ │ │ ├── test_pageelement.py
│ │ │ ├── test_soup.py
│ │ │ ├── test_tag.py
│ │ │ └── test_tree.py
│ │ ├── certifi
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ └── core.cpython-312.pyc
│ │ │ ├── cacert.pem
│ │ │ ├── core.py
│ │ │ └── py.typed
│ │ ├── certifi-2024.8.30.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── charset_normalizer
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ ├── cd.cpython-312.pyc
│ │ │ │ ├── constant.cpython-312.pyc
│ │ │ │ ├── legacy.cpython-312.pyc
│ │ │ │ ├── md.cpython-312.pyc
│ │ │ │ ├── models.cpython-312.pyc
│ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ └── version.cpython-312.pyc
│ │ │ ├── api.py
│ │ │ ├── cd.py
│ │ │ ├── cli
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __main__.py
│ │ │ │ └── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ └── __main__.cpython-312.pyc
│ │ │ ├── constant.py
│ │ │ ├── legacy.py
│ │ │ ├── md__mypyc.cpython-312-darwin.so
│ │ │ ├── md.cpython-312-darwin.so
│ │ │ ├── md.py
│ │ │ ├── models.py
│ │ │ ├── py.typed
│ │ │ ├── utils.py
│ │ │ └── version.py
│ │ ├── charset_normalizer-3.4.0.dist-info
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── click
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _compat.cpython-312.pyc
│ │ │ │ ├── _termui_impl.cpython-312.pyc
│ │ │ │ ├── _textwrap.cpython-312.pyc
│ │ │ │ ├── _winconsole.cpython-312.pyc
│ │ │ │ ├── core.cpython-312.pyc
│ │ │ │ ├── decorators.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── formatting.cpython-312.pyc
│ │ │ │ ├── globals.cpython-312.pyc
│ │ │ │ ├── parser.cpython-312.pyc
│ │ │ │ ├── shell_completion.cpython-312.pyc
│ │ │ │ ├── termui.cpython-312.pyc
│ │ │ │ ├── testing.cpython-312.pyc
│ │ │ │ ├── types.cpython-312.pyc
│ │ │ │ └── utils.cpython-312.pyc
│ │ │ ├── _compat.py
│ │ │ ├── _termui_impl.py
│ │ │ ├── _textwrap.py
│ │ │ ├── _winconsole.py
│ │ │ ├── core.py
│ │ │ ├── decorators.py
│ │ │ ├── exceptions.py
│ │ │ ├── formatting.py
│ │ │ ├── globals.py
│ │ │ ├── parser.py
│ │ │ ├── py.typed
│ │ │ ├── shell_completion.py
│ │ │ ├── termui.py
│ │ │ ├── testing.py
│ │ │ ├── types.py
│ │ │ └── utils.py
│ │ ├── click-8.1.7.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.rst
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── fake_useragent
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── errors.cpython-312.pyc
│ │ │ │ ├── fake.cpython-312.pyc
│ │ │ │ ├── log.cpython-312.pyc
│ │ │ │ ├── settings.cpython-312.pyc
│ │ │ │ └── utils.cpython-312.pyc
│ │ │ ├── data
│ │ │ │ └── browsers.json
│ │ │ ├── errors.py
│ │ │ ├── fake.py
│ │ │ ├── log.py
│ │ │ ├── settings.py
│ │ │ └── utils.py
│ │ ├── fake_useragent-1.5.1.dist-info
│ │ │ ├── AUTHORS
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── flask
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ ├── app.cpython-312.pyc
│ │ │ │ ├── blueprints.cpython-312.pyc
│ │ │ │ ├── cli.cpython-312.pyc
│ │ │ │ ├── config.cpython-312.pyc
│ │ │ │ ├── ctx.cpython-312.pyc
│ │ │ │ ├── debughelpers.cpython-312.pyc
│ │ │ │ ├── globals.cpython-312.pyc
│ │ │ │ ├── helpers.cpython-312.pyc
│ │ │ │ ├── logging.cpython-312.pyc
│ │ │ │ ├── sessions.cpython-312.pyc
│ │ │ │ ├── signals.cpython-312.pyc
│ │ │ │ ├── templating.cpython-312.pyc
│ │ │ │ ├── testing.cpython-312.pyc
│ │ │ │ ├── typing.cpython-312.pyc
│ │ │ │ ├── views.cpython-312.pyc
│ │ │ │ └── wrappers.cpython-312.pyc
│ │ │ ├── app.py
│ │ │ ├── blueprints.py
│ │ │ ├── cli.py
│ │ │ ├── config.py
│ │ │ ├── ctx.py
│ │ │ ├── debughelpers.py
│ │ │ ├── globals.py
│ │ │ ├── helpers.py
│ │ │ ├── json
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── provider.cpython-312.pyc
│ │ │ │ │ └── tag.cpython-312.pyc
│ │ │ │ ├── provider.py
│ │ │ │ └── tag.py
│ │ │ ├── logging.py
│ │ │ ├── py.typed
│ │ │ ├── sansio
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── app.cpython-312.pyc
│ │ │ │ │ ├── blueprints.cpython-312.pyc
│ │ │ │ │ └── scaffold.cpython-312.pyc
│ │ │ │ ├── app.py
│ │ │ │ ├── blueprints.py
│ │ │ │ ├── README.md
│ │ │ │ └── scaffold.py
│ │ │ ├── sessions.py
│ │ │ ├── signals.py
│ │ │ ├── templating.py
│ │ │ ├── testing.py
│ │ │ ├── typing.py
│ │ │ ├── views.py
│ │ │ └── wrappers.py
│ │ ├── flask-3.0.3.dist-info
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ └── WHEEL
│ │ ├── idna
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── codec.cpython-312.pyc
│ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ ├── core.cpython-312.pyc
│ │ │ │ ├── idnadata.cpython-312.pyc
│ │ │ │ ├── intranges.cpython-312.pyc
│ │ │ │ ├── package_data.cpython-312.pyc
│ │ │ │ └── uts46data.cpython-312.pyc
│ │ │ ├── codec.py
│ │ │ ├── compat.py
│ │ │ ├── core.py
│ │ │ ├── idnadata.py
│ │ │ ├── intranges.py
│ │ │ ├── package_data.py
│ │ │ ├── py.typed
│ │ │ └── uts46data.py
│ │ ├── idna-3.10.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.md
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── itsdangerous
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _json.cpython-312.pyc
│ │ │ │ ├── encoding.cpython-312.pyc
│ │ │ │ ├── exc.cpython-312.pyc
│ │ │ │ ├── serializer.cpython-312.pyc
│ │ │ │ ├── signer.cpython-312.pyc
│ │ │ │ ├── timed.cpython-312.pyc
│ │ │ │ └── url_safe.cpython-312.pyc
│ │ │ ├── _json.py
│ │ │ ├── encoding.py
│ │ │ ├── exc.py
│ │ │ ├── py.typed
│ │ │ ├── serializer.py
│ │ │ ├── signer.py
│ │ │ ├── timed.py
│ │ │ └── url_safe.py
│ │ ├── itsdangerous-2.2.0.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── jinja2
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _identifier.cpython-312.pyc
│ │ │ │ ├── async_utils.cpython-312.pyc
│ │ │ │ ├── bccache.cpython-312.pyc
│ │ │ │ ├── compiler.cpython-312.pyc
│ │ │ │ ├── constants.cpython-312.pyc
│ │ │ │ ├── debug.cpython-312.pyc
│ │ │ │ ├── defaults.cpython-312.pyc
│ │ │ │ ├── environment.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── ext.cpython-312.pyc
│ │ │ │ ├── filters.cpython-312.pyc
│ │ │ │ ├── idtracking.cpython-312.pyc
│ │ │ │ ├── lexer.cpython-312.pyc
│ │ │ │ ├── loaders.cpython-312.pyc
│ │ │ │ ├── meta.cpython-312.pyc
│ │ │ │ ├── nativetypes.cpython-312.pyc
│ │ │ │ ├── nodes.cpython-312.pyc
│ │ │ │ ├── optimizer.cpython-312.pyc
│ │ │ │ ├── parser.cpython-312.pyc
│ │ │ │ ├── runtime.cpython-312.pyc
│ │ │ │ ├── sandbox.cpython-312.pyc
│ │ │ │ ├── tests.cpython-312.pyc
│ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ └── visitor.cpython-312.pyc
│ │ │ ├── _identifier.py
│ │ │ ├── async_utils.py
│ │ │ ├── bccache.py
│ │ │ ├── compiler.py
│ │ │ ├── constants.py
│ │ │ ├── debug.py
│ │ │ ├── defaults.py
│ │ │ ├── environment.py
│ │ │ ├── exceptions.py
│ │ │ ├── ext.py
│ │ │ ├── filters.py
│ │ │ ├── idtracking.py
│ │ │ ├── lexer.py
│ │ │ ├── loaders.py
│ │ │ ├── meta.py
│ │ │ ├── nativetypes.py
│ │ │ ├── nodes.py
│ │ │ ├── optimizer.py
│ │ │ ├── parser.py
│ │ │ ├── py.typed
│ │ │ ├── runtime.py
│ │ │ ├── sandbox.py
│ │ │ ├── tests.py
│ │ │ ├── utils.py
│ │ │ └── visitor.py
│ │ ├── jinja2-3.1.4.dist-info
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── lxml
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _elementpath.cpython-312.pyc
│ │ │ │ ├── builder.cpython-312.pyc
│ │ │ │ ├── cssselect.cpython-312.pyc
│ │ │ │ ├── doctestcompare.cpython-312.pyc
│ │ │ │ ├── ElementInclude.cpython-312.pyc
│ │ │ │ ├── pyclasslookup.cpython-312.pyc
│ │ │ │ ├── sax.cpython-312.pyc
│ │ │ │ └── usedoctest.cpython-312.pyc
│ │ │ ├── _elementpath.cpython-312-darwin.so
│ │ │ ├── _elementpath.py
│ │ │ ├── apihelpers.pxi
│ │ │ ├── builder.cpython-312-darwin.so
│ │ │ ├── builder.py
│ │ │ ├── classlookup.pxi
│ │ │ ├── cleanup.pxi
│ │ │ ├── cssselect.py
│ │ │ ├── debug.pxi
│ │ │ ├── docloader.pxi
│ │ │ ├── doctestcompare.py
│ │ │ ├── dtd.pxi
│ │ │ ├── ElementInclude.py
│ │ │ ├── etree_api.h
│ │ │ ├── etree.cpython-312-darwin.so
│ │ │ ├── etree.h
│ │ │ ├── etree.pyx
│ │ │ ├── extensions.pxi
│ │ │ ├── html
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── _diffcommand.cpython-312.pyc
│ │ │ │ │ ├── _html5builder.cpython-312.pyc
│ │ │ │ │ ├── _setmixin.cpython-312.pyc
│ │ │ │ │ ├── builder.cpython-312.pyc
│ │ │ │ │ ├── clean.cpython-312.pyc
│ │ │ │ │ ├── defs.cpython-312.pyc
│ │ │ │ │ ├── diff.cpython-312.pyc
│ │ │ │ │ ├── ElementSoup.cpython-312.pyc
│ │ │ │ │ ├── formfill.cpython-312.pyc
│ │ │ │ │ ├── html5parser.cpython-312.pyc
│ │ │ │ │ ├── soupparser.cpython-312.pyc
│ │ │ │ │ └── usedoctest.cpython-312.pyc
│ │ │ │ ├── _diffcommand.py
│ │ │ │ ├── _html5builder.py
│ │ │ │ ├── _setmixin.py
│ │ │ │ ├── builder.py
│ │ │ │ ├── clean.py
│ │ │ │ ├── defs.py
│ │ │ │ ├── diff.cpython-312-darwin.so
│ │ │ │ ├── diff.py
│ │ │ │ ├── ElementSoup.py
│ │ │ │ ├── formfill.py
│ │ │ │ ├── html5parser.py
│ │ │ │ ├── soupparser.py
│ │ │ │ └── usedoctest.py
│ │ │ ├── includes
│ │ │ │ ├── __init__.pxd
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ ├── c14n.pxd
│ │ │ │ ├── config.pxd
│ │ │ │ ├── dtdvalid.pxd
│ │ │ │ ├── etree_defs.h
│ │ │ │ ├── etreepublic.pxd
│ │ │ │ ├── extlibs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── libcharset.h
│ │ │ │ │ ├── localcharset.h
│ │ │ │ │ ├── zconf.h
│ │ │ │ │ └── zlib.h
│ │ │ │ ├── htmlparser.pxd
│ │ │ │ ├── libexslt
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── exslt.h
│ │ │ │ │ ├── exsltconfig.h
│ │ │ │ │ └── exsltexports.h
│ │ │ │ ├── libxml
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── c14n.h
│ │ │ │ │ ├── catalog.h
│ │ │ │ │ ├── chvalid.h
│ │ │ │ │ ├── debugXML.h
│ │ │ │ │ ├── dict.h
│ │ │ │ │ ├── encoding.h
│ │ │ │ │ ├── entities.h
│ │ │ │ │ ├── globals.h
│ │ │ │ │ ├── hash.h
│ │ │ │ │ ├── HTMLparser.h
│ │ │ │ │ ├── HTMLtree.h
│ │ │ │ │ ├── list.h
│ │ │ │ │ ├── nanoftp.h
│ │ │ │ │ ├── nanohttp.h
│ │ │ │ │ ├── parser.h
│ │ │ │ │ ├── parserInternals.h
│ │ │ │ │ ├── relaxng.h
│ │ │ │ │ ├── SAX.h
│ │ │ │ │ ├── SAX2.h
│ │ │ │ │ ├── schemasInternals.h
│ │ │ │ │ ├── schematron.h
│ │ │ │ │ ├── threads.h
│ │ │ │ │ ├── tree.h
│ │ │ │ │ ├── uri.h
│ │ │ │ │ ├── valid.h
│ │ │ │ │ ├── xinclude.h
│ │ │ │ │ ├── xlink.h
│ │ │ │ │ ├── xmlautomata.h
│ │ │ │ │ ├── xmlerror.h
│ │ │ │ │ ├── xmlexports.h
│ │ │ │ │ ├── xmlIO.h
│ │ │ │ │ ├── xmlmemory.h
│ │ │ │ │ ├── xmlmodule.h
│ │ │ │ │ ├── xmlreader.h
│ │ │ │ │ ├── xmlregexp.h
│ │ │ │ │ ├── xmlsave.h
│ │ │ │ │ ├── xmlschemas.h
│ │ │ │ │ ├── xmlschemastypes.h
│ │ │ │ │ ├── xmlstring.h
│ │ │ │ │ ├── xmlunicode.h
│ │ │ │ │ ├── xmlversion.h
│ │ │ │ │ ├── xmlwriter.h
│ │ │ │ │ ├── xpath.h
│ │ │ │ │ ├── xpathInternals.h
│ │ │ │ │ └── xpointer.h
│ │ │ │ ├── libxslt
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── attributes.h
│ │ │ │ │ ├── documents.h
│ │ │ │ │ ├── extensions.h
│ │ │ │ │ ├── extra.h
│ │ │ │ │ ├── functions.h
│ │ │ │ │ ├── imports.h
│ │ │ │ │ ├── keys.h
│ │ │ │ │ ├── namespaces.h
│ │ │ │ │ ├── numbersInternals.h
│ │ │ │ │ ├── pattern.h
│ │ │ │ │ ├── preproc.h
│ │ │ │ │ ├── security.h
│ │ │ │ │ ├── templates.h
│ │ │ │ │ ├── transform.h
│ │ │ │ │ ├── variables.h
│ │ │ │ │ ├── xslt.h
│ │ │ │ │ ├── xsltconfig.h
│ │ │ │ │ ├── xsltexports.h
│ │ │ │ │ ├── xsltInternals.h
│ │ │ │ │ ├── xsltlocale.h
│ │ │ │ │ └── xsltutils.h
│ │ │ │ ├── lxml-version.h
│ │ │ │ ├── relaxng.pxd
│ │ │ │ ├── schematron.pxd
│ │ │ │ ├── tree.pxd
│ │ │ │ ├── uri.pxd
│ │ │ │ ├── xinclude.pxd
│ │ │ │ ├── xmlerror.pxd
│ │ │ │ ├── xmlparser.pxd
│ │ │ │ ├── xmlschema.pxd
│ │ │ │ ├── xpath.pxd
│ │ │ │ └── xslt.pxd
│ │ │ ├── isoschematron
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ └── resources
│ │ │ │ ├── rng
│ │ │ │ │ └── iso-schematron.rng
│ │ │ │ └── xsl
│ │ │ │ ├── iso-schematron-xslt1
│ │ │ │ │ ├── iso_abstract_expand.xsl
│ │ │ │ │ ├── iso_dsdl_include.xsl
│ │ │ │ │ ├── iso_schematron_message.xsl
│ │ │ │ │ ├── iso_schematron_skeleton_for_xslt1.xsl
│ │ │ │ │ ├── iso_svrl_for_xslt1.xsl
│ │ │ │ │ └── readme.txt
│ │ │ │ ├── RNG2Schtrn.xsl
│ │ │ │ └── XSD2Schtrn.xsl
│ │ │ ├── iterparse.pxi
│ │ │ ├── lxml.etree_api.h
│ │ │ ├── lxml.etree.h
│ │ │ ├── nsclasses.pxi
│ │ │ ├── objectify.cpython-312-darwin.so
│ │ │ ├── objectify.pyx
│ │ │ ├── objectpath.pxi
│ │ │ ├── parser.pxi
│ │ │ ├── parsertarget.pxi
│ │ │ ├── proxy.pxi
│ │ │ ├── public-api.pxi
│ │ │ ├── pyclasslookup.py
│ │ │ ├── readonlytree.pxi
│ │ │ ├── relaxng.pxi
│ │ │ ├── sax.cpython-312-darwin.so
│ │ │ ├── sax.py
│ │ │ ├── saxparser.pxi
│ │ │ ├── schematron.pxi
│ │ │ ├── serializer.pxi
│ │ │ ├── usedoctest.py
│ │ │ ├── xinclude.pxi
│ │ │ ├── xmlerror.pxi
│ │ │ ├── xmlid.pxi
│ │ │ ├── xmlschema.pxi
│ │ │ ├── xpath.pxi
│ │ │ ├── xslt.pxi
│ │ │ └── xsltext.pxi
│ │ ├── lxml-5.3.0.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── LICENSES.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── markupsafe
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ └── _native.cpython-312.pyc
│ │ │ ├── _native.py
│ │ │ ├── _speedups.c
│ │ │ ├── _speedups.cpython-312-darwin.so
│ │ │ ├── _speedups.pyi
│ │ │ └── py.typed
│ │ ├── MarkupSafe-3.0.1.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── pip
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pip-runner__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ └── __pip-runner__.cpython-312.pyc
│ │ │ ├── _internal
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── build_env.cpython-312.pyc
│ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ ├── configuration.cpython-312.pyc
│ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ ├── main.cpython-312.pyc
│ │ │ │ │ ├── pyproject.cpython-312.pyc
│ │ │ │ │ ├── self_outdated_check.cpython-312.pyc
│ │ │ │ │ └── wheel_builder.cpython-312.pyc
│ │ │ │ ├── build_env.py
│ │ │ │ ├── cache.py
│ │ │ │ ├── cli
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── autocompletion.cpython-312.pyc
│ │ │ │ │ │ ├── base_command.cpython-312.pyc
│ │ │ │ │ │ ├── cmdoptions.cpython-312.pyc
│ │ │ │ │ │ ├── command_context.cpython-312.pyc
│ │ │ │ │ │ ├── index_command.cpython-312.pyc
│ │ │ │ │ │ ├── main_parser.cpython-312.pyc
│ │ │ │ │ │ ├── main.cpython-312.pyc
│ │ │ │ │ │ ├── parser.cpython-312.pyc
│ │ │ │ │ │ ├── progress_bars.cpython-312.pyc
│ │ │ │ │ │ ├── req_command.cpython-312.pyc
│ │ │ │ │ │ ├── spinners.cpython-312.pyc
│ │ │ │ │ │ └── status_codes.cpython-312.pyc
│ │ │ │ │ ├── autocompletion.py
│ │ │ │ │ ├── base_command.py
│ │ │ │ │ ├── cmdoptions.py
│ │ │ │ │ ├── command_context.py
│ │ │ │ │ ├── index_command.py
│ │ │ │ │ ├── main_parser.py
│ │ │ │ │ ├── main.py
│ │ │ │ │ ├── parser.py
│ │ │ │ │ ├── progress_bars.py
│ │ │ │ │ ├── req_command.py
│ │ │ │ │ ├── spinners.py
│ │ │ │ │ └── status_codes.py
│ │ │ │ ├── commands
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ │ ├── check.cpython-312.pyc
│ │ │ │ │ │ ├── completion.cpython-312.pyc
│ │ │ │ │ │ ├── configuration.cpython-312.pyc
│ │ │ │ │ │ ├── debug.cpython-312.pyc
│ │ │ │ │ │ ├── download.cpython-312.pyc
│ │ │ │ │ │ ├── freeze.cpython-312.pyc
│ │ │ │ │ │ ├── hash.cpython-312.pyc
│ │ │ │ │ │ ├── help.cpython-312.pyc
│ │ │ │ │ │ ├── index.cpython-312.pyc
│ │ │ │ │ │ ├── inspect.cpython-312.pyc
│ │ │ │ │ │ ├── install.cpython-312.pyc
│ │ │ │ │ │ ├── list.cpython-312.pyc
│ │ │ │ │ │ ├── search.cpython-312.pyc
│ │ │ │ │ │ ├── show.cpython-312.pyc
│ │ │ │ │ │ ├── uninstall.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── cache.py
│ │ │ │ │ ├── check.py
│ │ │ │ │ ├── completion.py
│ │ │ │ │ ├── configuration.py
│ │ │ │ │ ├── debug.py
│ │ │ │ │ ├── download.py
│ │ │ │ │ ├── freeze.py
│ │ │ │ │ ├── hash.py
│ │ │ │ │ ├── help.py
│ │ │ │ │ ├── index.py
│ │ │ │ │ ├── inspect.py
│ │ │ │ │ ├── install.py
│ │ │ │ │ ├── list.py
│ │ │ │ │ ├── search.py
│ │ │ │ │ ├── show.py
│ │ │ │ │ ├── uninstall.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── configuration.py
│ │ │ │ ├── distributions
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── base.cpython-312.pyc
│ │ │ │ │ │ ├── installed.cpython-312.pyc
│ │ │ │ │ │ ├── sdist.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── installed.py
│ │ │ │ │ ├── sdist.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── exceptions.py
│ │ │ │ ├── index
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── collector.cpython-312.pyc
│ │ │ │ │ │ ├── package_finder.cpython-312.pyc
│ │ │ │ │ │ └── sources.cpython-312.pyc
│ │ │ │ │ ├── collector.py
│ │ │ │ │ ├── package_finder.py
│ │ │ │ │ └── sources.py
│ │ │ │ ├── locations
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _distutils.cpython-312.pyc
│ │ │ │ │ │ ├── _sysconfig.cpython-312.pyc
│ │ │ │ │ │ └── base.cpython-312.pyc
│ │ │ │ │ ├── _distutils.py
│ │ │ │ │ ├── _sysconfig.py
│ │ │ │ │ └── base.py
│ │ │ │ ├── main.py
│ │ │ │ ├── metadata
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _json.cpython-312.pyc
│ │ │ │ │ │ ├── base.cpython-312.pyc
│ │ │ │ │ │ └── pkg_resources.cpython-312.pyc
│ │ │ │ │ ├── _json.py
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── importlib
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _compat.cpython-312.pyc
│ │ │ │ │ │ │ ├── _dists.cpython-312.pyc
│ │ │ │ │ │ │ └── _envs.cpython-312.pyc
│ │ │ │ │ │ ├── _compat.py
│ │ │ │ │ │ ├── _dists.py
│ │ │ │ │ │ └── _envs.py
│ │ │ │ │ └── pkg_resources.py
│ │ │ │ ├── models
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── candidate.cpython-312.pyc
│ │ │ │ │ │ ├── direct_url.cpython-312.pyc
│ │ │ │ │ │ ├── format_control.cpython-312.pyc
│ │ │ │ │ │ ├── index.cpython-312.pyc
│ │ │ │ │ │ ├── installation_report.cpython-312.pyc
│ │ │ │ │ │ ├── link.cpython-312.pyc
│ │ │ │ │ │ ├── scheme.cpython-312.pyc
│ │ │ │ │ │ ├── search_scope.cpython-312.pyc
│ │ │ │ │ │ ├── selection_prefs.cpython-312.pyc
│ │ │ │ │ │ ├── target_python.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── candidate.py
│ │ │ │ │ ├── direct_url.py
│ │ │ │ │ ├── format_control.py
│ │ │ │ │ ├── index.py
│ │ │ │ │ ├── installation_report.py
│ │ │ │ │ ├── link.py
│ │ │ │ │ ├── scheme.py
│ │ │ │ │ ├── search_scope.py
│ │ │ │ │ ├── selection_prefs.py
│ │ │ │ │ ├── target_python.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── network
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ │ ├── download.cpython-312.pyc
│ │ │ │ │ │ ├── lazy_wheel.cpython-312.pyc
│ │ │ │ │ │ ├── session.cpython-312.pyc
│ │ │ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ │ │ └── xmlrpc.cpython-312.pyc
│ │ │ │ │ ├── auth.py
│ │ │ │ │ ├── cache.py
│ │ │ │ │ ├── download.py
│ │ │ │ │ ├── lazy_wheel.py
│ │ │ │ │ ├── session.py
│ │ │ │ │ ├── utils.py
│ │ │ │ │ └── xmlrpc.py
│ │ │ │ ├── operations
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── check.cpython-312.pyc
│ │ │ │ │ │ ├── freeze.cpython-312.pyc
│ │ │ │ │ │ └── prepare.cpython-312.pyc
│ │ │ │ │ ├── build
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── build_tracker.cpython-312.pyc
│ │ │ │ │ │ │ ├── metadata_editable.cpython-312.pyc
│ │ │ │ │ │ │ ├── metadata_legacy.cpython-312.pyc
│ │ │ │ │ │ │ ├── metadata.cpython-312.pyc
│ │ │ │ │ │ │ ├── wheel_editable.cpython-312.pyc
│ │ │ │ │ │ │ ├── wheel_legacy.cpython-312.pyc
│ │ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ │ ├── build_tracker.py
│ │ │ │ │ │ ├── metadata_editable.py
│ │ │ │ │ │ ├── metadata_legacy.py
│ │ │ │ │ │ ├── metadata.py
│ │ │ │ │ │ ├── wheel_editable.py
│ │ │ │ │ │ ├── wheel_legacy.py
│ │ │ │ │ │ └── wheel.py
│ │ │ │ │ ├── check.py
│ │ │ │ │ ├── freeze.py
│ │ │ │ │ ├── install
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── editable_legacy.cpython-312.pyc
│ │ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ │ ├── editable_legacy.py
│ │ │ │ │ │ └── wheel.py
│ │ │ │ │ └── prepare.py
│ │ │ │ ├── pyproject.py
│ │ │ │ ├── req
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── constructors.cpython-312.pyc
│ │ │ │ │ │ ├── req_file.cpython-312.pyc
│ │ │ │ │ │ ├── req_install.cpython-312.pyc
│ │ │ │ │ │ ├── req_set.cpython-312.pyc
│ │ │ │ │ │ └── req_uninstall.cpython-312.pyc
│ │ │ │ │ ├── constructors.py
│ │ │ │ │ ├── req_file.py
│ │ │ │ │ ├── req_install.py
│ │ │ │ │ ├── req_set.py
│ │ │ │ │ └── req_uninstall.py
│ │ │ │ ├── resolution
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ └── base.cpython-312.pyc
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── legacy
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── resolver.cpython-312.pyc
│ │ │ │ │ │ └── resolver.py
│ │ │ │ │ └── resolvelib
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── base.cpython-312.pyc
│ │ │ │ │ │ ├── candidates.cpython-312.pyc
│ │ │ │ │ │ ├── factory.cpython-312.pyc
│ │ │ │ │ │ ├── found_candidates.cpython-312.pyc
│ │ │ │ │ │ ├── provider.cpython-312.pyc
│ │ │ │ │ │ ├── reporter.cpython-312.pyc
│ │ │ │ │ │ ├── requirements.cpython-312.pyc
│ │ │ │ │ │ └── resolver.cpython-312.pyc
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── candidates.py
│ │ │ │ │ ├── factory.py
│ │ │ │ │ ├── found_candidates.py
│ │ │ │ │ ├── provider.py
│ │ │ │ │ ├── reporter.py
│ │ │ │ │ ├── requirements.py
│ │ │ │ │ └── resolver.py
│ │ │ │ ├── self_outdated_check.py
│ │ │ │ ├── utils
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _jaraco_text.cpython-312.pyc
│ │ │ │ │ │ ├── _log.cpython-312.pyc
│ │ │ │ │ │ ├── appdirs.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── compatibility_tags.cpython-312.pyc
│ │ │ │ │ │ ├── datetime.cpython-312.pyc
│ │ │ │ │ │ ├── deprecation.cpython-312.pyc
│ │ │ │ │ │ ├── direct_url_helpers.cpython-312.pyc
│ │ │ │ │ │ ├── egg_link.cpython-312.pyc
│ │ │ │ │ │ ├── encoding.cpython-312.pyc
│ │ │ │ │ │ ├── entrypoints.cpython-312.pyc
│ │ │ │ │ │ ├── filesystem.cpython-312.pyc
│ │ │ │ │ │ ├── filetypes.cpython-312.pyc
│ │ │ │ │ │ ├── glibc.cpython-312.pyc
│ │ │ │ │ │ ├── hashes.cpython-312.pyc
│ │ │ │ │ │ ├── logging.cpython-312.pyc
│ │ │ │ │ │ ├── misc.cpython-312.pyc
│ │ │ │ │ │ ├── packaging.cpython-312.pyc
│ │ │ │ │ │ ├── retry.cpython-312.pyc
│ │ │ │ │ │ ├── setuptools_build.cpython-312.pyc
│ │ │ │ │ │ ├── subprocess.cpython-312.pyc
│ │ │ │ │ │ ├── temp_dir.cpython-312.pyc
│ │ │ │ │ │ ├── unpacking.cpython-312.pyc
│ │ │ │ │ │ ├── urls.cpython-312.pyc
│ │ │ │ │ │ ├── virtualenv.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── _jaraco_text.py
│ │ │ │ │ ├── _log.py
│ │ │ │ │ ├── appdirs.py
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── compatibility_tags.py
│ │ │ │ │ ├── datetime.py
│ │ │ │ │ ├── deprecation.py
│ │ │ │ │ ├── direct_url_helpers.py
│ │ │ │ │ ├── egg_link.py
│ │ │ │ │ ├── encoding.py
│ │ │ │ │ ├── entrypoints.py
│ │ │ │ │ ├── filesystem.py
│ │ │ │ │ ├── filetypes.py
│ │ │ │ │ ├── glibc.py
│ │ │ │ │ ├── hashes.py
│ │ │ │ │ ├── logging.py
│ │ │ │ │ ├── misc.py
│ │ │ │ │ ├── packaging.py
│ │ │ │ │ ├── retry.py
│ │ │ │ │ ├── setuptools_build.py
│ │ │ │ │ ├── subprocess.py
│ │ │ │ │ ├── temp_dir.py
│ │ │ │ │ ├── unpacking.py
│ │ │ │ │ ├── urls.py
│ │ │ │ │ ├── virtualenv.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── vcs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── bazaar.cpython-312.pyc
│ │ │ │ │ │ ├── git.cpython-312.pyc
│ │ │ │ │ │ ├── mercurial.cpython-312.pyc
│ │ │ │ │ │ ├── subversion.cpython-312.pyc
│ │ │ │ │ │ └── versioncontrol.cpython-312.pyc
│ │ │ │ │ ├── bazaar.py
│ │ │ │ │ ├── git.py
│ │ │ │ │ ├── mercurial.py
│ │ │ │ │ ├── subversion.py
│ │ │ │ │ └── versioncontrol.py
│ │ │ │ └── wheel_builder.py
│ │ │ ├── _vendor
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ └── typing_extensions.cpython-312.pyc
│ │ │ │ ├── cachecontrol
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _cmd.cpython-312.pyc
│ │ │ │ │ │ ├── adapter.cpython-312.pyc
│ │ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ │ ├── controller.cpython-312.pyc
│ │ │ │ │ │ ├── filewrapper.cpython-312.pyc
│ │ │ │ │ │ ├── heuristics.cpython-312.pyc
│ │ │ │ │ │ ├── serialize.cpython-312.pyc
│ │ │ │ │ │ └── wrapper.cpython-312.pyc
│ │ │ │ │ ├── _cmd.py
│ │ │ │ │ ├── adapter.py
│ │ │ │ │ ├── cache.py
│ │ │ │ │ ├── caches
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── file_cache.cpython-312.pyc
│ │ │ │ │ │ │ └── redis_cache.cpython-312.pyc
│ │ │ │ │ │ ├── file_cache.py
│ │ │ │ │ │ └── redis_cache.py
│ │ │ │ │ ├── controller.py
│ │ │ │ │ ├── filewrapper.py
│ │ │ │ │ ├── heuristics.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── serialize.py
│ │ │ │ │ └── wrapper.py
│ │ │ │ ├── certifi
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ └── core.cpython-312.pyc
│ │ │ │ │ ├── cacert.pem
│ │ │ │ │ ├── core.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── distlib
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── database.cpython-312.pyc
│ │ │ │ │ │ ├── index.cpython-312.pyc
│ │ │ │ │ │ ├── locators.cpython-312.pyc
│ │ │ │ │ │ ├── manifest.cpython-312.pyc
│ │ │ │ │ │ ├── markers.cpython-312.pyc
│ │ │ │ │ │ ├── metadata.cpython-312.pyc
│ │ │ │ │ │ ├── resources.cpython-312.pyc
│ │ │ │ │ │ ├── scripts.cpython-312.pyc
│ │ │ │ │ │ ├── util.cpython-312.pyc
│ │ │ │ │ │ ├── version.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── database.py
│ │ │ │ │ ├── index.py
│ │ │ │ │ ├── locators.py
│ │ │ │ │ ├── manifest.py
│ │ │ │ │ ├── markers.py
│ │ │ │ │ ├── metadata.py
│ │ │ │ │ ├── resources.py
│ │ │ │ │ ├── scripts.py
│ │ │ │ │ ├── t32.exe
│ │ │ │ │ ├── t64-arm.exe
│ │ │ │ │ ├── t64.exe
│ │ │ │ │ ├── util.py
│ │ │ │ │ ├── version.py
│ │ │ │ │ ├── w32.exe
│ │ │ │ │ ├── w64-arm.exe
│ │ │ │ │ ├── w64.exe
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── distro
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ └── distro.cpython-312.pyc
│ │ │ │ │ ├── distro.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── idna
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── codec.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── core.cpython-312.pyc
│ │ │ │ │ │ ├── idnadata.cpython-312.pyc
│ │ │ │ │ │ ├── intranges.cpython-312.pyc
│ │ │ │ │ │ ├── package_data.cpython-312.pyc
│ │ │ │ │ │ └── uts46data.cpython-312.pyc
│ │ │ │ │ ├── codec.py
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── core.py
│ │ │ │ │ ├── idnadata.py
│ │ │ │ │ ├── intranges.py
│ │ │ │ │ ├── package_data.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ └── uts46data.py
│ │ │ │ ├── msgpack
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ │ ├── ext.cpython-312.pyc
│ │ │ │ │ │ └── fallback.cpython-312.pyc
│ │ │ │ │ ├── exceptions.py
│ │ │ │ │ ├── ext.py
│ │ │ │ │ └── fallback.py
│ │ │ │ ├── packaging
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _elffile.cpython-312.pyc
│ │ │ │ │ │ ├── _manylinux.cpython-312.pyc
│ │ │ │ │ │ ├── _musllinux.cpython-312.pyc
│ │ │ │ │ │ ├── _parser.cpython-312.pyc
│ │ │ │ │ │ ├── _structures.cpython-312.pyc
│ │ │ │ │ │ ├── _tokenizer.cpython-312.pyc
│ │ │ │ │ │ ├── markers.cpython-312.pyc
│ │ │ │ │ │ ├── metadata.cpython-312.pyc
│ │ │ │ │ │ ├── requirements.cpython-312.pyc
│ │ │ │ │ │ ├── specifiers.cpython-312.pyc
│ │ │ │ │ │ ├── tags.cpython-312.pyc
│ │ │ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ │ │ └── version.cpython-312.pyc
│ │ │ │ │ ├── _elffile.py
│ │ │ │ │ ├── _manylinux.py
│ │ │ │ │ ├── _musllinux.py
│ │ │ │ │ ├── _parser.py
│ │ │ │ │ ├── _structures.py
│ │ │ │ │ ├── _tokenizer.py
│ │ │ │ │ ├── markers.py
│ │ │ │ │ ├── metadata.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── requirements.py
│ │ │ │ │ ├── specifiers.py
│ │ │ │ │ ├── tags.py
│ │ │ │ │ ├── utils.py
│ │ │ │ │ └── version.py
│ │ │ │ ├── pkg_resources
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── __pycache__
│ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ ├── platformdirs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ ├── android.cpython-312.pyc
│ │ │ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ │ │ ├── macos.cpython-312.pyc
│ │ │ │ │ │ ├── unix.cpython-312.pyc
│ │ │ │ │ │ ├── version.cpython-312.pyc
│ │ │ │ │ │ └── windows.cpython-312.pyc
│ │ │ │ │ ├── android.py
│ │ │ │ │ ├── api.py
│ │ │ │ │ ├── macos.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── unix.py
│ │ │ │ │ ├── version.py
│ │ │ │ │ └── windows.py
│ │ │ │ ├── pygments
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ ├── cmdline.cpython-312.pyc
│ │ │ │ │ │ ├── console.cpython-312.pyc
│ │ │ │ │ │ ├── filter.cpython-312.pyc
│ │ │ │ │ │ ├── formatter.cpython-312.pyc
│ │ │ │ │ │ ├── lexer.cpython-312.pyc
│ │ │ │ │ │ ├── modeline.cpython-312.pyc
│ │ │ │ │ │ ├── plugin.cpython-312.pyc
│ │ │ │ │ │ ├── regexopt.cpython-312.pyc
│ │ │ │ │ │ ├── scanner.cpython-312.pyc
│ │ │ │ │ │ ├── sphinxext.cpython-312.pyc
│ │ │ │ │ │ ├── style.cpython-312.pyc
│ │ │ │ │ │ ├── token.cpython-312.pyc
│ │ │ │ │ │ ├── unistring.cpython-312.pyc
│ │ │ │ │ │ └── util.cpython-312.pyc
│ │ │ │ │ ├── cmdline.py
│ │ │ │ │ ├── console.py
│ │ │ │ │ ├── filter.py
│ │ │ │ │ ├── filters
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── formatter.py
│ │ │ │ │ ├── formatters
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _mapping.cpython-312.pyc
│ │ │ │ │ │ │ ├── bbcode.cpython-312.pyc
│ │ │ │ │ │ │ ├── groff.cpython-312.pyc
│ │ │ │ │ │ │ ├── html.cpython-312.pyc
│ │ │ │ │ │ │ ├── img.cpython-312.pyc
│ │ │ │ │ │ │ ├── irc.cpython-312.pyc
│ │ │ │ │ │ │ ├── latex.cpython-312.pyc
│ │ │ │ │ │ │ ├── other.cpython-312.pyc
│ │ │ │ │ │ │ ├── pangomarkup.cpython-312.pyc
│ │ │ │ │ │ │ ├── rtf.cpython-312.pyc
│ │ │ │ │ │ │ ├── svg.cpython-312.pyc
│ │ │ │ │ │ │ ├── terminal.cpython-312.pyc
│ │ │ │ │ │ │ └── terminal256.cpython-312.pyc
│ │ │ │ │ │ ├── _mapping.py
│ │ │ │ │ │ ├── bbcode.py
│ │ │ │ │ │ ├── groff.py
│ │ │ │ │ │ ├── html.py
│ │ │ │ │ │ ├── img.py
│ │ │ │ │ │ ├── irc.py
│ │ │ │ │ │ ├── latex.py
│ │ │ │ │ │ ├── other.py
│ │ │ │ │ │ ├── pangomarkup.py
│ │ │ │ │ │ ├── rtf.py
│ │ │ │ │ │ ├── svg.py
│ │ │ │ │ │ ├── terminal.py
│ │ │ │ │ │ └── terminal256.py
│ │ │ │ │ ├── lexer.py
│ │ │ │ │ ├── lexers
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _mapping.cpython-312.pyc
│ │ │ │ │ │ │ └── python.cpython-312.pyc
│ │ │ │ │ │ ├── _mapping.py
│ │ │ │ │ │ └── python.py
│ │ │ │ │ ├── modeline.py
│ │ │ │ │ ├── plugin.py
│ │ │ │ │ ├── regexopt.py
│ │ │ │ │ ├── scanner.py
│ │ │ │ │ ├── sphinxext.py
│ │ │ │ │ ├── style.py
│ │ │ │ │ ├── styles
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── _mapping.cpython-312.pyc
│ │ │ │ │ │ └── _mapping.py
│ │ │ │ │ ├── token.py
│ │ │ │ │ ├── unistring.py
│ │ │ │ │ └── util.py
│ │ │ │ ├── pyproject_hooks
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _compat.cpython-312.pyc
│ │ │ │ │ │ └── _impl.cpython-312.pyc
│ │ │ │ │ ├── _compat.py
│ │ │ │ │ ├── _impl.py
│ │ │ │ │ └── _in_process
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ └── _in_process.cpython-312.pyc
│ │ │ │ │ └── _in_process.py
│ │ │ │ ├── requests
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __version__.cpython-312.pyc
│ │ │ │ │ │ ├── _internal_utils.cpython-312.pyc
│ │ │ │ │ │ ├── adapters.cpython-312.pyc
│ │ │ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ │ │ ├── certs.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── cookies.cpython-312.pyc
│ │ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ │ ├── help.cpython-312.pyc
│ │ │ │ │ │ ├── hooks.cpython-312.pyc
│ │ │ │ │ │ ├── models.cpython-312.pyc
│ │ │ │ │ │ ├── packages.cpython-312.pyc
│ │ │ │ │ │ ├── sessions.cpython-312.pyc
│ │ │ │ │ │ ├── status_codes.cpython-312.pyc
│ │ │ │ │ │ ├── structures.cpython-312.pyc
│ │ │ │ │ │ └── utils.cpython-312.pyc
│ │ │ │ │ ├── __version__.py
│ │ │ │ │ ├── _internal_utils.py
│ │ │ │ │ ├── adapters.py
│ │ │ │ │ ├── api.py
│ │ │ │ │ ├── auth.py
│ │ │ │ │ ├── certs.py
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── cookies.py
│ │ │ │ │ ├── exceptions.py
│ │ │ │ │ ├── help.py
│ │ │ │ │ ├── hooks.py
│ │ │ │ │ ├── models.py
│ │ │ │ │ ├── packages.py
│ │ │ │ │ ├── sessions.py
│ │ │ │ │ ├── status_codes.py
│ │ │ │ │ ├── structures.py
│ │ │ │ │ └── utils.py
│ │ │ │ ├── resolvelib
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── providers.cpython-312.pyc
│ │ │ │ │ │ ├── reporters.cpython-312.pyc
│ │ │ │ │ │ ├── resolvers.cpython-312.pyc
│ │ │ │ │ │ └── structs.cpython-312.pyc
│ │ │ │ │ ├── compat
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── collections_abc.cpython-312.pyc
│ │ │ │ │ │ └── collections_abc.py
│ │ │ │ │ ├── providers.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── reporters.py
│ │ │ │ │ ├── resolvers.py
│ │ │ │ │ └── structs.py
│ │ │ │ ├── rich
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ ├── _cell_widths.cpython-312.pyc
│ │ │ │ │ │ ├── _emoji_codes.cpython-312.pyc
│ │ │ │ │ │ ├── _emoji_replace.cpython-312.pyc
│ │ │ │ │ │ ├── _export_format.cpython-312.pyc
│ │ │ │ │ │ ├── _extension.cpython-312.pyc
│ │ │ │ │ │ ├── _fileno.cpython-312.pyc
│ │ │ │ │ │ ├── _inspect.cpython-312.pyc
│ │ │ │ │ │ ├── _log_render.cpython-312.pyc
│ │ │ │ │ │ ├── _loop.cpython-312.pyc
│ │ │ │ │ │ ├── _null_file.cpython-312.pyc
│ │ │ │ │ │ ├── _palettes.cpython-312.pyc
│ │ │ │ │ │ ├── _pick.cpython-312.pyc
│ │ │ │ │ │ ├── _ratio.cpython-312.pyc
│ │ │ │ │ │ ├── _spinners.cpython-312.pyc
│ │ │ │ │ │ ├── _stack.cpython-312.pyc
│ │ │ │ │ │ ├── _timer.cpython-312.pyc
│ │ │ │ │ │ ├── _win32_console.cpython-312.pyc
│ │ │ │ │ │ ├── _windows_renderer.cpython-312.pyc
│ │ │ │ │ │ ├── _windows.cpython-312.pyc
│ │ │ │ │ │ ├── _wrap.cpython-312.pyc
│ │ │ │ │ │ ├── abc.cpython-312.pyc
│ │ │ │ │ │ ├── align.cpython-312.pyc
│ │ │ │ │ │ ├── ansi.cpython-312.pyc
│ │ │ │ │ │ ├── bar.cpython-312.pyc
│ │ │ │ │ │ ├── box.cpython-312.pyc
│ │ │ │ │ │ ├── cells.cpython-312.pyc
│ │ │ │ │ │ ├── color_triplet.cpython-312.pyc
│ │ │ │ │ │ ├── color.cpython-312.pyc
│ │ │ │ │ │ ├── columns.cpython-312.pyc
│ │ │ │ │ │ ├── console.cpython-312.pyc
│ │ │ │ │ │ ├── constrain.cpython-312.pyc
│ │ │ │ │ │ ├── containers.cpython-312.pyc
│ │ │ │ │ │ ├── control.cpython-312.pyc
│ │ │ │ │ │ ├── default_styles.cpython-312.pyc
│ │ │ │ │ │ ├── diagnose.cpython-312.pyc
│ │ │ │ │ │ ├── emoji.cpython-312.pyc
│ │ │ │ │ │ ├── errors.cpython-312.pyc
│ │ │ │ │ │ ├── file_proxy.cpython-312.pyc
│ │ │ │ │ │ ├── filesize.cpython-312.pyc
│ │ │ │ │ │ ├── highlighter.cpython-312.pyc
│ │ │ │ │ │ ├── json.cpython-312.pyc
│ │ │ │ │ │ ├── jupyter.cpython-312.pyc
│ │ │ │ │ │ ├── layout.cpython-312.pyc
│ │ │ │ │ │ ├── live_render.cpython-312.pyc
│ │ │ │ │ │ ├── live.cpython-312.pyc
│ │ │ │ │ │ ├── logging.cpython-312.pyc
│ │ │ │ │ │ ├── markup.cpython-312.pyc
│ │ │ │ │ │ ├── measure.cpython-312.pyc
│ │ │ │ │ │ ├── padding.cpython-312.pyc
│ │ │ │ │ │ ├── pager.cpython-312.pyc
│ │ │ │ │ │ ├── palette.cpython-312.pyc
│ │ │ │ │ │ ├── panel.cpython-312.pyc
│ │ │ │ │ │ ├── pretty.cpython-312.pyc
│ │ │ │ │ │ ├── progress_bar.cpython-312.pyc
│ │ │ │ │ │ ├── progress.cpython-312.pyc
│ │ │ │ │ │ ├── prompt.cpython-312.pyc
│ │ │ │ │ │ ├── protocol.cpython-312.pyc
│ │ │ │ │ │ ├── region.cpython-312.pyc
│ │ │ │ │ │ ├── repr.cpython-312.pyc
│ │ │ │ │ │ ├── rule.cpython-312.pyc
│ │ │ │ │ │ ├── scope.cpython-312.pyc
│ │ │ │ │ │ ├── screen.cpython-312.pyc
│ │ │ │ │ │ ├── segment.cpython-312.pyc
│ │ │ │ │ │ ├── spinner.cpython-312.pyc
│ │ │ │ │ │ ├── status.cpython-312.pyc
│ │ │ │ │ │ ├── style.cpython-312.pyc
│ │ │ │ │ │ ├── styled.cpython-312.pyc
│ │ │ │ │ │ ├── syntax.cpython-312.pyc
│ │ │ │ │ │ ├── table.cpython-312.pyc
│ │ │ │ │ │ ├── terminal_theme.cpython-312.pyc
│ │ │ │ │ │ ├── text.cpython-312.pyc
│ │ │ │ │ │ ├── theme.cpython-312.pyc
│ │ │ │ │ │ ├── themes.cpython-312.pyc
│ │ │ │ │ │ ├── traceback.cpython-312.pyc
│ │ │ │ │ │ └── tree.cpython-312.pyc
│ │ │ │ │ ├── _cell_widths.py
│ │ │ │ │ ├── _emoji_codes.py
│ │ │ │ │ ├── _emoji_replace.py
│ │ │ │ │ ├── _export_format.py
│ │ │ │ │ ├── _extension.py
│ │ │ │ │ ├── _fileno.py
│ │ │ │ │ ├── _inspect.py
│ │ │ │ │ ├── _log_render.py
│ │ │ │ │ ├── _loop.py
│ │ │ │ │ ├── _null_file.py
│ │ │ │ │ ├── _palettes.py
│ │ │ │ │ ├── _pick.py
│ │ │ │ │ ├── _ratio.py
│ │ │ │ │ ├── _spinners.py
│ │ │ │ │ ├── _stack.py
│ │ │ │ │ ├── _timer.py
│ │ │ │ │ ├── _win32_console.py
│ │ │ │ │ ├── _windows_renderer.py
│ │ │ │ │ ├── _windows.py
│ │ │ │ │ ├── _wrap.py
│ │ │ │ │ ├── abc.py
│ │ │ │ │ ├── align.py
│ │ │ │ │ ├── ansi.py
│ │ │ │ │ ├── bar.py
│ │ │ │ │ ├── box.py
│ │ │ │ │ ├── cells.py
│ │ │ │ │ ├── color_triplet.py
│ │ │ │ │ ├── color.py
│ │ │ │ │ ├── columns.py
│ │ │ │ │ ├── console.py
│ │ │ │ │ ├── constrain.py
│ │ │ │ │ ├── containers.py
│ │ │ │ │ ├── control.py
│ │ │ │ │ ├── default_styles.py
│ │ │ │ │ ├── diagnose.py
│ │ │ │ │ ├── emoji.py
│ │ │ │ │ ├── errors.py
│ │ │ │ │ ├── file_proxy.py
│ │ │ │ │ ├── filesize.py
│ │ │ │ │ ├── highlighter.py
│ │ │ │ │ ├── json.py
│ │ │ │ │ ├── jupyter.py
│ │ │ │ │ ├── layout.py
│ │ │ │ │ ├── live_render.py
│ │ │ │ │ ├── live.py
│ │ │ │ │ ├── logging.py
│ │ │ │ │ ├── markup.py
│ │ │ │ │ ├── measure.py
│ │ │ │ │ ├── padding.py
│ │ │ │ │ ├── pager.py
│ │ │ │ │ ├── palette.py
│ │ │ │ │ ├── panel.py
│ │ │ │ │ ├── pretty.py
│ │ │ │ │ ├── progress_bar.py
│ │ │ │ │ ├── progress.py
│ │ │ │ │ ├── prompt.py
│ │ │ │ │ ├── protocol.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── region.py
│ │ │ │ │ ├── repr.py
│ │ │ │ │ ├── rule.py
│ │ │ │ │ ├── scope.py
│ │ │ │ │ ├── screen.py
│ │ │ │ │ ├── segment.py
│ │ │ │ │ ├── spinner.py
│ │ │ │ │ ├── status.py
│ │ │ │ │ ├── style.py
│ │ │ │ │ ├── styled.py
│ │ │ │ │ ├── syntax.py
│ │ │ │ │ ├── table.py
│ │ │ │ │ ├── terminal_theme.py
│ │ │ │ │ ├── text.py
│ │ │ │ │ ├── theme.py
│ │ │ │ │ ├── themes.py
│ │ │ │ │ ├── traceback.py
│ │ │ │ │ └── tree.py
│ │ │ │ ├── tomli
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _parser.cpython-312.pyc
│ │ │ │ │ │ ├── _re.cpython-312.pyc
│ │ │ │ │ │ └── _types.cpython-312.pyc
│ │ │ │ │ ├── _parser.py
│ │ │ │ │ ├── _re.py
│ │ │ │ │ ├── _types.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── truststore
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _api.cpython-312.pyc
│ │ │ │ │ │ ├── _macos.cpython-312.pyc
│ │ │ │ │ │ ├── _openssl.cpython-312.pyc
│ │ │ │ │ │ ├── _ssl_constants.cpython-312.pyc
│ │ │ │ │ │ └── _windows.cpython-312.pyc
│ │ │ │ │ ├── _api.py
│ │ │ │ │ ├── _macos.py
│ │ │ │ │ ├── _openssl.py
│ │ │ │ │ ├── _ssl_constants.py
│ │ │ │ │ ├── _windows.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── typing_extensions.py
│ │ │ │ ├── urllib3
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _collections.cpython-312.pyc
│ │ │ │ │ │ ├── _version.cpython-312.pyc
│ │ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ │ ├── connectionpool.cpython-312.pyc
│ │ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ │ ├── fields.cpython-312.pyc
│ │ │ │ │ │ ├── filepost.cpython-312.pyc
│ │ │ │ │ │ ├── poolmanager.cpython-312.pyc
│ │ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ │ └── response.cpython-312.pyc
│ │ │ │ │ ├── _collections.py
│ │ │ │ │ ├── _version.py
│ │ │ │ │ ├── connection.py
│ │ │ │ │ ├── connectionpool.py
│ │ │ │ │ ├── contrib
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _appengine_environ.cpython-312.pyc
│ │ │ │ │ │ │ ├── appengine.cpython-312.pyc
│ │ │ │ │ │ │ ├── ntlmpool.cpython-312.pyc
│ │ │ │ │ │ │ ├── pyopenssl.cpython-312.pyc
│ │ │ │ │ │ │ ├── securetransport.cpython-312.pyc
│ │ │ │ │ │ │ └── socks.cpython-312.pyc
│ │ │ │ │ │ ├── _appengine_environ.py
│ │ │ │ │ │ ├── _securetransport
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ │ ├── bindings.cpython-312.pyc
│ │ │ │ │ │ │ │ └── low_level.cpython-312.pyc
│ │ │ │ │ │ │ ├── bindings.py
│ │ │ │ │ │ │ └── low_level.py
│ │ │ │ │ │ ├── appengine.py
│ │ │ │ │ │ ├── ntlmpool.py
│ │ │ │ │ │ ├── pyopenssl.py
│ │ │ │ │ │ ├── securetransport.py
│ │ │ │ │ │ └── socks.py
│ │ │ │ │ ├── exceptions.py
│ │ │ │ │ ├── fields.py
│ │ │ │ │ ├── filepost.py
│ │ │ │ │ ├── packages
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── six.cpython-312.pyc
│ │ │ │ │ │ ├── backports
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ │ ├── makefile.cpython-312.pyc
│ │ │ │ │ │ │ │ └── weakref_finalize.cpython-312.pyc
│ │ │ │ │ │ │ ├── makefile.py
│ │ │ │ │ │ │ └── weakref_finalize.py
│ │ │ │ │ │ └── six.py
│ │ │ │ │ ├── poolmanager.py
│ │ │ │ │ ├── request.py
│ │ │ │ │ ├── response.py
│ │ │ │ │ └── util
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ │ ├── proxy.cpython-312.pyc
│ │ │ │ │ │ ├── queue.cpython-312.pyc
│ │ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ │ ├── response.cpython-312.pyc
│ │ │ │ │ │ ├── retry.cpython-312.pyc
│ │ │ │ │ │ ├── ssl_.cpython-312.pyc
│ │ │ │ │ │ ├── ssl_match_hostname.cpython-312.pyc
│ │ │ │ │ │ ├── ssltransport.cpython-312.pyc
│ │ │ │ │ │ ├── timeout.cpython-312.pyc
│ │ │ │ │ │ ├── url.cpython-312.pyc
│ │ │ │ │ │ └── wait.cpython-312.pyc
│ │ │ │ │ ├── connection.py
│ │ │ │ │ ├── proxy.py
│ │ │ │ │ ├── queue.py
│ │ │ │ │ ├── request.py
│ │ │ │ │ ├── response.py
│ │ │ │ │ ├── retry.py
│ │ │ │ │ ├── ssl_.py
│ │ │ │ │ ├── ssl_match_hostname.py
│ │ │ │ │ ├── ssltransport.py
│ │ │ │ │ ├── timeout.py
│ │ │ │ │ ├── url.py
│ │ │ │ │ └── wait.py
│ │ │ │ └── vendor.txt
│ │ │ └── py.typed
│ │ ├── pip-24.2.dist-info
│ │ │ ├── AUTHORS.txt
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── requests
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __version__.cpython-312.pyc
│ │ │ │ ├── _internal_utils.cpython-312.pyc
│ │ │ │ ├── adapters.cpython-312.pyc
│ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ ├── certs.cpython-312.pyc
│ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ ├── cookies.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── help.cpython-312.pyc
│ │ │ │ ├── hooks.cpython-312.pyc
│ │ │ │ ├── models.cpython-312.pyc
│ │ │ │ ├── packages.cpython-312.pyc
│ │ │ │ ├── sessions.cpython-312.pyc
│ │ │ │ ├── status_codes.cpython-312.pyc
│ │ │ │ ├── structures.cpython-312.pyc
│ │ │ │ └── utils.cpython-312.pyc
│ │ │ ├── __version__.py
│ │ │ ├── _internal_utils.py
│ │ │ ├── adapters.py
│ │ │ ├── api.py
│ │ │ ├── auth.py
│ │ │ ├── certs.py
│ │ │ ├── compat.py
│ │ │ ├── cookies.py
│ │ │ ├── exceptions.py
│ │ │ ├── help.py
│ │ │ ├── hooks.py
│ │ │ ├── models.py
│ │ │ ├── packages.py
│ │ │ ├── sessions.py
│ │ │ ├── status_codes.py
│ │ │ ├── structures.py
│ │ │ └── utils.py
│ │ ├── requests-2.32.3.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── soupsieve
│ │ │ ├── __init__.py
│ │ │ ├── __meta__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __meta__.cpython-312.pyc
│ │ │ │ ├── css_match.cpython-312.pyc
│ │ │ │ ├── css_parser.cpython-312.pyc
│ │ │ │ ├── css_types.cpython-312.pyc
│ │ │ │ ├── pretty.cpython-312.pyc
│ │ │ │ └── util.cpython-312.pyc
│ │ │ ├── css_match.py
│ │ │ ├── css_parser.py
│ │ │ ├── css_types.py
│ │ │ ├── pretty.py
│ │ │ ├── py.typed
│ │ │ └── util.py
│ │ ├── soupsieve-2.6.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── licenses
│ │ │ │ └── LICENSE.md
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── urllib3
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _base_connection.cpython-312.pyc
│ │ │ │ ├── _collections.cpython-312.pyc
│ │ │ │ ├── _request_methods.cpython-312.pyc
│ │ │ │ ├── _version.cpython-312.pyc
│ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ ├── connectionpool.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── fields.cpython-312.pyc
│ │ │ │ ├── filepost.cpython-312.pyc
│ │ │ │ ├── poolmanager.cpython-312.pyc
│ │ │ │ └── response.cpython-312.pyc
│ │ │ ├── _base_connection.py
│ │ │ ├── _collections.py
│ │ │ ├── _request_methods.py
│ │ │ ├── _version.py
│ │ │ ├── connection.py
│ │ │ ├── connectionpool.py
│ │ │ ├── contrib
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── pyopenssl.cpython-312.pyc
│ │ │ │ │ └── socks.cpython-312.pyc
│ │ │ │ ├── emscripten
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ │ ├── fetch.cpython-312.pyc
│ │ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ │ └── response.cpython-312.pyc
│ │ │ │ │ ├── connection.py
│ │ │ │ │ ├── emscripten_fetch_worker.js
│ │ │ │ │ ├── fetch.py
│ │ │ │ │ ├── request.py
│ │ │ │ │ └── response.py
│ │ │ │ ├── pyopenssl.py
│ │ │ │ └── socks.py
│ │ │ ├── exceptions.py
│ │ │ ├── fields.py
│ │ │ ├── filepost.py
│ │ │ ├── http2
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ └── probe.cpython-312.pyc
│ │ │ │ ├── connection.py
│ │ │ │ └── probe.py
│ │ │ ├── poolmanager.py
│ │ │ ├── py.typed
│ │ │ ├── response.py
│ │ │ └── util
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ ├── proxy.cpython-312.pyc
│ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ ├── response.cpython-312.pyc
│ │ │ │ ├── retry.cpython-312.pyc
│ │ │ │ ├── ssl_.cpython-312.pyc
│ │ │ │ ├── ssl_match_hostname.cpython-312.pyc
│ │ │ │ ├── ssltransport.cpython-312.pyc
│ │ │ │ ├── timeout.cpython-312.pyc
│ │ │ │ ├── url.cpython-312.pyc
│ │ │ │ ├── util.cpython-312.pyc
│ │ │ │ └── wait.cpython-312.pyc
│ │ │ ├── connection.py
│ │ │ ├── proxy.py
│ │ │ ├── request.py
│ │ │ ├── response.py
│ │ │ ├── retry.py
│ │ │ ├── ssl_.py
│ │ │ ├── ssl_match_hostname.py
│ │ │ ├── ssltransport.py
│ │ │ ├── timeout.py
│ │ │ ├── url.py
│ │ │ ├── util.py
│ │ │ └── wait.py
│ │ ├── urllib3-2.2.3.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── licenses
│ │ │ │ └── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── useragent
│ │ │ ├── __init__.py
│ │ │ ├── __init__.pyc
│ │ │ ├── __pycache__
│ │ │ │ └── __init__.cpython-312.pyc
│ │ │ ├── resources
│ │ │ │ └── user_agent_data.json
│ │ │ └── test
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ └── __init__.cpython-312.pyc
│ │ │ ├── test_additional_os.json
│ │ │ ├── test_browser.json
│ │ │ ├── test_device.json
│ │ │ ├── test_firefox.json
│ │ │ ├── test_os.json
│ │ │ └── test_pgts_browser.json
│ │ ├── useragent-0.1.1.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── werkzeug
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _internal.cpython-312.pyc
│ │ │ │ ├── _reloader.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── formparser.cpython-312.pyc
│ │ │ │ ├── http.cpython-312.pyc
│ │ │ │ ├── local.cpython-312.pyc
│ │ │ │ ├── security.cpython-312.pyc
│ │ │ │ ├── serving.cpython-312.pyc
│ │ │ │ ├── test.cpython-312.pyc
│ │ │ │ ├── testapp.cpython-312.pyc
│ │ │ │ ├── urls.cpython-312.pyc
│ │ │ │ ├── user_agent.cpython-312.pyc
│ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ └── wsgi.cpython-312.pyc
│ │ │ ├── _internal.py
│ │ │ ├── _reloader.py
│ │ │ ├── datastructures
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── accept.cpython-312.pyc
│ │ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ │ ├── cache_control.cpython-312.pyc
│ │ │ │ │ ├── csp.cpython-312.pyc
│ │ │ │ │ ├── etag.cpython-312.pyc
│ │ │ │ │ ├── file_storage.cpython-312.pyc
│ │ │ │ │ ├── headers.cpython-312.pyc
│ │ │ │ │ ├── mixins.cpython-312.pyc
│ │ │ │ │ ├── range.cpython-312.pyc
│ │ │ │ │ └── structures.cpython-312.pyc
│ │ │ │ ├── accept.py
│ │ │ │ ├── accept.pyi
│ │ │ │ ├── auth.py
│ │ │ │ ├── cache_control.py
│ │ │ │ ├── cache_control.pyi
│ │ │ │ ├── csp.py
│ │ │ │ ├── csp.pyi
│ │ │ │ ├── etag.py
│ │ │ │ ├── etag.pyi
│ │ │ │ ├── file_storage.py
│ │ │ │ ├── file_storage.pyi
│ │ │ │ ├── headers.py
│ │ │ │ ├── headers.pyi
│ │ │ │ ├── mixins.py
│ │ │ │ ├── mixins.pyi
│ │ │ │ ├── range.py
│ │ │ │ ├── range.pyi
│ │ │ │ ├── structures.py
│ │ │ │ └── structures.pyi
│ │ │ ├── debug
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── console.cpython-312.pyc
│ │ │ │ │ ├── repr.cpython-312.pyc
│ │ │ │ │ └── tbtools.cpython-312.pyc
│ │ │ │ ├── console.py
│ │ │ │ ├── repr.py
│ │ │ │ ├── shared
│ │ │ │ │ ├── console.png
│ │ │ │ │ ├── debugger.js
│ │ │ │ │ ├── ICON_LICENSE.md
│ │ │ │ │ ├── less.png
│ │ │ │ │ ├── more.png
│ │ │ │ │ └── style.css
│ │ │ │ └── tbtools.py
│ │ │ ├── exceptions.py
│ │ │ ├── formparser.py
│ │ │ ├── http.py
│ │ │ ├── local.py
│ │ │ ├── middleware
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── dispatcher.cpython-312.pyc
│ │ │ │ │ ├── http_proxy.cpython-312.pyc
│ │ │ │ │ ├── lint.cpython-312.pyc
│ │ │ │ │ ├── profiler.cpython-312.pyc
│ │ │ │ │ ├── proxy_fix.cpython-312.pyc
│ │ │ │ │ └── shared_data.cpython-312.pyc
│ │ │ │ ├── dispatcher.py
│ │ │ │ ├── http_proxy.py
│ │ │ │ ├── lint.py
│ │ │ │ ├── profiler.py
│ │ │ │ ├── proxy_fix.py
│ │ │ │ └── shared_data.py
│ │ │ ├── py.typed
│ │ │ ├── routing
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── converters.cpython-312.pyc
│ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ ├── map.cpython-312.pyc
│ │ │ │ │ ├── matcher.cpython-312.pyc
│ │ │ │ │ └── rules.cpython-312.pyc
│ │ │ │ ├── converters.py
│ │ │ │ ├── exceptions.py
│ │ │ │ ├── map.py
│ │ │ │ ├── matcher.py
│ │ │ │ └── rules.py
│ │ │ ├── sansio
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── http.cpython-312.pyc
│ │ │ │ │ ├── multipart.cpython-312.pyc
│ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ ├── response.cpython-312.pyc
│ │ │ │ │ └── utils.cpython-312.pyc
│ │ │ │ ├── http.py
│ │ │ │ ├── multipart.py
│ │ │ │ ├── request.py
│ │ │ │ ├── response.py
│ │ │ │ └── utils.py
│ │ │ ├── security.py
│ │ │ ├── serving.py
│ │ │ ├── test.py
│ │ │ ├── testapp.py
│ │ │ ├── urls.py
│ │ │ ├── user_agent.py
│ │ │ ├── utils.py
│ │ │ ├── wrappers
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ └── response.cpython-312.pyc
│ │ │ │ ├── request.py
│ │ │ │ └── response.py
│ │ │ └── wsgi.py
│ │ └── werkzeug-3.0.4.dist-info
│ │ ├── INSTALLER
│ │ ├── LICENSE.txt
│ │ ├── METADATA
│ │ ├── RECORD
│ │ └── WHEEL
│ ├── pyvenv.cfg
│ ├── static
│ │ └── styles.css
│ ├── templates
│ │ └── index.html
│ └── test.py
├── cline_config.json
├── mcp_server.py
├── README.md
├── search_results.json
├── settings.json
└── test_files
├── text1.txt
└── text2.txt
```
# Files
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/flask/globals.py:
--------------------------------------------------------------------------------
```python
1 | from __future__ import annotations
2 |
3 | import typing as t
4 | from contextvars import ContextVar
5 |
6 | from werkzeug.local import LocalProxy
7 |
8 | if t.TYPE_CHECKING: # pragma: no cover
9 | from .app import Flask
10 | from .ctx import _AppCtxGlobals
11 | from .ctx import AppContext
12 | from .ctx import RequestContext
13 | from .sessions import SessionMixin
14 | from .wrappers import Request
15 |
16 |
17 | _no_app_msg = """\
18 | Working outside of application context.
19 |
20 | This typically means that you attempted to use functionality that needed
21 | the current application. To solve this, set up an application context
22 | with app.app_context(). See the documentation for more information.\
23 | """
24 | _cv_app: ContextVar[AppContext] = ContextVar("flask.app_ctx")
25 | app_ctx: AppContext = LocalProxy( # type: ignore[assignment]
26 | _cv_app, unbound_message=_no_app_msg
27 | )
28 | current_app: Flask = LocalProxy( # type: ignore[assignment]
29 | _cv_app, "app", unbound_message=_no_app_msg
30 | )
31 | g: _AppCtxGlobals = LocalProxy( # type: ignore[assignment]
32 | _cv_app, "g", unbound_message=_no_app_msg
33 | )
34 |
35 | _no_req_msg = """\
36 | Working outside of request context.
37 |
38 | This typically means that you attempted to use functionality that needed
39 | an active HTTP request. Consult the documentation on testing for
40 | information about how to avoid this problem.\
41 | """
42 | _cv_request: ContextVar[RequestContext] = ContextVar("flask.request_ctx")
43 | request_ctx: RequestContext = LocalProxy( # type: ignore[assignment]
44 | _cv_request, unbound_message=_no_req_msg
45 | )
46 | request: Request = LocalProxy( # type: ignore[assignment]
47 | _cv_request, "request", unbound_message=_no_req_msg
48 | )
49 | session: SessionMixin = LocalProxy( # type: ignore[assignment]
50 | _cv_request, "session", unbound_message=_no_req_msg
51 | )
52 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/console.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | pygments.console
3 | ~~~~~~~~~~~~~~~~
4 |
5 | Format colored console output.
6 |
7 | :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
8 | :license: BSD, see LICENSE for details.
9 | """
10 |
11 | esc = "\x1b["
12 |
13 | codes = {}
14 | codes[""] = ""
15 | codes["reset"] = esc + "39;49;00m"
16 |
17 | codes["bold"] = esc + "01m"
18 | codes["faint"] = esc + "02m"
19 | codes["standout"] = esc + "03m"
20 | codes["underline"] = esc + "04m"
21 | codes["blink"] = esc + "05m"
22 | codes["overline"] = esc + "06m"
23 |
24 | dark_colors = ["black", "red", "green", "yellow", "blue",
25 | "magenta", "cyan", "gray"]
26 | light_colors = ["brightblack", "brightred", "brightgreen", "brightyellow", "brightblue",
27 | "brightmagenta", "brightcyan", "white"]
28 |
29 | x = 30
30 | for dark, light in zip(dark_colors, light_colors):
31 | codes[dark] = esc + "%im" % x
32 | codes[light] = esc + "%im" % (60 + x)
33 | x += 1
34 |
35 | del dark, light, x
36 |
37 | codes["white"] = codes["bold"]
38 |
39 |
40 | def reset_color():
41 | return codes["reset"]
42 |
43 |
44 | def colorize(color_key, text):
45 | return codes[color_key] + text + codes["reset"]
46 |
47 |
48 | def ansiformat(attr, text):
49 | """
50 | Format ``text`` with a color and/or some attributes::
51 |
52 | color normal color
53 | *color* bold color
54 | _color_ underlined color
55 | +color+ blinking color
56 | """
57 | result = []
58 | if attr[:1] == attr[-1:] == '+':
59 | result.append(codes['blink'])
60 | attr = attr[1:-1]
61 | if attr[:1] == attr[-1:] == '*':
62 | result.append(codes['bold'])
63 | attr = attr[1:-1]
64 | if attr[:1] == attr[-1:] == '_':
65 | result.append(codes['underline'])
66 | attr = attr[1:-1]
67 | result.append(codes[attr])
68 | result.append(text)
69 | result.append(codes['reset'])
70 | return ''.join(result)
71 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxml/threads.h:
--------------------------------------------------------------------------------
```
1 | /**
2 | * Summary: interfaces for thread handling
3 | * Description: set of generic threading related routines
4 | * should work with pthreads, Windows native or TLS threads
5 | *
6 | * Copy: See Copyright for the status of this software.
7 | *
8 | * Author: Daniel Veillard
9 | */
10 |
11 | #ifndef __XML_THREADS_H__
12 | #define __XML_THREADS_H__
13 |
14 | #include <libxml/xmlversion.h>
15 |
16 | #ifdef __cplusplus
17 | extern "C" {
18 | #endif
19 |
20 | /*
21 | * xmlMutex are a simple mutual exception locks.
22 | */
23 | typedef struct _xmlMutex xmlMutex;
24 | typedef xmlMutex *xmlMutexPtr;
25 |
26 | /*
27 | * xmlRMutex are reentrant mutual exception locks.
28 | */
29 | typedef struct _xmlRMutex xmlRMutex;
30 | typedef xmlRMutex *xmlRMutexPtr;
31 |
32 | XMLPUBFUN int
33 | xmlCheckThreadLocalStorage(void);
34 |
35 | XMLPUBFUN xmlMutexPtr
36 | xmlNewMutex (void);
37 | XMLPUBFUN void
38 | xmlMutexLock (xmlMutexPtr tok);
39 | XMLPUBFUN void
40 | xmlMutexUnlock (xmlMutexPtr tok);
41 | XMLPUBFUN void
42 | xmlFreeMutex (xmlMutexPtr tok);
43 |
44 | XMLPUBFUN xmlRMutexPtr
45 | xmlNewRMutex (void);
46 | XMLPUBFUN void
47 | xmlRMutexLock (xmlRMutexPtr tok);
48 | XMLPUBFUN void
49 | xmlRMutexUnlock (xmlRMutexPtr tok);
50 | XMLPUBFUN void
51 | xmlFreeRMutex (xmlRMutexPtr tok);
52 |
53 | /*
54 | * Library wide APIs.
55 | */
56 | XML_DEPRECATED
57 | XMLPUBFUN void
58 | xmlInitThreads (void);
59 | XMLPUBFUN void
60 | xmlLockLibrary (void);
61 | XMLPUBFUN void
62 | xmlUnlockLibrary(void);
63 | XML_DEPRECATED
64 | XMLPUBFUN int
65 | xmlGetThreadId (void);
66 | XML_DEPRECATED
67 | XMLPUBFUN int
68 | xmlIsMainThread (void);
69 | XML_DEPRECATED
70 | XMLPUBFUN void
71 | xmlCleanupThreads(void);
72 |
73 | /** DOC_DISABLE */
74 | #if defined(LIBXML_THREAD_ENABLED) && defined(_WIN32) && \
75 | defined(LIBXML_STATIC_FOR_DLL)
76 | int
77 | xmlDllMain(void *hinstDLL, unsigned long fdwReason,
78 | void *lpvReserved);
79 | #endif
80 | /** DOC_ENABLE */
81 |
82 | #ifdef __cplusplus
83 | }
84 | #endif
85 |
86 |
87 | #endif /* __XML_THREADS_H__ */
88 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/_cmd.py:
--------------------------------------------------------------------------------
```python
1 | # SPDX-FileCopyrightText: 2015 Eric Larson
2 | #
3 | # SPDX-License-Identifier: Apache-2.0
4 | from __future__ import annotations
5 |
6 | import logging
7 | from argparse import ArgumentParser
8 | from typing import TYPE_CHECKING
9 |
10 | from pip._vendor import requests
11 |
12 | from pip._vendor.cachecontrol.adapter import CacheControlAdapter
13 | from pip._vendor.cachecontrol.cache import DictCache
14 | from pip._vendor.cachecontrol.controller import logger
15 |
16 | if TYPE_CHECKING:
17 | from argparse import Namespace
18 |
19 | from pip._vendor.cachecontrol.controller import CacheController
20 |
21 |
22 | def setup_logging() -> None:
23 | logger.setLevel(logging.DEBUG)
24 | handler = logging.StreamHandler()
25 | logger.addHandler(handler)
26 |
27 |
28 | def get_session() -> requests.Session:
29 | adapter = CacheControlAdapter(
30 | DictCache(), cache_etags=True, serializer=None, heuristic=None
31 | )
32 | sess = requests.Session()
33 | sess.mount("http://", adapter)
34 | sess.mount("https://", adapter)
35 |
36 | sess.cache_controller = adapter.controller # type: ignore[attr-defined]
37 | return sess
38 |
39 |
40 | def get_args() -> Namespace:
41 | parser = ArgumentParser()
42 | parser.add_argument("url", help="The URL to try and cache")
43 | return parser.parse_args()
44 |
45 |
46 | def main() -> None:
47 | args = get_args()
48 | sess = get_session()
49 |
50 | # Make a request to get a response
51 | resp = sess.get(args.url)
52 |
53 | # Turn on logging
54 | setup_logging()
55 |
56 | # try setting the cache
57 | cache_controller: CacheController = (
58 | sess.cache_controller # type: ignore[attr-defined]
59 | )
60 | cache_controller.cache_response(resp.request, resp.raw)
61 |
62 | # Now try to get it
63 | if cache_controller.cached_request(resp.request):
64 | print("Cached!")
65 | else:
66 | print("Not cached :(")
67 |
68 |
69 | if __name__ == "__main__":
70 | main()
71 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/urllib3/http2/__init__.py:
--------------------------------------------------------------------------------
```python
1 | from __future__ import annotations
2 |
3 | from importlib.metadata import version
4 |
5 | __all__ = [
6 | "inject_into_urllib3",
7 | "extract_from_urllib3",
8 | ]
9 |
10 | import typing
11 |
12 | orig_HTTPSConnection: typing.Any = None
13 |
14 |
15 | def inject_into_urllib3() -> None:
16 | # First check if h2 version is valid
17 | h2_version = version("h2")
18 | if not h2_version.startswith("4."):
19 | raise ImportError(
20 | "urllib3 v2 supports h2 version 4.x.x, currently "
21 | f"the 'h2' module is compiled with {h2_version!r}. "
22 | "See: https://github.com/urllib3/urllib3/issues/3290"
23 | )
24 |
25 | # Import here to avoid circular dependencies.
26 | from .. import connection as urllib3_connection
27 | from .. import util as urllib3_util
28 | from ..connectionpool import HTTPSConnectionPool
29 | from ..util import ssl_ as urllib3_util_ssl
30 | from .connection import HTTP2Connection
31 |
32 | global orig_HTTPSConnection
33 | orig_HTTPSConnection = urllib3_connection.HTTPSConnection
34 |
35 | HTTPSConnectionPool.ConnectionCls = HTTP2Connection
36 | urllib3_connection.HTTPSConnection = HTTP2Connection # type: ignore[misc]
37 |
38 | # TODO: Offer 'http/1.1' as well, but for testing purposes this is handy.
39 | urllib3_util.ALPN_PROTOCOLS = ["h2"]
40 | urllib3_util_ssl.ALPN_PROTOCOLS = ["h2"]
41 |
42 |
43 | def extract_from_urllib3() -> None:
44 | from .. import connection as urllib3_connection
45 | from .. import util as urllib3_util
46 | from ..connectionpool import HTTPSConnectionPool
47 | from ..util import ssl_ as urllib3_util_ssl
48 |
49 | HTTPSConnectionPool.ConnectionCls = orig_HTTPSConnection
50 | urllib3_connection.HTTPSConnection = orig_HTTPSConnection # type: ignore[misc]
51 |
52 | urllib3_util.ALPN_PROTOCOLS = ["http/1.1"]
53 | urllib3_util_ssl.ALPN_PROTOCOLS = ["http/1.1"]
54 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxml/dict.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: string dictionary
3 | * Description: dictionary of reusable strings, just used to avoid allocation
4 | * and freeing operations.
5 | *
6 | * Copy: See Copyright for the status of this software.
7 | *
8 | * Author: Daniel Veillard
9 | */
10 |
11 | #ifndef __XML_DICT_H__
12 | #define __XML_DICT_H__
13 |
14 | #include <stddef.h>
15 | #include <libxml/xmlversion.h>
16 | #include <libxml/xmlstring.h>
17 |
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 |
22 | /*
23 | * The dictionary.
24 | */
25 | typedef struct _xmlDict xmlDict;
26 | typedef xmlDict *xmlDictPtr;
27 |
28 | /*
29 | * Initializer
30 | */
31 | XML_DEPRECATED
32 | XMLPUBFUN int xmlInitializeDict(void);
33 |
34 | /*
35 | * Constructor and destructor.
36 | */
37 | XMLPUBFUN xmlDictPtr
38 | xmlDictCreate (void);
39 | XMLPUBFUN size_t
40 | xmlDictSetLimit (xmlDictPtr dict,
41 | size_t limit);
42 | XMLPUBFUN size_t
43 | xmlDictGetUsage (xmlDictPtr dict);
44 | XMLPUBFUN xmlDictPtr
45 | xmlDictCreateSub(xmlDictPtr sub);
46 | XMLPUBFUN int
47 | xmlDictReference(xmlDictPtr dict);
48 | XMLPUBFUN void
49 | xmlDictFree (xmlDictPtr dict);
50 |
51 | /*
52 | * Lookup of entry in the dictionary.
53 | */
54 | XMLPUBFUN const xmlChar *
55 | xmlDictLookup (xmlDictPtr dict,
56 | const xmlChar *name,
57 | int len);
58 | XMLPUBFUN const xmlChar *
59 | xmlDictExists (xmlDictPtr dict,
60 | const xmlChar *name,
61 | int len);
62 | XMLPUBFUN const xmlChar *
63 | xmlDictQLookup (xmlDictPtr dict,
64 | const xmlChar *prefix,
65 | const xmlChar *name);
66 | XMLPUBFUN int
67 | xmlDictOwns (xmlDictPtr dict,
68 | const xmlChar *str);
69 | XMLPUBFUN int
70 | xmlDictSize (xmlDictPtr dict);
71 |
72 | /*
73 | * Cleanup function
74 | */
75 | XML_DEPRECATED
76 | XMLPUBFUN void
77 | xmlDictCleanup (void);
78 |
79 | #ifdef __cplusplus
80 | }
81 | #endif
82 | #endif /* ! __XML_DICT_H__ */
83 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/distributions/base.py:
--------------------------------------------------------------------------------
```python
1 | import abc
2 | from typing import TYPE_CHECKING, Optional
3 |
4 | from pip._internal.metadata.base import BaseDistribution
5 | from pip._internal.req import InstallRequirement
6 |
7 | if TYPE_CHECKING:
8 | from pip._internal.index.package_finder import PackageFinder
9 |
10 |
11 | class AbstractDistribution(metaclass=abc.ABCMeta):
12 | """A base class for handling installable artifacts.
13 |
14 | The requirements for anything installable are as follows:
15 |
16 | - we must be able to determine the requirement name
17 | (or we can't correctly handle the non-upgrade case).
18 |
19 | - for packages with setup requirements, we must also be able
20 | to determine their requirements without installing additional
21 | packages (for the same reason as run-time dependencies)
22 |
23 | - we must be able to create a Distribution object exposing the
24 | above metadata.
25 |
26 | - if we need to do work in the build tracker, we must be able to generate a unique
27 | string to identify the requirement in the build tracker.
28 | """
29 |
30 | def __init__(self, req: InstallRequirement) -> None:
31 | super().__init__()
32 | self.req = req
33 |
34 | @abc.abstractproperty
35 | def build_tracker_id(self) -> Optional[str]:
36 | """A string that uniquely identifies this requirement to the build tracker.
37 |
38 | If None, then this dist has no work to do in the build tracker, and
39 | ``.prepare_distribution_metadata()`` will not be called."""
40 | raise NotImplementedError()
41 |
42 | @abc.abstractmethod
43 | def get_metadata_distribution(self) -> BaseDistribution:
44 | raise NotImplementedError()
45 |
46 | @abc.abstractmethod
47 | def prepare_distribution_metadata(
48 | self,
49 | finder: "PackageFinder",
50 | build_isolation: bool,
51 | check_build_deps: bool,
52 | ) -> None:
53 | raise NotImplementedError()
54 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/fake_useragent/utils.py:
--------------------------------------------------------------------------------
```python
1 | import json
2 | import sys
3 |
4 | # We need files() from Python 3.10 or higher
5 | if sys.version_info >= (3, 10):
6 | import importlib.resources as ilr
7 | else:
8 | import importlib_resources as ilr
9 |
10 | from fake_useragent.log import logger
11 |
12 | str_types = (str,)
13 |
14 |
15 | # Load all lines from browser.json file
16 | # Returns array of objects
17 | def load():
18 | data, ret = [], None
19 | try:
20 | json_lines = (
21 | ilr.files("fake_useragent.data").joinpath("browsers.json").read_text()
22 | )
23 | for line in json_lines.splitlines():
24 | data.append(json.loads(line))
25 | ret = data
26 | except Exception as exc:
27 | # Empty data just to be sure
28 | data = []
29 | logger.warning(
30 | "Unable to find local data/json file or could not parse the contents using importlib-resources. Try pkg-resource next.",
31 | exc_info=exc,
32 | )
33 | try:
34 | from pkg_resources import resource_filename
35 |
36 | with open(
37 | resource_filename("fake_useragent", "data/browsers.json")
38 | ) as file:
39 | json_lines = file.read()
40 | for line in json_lines.splitlines():
41 | data.append(json.loads(line))
42 | ret = data
43 | except Exception as exc2:
44 | # Empty data just to be sure
45 | data = []
46 | logger.warning(
47 | "Could not find local data/json file or could not parse the contents using pkg-resource.",
48 | exc_info=exc2,
49 | )
50 |
51 | if not ret:
52 | raise FakeUserAgentError("Data list is empty", ret)
53 |
54 | if not isinstance(ret, list):
55 | raise FakeUserAgentError("Data is not a list ", ret)
56 | return ret
57 |
58 |
59 | from fake_useragent import settings # noqa # isort:skip
60 | from fake_useragent.errors import FakeUserAgentError # noqa # isort:skip
61 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/requests/compat.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | requests.compat
3 | ~~~~~~~~~~~~~~~
4 |
5 | This module previously handled import compatibility issues
6 | between Python 2 and Python 3. It remains for backwards
7 | compatibility until the next major version.
8 | """
9 |
10 | import importlib
11 | import sys
12 |
13 | # -------------------
14 | # Character Detection
15 | # -------------------
16 |
17 |
18 | def _resolve_char_detection():
19 | """Find supported character detection libraries."""
20 | chardet = None
21 | for lib in ("chardet", "charset_normalizer"):
22 | if chardet is None:
23 | try:
24 | chardet = importlib.import_module(lib)
25 | except ImportError:
26 | pass
27 | return chardet
28 |
29 |
30 | chardet = _resolve_char_detection()
31 |
32 | # -------
33 | # Pythons
34 | # -------
35 |
36 | # Syntax sugar.
37 | _ver = sys.version_info
38 |
39 | #: Python 2.x?
40 | is_py2 = _ver[0] == 2
41 |
42 | #: Python 3.x?
43 | is_py3 = _ver[0] == 3
44 |
45 | # json/simplejson module import resolution
46 | has_simplejson = False
47 | try:
48 | import simplejson as json
49 |
50 | has_simplejson = True
51 | except ImportError:
52 | import json
53 |
54 | if has_simplejson:
55 | from simplejson import JSONDecodeError
56 | else:
57 | from json import JSONDecodeError
58 |
59 | # Keep OrderedDict for backwards compatibility.
60 | from collections import OrderedDict
61 | from collections.abc import Callable, Mapping, MutableMapping
62 | from http import cookiejar as cookielib
63 | from http.cookies import Morsel
64 | from io import StringIO
65 |
66 | # --------------
67 | # Legacy Imports
68 | # --------------
69 | from urllib.parse import (
70 | quote,
71 | quote_plus,
72 | unquote,
73 | unquote_plus,
74 | urldefrag,
75 | urlencode,
76 | urljoin,
77 | urlparse,
78 | urlsplit,
79 | urlunparse,
80 | )
81 | from urllib.request import (
82 | getproxies,
83 | getproxies_environment,
84 | parse_http_list,
85 | proxy_bypass,
86 | proxy_bypass_environment,
87 | )
88 |
89 | builtin_str = str
90 | str = str
91 | bytes = bytes
92 | basestring = (str, bytes)
93 | numeric_types = (int, float)
94 | integer_types = (int,)
95 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/network/xmlrpc.py:
--------------------------------------------------------------------------------
```python
1 | """xmlrpclib.Transport implementation
2 | """
3 |
4 | import logging
5 | import urllib.parse
6 | import xmlrpc.client
7 | from typing import TYPE_CHECKING, Tuple
8 |
9 | from pip._internal.exceptions import NetworkConnectionError
10 | from pip._internal.network.session import PipSession
11 | from pip._internal.network.utils import raise_for_status
12 |
13 | if TYPE_CHECKING:
14 | from xmlrpc.client import _HostType, _Marshallable
15 |
16 | from _typeshed import SizedBuffer
17 |
18 | logger = logging.getLogger(__name__)
19 |
20 |
21 | class PipXmlrpcTransport(xmlrpc.client.Transport):
22 | """Provide a `xmlrpclib.Transport` implementation via a `PipSession`
23 | object.
24 | """
25 |
26 | def __init__(
27 | self, index_url: str, session: PipSession, use_datetime: bool = False
28 | ) -> None:
29 | super().__init__(use_datetime)
30 | index_parts = urllib.parse.urlparse(index_url)
31 | self._scheme = index_parts.scheme
32 | self._session = session
33 |
34 | def request(
35 | self,
36 | host: "_HostType",
37 | handler: str,
38 | request_body: "SizedBuffer",
39 | verbose: bool = False,
40 | ) -> Tuple["_Marshallable", ...]:
41 | assert isinstance(host, str)
42 | parts = (self._scheme, host, handler, None, None, None)
43 | url = urllib.parse.urlunparse(parts)
44 | try:
45 | headers = {"Content-Type": "text/xml"}
46 | response = self._session.post(
47 | url,
48 | data=request_body,
49 | headers=headers,
50 | stream=True,
51 | )
52 | raise_for_status(response)
53 | self.verbose = verbose
54 | return self.parse_response(response.raw)
55 | except NetworkConnectionError as exc:
56 | assert exc.response
57 | logger.critical(
58 | "HTTP error %s while getting %s",
59 | exc.response.status_code,
60 | url,
61 | )
62 | raise
63 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/imports.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: interface for the XSLT import support
3 | * Description: macros and fuctions needed to implement and
4 | * access the import tree
5 | *
6 | * Copy: See Copyright for the status of this software.
7 | *
8 | * Author: Daniel Veillard
9 | */
10 |
11 | #ifndef __XML_XSLT_IMPORTS_H__
12 | #define __XML_XSLT_IMPORTS_H__
13 |
14 | #include <libxml/tree.h>
15 | #include "xsltexports.h"
16 | #include "xsltInternals.h"
17 |
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 |
22 | /**
23 | * XSLT_GET_IMPORT_PTR:
24 | *
25 | * A macro to import pointers from the stylesheet cascading order.
26 | */
27 | #define XSLT_GET_IMPORT_PTR(res, style, name) { \
28 | xsltStylesheetPtr st = style; \
29 | res = NULL; \
30 | while (st != NULL) { \
31 | if (st->name != NULL) { res = st->name; break; } \
32 | st = xsltNextImport(st); \
33 | }}
34 |
35 | /**
36 | * XSLT_GET_IMPORT_INT:
37 | *
38 | * A macro to import intergers from the stylesheet cascading order.
39 | */
40 | #define XSLT_GET_IMPORT_INT(res, style, name) { \
41 | xsltStylesheetPtr st = style; \
42 | res = -1; \
43 | while (st != NULL) { \
44 | if (st->name != -1) { res = st->name; break; } \
45 | st = xsltNextImport(st); \
46 | }}
47 |
48 | /*
49 | * Module interfaces
50 | */
51 | XSLTPUBFUN int XSLTCALL
52 | xsltParseStylesheetImport(xsltStylesheetPtr style,
53 | xmlNodePtr cur);
54 | XSLTPUBFUN int XSLTCALL
55 | xsltParseStylesheetInclude
56 | (xsltStylesheetPtr style,
57 | xmlNodePtr cur);
58 | XSLTPUBFUN xsltStylesheetPtr XSLTCALL
59 | xsltNextImport (xsltStylesheetPtr style);
60 | XSLTPUBFUN int XSLTCALL
61 | xsltNeedElemSpaceHandling(xsltTransformContextPtr ctxt);
62 | XSLTPUBFUN int XSLTCALL
63 | xsltFindElemSpaceHandling(xsltTransformContextPtr ctxt,
64 | xmlNodePtr node);
65 | XSLTPUBFUN xsltTemplatePtr XSLTCALL
66 | xsltFindTemplate (xsltTransformContextPtr ctxt,
67 | const xmlChar *name,
68 | const xmlChar *nameURI);
69 |
70 | #ifdef __cplusplus
71 | }
72 | #endif
73 |
74 | #endif /* __XML_XSLT_IMPORTS_H__ */
75 |
76 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxml/nanohttp.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: minimal HTTP implementation
3 | * Description: minimal HTTP implementation allowing to fetch resources
4 | * like external subset.
5 | *
6 | * Copy: See Copyright for the status of this software.
7 | *
8 | * Author: Daniel Veillard
9 | */
10 |
11 | #ifndef __NANO_HTTP_H__
12 | #define __NANO_HTTP_H__
13 |
14 | #include <libxml/xmlversion.h>
15 |
16 | #ifdef LIBXML_HTTP_ENABLED
17 |
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 | XMLPUBFUN void
22 | xmlNanoHTTPInit (void);
23 | XMLPUBFUN void
24 | xmlNanoHTTPCleanup (void);
25 | XMLPUBFUN void
26 | xmlNanoHTTPScanProxy (const char *URL);
27 | XMLPUBFUN int
28 | xmlNanoHTTPFetch (const char *URL,
29 | const char *filename,
30 | char **contentType);
31 | XMLPUBFUN void *
32 | xmlNanoHTTPMethod (const char *URL,
33 | const char *method,
34 | const char *input,
35 | char **contentType,
36 | const char *headers,
37 | int ilen);
38 | XMLPUBFUN void *
39 | xmlNanoHTTPMethodRedir (const char *URL,
40 | const char *method,
41 | const char *input,
42 | char **contentType,
43 | char **redir,
44 | const char *headers,
45 | int ilen);
46 | XMLPUBFUN void *
47 | xmlNanoHTTPOpen (const char *URL,
48 | char **contentType);
49 | XMLPUBFUN void *
50 | xmlNanoHTTPOpenRedir (const char *URL,
51 | char **contentType,
52 | char **redir);
53 | XMLPUBFUN int
54 | xmlNanoHTTPReturnCode (void *ctx);
55 | XMLPUBFUN const char *
56 | xmlNanoHTTPAuthHeader (void *ctx);
57 | XMLPUBFUN const char *
58 | xmlNanoHTTPRedir (void *ctx);
59 | XMLPUBFUN int
60 | xmlNanoHTTPContentLength( void * ctx );
61 | XMLPUBFUN const char *
62 | xmlNanoHTTPEncoding (void *ctx);
63 | XMLPUBFUN const char *
64 | xmlNanoHTTPMimeType (void *ctx);
65 | XMLPUBFUN int
66 | xmlNanoHTTPRead (void *ctx,
67 | void *dest,
68 | int len);
69 | #ifdef LIBXML_OUTPUT_ENABLED
70 | XMLPUBFUN int
71 | xmlNanoHTTPSave (void *ctxt,
72 | const char *filename);
73 | #endif /* LIBXML_OUTPUT_ENABLED */
74 | XMLPUBFUN void
75 | xmlNanoHTTPClose (void *ctx);
76 | #ifdef __cplusplus
77 | }
78 | #endif
79 |
80 | #endif /* LIBXML_HTTP_ENABLED */
81 | #endif /* __NANO_HTTP_H__ */
82 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/idna/intranges.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | Given a list of integers, made up of (hopefully) a small number of long runs
3 | of consecutive integers, compute a representation of the form
4 | ((start1, end1), (start2, end2) ...). Then answer the question "was x present
5 | in the original list?" in time O(log(# runs)).
6 | """
7 |
8 | import bisect
9 | from typing import List, Tuple
10 |
11 | def intranges_from_list(list_: List[int]) -> Tuple[int, ...]:
12 | """Represent a list of integers as a sequence of ranges:
13 | ((start_0, end_0), (start_1, end_1), ...), such that the original
14 | integers are exactly those x such that start_i <= x < end_i for some i.
15 |
16 | Ranges are encoded as single integers (start << 32 | end), not as tuples.
17 | """
18 |
19 | sorted_list = sorted(list_)
20 | ranges = []
21 | last_write = -1
22 | for i in range(len(sorted_list)):
23 | if i+1 < len(sorted_list):
24 | if sorted_list[i] == sorted_list[i+1]-1:
25 | continue
26 | current_range = sorted_list[last_write+1:i+1]
27 | ranges.append(_encode_range(current_range[0], current_range[-1] + 1))
28 | last_write = i
29 |
30 | return tuple(ranges)
31 |
32 | def _encode_range(start: int, end: int) -> int:
33 | return (start << 32) | end
34 |
35 | def _decode_range(r: int) -> Tuple[int, int]:
36 | return (r >> 32), (r & ((1 << 32) - 1))
37 |
38 |
39 | def intranges_contain(int_: int, ranges: Tuple[int, ...]) -> bool:
40 | """Determine if `int_` falls into one of the ranges in `ranges`."""
41 | tuple_ = _encode_range(int_, 0)
42 | pos = bisect.bisect_left(ranges, tuple_)
43 | # we could be immediately ahead of a tuple (start, end)
44 | # with start < int_ <= end
45 | if pos > 0:
46 | left, right = _decode_range(ranges[pos-1])
47 | if left <= int_ < right:
48 | return True
49 | # or we could be immediately behind a tuple (int_, end)
50 | if pos < len(ranges):
51 | left, _ = _decode_range(ranges[pos])
52 | if left == int_:
53 | return True
54 | return False
55 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/plugin.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | pygments.plugin
3 | ~~~~~~~~~~~~~~~
4 |
5 | Pygments plugin interface.
6 |
7 | lexer plugins::
8 |
9 | [pygments.lexers]
10 | yourlexer = yourmodule:YourLexer
11 |
12 | formatter plugins::
13 |
14 | [pygments.formatters]
15 | yourformatter = yourformatter:YourFormatter
16 | /.ext = yourformatter:YourFormatter
17 |
18 | As you can see, you can define extensions for the formatter
19 | with a leading slash.
20 |
21 | syntax plugins::
22 |
23 | [pygments.styles]
24 | yourstyle = yourstyle:YourStyle
25 |
26 | filter plugin::
27 |
28 | [pygments.filter]
29 | yourfilter = yourfilter:YourFilter
30 |
31 |
32 | :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
33 | :license: BSD, see LICENSE for details.
34 | """
35 | from importlib.metadata import entry_points
36 |
37 | LEXER_ENTRY_POINT = 'pygments.lexers'
38 | FORMATTER_ENTRY_POINT = 'pygments.formatters'
39 | STYLE_ENTRY_POINT = 'pygments.styles'
40 | FILTER_ENTRY_POINT = 'pygments.filters'
41 |
42 |
43 | def iter_entry_points(group_name):
44 | groups = entry_points()
45 | if hasattr(groups, 'select'):
46 | # New interface in Python 3.10 and newer versions of the
47 | # importlib_metadata backport.
48 | return groups.select(group=group_name)
49 | else:
50 | # Older interface, deprecated in Python 3.10 and recent
51 | # importlib_metadata, but we need it in Python 3.8 and 3.9.
52 | return groups.get(group_name, [])
53 |
54 |
55 | def find_plugin_lexers():
56 | for entrypoint in iter_entry_points(LEXER_ENTRY_POINT):
57 | yield entrypoint.load()
58 |
59 |
60 | def find_plugin_formatters():
61 | for entrypoint in iter_entry_points(FORMATTER_ENTRY_POINT):
62 | yield entrypoint.name, entrypoint.load()
63 |
64 |
65 | def find_plugin_styles():
66 | for entrypoint in iter_entry_points(STYLE_ENTRY_POINT):
67 | yield entrypoint.name, entrypoint.load()
68 |
69 |
70 | def find_plugin_filters():
71 | for entrypoint in iter_entry_points(FILTER_ENTRY_POINT):
72 | yield entrypoint.name, entrypoint.load()
73 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/idna/intranges.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | Given a list of integers, made up of (hopefully) a small number of long runs
3 | of consecutive integers, compute a representation of the form
4 | ((start1, end1), (start2, end2) ...). Then answer the question "was x present
5 | in the original list?" in time O(log(# runs)).
6 | """
7 |
8 | import bisect
9 | from typing import List, Tuple
10 |
11 |
12 | def intranges_from_list(list_: List[int]) -> Tuple[int, ...]:
13 | """Represent a list of integers as a sequence of ranges:
14 | ((start_0, end_0), (start_1, end_1), ...), such that the original
15 | integers are exactly those x such that start_i <= x < end_i for some i.
16 |
17 | Ranges are encoded as single integers (start << 32 | end), not as tuples.
18 | """
19 |
20 | sorted_list = sorted(list_)
21 | ranges = []
22 | last_write = -1
23 | for i in range(len(sorted_list)):
24 | if i + 1 < len(sorted_list):
25 | if sorted_list[i] == sorted_list[i + 1] - 1:
26 | continue
27 | current_range = sorted_list[last_write + 1 : i + 1]
28 | ranges.append(_encode_range(current_range[0], current_range[-1] + 1))
29 | last_write = i
30 |
31 | return tuple(ranges)
32 |
33 |
34 | def _encode_range(start: int, end: int) -> int:
35 | return (start << 32) | end
36 |
37 |
38 | def _decode_range(r: int) -> Tuple[int, int]:
39 | return (r >> 32), (r & ((1 << 32) - 1))
40 |
41 |
42 | def intranges_contain(int_: int, ranges: Tuple[int, ...]) -> bool:
43 | """Determine if `int_` falls into one of the ranges in `ranges`."""
44 | tuple_ = _encode_range(int_, 0)
45 | pos = bisect.bisect_left(ranges, tuple_)
46 | # we could be immediately ahead of a tuple (start, end)
47 | # with start < int_ <= end
48 | if pos > 0:
49 | left, right = _decode_range(ranges[pos - 1])
50 | if left <= int_ < right:
51 | return True
52 | # or we could be immediately behind a tuple (int_, end)
53 | if pos < len(ranges):
54 | left, _ = _decode_range(ranges[pos])
55 | if left == int_:
56 | return True
57 | return False
58 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/werkzeug/datastructures/__init__.py:
--------------------------------------------------------------------------------
```python
1 | from .accept import Accept as Accept
2 | from .accept import CharsetAccept as CharsetAccept
3 | from .accept import LanguageAccept as LanguageAccept
4 | from .accept import MIMEAccept as MIMEAccept
5 | from .auth import Authorization as Authorization
6 | from .auth import WWWAuthenticate as WWWAuthenticate
7 | from .cache_control import RequestCacheControl as RequestCacheControl
8 | from .cache_control import ResponseCacheControl as ResponseCacheControl
9 | from .csp import ContentSecurityPolicy as ContentSecurityPolicy
10 | from .etag import ETags as ETags
11 | from .file_storage import FileMultiDict as FileMultiDict
12 | from .file_storage import FileStorage as FileStorage
13 | from .headers import EnvironHeaders as EnvironHeaders
14 | from .headers import Headers as Headers
15 | from .mixins import ImmutableDictMixin as ImmutableDictMixin
16 | from .mixins import ImmutableHeadersMixin as ImmutableHeadersMixin
17 | from .mixins import ImmutableListMixin as ImmutableListMixin
18 | from .mixins import ImmutableMultiDictMixin as ImmutableMultiDictMixin
19 | from .mixins import UpdateDictMixin as UpdateDictMixin
20 | from .range import ContentRange as ContentRange
21 | from .range import IfRange as IfRange
22 | from .range import Range as Range
23 | from .structures import CallbackDict as CallbackDict
24 | from .structures import CombinedMultiDict as CombinedMultiDict
25 | from .structures import HeaderSet as HeaderSet
26 | from .structures import ImmutableDict as ImmutableDict
27 | from .structures import ImmutableList as ImmutableList
28 | from .structures import ImmutableMultiDict as ImmutableMultiDict
29 | from .structures import ImmutableOrderedMultiDict as ImmutableOrderedMultiDict
30 | from .structures import ImmutableTypeConversionDict as ImmutableTypeConversionDict
31 | from .structures import iter_multi_items as iter_multi_items
32 | from .structures import MultiDict as MultiDict
33 | from .structures import OrderedMultiDict as OrderedMultiDict
34 | from .structures import TypeConversionDict as TypeConversionDict
35 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/filter.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | pygments.filter
3 | ~~~~~~~~~~~~~~~
4 |
5 | Module that implements the default filter.
6 |
7 | :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
8 | :license: BSD, see LICENSE for details.
9 | """
10 |
11 |
12 | def apply_filters(stream, filters, lexer=None):
13 | """
14 | Use this method to apply an iterable of filters to
15 | a stream. If lexer is given it's forwarded to the
16 | filter, otherwise the filter receives `None`.
17 | """
18 | def _apply(filter_, stream):
19 | yield from filter_.filter(lexer, stream)
20 | for filter_ in filters:
21 | stream = _apply(filter_, stream)
22 | return stream
23 |
24 |
25 | def simplefilter(f):
26 | """
27 | Decorator that converts a function into a filter::
28 |
29 | @simplefilter
30 | def lowercase(self, lexer, stream, options):
31 | for ttype, value in stream:
32 | yield ttype, value.lower()
33 | """
34 | return type(f.__name__, (FunctionFilter,), {
35 | '__module__': getattr(f, '__module__'),
36 | '__doc__': f.__doc__,
37 | 'function': f,
38 | })
39 |
40 |
41 | class Filter:
42 | """
43 | Default filter. Subclass this class or use the `simplefilter`
44 | decorator to create own filters.
45 | """
46 |
47 | def __init__(self, **options):
48 | self.options = options
49 |
50 | def filter(self, lexer, stream):
51 | raise NotImplementedError()
52 |
53 |
54 | class FunctionFilter(Filter):
55 | """
56 | Abstract class used by `simplefilter` to create simple
57 | function filters on the fly. The `simplefilter` decorator
58 | automatically creates subclasses of this class for
59 | functions passed to it.
60 | """
61 | function = None
62 |
63 | def __init__(self, **options):
64 | if not hasattr(self, 'function'):
65 | raise TypeError(f'{self.__class__.__name__!r} used without bound function')
66 | Filter.__init__(self, **options)
67 |
68 | def filter(self, lexer, stream):
69 | # pylint: disable=not-callable
70 | yield from self.function(lexer, stream, self.options)
71 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_windows.py:
--------------------------------------------------------------------------------
```python
1 | import sys
2 | from dataclasses import dataclass
3 |
4 |
5 | @dataclass
6 | class WindowsConsoleFeatures:
7 | """Windows features available."""
8 |
9 | vt: bool = False
10 | """The console supports VT codes."""
11 | truecolor: bool = False
12 | """The console supports truecolor."""
13 |
14 |
15 | try:
16 | import ctypes
17 | from ctypes import LibraryLoader
18 |
19 | if sys.platform == "win32":
20 | windll = LibraryLoader(ctypes.WinDLL)
21 | else:
22 | windll = None
23 | raise ImportError("Not windows")
24 |
25 | from pip._vendor.rich._win32_console import (
26 | ENABLE_VIRTUAL_TERMINAL_PROCESSING,
27 | GetConsoleMode,
28 | GetStdHandle,
29 | LegacyWindowsError,
30 | )
31 |
32 | except (AttributeError, ImportError, ValueError):
33 | # Fallback if we can't load the Windows DLL
34 | def get_windows_console_features() -> WindowsConsoleFeatures:
35 | features = WindowsConsoleFeatures()
36 | return features
37 |
38 | else:
39 |
40 | def get_windows_console_features() -> WindowsConsoleFeatures:
41 | """Get windows console features.
42 |
43 | Returns:
44 | WindowsConsoleFeatures: An instance of WindowsConsoleFeatures.
45 | """
46 | handle = GetStdHandle()
47 | try:
48 | console_mode = GetConsoleMode(handle)
49 | success = True
50 | except LegacyWindowsError:
51 | console_mode = 0
52 | success = False
53 | vt = bool(success and console_mode & ENABLE_VIRTUAL_TERMINAL_PROCESSING)
54 | truecolor = False
55 | if vt:
56 | win_version = sys.getwindowsversion()
57 | truecolor = win_version.major > 10 or (
58 | win_version.major == 10 and win_version.build >= 15063
59 | )
60 | features = WindowsConsoleFeatures(vt=vt, truecolor=truecolor)
61 | return features
62 |
63 |
64 | if __name__ == "__main__":
65 | import platform
66 |
67 | features = get_windows_console_features()
68 | from pip._vendor.rich import print
69 |
70 | print(f'platform="{platform.system()}"')
71 | print(repr(features))
72 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/jinja2/__init__.py:
--------------------------------------------------------------------------------
```python
1 | """Jinja is a template engine written in pure Python. It provides a
2 | non-XML syntax that supports inline expressions and an optional
3 | sandboxed environment.
4 | """
5 |
6 | from .bccache import BytecodeCache as BytecodeCache
7 | from .bccache import FileSystemBytecodeCache as FileSystemBytecodeCache
8 | from .bccache import MemcachedBytecodeCache as MemcachedBytecodeCache
9 | from .environment import Environment as Environment
10 | from .environment import Template as Template
11 | from .exceptions import TemplateAssertionError as TemplateAssertionError
12 | from .exceptions import TemplateError as TemplateError
13 | from .exceptions import TemplateNotFound as TemplateNotFound
14 | from .exceptions import TemplateRuntimeError as TemplateRuntimeError
15 | from .exceptions import TemplatesNotFound as TemplatesNotFound
16 | from .exceptions import TemplateSyntaxError as TemplateSyntaxError
17 | from .exceptions import UndefinedError as UndefinedError
18 | from .loaders import BaseLoader as BaseLoader
19 | from .loaders import ChoiceLoader as ChoiceLoader
20 | from .loaders import DictLoader as DictLoader
21 | from .loaders import FileSystemLoader as FileSystemLoader
22 | from .loaders import FunctionLoader as FunctionLoader
23 | from .loaders import ModuleLoader as ModuleLoader
24 | from .loaders import PackageLoader as PackageLoader
25 | from .loaders import PrefixLoader as PrefixLoader
26 | from .runtime import ChainableUndefined as ChainableUndefined
27 | from .runtime import DebugUndefined as DebugUndefined
28 | from .runtime import make_logging_undefined as make_logging_undefined
29 | from .runtime import StrictUndefined as StrictUndefined
30 | from .runtime import Undefined as Undefined
31 | from .utils import clear_caches as clear_caches
32 | from .utils import is_undefined as is_undefined
33 | from .utils import pass_context as pass_context
34 | from .utils import pass_environment as pass_environment
35 | from .utils import pass_eval_context as pass_eval_context
36 | from .utils import select_autoescape as select_autoescape
37 |
38 | __version__ = "3.1.4"
39 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/cache.py:
--------------------------------------------------------------------------------
```python
1 | # SPDX-FileCopyrightText: 2015 Eric Larson
2 | #
3 | # SPDX-License-Identifier: Apache-2.0
4 |
5 | """
6 | The cache object API for implementing caches. The default is a thread
7 | safe in-memory dictionary.
8 | """
9 | from __future__ import annotations
10 |
11 | from threading import Lock
12 | from typing import IO, TYPE_CHECKING, MutableMapping
13 |
14 | if TYPE_CHECKING:
15 | from datetime import datetime
16 |
17 |
18 | class BaseCache:
19 | def get(self, key: str) -> bytes | None:
20 | raise NotImplementedError()
21 |
22 | def set(
23 | self, key: str, value: bytes, expires: int | datetime | None = None
24 | ) -> None:
25 | raise NotImplementedError()
26 |
27 | def delete(self, key: str) -> None:
28 | raise NotImplementedError()
29 |
30 | def close(self) -> None:
31 | pass
32 |
33 |
34 | class DictCache(BaseCache):
35 | def __init__(self, init_dict: MutableMapping[str, bytes] | None = None) -> None:
36 | self.lock = Lock()
37 | self.data = init_dict or {}
38 |
39 | def get(self, key: str) -> bytes | None:
40 | return self.data.get(key, None)
41 |
42 | def set(
43 | self, key: str, value: bytes, expires: int | datetime | None = None
44 | ) -> None:
45 | with self.lock:
46 | self.data.update({key: value})
47 |
48 | def delete(self, key: str) -> None:
49 | with self.lock:
50 | if key in self.data:
51 | self.data.pop(key)
52 |
53 |
54 | class SeparateBodyBaseCache(BaseCache):
55 | """
56 | In this variant, the body is not stored mixed in with the metadata, but is
57 | passed in (as a bytes-like object) in a separate call to ``set_body()``.
58 |
59 | That is, the expected interaction pattern is::
60 |
61 | cache.set(key, serialized_metadata)
62 | cache.set_body(key)
63 |
64 | Similarly, the body should be loaded separately via ``get_body()``.
65 | """
66 |
67 | def set_body(self, key: str, body: bytes) -> None:
68 | raise NotImplementedError()
69 |
70 | def get_body(self, key: str) -> IO[bytes] | None:
71 | """
72 | Return the body as file-like object.
73 | """
74 | raise NotImplementedError()
75 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/click/globals.py:
--------------------------------------------------------------------------------
```python
1 | import typing as t
2 | from threading import local
3 |
4 | if t.TYPE_CHECKING:
5 | import typing_extensions as te
6 | from .core import Context
7 |
8 | _local = local()
9 |
10 |
11 | @t.overload
12 | def get_current_context(silent: "te.Literal[False]" = False) -> "Context":
13 | ...
14 |
15 |
16 | @t.overload
17 | def get_current_context(silent: bool = ...) -> t.Optional["Context"]:
18 | ...
19 |
20 |
21 | def get_current_context(silent: bool = False) -> t.Optional["Context"]:
22 | """Returns the current click context. This can be used as a way to
23 | access the current context object from anywhere. This is a more implicit
24 | alternative to the :func:`pass_context` decorator. This function is
25 | primarily useful for helpers such as :func:`echo` which might be
26 | interested in changing its behavior based on the current context.
27 |
28 | To push the current context, :meth:`Context.scope` can be used.
29 |
30 | .. versionadded:: 5.0
31 |
32 | :param silent: if set to `True` the return value is `None` if no context
33 | is available. The default behavior is to raise a
34 | :exc:`RuntimeError`.
35 | """
36 | try:
37 | return t.cast("Context", _local.stack[-1])
38 | except (AttributeError, IndexError) as e:
39 | if not silent:
40 | raise RuntimeError("There is no active click context.") from e
41 |
42 | return None
43 |
44 |
45 | def push_context(ctx: "Context") -> None:
46 | """Pushes a new context to the current stack."""
47 | _local.__dict__.setdefault("stack", []).append(ctx)
48 |
49 |
50 | def pop_context() -> None:
51 | """Removes the top level from the stack."""
52 | _local.stack.pop()
53 |
54 |
55 | def resolve_color_default(color: t.Optional[bool] = None) -> t.Optional[bool]:
56 | """Internal helper to get the default value of the color flag. If a
57 | value is passed it's returned unchanged, otherwise it's looked up from
58 | the current context.
59 | """
60 | if color is not None:
61 | return color
62 |
63 | ctx = get_current_context(silent=True)
64 |
65 | if ctx is not None:
66 | return ctx.color
67 |
68 | return None
69 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/xslt.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: Interfaces, constants and types related to the XSLT engine
3 | * Description: Interfaces, constants and types related to the XSLT engine
4 | *
5 | * Copy: See Copyright for the status of this software.
6 | *
7 | * Author: Daniel Veillard
8 | */
9 |
10 | #ifndef __XML_XSLT_H__
11 | #define __XML_XSLT_H__
12 |
13 | #include <libxml/tree.h>
14 | #include "xsltexports.h"
15 |
16 | #ifdef __cplusplus
17 | extern "C" {
18 | #endif
19 |
20 | /**
21 | * XSLT_DEFAULT_VERSION:
22 | *
23 | * The default version of XSLT supported.
24 | */
25 | #define XSLT_DEFAULT_VERSION "1.0"
26 |
27 | /**
28 | * XSLT_DEFAULT_VENDOR:
29 | *
30 | * The XSLT "vendor" string for this processor.
31 | */
32 | #define XSLT_DEFAULT_VENDOR "libxslt"
33 |
34 | /**
35 | * XSLT_DEFAULT_URL:
36 | *
37 | * The XSLT "vendor" URL for this processor.
38 | */
39 | #define XSLT_DEFAULT_URL "http://xmlsoft.org/XSLT/"
40 |
41 | /**
42 | * XSLT_NAMESPACE:
43 | *
44 | * The XSLT specification namespace.
45 | */
46 | #define XSLT_NAMESPACE ((const xmlChar *)"http://www.w3.org/1999/XSL/Transform")
47 |
48 | /**
49 | * XSLT_PARSE_OPTIONS:
50 | *
51 | * The set of options to pass to an xmlReadxxx when loading files for
52 | * XSLT consumption.
53 | */
54 | #define XSLT_PARSE_OPTIONS \
55 | XML_PARSE_NOENT | XML_PARSE_DTDLOAD | XML_PARSE_DTDATTR | XML_PARSE_NOCDATA
56 |
57 | /**
58 | * xsltMaxDepth:
59 | *
60 | * This value is used to detect templates loops.
61 | */
62 | XSLTPUBVAR int xsltMaxDepth;
63 |
64 | /**
65 | * * xsltMaxVars:
66 | * *
67 | * * This value is used to detect templates loops.
68 | * */
69 | XSLTPUBVAR int xsltMaxVars;
70 |
71 | /**
72 | * xsltEngineVersion:
73 | *
74 | * The version string for libxslt.
75 | */
76 | XSLTPUBVAR const char *xsltEngineVersion;
77 |
78 | /**
79 | * xsltLibxsltVersion:
80 | *
81 | * The version of libxslt compiled.
82 | */
83 | XSLTPUBVAR const int xsltLibxsltVersion;
84 |
85 | /**
86 | * xsltLibxmlVersion:
87 | *
88 | * The version of libxml libxslt was compiled against.
89 | */
90 | XSLTPUBVAR const int xsltLibxmlVersion;
91 |
92 | /*
93 | * Global initialization function.
94 | */
95 |
96 | XSLTPUBFUN void XSLTCALL
97 | xsltInit (void);
98 |
99 | /*
100 | * Global cleanup function.
101 | */
102 | XSLTPUBFUN void XSLTCALL
103 | xsltCleanupGlobals (void);
104 |
105 | #ifdef __cplusplus
106 | }
107 | #endif
108 |
109 | #endif /* __XML_XSLT_H__ */
110 |
111 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/functions.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: interface for the XSLT functions not from XPath
3 | * Description: a set of extra functions coming from XSLT but not in XPath
4 | *
5 | * Copy: See Copyright for the status of this software.
6 | *
7 | * Author: Daniel Veillard and Bjorn Reese <[email protected]>
8 | */
9 |
10 | #ifndef __XML_XSLT_FUNCTIONS_H__
11 | #define __XML_XSLT_FUNCTIONS_H__
12 |
13 | #include <libxml/xpath.h>
14 | #include <libxml/xpathInternals.h>
15 | #include "xsltexports.h"
16 | #include "xsltInternals.h"
17 |
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 |
22 | /**
23 | * XSLT_REGISTER_FUNCTION_LOOKUP:
24 | *
25 | * Registering macro, not general purpose at all but used in different modules.
26 | */
27 | #define XSLT_REGISTER_FUNCTION_LOOKUP(ctxt) \
28 | xmlXPathRegisterFuncLookup((ctxt)->xpathCtxt, \
29 | xsltXPathFunctionLookup, \
30 | (void *)(ctxt->xpathCtxt));
31 |
32 | XSLTPUBFUN xmlXPathFunction XSLTCALL
33 | xsltXPathFunctionLookup (void *vctxt,
34 | const xmlChar *name,
35 | const xmlChar *ns_uri);
36 |
37 | /*
38 | * Interfaces for the functions implementations.
39 | */
40 |
41 | XSLTPUBFUN void XSLTCALL
42 | xsltDocumentFunction (xmlXPathParserContextPtr ctxt,
43 | int nargs);
44 | XSLTPUBFUN void XSLTCALL
45 | xsltKeyFunction (xmlXPathParserContextPtr ctxt,
46 | int nargs);
47 | XSLTPUBFUN void XSLTCALL
48 | xsltUnparsedEntityURIFunction (xmlXPathParserContextPtr ctxt,
49 | int nargs);
50 | XSLTPUBFUN void XSLTCALL
51 | xsltFormatNumberFunction (xmlXPathParserContextPtr ctxt,
52 | int nargs);
53 | XSLTPUBFUN void XSLTCALL
54 | xsltGenerateIdFunction (xmlXPathParserContextPtr ctxt,
55 | int nargs);
56 | XSLTPUBFUN void XSLTCALL
57 | xsltSystemPropertyFunction (xmlXPathParserContextPtr ctxt,
58 | int nargs);
59 | XSLTPUBFUN void XSLTCALL
60 | xsltElementAvailableFunction (xmlXPathParserContextPtr ctxt,
61 | int nargs);
62 | XSLTPUBFUN void XSLTCALL
63 | xsltFunctionAvailableFunction (xmlXPathParserContextPtr ctxt,
64 | int nargs);
65 |
66 | /*
67 | * And the registration
68 | */
69 |
70 | XSLTPUBFUN void XSLTCALL
71 | xsltRegisterAllFunctions (xmlXPathContextPtr ctxt);
72 |
73 | #ifdef __cplusplus
74 | }
75 | #endif
76 |
77 | #endif /* __XML_XSLT_FUNCTIONS_H__ */
78 |
79 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/models/selection_prefs.py:
--------------------------------------------------------------------------------
```python
1 | from typing import Optional
2 |
3 | from pip._internal.models.format_control import FormatControl
4 |
5 |
6 | # TODO: This needs Python 3.10's improved slots support for dataclasses
7 | # to be converted into a dataclass.
8 | class SelectionPreferences:
9 | """
10 | Encapsulates the candidate selection preferences for downloading
11 | and installing files.
12 | """
13 |
14 | __slots__ = [
15 | "allow_yanked",
16 | "allow_all_prereleases",
17 | "format_control",
18 | "prefer_binary",
19 | "ignore_requires_python",
20 | ]
21 |
22 | # Don't include an allow_yanked default value to make sure each call
23 | # site considers whether yanked releases are allowed. This also causes
24 | # that decision to be made explicit in the calling code, which helps
25 | # people when reading the code.
26 | def __init__(
27 | self,
28 | allow_yanked: bool,
29 | allow_all_prereleases: bool = False,
30 | format_control: Optional[FormatControl] = None,
31 | prefer_binary: bool = False,
32 | ignore_requires_python: Optional[bool] = None,
33 | ) -> None:
34 | """Create a SelectionPreferences object.
35 |
36 | :param allow_yanked: Whether files marked as yanked (in the sense
37 | of PEP 592) are permitted to be candidates for install.
38 | :param format_control: A FormatControl object or None. Used to control
39 | the selection of source packages / binary packages when consulting
40 | the index and links.
41 | :param prefer_binary: Whether to prefer an old, but valid, binary
42 | dist over a new source dist.
43 | :param ignore_requires_python: Whether to ignore incompatible
44 | "Requires-Python" values in links. Defaults to False.
45 | """
46 | if ignore_requires_python is None:
47 | ignore_requires_python = False
48 |
49 | self.allow_yanked = allow_yanked
50 | self.allow_all_prereleases = allow_all_prereleases
51 | self.format_control = format_control
52 | self.prefer_binary = prefer_binary
53 | self.ignore_requires_python = ignore_requires_python
54 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/numbersInternals.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: Implementation of the XSLT number functions
3 | * Description: Implementation of the XSLT number functions
4 | *
5 | * Copy: See Copyright for the status of this software.
6 | *
7 | * Author: Bjorn Reese <[email protected]> and Daniel Veillard
8 | */
9 |
10 | #ifndef __XML_XSLT_NUMBERSINTERNALS_H__
11 | #define __XML_XSLT_NUMBERSINTERNALS_H__
12 |
13 | #include <libxml/tree.h>
14 | #include "xsltexports.h"
15 |
16 | #ifdef __cplusplus
17 | extern "C" {
18 | #endif
19 |
20 | struct _xsltCompMatch;
21 |
22 | /**
23 | * xsltNumberData:
24 | *
25 | * This data structure is just a wrapper to pass xsl:number data in.
26 | */
27 | typedef struct _xsltNumberData xsltNumberData;
28 | typedef xsltNumberData *xsltNumberDataPtr;
29 |
30 | struct _xsltNumberData {
31 | const xmlChar *level;
32 | const xmlChar *count;
33 | const xmlChar *from;
34 | const xmlChar *value;
35 | const xmlChar *format;
36 | int has_format;
37 | int digitsPerGroup;
38 | int groupingCharacter;
39 | int groupingCharacterLen;
40 | xmlDocPtr doc;
41 | xmlNodePtr node;
42 | struct _xsltCompMatch *countPat;
43 | struct _xsltCompMatch *fromPat;
44 |
45 | /*
46 | * accelerators
47 | */
48 | };
49 |
50 | /**
51 | * xsltFormatNumberInfo,:
52 | *
53 | * This data structure lists the various parameters needed to format numbers.
54 | */
55 | typedef struct _xsltFormatNumberInfo xsltFormatNumberInfo;
56 | typedef xsltFormatNumberInfo *xsltFormatNumberInfoPtr;
57 |
58 | struct _xsltFormatNumberInfo {
59 | int integer_hash; /* Number of '#' in integer part */
60 | int integer_digits; /* Number of '0' in integer part */
61 | int frac_digits; /* Number of '0' in fractional part */
62 | int frac_hash; /* Number of '#' in fractional part */
63 | int group; /* Number of chars per display 'group' */
64 | int multiplier; /* Scaling for percent or permille */
65 | char add_decimal; /* Flag for whether decimal point appears in pattern */
66 | char is_multiplier_set; /* Flag to catch multiple occurences of percent/permille */
67 | char is_negative_pattern;/* Flag for processing -ve prefix/suffix */
68 | };
69 |
70 | #ifdef __cplusplus
71 | }
72 | #endif
73 | #endif /* __XML_XSLT_NUMBERSINTERNALS_H__ */
74 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__init__.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | pygments.styles
3 | ~~~~~~~~~~~~~~~
4 |
5 | Contains built-in styles.
6 |
7 | :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
8 | :license: BSD, see LICENSE for details.
9 | """
10 |
11 | from pip._vendor.pygments.plugin import find_plugin_styles
12 | from pip._vendor.pygments.util import ClassNotFound
13 | from pip._vendor.pygments.styles._mapping import STYLES
14 |
15 | #: A dictionary of built-in styles, mapping style names to
16 | #: ``'submodule::classname'`` strings.
17 | #: This list is deprecated. Use `pygments.styles.STYLES` instead
18 | STYLE_MAP = {v[1]: v[0].split('.')[-1] + '::' + k for k, v in STYLES.items()}
19 |
20 | #: Internal reverse mapping to make `get_style_by_name` more efficient
21 | _STYLE_NAME_TO_MODULE_MAP = {v[1]: (v[0], k) for k, v in STYLES.items()}
22 |
23 |
24 | def get_style_by_name(name):
25 | """
26 | Return a style class by its short name. The names of the builtin styles
27 | are listed in :data:`pygments.styles.STYLE_MAP`.
28 |
29 | Will raise :exc:`pygments.util.ClassNotFound` if no style of that name is
30 | found.
31 | """
32 | if name in _STYLE_NAME_TO_MODULE_MAP:
33 | mod, cls = _STYLE_NAME_TO_MODULE_MAP[name]
34 | builtin = "yes"
35 | else:
36 | for found_name, style in find_plugin_styles():
37 | if name == found_name:
38 | return style
39 | # perhaps it got dropped into our styles package
40 | builtin = ""
41 | mod = 'pygments.styles.' + name
42 | cls = name.title() + "Style"
43 |
44 | try:
45 | mod = __import__(mod, None, None, [cls])
46 | except ImportError:
47 | raise ClassNotFound(f"Could not find style module {mod!r}" +
48 | (builtin and ", though it should be builtin")
49 | + ".")
50 | try:
51 | return getattr(mod, cls)
52 | except AttributeError:
53 | raise ClassNotFound(f"Could not find style class {cls!r} in style module.")
54 |
55 |
56 | def get_all_styles():
57 | """Return a generator for all styles by name, both builtin and plugin."""
58 | for v in STYLES.values():
59 | yield v[1]
60 | for name, _ in find_plugin_styles():
61 | yield name
62 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/html/_diffcommand.py:
--------------------------------------------------------------------------------
```python
1 | import optparse
2 | import sys
3 | import re
4 | import os
5 | from .diff import htmldiff
6 |
7 | description = """\
8 | """
9 |
10 | parser = optparse.OptionParser(
11 | usage="%prog [OPTIONS] FILE1 FILE2\n"
12 | "%prog --annotate [OPTIONS] INFO1 FILE1 INFO2 FILE2 ...",
13 | description=description,
14 | )
15 |
16 | parser.add_option(
17 | '-o', '--output',
18 | metavar="FILE",
19 | dest="output",
20 | default="-",
21 | help="File to write the difference to",
22 | )
23 |
24 | parser.add_option(
25 | '-a', '--annotation',
26 | action="store_true",
27 | dest="annotation",
28 | help="Do an annotation")
29 |
30 | def main(args=None):
31 | if args is None:
32 | args = sys.argv[1:]
33 | options, args = parser.parse_args(args)
34 | if options.annotation:
35 | return annotate(options, args)
36 | if len(args) != 2:
37 | print('Error: you must give two files')
38 | parser.print_help()
39 | sys.exit(1)
40 | file1, file2 = args
41 | input1 = read_file(file1)
42 | input2 = read_file(file2)
43 | body1 = split_body(input1)[1]
44 | pre, body2, post = split_body(input2)
45 | result = htmldiff(body1, body2)
46 | result = pre + result + post
47 | if options.output == '-':
48 | if not result.endswith('\n'):
49 | result += '\n'
50 | sys.stdout.write(result)
51 | else:
52 | with open(options.output, 'wb') as f:
53 | f.write(result)
54 |
55 | def read_file(filename):
56 | if filename == '-':
57 | c = sys.stdin.read()
58 | elif not os.path.exists(filename):
59 | raise OSError(
60 | "Input file %s does not exist" % filename)
61 | else:
62 | with open(filename, 'rb') as f:
63 | c = f.read()
64 | return c
65 |
66 | body_start_re = re.compile(
67 | r"<body.*?>", re.I|re.S)
68 | body_end_re = re.compile(
69 | r"</body.*?>", re.I|re.S)
70 |
71 | def split_body(html):
72 | pre = post = ''
73 | match = body_start_re.search(html)
74 | if match:
75 | pre = html[:match.end()]
76 | html = html[match.end():]
77 | match = body_end_re.search(html)
78 | if match:
79 | post = html[match.start():]
80 | html = html[:match.start()]
81 | return pre, html, post
82 |
83 | def annotate(options, args):
84 | print("Not yet implemented")
85 | sys.exit(1)
86 |
87 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/utils/packaging.py:
--------------------------------------------------------------------------------
```python
1 | import functools
2 | import logging
3 | import re
4 | from typing import NewType, Optional, Tuple, cast
5 |
6 | from pip._vendor.packaging import specifiers, version
7 | from pip._vendor.packaging.requirements import Requirement
8 |
9 | NormalizedExtra = NewType("NormalizedExtra", str)
10 |
11 | logger = logging.getLogger(__name__)
12 |
13 |
14 | def check_requires_python(
15 | requires_python: Optional[str], version_info: Tuple[int, ...]
16 | ) -> bool:
17 | """
18 | Check if the given Python version matches a "Requires-Python" specifier.
19 |
20 | :param version_info: A 3-tuple of ints representing a Python
21 | major-minor-micro version to check (e.g. `sys.version_info[:3]`).
22 |
23 | :return: `True` if the given Python version satisfies the requirement.
24 | Otherwise, return `False`.
25 |
26 | :raises InvalidSpecifier: If `requires_python` has an invalid format.
27 | """
28 | if requires_python is None:
29 | # The package provides no information
30 | return True
31 | requires_python_specifier = specifiers.SpecifierSet(requires_python)
32 |
33 | python_version = version.parse(".".join(map(str, version_info)))
34 | return python_version in requires_python_specifier
35 |
36 |
37 | @functools.lru_cache(maxsize=2048)
38 | def get_requirement(req_string: str) -> Requirement:
39 | """Construct a packaging.Requirement object with caching"""
40 | # Parsing requirement strings is expensive, and is also expected to happen
41 | # with a low diversity of different arguments (at least relative the number
42 | # constructed). This method adds a cache to requirement object creation to
43 | # minimize repeated parsing of the same string to construct equivalent
44 | # Requirement objects.
45 | return Requirement(req_string)
46 |
47 |
48 | def safe_extra(extra: str) -> NormalizedExtra:
49 | """Convert an arbitrary string to a standard 'extra' name
50 |
51 | Any runs of non-alphanumeric characters are replaced with a single '_',
52 | and the result is always lowercased.
53 |
54 | This function is duplicated from ``pkg_resources``. Note that this is not
55 | the same to either ``canonicalize_name`` or ``_egg_link_name``.
56 | """
57 | return cast(NormalizedExtra, re.sub("[^A-Za-z0-9.-]+", "_", extra).lower())
58 |
```