This is page 2 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/abc.py:
--------------------------------------------------------------------------------
```python
1 | from abc import ABC
2 |
3 |
4 | class RichRenderable(ABC):
5 | """An abstract base class for Rich renderables.
6 |
7 | Note that there is no need to extend this class, the intended use is to check if an
8 | object supports the Rich renderable protocol. For example::
9 |
10 | if isinstance(my_object, RichRenderable):
11 | console.print(my_object)
12 |
13 | """
14 |
15 | @classmethod
16 | def __subclasshook__(cls, other: type) -> bool:
17 | """Check if this class supports the rich render protocol."""
18 | return hasattr(other, "__rich_console__") or hasattr(other, "__rich__")
19 |
20 |
21 | if __name__ == "__main__": # pragma: no cover
22 | from pip._vendor.rich.text import Text
23 |
24 | t = Text()
25 | print(isinstance(Text, RichRenderable))
26 | print(isinstance(t, RichRenderable))
27 |
28 | class Foo:
29 | pass
30 |
31 | f = Foo()
32 | print(isinstance(f, RichRenderable))
33 | print(isinstance("", RichRenderable))
34 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/preproc.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: precomputing stylesheets
3 | * Description: this is the compilation phase, where most of the
4 | * stylesheet is "compiled" into faster to use data.
5 | *
6 | * Copy: See Copyright for the status of this software.
7 | *
8 | * Author: Daniel Veillard
9 | */
10 |
11 | #ifndef __XML_XSLT_PRECOMP_H__
12 | #define __XML_XSLT_PRECOMP_H__
13 |
14 | #include <libxml/tree.h>
15 | #include "xsltexports.h"
16 | #include "xsltInternals.h"
17 |
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 |
22 | /*
23 | * Interfaces
24 | */
25 | XSLTPUBVAR const xmlChar *xsltExtMarker;
26 |
27 | XSLTPUBFUN xsltElemPreCompPtr XSLTCALL
28 | xsltDocumentComp (xsltStylesheetPtr style,
29 | xmlNodePtr inst,
30 | xsltTransformFunction function);
31 |
32 | XSLTPUBFUN void XSLTCALL
33 | xsltStylePreCompute (xsltStylesheetPtr style,
34 | xmlNodePtr inst);
35 | XSLTPUBFUN void XSLTCALL
36 | xsltFreeStylePreComps (xsltStylesheetPtr style);
37 |
38 | #ifdef __cplusplus
39 | }
40 | #endif
41 |
42 | #endif /* __XML_XSLT_PRECOMP_H__ */
43 |
44 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/requests/packages.py:
--------------------------------------------------------------------------------
```python
1 | import sys
2 |
3 | from .compat import chardet
4 |
5 | # This code exists for backwards compatibility reasons.
6 | # I don't like it either. Just look the other way. :)
7 |
8 | for package in ("urllib3", "idna"):
9 | locals()[package] = __import__(package)
10 | # This traversal is apparently necessary such that the identities are
11 | # preserved (requests.packages.urllib3.* is urllib3.*)
12 | for mod in list(sys.modules):
13 | if mod == package or mod.startswith(f"{package}."):
14 | sys.modules[f"requests.packages.{mod}"] = sys.modules[mod]
15 |
16 | if chardet is not None:
17 | target = chardet.__name__
18 | for mod in list(sys.modules):
19 | if mod == target or mod.startswith(f"{target}."):
20 | imported_mod = sys.modules[mod]
21 | sys.modules[f"requests.packages.{mod}"] = imported_mod
22 | mod = mod.replace(target, "chardet")
23 | sys.modules[f"requests.packages.{mod}"] = imported_mod
24 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/xsltlocale.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: Locale handling
3 | * Description: Interfaces for locale handling. Needed for language dependent
4 | * sorting.
5 | *
6 | * Copy: See Copyright for the status of this software.
7 | *
8 | * Author: Nick Wellnhofer
9 | */
10 |
11 | #ifndef __XML_XSLTLOCALE_H__
12 | #define __XML_XSLTLOCALE_H__
13 |
14 | #include <libxml/xmlstring.h>
15 | #include "xsltexports.h"
16 |
17 | #ifdef __cplusplus
18 | extern "C" {
19 | #endif
20 |
21 | XSLTPUBFUN void * XSLTCALL
22 | xsltNewLocale (const xmlChar *langName,
23 | int lowerFirst);
24 | XSLTPUBFUN void XSLTCALL
25 | xsltFreeLocale (void *locale);
26 | XSLTPUBFUN xmlChar * XSLTCALL
27 | xsltStrxfrm (void *locale,
28 | const xmlChar *string);
29 | XSLTPUBFUN void XSLTCALL
30 | xsltFreeLocales (void);
31 |
32 | /* Backward compatibility */
33 | typedef void *xsltLocale;
34 | typedef xmlChar xsltLocaleChar;
35 | XSLTPUBFUN int XSLTCALL
36 | xsltLocaleStrcmp (void *locale,
37 | const xmlChar *str1,
38 | const xmlChar *str2);
39 |
40 | #ifdef __cplusplus
41 | }
42 | #endif
43 |
44 | #endif /* __XML_XSLTLOCALE_H__ */
45 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/attributes.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: interface for the XSLT attribute handling
3 | * Description: this module handles the specificities of attribute
4 | * and attribute groups processing.
5 | *
6 | * Copy: See Copyright for the status of this software.
7 | *
8 | * Author: Daniel Veillard
9 | */
10 |
11 | #ifndef __XML_XSLT_ATTRIBUTES_H__
12 | #define __XML_XSLT_ATTRIBUTES_H__
13 |
14 | #include <libxml/tree.h>
15 | #include "xsltexports.h"
16 | #include "xsltInternals.h"
17 |
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 |
22 | XSLTPUBFUN void XSLTCALL
23 | xsltParseStylesheetAttributeSet (xsltStylesheetPtr style,
24 | xmlNodePtr cur);
25 | XSLTPUBFUN void XSLTCALL
26 | xsltFreeAttributeSetsHashes (xsltStylesheetPtr style);
27 | XSLTPUBFUN void XSLTCALL
28 | xsltApplyAttributeSet (xsltTransformContextPtr ctxt,
29 | xmlNodePtr node,
30 | xmlNodePtr inst,
31 | const xmlChar *attributes);
32 | XSLTPUBFUN void XSLTCALL
33 | xsltResolveStylesheetAttributeSet(xsltStylesheetPtr style);
34 | #ifdef __cplusplus
35 | }
36 | #endif
37 |
38 | #endif /* __XML_XSLT_ATTRIBUTES_H__ */
39 |
40 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | This module provides means to detect the App Engine environment.
3 | """
4 |
5 | import os
6 |
7 |
8 | def is_appengine():
9 | return is_local_appengine() or is_prod_appengine()
10 |
11 |
12 | def is_appengine_sandbox():
13 | """Reports if the app is running in the first generation sandbox.
14 |
15 | The second generation runtimes are technically still in a sandbox, but it
16 | is much less restrictive, so generally you shouldn't need to check for it.
17 | see https://cloud.google.com/appengine/docs/standard/runtimes
18 | """
19 | return is_appengine() and os.environ["APPENGINE_RUNTIME"] == "python27"
20 |
21 |
22 | def is_local_appengine():
23 | return "APPENGINE_RUNTIME" in os.environ and os.environ.get(
24 | "SERVER_SOFTWARE", ""
25 | ).startswith("Development/")
26 |
27 |
28 | def is_prod_appengine():
29 | return "APPENGINE_RUNTIME" in os.environ and os.environ.get(
30 | "SERVER_SOFTWARE", ""
31 | ).startswith("Google App Engine/")
32 |
33 |
34 | def is_prod_appengine_mvms():
35 | """Deprecated."""
36 | return False
37 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/rich/diagnose.py:
--------------------------------------------------------------------------------
```python
1 | import os
2 | import platform
3 |
4 | from pip._vendor.rich import inspect
5 | from pip._vendor.rich.console import Console, get_windows_console_features
6 | from pip._vendor.rich.panel import Panel
7 | from pip._vendor.rich.pretty import Pretty
8 |
9 |
10 | def report() -> None: # pragma: no cover
11 | """Print a report to the terminal with debugging information"""
12 | console = Console()
13 | inspect(console)
14 | features = get_windows_console_features()
15 | inspect(features)
16 |
17 | env_names = (
18 | "TERM",
19 | "COLORTERM",
20 | "CLICOLOR",
21 | "NO_COLOR",
22 | "TERM_PROGRAM",
23 | "COLUMNS",
24 | "LINES",
25 | "JUPYTER_COLUMNS",
26 | "JUPYTER_LINES",
27 | "JPY_PARENT_PID",
28 | "VSCODE_VERBOSE_LOGGING",
29 | )
30 | env = {name: os.getenv(name) for name in env_names}
31 | console.print(Panel.fit((Pretty(env)), title="[b]Environment Variables"))
32 |
33 | console.print(f'platform="{platform.system()}"')
34 |
35 |
36 | if __name__ == "__main__": # pragma: no cover
37 | report()
38 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/distro/__init__.py:
--------------------------------------------------------------------------------
```python
1 | from .distro import (
2 | NORMALIZED_DISTRO_ID,
3 | NORMALIZED_LSB_ID,
4 | NORMALIZED_OS_ID,
5 | LinuxDistribution,
6 | __version__,
7 | build_number,
8 | codename,
9 | distro_release_attr,
10 | distro_release_info,
11 | id,
12 | info,
13 | like,
14 | linux_distribution,
15 | lsb_release_attr,
16 | lsb_release_info,
17 | major_version,
18 | minor_version,
19 | name,
20 | os_release_attr,
21 | os_release_info,
22 | uname_attr,
23 | uname_info,
24 | version,
25 | version_parts,
26 | )
27 |
28 | __all__ = [
29 | "NORMALIZED_DISTRO_ID",
30 | "NORMALIZED_LSB_ID",
31 | "NORMALIZED_OS_ID",
32 | "LinuxDistribution",
33 | "build_number",
34 | "codename",
35 | "distro_release_attr",
36 | "distro_release_info",
37 | "id",
38 | "info",
39 | "like",
40 | "linux_distribution",
41 | "lsb_release_attr",
42 | "lsb_release_info",
43 | "major_version",
44 | "minor_version",
45 | "name",
46 | "os_release_attr",
47 | "os_release_info",
48 | "uname_attr",
49 | "uname_info",
50 | "version",
51 | "version_parts",
52 | ]
53 |
54 | __version__ = __version__
55 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxml/xmlexports.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: macros for marking symbols as exportable/importable.
3 | * Description: macros for marking symbols as exportable/importable.
4 | *
5 | * Copy: See Copyright for the status of this software.
6 | */
7 |
8 | #ifndef __XML_EXPORTS_H__
9 | #define __XML_EXPORTS_H__
10 |
11 | /** DOC_DISABLE */
12 | #if defined(_WIN32) || defined(__CYGWIN__)
13 | #ifdef LIBXML_STATIC
14 | #define XMLPUBLIC
15 | #elif defined(IN_LIBXML)
16 | #define XMLPUBLIC __declspec(dllexport)
17 | #else
18 | #define XMLPUBLIC __declspec(dllimport)
19 | #endif
20 | #else /* not Windows */
21 | #define XMLPUBLIC
22 | #endif /* platform switch */
23 | /** DOC_ENABLE */
24 |
25 | /*
26 | * XMLPUBFUN:
27 | *
28 | * Macro which declares an exportable function
29 | */
30 | #define XMLPUBFUN XMLPUBLIC
31 |
32 | /**
33 | * XMLPUBVAR:
34 | *
35 | * Macro which declares an exportable variable
36 | */
37 | #define XMLPUBVAR XMLPUBLIC extern
38 |
39 | /** DOC_DISABLE */
40 | /* Compatibility */
41 | #define XMLCALL
42 | #define XMLCDECL
43 | #if !defined(LIBXML_DLL_IMPORT)
44 | #define LIBXML_DLL_IMPORT XMLPUBVAR
45 | #endif
46 | /** DOC_ENABLE */
47 |
48 | #endif /* __XML_EXPORTS_H__ */
49 |
50 |
51 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/urllib3/util/__init__.py:
--------------------------------------------------------------------------------
```python
1 | # For backwards compatibility, provide imports that used to be here.
2 | from __future__ import annotations
3 |
4 | from .connection import is_connection_dropped
5 | from .request import SKIP_HEADER, SKIPPABLE_HEADERS, make_headers
6 | from .response import is_fp_closed
7 | from .retry import Retry
8 | from .ssl_ import (
9 | ALPN_PROTOCOLS,
10 | IS_PYOPENSSL,
11 | SSLContext,
12 | assert_fingerprint,
13 | create_urllib3_context,
14 | resolve_cert_reqs,
15 | resolve_ssl_version,
16 | ssl_wrap_socket,
17 | )
18 | from .timeout import Timeout
19 | from .url import Url, parse_url
20 | from .wait import wait_for_read, wait_for_write
21 |
22 | __all__ = (
23 | "IS_PYOPENSSL",
24 | "SSLContext",
25 | "ALPN_PROTOCOLS",
26 | "Retry",
27 | "Timeout",
28 | "Url",
29 | "assert_fingerprint",
30 | "create_urllib3_context",
31 | "is_connection_dropped",
32 | "is_fp_closed",
33 | "parse_url",
34 | "make_headers",
35 | "resolve_cert_reqs",
36 | "resolve_ssl_version",
37 | "ssl_wrap_socket",
38 | "wait_for_read",
39 | "wait_for_write",
40 | "SKIP_HEADER",
41 | "SKIPPABLE_HEADERS",
42 | )
43 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/pygments/modeline.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | pygments.modeline
3 | ~~~~~~~~~~~~~~~~~
4 |
5 | A simple modeline parser (based on pymodeline).
6 |
7 | :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
8 | :license: BSD, see LICENSE for details.
9 | """
10 |
11 | import re
12 |
13 | __all__ = ['get_filetype_from_buffer']
14 |
15 |
16 | modeline_re = re.compile(r'''
17 | (?: vi | vim | ex ) (?: [<=>]? \d* )? :
18 | .* (?: ft | filetype | syn | syntax ) = ( [^:\s]+ )
19 | ''', re.VERBOSE)
20 |
21 |
22 | def get_filetype_from_line(l): # noqa: E741
23 | m = modeline_re.search(l)
24 | if m:
25 | return m.group(1)
26 |
27 |
28 | def get_filetype_from_buffer(buf, max_lines=5):
29 | """
30 | Scan the buffer for modelines and return filetype if one is found.
31 | """
32 | lines = buf.splitlines()
33 | for line in lines[-1:-max_lines-1:-1]:
34 | ret = get_filetype_from_line(line)
35 | if ret:
36 | return ret
37 | for i in range(max_lines, -1, -1):
38 | if i < len(lines):
39 | ret = get_filetype_from_line(lines[i])
40 | if ret:
41 | return ret
42 |
43 | return None
44 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/utils/_log.py:
--------------------------------------------------------------------------------
```python
1 | """Customize logging
2 |
3 | Defines custom logger class for the `logger.verbose(...)` method.
4 |
5 | init_logging() must be called before any other modules that call logging.getLogger.
6 | """
7 |
8 | import logging
9 | from typing import Any, cast
10 |
11 | # custom log level for `--verbose` output
12 | # between DEBUG and INFO
13 | VERBOSE = 15
14 |
15 |
16 | class VerboseLogger(logging.Logger):
17 | """Custom Logger, defining a verbose log-level
18 |
19 | VERBOSE is between INFO and DEBUG.
20 | """
21 |
22 | def verbose(self, msg: str, *args: Any, **kwargs: Any) -> None:
23 | return self.log(VERBOSE, msg, *args, **kwargs)
24 |
25 |
26 | def getLogger(name: str) -> VerboseLogger:
27 | """logging.getLogger, but ensures our VerboseLogger class is returned"""
28 | return cast(VerboseLogger, logging.getLogger(name))
29 |
30 |
31 | def init_logging() -> None:
32 | """Register our VerboseLogger and VERBOSE log level.
33 |
34 | Should be called before any calls to getLogger(),
35 | i.e. in pip._internal.__init__
36 | """
37 | logging.setLoggerClass(VerboseLogger)
38 | logging.addLevelName(VERBOSE, "VERBOSE")
39 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/models/index.py:
--------------------------------------------------------------------------------
```python
1 | import urllib.parse
2 |
3 |
4 | class PackageIndex:
5 | """Represents a Package Index and provides easier access to endpoints"""
6 |
7 | __slots__ = ["url", "netloc", "simple_url", "pypi_url", "file_storage_domain"]
8 |
9 | def __init__(self, url: str, file_storage_domain: str) -> None:
10 | super().__init__()
11 | self.url = url
12 | self.netloc = urllib.parse.urlsplit(url).netloc
13 | self.simple_url = self._url_for_path("simple")
14 | self.pypi_url = self._url_for_path("pypi")
15 |
16 | # This is part of a temporary hack used to block installs of PyPI
17 | # packages which depend on external urls only necessary until PyPI can
18 | # block such packages themselves
19 | self.file_storage_domain = file_storage_domain
20 |
21 | def _url_for_path(self, path: str) -> str:
22 | return urllib.parse.urljoin(self.url, path)
23 |
24 |
25 | PyPI = PackageIndex("https://pypi.org/", file_storage_domain="files.pythonhosted.org")
26 | TestPyPI = PackageIndex(
27 | "https://test.pypi.org/", file_storage_domain="test-files.pythonhosted.org"
28 | )
29 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/LICENSE.txt:
--------------------------------------------------------------------------------
```
1 | Copyright 2010 Jason Kirtland
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a
4 | copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included
12 | in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/rich/color_triplet.py:
--------------------------------------------------------------------------------
```python
1 | from typing import NamedTuple, Tuple
2 |
3 |
4 | class ColorTriplet(NamedTuple):
5 | """The red, green, and blue components of a color."""
6 |
7 | red: int
8 | """Red component in 0 to 255 range."""
9 | green: int
10 | """Green component in 0 to 255 range."""
11 | blue: int
12 | """Blue component in 0 to 255 range."""
13 |
14 | @property
15 | def hex(self) -> str:
16 | """get the color triplet in CSS style."""
17 | red, green, blue = self
18 | return f"#{red:02x}{green:02x}{blue:02x}"
19 |
20 | @property
21 | def rgb(self) -> str:
22 | """The color in RGB format.
23 |
24 | Returns:
25 | str: An rgb color, e.g. ``"rgb(100,23,255)"``.
26 | """
27 | red, green, blue = self
28 | return f"rgb({red},{green},{blue})"
29 |
30 | @property
31 | def normalized(self) -> Tuple[float, float, float]:
32 | """Convert components into floats between 0 and 1.
33 |
34 | Returns:
35 | Tuple[float, float, float]: A tuple of three normalized colour components.
36 | """
37 | red, green, blue = self
38 | return red / 255.0, green / 255.0, blue / 255.0
39 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/requests/packages.py:
--------------------------------------------------------------------------------
```python
1 | import sys
2 |
3 | from .compat import chardet
4 |
5 | # This code exists for backwards compatibility reasons.
6 | # I don't like it either. Just look the other way. :)
7 |
8 | for package in ("urllib3", "idna"):
9 | vendored_package = "pip._vendor." + package
10 | locals()[package] = __import__(vendored_package)
11 | # This traversal is apparently necessary such that the identities are
12 | # preserved (requests.packages.urllib3.* is urllib3.*)
13 | for mod in list(sys.modules):
14 | if mod == vendored_package or mod.startswith(vendored_package + '.'):
15 | unprefixed_mod = mod[len("pip._vendor."):]
16 | sys.modules['pip._vendor.requests.packages.' + unprefixed_mod] = sys.modules[mod]
17 |
18 | if chardet is not None:
19 | target = chardet.__name__
20 | for mod in list(sys.modules):
21 | if mod == target or mod.startswith(f"{target}."):
22 | imported_mod = sys.modules[mod]
23 | sys.modules[f"requests.packages.{mod}"] = imported_mod
24 | mod = mod.replace(target, "chardet")
25 | sys.modules[f"requests.packages.{mod}"] = imported_mod
26 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_replace.py:
--------------------------------------------------------------------------------
```python
1 | from typing import Callable, Match, Optional
2 | import re
3 |
4 | from ._emoji_codes import EMOJI
5 |
6 |
7 | _ReStringMatch = Match[str] # regex match object
8 | _ReSubCallable = Callable[[_ReStringMatch], str] # Callable invoked by re.sub
9 | _EmojiSubMethod = Callable[[_ReSubCallable, str], str] # Sub method of a compiled re
10 |
11 |
12 | def _emoji_replace(
13 | text: str,
14 | default_variant: Optional[str] = None,
15 | _emoji_sub: _EmojiSubMethod = re.compile(r"(:(\S*?)(?:(?:\-)(emoji|text))?:)").sub,
16 | ) -> str:
17 | """Replace emoji code in text."""
18 | get_emoji = EMOJI.__getitem__
19 | variants = {"text": "\uFE0E", "emoji": "\uFE0F"}
20 | get_variant = variants.get
21 | default_variant_code = variants.get(default_variant, "") if default_variant else ""
22 |
23 | def do_replace(match: Match[str]) -> str:
24 | emoji_code, emoji_name, variant = match.groups()
25 | try:
26 | return get_emoji(emoji_name.lower()) + get_variant(
27 | variant, default_variant_code
28 | )
29 | except KeyError:
30 | return emoji_code
31 |
32 | return _emoji_sub(do_replace, text)
33 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libexslt/exsltexports.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: macros for marking symbols as exportable/importable.
3 | *
4 | * Copy: See Copyright for the status of this software.
5 | */
6 |
7 | #ifndef __EXSLT_EXPORTS_H__
8 | #define __EXSLT_EXPORTS_H__
9 |
10 | #if defined(_WIN32) || defined(__CYGWIN__)
11 | /** DOC_DISABLE */
12 |
13 | #ifdef LIBEXSLT_STATIC
14 | #define EXSLTPUBLIC
15 | #elif defined(IN_LIBEXSLT)
16 | #define EXSLTPUBLIC __declspec(dllexport)
17 | #else
18 | #define EXSLTPUBLIC __declspec(dllimport)
19 | #endif
20 |
21 | #define EXSLTCALL __cdecl
22 |
23 | /** DOC_ENABLE */
24 | #else /* not Windows */
25 |
26 | /**
27 | * EXSLTPUBLIC:
28 | *
29 | * Macro which declares a public symbol
30 | */
31 | #define EXSLTPUBLIC
32 |
33 | /**
34 | * EXSLTCALL:
35 | *
36 | * Macro which declares the calling convention for exported functions
37 | */
38 | #define EXSLTCALL
39 |
40 | #endif /* platform switch */
41 |
42 | /*
43 | * EXSLTPUBFUN:
44 | *
45 | * Macro which declares an exportable function
46 | */
47 | #define EXSLTPUBFUN EXSLTPUBLIC
48 |
49 | /**
50 | * EXSLTPUBVAR:
51 | *
52 | * Macro which declares an exportable variable
53 | */
54 | #define EXSLTPUBVAR EXSLTPUBLIC extern
55 |
56 | /* Compatibility */
57 | #if !defined(LIBEXSLT_PUBLIC)
58 | #define LIBEXSLT_PUBLIC EXSLTPUBVAR
59 | #endif
60 |
61 | #endif /* __EXSLT_EXPORTS_H__ */
62 |
63 |
64 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__init__.py:
--------------------------------------------------------------------------------
```python
1 | from .exceptions import *
2 | from .ext import ExtType, Timestamp
3 |
4 | import os
5 |
6 |
7 | version = (1, 0, 8)
8 | __version__ = "1.0.8"
9 |
10 |
11 | if os.environ.get("MSGPACK_PUREPYTHON"):
12 | from .fallback import Packer, unpackb, Unpacker
13 | else:
14 | try:
15 | from ._cmsgpack import Packer, unpackb, Unpacker
16 | except ImportError:
17 | from .fallback import Packer, unpackb, Unpacker
18 |
19 |
20 | def pack(o, stream, **kwargs):
21 | """
22 | Pack object `o` and write it to `stream`
23 |
24 | See :class:`Packer` for options.
25 | """
26 | packer = Packer(**kwargs)
27 | stream.write(packer.pack(o))
28 |
29 |
30 | def packb(o, **kwargs):
31 | """
32 | Pack object `o` and return packed bytes
33 |
34 | See :class:`Packer` for options.
35 | """
36 | return Packer(**kwargs).pack(o)
37 |
38 |
39 | def unpack(stream, **kwargs):
40 | """
41 | Unpack an object from `stream`.
42 |
43 | Raises `ExtraData` when `stream` contains extra bytes.
44 | See :class:`Unpacker` for options.
45 | """
46 | data = stream.read()
47 | return unpackb(data, **kwargs)
48 |
49 |
50 | # alias for compatibility to simplejson/marshal/pickle.
51 | load = unpack
52 | loads = unpackb
53 |
54 | dump = pack
55 | dumps = packb
56 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/msgpack/exceptions.py:
--------------------------------------------------------------------------------
```python
1 | class UnpackException(Exception):
2 | """Base class for some exceptions raised while unpacking.
3 |
4 | NOTE: unpack may raise exception other than subclass of
5 | UnpackException. If you want to catch all error, catch
6 | Exception instead.
7 | """
8 |
9 |
10 | class BufferFull(UnpackException):
11 | pass
12 |
13 |
14 | class OutOfData(UnpackException):
15 | pass
16 |
17 |
18 | class FormatError(ValueError, UnpackException):
19 | """Invalid msgpack format"""
20 |
21 |
22 | class StackError(ValueError, UnpackException):
23 | """Too nested"""
24 |
25 |
26 | # Deprecated. Use ValueError instead
27 | UnpackValueError = ValueError
28 |
29 |
30 | class ExtraData(UnpackValueError):
31 | """ExtraData is raised when there is trailing data.
32 |
33 | This exception is raised while only one-shot (not streaming)
34 | unpack.
35 | """
36 |
37 | def __init__(self, unpacked, extra):
38 | self.unpacked = unpacked
39 | self.extra = extra
40 |
41 | def __str__(self):
42 | return "unpack(b) received extra data."
43 |
44 |
45 | # Deprecated. Use Exception instead to catch all exception during packing.
46 | PackException = Exception
47 | PackValueError = ValueError
48 | PackOverflowError = OverflowError
49 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip-24.2.dist-info/LICENSE.txt:
--------------------------------------------------------------------------------
```
1 | Copyright (c) 2008-present The pip developers (see AUTHORS.txt file)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/urllib3-2.2.3.dist-info/licenses/LICENSE.txt:
--------------------------------------------------------------------------------
```
1 | MIT License
2 |
3 | Copyright (c) 2008-2020 Andrey Petrov and contributors.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/bs4/tests/test_builder.py:
--------------------------------------------------------------------------------
```python
1 | import pytest
2 | from unittest.mock import patch
3 | from bs4.builder import DetectsXMLParsedAsHTML
4 |
5 | class TestDetectsXMLParsedAsHTML(object):
6 |
7 | @pytest.mark.parametrize(
8 | "markup,looks_like_xml",
9 | [("No xml declaration", False),
10 | ("<html>obviously HTML</html", False),
11 | ("<?xml ><html>Actually XHTML</html>", False),
12 | ("<?xml> < html>Tricky XHTML</html>", False),
13 | ("<?xml ><no-html-tag>", True),
14 | ]
15 | )
16 | def test_warn_if_markup_looks_like_xml(self, markup, looks_like_xml):
17 | # Test of our ability to guess at whether markup looks XML-ish
18 | # _and_ not HTML-ish.
19 | with patch('bs4.builder.DetectsXMLParsedAsHTML._warn') as mock:
20 | for data in markup, markup.encode('utf8'):
21 | result = DetectsXMLParsedAsHTML.warn_if_markup_looks_like_xml(
22 | data
23 | )
24 | assert result == looks_like_xml
25 | if looks_like_xml:
26 | assert mock.called
27 | else:
28 | assert not mock.called
29 | mock.reset_mock()
30 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/xsltexports.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: macros for marking symbols as exportable/importable.
3 | * Description: macros for marking symbols as exportable/importable.
4 | *
5 | * Copy: See Copyright for the status of this software.
6 | */
7 |
8 | #ifndef __XSLT_EXPORTS_H__
9 | #define __XSLT_EXPORTS_H__
10 |
11 | #if defined(_WIN32) || defined(__CYGWIN__)
12 | /** DOC_DISABLE */
13 |
14 | #ifdef LIBXSLT_STATIC
15 | #define XSLTPUBLIC
16 | #elif defined(IN_LIBXSLT)
17 | #define XSLTPUBLIC __declspec(dllexport)
18 | #else
19 | #define XSLTPUBLIC __declspec(dllimport)
20 | #endif
21 |
22 | #define XSLTCALL __cdecl
23 |
24 | /** DOC_ENABLE */
25 | #else /* not Windows */
26 |
27 | /**
28 | * XSLTPUBLIC:
29 | *
30 | * Macro which declares a public symbol
31 | */
32 | #define XSLTPUBLIC
33 |
34 | /**
35 | * XSLTCALL:
36 | *
37 | * Macro which declares the calling convention for exported functions
38 | */
39 | #define XSLTCALL
40 |
41 | #endif /* platform switch */
42 |
43 | /*
44 | * XSLTPUBFUN:
45 | *
46 | * Macro which declares an exportable function
47 | */
48 | #define XSLTPUBFUN XSLTPUBLIC
49 |
50 | /**
51 | * XSLTPUBVAR:
52 | *
53 | * Macro which declares an exportable variable
54 | */
55 | #define XSLTPUBVAR XSLTPUBLIC extern
56 |
57 | /* Compatibility */
58 | #if !defined(LIBXSLT_PUBLIC)
59 | #define LIBXSLT_PUBLIC XSLTPUBVAR
60 | #endif
61 |
62 | #endif /* __XSLT_EXPORTS_H__ */
63 |
64 |
65 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/bs4/tests/test_docs.py:
--------------------------------------------------------------------------------
```python
1 | "Test harness for doctests."
2 |
3 | # TODO: Pretty sure this isn't used and should be deleted.
4 |
5 | # pylint: disable-msg=E0611,W0142
6 |
7 | __metaclass__ = type
8 | __all__ = [
9 | 'additional_tests',
10 | ]
11 |
12 | import atexit
13 | import doctest
14 | import os
15 | #from pkg_resources import (
16 | # resource_filename, resource_exists, resource_listdir, cleanup_resources)
17 | import unittest
18 |
19 | DOCTEST_FLAGS = (
20 | doctest.ELLIPSIS |
21 | doctest.NORMALIZE_WHITESPACE |
22 | doctest.REPORT_NDIFF)
23 |
24 |
25 | # def additional_tests():
26 | # "Run the doc tests (README.txt and docs/*, if any exist)"
27 | # doctest_files = [
28 | # os.path.abspath(resource_filename('bs4', 'README.txt'))]
29 | # if resource_exists('bs4', 'docs'):
30 | # for name in resource_listdir('bs4', 'docs'):
31 | # if name.endswith('.txt'):
32 | # doctest_files.append(
33 | # os.path.abspath(
34 | # resource_filename('bs4', 'docs/%s' % name)))
35 | # kwargs = dict(module_relative=False, optionflags=DOCTEST_FLAGS)
36 | # atexit.register(cleanup_resources)
37 | # return unittest.TestSuite((
38 | # doctest.DocFileSuite(*doctest_files, **kwargs)))
39 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/_ssl_constants.py:
--------------------------------------------------------------------------------
```python
1 | import ssl
2 | import sys
3 | import typing
4 |
5 | # Hold on to the original class so we can create it consistently
6 | # even if we inject our own SSLContext into the ssl module.
7 | _original_SSLContext = ssl.SSLContext
8 | _original_super_SSLContext = super(_original_SSLContext, _original_SSLContext)
9 |
10 | # CPython is known to be good, but non-CPython implementations
11 | # may implement SSLContext differently so to be safe we don't
12 | # subclass the SSLContext.
13 |
14 | # This is returned by truststore.SSLContext.__class__()
15 | _truststore_SSLContext_dunder_class: typing.Optional[type]
16 |
17 | # This value is the superclass of truststore.SSLContext.
18 | _truststore_SSLContext_super_class: type
19 |
20 | if sys.implementation.name == "cpython":
21 | _truststore_SSLContext_super_class = _original_SSLContext
22 | _truststore_SSLContext_dunder_class = None
23 | else:
24 | _truststore_SSLContext_super_class = object
25 | _truststore_SSLContext_dunder_class = _original_SSLContext
26 |
27 |
28 | def _set_ssl_context_verify_mode(
29 | ssl_context: ssl.SSLContext, verify_mode: ssl.VerifyMode
30 | ) -> None:
31 | _original_super_SSLContext.verify_mode.__set__(ssl_context, verify_mode) # type: ignore[attr-defined]
32 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/commands/help.py:
--------------------------------------------------------------------------------
```python
1 | from optparse import Values
2 | from typing import List
3 |
4 | from pip._internal.cli.base_command import Command
5 | from pip._internal.cli.status_codes import SUCCESS
6 | from pip._internal.exceptions import CommandError
7 |
8 |
9 | class HelpCommand(Command):
10 | """Show help for commands"""
11 |
12 | usage = """
13 | %prog <command>"""
14 | ignore_require_venv = True
15 |
16 | def run(self, options: Values, args: List[str]) -> int:
17 | from pip._internal.commands import (
18 | commands_dict,
19 | create_command,
20 | get_similar_commands,
21 | )
22 |
23 | try:
24 | # 'pip help' with no args is handled by pip.__init__.parseopt()
25 | cmd_name = args[0] # the command we need help for
26 | except IndexError:
27 | return SUCCESS
28 |
29 | if cmd_name not in commands_dict:
30 | guess = get_similar_commands(cmd_name)
31 |
32 | msg = [f'unknown command "{cmd_name}"']
33 | if guess:
34 | msg.append(f'maybe you meant "{guess}"')
35 |
36 | raise CommandError(" - ".join(msg))
37 |
38 | command = create_command(cmd_name)
39 | command.parser.print_help()
40 |
41 | return SUCCESS
42 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxml/xmlmodule.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: dynamic module loading
3 | * Description: basic API for dynamic module loading, used by
4 | * libexslt added in 2.6.17
5 | *
6 | * Copy: See Copyright for the status of this software.
7 | *
8 | * Author: Joel W. Reed
9 | */
10 |
11 | #ifndef __XML_MODULE_H__
12 | #define __XML_MODULE_H__
13 |
14 | #include <libxml/xmlversion.h>
15 |
16 | #ifdef LIBXML_MODULES_ENABLED
17 |
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 |
22 | /**
23 | * xmlModulePtr:
24 | *
25 | * A handle to a dynamically loaded module
26 | */
27 | typedef struct _xmlModule xmlModule;
28 | typedef xmlModule *xmlModulePtr;
29 |
30 | /**
31 | * xmlModuleOption:
32 | *
33 | * enumeration of options that can be passed down to xmlModuleOpen()
34 | */
35 | typedef enum {
36 | XML_MODULE_LAZY = 1, /* lazy binding */
37 | XML_MODULE_LOCAL= 2 /* local binding */
38 | } xmlModuleOption;
39 |
40 | XMLPUBFUN xmlModulePtr xmlModuleOpen (const char *filename,
41 | int options);
42 |
43 | XMLPUBFUN int xmlModuleSymbol (xmlModulePtr module,
44 | const char* name,
45 | void **result);
46 |
47 | XMLPUBFUN int xmlModuleClose (xmlModulePtr module);
48 |
49 | XMLPUBFUN int xmlModuleFree (xmlModulePtr module);
50 |
51 | #ifdef __cplusplus
52 | }
53 | #endif
54 |
55 | #endif /* LIBXML_MODULES_ENABLED */
56 |
57 | #endif /*__XML_MODULE_H__ */
58 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/urllib3/util/util.py:
--------------------------------------------------------------------------------
```python
1 | from __future__ import annotations
2 |
3 | import typing
4 | from types import TracebackType
5 |
6 |
7 | def to_bytes(
8 | x: str | bytes, encoding: str | None = None, errors: str | None = None
9 | ) -> bytes:
10 | if isinstance(x, bytes):
11 | return x
12 | elif not isinstance(x, str):
13 | raise TypeError(f"not expecting type {type(x).__name__}")
14 | if encoding or errors:
15 | return x.encode(encoding or "utf-8", errors=errors or "strict")
16 | return x.encode()
17 |
18 |
19 | def to_str(
20 | x: str | bytes, encoding: str | None = None, errors: str | None = None
21 | ) -> str:
22 | if isinstance(x, str):
23 | return x
24 | elif not isinstance(x, bytes):
25 | raise TypeError(f"not expecting type {type(x).__name__}")
26 | if encoding or errors:
27 | return x.decode(encoding or "utf-8", errors=errors or "strict")
28 | return x.decode()
29 |
30 |
31 | def reraise(
32 | tp: type[BaseException] | None,
33 | value: BaseException,
34 | tb: TracebackType | None = None,
35 | ) -> typing.NoReturn:
36 | try:
37 | if value.__traceback__ is not tb:
38 | raise value.with_traceback(tb)
39 | raise value
40 | finally:
41 | value = None # type: ignore[assignment]
42 | tb = None
43 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/urllib3/util/proxy.py:
--------------------------------------------------------------------------------
```python
1 | from __future__ import annotations
2 |
3 | import typing
4 |
5 | from .url import Url
6 |
7 | if typing.TYPE_CHECKING:
8 | from ..connection import ProxyConfig
9 |
10 |
11 | def connection_requires_http_tunnel(
12 | proxy_url: Url | None = None,
13 | proxy_config: ProxyConfig | None = None,
14 | destination_scheme: str | None = None,
15 | ) -> bool:
16 | """
17 | Returns True if the connection requires an HTTP CONNECT through the proxy.
18 |
19 | :param URL proxy_url:
20 | URL of the proxy.
21 | :param ProxyConfig proxy_config:
22 | Proxy configuration from poolmanager.py
23 | :param str destination_scheme:
24 | The scheme of the destination. (i.e https, http, etc)
25 | """
26 | # If we're not using a proxy, no way to use a tunnel.
27 | if proxy_url is None:
28 | return False
29 |
30 | # HTTP destinations never require tunneling, we always forward.
31 | if destination_scheme == "http":
32 | return False
33 |
34 | # Support for forwarding with HTTPS proxies and HTTPS destinations.
35 | if (
36 | proxy_url.scheme == "https"
37 | and proxy_config
38 | and proxy_config.use_forwarding_for_https
39 | ):
40 | return False
41 |
42 | # Otherwise always use a tunnel.
43 | return True
44 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libxslt/keys.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * Summary: interface for the key matching used in key() and template matches.
3 | * Description: implementation of the key mechanims.
4 | *
5 | * Copy: See Copyright for the status of this software.
6 | *
7 | * Author: Daniel Veillard
8 | */
9 |
10 | #ifndef __XML_XSLT_KEY_H__
11 | #define __XML_XSLT_KEY_H__
12 |
13 | #include <libxml/xpath.h>
14 | #include "xsltexports.h"
15 | #include "xsltInternals.h"
16 |
17 | #ifdef __cplusplus
18 | extern "C" {
19 | #endif
20 |
21 | /**
22 | * NODE_IS_KEYED:
23 | *
24 | * check for bit 15 set
25 | */
26 | #define NODE_IS_KEYED (1 >> 15)
27 |
28 | XSLTPUBFUN int XSLTCALL
29 | xsltAddKey (xsltStylesheetPtr style,
30 | const xmlChar *name,
31 | const xmlChar *nameURI,
32 | const xmlChar *match,
33 | const xmlChar *use,
34 | xmlNodePtr inst);
35 | XSLTPUBFUN xmlNodeSetPtr XSLTCALL
36 | xsltGetKey (xsltTransformContextPtr ctxt,
37 | const xmlChar *name,
38 | const xmlChar *nameURI,
39 | const xmlChar *value);
40 | XSLTPUBFUN void XSLTCALL
41 | xsltInitCtxtKeys (xsltTransformContextPtr ctxt,
42 | xsltDocumentPtr doc);
43 | XSLTPUBFUN void XSLTCALL
44 | xsltFreeKeys (xsltStylesheetPtr style);
45 | XSLTPUBFUN void XSLTCALL
46 | xsltFreeDocumentKeys (xsltDocumentPtr doc);
47 |
48 | #ifdef __cplusplus
49 | }
50 | #endif
51 |
52 | #endif /* __XML_XSLT_H__ */
53 |
54 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__init__.py:
--------------------------------------------------------------------------------
```python
1 | from __future__ import absolute_import
2 |
3 | # For backwards compatibility, provide imports that used to be here.
4 | from .connection import is_connection_dropped
5 | from .request import SKIP_HEADER, SKIPPABLE_HEADERS, make_headers
6 | from .response import is_fp_closed
7 | from .retry import Retry
8 | from .ssl_ import (
9 | ALPN_PROTOCOLS,
10 | HAS_SNI,
11 | IS_PYOPENSSL,
12 | IS_SECURETRANSPORT,
13 | PROTOCOL_TLS,
14 | SSLContext,
15 | assert_fingerprint,
16 | resolve_cert_reqs,
17 | resolve_ssl_version,
18 | ssl_wrap_socket,
19 | )
20 | from .timeout import Timeout, current_time
21 | from .url import Url, get_host, parse_url, split_first
22 | from .wait import wait_for_read, wait_for_write
23 |
24 | __all__ = (
25 | "HAS_SNI",
26 | "IS_PYOPENSSL",
27 | "IS_SECURETRANSPORT",
28 | "SSLContext",
29 | "PROTOCOL_TLS",
30 | "ALPN_PROTOCOLS",
31 | "Retry",
32 | "Timeout",
33 | "Url",
34 | "assert_fingerprint",
35 | "current_time",
36 | "is_connection_dropped",
37 | "is_fp_closed",
38 | "get_host",
39 | "parse_url",
40 | "make_headers",
41 | "resolve_cert_reqs",
42 | "resolve_ssl_version",
43 | "split_first",
44 | "ssl_wrap_socket",
45 | "wait_for_read",
46 | "wait_for_write",
47 | "SKIP_HEADER",
48 | "SKIPPABLE_HEADERS",
49 | )
50 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/utils/encoding.py:
--------------------------------------------------------------------------------
```python
1 | import codecs
2 | import locale
3 | import re
4 | import sys
5 | from typing import List, Tuple
6 |
7 | BOMS: List[Tuple[bytes, str]] = [
8 | (codecs.BOM_UTF8, "utf-8"),
9 | (codecs.BOM_UTF16, "utf-16"),
10 | (codecs.BOM_UTF16_BE, "utf-16-be"),
11 | (codecs.BOM_UTF16_LE, "utf-16-le"),
12 | (codecs.BOM_UTF32, "utf-32"),
13 | (codecs.BOM_UTF32_BE, "utf-32-be"),
14 | (codecs.BOM_UTF32_LE, "utf-32-le"),
15 | ]
16 |
17 | ENCODING_RE = re.compile(rb"coding[:=]\s*([-\w.]+)")
18 |
19 |
20 | def auto_decode(data: bytes) -> str:
21 | """Check a bytes string for a BOM to correctly detect the encoding
22 |
23 | Fallback to locale.getpreferredencoding(False) like open() on Python3"""
24 | for bom, encoding in BOMS:
25 | if data.startswith(bom):
26 | return data[len(bom) :].decode(encoding)
27 | # Lets check the first two lines as in PEP263
28 | for line in data.split(b"\n")[:2]:
29 | if line[0:1] == b"#" and ENCODING_RE.search(line):
30 | result = ENCODING_RE.search(line)
31 | assert result is not None
32 | encoding = result.groups()[0].decode("ascii")
33 | return data.decode(encoding)
34 | return data.decode(
35 | locale.getpreferredencoding(False) or sys.getdefaultencoding(),
36 | )
37 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/includes/libexslt/exsltconfig.h:
--------------------------------------------------------------------------------
```
1 | /*
2 | * exsltconfig.h: compile-time version information for the EXSLT library
3 | *
4 | * See Copyright for the status of this software.
5 | *
6 | * [email protected]
7 | */
8 |
9 | #ifndef __XML_EXSLTCONFIG_H__
10 | #define __XML_EXSLTCONFIG_H__
11 |
12 | #ifdef __cplusplus
13 | extern "C" {
14 | #endif
15 |
16 | /**
17 | * LIBEXSLT_DOTTED_VERSION:
18 | *
19 | * the version string like "1.2.3"
20 | */
21 | #define LIBEXSLT_DOTTED_VERSION "0.8.23"
22 |
23 | /**
24 | * LIBEXSLT_VERSION:
25 | *
26 | * the version number: 1.2.3 value is 10203
27 | */
28 | #define LIBEXSLT_VERSION 823
29 |
30 | /**
31 | * LIBEXSLT_VERSION_STRING:
32 | *
33 | * the version number string, 1.2.3 value is "10203"
34 | */
35 | #define LIBEXSLT_VERSION_STRING "823"
36 |
37 | /**
38 | * LIBEXSLT_VERSION_EXTRA:
39 | *
40 | * extra version information, used to show a Git commit description
41 | */
42 | #define LIBEXSLT_VERSION_EXTRA ""
43 |
44 | /**
45 | * WITH_CRYPTO:
46 | *
47 | * Whether crypto support is configured into exslt
48 | */
49 | #if 0
50 | #define EXSLT_CRYPTO_ENABLED
51 | #endif
52 |
53 | /**
54 | * ATTRIBUTE_UNUSED:
55 | *
56 | * This macro is used to flag unused function parameters to GCC
57 | */
58 | #ifdef __GNUC__
59 | #ifndef ATTRIBUTE_UNUSED
60 | #define ATTRIBUTE_UNUSED __attribute__((unused))
61 | #endif
62 | #else
63 | #define ATTRIBUTE_UNUSED
64 | #endif
65 |
66 | #ifdef __cplusplus
67 | }
68 | #endif
69 |
70 | #endif /* __XML_EXSLTCONFIG_H__ */
71 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/lxml/html/_setmixin.py:
--------------------------------------------------------------------------------
```python
1 | try:
2 | from collections.abc import MutableSet
3 | except ImportError:
4 | from collections.abc import MutableSet
5 |
6 |
7 | class SetMixin(MutableSet):
8 |
9 | """
10 | Mix-in for sets. You must define __iter__, add, remove
11 | """
12 |
13 | def __len__(self):
14 | length = 0
15 | for item in self:
16 | length += 1
17 | return length
18 |
19 | def __contains__(self, item):
20 | for has_item in self:
21 | if item == has_item:
22 | return True
23 | return False
24 |
25 | issubset = MutableSet.__le__
26 | issuperset = MutableSet.__ge__
27 |
28 | union = MutableSet.__or__
29 | intersection = MutableSet.__and__
30 | difference = MutableSet.__sub__
31 | symmetric_difference = MutableSet.__xor__
32 |
33 | def copy(self):
34 | return set(self)
35 |
36 | def update(self, other):
37 | self |= other
38 |
39 | def intersection_update(self, other):
40 | self &= other
41 |
42 | def difference_update(self, other):
43 | self -= other
44 |
45 | def symmetric_difference_update(self, other):
46 | self ^= other
47 |
48 | def discard(self, item):
49 | try:
50 | self.remove(item)
51 | except KeyError:
52 | pass
53 |
54 | @classmethod
55 | def _from_iterable(cls, it):
56 | return set(it)
57 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_loop.py:
--------------------------------------------------------------------------------
```python
1 | from typing import Iterable, Tuple, TypeVar
2 |
3 | T = TypeVar("T")
4 |
5 |
6 | def loop_first(values: Iterable[T]) -> Iterable[Tuple[bool, T]]:
7 | """Iterate and generate a tuple with a flag for first value."""
8 | iter_values = iter(values)
9 | try:
10 | value = next(iter_values)
11 | except StopIteration:
12 | return
13 | yield True, value
14 | for value in iter_values:
15 | yield False, value
16 |
17 |
18 | def loop_last(values: Iterable[T]) -> Iterable[Tuple[bool, T]]:
19 | """Iterate and generate a tuple with a flag for last value."""
20 | iter_values = iter(values)
21 | try:
22 | previous_value = next(iter_values)
23 | except StopIteration:
24 | return
25 | for value in iter_values:
26 | yield False, previous_value
27 | previous_value = value
28 | yield True, previous_value
29 |
30 |
31 | def loop_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]:
32 | """Iterate and generate a tuple with a flag for first and last value."""
33 | iter_values = iter(values)
34 | try:
35 | previous_value = next(iter_values)
36 | except StopIteration:
37 | return
38 | first = True
39 | for value in iter_values:
40 | yield first, False, previous_value
41 | first = False
42 | previous_value = value
43 | yield first, True, previous_value
44 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/rich/styled.py:
--------------------------------------------------------------------------------
```python
1 | from typing import TYPE_CHECKING
2 |
3 | from .measure import Measurement
4 | from .segment import Segment
5 | from .style import StyleType
6 |
7 | if TYPE_CHECKING:
8 | from .console import Console, ConsoleOptions, RenderResult, RenderableType
9 |
10 |
11 | class Styled:
12 | """Apply a style to a renderable.
13 |
14 | Args:
15 | renderable (RenderableType): Any renderable.
16 | style (StyleType): A style to apply across the entire renderable.
17 | """
18 |
19 | def __init__(self, renderable: "RenderableType", style: "StyleType") -> None:
20 | self.renderable = renderable
21 | self.style = style
22 |
23 | def __rich_console__(
24 | self, console: "Console", options: "ConsoleOptions"
25 | ) -> "RenderResult":
26 | style = console.get_style(self.style)
27 | rendered_segments = console.render(self.renderable, options)
28 | segments = Segment.apply_style(rendered_segments, style)
29 | return segments
30 |
31 | def __rich_measure__(
32 | self, console: "Console", options: "ConsoleOptions"
33 | ) -> Measurement:
34 | return Measurement.get(console, options, self.renderable)
35 |
36 |
37 | if __name__ == "__main__": # pragma: no cover
38 | from pip._vendor.rich import print
39 | from pip._vendor.rich.panel import Panel
40 |
41 | panel = Styled(Panel("hello"), "on blue")
42 | print(panel)
43 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/jinja2/defaults.py:
--------------------------------------------------------------------------------
```python
1 | import typing as t
2 |
3 | from .filters import FILTERS as DEFAULT_FILTERS # noqa: F401
4 | from .tests import TESTS as DEFAULT_TESTS # noqa: F401
5 | from .utils import Cycler
6 | from .utils import generate_lorem_ipsum
7 | from .utils import Joiner
8 | from .utils import Namespace
9 |
10 | if t.TYPE_CHECKING:
11 | import typing_extensions as te
12 |
13 | # defaults for the parser / lexer
14 | BLOCK_START_STRING = "{%"
15 | BLOCK_END_STRING = "%}"
16 | VARIABLE_START_STRING = "{{"
17 | VARIABLE_END_STRING = "}}"
18 | COMMENT_START_STRING = "{#"
19 | COMMENT_END_STRING = "#}"
20 | LINE_STATEMENT_PREFIX: t.Optional[str] = None
21 | LINE_COMMENT_PREFIX: t.Optional[str] = None
22 | TRIM_BLOCKS = False
23 | LSTRIP_BLOCKS = False
24 | NEWLINE_SEQUENCE: "te.Literal['\\n', '\\r\\n', '\\r']" = "\n"
25 | KEEP_TRAILING_NEWLINE = False
26 |
27 | # default filters, tests and namespace
28 |
29 | DEFAULT_NAMESPACE = {
30 | "range": range,
31 | "dict": dict,
32 | "lipsum": generate_lorem_ipsum,
33 | "cycler": Cycler,
34 | "joiner": Joiner,
35 | "namespace": Namespace,
36 | }
37 |
38 | # default policies
39 | DEFAULT_POLICIES: t.Dict[str, t.Any] = {
40 | "compiler.ascii_str": True,
41 | "urlize.rel": "noopener",
42 | "urlize.target": None,
43 | "urlize.extra_schemes": None,
44 | "truncate.leeway": 5,
45 | "json.dumps_function": None,
46 | "json.dumps_kwargs": {"sort_keys": True},
47 | "ext.i18n.trimmed": False,
48 | }
49 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/operations/install/editable_legacy.py:
--------------------------------------------------------------------------------
```python
1 | """Legacy editable installation process, i.e. `setup.py develop`.
2 | """
3 |
4 | import logging
5 | from typing import Optional, Sequence
6 |
7 | from pip._internal.build_env import BuildEnvironment
8 | from pip._internal.utils.logging import indent_log
9 | from pip._internal.utils.setuptools_build import make_setuptools_develop_args
10 | from pip._internal.utils.subprocess import call_subprocess
11 |
12 | logger = logging.getLogger(__name__)
13 |
14 |
15 | def install_editable(
16 | *,
17 | global_options: Sequence[str],
18 | prefix: Optional[str],
19 | home: Optional[str],
20 | use_user_site: bool,
21 | name: str,
22 | setup_py_path: str,
23 | isolated: bool,
24 | build_env: BuildEnvironment,
25 | unpacked_source_directory: str,
26 | ) -> None:
27 | """Install a package in editable mode. Most arguments are pass-through
28 | to setuptools.
29 | """
30 | logger.info("Running setup.py develop for %s", name)
31 |
32 | args = make_setuptools_develop_args(
33 | setup_py_path,
34 | global_options=global_options,
35 | no_user_config=isolated,
36 | prefix=prefix,
37 | home=home,
38 | use_user_site=use_user_site,
39 | )
40 |
41 | with indent_log():
42 | with build_env:
43 | call_subprocess(
44 | args,
45 | command_desc="python setup.py develop",
46 | cwd=unpacked_source_directory,
47 | )
48 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/rich/constrain.py:
--------------------------------------------------------------------------------
```python
1 | from typing import Optional, TYPE_CHECKING
2 |
3 | from .jupyter import JupyterMixin
4 | from .measure import Measurement
5 |
6 | if TYPE_CHECKING:
7 | from .console import Console, ConsoleOptions, RenderableType, RenderResult
8 |
9 |
10 | class Constrain(JupyterMixin):
11 | """Constrain the width of a renderable to a given number of characters.
12 |
13 | Args:
14 | renderable (RenderableType): A renderable object.
15 | width (int, optional): The maximum width (in characters) to render. Defaults to 80.
16 | """
17 |
18 | def __init__(self, renderable: "RenderableType", width: Optional[int] = 80) -> None:
19 | self.renderable = renderable
20 | self.width = width
21 |
22 | def __rich_console__(
23 | self, console: "Console", options: "ConsoleOptions"
24 | ) -> "RenderResult":
25 | if self.width is None:
26 | yield self.renderable
27 | else:
28 | child_options = options.update_width(min(self.width, options.max_width))
29 | yield from console.render(self.renderable, child_options)
30 |
31 | def __rich_measure__(
32 | self, console: "Console", options: "ConsoleOptions"
33 | ) -> "Measurement":
34 | if self.width is not None:
35 | options = options.update_width(self.width)
36 | measurement = Measurement.get(console, options, self.renderable)
37 | return measurement
38 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/useragent/test/test_device.json:
--------------------------------------------------------------------------------
```json
1 | {"test_cases": [{"user_agent_string": "Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10", "is_mobile": true, "family": "iPad", "is_spider": false}, {"user_agent_string": "Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5", "is_mobile": true, "family": "iPod", "is_spider": false}, {"user_agent_string": "Mozilla/5.0 (iPhone; U; fr; CPU iPhone OS 4_2_1 like Mac OS X; fr) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5", "is_mobile": true, "family": "iPhone", "is_spider": false}, {"user_agent_string": "Mozilla/5.0 (Linux; U; Android 3.0.1; en-us; GT-P7510 Build/HRI83) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13", "is_mobile": true, "family": "GT-P7510", "is_spider": false}, {"user_agent_string": "Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/0.0.1 Safari/534.8+", "is_mobile": false, "family": "Blackberry Playbook", "is_spider": false}, {"user_agent_string": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)", "is_mobile": false, "family": "Spider", "is_spider": true}]}
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/distributions/wheel.py:
--------------------------------------------------------------------------------
```python
1 | from typing import TYPE_CHECKING, Optional
2 |
3 | from pip._vendor.packaging.utils import canonicalize_name
4 |
5 | from pip._internal.distributions.base import AbstractDistribution
6 | from pip._internal.metadata import (
7 | BaseDistribution,
8 | FilesystemWheel,
9 | get_wheel_distribution,
10 | )
11 |
12 | if TYPE_CHECKING:
13 | from pip._internal.index.package_finder import PackageFinder
14 |
15 |
16 | class WheelDistribution(AbstractDistribution):
17 | """Represents a wheel distribution.
18 |
19 | This does not need any preparation as wheels can be directly unpacked.
20 | """
21 |
22 | @property
23 | def build_tracker_id(self) -> Optional[str]:
24 | return None
25 |
26 | def get_metadata_distribution(self) -> BaseDistribution:
27 | """Loads the metadata from the wheel file into memory and returns a
28 | Distribution that uses it, not relying on the wheel file or
29 | requirement.
30 | """
31 | assert self.req.local_file_path, "Set as part of preparation during download"
32 | assert self.req.name, "Wheels are never unnamed"
33 | wheel = FilesystemWheel(self.req.local_file_path)
34 | return get_wheel_distribution(wheel, canonicalize_name(self.req.name))
35 |
36 | def prepare_distribution_metadata(
37 | self,
38 | finder: "PackageFinder",
39 | build_isolation: bool,
40 | check_build_deps: bool,
41 | ) -> None:
42 | pass
43 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/click/_textwrap.py:
--------------------------------------------------------------------------------
```python
1 | import textwrap
2 | import typing as t
3 | from contextlib import contextmanager
4 |
5 |
6 | class TextWrapper(textwrap.TextWrapper):
7 | def _handle_long_word(
8 | self,
9 | reversed_chunks: t.List[str],
10 | cur_line: t.List[str],
11 | cur_len: int,
12 | width: int,
13 | ) -> None:
14 | space_left = max(width - cur_len, 1)
15 |
16 | if self.break_long_words:
17 | last = reversed_chunks[-1]
18 | cut = last[:space_left]
19 | res = last[space_left:]
20 | cur_line.append(cut)
21 | reversed_chunks[-1] = res
22 | elif not cur_line:
23 | cur_line.append(reversed_chunks.pop())
24 |
25 | @contextmanager
26 | def extra_indent(self, indent: str) -> t.Iterator[None]:
27 | old_initial_indent = self.initial_indent
28 | old_subsequent_indent = self.subsequent_indent
29 | self.initial_indent += indent
30 | self.subsequent_indent += indent
31 |
32 | try:
33 | yield
34 | finally:
35 | self.initial_indent = old_initial_indent
36 | self.subsequent_indent = old_subsequent_indent
37 |
38 | def indent_only(self, text: str) -> str:
39 | rv = []
40 |
41 | for idx, line in enumerate(text.splitlines()):
42 | indent = self.initial_indent
43 |
44 | if idx > 0:
45 | indent = self.subsequent_indent
46 |
47 | rv.append(f"{indent}{line}")
48 |
49 | return "\n".join(rv)
50 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py:
--------------------------------------------------------------------------------
```python
1 | # SPDX-FileCopyrightText: 2015 Eric Larson
2 | #
3 | # SPDX-License-Identifier: Apache-2.0
4 | from __future__ import annotations
5 |
6 |
7 | from datetime import datetime, timezone
8 | from typing import TYPE_CHECKING
9 |
10 | from pip._vendor.cachecontrol.cache import BaseCache
11 |
12 | if TYPE_CHECKING:
13 | from redis import Redis
14 |
15 |
16 | class RedisCache(BaseCache):
17 | def __init__(self, conn: Redis[bytes]) -> None:
18 | self.conn = conn
19 |
20 | def get(self, key: str) -> bytes | None:
21 | return self.conn.get(key)
22 |
23 | def set(
24 | self, key: str, value: bytes, expires: int | datetime | None = None
25 | ) -> None:
26 | if not expires:
27 | self.conn.set(key, value)
28 | elif isinstance(expires, datetime):
29 | now_utc = datetime.now(timezone.utc)
30 | if expires.tzinfo is None:
31 | now_utc = now_utc.replace(tzinfo=None)
32 | delta = expires - now_utc
33 | self.conn.setex(key, int(delta.total_seconds()), value)
34 | else:
35 | self.conn.setex(key, expires, value)
36 |
37 | def delete(self, key: str) -> None:
38 | self.conn.delete(key)
39 |
40 | def clear(self) -> None:
41 | """Helper for clearing all the keys in a database. Use with
42 | caution!"""
43 | for key in self.conn.keys():
44 | self.conn.delete(key)
45 |
46 | def close(self) -> None:
47 | """Redis uses connection pooling, no need to close the connection."""
48 | pass
49 |
```
--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/rich/_null_file.py:
--------------------------------------------------------------------------------
```python
1 | from types import TracebackType
2 | from typing import IO, Iterable, Iterator, List, Optional, Type
3 |
4 |
5 | class NullFile(IO[str]):
6 | def close(self) -> None:
7 | pass
8 |
9 | def isatty(self) -> bool:
10 | return False
11 |
12 | def read(self, __n: int = 1) -> str:
13 | return ""
14 |
15 | def readable(self) -> bool:
16 | return False
17 |
18 | def readline(self, __limit: int = 1) -> str:
19 | return ""
20 |
21 | def readlines(self, __hint: int = 1) -> List[str]:
22 | return []
23 |
24 | def seek(self, __offset: int, __whence: int = 1) -> int:
25 | return 0
26 |
27 | def seekable(self) -> bool:
28 | return False
29 |
30 | def tell(self) -> int:
31 | return 0
32 |
33 | def truncate(self, __size: Optional[int] = 1) -> int:
34 | return 0
35 |
36 | def writable(self) -> bool:
37 | return False
38 |
39 | def writelines(self, __lines: Iterable[str]) -> None:
40 | pass
41 |
42 | def __next__(self) -> str:
43 | return ""
44 |
45 | def __iter__(self) -> Iterator[str]:
46 | return iter([""])
47 |
48 | def __enter__(self) -> IO[str]:
49 | pass
50 |
51 | def __exit__(
52 | self,
53 | __t: Optional[Type[BaseException]],
54 | __value: Optional[BaseException],
55 | __traceback: Optional[TracebackType],
56 | ) -> None:
57 | pass
58 |
59 | def write(self, text: str) -> int:
60 | return 0
61 |
62 | def flush(self) -> None:
63 | pass
64 |
65 | def fileno(self) -> int:
66 | return -1
67 |
68 |
69 | NULL_FILE = NullFile()
70 |
```