This is page 12 of 168. Use http://codebase.md/romanshablio/mcp_server?lines=true&page={x} to view the full context.
# Directory Structure
```
├── .DS_Store
├── .venv
│ ├── __pycache__
│ │ └── hello.cpython-312.pyc
│ ├── bin
│ │ ├── activate
│ │ ├── activate.csh
│ │ ├── activate.fish
│ │ ├── Activate.ps1
│ │ ├── flask
│ │ ├── normalizer
│ │ ├── pip
│ │ ├── pip3
│ │ ├── pip3.12
│ │ ├── python
│ │ ├── python3
│ │ └── python3.12
│ ├── hello.py
│ ├── lib
│ │ └── python3.12
│ │ └── site-packages
│ │ ├── beautifulsoup4-4.12.3.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── licenses
│ │ │ │ ├── AUTHORS
│ │ │ │ └── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ └── WHEEL
│ │ ├── blinker
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _utilities.cpython-312.pyc
│ │ │ │ └── base.cpython-312.pyc
│ │ │ ├── _utilities.py
│ │ │ ├── base.py
│ │ │ └── py.typed
│ │ ├── blinker-1.8.2.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── bs4
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── css.cpython-312.pyc
│ │ │ │ ├── dammit.cpython-312.pyc
│ │ │ │ ├── diagnose.cpython-312.pyc
│ │ │ │ ├── element.cpython-312.pyc
│ │ │ │ └── formatter.cpython-312.pyc
│ │ │ ├── builder
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── _html5lib.cpython-312.pyc
│ │ │ │ │ ├── _htmlparser.cpython-312.pyc
│ │ │ │ │ └── _lxml.cpython-312.pyc
│ │ │ │ ├── _html5lib.py
│ │ │ │ ├── _htmlparser.py
│ │ │ │ └── _lxml.py
│ │ │ ├── css.py
│ │ │ ├── dammit.py
│ │ │ ├── diagnose.py
│ │ │ ├── element.py
│ │ │ ├── formatter.py
│ │ │ └── tests
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── test_builder_registry.cpython-312.pyc
│ │ │ │ ├── test_builder.cpython-312.pyc
│ │ │ │ ├── test_css.cpython-312.pyc
│ │ │ │ ├── test_dammit.cpython-312.pyc
│ │ │ │ ├── test_docs.cpython-312.pyc
│ │ │ │ ├── test_element.cpython-312.pyc
│ │ │ │ ├── test_formatter.cpython-312.pyc
│ │ │ │ ├── test_fuzz.cpython-312.pyc
│ │ │ │ ├── test_html5lib.cpython-312.pyc
│ │ │ │ ├── test_htmlparser.cpython-312.pyc
│ │ │ │ ├── test_lxml.cpython-312.pyc
│ │ │ │ ├── test_navigablestring.cpython-312.pyc
│ │ │ │ ├── test_pageelement.cpython-312.pyc
│ │ │ │ ├── test_soup.cpython-312.pyc
│ │ │ │ ├── test_tag.cpython-312.pyc
│ │ │ │ └── test_tree.cpython-312.pyc
│ │ │ ├── fuzz
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4670634698080256.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4818336571064320.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-4999465949331456.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5000587759190016.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5167584867909632.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5270998950477824.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5375146639360000.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5492400320282624.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5843991618256896.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-5984173902397440.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6124268085182464.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6241471367348224.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6306874195312640.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6450958476902400.testcase
│ │ │ │ ├── clusterfuzz-testcase-minimized-bs4_fuzzer-6600557255327744.testcase
│ │ │ │ ├── crash-0d306a50c8ed8bcd0785b67000fcd5dea1d33f08.testcase
│ │ │ │ └── crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a.testcase
│ │ │ ├── test_builder_registry.py
│ │ │ ├── test_builder.py
│ │ │ ├── test_css.py
│ │ │ ├── test_dammit.py
│ │ │ ├── test_docs.py
│ │ │ ├── test_element.py
│ │ │ ├── test_formatter.py
│ │ │ ├── test_fuzz.py
│ │ │ ├── test_html5lib.py
│ │ │ ├── test_htmlparser.py
│ │ │ ├── test_lxml.py
│ │ │ ├── test_navigablestring.py
│ │ │ ├── test_pageelement.py
│ │ │ ├── test_soup.py
│ │ │ ├── test_tag.py
│ │ │ └── test_tree.py
│ │ ├── certifi
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ └── core.cpython-312.pyc
│ │ │ ├── cacert.pem
│ │ │ ├── core.py
│ │ │ └── py.typed
│ │ ├── certifi-2024.8.30.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── charset_normalizer
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ ├── cd.cpython-312.pyc
│ │ │ │ ├── constant.cpython-312.pyc
│ │ │ │ ├── legacy.cpython-312.pyc
│ │ │ │ ├── md.cpython-312.pyc
│ │ │ │ ├── models.cpython-312.pyc
│ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ └── version.cpython-312.pyc
│ │ │ ├── api.py
│ │ │ ├── cd.py
│ │ │ ├── cli
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __main__.py
│ │ │ │ └── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ └── __main__.cpython-312.pyc
│ │ │ ├── constant.py
│ │ │ ├── legacy.py
│ │ │ ├── md__mypyc.cpython-312-darwin.so
│ │ │ ├── md.cpython-312-darwin.so
│ │ │ ├── md.py
│ │ │ ├── models.py
│ │ │ ├── py.typed
│ │ │ ├── utils.py
│ │ │ └── version.py
│ │ ├── charset_normalizer-3.4.0.dist-info
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── click
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _compat.cpython-312.pyc
│ │ │ │ ├── _termui_impl.cpython-312.pyc
│ │ │ │ ├── _textwrap.cpython-312.pyc
│ │ │ │ ├── _winconsole.cpython-312.pyc
│ │ │ │ ├── core.cpython-312.pyc
│ │ │ │ ├── decorators.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── formatting.cpython-312.pyc
│ │ │ │ ├── globals.cpython-312.pyc
│ │ │ │ ├── parser.cpython-312.pyc
│ │ │ │ ├── shell_completion.cpython-312.pyc
│ │ │ │ ├── termui.cpython-312.pyc
│ │ │ │ ├── testing.cpython-312.pyc
│ │ │ │ ├── types.cpython-312.pyc
│ │ │ │ └── utils.cpython-312.pyc
│ │ │ ├── _compat.py
│ │ │ ├── _termui_impl.py
│ │ │ ├── _textwrap.py
│ │ │ ├── _winconsole.py
│ │ │ ├── core.py
│ │ │ ├── decorators.py
│ │ │ ├── exceptions.py
│ │ │ ├── formatting.py
│ │ │ ├── globals.py
│ │ │ ├── parser.py
│ │ │ ├── py.typed
│ │ │ ├── shell_completion.py
│ │ │ ├── termui.py
│ │ │ ├── testing.py
│ │ │ ├── types.py
│ │ │ └── utils.py
│ │ ├── click-8.1.7.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.rst
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── fake_useragent
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── errors.cpython-312.pyc
│ │ │ │ ├── fake.cpython-312.pyc
│ │ │ │ ├── log.cpython-312.pyc
│ │ │ │ ├── settings.cpython-312.pyc
│ │ │ │ └── utils.cpython-312.pyc
│ │ │ ├── data
│ │ │ │ └── browsers.json
│ │ │ ├── errors.py
│ │ │ ├── fake.py
│ │ │ ├── log.py
│ │ │ ├── settings.py
│ │ │ └── utils.py
│ │ ├── fake_useragent-1.5.1.dist-info
│ │ │ ├── AUTHORS
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── flask
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ ├── app.cpython-312.pyc
│ │ │ │ ├── blueprints.cpython-312.pyc
│ │ │ │ ├── cli.cpython-312.pyc
│ │ │ │ ├── config.cpython-312.pyc
│ │ │ │ ├── ctx.cpython-312.pyc
│ │ │ │ ├── debughelpers.cpython-312.pyc
│ │ │ │ ├── globals.cpython-312.pyc
│ │ │ │ ├── helpers.cpython-312.pyc
│ │ │ │ ├── logging.cpython-312.pyc
│ │ │ │ ├── sessions.cpython-312.pyc
│ │ │ │ ├── signals.cpython-312.pyc
│ │ │ │ ├── templating.cpython-312.pyc
│ │ │ │ ├── testing.cpython-312.pyc
│ │ │ │ ├── typing.cpython-312.pyc
│ │ │ │ ├── views.cpython-312.pyc
│ │ │ │ └── wrappers.cpython-312.pyc
│ │ │ ├── app.py
│ │ │ ├── blueprints.py
│ │ │ ├── cli.py
│ │ │ ├── config.py
│ │ │ ├── ctx.py
│ │ │ ├── debughelpers.py
│ │ │ ├── globals.py
│ │ │ ├── helpers.py
│ │ │ ├── json
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── provider.cpython-312.pyc
│ │ │ │ │ └── tag.cpython-312.pyc
│ │ │ │ ├── provider.py
│ │ │ │ └── tag.py
│ │ │ ├── logging.py
│ │ │ ├── py.typed
│ │ │ ├── sansio
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── app.cpython-312.pyc
│ │ │ │ │ ├── blueprints.cpython-312.pyc
│ │ │ │ │ └── scaffold.cpython-312.pyc
│ │ │ │ ├── app.py
│ │ │ │ ├── blueprints.py
│ │ │ │ ├── README.md
│ │ │ │ └── scaffold.py
│ │ │ ├── sessions.py
│ │ │ ├── signals.py
│ │ │ ├── templating.py
│ │ │ ├── testing.py
│ │ │ ├── typing.py
│ │ │ ├── views.py
│ │ │ └── wrappers.py
│ │ ├── flask-3.0.3.dist-info
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ └── WHEEL
│ │ ├── idna
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── codec.cpython-312.pyc
│ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ ├── core.cpython-312.pyc
│ │ │ │ ├── idnadata.cpython-312.pyc
│ │ │ │ ├── intranges.cpython-312.pyc
│ │ │ │ ├── package_data.cpython-312.pyc
│ │ │ │ └── uts46data.cpython-312.pyc
│ │ │ ├── codec.py
│ │ │ ├── compat.py
│ │ │ ├── core.py
│ │ │ ├── idnadata.py
│ │ │ ├── intranges.py
│ │ │ ├── package_data.py
│ │ │ ├── py.typed
│ │ │ └── uts46data.py
│ │ ├── idna-3.10.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.md
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── itsdangerous
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _json.cpython-312.pyc
│ │ │ │ ├── encoding.cpython-312.pyc
│ │ │ │ ├── exc.cpython-312.pyc
│ │ │ │ ├── serializer.cpython-312.pyc
│ │ │ │ ├── signer.cpython-312.pyc
│ │ │ │ ├── timed.cpython-312.pyc
│ │ │ │ └── url_safe.cpython-312.pyc
│ │ │ ├── _json.py
│ │ │ ├── encoding.py
│ │ │ ├── exc.py
│ │ │ ├── py.typed
│ │ │ ├── serializer.py
│ │ │ ├── signer.py
│ │ │ ├── timed.py
│ │ │ └── url_safe.py
│ │ ├── itsdangerous-2.2.0.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── jinja2
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _identifier.cpython-312.pyc
│ │ │ │ ├── async_utils.cpython-312.pyc
│ │ │ │ ├── bccache.cpython-312.pyc
│ │ │ │ ├── compiler.cpython-312.pyc
│ │ │ │ ├── constants.cpython-312.pyc
│ │ │ │ ├── debug.cpython-312.pyc
│ │ │ │ ├── defaults.cpython-312.pyc
│ │ │ │ ├── environment.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── ext.cpython-312.pyc
│ │ │ │ ├── filters.cpython-312.pyc
│ │ │ │ ├── idtracking.cpython-312.pyc
│ │ │ │ ├── lexer.cpython-312.pyc
│ │ │ │ ├── loaders.cpython-312.pyc
│ │ │ │ ├── meta.cpython-312.pyc
│ │ │ │ ├── nativetypes.cpython-312.pyc
│ │ │ │ ├── nodes.cpython-312.pyc
│ │ │ │ ├── optimizer.cpython-312.pyc
│ │ │ │ ├── parser.cpython-312.pyc
│ │ │ │ ├── runtime.cpython-312.pyc
│ │ │ │ ├── sandbox.cpython-312.pyc
│ │ │ │ ├── tests.cpython-312.pyc
│ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ └── visitor.cpython-312.pyc
│ │ │ ├── _identifier.py
│ │ │ ├── async_utils.py
│ │ │ ├── bccache.py
│ │ │ ├── compiler.py
│ │ │ ├── constants.py
│ │ │ ├── debug.py
│ │ │ ├── defaults.py
│ │ │ ├── environment.py
│ │ │ ├── exceptions.py
│ │ │ ├── ext.py
│ │ │ ├── filters.py
│ │ │ ├── idtracking.py
│ │ │ ├── lexer.py
│ │ │ ├── loaders.py
│ │ │ ├── meta.py
│ │ │ ├── nativetypes.py
│ │ │ ├── nodes.py
│ │ │ ├── optimizer.py
│ │ │ ├── parser.py
│ │ │ ├── py.typed
│ │ │ ├── runtime.py
│ │ │ ├── sandbox.py
│ │ │ ├── tests.py
│ │ │ ├── utils.py
│ │ │ └── visitor.py
│ │ ├── jinja2-3.1.4.dist-info
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── lxml
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _elementpath.cpython-312.pyc
│ │ │ │ ├── builder.cpython-312.pyc
│ │ │ │ ├── cssselect.cpython-312.pyc
│ │ │ │ ├── doctestcompare.cpython-312.pyc
│ │ │ │ ├── ElementInclude.cpython-312.pyc
│ │ │ │ ├── pyclasslookup.cpython-312.pyc
│ │ │ │ ├── sax.cpython-312.pyc
│ │ │ │ └── usedoctest.cpython-312.pyc
│ │ │ ├── _elementpath.cpython-312-darwin.so
│ │ │ ├── _elementpath.py
│ │ │ ├── apihelpers.pxi
│ │ │ ├── builder.cpython-312-darwin.so
│ │ │ ├── builder.py
│ │ │ ├── classlookup.pxi
│ │ │ ├── cleanup.pxi
│ │ │ ├── cssselect.py
│ │ │ ├── debug.pxi
│ │ │ ├── docloader.pxi
│ │ │ ├── doctestcompare.py
│ │ │ ├── dtd.pxi
│ │ │ ├── ElementInclude.py
│ │ │ ├── etree_api.h
│ │ │ ├── etree.cpython-312-darwin.so
│ │ │ ├── etree.h
│ │ │ ├── etree.pyx
│ │ │ ├── extensions.pxi
│ │ │ ├── html
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── _diffcommand.cpython-312.pyc
│ │ │ │ │ ├── _html5builder.cpython-312.pyc
│ │ │ │ │ ├── _setmixin.cpython-312.pyc
│ │ │ │ │ ├── builder.cpython-312.pyc
│ │ │ │ │ ├── clean.cpython-312.pyc
│ │ │ │ │ ├── defs.cpython-312.pyc
│ │ │ │ │ ├── diff.cpython-312.pyc
│ │ │ │ │ ├── ElementSoup.cpython-312.pyc
│ │ │ │ │ ├── formfill.cpython-312.pyc
│ │ │ │ │ ├── html5parser.cpython-312.pyc
│ │ │ │ │ ├── soupparser.cpython-312.pyc
│ │ │ │ │ └── usedoctest.cpython-312.pyc
│ │ │ │ ├── _diffcommand.py
│ │ │ │ ├── _html5builder.py
│ │ │ │ ├── _setmixin.py
│ │ │ │ ├── builder.py
│ │ │ │ ├── clean.py
│ │ │ │ ├── defs.py
│ │ │ │ ├── diff.cpython-312-darwin.so
│ │ │ │ ├── diff.py
│ │ │ │ ├── ElementSoup.py
│ │ │ │ ├── formfill.py
│ │ │ │ ├── html5parser.py
│ │ │ │ ├── soupparser.py
│ │ │ │ └── usedoctest.py
│ │ │ ├── includes
│ │ │ │ ├── __init__.pxd
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ ├── c14n.pxd
│ │ │ │ ├── config.pxd
│ │ │ │ ├── dtdvalid.pxd
│ │ │ │ ├── etree_defs.h
│ │ │ │ ├── etreepublic.pxd
│ │ │ │ ├── extlibs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── libcharset.h
│ │ │ │ │ ├── localcharset.h
│ │ │ │ │ ├── zconf.h
│ │ │ │ │ └── zlib.h
│ │ │ │ ├── htmlparser.pxd
│ │ │ │ ├── libexslt
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── exslt.h
│ │ │ │ │ ├── exsltconfig.h
│ │ │ │ │ └── exsltexports.h
│ │ │ │ ├── libxml
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── c14n.h
│ │ │ │ │ ├── catalog.h
│ │ │ │ │ ├── chvalid.h
│ │ │ │ │ ├── debugXML.h
│ │ │ │ │ ├── dict.h
│ │ │ │ │ ├── encoding.h
│ │ │ │ │ ├── entities.h
│ │ │ │ │ ├── globals.h
│ │ │ │ │ ├── hash.h
│ │ │ │ │ ├── HTMLparser.h
│ │ │ │ │ ├── HTMLtree.h
│ │ │ │ │ ├── list.h
│ │ │ │ │ ├── nanoftp.h
│ │ │ │ │ ├── nanohttp.h
│ │ │ │ │ ├── parser.h
│ │ │ │ │ ├── parserInternals.h
│ │ │ │ │ ├── relaxng.h
│ │ │ │ │ ├── SAX.h
│ │ │ │ │ ├── SAX2.h
│ │ │ │ │ ├── schemasInternals.h
│ │ │ │ │ ├── schematron.h
│ │ │ │ │ ├── threads.h
│ │ │ │ │ ├── tree.h
│ │ │ │ │ ├── uri.h
│ │ │ │ │ ├── valid.h
│ │ │ │ │ ├── xinclude.h
│ │ │ │ │ ├── xlink.h
│ │ │ │ │ ├── xmlautomata.h
│ │ │ │ │ ├── xmlerror.h
│ │ │ │ │ ├── xmlexports.h
│ │ │ │ │ ├── xmlIO.h
│ │ │ │ │ ├── xmlmemory.h
│ │ │ │ │ ├── xmlmodule.h
│ │ │ │ │ ├── xmlreader.h
│ │ │ │ │ ├── xmlregexp.h
│ │ │ │ │ ├── xmlsave.h
│ │ │ │ │ ├── xmlschemas.h
│ │ │ │ │ ├── xmlschemastypes.h
│ │ │ │ │ ├── xmlstring.h
│ │ │ │ │ ├── xmlunicode.h
│ │ │ │ │ ├── xmlversion.h
│ │ │ │ │ ├── xmlwriter.h
│ │ │ │ │ ├── xpath.h
│ │ │ │ │ ├── xpathInternals.h
│ │ │ │ │ └── xpointer.h
│ │ │ │ ├── libxslt
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── attributes.h
│ │ │ │ │ ├── documents.h
│ │ │ │ │ ├── extensions.h
│ │ │ │ │ ├── extra.h
│ │ │ │ │ ├── functions.h
│ │ │ │ │ ├── imports.h
│ │ │ │ │ ├── keys.h
│ │ │ │ │ ├── namespaces.h
│ │ │ │ │ ├── numbersInternals.h
│ │ │ │ │ ├── pattern.h
│ │ │ │ │ ├── preproc.h
│ │ │ │ │ ├── security.h
│ │ │ │ │ ├── templates.h
│ │ │ │ │ ├── transform.h
│ │ │ │ │ ├── variables.h
│ │ │ │ │ ├── xslt.h
│ │ │ │ │ ├── xsltconfig.h
│ │ │ │ │ ├── xsltexports.h
│ │ │ │ │ ├── xsltInternals.h
│ │ │ │ │ ├── xsltlocale.h
│ │ │ │ │ └── xsltutils.h
│ │ │ │ ├── lxml-version.h
│ │ │ │ ├── relaxng.pxd
│ │ │ │ ├── schematron.pxd
│ │ │ │ ├── tree.pxd
│ │ │ │ ├── uri.pxd
│ │ │ │ ├── xinclude.pxd
│ │ │ │ ├── xmlerror.pxd
│ │ │ │ ├── xmlparser.pxd
│ │ │ │ ├── xmlschema.pxd
│ │ │ │ ├── xpath.pxd
│ │ │ │ └── xslt.pxd
│ │ │ ├── isoschematron
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ └── resources
│ │ │ │ ├── rng
│ │ │ │ │ └── iso-schematron.rng
│ │ │ │ └── xsl
│ │ │ │ ├── iso-schematron-xslt1
│ │ │ │ │ ├── iso_abstract_expand.xsl
│ │ │ │ │ ├── iso_dsdl_include.xsl
│ │ │ │ │ ├── iso_schematron_message.xsl
│ │ │ │ │ ├── iso_schematron_skeleton_for_xslt1.xsl
│ │ │ │ │ ├── iso_svrl_for_xslt1.xsl
│ │ │ │ │ └── readme.txt
│ │ │ │ ├── RNG2Schtrn.xsl
│ │ │ │ └── XSD2Schtrn.xsl
│ │ │ ├── iterparse.pxi
│ │ │ ├── lxml.etree_api.h
│ │ │ ├── lxml.etree.h
│ │ │ ├── nsclasses.pxi
│ │ │ ├── objectify.cpython-312-darwin.so
│ │ │ ├── objectify.pyx
│ │ │ ├── objectpath.pxi
│ │ │ ├── parser.pxi
│ │ │ ├── parsertarget.pxi
│ │ │ ├── proxy.pxi
│ │ │ ├── public-api.pxi
│ │ │ ├── pyclasslookup.py
│ │ │ ├── readonlytree.pxi
│ │ │ ├── relaxng.pxi
│ │ │ ├── sax.cpython-312-darwin.so
│ │ │ ├── sax.py
│ │ │ ├── saxparser.pxi
│ │ │ ├── schematron.pxi
│ │ │ ├── serializer.pxi
│ │ │ ├── usedoctest.py
│ │ │ ├── xinclude.pxi
│ │ │ ├── xmlerror.pxi
│ │ │ ├── xmlid.pxi
│ │ │ ├── xmlschema.pxi
│ │ │ ├── xpath.pxi
│ │ │ ├── xslt.pxi
│ │ │ └── xsltext.pxi
│ │ ├── lxml-5.3.0.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── LICENSES.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── markupsafe
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ └── _native.cpython-312.pyc
│ │ │ ├── _native.py
│ │ │ ├── _speedups.c
│ │ │ ├── _speedups.cpython-312-darwin.so
│ │ │ ├── _speedups.pyi
│ │ │ └── py.typed
│ │ ├── MarkupSafe-3.0.1.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── pip
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── __pip-runner__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ └── __pip-runner__.cpython-312.pyc
│ │ │ ├── _internal
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── build_env.cpython-312.pyc
│ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ ├── configuration.cpython-312.pyc
│ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ ├── main.cpython-312.pyc
│ │ │ │ │ ├── pyproject.cpython-312.pyc
│ │ │ │ │ ├── self_outdated_check.cpython-312.pyc
│ │ │ │ │ └── wheel_builder.cpython-312.pyc
│ │ │ │ ├── build_env.py
│ │ │ │ ├── cache.py
│ │ │ │ ├── cli
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── autocompletion.cpython-312.pyc
│ │ │ │ │ │ ├── base_command.cpython-312.pyc
│ │ │ │ │ │ ├── cmdoptions.cpython-312.pyc
│ │ │ │ │ │ ├── command_context.cpython-312.pyc
│ │ │ │ │ │ ├── index_command.cpython-312.pyc
│ │ │ │ │ │ ├── main_parser.cpython-312.pyc
│ │ │ │ │ │ ├── main.cpython-312.pyc
│ │ │ │ │ │ ├── parser.cpython-312.pyc
│ │ │ │ │ │ ├── progress_bars.cpython-312.pyc
│ │ │ │ │ │ ├── req_command.cpython-312.pyc
│ │ │ │ │ │ ├── spinners.cpython-312.pyc
│ │ │ │ │ │ └── status_codes.cpython-312.pyc
│ │ │ │ │ ├── autocompletion.py
│ │ │ │ │ ├── base_command.py
│ │ │ │ │ ├── cmdoptions.py
│ │ │ │ │ ├── command_context.py
│ │ │ │ │ ├── index_command.py
│ │ │ │ │ ├── main_parser.py
│ │ │ │ │ ├── main.py
│ │ │ │ │ ├── parser.py
│ │ │ │ │ ├── progress_bars.py
│ │ │ │ │ ├── req_command.py
│ │ │ │ │ ├── spinners.py
│ │ │ │ │ └── status_codes.py
│ │ │ │ ├── commands
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ │ ├── check.cpython-312.pyc
│ │ │ │ │ │ ├── completion.cpython-312.pyc
│ │ │ │ │ │ ├── configuration.cpython-312.pyc
│ │ │ │ │ │ ├── debug.cpython-312.pyc
│ │ │ │ │ │ ├── download.cpython-312.pyc
│ │ │ │ │ │ ├── freeze.cpython-312.pyc
│ │ │ │ │ │ ├── hash.cpython-312.pyc
│ │ │ │ │ │ ├── help.cpython-312.pyc
│ │ │ │ │ │ ├── index.cpython-312.pyc
│ │ │ │ │ │ ├── inspect.cpython-312.pyc
│ │ │ │ │ │ ├── install.cpython-312.pyc
│ │ │ │ │ │ ├── list.cpython-312.pyc
│ │ │ │ │ │ ├── search.cpython-312.pyc
│ │ │ │ │ │ ├── show.cpython-312.pyc
│ │ │ │ │ │ ├── uninstall.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── cache.py
│ │ │ │ │ ├── check.py
│ │ │ │ │ ├── completion.py
│ │ │ │ │ ├── configuration.py
│ │ │ │ │ ├── debug.py
│ │ │ │ │ ├── download.py
│ │ │ │ │ ├── freeze.py
│ │ │ │ │ ├── hash.py
│ │ │ │ │ ├── help.py
│ │ │ │ │ ├── index.py
│ │ │ │ │ ├── inspect.py
│ │ │ │ │ ├── install.py
│ │ │ │ │ ├── list.py
│ │ │ │ │ ├── search.py
│ │ │ │ │ ├── show.py
│ │ │ │ │ ├── uninstall.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── configuration.py
│ │ │ │ ├── distributions
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── base.cpython-312.pyc
│ │ │ │ │ │ ├── installed.cpython-312.pyc
│ │ │ │ │ │ ├── sdist.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── installed.py
│ │ │ │ │ ├── sdist.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── exceptions.py
│ │ │ │ ├── index
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── collector.cpython-312.pyc
│ │ │ │ │ │ ├── package_finder.cpython-312.pyc
│ │ │ │ │ │ └── sources.cpython-312.pyc
│ │ │ │ │ ├── collector.py
│ │ │ │ │ ├── package_finder.py
│ │ │ │ │ └── sources.py
│ │ │ │ ├── locations
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _distutils.cpython-312.pyc
│ │ │ │ │ │ ├── _sysconfig.cpython-312.pyc
│ │ │ │ │ │ └── base.cpython-312.pyc
│ │ │ │ │ ├── _distutils.py
│ │ │ │ │ ├── _sysconfig.py
│ │ │ │ │ └── base.py
│ │ │ │ ├── main.py
│ │ │ │ ├── metadata
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _json.cpython-312.pyc
│ │ │ │ │ │ ├── base.cpython-312.pyc
│ │ │ │ │ │ └── pkg_resources.cpython-312.pyc
│ │ │ │ │ ├── _json.py
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── importlib
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _compat.cpython-312.pyc
│ │ │ │ │ │ │ ├── _dists.cpython-312.pyc
│ │ │ │ │ │ │ └── _envs.cpython-312.pyc
│ │ │ │ │ │ ├── _compat.py
│ │ │ │ │ │ ├── _dists.py
│ │ │ │ │ │ └── _envs.py
│ │ │ │ │ └── pkg_resources.py
│ │ │ │ ├── models
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── candidate.cpython-312.pyc
│ │ │ │ │ │ ├── direct_url.cpython-312.pyc
│ │ │ │ │ │ ├── format_control.cpython-312.pyc
│ │ │ │ │ │ ├── index.cpython-312.pyc
│ │ │ │ │ │ ├── installation_report.cpython-312.pyc
│ │ │ │ │ │ ├── link.cpython-312.pyc
│ │ │ │ │ │ ├── scheme.cpython-312.pyc
│ │ │ │ │ │ ├── search_scope.cpython-312.pyc
│ │ │ │ │ │ ├── selection_prefs.cpython-312.pyc
│ │ │ │ │ │ ├── target_python.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── candidate.py
│ │ │ │ │ ├── direct_url.py
│ │ │ │ │ ├── format_control.py
│ │ │ │ │ ├── index.py
│ │ │ │ │ ├── installation_report.py
│ │ │ │ │ ├── link.py
│ │ │ │ │ ├── scheme.py
│ │ │ │ │ ├── search_scope.py
│ │ │ │ │ ├── selection_prefs.py
│ │ │ │ │ ├── target_python.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── network
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ │ ├── download.cpython-312.pyc
│ │ │ │ │ │ ├── lazy_wheel.cpython-312.pyc
│ │ │ │ │ │ ├── session.cpython-312.pyc
│ │ │ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ │ │ └── xmlrpc.cpython-312.pyc
│ │ │ │ │ ├── auth.py
│ │ │ │ │ ├── cache.py
│ │ │ │ │ ├── download.py
│ │ │ │ │ ├── lazy_wheel.py
│ │ │ │ │ ├── session.py
│ │ │ │ │ ├── utils.py
│ │ │ │ │ └── xmlrpc.py
│ │ │ │ ├── operations
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── check.cpython-312.pyc
│ │ │ │ │ │ ├── freeze.cpython-312.pyc
│ │ │ │ │ │ └── prepare.cpython-312.pyc
│ │ │ │ │ ├── build
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── build_tracker.cpython-312.pyc
│ │ │ │ │ │ │ ├── metadata_editable.cpython-312.pyc
│ │ │ │ │ │ │ ├── metadata_legacy.cpython-312.pyc
│ │ │ │ │ │ │ ├── metadata.cpython-312.pyc
│ │ │ │ │ │ │ ├── wheel_editable.cpython-312.pyc
│ │ │ │ │ │ │ ├── wheel_legacy.cpython-312.pyc
│ │ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ │ ├── build_tracker.py
│ │ │ │ │ │ ├── metadata_editable.py
│ │ │ │ │ │ ├── metadata_legacy.py
│ │ │ │ │ │ ├── metadata.py
│ │ │ │ │ │ ├── wheel_editable.py
│ │ │ │ │ │ ├── wheel_legacy.py
│ │ │ │ │ │ └── wheel.py
│ │ │ │ │ ├── check.py
│ │ │ │ │ ├── freeze.py
│ │ │ │ │ ├── install
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── editable_legacy.cpython-312.pyc
│ │ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ │ ├── editable_legacy.py
│ │ │ │ │ │ └── wheel.py
│ │ │ │ │ └── prepare.py
│ │ │ │ ├── pyproject.py
│ │ │ │ ├── req
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── constructors.cpython-312.pyc
│ │ │ │ │ │ ├── req_file.cpython-312.pyc
│ │ │ │ │ │ ├── req_install.cpython-312.pyc
│ │ │ │ │ │ ├── req_set.cpython-312.pyc
│ │ │ │ │ │ └── req_uninstall.cpython-312.pyc
│ │ │ │ │ ├── constructors.py
│ │ │ │ │ ├── req_file.py
│ │ │ │ │ ├── req_install.py
│ │ │ │ │ ├── req_set.py
│ │ │ │ │ └── req_uninstall.py
│ │ │ │ ├── resolution
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ └── base.cpython-312.pyc
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── legacy
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── resolver.cpython-312.pyc
│ │ │ │ │ │ └── resolver.py
│ │ │ │ │ └── resolvelib
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── base.cpython-312.pyc
│ │ │ │ │ │ ├── candidates.cpython-312.pyc
│ │ │ │ │ │ ├── factory.cpython-312.pyc
│ │ │ │ │ │ ├── found_candidates.cpython-312.pyc
│ │ │ │ │ │ ├── provider.cpython-312.pyc
│ │ │ │ │ │ ├── reporter.cpython-312.pyc
│ │ │ │ │ │ ├── requirements.cpython-312.pyc
│ │ │ │ │ │ └── resolver.cpython-312.pyc
│ │ │ │ │ ├── base.py
│ │ │ │ │ ├── candidates.py
│ │ │ │ │ ├── factory.py
│ │ │ │ │ ├── found_candidates.py
│ │ │ │ │ ├── provider.py
│ │ │ │ │ ├── reporter.py
│ │ │ │ │ ├── requirements.py
│ │ │ │ │ └── resolver.py
│ │ │ │ ├── self_outdated_check.py
│ │ │ │ ├── utils
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _jaraco_text.cpython-312.pyc
│ │ │ │ │ │ ├── _log.cpython-312.pyc
│ │ │ │ │ │ ├── appdirs.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── compatibility_tags.cpython-312.pyc
│ │ │ │ │ │ ├── datetime.cpython-312.pyc
│ │ │ │ │ │ ├── deprecation.cpython-312.pyc
│ │ │ │ │ │ ├── direct_url_helpers.cpython-312.pyc
│ │ │ │ │ │ ├── egg_link.cpython-312.pyc
│ │ │ │ │ │ ├── encoding.cpython-312.pyc
│ │ │ │ │ │ ├── entrypoints.cpython-312.pyc
│ │ │ │ │ │ ├── filesystem.cpython-312.pyc
│ │ │ │ │ │ ├── filetypes.cpython-312.pyc
│ │ │ │ │ │ ├── glibc.cpython-312.pyc
│ │ │ │ │ │ ├── hashes.cpython-312.pyc
│ │ │ │ │ │ ├── logging.cpython-312.pyc
│ │ │ │ │ │ ├── misc.cpython-312.pyc
│ │ │ │ │ │ ├── packaging.cpython-312.pyc
│ │ │ │ │ │ ├── retry.cpython-312.pyc
│ │ │ │ │ │ ├── setuptools_build.cpython-312.pyc
│ │ │ │ │ │ ├── subprocess.cpython-312.pyc
│ │ │ │ │ │ ├── temp_dir.cpython-312.pyc
│ │ │ │ │ │ ├── unpacking.cpython-312.pyc
│ │ │ │ │ │ ├── urls.cpython-312.pyc
│ │ │ │ │ │ ├── virtualenv.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── _jaraco_text.py
│ │ │ │ │ ├── _log.py
│ │ │ │ │ ├── appdirs.py
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── compatibility_tags.py
│ │ │ │ │ ├── datetime.py
│ │ │ │ │ ├── deprecation.py
│ │ │ │ │ ├── direct_url_helpers.py
│ │ │ │ │ ├── egg_link.py
│ │ │ │ │ ├── encoding.py
│ │ │ │ │ ├── entrypoints.py
│ │ │ │ │ ├── filesystem.py
│ │ │ │ │ ├── filetypes.py
│ │ │ │ │ ├── glibc.py
│ │ │ │ │ ├── hashes.py
│ │ │ │ │ ├── logging.py
│ │ │ │ │ ├── misc.py
│ │ │ │ │ ├── packaging.py
│ │ │ │ │ ├── retry.py
│ │ │ │ │ ├── setuptools_build.py
│ │ │ │ │ ├── subprocess.py
│ │ │ │ │ ├── temp_dir.py
│ │ │ │ │ ├── unpacking.py
│ │ │ │ │ ├── urls.py
│ │ │ │ │ ├── virtualenv.py
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── vcs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── bazaar.cpython-312.pyc
│ │ │ │ │ │ ├── git.cpython-312.pyc
│ │ │ │ │ │ ├── mercurial.cpython-312.pyc
│ │ │ │ │ │ ├── subversion.cpython-312.pyc
│ │ │ │ │ │ └── versioncontrol.cpython-312.pyc
│ │ │ │ │ ├── bazaar.py
│ │ │ │ │ ├── git.py
│ │ │ │ │ ├── mercurial.py
│ │ │ │ │ ├── subversion.py
│ │ │ │ │ └── versioncontrol.py
│ │ │ │ └── wheel_builder.py
│ │ │ ├── _vendor
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ └── typing_extensions.cpython-312.pyc
│ │ │ │ ├── cachecontrol
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _cmd.cpython-312.pyc
│ │ │ │ │ │ ├── adapter.cpython-312.pyc
│ │ │ │ │ │ ├── cache.cpython-312.pyc
│ │ │ │ │ │ ├── controller.cpython-312.pyc
│ │ │ │ │ │ ├── filewrapper.cpython-312.pyc
│ │ │ │ │ │ ├── heuristics.cpython-312.pyc
│ │ │ │ │ │ ├── serialize.cpython-312.pyc
│ │ │ │ │ │ └── wrapper.cpython-312.pyc
│ │ │ │ │ ├── _cmd.py
│ │ │ │ │ ├── adapter.py
│ │ │ │ │ ├── cache.py
│ │ │ │ │ ├── caches
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── file_cache.cpython-312.pyc
│ │ │ │ │ │ │ └── redis_cache.cpython-312.pyc
│ │ │ │ │ │ ├── file_cache.py
│ │ │ │ │ │ └── redis_cache.py
│ │ │ │ │ ├── controller.py
│ │ │ │ │ ├── filewrapper.py
│ │ │ │ │ ├── heuristics.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── serialize.py
│ │ │ │ │ └── wrapper.py
│ │ │ │ ├── certifi
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ └── core.cpython-312.pyc
│ │ │ │ │ ├── cacert.pem
│ │ │ │ │ ├── core.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── distlib
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── database.cpython-312.pyc
│ │ │ │ │ │ ├── index.cpython-312.pyc
│ │ │ │ │ │ ├── locators.cpython-312.pyc
│ │ │ │ │ │ ├── manifest.cpython-312.pyc
│ │ │ │ │ │ ├── markers.cpython-312.pyc
│ │ │ │ │ │ ├── metadata.cpython-312.pyc
│ │ │ │ │ │ ├── resources.cpython-312.pyc
│ │ │ │ │ │ ├── scripts.cpython-312.pyc
│ │ │ │ │ │ ├── util.cpython-312.pyc
│ │ │ │ │ │ ├── version.cpython-312.pyc
│ │ │ │ │ │ └── wheel.cpython-312.pyc
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── database.py
│ │ │ │ │ ├── index.py
│ │ │ │ │ ├── locators.py
│ │ │ │ │ ├── manifest.py
│ │ │ │ │ ├── markers.py
│ │ │ │ │ ├── metadata.py
│ │ │ │ │ ├── resources.py
│ │ │ │ │ ├── scripts.py
│ │ │ │ │ ├── t32.exe
│ │ │ │ │ ├── t64-arm.exe
│ │ │ │ │ ├── t64.exe
│ │ │ │ │ ├── util.py
│ │ │ │ │ ├── version.py
│ │ │ │ │ ├── w32.exe
│ │ │ │ │ ├── w64-arm.exe
│ │ │ │ │ ├── w64.exe
│ │ │ │ │ └── wheel.py
│ │ │ │ ├── distro
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ └── distro.cpython-312.pyc
│ │ │ │ │ ├── distro.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── idna
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── codec.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── core.cpython-312.pyc
│ │ │ │ │ │ ├── idnadata.cpython-312.pyc
│ │ │ │ │ │ ├── intranges.cpython-312.pyc
│ │ │ │ │ │ ├── package_data.cpython-312.pyc
│ │ │ │ │ │ └── uts46data.cpython-312.pyc
│ │ │ │ │ ├── codec.py
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── core.py
│ │ │ │ │ ├── idnadata.py
│ │ │ │ │ ├── intranges.py
│ │ │ │ │ ├── package_data.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ └── uts46data.py
│ │ │ │ ├── msgpack
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ │ ├── ext.cpython-312.pyc
│ │ │ │ │ │ └── fallback.cpython-312.pyc
│ │ │ │ │ ├── exceptions.py
│ │ │ │ │ ├── ext.py
│ │ │ │ │ └── fallback.py
│ │ │ │ ├── packaging
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _elffile.cpython-312.pyc
│ │ │ │ │ │ ├── _manylinux.cpython-312.pyc
│ │ │ │ │ │ ├── _musllinux.cpython-312.pyc
│ │ │ │ │ │ ├── _parser.cpython-312.pyc
│ │ │ │ │ │ ├── _structures.cpython-312.pyc
│ │ │ │ │ │ ├── _tokenizer.cpython-312.pyc
│ │ │ │ │ │ ├── markers.cpython-312.pyc
│ │ │ │ │ │ ├── metadata.cpython-312.pyc
│ │ │ │ │ │ ├── requirements.cpython-312.pyc
│ │ │ │ │ │ ├── specifiers.cpython-312.pyc
│ │ │ │ │ │ ├── tags.cpython-312.pyc
│ │ │ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ │ │ └── version.cpython-312.pyc
│ │ │ │ │ ├── _elffile.py
│ │ │ │ │ ├── _manylinux.py
│ │ │ │ │ ├── _musllinux.py
│ │ │ │ │ ├── _parser.py
│ │ │ │ │ ├── _structures.py
│ │ │ │ │ ├── _tokenizer.py
│ │ │ │ │ ├── markers.py
│ │ │ │ │ ├── metadata.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── requirements.py
│ │ │ │ │ ├── specifiers.py
│ │ │ │ │ ├── tags.py
│ │ │ │ │ ├── utils.py
│ │ │ │ │ └── version.py
│ │ │ │ ├── pkg_resources
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── __pycache__
│ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ ├── platformdirs
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ ├── android.cpython-312.pyc
│ │ │ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ │ │ ├── macos.cpython-312.pyc
│ │ │ │ │ │ ├── unix.cpython-312.pyc
│ │ │ │ │ │ ├── version.cpython-312.pyc
│ │ │ │ │ │ └── windows.cpython-312.pyc
│ │ │ │ │ ├── android.py
│ │ │ │ │ ├── api.py
│ │ │ │ │ ├── macos.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── unix.py
│ │ │ │ │ ├── version.py
│ │ │ │ │ └── windows.py
│ │ │ │ ├── pygments
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ ├── cmdline.cpython-312.pyc
│ │ │ │ │ │ ├── console.cpython-312.pyc
│ │ │ │ │ │ ├── filter.cpython-312.pyc
│ │ │ │ │ │ ├── formatter.cpython-312.pyc
│ │ │ │ │ │ ├── lexer.cpython-312.pyc
│ │ │ │ │ │ ├── modeline.cpython-312.pyc
│ │ │ │ │ │ ├── plugin.cpython-312.pyc
│ │ │ │ │ │ ├── regexopt.cpython-312.pyc
│ │ │ │ │ │ ├── scanner.cpython-312.pyc
│ │ │ │ │ │ ├── sphinxext.cpython-312.pyc
│ │ │ │ │ │ ├── style.cpython-312.pyc
│ │ │ │ │ │ ├── token.cpython-312.pyc
│ │ │ │ │ │ ├── unistring.cpython-312.pyc
│ │ │ │ │ │ └── util.cpython-312.pyc
│ │ │ │ │ ├── cmdline.py
│ │ │ │ │ ├── console.py
│ │ │ │ │ ├── filter.py
│ │ │ │ │ ├── filters
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ └── __pycache__
│ │ │ │ │ │ └── __init__.cpython-312.pyc
│ │ │ │ │ ├── formatter.py
│ │ │ │ │ ├── formatters
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _mapping.cpython-312.pyc
│ │ │ │ │ │ │ ├── bbcode.cpython-312.pyc
│ │ │ │ │ │ │ ├── groff.cpython-312.pyc
│ │ │ │ │ │ │ ├── html.cpython-312.pyc
│ │ │ │ │ │ │ ├── img.cpython-312.pyc
│ │ │ │ │ │ │ ├── irc.cpython-312.pyc
│ │ │ │ │ │ │ ├── latex.cpython-312.pyc
│ │ │ │ │ │ │ ├── other.cpython-312.pyc
│ │ │ │ │ │ │ ├── pangomarkup.cpython-312.pyc
│ │ │ │ │ │ │ ├── rtf.cpython-312.pyc
│ │ │ │ │ │ │ ├── svg.cpython-312.pyc
│ │ │ │ │ │ │ ├── terminal.cpython-312.pyc
│ │ │ │ │ │ │ └── terminal256.cpython-312.pyc
│ │ │ │ │ │ ├── _mapping.py
│ │ │ │ │ │ ├── bbcode.py
│ │ │ │ │ │ ├── groff.py
│ │ │ │ │ │ ├── html.py
│ │ │ │ │ │ ├── img.py
│ │ │ │ │ │ ├── irc.py
│ │ │ │ │ │ ├── latex.py
│ │ │ │ │ │ ├── other.py
│ │ │ │ │ │ ├── pangomarkup.py
│ │ │ │ │ │ ├── rtf.py
│ │ │ │ │ │ ├── svg.py
│ │ │ │ │ │ ├── terminal.py
│ │ │ │ │ │ └── terminal256.py
│ │ │ │ │ ├── lexer.py
│ │ │ │ │ ├── lexers
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _mapping.cpython-312.pyc
│ │ │ │ │ │ │ └── python.cpython-312.pyc
│ │ │ │ │ │ ├── _mapping.py
│ │ │ │ │ │ └── python.py
│ │ │ │ │ ├── modeline.py
│ │ │ │ │ ├── plugin.py
│ │ │ │ │ ├── regexopt.py
│ │ │ │ │ ├── scanner.py
│ │ │ │ │ ├── sphinxext.py
│ │ │ │ │ ├── style.py
│ │ │ │ │ ├── styles
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── _mapping.cpython-312.pyc
│ │ │ │ │ │ └── _mapping.py
│ │ │ │ │ ├── token.py
│ │ │ │ │ ├── unistring.py
│ │ │ │ │ └── util.py
│ │ │ │ ├── pyproject_hooks
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _compat.cpython-312.pyc
│ │ │ │ │ │ └── _impl.cpython-312.pyc
│ │ │ │ │ ├── _compat.py
│ │ │ │ │ ├── _impl.py
│ │ │ │ │ └── _in_process
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ └── _in_process.cpython-312.pyc
│ │ │ │ │ └── _in_process.py
│ │ │ │ ├── requests
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __version__.cpython-312.pyc
│ │ │ │ │ │ ├── _internal_utils.cpython-312.pyc
│ │ │ │ │ │ ├── adapters.cpython-312.pyc
│ │ │ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ │ │ ├── certs.cpython-312.pyc
│ │ │ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ │ │ ├── cookies.cpython-312.pyc
│ │ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ │ ├── help.cpython-312.pyc
│ │ │ │ │ │ ├── hooks.cpython-312.pyc
│ │ │ │ │ │ ├── models.cpython-312.pyc
│ │ │ │ │ │ ├── packages.cpython-312.pyc
│ │ │ │ │ │ ├── sessions.cpython-312.pyc
│ │ │ │ │ │ ├── status_codes.cpython-312.pyc
│ │ │ │ │ │ ├── structures.cpython-312.pyc
│ │ │ │ │ │ └── utils.cpython-312.pyc
│ │ │ │ │ ├── __version__.py
│ │ │ │ │ ├── _internal_utils.py
│ │ │ │ │ ├── adapters.py
│ │ │ │ │ ├── api.py
│ │ │ │ │ ├── auth.py
│ │ │ │ │ ├── certs.py
│ │ │ │ │ ├── compat.py
│ │ │ │ │ ├── cookies.py
│ │ │ │ │ ├── exceptions.py
│ │ │ │ │ ├── help.py
│ │ │ │ │ ├── hooks.py
│ │ │ │ │ ├── models.py
│ │ │ │ │ ├── packages.py
│ │ │ │ │ ├── sessions.py
│ │ │ │ │ ├── status_codes.py
│ │ │ │ │ ├── structures.py
│ │ │ │ │ └── utils.py
│ │ │ │ ├── resolvelib
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── providers.cpython-312.pyc
│ │ │ │ │ │ ├── reporters.cpython-312.pyc
│ │ │ │ │ │ ├── resolvers.cpython-312.pyc
│ │ │ │ │ │ └── structs.cpython-312.pyc
│ │ │ │ │ ├── compat
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── collections_abc.cpython-312.pyc
│ │ │ │ │ │ └── collections_abc.py
│ │ │ │ │ ├── providers.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── reporters.py
│ │ │ │ │ ├── resolvers.py
│ │ │ │ │ └── structs.py
│ │ │ │ ├── rich
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __main__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── __main__.cpython-312.pyc
│ │ │ │ │ │ ├── _cell_widths.cpython-312.pyc
│ │ │ │ │ │ ├── _emoji_codes.cpython-312.pyc
│ │ │ │ │ │ ├── _emoji_replace.cpython-312.pyc
│ │ │ │ │ │ ├── _export_format.cpython-312.pyc
│ │ │ │ │ │ ├── _extension.cpython-312.pyc
│ │ │ │ │ │ ├── _fileno.cpython-312.pyc
│ │ │ │ │ │ ├── _inspect.cpython-312.pyc
│ │ │ │ │ │ ├── _log_render.cpython-312.pyc
│ │ │ │ │ │ ├── _loop.cpython-312.pyc
│ │ │ │ │ │ ├── _null_file.cpython-312.pyc
│ │ │ │ │ │ ├── _palettes.cpython-312.pyc
│ │ │ │ │ │ ├── _pick.cpython-312.pyc
│ │ │ │ │ │ ├── _ratio.cpython-312.pyc
│ │ │ │ │ │ ├── _spinners.cpython-312.pyc
│ │ │ │ │ │ ├── _stack.cpython-312.pyc
│ │ │ │ │ │ ├── _timer.cpython-312.pyc
│ │ │ │ │ │ ├── _win32_console.cpython-312.pyc
│ │ │ │ │ │ ├── _windows_renderer.cpython-312.pyc
│ │ │ │ │ │ ├── _windows.cpython-312.pyc
│ │ │ │ │ │ ├── _wrap.cpython-312.pyc
│ │ │ │ │ │ ├── abc.cpython-312.pyc
│ │ │ │ │ │ ├── align.cpython-312.pyc
│ │ │ │ │ │ ├── ansi.cpython-312.pyc
│ │ │ │ │ │ ├── bar.cpython-312.pyc
│ │ │ │ │ │ ├── box.cpython-312.pyc
│ │ │ │ │ │ ├── cells.cpython-312.pyc
│ │ │ │ │ │ ├── color_triplet.cpython-312.pyc
│ │ │ │ │ │ ├── color.cpython-312.pyc
│ │ │ │ │ │ ├── columns.cpython-312.pyc
│ │ │ │ │ │ ├── console.cpython-312.pyc
│ │ │ │ │ │ ├── constrain.cpython-312.pyc
│ │ │ │ │ │ ├── containers.cpython-312.pyc
│ │ │ │ │ │ ├── control.cpython-312.pyc
│ │ │ │ │ │ ├── default_styles.cpython-312.pyc
│ │ │ │ │ │ ├── diagnose.cpython-312.pyc
│ │ │ │ │ │ ├── emoji.cpython-312.pyc
│ │ │ │ │ │ ├── errors.cpython-312.pyc
│ │ │ │ │ │ ├── file_proxy.cpython-312.pyc
│ │ │ │ │ │ ├── filesize.cpython-312.pyc
│ │ │ │ │ │ ├── highlighter.cpython-312.pyc
│ │ │ │ │ │ ├── json.cpython-312.pyc
│ │ │ │ │ │ ├── jupyter.cpython-312.pyc
│ │ │ │ │ │ ├── layout.cpython-312.pyc
│ │ │ │ │ │ ├── live_render.cpython-312.pyc
│ │ │ │ │ │ ├── live.cpython-312.pyc
│ │ │ │ │ │ ├── logging.cpython-312.pyc
│ │ │ │ │ │ ├── markup.cpython-312.pyc
│ │ │ │ │ │ ├── measure.cpython-312.pyc
│ │ │ │ │ │ ├── padding.cpython-312.pyc
│ │ │ │ │ │ ├── pager.cpython-312.pyc
│ │ │ │ │ │ ├── palette.cpython-312.pyc
│ │ │ │ │ │ ├── panel.cpython-312.pyc
│ │ │ │ │ │ ├── pretty.cpython-312.pyc
│ │ │ │ │ │ ├── progress_bar.cpython-312.pyc
│ │ │ │ │ │ ├── progress.cpython-312.pyc
│ │ │ │ │ │ ├── prompt.cpython-312.pyc
│ │ │ │ │ │ ├── protocol.cpython-312.pyc
│ │ │ │ │ │ ├── region.cpython-312.pyc
│ │ │ │ │ │ ├── repr.cpython-312.pyc
│ │ │ │ │ │ ├── rule.cpython-312.pyc
│ │ │ │ │ │ ├── scope.cpython-312.pyc
│ │ │ │ │ │ ├── screen.cpython-312.pyc
│ │ │ │ │ │ ├── segment.cpython-312.pyc
│ │ │ │ │ │ ├── spinner.cpython-312.pyc
│ │ │ │ │ │ ├── status.cpython-312.pyc
│ │ │ │ │ │ ├── style.cpython-312.pyc
│ │ │ │ │ │ ├── styled.cpython-312.pyc
│ │ │ │ │ │ ├── syntax.cpython-312.pyc
│ │ │ │ │ │ ├── table.cpython-312.pyc
│ │ │ │ │ │ ├── terminal_theme.cpython-312.pyc
│ │ │ │ │ │ ├── text.cpython-312.pyc
│ │ │ │ │ │ ├── theme.cpython-312.pyc
│ │ │ │ │ │ ├── themes.cpython-312.pyc
│ │ │ │ │ │ ├── traceback.cpython-312.pyc
│ │ │ │ │ │ └── tree.cpython-312.pyc
│ │ │ │ │ ├── _cell_widths.py
│ │ │ │ │ ├── _emoji_codes.py
│ │ │ │ │ ├── _emoji_replace.py
│ │ │ │ │ ├── _export_format.py
│ │ │ │ │ ├── _extension.py
│ │ │ │ │ ├── _fileno.py
│ │ │ │ │ ├── _inspect.py
│ │ │ │ │ ├── _log_render.py
│ │ │ │ │ ├── _loop.py
│ │ │ │ │ ├── _null_file.py
│ │ │ │ │ ├── _palettes.py
│ │ │ │ │ ├── _pick.py
│ │ │ │ │ ├── _ratio.py
│ │ │ │ │ ├── _spinners.py
│ │ │ │ │ ├── _stack.py
│ │ │ │ │ ├── _timer.py
│ │ │ │ │ ├── _win32_console.py
│ │ │ │ │ ├── _windows_renderer.py
│ │ │ │ │ ├── _windows.py
│ │ │ │ │ ├── _wrap.py
│ │ │ │ │ ├── abc.py
│ │ │ │ │ ├── align.py
│ │ │ │ │ ├── ansi.py
│ │ │ │ │ ├── bar.py
│ │ │ │ │ ├── box.py
│ │ │ │ │ ├── cells.py
│ │ │ │ │ ├── color_triplet.py
│ │ │ │ │ ├── color.py
│ │ │ │ │ ├── columns.py
│ │ │ │ │ ├── console.py
│ │ │ │ │ ├── constrain.py
│ │ │ │ │ ├── containers.py
│ │ │ │ │ ├── control.py
│ │ │ │ │ ├── default_styles.py
│ │ │ │ │ ├── diagnose.py
│ │ │ │ │ ├── emoji.py
│ │ │ │ │ ├── errors.py
│ │ │ │ │ ├── file_proxy.py
│ │ │ │ │ ├── filesize.py
│ │ │ │ │ ├── highlighter.py
│ │ │ │ │ ├── json.py
│ │ │ │ │ ├── jupyter.py
│ │ │ │ │ ├── layout.py
│ │ │ │ │ ├── live_render.py
│ │ │ │ │ ├── live.py
│ │ │ │ │ ├── logging.py
│ │ │ │ │ ├── markup.py
│ │ │ │ │ ├── measure.py
│ │ │ │ │ ├── padding.py
│ │ │ │ │ ├── pager.py
│ │ │ │ │ ├── palette.py
│ │ │ │ │ ├── panel.py
│ │ │ │ │ ├── pretty.py
│ │ │ │ │ ├── progress_bar.py
│ │ │ │ │ ├── progress.py
│ │ │ │ │ ├── prompt.py
│ │ │ │ │ ├── protocol.py
│ │ │ │ │ ├── py.typed
│ │ │ │ │ ├── region.py
│ │ │ │ │ ├── repr.py
│ │ │ │ │ ├── rule.py
│ │ │ │ │ ├── scope.py
│ │ │ │ │ ├── screen.py
│ │ │ │ │ ├── segment.py
│ │ │ │ │ ├── spinner.py
│ │ │ │ │ ├── status.py
│ │ │ │ │ ├── style.py
│ │ │ │ │ ├── styled.py
│ │ │ │ │ ├── syntax.py
│ │ │ │ │ ├── table.py
│ │ │ │ │ ├── terminal_theme.py
│ │ │ │ │ ├── text.py
│ │ │ │ │ ├── theme.py
│ │ │ │ │ ├── themes.py
│ │ │ │ │ ├── traceback.py
│ │ │ │ │ └── tree.py
│ │ │ │ ├── tomli
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _parser.cpython-312.pyc
│ │ │ │ │ │ ├── _re.cpython-312.pyc
│ │ │ │ │ │ └── _types.cpython-312.pyc
│ │ │ │ │ ├── _parser.py
│ │ │ │ │ ├── _re.py
│ │ │ │ │ ├── _types.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── truststore
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _api.cpython-312.pyc
│ │ │ │ │ │ ├── _macos.cpython-312.pyc
│ │ │ │ │ │ ├── _openssl.cpython-312.pyc
│ │ │ │ │ │ ├── _ssl_constants.cpython-312.pyc
│ │ │ │ │ │ └── _windows.cpython-312.pyc
│ │ │ │ │ ├── _api.py
│ │ │ │ │ ├── _macos.py
│ │ │ │ │ ├── _openssl.py
│ │ │ │ │ ├── _ssl_constants.py
│ │ │ │ │ ├── _windows.py
│ │ │ │ │ └── py.typed
│ │ │ │ ├── typing_extensions.py
│ │ │ │ ├── urllib3
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── _collections.cpython-312.pyc
│ │ │ │ │ │ ├── _version.cpython-312.pyc
│ │ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ │ ├── connectionpool.cpython-312.pyc
│ │ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ │ ├── fields.cpython-312.pyc
│ │ │ │ │ │ ├── filepost.cpython-312.pyc
│ │ │ │ │ │ ├── poolmanager.cpython-312.pyc
│ │ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ │ └── response.cpython-312.pyc
│ │ │ │ │ ├── _collections.py
│ │ │ │ │ ├── _version.py
│ │ │ │ │ ├── connection.py
│ │ │ │ │ ├── connectionpool.py
│ │ │ │ │ ├── contrib
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ ├── _appengine_environ.cpython-312.pyc
│ │ │ │ │ │ │ ├── appengine.cpython-312.pyc
│ │ │ │ │ │ │ ├── ntlmpool.cpython-312.pyc
│ │ │ │ │ │ │ ├── pyopenssl.cpython-312.pyc
│ │ │ │ │ │ │ ├── securetransport.cpython-312.pyc
│ │ │ │ │ │ │ └── socks.cpython-312.pyc
│ │ │ │ │ │ ├── _appengine_environ.py
│ │ │ │ │ │ ├── _securetransport
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ │ ├── bindings.cpython-312.pyc
│ │ │ │ │ │ │ │ └── low_level.cpython-312.pyc
│ │ │ │ │ │ │ ├── bindings.py
│ │ │ │ │ │ │ └── low_level.py
│ │ │ │ │ │ ├── appengine.py
│ │ │ │ │ │ ├── ntlmpool.py
│ │ │ │ │ │ ├── pyopenssl.py
│ │ │ │ │ │ ├── securetransport.py
│ │ │ │ │ │ └── socks.py
│ │ │ │ │ ├── exceptions.py
│ │ │ │ │ ├── fields.py
│ │ │ │ │ ├── filepost.py
│ │ │ │ │ ├── packages
│ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ └── six.cpython-312.pyc
│ │ │ │ │ │ ├── backports
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ │ │ ├── makefile.cpython-312.pyc
│ │ │ │ │ │ │ │ └── weakref_finalize.cpython-312.pyc
│ │ │ │ │ │ │ ├── makefile.py
│ │ │ │ │ │ │ └── weakref_finalize.py
│ │ │ │ │ │ └── six.py
│ │ │ │ │ ├── poolmanager.py
│ │ │ │ │ ├── request.py
│ │ │ │ │ ├── response.py
│ │ │ │ │ └── util
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ │ ├── proxy.cpython-312.pyc
│ │ │ │ │ │ ├── queue.cpython-312.pyc
│ │ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ │ ├── response.cpython-312.pyc
│ │ │ │ │ │ ├── retry.cpython-312.pyc
│ │ │ │ │ │ ├── ssl_.cpython-312.pyc
│ │ │ │ │ │ ├── ssl_match_hostname.cpython-312.pyc
│ │ │ │ │ │ ├── ssltransport.cpython-312.pyc
│ │ │ │ │ │ ├── timeout.cpython-312.pyc
│ │ │ │ │ │ ├── url.cpython-312.pyc
│ │ │ │ │ │ └── wait.cpython-312.pyc
│ │ │ │ │ ├── connection.py
│ │ │ │ │ ├── proxy.py
│ │ │ │ │ ├── queue.py
│ │ │ │ │ ├── request.py
│ │ │ │ │ ├── response.py
│ │ │ │ │ ├── retry.py
│ │ │ │ │ ├── ssl_.py
│ │ │ │ │ ├── ssl_match_hostname.py
│ │ │ │ │ ├── ssltransport.py
│ │ │ │ │ ├── timeout.py
│ │ │ │ │ ├── url.py
│ │ │ │ │ └── wait.py
│ │ │ │ └── vendor.txt
│ │ │ └── py.typed
│ │ ├── pip-24.2.dist-info
│ │ │ ├── AUTHORS.txt
│ │ │ ├── entry_points.txt
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── requests
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __version__.cpython-312.pyc
│ │ │ │ ├── _internal_utils.cpython-312.pyc
│ │ │ │ ├── adapters.cpython-312.pyc
│ │ │ │ ├── api.cpython-312.pyc
│ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ ├── certs.cpython-312.pyc
│ │ │ │ ├── compat.cpython-312.pyc
│ │ │ │ ├── cookies.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── help.cpython-312.pyc
│ │ │ │ ├── hooks.cpython-312.pyc
│ │ │ │ ├── models.cpython-312.pyc
│ │ │ │ ├── packages.cpython-312.pyc
│ │ │ │ ├── sessions.cpython-312.pyc
│ │ │ │ ├── status_codes.cpython-312.pyc
│ │ │ │ ├── structures.cpython-312.pyc
│ │ │ │ └── utils.cpython-312.pyc
│ │ │ ├── __version__.py
│ │ │ ├── _internal_utils.py
│ │ │ ├── adapters.py
│ │ │ ├── api.py
│ │ │ ├── auth.py
│ │ │ ├── certs.py
│ │ │ ├── compat.py
│ │ │ ├── cookies.py
│ │ │ ├── exceptions.py
│ │ │ ├── help.py
│ │ │ ├── hooks.py
│ │ │ ├── models.py
│ │ │ ├── packages.py
│ │ │ ├── sessions.py
│ │ │ ├── status_codes.py
│ │ │ ├── structures.py
│ │ │ └── utils.py
│ │ ├── requests-2.32.3.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── soupsieve
│ │ │ ├── __init__.py
│ │ │ ├── __meta__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── __meta__.cpython-312.pyc
│ │ │ │ ├── css_match.cpython-312.pyc
│ │ │ │ ├── css_parser.cpython-312.pyc
│ │ │ │ ├── css_types.cpython-312.pyc
│ │ │ │ ├── pretty.cpython-312.pyc
│ │ │ │ └── util.cpython-312.pyc
│ │ │ ├── css_match.py
│ │ │ ├── css_parser.py
│ │ │ ├── css_types.py
│ │ │ ├── pretty.py
│ │ │ ├── py.typed
│ │ │ └── util.py
│ │ ├── soupsieve-2.6.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── licenses
│ │ │ │ └── LICENSE.md
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── urllib3
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _base_connection.cpython-312.pyc
│ │ │ │ ├── _collections.cpython-312.pyc
│ │ │ │ ├── _request_methods.cpython-312.pyc
│ │ │ │ ├── _version.cpython-312.pyc
│ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ ├── connectionpool.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── fields.cpython-312.pyc
│ │ │ │ ├── filepost.cpython-312.pyc
│ │ │ │ ├── poolmanager.cpython-312.pyc
│ │ │ │ └── response.cpython-312.pyc
│ │ │ ├── _base_connection.py
│ │ │ ├── _collections.py
│ │ │ ├── _request_methods.py
│ │ │ ├── _version.py
│ │ │ ├── connection.py
│ │ │ ├── connectionpool.py
│ │ │ ├── contrib
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── pyopenssl.cpython-312.pyc
│ │ │ │ │ └── socks.cpython-312.pyc
│ │ │ │ ├── emscripten
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── __pycache__
│ │ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ │ ├── fetch.cpython-312.pyc
│ │ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ │ └── response.cpython-312.pyc
│ │ │ │ │ ├── connection.py
│ │ │ │ │ ├── emscripten_fetch_worker.js
│ │ │ │ │ ├── fetch.py
│ │ │ │ │ ├── request.py
│ │ │ │ │ └── response.py
│ │ │ │ ├── pyopenssl.py
│ │ │ │ └── socks.py
│ │ │ ├── exceptions.py
│ │ │ ├── fields.py
│ │ │ ├── filepost.py
│ │ │ ├── http2
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ │ └── probe.cpython-312.pyc
│ │ │ │ ├── connection.py
│ │ │ │ └── probe.py
│ │ │ ├── poolmanager.py
│ │ │ ├── py.typed
│ │ │ ├── response.py
│ │ │ └── util
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── connection.cpython-312.pyc
│ │ │ │ ├── proxy.cpython-312.pyc
│ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ ├── response.cpython-312.pyc
│ │ │ │ ├── retry.cpython-312.pyc
│ │ │ │ ├── ssl_.cpython-312.pyc
│ │ │ │ ├── ssl_match_hostname.cpython-312.pyc
│ │ │ │ ├── ssltransport.cpython-312.pyc
│ │ │ │ ├── timeout.cpython-312.pyc
│ │ │ │ ├── url.cpython-312.pyc
│ │ │ │ ├── util.cpython-312.pyc
│ │ │ │ └── wait.cpython-312.pyc
│ │ │ ├── connection.py
│ │ │ ├── proxy.py
│ │ │ ├── request.py
│ │ │ ├── response.py
│ │ │ ├── retry.py
│ │ │ ├── ssl_.py
│ │ │ ├── ssl_match_hostname.py
│ │ │ ├── ssltransport.py
│ │ │ ├── timeout.py
│ │ │ ├── url.py
│ │ │ ├── util.py
│ │ │ └── wait.py
│ │ ├── urllib3-2.2.3.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── licenses
│ │ │ │ └── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ └── WHEEL
│ │ ├── useragent
│ │ │ ├── __init__.py
│ │ │ ├── __init__.pyc
│ │ │ ├── __pycache__
│ │ │ │ └── __init__.cpython-312.pyc
│ │ │ ├── resources
│ │ │ │ └── user_agent_data.json
│ │ │ └── test
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ └── __init__.cpython-312.pyc
│ │ │ ├── test_additional_os.json
│ │ │ ├── test_browser.json
│ │ │ ├── test_device.json
│ │ │ ├── test_firefox.json
│ │ │ ├── test_os.json
│ │ │ └── test_pgts_browser.json
│ │ ├── useragent-0.1.1.dist-info
│ │ │ ├── INSTALLER
│ │ │ ├── LICENSE.txt
│ │ │ ├── METADATA
│ │ │ ├── RECORD
│ │ │ ├── REQUESTED
│ │ │ ├── top_level.txt
│ │ │ └── WHEEL
│ │ ├── werkzeug
│ │ │ ├── __init__.py
│ │ │ ├── __pycache__
│ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ ├── _internal.cpython-312.pyc
│ │ │ │ ├── _reloader.cpython-312.pyc
│ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ ├── formparser.cpython-312.pyc
│ │ │ │ ├── http.cpython-312.pyc
│ │ │ │ ├── local.cpython-312.pyc
│ │ │ │ ├── security.cpython-312.pyc
│ │ │ │ ├── serving.cpython-312.pyc
│ │ │ │ ├── test.cpython-312.pyc
│ │ │ │ ├── testapp.cpython-312.pyc
│ │ │ │ ├── urls.cpython-312.pyc
│ │ │ │ ├── user_agent.cpython-312.pyc
│ │ │ │ ├── utils.cpython-312.pyc
│ │ │ │ └── wsgi.cpython-312.pyc
│ │ │ ├── _internal.py
│ │ │ ├── _reloader.py
│ │ │ ├── datastructures
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── accept.cpython-312.pyc
│ │ │ │ │ ├── auth.cpython-312.pyc
│ │ │ │ │ ├── cache_control.cpython-312.pyc
│ │ │ │ │ ├── csp.cpython-312.pyc
│ │ │ │ │ ├── etag.cpython-312.pyc
│ │ │ │ │ ├── file_storage.cpython-312.pyc
│ │ │ │ │ ├── headers.cpython-312.pyc
│ │ │ │ │ ├── mixins.cpython-312.pyc
│ │ │ │ │ ├── range.cpython-312.pyc
│ │ │ │ │ └── structures.cpython-312.pyc
│ │ │ │ ├── accept.py
│ │ │ │ ├── accept.pyi
│ │ │ │ ├── auth.py
│ │ │ │ ├── cache_control.py
│ │ │ │ ├── cache_control.pyi
│ │ │ │ ├── csp.py
│ │ │ │ ├── csp.pyi
│ │ │ │ ├── etag.py
│ │ │ │ ├── etag.pyi
│ │ │ │ ├── file_storage.py
│ │ │ │ ├── file_storage.pyi
│ │ │ │ ├── headers.py
│ │ │ │ ├── headers.pyi
│ │ │ │ ├── mixins.py
│ │ │ │ ├── mixins.pyi
│ │ │ │ ├── range.py
│ │ │ │ ├── range.pyi
│ │ │ │ ├── structures.py
│ │ │ │ └── structures.pyi
│ │ │ ├── debug
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── console.cpython-312.pyc
│ │ │ │ │ ├── repr.cpython-312.pyc
│ │ │ │ │ └── tbtools.cpython-312.pyc
│ │ │ │ ├── console.py
│ │ │ │ ├── repr.py
│ │ │ │ ├── shared
│ │ │ │ │ ├── console.png
│ │ │ │ │ ├── debugger.js
│ │ │ │ │ ├── ICON_LICENSE.md
│ │ │ │ │ ├── less.png
│ │ │ │ │ ├── more.png
│ │ │ │ │ └── style.css
│ │ │ │ └── tbtools.py
│ │ │ ├── exceptions.py
│ │ │ ├── formparser.py
│ │ │ ├── http.py
│ │ │ ├── local.py
│ │ │ ├── middleware
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── dispatcher.cpython-312.pyc
│ │ │ │ │ ├── http_proxy.cpython-312.pyc
│ │ │ │ │ ├── lint.cpython-312.pyc
│ │ │ │ │ ├── profiler.cpython-312.pyc
│ │ │ │ │ ├── proxy_fix.cpython-312.pyc
│ │ │ │ │ └── shared_data.cpython-312.pyc
│ │ │ │ ├── dispatcher.py
│ │ │ │ ├── http_proxy.py
│ │ │ │ ├── lint.py
│ │ │ │ ├── profiler.py
│ │ │ │ ├── proxy_fix.py
│ │ │ │ └── shared_data.py
│ │ │ ├── py.typed
│ │ │ ├── routing
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── converters.cpython-312.pyc
│ │ │ │ │ ├── exceptions.cpython-312.pyc
│ │ │ │ │ ├── map.cpython-312.pyc
│ │ │ │ │ ├── matcher.cpython-312.pyc
│ │ │ │ │ └── rules.cpython-312.pyc
│ │ │ │ ├── converters.py
│ │ │ │ ├── exceptions.py
│ │ │ │ ├── map.py
│ │ │ │ ├── matcher.py
│ │ │ │ └── rules.py
│ │ │ ├── sansio
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── http.cpython-312.pyc
│ │ │ │ │ ├── multipart.cpython-312.pyc
│ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ ├── response.cpython-312.pyc
│ │ │ │ │ └── utils.cpython-312.pyc
│ │ │ │ ├── http.py
│ │ │ │ ├── multipart.py
│ │ │ │ ├── request.py
│ │ │ │ ├── response.py
│ │ │ │ └── utils.py
│ │ │ ├── security.py
│ │ │ ├── serving.py
│ │ │ ├── test.py
│ │ │ ├── testapp.py
│ │ │ ├── urls.py
│ │ │ ├── user_agent.py
│ │ │ ├── utils.py
│ │ │ ├── wrappers
│ │ │ │ ├── __init__.py
│ │ │ │ ├── __pycache__
│ │ │ │ │ ├── __init__.cpython-312.pyc
│ │ │ │ │ ├── request.cpython-312.pyc
│ │ │ │ │ └── response.cpython-312.pyc
│ │ │ │ ├── request.py
│ │ │ │ └── response.py
│ │ │ └── wsgi.py
│ │ └── werkzeug-3.0.4.dist-info
│ │ ├── INSTALLER
│ │ ├── LICENSE.txt
│ │ ├── METADATA
│ │ ├── RECORD
│ │ └── WHEEL
│ ├── pyvenv.cfg
│ ├── static
│ │ └── styles.css
│ ├── templates
│ │ └── index.html
│ └── test.py
├── cline_config.json
├── mcp_server.py
├── README.md
├── search_results.json
├── settings.json
└── test_files
├── text1.txt
└── text2.txt
```
# Files
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/rich/spinner.py:
--------------------------------------------------------------------------------
```python
1 | from typing import cast, List, Optional, TYPE_CHECKING, Union
2 |
3 | from ._spinners import SPINNERS
4 | from .measure import Measurement
5 | from .table import Table
6 | from .text import Text
7 |
8 | if TYPE_CHECKING:
9 | from .console import Console, ConsoleOptions, RenderResult, RenderableType
10 | from .style import StyleType
11 |
12 |
13 | class Spinner:
14 | """A spinner animation.
15 |
16 | Args:
17 | name (str): Name of spinner (run python -m rich.spinner).
18 | text (RenderableType, optional): A renderable to display at the right of the spinner (str or Text typically). Defaults to "".
19 | style (StyleType, optional): Style for spinner animation. Defaults to None.
20 | speed (float, optional): Speed factor for animation. Defaults to 1.0.
21 |
22 | Raises:
23 | KeyError: If name isn't one of the supported spinner animations.
24 | """
25 |
26 | def __init__(
27 | self,
28 | name: str,
29 | text: "RenderableType" = "",
30 | *,
31 | style: Optional["StyleType"] = None,
32 | speed: float = 1.0,
33 | ) -> None:
34 | try:
35 | spinner = SPINNERS[name]
36 | except KeyError:
37 | raise KeyError(f"no spinner called {name!r}")
38 | self.text: "Union[RenderableType, Text]" = (
39 | Text.from_markup(text) if isinstance(text, str) else text
40 | )
41 | self.frames = cast(List[str], spinner["frames"])[:]
42 | self.interval = cast(float, spinner["interval"])
43 | self.start_time: Optional[float] = None
44 | self.style = style
45 | self.speed = speed
46 | self.frame_no_offset: float = 0.0
47 | self._update_speed = 0.0
48 |
49 | def __rich_console__(
50 | self, console: "Console", options: "ConsoleOptions"
51 | ) -> "RenderResult":
52 | yield self.render(console.get_time())
53 |
54 | def __rich_measure__(
55 | self, console: "Console", options: "ConsoleOptions"
56 | ) -> Measurement:
57 | text = self.render(0)
58 | return Measurement.get(console, options, text)
59 |
60 | def render(self, time: float) -> "RenderableType":
61 | """Render the spinner for a given time.
62 |
63 | Args:
64 | time (float): Time in seconds.
65 |
66 | Returns:
67 | RenderableType: A renderable containing animation frame.
68 | """
69 | if self.start_time is None:
70 | self.start_time = time
71 |
72 | frame_no = ((time - self.start_time) * self.speed) / (
73 | self.interval / 1000.0
74 | ) + self.frame_no_offset
75 | frame = Text(
76 | self.frames[int(frame_no) % len(self.frames)], style=self.style or ""
77 | )
78 |
79 | if self._update_speed:
80 | self.frame_no_offset = frame_no
81 | self.start_time = time
82 | self.speed = self._update_speed
83 | self._update_speed = 0.0
84 |
85 | if not self.text:
86 | return frame
87 | elif isinstance(self.text, (str, Text)):
88 | return Text.assemble(frame, " ", self.text)
89 | else:
90 | table = Table.grid(padding=1)
91 | table.add_row(frame, self.text)
92 | return table
93 |
94 | def update(
95 | self,
96 | *,
97 | text: "RenderableType" = "",
98 | style: Optional["StyleType"] = None,
99 | speed: Optional[float] = None,
100 | ) -> None:
101 | """Updates attributes of a spinner after it has been started.
102 |
103 | Args:
104 | text (RenderableType, optional): A renderable to display at the right of the spinner (str or Text typically). Defaults to "".
105 | style (StyleType, optional): Style for spinner animation. Defaults to None.
106 | speed (float, optional): Speed factor for animation. Defaults to None.
107 | """
108 | if text:
109 | self.text = Text.from_markup(text) if isinstance(text, str) else text
110 | if style:
111 | self.style = style
112 | if speed:
113 | self._update_speed = speed
114 |
115 |
116 | if __name__ == "__main__": # pragma: no cover
117 | from time import sleep
118 |
119 | from .columns import Columns
120 | from .panel import Panel
121 | from .live import Live
122 |
123 | all_spinners = Columns(
124 | [
125 | Spinner(spinner_name, text=Text(repr(spinner_name), style="green"))
126 | for spinner_name in sorted(SPINNERS.keys())
127 | ],
128 | column_first=True,
129 | expand=True,
130 | )
131 |
132 | with Live(
133 | Panel(all_spinners, title="Spinners", border_style="blue"),
134 | refresh_per_second=20,
135 | ) as live:
136 | while True:
137 | sleep(0.1)
138 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/useragent/test/test_additional_os.json:
--------------------------------------------------------------------------------
```json
1 | {"test_cases": [{"major": "2", "family": "Android", "patch_minor": null, "user_agent_string": "Mozilla/5.0 (Linux; U; Android 2.1-update1; en-us; Nexus One Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17,gzip(gfe),gzip(gfe)", "minor": "1", "patch": "update1"}, {"major": null, "family": "Mac OS X", "patch_minor": null, "user_agent_string": "Mozilla/5.0 (Macintosh; U; Intel Mac OS X Mach-O; en-en; rv:1.9.0.12) Gecko/2009070609 Firefox/3.0.12,gzip(gfe),gzip(gfe)", "minor": null, "patch": null}, {"major": null, "family": "iOS", "patch_minor": null, "user_agent_string": "Opera/9.80 (iPhone; Opera Mini/5.0.019802/21.572; U; en) Presto/2.5.25 Version/10.54", "minor": null, "patch": null}, {"major": "9", "family": "Symbian OS", "patch_minor": null, "user_agent_string": "Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95/12.0.013; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413", "minor": "2", "patch": null}, {"major": null, "family": "Symbian OS", "patch_minor": null, "user_agent_string": "Opera/9.80 (S60; SymbOS; Opera Mobi/499; U; de) Presto/2.4.18 Version/10.00,gzip(gfe),gzip(gfe)", "minor": null, "patch": null}, {"major": null, "family": "Symbian^3", "patch_minor": null, "user_agent_string": "Mozilla/5.0 (Symbian/3; Series60/5.2 NokiaN8-00/010.022; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/525 (KHTML, like Gecko) Version/3.0 BrowserNG/7.2.6.3 3gpp-gba,gzip(gfe),gzip(gfe)", "minor": null, "patch": null}, {"major": "4", "family": "BlackBerry OS", "patch_minor": "167", "user_agent_string": "BlackBerry9000/4.6.0.167 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/102", "minor": "6", "patch": "0"}, {"major": "9", "family": "Linux Mint", "patch_minor": null, "user_agent_string": "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.8) Gecko/20100723 Linux Mint/9 (Isadora) Firefox/3.6.8", "minor": null, "patch": null}, {"major": "13", "family": "Chrome OS", "patch_minor": null, "user_agent_string": "Mozilla/5.0 (X11; CrOS i686 13.587.80) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.99 Safari/535.1", "minor": "587", "patch": "80"}, {"major": "3", "family": "Red Hat", "patch_minor": null, "user_agent_string": "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072310 Red Hat/3.0.1-3.el4 Firefox/3.0.1,gzip(gfe),gzip(gfe)", "minor": "0", "patch": "1"}, {"major": "3", "family": "Puppy", "patch_minor": null, "user_agent_string": "Mozilla/5.0 ( U; Linux x86_32; en-US; rv:1.0) Gecko/20090723 Puppy/3.6.8-0.1.1 Firefox/3.6.7,gzip(gfe),gzip(gfe)", "minor": "6", "patch": "8"}, {"major": "1", "family": "PCLinuxOS", "patch_minor": "14", "user_agent_string": "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.14) Gecko/20110301 PCLinuxOS/1.9.2.14-1pclos2011 (2011) Firefox/3.6.14,gzip(gfe),gzip(gfe),gzip(gfe)", "minor": "9", "patch": "2"}, {"major": "3", "family": "Fedora", "patch_minor": null, "user_agent_string": "Mozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc9 Firefox/3.0.4", "minor": "0", "patch": "4"}, {"major": null, "family": "CentOS", "patch_minor": null, "user_agent_string": "Mozilla/5.0 (X11; 78; CentOS; US-en) AppleWebKit/527+ (KHTML, like Gecko) Bolt/0.862 Version/3.0 Safari/523.15", "minor": null, "patch": null}, {"major": "6", "family": "BlackBerry OS", "patch_minor": "526", "user_agent_string": "Mozilla/5.0 (BlackBerry; U; BlackBerry 9780; en) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.526 Mobile Safari/534.8+,gzip(gfe),gzip(gfe),gzip(gfe)", "minor": "0", "patch": "0"}, {"major": "1", "family": "Mandriva", "patch_minor": "2", "user_agent_string": "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/20090807 Mandriva Linux/1.9.1.2-1.1mud2009.1 (2009.1) Firefox/3.5.2 FirePHP/0.3,gzip(gfe),gzip(gfe)", "minor": "9", "patch": "1"}, {"major": null, "family": "Slackware", "patch_minor": null, "user_agent_string": "Opera/9.80 (X11; Linux x86_64; U; Slackware; lt) Presto/2.8.131 Version/11.11", "minor": null, "patch": null}, {"major": "7", "family": "Windows Phone OS", "patch_minor": null, "user_agent_string": "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; SAMSUNG; SGH-i917)", "minor": "5", "patch": null}, {"major": null, "family": "Other", "patch_minor": null, "user_agent_string": "", "minor": null, "patch": null}]}
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatter.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | pygments.formatter
3 | ~~~~~~~~~~~~~~~~~~
4 |
5 | Base formatter class.
6 |
7 | :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
8 | :license: BSD, see LICENSE for details.
9 | """
10 |
11 | import codecs
12 |
13 | from pip._vendor.pygments.util import get_bool_opt
14 | from pip._vendor.pygments.styles import get_style_by_name
15 |
16 | __all__ = ['Formatter']
17 |
18 |
19 | def _lookup_style(style):
20 | if isinstance(style, str):
21 | return get_style_by_name(style)
22 | return style
23 |
24 |
25 | class Formatter:
26 | """
27 | Converts a token stream to text.
28 |
29 | Formatters should have attributes to help selecting them. These
30 | are similar to the corresponding :class:`~pygments.lexer.Lexer`
31 | attributes.
32 |
33 | .. autoattribute:: name
34 | :no-value:
35 |
36 | .. autoattribute:: aliases
37 | :no-value:
38 |
39 | .. autoattribute:: filenames
40 | :no-value:
41 |
42 | You can pass options as keyword arguments to the constructor.
43 | All formatters accept these basic options:
44 |
45 | ``style``
46 | The style to use, can be a string or a Style subclass
47 | (default: "default"). Not used by e.g. the
48 | TerminalFormatter.
49 | ``full``
50 | Tells the formatter to output a "full" document, i.e.
51 | a complete self-contained document. This doesn't have
52 | any effect for some formatters (default: false).
53 | ``title``
54 | If ``full`` is true, the title that should be used to
55 | caption the document (default: '').
56 | ``encoding``
57 | If given, must be an encoding name. This will be used to
58 | convert the Unicode token strings to byte strings in the
59 | output. If it is "" or None, Unicode strings will be written
60 | to the output file, which most file-like objects do not
61 | support (default: None).
62 | ``outencoding``
63 | Overrides ``encoding`` if given.
64 |
65 | """
66 |
67 | #: Full name for the formatter, in human-readable form.
68 | name = None
69 |
70 | #: A list of short, unique identifiers that can be used to lookup
71 | #: the formatter from a list, e.g. using :func:`.get_formatter_by_name()`.
72 | aliases = []
73 |
74 | #: A list of fnmatch patterns that match filenames for which this
75 | #: formatter can produce output. The patterns in this list should be unique
76 | #: among all formatters.
77 | filenames = []
78 |
79 | #: If True, this formatter outputs Unicode strings when no encoding
80 | #: option is given.
81 | unicodeoutput = True
82 |
83 | def __init__(self, **options):
84 | """
85 | As with lexers, this constructor takes arbitrary optional arguments,
86 | and if you override it, you should first process your own options, then
87 | call the base class implementation.
88 | """
89 | self.style = _lookup_style(options.get('style', 'default'))
90 | self.full = get_bool_opt(options, 'full', False)
91 | self.title = options.get('title', '')
92 | self.encoding = options.get('encoding', None) or None
93 | if self.encoding in ('guess', 'chardet'):
94 | # can happen for e.g. pygmentize -O encoding=guess
95 | self.encoding = 'utf-8'
96 | self.encoding = options.get('outencoding') or self.encoding
97 | self.options = options
98 |
99 | def get_style_defs(self, arg=''):
100 | """
101 | This method must return statements or declarations suitable to define
102 | the current style for subsequent highlighted text (e.g. CSS classes
103 | in the `HTMLFormatter`).
104 |
105 | The optional argument `arg` can be used to modify the generation and
106 | is formatter dependent (it is standardized because it can be given on
107 | the command line).
108 |
109 | This method is called by the ``-S`` :doc:`command-line option <cmdline>`,
110 | the `arg` is then given by the ``-a`` option.
111 | """
112 | return ''
113 |
114 | def format(self, tokensource, outfile):
115 | """
116 | This method must format the tokens from the `tokensource` iterable and
117 | write the formatted version to the file object `outfile`.
118 |
119 | Formatter options can control how exactly the tokens are converted.
120 | """
121 | if self.encoding:
122 | # wrap the outfile in a StreamWriter
123 | outfile = codecs.lookup(self.encoding)[3](outfile)
124 | return self.format_unencoded(tokensource, outfile)
125 |
126 | # Allow writing Formatter[str] or Formatter[bytes]. That's equivalent to
127 | # Formatter. This helps when using third-party type stubs from typeshed.
128 | def __class_getitem__(cls, name):
129 | return cls
130 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/jinja2/meta.py:
--------------------------------------------------------------------------------
```python
1 | """Functions that expose information about templates that might be
2 | interesting for introspection.
3 | """
4 |
5 | import typing as t
6 |
7 | from . import nodes
8 | from .compiler import CodeGenerator
9 | from .compiler import Frame
10 |
11 | if t.TYPE_CHECKING:
12 | from .environment import Environment
13 |
14 |
15 | class TrackingCodeGenerator(CodeGenerator):
16 | """We abuse the code generator for introspection."""
17 |
18 | def __init__(self, environment: "Environment") -> None:
19 | super().__init__(environment, "<introspection>", "<introspection>")
20 | self.undeclared_identifiers: t.Set[str] = set()
21 |
22 | def write(self, x: str) -> None:
23 | """Don't write."""
24 |
25 | def enter_frame(self, frame: Frame) -> None:
26 | """Remember all undeclared identifiers."""
27 | super().enter_frame(frame)
28 |
29 | for _, (action, param) in frame.symbols.loads.items():
30 | if action == "resolve" and param not in self.environment.globals:
31 | self.undeclared_identifiers.add(param)
32 |
33 |
34 | def find_undeclared_variables(ast: nodes.Template) -> t.Set[str]:
35 | """Returns a set of all variables in the AST that will be looked up from
36 | the context at runtime. Because at compile time it's not known which
37 | variables will be used depending on the path the execution takes at
38 | runtime, all variables are returned.
39 |
40 | >>> from jinja2 import Environment, meta
41 | >>> env = Environment()
42 | >>> ast = env.parse('{% set foo = 42 %}{{ bar + foo }}')
43 | >>> meta.find_undeclared_variables(ast) == {'bar'}
44 | True
45 |
46 | .. admonition:: Implementation
47 |
48 | Internally the code generator is used for finding undeclared variables.
49 | This is good to know because the code generator might raise a
50 | :exc:`TemplateAssertionError` during compilation and as a matter of
51 | fact this function can currently raise that exception as well.
52 | """
53 | codegen = TrackingCodeGenerator(ast.environment) # type: ignore
54 | codegen.visit(ast)
55 | return codegen.undeclared_identifiers
56 |
57 |
58 | _ref_types = (nodes.Extends, nodes.FromImport, nodes.Import, nodes.Include)
59 | _RefType = t.Union[nodes.Extends, nodes.FromImport, nodes.Import, nodes.Include]
60 |
61 |
62 | def find_referenced_templates(ast: nodes.Template) -> t.Iterator[t.Optional[str]]:
63 | """Finds all the referenced templates from the AST. This will return an
64 | iterator over all the hardcoded template extensions, inclusions and
65 | imports. If dynamic inheritance or inclusion is used, `None` will be
66 | yielded.
67 |
68 | >>> from jinja2 import Environment, meta
69 | >>> env = Environment()
70 | >>> ast = env.parse('{% extends "layout.html" %}{% include helper %}')
71 | >>> list(meta.find_referenced_templates(ast))
72 | ['layout.html', None]
73 |
74 | This function is useful for dependency tracking. For example if you want
75 | to rebuild parts of the website after a layout template has changed.
76 | """
77 | template_name: t.Any
78 |
79 | for node in ast.find_all(_ref_types):
80 | template: nodes.Expr = node.template # type: ignore
81 |
82 | if not isinstance(template, nodes.Const):
83 | # a tuple with some non consts in there
84 | if isinstance(template, (nodes.Tuple, nodes.List)):
85 | for template_name in template.items:
86 | # something const, only yield the strings and ignore
87 | # non-string consts that really just make no sense
88 | if isinstance(template_name, nodes.Const):
89 | if isinstance(template_name.value, str):
90 | yield template_name.value
91 | # something dynamic in there
92 | else:
93 | yield None
94 | # something dynamic we don't know about here
95 | else:
96 | yield None
97 | continue
98 | # constant is a basestring, direct template name
99 | if isinstance(template.value, str):
100 | yield template.value
101 | # a tuple or list (latter *should* not happen) made of consts,
102 | # yield the consts that are strings. We could warn here for
103 | # non string values
104 | elif isinstance(node, nodes.Include) and isinstance(
105 | template.value, (tuple, list)
106 | ):
107 | for template_name in template.value:
108 | if isinstance(template_name, str):
109 | yield template_name
110 | # something else we don't care about, we could warn here
111 | else:
112 | yield None
113 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxml/SAX.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: Old SAX version 1 handler, deprecated
3 | * Description: DEPRECATED set of SAX version 1 interfaces used to
4 | * build the DOM tree.
5 | *
6 | * Copy: See Copyright for the status of this software.
7 | *
8 | * Author: Daniel Veillard
9 | */
10 |
11 |
12 | #ifndef __XML_SAX_H__
13 | #define __XML_SAX_H__
14 |
15 | #include <libxml/xmlversion.h>
16 | #include <libxml/parser.h>
17 |
18 | #ifdef LIBXML_LEGACY_ENABLED
19 |
20 | #ifdef __cplusplus
21 | extern "C" {
22 | #endif
23 | XML_DEPRECATED
24 | XMLPUBFUN const xmlChar *
25 | getPublicId (void *ctx);
26 | XML_DEPRECATED
27 | XMLPUBFUN const xmlChar *
28 | getSystemId (void *ctx);
29 | XML_DEPRECATED
30 | XMLPUBFUN void
31 | setDocumentLocator (void *ctx,
32 | xmlSAXLocatorPtr loc);
33 |
34 | XML_DEPRECATED
35 | XMLPUBFUN int
36 | getLineNumber (void *ctx);
37 | XML_DEPRECATED
38 | XMLPUBFUN int
39 | getColumnNumber (void *ctx);
40 |
41 | XML_DEPRECATED
42 | XMLPUBFUN int
43 | isStandalone (void *ctx);
44 | XML_DEPRECATED
45 | XMLPUBFUN int
46 | hasInternalSubset (void *ctx);
47 | XML_DEPRECATED
48 | XMLPUBFUN int
49 | hasExternalSubset (void *ctx);
50 |
51 | XML_DEPRECATED
52 | XMLPUBFUN void
53 | internalSubset (void *ctx,
54 | const xmlChar *name,
55 | const xmlChar *ExternalID,
56 | const xmlChar *SystemID);
57 | XML_DEPRECATED
58 | XMLPUBFUN void
59 | externalSubset (void *ctx,
60 | const xmlChar *name,
61 | const xmlChar *ExternalID,
62 | const xmlChar *SystemID);
63 | XML_DEPRECATED
64 | XMLPUBFUN xmlEntityPtr
65 | getEntity (void *ctx,
66 | const xmlChar *name);
67 | XML_DEPRECATED
68 | XMLPUBFUN xmlEntityPtr
69 | getParameterEntity (void *ctx,
70 | const xmlChar *name);
71 | XML_DEPRECATED
72 | XMLPUBFUN xmlParserInputPtr
73 | resolveEntity (void *ctx,
74 | const xmlChar *publicId,
75 | const xmlChar *systemId);
76 |
77 | XML_DEPRECATED
78 | XMLPUBFUN void
79 | entityDecl (void *ctx,
80 | const xmlChar *name,
81 | int type,
82 | const xmlChar *publicId,
83 | const xmlChar *systemId,
84 | xmlChar *content);
85 | XML_DEPRECATED
86 | XMLPUBFUN void
87 | attributeDecl (void *ctx,
88 | const xmlChar *elem,
89 | const xmlChar *fullname,
90 | int type,
91 | int def,
92 | const xmlChar *defaultValue,
93 | xmlEnumerationPtr tree);
94 | XML_DEPRECATED
95 | XMLPUBFUN void
96 | elementDecl (void *ctx,
97 | const xmlChar *name,
98 | int type,
99 | xmlElementContentPtr content);
100 | XML_DEPRECATED
101 | XMLPUBFUN void
102 | notationDecl (void *ctx,
103 | const xmlChar *name,
104 | const xmlChar *publicId,
105 | const xmlChar *systemId);
106 | XML_DEPRECATED
107 | XMLPUBFUN void
108 | unparsedEntityDecl (void *ctx,
109 | const xmlChar *name,
110 | const xmlChar *publicId,
111 | const xmlChar *systemId,
112 | const xmlChar *notationName);
113 |
114 | XML_DEPRECATED
115 | XMLPUBFUN void
116 | startDocument (void *ctx);
117 | XML_DEPRECATED
118 | XMLPUBFUN void
119 | endDocument (void *ctx);
120 | XML_DEPRECATED
121 | XMLPUBFUN void
122 | attribute (void *ctx,
123 | const xmlChar *fullname,
124 | const xmlChar *value);
125 | XML_DEPRECATED
126 | XMLPUBFUN void
127 | startElement (void *ctx,
128 | const xmlChar *fullname,
129 | const xmlChar **atts);
130 | XML_DEPRECATED
131 | XMLPUBFUN void
132 | endElement (void *ctx,
133 | const xmlChar *name);
134 | XML_DEPRECATED
135 | XMLPUBFUN void
136 | reference (void *ctx,
137 | const xmlChar *name);
138 | XML_DEPRECATED
139 | XMLPUBFUN void
140 | characters (void *ctx,
141 | const xmlChar *ch,
142 | int len);
143 | XML_DEPRECATED
144 | XMLPUBFUN void
145 | ignorableWhitespace (void *ctx,
146 | const xmlChar *ch,
147 | int len);
148 | XML_DEPRECATED
149 | XMLPUBFUN void
150 | processingInstruction (void *ctx,
151 | const xmlChar *target,
152 | const xmlChar *data);
153 | XML_DEPRECATED
154 | XMLPUBFUN void
155 | globalNamespace (void *ctx,
156 | const xmlChar *href,
157 | const xmlChar *prefix);
158 | XML_DEPRECATED
159 | XMLPUBFUN void
160 | setNamespace (void *ctx,
161 | const xmlChar *name);
162 | XML_DEPRECATED
163 | XMLPUBFUN xmlNsPtr
164 | getNamespace (void *ctx);
165 | XML_DEPRECATED
166 | XMLPUBFUN int
167 | checkNamespace (void *ctx,
168 | xmlChar *nameSpace);
169 | XML_DEPRECATED
170 | XMLPUBFUN void
171 | namespaceDecl (void *ctx,
172 | const xmlChar *href,
173 | const xmlChar *prefix);
174 | XML_DEPRECATED
175 | XMLPUBFUN void
176 | comment (void *ctx,
177 | const xmlChar *value);
178 | XML_DEPRECATED
179 | XMLPUBFUN void
180 | cdataBlock (void *ctx,
181 | const xmlChar *value,
182 | int len);
183 |
184 | #ifdef LIBXML_SAX1_ENABLED
185 | XML_DEPRECATED
186 | XMLPUBFUN void
187 | initxmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr,
188 | int warning);
189 | #ifdef LIBXML_HTML_ENABLED
190 | XML_DEPRECATED
191 | XMLPUBFUN void
192 | inithtmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr);
193 | #endif
194 | #endif /* LIBXML_SAX1_ENABLED */
195 |
196 | #ifdef __cplusplus
197 | }
198 | #endif
199 |
200 | #endif /* LIBXML_LEGACY_ENABLED */
201 |
202 | #endif /* __XML_SAX_H__ */
203 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/urllib3/util/wait.py:
--------------------------------------------------------------------------------
```python
1 | from __future__ import annotations
2 |
3 | import select
4 | import socket
5 | from functools import partial
6 |
7 | __all__ = ["wait_for_read", "wait_for_write"]
8 |
9 |
10 | # How should we wait on sockets?
11 | #
12 | # There are two types of APIs you can use for waiting on sockets: the fancy
13 | # modern stateful APIs like epoll/kqueue, and the older stateless APIs like
14 | # select/poll. The stateful APIs are more efficient when you have a lots of
15 | # sockets to keep track of, because you can set them up once and then use them
16 | # lots of times. But we only ever want to wait on a single socket at a time
17 | # and don't want to keep track of state, so the stateless APIs are actually
18 | # more efficient. So we want to use select() or poll().
19 | #
20 | # Now, how do we choose between select() and poll()? On traditional Unixes,
21 | # select() has a strange calling convention that makes it slow, or fail
22 | # altogether, for high-numbered file descriptors. The point of poll() is to fix
23 | # that, so on Unixes, we prefer poll().
24 | #
25 | # On Windows, there is no poll() (or at least Python doesn't provide a wrapper
26 | # for it), but that's OK, because on Windows, select() doesn't have this
27 | # strange calling convention; plain select() works fine.
28 | #
29 | # So: on Windows we use select(), and everywhere else we use poll(). We also
30 | # fall back to select() in case poll() is somehow broken or missing.
31 |
32 |
33 | def select_wait_for_socket(
34 | sock: socket.socket,
35 | read: bool = False,
36 | write: bool = False,
37 | timeout: float | None = None,
38 | ) -> bool:
39 | if not read and not write:
40 | raise RuntimeError("must specify at least one of read=True, write=True")
41 | rcheck = []
42 | wcheck = []
43 | if read:
44 | rcheck.append(sock)
45 | if write:
46 | wcheck.append(sock)
47 | # When doing a non-blocking connect, most systems signal success by
48 | # marking the socket writable. Windows, though, signals success by marked
49 | # it as "exceptional". We paper over the difference by checking the write
50 | # sockets for both conditions. (The stdlib selectors module does the same
51 | # thing.)
52 | fn = partial(select.select, rcheck, wcheck, wcheck)
53 | rready, wready, xready = fn(timeout)
54 | return bool(rready or wready or xready)
55 |
56 |
57 | def poll_wait_for_socket(
58 | sock: socket.socket,
59 | read: bool = False,
60 | write: bool = False,
61 | timeout: float | None = None,
62 | ) -> bool:
63 | if not read and not write:
64 | raise RuntimeError("must specify at least one of read=True, write=True")
65 | mask = 0
66 | if read:
67 | mask |= select.POLLIN
68 | if write:
69 | mask |= select.POLLOUT
70 | poll_obj = select.poll()
71 | poll_obj.register(sock, mask)
72 |
73 | # For some reason, poll() takes timeout in milliseconds
74 | def do_poll(t: float | None) -> list[tuple[int, int]]:
75 | if t is not None:
76 | t *= 1000
77 | return poll_obj.poll(t)
78 |
79 | return bool(do_poll(timeout))
80 |
81 |
82 | def _have_working_poll() -> bool:
83 | # Apparently some systems have a select.poll that fails as soon as you try
84 | # to use it, either due to strange configuration or broken monkeypatching
85 | # from libraries like eventlet/greenlet.
86 | try:
87 | poll_obj = select.poll()
88 | poll_obj.poll(0)
89 | except (AttributeError, OSError):
90 | return False
91 | else:
92 | return True
93 |
94 |
95 | def wait_for_socket(
96 | sock: socket.socket,
97 | read: bool = False,
98 | write: bool = False,
99 | timeout: float | None = None,
100 | ) -> bool:
101 | # We delay choosing which implementation to use until the first time we're
102 | # called. We could do it at import time, but then we might make the wrong
103 | # decision if someone goes wild with monkeypatching select.poll after
104 | # we're imported.
105 | global wait_for_socket
106 | if _have_working_poll():
107 | wait_for_socket = poll_wait_for_socket
108 | elif hasattr(select, "select"):
109 | wait_for_socket = select_wait_for_socket
110 | return wait_for_socket(sock, read, write, timeout)
111 |
112 |
113 | def wait_for_read(sock: socket.socket, timeout: float | None = None) -> bool:
114 | """Waits for reading to be available on a given socket.
115 | Returns True if the socket is readable, or False if the timeout expired.
116 | """
117 | return wait_for_socket(sock, read=True, timeout=timeout)
118 |
119 |
120 | def wait_for_write(sock: socket.socket, timeout: float | None = None) -> bool:
121 | """Waits for writing to be available on a given socket.
122 | Returns True if the socket is readable, or False if the timeout expired.
123 | """
124 | return wait_for_socket(sock, write=True, timeout=timeout)
125 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/rich/status.py:
--------------------------------------------------------------------------------
```python
1 | from types import TracebackType
2 | from typing import Optional, Type
3 |
4 | from .console import Console, RenderableType
5 | from .jupyter import JupyterMixin
6 | from .live import Live
7 | from .spinner import Spinner
8 | from .style import StyleType
9 |
10 |
11 | class Status(JupyterMixin):
12 | """Displays a status indicator with a 'spinner' animation.
13 |
14 | Args:
15 | status (RenderableType): A status renderable (str or Text typically).
16 | console (Console, optional): Console instance to use, or None for global console. Defaults to None.
17 | spinner (str, optional): Name of spinner animation (see python -m rich.spinner). Defaults to "dots".
18 | spinner_style (StyleType, optional): Style of spinner. Defaults to "status.spinner".
19 | speed (float, optional): Speed factor for spinner animation. Defaults to 1.0.
20 | refresh_per_second (float, optional): Number of refreshes per second. Defaults to 12.5.
21 | """
22 |
23 | def __init__(
24 | self,
25 | status: RenderableType,
26 | *,
27 | console: Optional[Console] = None,
28 | spinner: str = "dots",
29 | spinner_style: StyleType = "status.spinner",
30 | speed: float = 1.0,
31 | refresh_per_second: float = 12.5,
32 | ):
33 | self.status = status
34 | self.spinner_style = spinner_style
35 | self.speed = speed
36 | self._spinner = Spinner(spinner, text=status, style=spinner_style, speed=speed)
37 | self._live = Live(
38 | self.renderable,
39 | console=console,
40 | refresh_per_second=refresh_per_second,
41 | transient=True,
42 | )
43 |
44 | @property
45 | def renderable(self) -> Spinner:
46 | return self._spinner
47 |
48 | @property
49 | def console(self) -> "Console":
50 | """Get the Console used by the Status objects."""
51 | return self._live.console
52 |
53 | def update(
54 | self,
55 | status: Optional[RenderableType] = None,
56 | *,
57 | spinner: Optional[str] = None,
58 | spinner_style: Optional[StyleType] = None,
59 | speed: Optional[float] = None,
60 | ) -> None:
61 | """Update status.
62 |
63 | Args:
64 | status (Optional[RenderableType], optional): New status renderable or None for no change. Defaults to None.
65 | spinner (Optional[str], optional): New spinner or None for no change. Defaults to None.
66 | spinner_style (Optional[StyleType], optional): New spinner style or None for no change. Defaults to None.
67 | speed (Optional[float], optional): Speed factor for spinner animation or None for no change. Defaults to None.
68 | """
69 | if status is not None:
70 | self.status = status
71 | if spinner_style is not None:
72 | self.spinner_style = spinner_style
73 | if speed is not None:
74 | self.speed = speed
75 | if spinner is not None:
76 | self._spinner = Spinner(
77 | spinner, text=self.status, style=self.spinner_style, speed=self.speed
78 | )
79 | self._live.update(self.renderable, refresh=True)
80 | else:
81 | self._spinner.update(
82 | text=self.status, style=self.spinner_style, speed=self.speed
83 | )
84 |
85 | def start(self) -> None:
86 | """Start the status animation."""
87 | self._live.start()
88 |
89 | def stop(self) -> None:
90 | """Stop the spinner animation."""
91 | self._live.stop()
92 |
93 | def __rich__(self) -> RenderableType:
94 | return self.renderable
95 |
96 | def __enter__(self) -> "Status":
97 | self.start()
98 | return self
99 |
100 | def __exit__(
101 | self,
102 | exc_type: Optional[Type[BaseException]],
103 | exc_val: Optional[BaseException],
104 | exc_tb: Optional[TracebackType],
105 | ) -> None:
106 | self.stop()
107 |
108 |
109 | if __name__ == "__main__": # pragma: no cover
110 | from time import sleep
111 |
112 | from .console import Console
113 |
114 | console = Console()
115 | with console.status("[magenta]Covid detector booting up") as status:
116 | sleep(3)
117 | console.log("Importing advanced AI")
118 | sleep(3)
119 | console.log("Advanced Covid AI Ready")
120 | sleep(3)
121 | status.update(status="[bold blue] Scanning for Covid", spinner="earth")
122 | sleep(3)
123 | console.log("Found 10,000,000,000 copies of Covid32.exe")
124 | sleep(3)
125 | status.update(
126 | status="[bold red]Moving Covid32.exe to Trash",
127 | spinner="bouncingBall",
128 | spinner_style="yellow",
129 | )
130 | sleep(5)
131 | console.print("[bold green]Covid deleted successfully")
132 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/certifi/core.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | certifi.py
3 | ~~~~~~~~~~
4 |
5 | This module returns the installation location of cacert.pem or its contents.
6 | """
7 | import sys
8 | import atexit
9 |
10 | def exit_cacert_ctx() -> None:
11 | _CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr]
12 |
13 |
14 | if sys.version_info >= (3, 11):
15 |
16 | from importlib.resources import as_file, files
17 |
18 | _CACERT_CTX = None
19 | _CACERT_PATH = None
20 |
21 | def where() -> str:
22 | # This is slightly terrible, but we want to delay extracting the file
23 | # in cases where we're inside of a zipimport situation until someone
24 | # actually calls where(), but we don't want to re-extract the file
25 | # on every call of where(), so we'll do it once then store it in a
26 | # global variable.
27 | global _CACERT_CTX
28 | global _CACERT_PATH
29 | if _CACERT_PATH is None:
30 | # This is slightly janky, the importlib.resources API wants you to
31 | # manage the cleanup of this file, so it doesn't actually return a
32 | # path, it returns a context manager that will give you the path
33 | # when you enter it and will do any cleanup when you leave it. In
34 | # the common case of not needing a temporary file, it will just
35 | # return the file system location and the __exit__() is a no-op.
36 | #
37 | # We also have to hold onto the actual context manager, because
38 | # it will do the cleanup whenever it gets garbage collected, so
39 | # we will also store that at the global level as well.
40 | _CACERT_CTX = as_file(files("certifi").joinpath("cacert.pem"))
41 | _CACERT_PATH = str(_CACERT_CTX.__enter__())
42 | atexit.register(exit_cacert_ctx)
43 |
44 | return _CACERT_PATH
45 |
46 | def contents() -> str:
47 | return files("certifi").joinpath("cacert.pem").read_text(encoding="ascii")
48 |
49 | elif sys.version_info >= (3, 7):
50 |
51 | from importlib.resources import path as get_path, read_text
52 |
53 | _CACERT_CTX = None
54 | _CACERT_PATH = None
55 |
56 | def where() -> str:
57 | # This is slightly terrible, but we want to delay extracting the
58 | # file in cases where we're inside of a zipimport situation until
59 | # someone actually calls where(), but we don't want to re-extract
60 | # the file on every call of where(), so we'll do it once then store
61 | # it in a global variable.
62 | global _CACERT_CTX
63 | global _CACERT_PATH
64 | if _CACERT_PATH is None:
65 | # This is slightly janky, the importlib.resources API wants you
66 | # to manage the cleanup of this file, so it doesn't actually
67 | # return a path, it returns a context manager that will give
68 | # you the path when you enter it and will do any cleanup when
69 | # you leave it. In the common case of not needing a temporary
70 | # file, it will just return the file system location and the
71 | # __exit__() is a no-op.
72 | #
73 | # We also have to hold onto the actual context manager, because
74 | # it will do the cleanup whenever it gets garbage collected, so
75 | # we will also store that at the global level as well.
76 | _CACERT_CTX = get_path("certifi", "cacert.pem")
77 | _CACERT_PATH = str(_CACERT_CTX.__enter__())
78 | atexit.register(exit_cacert_ctx)
79 |
80 | return _CACERT_PATH
81 |
82 | def contents() -> str:
83 | return read_text("certifi", "cacert.pem", encoding="ascii")
84 |
85 | else:
86 | import os
87 | import types
88 | from typing import Union
89 |
90 | Package = Union[types.ModuleType, str]
91 | Resource = Union[str, "os.PathLike"]
92 |
93 | # This fallback will work for Python versions prior to 3.7 that lack the
94 | # importlib.resources module but relies on the existing `where` function
95 | # so won't address issues with environments like PyOxidizer that don't set
96 | # __file__ on modules.
97 | def read_text(
98 | package: Package,
99 | resource: Resource,
100 | encoding: str = 'utf-8',
101 | errors: str = 'strict'
102 | ) -> str:
103 | with open(where(), encoding=encoding) as data:
104 | return data.read()
105 |
106 | # If we don't have importlib.resources, then we will just do the old logic
107 | # of assuming we're on the filesystem and munge the path directly.
108 | def where() -> str:
109 | f = os.path.dirname(__file__)
110 |
111 | return os.path.join(f, "cacert.pem")
112 |
113 | def contents() -> str:
114 | return read_text("certifi", "cacert.pem", encoding="ascii")
115 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/flask/blueprints.py:
--------------------------------------------------------------------------------
```python
1 | from __future__ import annotations
2 |
3 | import os
4 | import typing as t
5 | from datetime import timedelta
6 |
7 | from .cli import AppGroup
8 | from .globals import current_app
9 | from .helpers import send_from_directory
10 | from .sansio.blueprints import Blueprint as SansioBlueprint
11 | from .sansio.blueprints import BlueprintSetupState as BlueprintSetupState # noqa
12 | from .sansio.scaffold import _sentinel
13 |
14 | if t.TYPE_CHECKING: # pragma: no cover
15 | from .wrappers import Response
16 |
17 |
18 | class Blueprint(SansioBlueprint):
19 | def __init__(
20 | self,
21 | name: str,
22 | import_name: str,
23 | static_folder: str | os.PathLike[str] | None = None,
24 | static_url_path: str | None = None,
25 | template_folder: str | os.PathLike[str] | None = None,
26 | url_prefix: str | None = None,
27 | subdomain: str | None = None,
28 | url_defaults: dict[str, t.Any] | None = None,
29 | root_path: str | None = None,
30 | cli_group: str | None = _sentinel, # type: ignore
31 | ) -> None:
32 | super().__init__(
33 | name,
34 | import_name,
35 | static_folder,
36 | static_url_path,
37 | template_folder,
38 | url_prefix,
39 | subdomain,
40 | url_defaults,
41 | root_path,
42 | cli_group,
43 | )
44 |
45 | #: The Click command group for registering CLI commands for this
46 | #: object. The commands are available from the ``flask`` command
47 | #: once the application has been discovered and blueprints have
48 | #: been registered.
49 | self.cli = AppGroup()
50 |
51 | # Set the name of the Click group in case someone wants to add
52 | # the app's commands to another CLI tool.
53 | self.cli.name = self.name
54 |
55 | def get_send_file_max_age(self, filename: str | None) -> int | None:
56 | """Used by :func:`send_file` to determine the ``max_age`` cache
57 | value for a given file path if it wasn't passed.
58 |
59 | By default, this returns :data:`SEND_FILE_MAX_AGE_DEFAULT` from
60 | the configuration of :data:`~flask.current_app`. This defaults
61 | to ``None``, which tells the browser to use conditional requests
62 | instead of a timed cache, which is usually preferable.
63 |
64 | Note this is a duplicate of the same method in the Flask
65 | class.
66 |
67 | .. versionchanged:: 2.0
68 | The default configuration is ``None`` instead of 12 hours.
69 |
70 | .. versionadded:: 0.9
71 | """
72 | value = current_app.config["SEND_FILE_MAX_AGE_DEFAULT"]
73 |
74 | if value is None:
75 | return None
76 |
77 | if isinstance(value, timedelta):
78 | return int(value.total_seconds())
79 |
80 | return value # type: ignore[no-any-return]
81 |
82 | def send_static_file(self, filename: str) -> Response:
83 | """The view function used to serve files from
84 | :attr:`static_folder`. A route is automatically registered for
85 | this view at :attr:`static_url_path` if :attr:`static_folder` is
86 | set.
87 |
88 | Note this is a duplicate of the same method in the Flask
89 | class.
90 |
91 | .. versionadded:: 0.5
92 |
93 | """
94 | if not self.has_static_folder:
95 | raise RuntimeError("'static_folder' must be set to serve static_files.")
96 |
97 | # send_file only knows to call get_send_file_max_age on the app,
98 | # call it here so it works for blueprints too.
99 | max_age = self.get_send_file_max_age(filename)
100 | return send_from_directory(
101 | t.cast(str, self.static_folder), filename, max_age=max_age
102 | )
103 |
104 | def open_resource(self, resource: str, mode: str = "rb") -> t.IO[t.AnyStr]:
105 | """Open a resource file relative to :attr:`root_path` for
106 | reading.
107 |
108 | For example, if the file ``schema.sql`` is next to the file
109 | ``app.py`` where the ``Flask`` app is defined, it can be opened
110 | with:
111 |
112 | .. code-block:: python
113 |
114 | with app.open_resource("schema.sql") as f:
115 | conn.executescript(f.read())
116 |
117 | :param resource: Path to the resource relative to
118 | :attr:`root_path`.
119 | :param mode: Open the file in this mode. Only reading is
120 | supported, valid values are "r" (or "rt") and "rb".
121 |
122 | Note this is a duplicate of the same method in the Flask
123 | class.
124 |
125 | """
126 | if mode not in {"r", "rt", "rb"}:
127 | raise ValueError("Resources can only be opened for reading.")
128 |
129 | return open(os.path.join(self.root_path, resource), mode)
130 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxml/SAX2.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: SAX2 parser interface used to build the DOM tree
3 | * Description: those are the default SAX2 interfaces used by
4 | * the library when building DOM tree.
5 | *
6 | * Copy: See Copyright for the status of this software.
7 | *
8 | * Author: Daniel Veillard
9 | */
10 |
11 |
12 | #ifndef __XML_SAX2_H__
13 | #define __XML_SAX2_H__
14 |
15 | #include <libxml/xmlversion.h>
16 | #include <libxml/parser.h>
17 |
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 | XMLPUBFUN const xmlChar *
22 | xmlSAX2GetPublicId (void *ctx);
23 | XMLPUBFUN const xmlChar *
24 | xmlSAX2GetSystemId (void *ctx);
25 | XMLPUBFUN void
26 | xmlSAX2SetDocumentLocator (void *ctx,
27 | xmlSAXLocatorPtr loc);
28 |
29 | XMLPUBFUN int
30 | xmlSAX2GetLineNumber (void *ctx);
31 | XMLPUBFUN int
32 | xmlSAX2GetColumnNumber (void *ctx);
33 |
34 | XMLPUBFUN int
35 | xmlSAX2IsStandalone (void *ctx);
36 | XMLPUBFUN int
37 | xmlSAX2HasInternalSubset (void *ctx);
38 | XMLPUBFUN int
39 | xmlSAX2HasExternalSubset (void *ctx);
40 |
41 | XMLPUBFUN void
42 | xmlSAX2InternalSubset (void *ctx,
43 | const xmlChar *name,
44 | const xmlChar *ExternalID,
45 | const xmlChar *SystemID);
46 | XMLPUBFUN void
47 | xmlSAX2ExternalSubset (void *ctx,
48 | const xmlChar *name,
49 | const xmlChar *ExternalID,
50 | const xmlChar *SystemID);
51 | XMLPUBFUN xmlEntityPtr
52 | xmlSAX2GetEntity (void *ctx,
53 | const xmlChar *name);
54 | XMLPUBFUN xmlEntityPtr
55 | xmlSAX2GetParameterEntity (void *ctx,
56 | const xmlChar *name);
57 | XMLPUBFUN xmlParserInputPtr
58 | xmlSAX2ResolveEntity (void *ctx,
59 | const xmlChar *publicId,
60 | const xmlChar *systemId);
61 |
62 | XMLPUBFUN void
63 | xmlSAX2EntityDecl (void *ctx,
64 | const xmlChar *name,
65 | int type,
66 | const xmlChar *publicId,
67 | const xmlChar *systemId,
68 | xmlChar *content);
69 | XMLPUBFUN void
70 | xmlSAX2AttributeDecl (void *ctx,
71 | const xmlChar *elem,
72 | const xmlChar *fullname,
73 | int type,
74 | int def,
75 | const xmlChar *defaultValue,
76 | xmlEnumerationPtr tree);
77 | XMLPUBFUN void
78 | xmlSAX2ElementDecl (void *ctx,
79 | const xmlChar *name,
80 | int type,
81 | xmlElementContentPtr content);
82 | XMLPUBFUN void
83 | xmlSAX2NotationDecl (void *ctx,
84 | const xmlChar *name,
85 | const xmlChar *publicId,
86 | const xmlChar *systemId);
87 | XMLPUBFUN void
88 | xmlSAX2UnparsedEntityDecl (void *ctx,
89 | const xmlChar *name,
90 | const xmlChar *publicId,
91 | const xmlChar *systemId,
92 | const xmlChar *notationName);
93 |
94 | XMLPUBFUN void
95 | xmlSAX2StartDocument (void *ctx);
96 | XMLPUBFUN void
97 | xmlSAX2EndDocument (void *ctx);
98 | #if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
99 | defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_LEGACY_ENABLED)
100 | XMLPUBFUN void
101 | xmlSAX2StartElement (void *ctx,
102 | const xmlChar *fullname,
103 | const xmlChar **atts);
104 | XMLPUBFUN void
105 | xmlSAX2EndElement (void *ctx,
106 | const xmlChar *name);
107 | #endif /* LIBXML_SAX1_ENABLED or LIBXML_HTML_ENABLED or LIBXML_LEGACY_ENABLED */
108 | XMLPUBFUN void
109 | xmlSAX2StartElementNs (void *ctx,
110 | const xmlChar *localname,
111 | const xmlChar *prefix,
112 | const xmlChar *URI,
113 | int nb_namespaces,
114 | const xmlChar **namespaces,
115 | int nb_attributes,
116 | int nb_defaulted,
117 | const xmlChar **attributes);
118 | XMLPUBFUN void
119 | xmlSAX2EndElementNs (void *ctx,
120 | const xmlChar *localname,
121 | const xmlChar *prefix,
122 | const xmlChar *URI);
123 | XMLPUBFUN void
124 | xmlSAX2Reference (void *ctx,
125 | const xmlChar *name);
126 | XMLPUBFUN void
127 | xmlSAX2Characters (void *ctx,
128 | const xmlChar *ch,
129 | int len);
130 | XMLPUBFUN void
131 | xmlSAX2IgnorableWhitespace (void *ctx,
132 | const xmlChar *ch,
133 | int len);
134 | XMLPUBFUN void
135 | xmlSAX2ProcessingInstruction (void *ctx,
136 | const xmlChar *target,
137 | const xmlChar *data);
138 | XMLPUBFUN void
139 | xmlSAX2Comment (void *ctx,
140 | const xmlChar *value);
141 | XMLPUBFUN void
142 | xmlSAX2CDataBlock (void *ctx,
143 | const xmlChar *value,
144 | int len);
145 |
146 | #ifdef LIBXML_SAX1_ENABLED
147 | XML_DEPRECATED
148 | XMLPUBFUN int
149 | xmlSAXDefaultVersion (int version);
150 | #endif /* LIBXML_SAX1_ENABLED */
151 |
152 | XMLPUBFUN int
153 | xmlSAXVersion (xmlSAXHandler *hdlr,
154 | int version);
155 | XMLPUBFUN void
156 | xmlSAX2InitDefaultSAXHandler (xmlSAXHandler *hdlr,
157 | int warning);
158 | #ifdef LIBXML_HTML_ENABLED
159 | XMLPUBFUN void
160 | xmlSAX2InitHtmlDefaultSAXHandler(xmlSAXHandler *hdlr);
161 | XML_DEPRECATED
162 | XMLPUBFUN void
163 | htmlDefaultSAXHandlerInit (void);
164 | #endif
165 | XML_DEPRECATED
166 | XMLPUBFUN void
167 | xmlDefaultSAXHandlerInit (void);
168 | #ifdef __cplusplus
169 | }
170 | #endif
171 | #endif /* __XML_SAX2_H__ */
172 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/rich/repr.py:
--------------------------------------------------------------------------------
```python
1 | import inspect
2 | from functools import partial
3 | from typing import (
4 | Any,
5 | Callable,
6 | Iterable,
7 | List,
8 | Optional,
9 | Tuple,
10 | Type,
11 | TypeVar,
12 | Union,
13 | overload,
14 | )
15 |
16 | T = TypeVar("T")
17 |
18 |
19 | Result = Iterable[Union[Any, Tuple[Any], Tuple[str, Any], Tuple[str, Any, Any]]]
20 | RichReprResult = Result
21 |
22 |
23 | class ReprError(Exception):
24 | """An error occurred when attempting to build a repr."""
25 |
26 |
27 | @overload
28 | def auto(cls: Optional[Type[T]]) -> Type[T]:
29 | ...
30 |
31 |
32 | @overload
33 | def auto(*, angular: bool = False) -> Callable[[Type[T]], Type[T]]:
34 | ...
35 |
36 |
37 | def auto(
38 | cls: Optional[Type[T]] = None, *, angular: Optional[bool] = None
39 | ) -> Union[Type[T], Callable[[Type[T]], Type[T]]]:
40 | """Class decorator to create __repr__ from __rich_repr__"""
41 |
42 | def do_replace(cls: Type[T], angular: Optional[bool] = None) -> Type[T]:
43 | def auto_repr(self: T) -> str:
44 | """Create repr string from __rich_repr__"""
45 | repr_str: List[str] = []
46 | append = repr_str.append
47 |
48 | angular: bool = getattr(self.__rich_repr__, "angular", False) # type: ignore[attr-defined]
49 | for arg in self.__rich_repr__(): # type: ignore[attr-defined]
50 | if isinstance(arg, tuple):
51 | if len(arg) == 1:
52 | append(repr(arg[0]))
53 | else:
54 | key, value, *default = arg
55 | if key is None:
56 | append(repr(value))
57 | else:
58 | if default and default[0] == value:
59 | continue
60 | append(f"{key}={value!r}")
61 | else:
62 | append(repr(arg))
63 | if angular:
64 | return f"<{self.__class__.__name__} {' '.join(repr_str)}>"
65 | else:
66 | return f"{self.__class__.__name__}({', '.join(repr_str)})"
67 |
68 | def auto_rich_repr(self: Type[T]) -> Result:
69 | """Auto generate __rich_rep__ from signature of __init__"""
70 | try:
71 | signature = inspect.signature(self.__init__)
72 | for name, param in signature.parameters.items():
73 | if param.kind == param.POSITIONAL_ONLY:
74 | yield getattr(self, name)
75 | elif param.kind in (
76 | param.POSITIONAL_OR_KEYWORD,
77 | param.KEYWORD_ONLY,
78 | ):
79 | if param.default is param.empty:
80 | yield getattr(self, param.name)
81 | else:
82 | yield param.name, getattr(self, param.name), param.default
83 | except Exception as error:
84 | raise ReprError(
85 | f"Failed to auto generate __rich_repr__; {error}"
86 | ) from None
87 |
88 | if not hasattr(cls, "__rich_repr__"):
89 | auto_rich_repr.__doc__ = "Build a rich repr"
90 | cls.__rich_repr__ = auto_rich_repr # type: ignore[attr-defined]
91 |
92 | auto_repr.__doc__ = "Return repr(self)"
93 | cls.__repr__ = auto_repr # type: ignore[assignment]
94 | if angular is not None:
95 | cls.__rich_repr__.angular = angular # type: ignore[attr-defined]
96 | return cls
97 |
98 | if cls is None:
99 | return partial(do_replace, angular=angular)
100 | else:
101 | return do_replace(cls, angular=angular)
102 |
103 |
104 | @overload
105 | def rich_repr(cls: Optional[Type[T]]) -> Type[T]:
106 | ...
107 |
108 |
109 | @overload
110 | def rich_repr(*, angular: bool = False) -> Callable[[Type[T]], Type[T]]:
111 | ...
112 |
113 |
114 | def rich_repr(
115 | cls: Optional[Type[T]] = None, *, angular: bool = False
116 | ) -> Union[Type[T], Callable[[Type[T]], Type[T]]]:
117 | if cls is None:
118 | return auto(angular=angular)
119 | else:
120 | return auto(cls)
121 |
122 |
123 | if __name__ == "__main__":
124 |
125 | @auto
126 | class Foo:
127 | def __rich_repr__(self) -> Result:
128 | yield "foo"
129 | yield "bar", {"shopping": ["eggs", "ham", "pineapple"]}
130 | yield "buy", "hand sanitizer"
131 |
132 | foo = Foo()
133 | from pip._vendor.rich.console import Console
134 |
135 | console = Console()
136 |
137 | console.rule("Standard repr")
138 | console.print(foo)
139 |
140 | console.print(foo, width=60)
141 | console.print(foo, width=30)
142 |
143 | console.rule("Angular repr")
144 | Foo.__rich_repr__.angular = True # type: ignore[attr-defined]
145 |
146 | console.print(foo)
147 |
148 | console.print(foo, width=60)
149 | console.print(foo, width=30)
150 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/utils/setuptools_build.py:
--------------------------------------------------------------------------------
```python
1 | import sys
2 | import textwrap
3 | from typing import List, Optional, Sequence
4 |
5 | # Shim to wrap setup.py invocation with setuptools
6 | # Note that __file__ is handled via two {!r} *and* %r, to ensure that paths on
7 | # Windows are correctly handled (it should be "C:\\Users" not "C:\Users").
8 | _SETUPTOOLS_SHIM = textwrap.dedent(
9 | """
10 | exec(compile('''
11 | # This is <pip-setuptools-caller> -- a caller that pip uses to run setup.py
12 | #
13 | # - It imports setuptools before invoking setup.py, to enable projects that directly
14 | # import from `distutils.core` to work with newer packaging standards.
15 | # - It provides a clear error message when setuptools is not installed.
16 | # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so
17 | # setuptools doesn't think the script is `-c`. This avoids the following warning:
18 | # manifest_maker: standard file '-c' not found".
19 | # - It generates a shim setup.py, for handling setup.cfg-only projects.
20 | import os, sys, tokenize
21 |
22 | try:
23 | import setuptools
24 | except ImportError as error:
25 | print(
26 | "ERROR: Can not execute `setup.py` since setuptools is not available in "
27 | "the build environment.",
28 | file=sys.stderr,
29 | )
30 | sys.exit(1)
31 |
32 | __file__ = %r
33 | sys.argv[0] = __file__
34 |
35 | if os.path.exists(__file__):
36 | filename = __file__
37 | with tokenize.open(__file__) as f:
38 | setup_py_code = f.read()
39 | else:
40 | filename = "<auto-generated setuptools caller>"
41 | setup_py_code = "from setuptools import setup; setup()"
42 |
43 | exec(compile(setup_py_code, filename, "exec"))
44 | ''' % ({!r},), "<pip-setuptools-caller>", "exec"))
45 | """
46 | ).rstrip()
47 |
48 |
49 | def make_setuptools_shim_args(
50 | setup_py_path: str,
51 | global_options: Optional[Sequence[str]] = None,
52 | no_user_config: bool = False,
53 | unbuffered_output: bool = False,
54 | ) -> List[str]:
55 | """
56 | Get setuptools command arguments with shim wrapped setup file invocation.
57 |
58 | :param setup_py_path: The path to setup.py to be wrapped.
59 | :param global_options: Additional global options.
60 | :param no_user_config: If True, disables personal user configuration.
61 | :param unbuffered_output: If True, adds the unbuffered switch to the
62 | argument list.
63 | """
64 | args = [sys.executable]
65 | if unbuffered_output:
66 | args += ["-u"]
67 | args += ["-c", _SETUPTOOLS_SHIM.format(setup_py_path)]
68 | if global_options:
69 | args += global_options
70 | if no_user_config:
71 | args += ["--no-user-cfg"]
72 | return args
73 |
74 |
75 | def make_setuptools_bdist_wheel_args(
76 | setup_py_path: str,
77 | global_options: Sequence[str],
78 | build_options: Sequence[str],
79 | destination_dir: str,
80 | ) -> List[str]:
81 | # NOTE: Eventually, we'd want to also -S to the flags here, when we're
82 | # isolating. Currently, it breaks Python in virtualenvs, because it
83 | # relies on site.py to find parts of the standard library outside the
84 | # virtualenv.
85 | args = make_setuptools_shim_args(
86 | setup_py_path, global_options=global_options, unbuffered_output=True
87 | )
88 | args += ["bdist_wheel", "-d", destination_dir]
89 | args += build_options
90 | return args
91 |
92 |
93 | def make_setuptools_clean_args(
94 | setup_py_path: str,
95 | global_options: Sequence[str],
96 | ) -> List[str]:
97 | args = make_setuptools_shim_args(
98 | setup_py_path, global_options=global_options, unbuffered_output=True
99 | )
100 | args += ["clean", "--all"]
101 | return args
102 |
103 |
104 | def make_setuptools_develop_args(
105 | setup_py_path: str,
106 | *,
107 | global_options: Sequence[str],
108 | no_user_config: bool,
109 | prefix: Optional[str],
110 | home: Optional[str],
111 | use_user_site: bool,
112 | ) -> List[str]:
113 | assert not (use_user_site and prefix)
114 |
115 | args = make_setuptools_shim_args(
116 | setup_py_path,
117 | global_options=global_options,
118 | no_user_config=no_user_config,
119 | )
120 |
121 | args += ["develop", "--no-deps"]
122 |
123 | if prefix:
124 | args += ["--prefix", prefix]
125 | if home is not None:
126 | args += ["--install-dir", home]
127 |
128 | if use_user_site:
129 | args += ["--user", "--prefix="]
130 |
131 | return args
132 |
133 |
134 | def make_setuptools_egg_info_args(
135 | setup_py_path: str,
136 | egg_info_dir: Optional[str],
137 | no_user_config: bool,
138 | ) -> List[str]:
139 | args = make_setuptools_shim_args(setup_py_path, no_user_config=no_user_config)
140 |
141 | args += ["egg_info"]
142 |
143 | if egg_info_dir:
144 | args += ["--egg-base", egg_info_dir]
145 |
146 | return args
147 |
```