#
tokens: 49394/50000 23/808 files (page 5/168)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 5 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/lxml/includes/libxslt/pattern.h:
--------------------------------------------------------------------------------

```
 1 | /*
 2 |  * Summary: interface for the pattern matching used in template matches.
 3 |  * Description: the implementation of the lookup of the right template
 4 |  *              for a given node must be really fast in order to keep
 5 |  *              decent performances.
 6 |  *
 7 |  * Copy: See Copyright for the status of this software.
 8 |  *
 9 |  * Author: Daniel Veillard
10 |  */
11 | 
12 | #ifndef __XML_XSLT_PATTERN_H__
13 | #define __XML_XSLT_PATTERN_H__
14 | 
15 | #include "xsltInternals.h"
16 | #include "xsltexports.h"
17 | 
18 | #ifdef __cplusplus
19 | extern "C" {
20 | #endif
21 | 
22 | /**
23 |  * xsltCompMatch:
24 |  *
25 |  * Data structure used for the implementation of patterns.
26 |  * It is kept private (in pattern.c).
27 |  */
28 | typedef struct _xsltCompMatch xsltCompMatch;
29 | typedef xsltCompMatch *xsltCompMatchPtr;
30 | 
31 | /*
32 |  * Pattern related interfaces.
33 |  */
34 | 
35 | XSLTPUBFUN xsltCompMatchPtr XSLTCALL
36 | 		xsltCompilePattern	(const xmlChar *pattern,
37 | 					 xmlDocPtr doc,
38 | 					 xmlNodePtr node,
39 | 					 xsltStylesheetPtr style,
40 | 					 xsltTransformContextPtr runtime);
41 | XSLTPUBFUN void XSLTCALL
42 | 		xsltFreeCompMatchList	(xsltCompMatchPtr comp);
43 | XSLTPUBFUN int XSLTCALL
44 | 		xsltTestCompMatchList	(xsltTransformContextPtr ctxt,
45 | 					 xmlNodePtr node,
46 | 					 xsltCompMatchPtr comp);
47 | XSLTPUBFUN void XSLTCALL
48 | 		xsltCompMatchClearCache	(xsltTransformContextPtr ctxt,
49 | 					 xsltCompMatchPtr comp);
50 | XSLTPUBFUN void XSLTCALL
51 | 		xsltNormalizeCompSteps	(void *payload,
52 | 					 void *data,
53 | 					 const xmlChar *name);
54 | 
55 | /*
56 |  * Template related interfaces.
57 |  */
58 | XSLTPUBFUN int XSLTCALL
59 | 		xsltAddTemplate		(xsltStylesheetPtr style,
60 | 					 xsltTemplatePtr cur,
61 | 					 const xmlChar *mode,
62 | 					 const xmlChar *modeURI);
63 | XSLTPUBFUN xsltTemplatePtr XSLTCALL
64 | 		xsltGetTemplate		(xsltTransformContextPtr ctxt,
65 | 					 xmlNodePtr node,
66 | 					 xsltStylesheetPtr style);
67 | XSLTPUBFUN void XSLTCALL
68 | 		xsltFreeTemplateHashes	(xsltStylesheetPtr style);
69 | XSLTPUBFUN void XSLTCALL
70 | 		xsltCleanupTemplates	(xsltStylesheetPtr style);
71 | 
72 | #if 0
73 | int		xsltMatchPattern	(xsltTransformContextPtr ctxt,
74 | 					 xmlNodePtr node,
75 | 					 const xmlChar *pattern,
76 | 					 xmlDocPtr ctxtdoc,
77 | 					 xmlNodePtr ctxtnode);
78 | #endif
79 | #ifdef __cplusplus
80 | }
81 | #endif
82 | 
83 | #endif /* __XML_XSLT_PATTERN_H__ */
84 | 
85 | 
```

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

```python
 1 | CONSOLE_HTML_FORMAT = """\
 2 | <!DOCTYPE html>
 3 | <html>
 4 | <head>
 5 | <meta charset="UTF-8">
 6 | <style>
 7 | {stylesheet}
 8 | body {{
 9 |     color: {foreground};
10 |     background-color: {background};
11 | }}
12 | </style>
13 | </head>
14 | <body>
15 |     <pre style="font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace"><code style="font-family:inherit">{code}</code></pre>
16 | </body>
17 | </html>
18 | """
19 | 
20 | CONSOLE_SVG_FORMAT = """\
21 | <svg class="rich-terminal" viewBox="0 0 {width} {height}" xmlns="http://www.w3.org/2000/svg">
22 |     <!-- Generated with Rich https://www.textualize.io -->
23 |     <style>
24 | 
25 |     @font-face {{
26 |         font-family: "Fira Code";
27 |         src: local("FiraCode-Regular"),
28 |                 url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
29 |                 url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
30 |         font-style: normal;
31 |         font-weight: 400;
32 |     }}
33 |     @font-face {{
34 |         font-family: "Fira Code";
35 |         src: local("FiraCode-Bold"),
36 |                 url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
37 |                 url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
38 |         font-style: bold;
39 |         font-weight: 700;
40 |     }}
41 | 
42 |     .{unique_id}-matrix {{
43 |         font-family: Fira Code, monospace;
44 |         font-size: {char_height}px;
45 |         line-height: {line_height}px;
46 |         font-variant-east-asian: full-width;
47 |     }}
48 | 
49 |     .{unique_id}-title {{
50 |         font-size: 18px;
51 |         font-weight: bold;
52 |         font-family: arial;
53 |     }}
54 | 
55 |     {styles}
56 |     </style>
57 | 
58 |     <defs>
59 |     <clipPath id="{unique_id}-clip-terminal">
60 |       <rect x="0" y="0" width="{terminal_width}" height="{terminal_height}" />
61 |     </clipPath>
62 |     {lines}
63 |     </defs>
64 | 
65 |     {chrome}
66 |     <g transform="translate({terminal_x}, {terminal_y})" clip-path="url(#{unique_id}-clip-terminal)">
67 |     {backgrounds}
68 |     <g class="{unique_id}-matrix">
69 |     {matrix}
70 |     </g>
71 |     </g>
72 | </svg>
73 | """
74 | 
75 | _SVG_FONT_FAMILY = "Rich Fira Code"
76 | _SVG_CLASSES_PREFIX = "rich-svg"
77 | 
```

--------------------------------------------------------------------------------
/.venv/hello.py:
--------------------------------------------------------------------------------

```python
 1 | from flask import Flask, request, jsonify, render_template
 2 | from markupsafe import escape
 3 | import requests
 4 | from bs4 import BeautifulSoup
 5 | from fake_useragent import UserAgent
 6 | app = Flask(__name__)
 7 | 
 8 | def search_query(query):
 9 |     search_url = f"https://www.google.com/search?q={query}"
10 |     ua = UserAgent()
11 |     headers = {'User-Agent': ua.random}
12 |     
13 |     response = requests.get(search_url, headers=headers)
14 |     if response.status_code == 200:
15 |         soup = BeautifulSoup(response.text, 'lxml')
16 |         results = []
17 |         for result in soup.select('.tF2Cxc'):
18 |             title = result.select_one('.DKV0Md').text
19 |             description = result.select_one('.VwiC3b').text
20 |             results.append({'title': title, 'description': description})
21 |         return results
22 |     else:
23 |         return []
24 | 
25 | 
26 | 
27 | @app.route('/user/<username>')
28 | def show_user_profile(username):
29 |     # show the user profile for that user
30 |     return f'User {escape(username)}'
31 | 
32 | @app.route('/post/<int:post_id>')
33 | def show_post(post_id):
34 |     # show the post with the given id, the id is an integer
35 |     return f'Post {post_id}'
36 | 
37 | @app.route('/path/<path:subpath>')
38 | def show_subpath(subpath):
39 |     # show the subpath after /path/
40 |     return f'Subpath {escape(subpath)}'
41 | 
42 | @app.route('/')
43 | def hello_world():
44 |   return 'Hello, World!'
45 | 
46 | # @app.route('/about')
47 | # def about():
48 | #   return 'This is the about page'
49 | 
50 | # @app.route('/user/<username>')
51 | # def show_user_profile(username):
52 | #   return f'User {username}'
53 | 
54 | @app.route('/search/', methods=['GET'])
55 | @app.route('/search/<name>')
56 | def index():
57 |    return render_template('index.html', __name__=__name__)
58 | 
59 | @app.route('/search', methods=['POST'])
60 | def search():
61 |     query = request.form['query']  # Получаем запрос из формы
62 |     results = search_query(query)  # Выполняем поисковый запрос
63 |     return render_template('index.html', results=results)
64 | 
65 | 
66 | 
67 | # @app.route('/search', methods=['GET'])
68 | # def search():
69 | #     query = request.args.get('query')  # Получаем запрос из параметра URL
70 | #     results = search_query(query)
71 | #     return 'Hello, World!', jsonify(results)  # Возвращаем результат в формате JSON
72 | 
73 | # if __name__ == "__main__":
74 | #     app.run(debug=True)
```

--------------------------------------------------------------------------------
/.venv/bin/activate.fish:
--------------------------------------------------------------------------------

```
 1 | # This file must be used with "source <venv>/bin/activate.fish" *from fish*
 2 | # (https://fishshell.com/). You cannot run it directly.
 3 | 
 4 | function deactivate  -d "Exit virtual environment and return to normal shell environment"
 5 |     # reset old environment variables
 6 |     if test -n "$_OLD_VIRTUAL_PATH"
 7 |         set -gx PATH $_OLD_VIRTUAL_PATH
 8 |         set -e _OLD_VIRTUAL_PATH
 9 |     end
10 |     if test -n "$_OLD_VIRTUAL_PYTHONHOME"
11 |         set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
12 |         set -e _OLD_VIRTUAL_PYTHONHOME
13 |     end
14 | 
15 |     if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
16 |         set -e _OLD_FISH_PROMPT_OVERRIDE
17 |         # prevents error when using nested fish instances (Issue #93858)
18 |         if functions -q _old_fish_prompt
19 |             functions -e fish_prompt
20 |             functions -c _old_fish_prompt fish_prompt
21 |             functions -e _old_fish_prompt
22 |         end
23 |     end
24 | 
25 |     set -e VIRTUAL_ENV
26 |     set -e VIRTUAL_ENV_PROMPT
27 |     if test "$argv[1]" != "nondestructive"
28 |         # Self-destruct!
29 |         functions -e deactivate
30 |     end
31 | end
32 | 
33 | # Unset irrelevant variables.
34 | deactivate nondestructive
35 | 
36 | set -gx VIRTUAL_ENV "/Users/user/Documents/myproject/.venv"
37 | 
38 | set -gx _OLD_VIRTUAL_PATH $PATH
39 | set -gx PATH "$VIRTUAL_ENV/bin" $PATH
40 | 
41 | # Unset PYTHONHOME if set.
42 | if set -q PYTHONHOME
43 |     set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
44 |     set -e PYTHONHOME
45 | end
46 | 
47 | if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
48 |     # fish uses a function instead of an env var to generate the prompt.
49 | 
50 |     # Save the current fish_prompt function as the function _old_fish_prompt.
51 |     functions -c fish_prompt _old_fish_prompt
52 | 
53 |     # With the original prompt function renamed, we can override with our own.
54 |     function fish_prompt
55 |         # Save the return status of the last command.
56 |         set -l old_status $status
57 | 
58 |         # Output the venv prompt; color taken from the blue of the Python logo.
59 |         printf "%s%s%s" (set_color 4B8BBE) "(.venv) " (set_color normal)
60 | 
61 |         # Restore the return status of the previous command.
62 |         echo "exit $old_status" | .
63 |         # Output the original/"old" prompt.
64 |         _old_fish_prompt
65 |     end
66 | 
67 |     set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
68 |     set -gx VIRTUAL_ENV_PROMPT "(.venv) "
69 | end
70 | 
```

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

```python
 1 | """
 2 |     pygments.formatters.pangomarkup
 3 |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 4 | 
 5 |     Formatter for Pango markup output.
 6 | 
 7 |     :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
 8 |     :license: BSD, see LICENSE for details.
 9 | """
10 | 
11 | from pip._vendor.pygments.formatter import Formatter
12 | 
13 | 
14 | __all__ = ['PangoMarkupFormatter']
15 | 
16 | 
17 | _escape_table = {
18 |     ord('&'): '&amp;',
19 |     ord('<'): '&lt;',
20 | }
21 | 
22 | 
23 | def escape_special_chars(text, table=_escape_table):
24 |     """Escape & and < for Pango Markup."""
25 |     return text.translate(table)
26 | 
27 | 
28 | class PangoMarkupFormatter(Formatter):
29 |     """
30 |     Format tokens as Pango Markup code. It can then be rendered to an SVG.
31 | 
32 |     .. versionadded:: 2.9
33 |     """
34 | 
35 |     name = 'Pango Markup'
36 |     aliases = ['pango', 'pangomarkup']
37 |     filenames = []
38 | 
39 |     def __init__(self, **options):
40 |         Formatter.__init__(self, **options)
41 | 
42 |         self.styles = {}
43 | 
44 |         for token, style in self.style:
45 |             start = ''
46 |             end = ''
47 |             if style['color']:
48 |                 start += '<span fgcolor="#{}">'.format(style['color'])
49 |                 end = '</span>' + end
50 |             if style['bold']:
51 |                 start += '<b>'
52 |                 end = '</b>' + end
53 |             if style['italic']:
54 |                 start += '<i>'
55 |                 end = '</i>' + end
56 |             if style['underline']:
57 |                 start += '<u>'
58 |                 end = '</u>' + end
59 |             self.styles[token] = (start, end)
60 | 
61 |     def format_unencoded(self, tokensource, outfile):
62 |         lastval = ''
63 |         lasttype = None
64 | 
65 |         outfile.write('<tt>')
66 | 
67 |         for ttype, value in tokensource:
68 |             while ttype not in self.styles:
69 |                 ttype = ttype.parent
70 |             if ttype == lasttype:
71 |                 lastval += escape_special_chars(value)
72 |             else:
73 |                 if lastval:
74 |                     stylebegin, styleend = self.styles[lasttype]
75 |                     outfile.write(stylebegin + lastval + styleend)
76 |                 lastval = escape_special_chars(value)
77 |                 lasttype = ttype
78 | 
79 |         if lastval:
80 |             stylebegin, styleend = self.styles[lasttype]
81 |             outfile.write(stylebegin + lastval + styleend)
82 | 
83 |         outfile.write('</tt>')
84 | 
```

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

```
 1 | /*
 2 |  * Summary: interface for the template processing
 3 |  * Description: This set of routine encapsulates XPath calls
 4 |  *              and Attribute Value Templates evaluation.
 5 |  *
 6 |  * Copy: See Copyright for the status of this software.
 7 |  *
 8 |  * Author: Daniel Veillard
 9 |  */
10 | 
11 | #ifndef __XML_XSLT_TEMPLATES_H__
12 | #define __XML_XSLT_TEMPLATES_H__
13 | 
14 | #include <libxml/xpath.h>
15 | #include <libxml/xpathInternals.h>
16 | #include "xsltexports.h"
17 | #include "xsltInternals.h"
18 | 
19 | #ifdef __cplusplus
20 | extern "C" {
21 | #endif
22 | 
23 | XSLTPUBFUN int XSLTCALL
24 | 		xsltEvalXPathPredicate		(xsltTransformContextPtr ctxt,
25 | 						 xmlXPathCompExprPtr comp,
26 | 		                                 xmlNsPtr *nsList,
27 | 						 int nsNr);
28 | XSLTPUBFUN xmlChar * XSLTCALL
29 | 		xsltEvalTemplateString		(xsltTransformContextPtr ctxt,
30 | 						 xmlNodePtr contextNode,
31 | 						 xmlNodePtr inst);
32 | XSLTPUBFUN xmlChar * XSLTCALL
33 | 		xsltEvalAttrValueTemplate	(xsltTransformContextPtr ctxt,
34 | 						 xmlNodePtr node,
35 | 						 const xmlChar *name,
36 | 						 const xmlChar *ns);
37 | XSLTPUBFUN const xmlChar * XSLTCALL
38 | 		xsltEvalStaticAttrValueTemplate	(xsltStylesheetPtr style,
39 | 						 xmlNodePtr node,
40 | 						 const xmlChar *name,
41 | 						 const xmlChar *ns,
42 | 						 int *found);
43 | 
44 | /* TODO: this is obviously broken ... the namespaces should be passed too ! */
45 | XSLTPUBFUN xmlChar * XSLTCALL
46 | 		xsltEvalXPathString		(xsltTransformContextPtr ctxt,
47 | 						 xmlXPathCompExprPtr comp);
48 | XSLTPUBFUN xmlChar * XSLTCALL
49 | 		xsltEvalXPathStringNs		(xsltTransformContextPtr ctxt,
50 | 						 xmlXPathCompExprPtr comp,
51 | 						 int nsNr,
52 | 						 xmlNsPtr *nsList);
53 | 
54 | XSLTPUBFUN xmlNodePtr * XSLTCALL
55 | 		xsltTemplateProcess		(xsltTransformContextPtr ctxt,
56 | 						 xmlNodePtr node);
57 | XSLTPUBFUN xmlAttrPtr XSLTCALL
58 | 		xsltAttrListTemplateProcess	(xsltTransformContextPtr ctxt,
59 | 						 xmlNodePtr target,
60 | 						 xmlAttrPtr cur);
61 | XSLTPUBFUN xmlAttrPtr XSLTCALL
62 | 		xsltAttrTemplateProcess		(xsltTransformContextPtr ctxt,
63 | 						 xmlNodePtr target,
64 | 						 xmlAttrPtr attr);
65 | XSLTPUBFUN xmlChar * XSLTCALL
66 | 		xsltAttrTemplateValueProcess	(xsltTransformContextPtr ctxt,
67 | 						 const xmlChar* attr);
68 | XSLTPUBFUN xmlChar * XSLTCALL
69 | 		xsltAttrTemplateValueProcessNode(xsltTransformContextPtr ctxt,
70 | 						 const xmlChar* str,
71 | 						 xmlNodePtr node);
72 | #ifdef __cplusplus
73 | }
74 | #endif
75 | 
76 | #endif /* __XML_XSLT_TEMPLATES_H__ */
77 | 
78 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_internal/commands/check.py:
--------------------------------------------------------------------------------

```python
 1 | import logging
 2 | from optparse import Values
 3 | from typing import List
 4 | 
 5 | from pip._internal.cli.base_command import Command
 6 | from pip._internal.cli.status_codes import ERROR, SUCCESS
 7 | from pip._internal.metadata import get_default_environment
 8 | from pip._internal.operations.check import (
 9 |     check_package_set,
10 |     check_unsupported,
11 |     create_package_set_from_installed,
12 | )
13 | from pip._internal.utils.compatibility_tags import get_supported
14 | from pip._internal.utils.misc import write_output
15 | 
16 | logger = logging.getLogger(__name__)
17 | 
18 | 
19 | class CheckCommand(Command):
20 |     """Verify installed packages have compatible dependencies."""
21 | 
22 |     ignore_require_venv = True
23 |     usage = """
24 |       %prog [options]"""
25 | 
26 |     def run(self, options: Values, args: List[str]) -> int:
27 |         package_set, parsing_probs = create_package_set_from_installed()
28 |         missing, conflicting = check_package_set(package_set)
29 |         unsupported = list(
30 |             check_unsupported(
31 |                 get_default_environment().iter_installed_distributions(),
32 |                 get_supported(),
33 |             )
34 |         )
35 | 
36 |         for project_name in missing:
37 |             version = package_set[project_name].version
38 |             for dependency in missing[project_name]:
39 |                 write_output(
40 |                     "%s %s requires %s, which is not installed.",
41 |                     project_name,
42 |                     version,
43 |                     dependency[0],
44 |                 )
45 | 
46 |         for project_name in conflicting:
47 |             version = package_set[project_name].version
48 |             for dep_name, dep_version, req in conflicting[project_name]:
49 |                 write_output(
50 |                     "%s %s has requirement %s, but you have %s %s.",
51 |                     project_name,
52 |                     version,
53 |                     req,
54 |                     dep_name,
55 |                     dep_version,
56 |                 )
57 |         for package in unsupported:
58 |             write_output(
59 |                 "%s %s is not supported on this platform",
60 |                 package.raw_name,
61 |                 package.version,
62 |             )
63 |         if missing or conflicting or parsing_probs or unsupported:
64 |             return ERROR
65 |         else:
66 |             write_output("No broken requirements found.")
67 |             return SUCCESS
68 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/pip/_vendor/truststore/_openssl.py:
--------------------------------------------------------------------------------

```python
 1 | import contextlib
 2 | import os
 3 | import re
 4 | import ssl
 5 | import typing
 6 | 
 7 | # candidates based on https://github.com/tiran/certifi-system-store by Christian Heimes
 8 | _CA_FILE_CANDIDATES = [
 9 |     # Alpine, Arch, Fedora 34+, OpenWRT, RHEL 9+, BSD
10 |     "/etc/ssl/cert.pem",
11 |     # Fedora <= 34, RHEL <= 9, CentOS <= 9
12 |     "/etc/pki/tls/cert.pem",
13 |     # Debian, Ubuntu (requires ca-certificates)
14 |     "/etc/ssl/certs/ca-certificates.crt",
15 |     # SUSE
16 |     "/etc/ssl/ca-bundle.pem",
17 | ]
18 | 
19 | _HASHED_CERT_FILENAME_RE = re.compile(r"^[0-9a-fA-F]{8}\.[0-9]$")
20 | 
21 | 
22 | @contextlib.contextmanager
23 | def _configure_context(ctx: ssl.SSLContext) -> typing.Iterator[None]:
24 |     # First, check whether the default locations from OpenSSL
25 |     # seem like they will give us a usable set of CA certs.
26 |     # ssl.get_default_verify_paths already takes care of:
27 |     # - getting cafile from either the SSL_CERT_FILE env var
28 |     #   or the path configured when OpenSSL was compiled,
29 |     #   and verifying that that path exists
30 |     # - getting capath from either the SSL_CERT_DIR env var
31 |     #   or the path configured when OpenSSL was compiled,
32 |     #   and verifying that that path exists
33 |     # In addition we'll check whether capath appears to contain certs.
34 |     defaults = ssl.get_default_verify_paths()
35 |     if defaults.cafile or (defaults.capath and _capath_contains_certs(defaults.capath)):
36 |         ctx.set_default_verify_paths()
37 |     else:
38 |         # cafile from OpenSSL doesn't exist
39 |         # and capath from OpenSSL doesn't contain certs.
40 |         # Let's search other common locations instead.
41 |         for cafile in _CA_FILE_CANDIDATES:
42 |             if os.path.isfile(cafile):
43 |                 ctx.load_verify_locations(cafile=cafile)
44 |                 break
45 | 
46 |     yield
47 | 
48 | 
49 | def _capath_contains_certs(capath: str) -> bool:
50 |     """Check whether capath exists and contains certs in the expected format."""
51 |     if not os.path.isdir(capath):
52 |         return False
53 |     for name in os.listdir(capath):
54 |         if _HASHED_CERT_FILENAME_RE.match(name):
55 |             return True
56 |     return False
57 | 
58 | 
59 | def _verify_peercerts_impl(
60 |     ssl_context: ssl.SSLContext,
61 |     cert_chain: list[bytes],
62 |     server_hostname: str | None = None,
63 | ) -> None:
64 |     # This is a no-op because we've enabled SSLContext's built-in
65 |     # verification via verify_mode=CERT_REQUIRED, and don't need to repeat it.
66 |     pass
67 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/charset_normalizer/legacy.py:
--------------------------------------------------------------------------------

```python
 1 | from __future__ import annotations
 2 | 
 3 | from typing import TYPE_CHECKING, Any, Optional
 4 | from warnings import warn
 5 | 
 6 | from .api import from_bytes
 7 | from .constant import CHARDET_CORRESPONDENCE
 8 | 
 9 | # TODO: remove this check when dropping Python 3.7 support
10 | if TYPE_CHECKING:
11 |     from typing_extensions import TypedDict
12 | 
13 |     class ResultDict(TypedDict):
14 |         encoding: Optional[str]
15 |         language: str
16 |         confidence: Optional[float]
17 | 
18 | 
19 | def detect(
20 |     byte_str: bytes, should_rename_legacy: bool = False, **kwargs: Any
21 | ) -> ResultDict:
22 |     """
23 |     chardet legacy method
24 |     Detect the encoding of the given byte string. It should be mostly backward-compatible.
25 |     Encoding name will match Chardet own writing whenever possible. (Not on encoding name unsupported by it)
26 |     This function is deprecated and should be used to migrate your project easily, consult the documentation for
27 |     further information. Not planned for removal.
28 | 
29 |     :param byte_str:     The byte sequence to examine.
30 |     :param should_rename_legacy:  Should we rename legacy encodings
31 |                                   to their more modern equivalents?
32 |     """
33 |     if len(kwargs):
34 |         warn(
35 |             f"charset-normalizer disregard arguments '{','.join(list(kwargs.keys()))}' in legacy function detect()"
36 |         )
37 | 
38 |     if not isinstance(byte_str, (bytearray, bytes)):
39 |         raise TypeError(  # pragma: nocover
40 |             "Expected object of type bytes or bytearray, got: "
41 |             "{0}".format(type(byte_str))
42 |         )
43 | 
44 |     if isinstance(byte_str, bytearray):
45 |         byte_str = bytes(byte_str)
46 | 
47 |     r = from_bytes(byte_str).best()
48 | 
49 |     encoding = r.encoding if r is not None else None
50 |     language = r.language if r is not None and r.language != "Unknown" else ""
51 |     confidence = 1.0 - r.chaos if r is not None else None
52 | 
53 |     # Note: CharsetNormalizer does not return 'UTF-8-SIG' as the sig get stripped in the detection/normalization process
54 |     # but chardet does return 'utf-8-sig' and it is a valid codec name.
55 |     if r is not None and encoding == "utf_8" and r.bom:
56 |         encoding += "_sig"
57 | 
58 |     if should_rename_legacy is False and encoding in CHARDET_CORRESPONDENCE:
59 |         encoding = CHARDET_CORRESPONDENCE[encoding]
60 | 
61 |     return {
62 |         "encoding": encoding,
63 |         "language": language,
64 |         "confidence": confidence,
65 |     }
66 | 
```

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

```python
 1 | import re
 2 | import json
 3 | from os.path import join, dirname
 4 | 
 5 | 
 6 | class Result(dict):
 7 |     def __init__(self, *args, **kwargs):
 8 |         super(Result, self).__init__(*args, **kwargs)
 9 |         for k, v in self.iteritems():
10 |             setattr(self, k, v)
11 | 
12 | 
13 | class Parser(object):
14 |     def __init__(self, options):
15 |         self.options = options
16 |         self.pattern = options['regex']
17 |         self.regex = re.compile(self.pattern)
18 | 
19 |     def parse(self, ua_string):
20 |         result = self.regex.search(ua_string)
21 |         matches = result is not None
22 |         if not matches:
23 |             return False, None
24 |         opts = self.options
25 |         family, major, minor, patch, patch_minor = (result.groups() + (None,) * 5)[:5]
26 |         family_replacement = opts.get('family_replacement', opts.get('os_replacement', opts.get('device_replacement', None)))
27 |         if family_replacement is not None:
28 |             family = family_replacement.replace('$1', family or '$1')
29 |         family = family if family else "Other"
30 |         major = self.options.get('v1_replacement', major)
31 |         minor = self.options.get('v2_replacement', minor)
32 |         version = '.'.join(filter(bool, (major, minor, patch, patch_minor)))
33 |         return matches, Result(
34 |                             family=family,
35 |                             major_version=major,
36 |                             minor_version=minor,
37 |                             patch_version=patch,
38 |                             patch_minor_version=patch_minor,
39 |                             version=version
40 |                         )
41 | 
42 | 
43 | REGEXES = json.load(open(join(dirname(__file__), 'resources', 'user_agent_data.json')))
44 | PARSERS = {
45 |     'browser': map(Parser, REGEXES['user_agent_parsers']),
46 |     'device': map(Parser, REGEXES['device_parsers']),
47 |     'os': map(Parser, REGEXES['os_parsers']),
48 | }
49 | 
50 | 
51 | def detect(ua_string):
52 |     results = []
53 |     for category, parser_list in PARSERS.items():
54 |         empty_result = Result(family='Other' if category == 'browser' else None, major_version=None, minor_version=None, patch_version=None, patch_minor_version=None)
55 |         for parser in parser_list:
56 |             matches, result = parser.parse(ua_string)
57 |             if matches:
58 |                 results.append((category, result))
59 |                 break
60 |         else:
61 |             results.append((category, empty_result))
62 |     return Result(results)
63 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/bs4/tests/test_element.py:
--------------------------------------------------------------------------------

```python
 1 | """Tests of classes in element.py.
 2 | 
 3 | The really big classes -- Tag, PageElement, and NavigableString --
 4 | are tested in separate files.
 5 | """
 6 | 
 7 | from bs4.element import (
 8 |     CharsetMetaAttributeValue,
 9 |     ContentMetaAttributeValue,
10 |     NamespacedAttribute,
11 | )
12 | from . import SoupTest
13 | 
14 | 
15 | class TestNamedspacedAttribute(object):
16 | 
17 |     def test_name_may_be_none_or_missing(self):
18 |         a = NamespacedAttribute("xmlns", None)
19 |         assert a == "xmlns"
20 | 
21 |         a = NamespacedAttribute("xmlns", "")
22 |         assert a == "xmlns"
23 | 
24 |         a = NamespacedAttribute("xmlns")
25 |         assert a == "xmlns"
26 |         
27 |     def test_namespace_may_be_none_or_missing(self):
28 |         a = NamespacedAttribute(None, "tag")
29 |         assert a == "tag"
30 |         
31 |         a = NamespacedAttribute("", "tag")
32 |         assert a == "tag"
33 |         
34 |     def test_attribute_is_equivalent_to_colon_separated_string(self):
35 |         a = NamespacedAttribute("a", "b")
36 |         assert "a:b" == a
37 | 
38 |     def test_attributes_are_equivalent_if_prefix_and_name_identical(self):
39 |         a = NamespacedAttribute("a", "b", "c")
40 |         b = NamespacedAttribute("a", "b", "c")
41 |         assert a == b
42 | 
43 |         # The actual namespace is not considered.
44 |         c = NamespacedAttribute("a", "b", None)
45 |         assert a == c
46 | 
47 |         # But name and prefix are important.
48 |         d = NamespacedAttribute("a", "z", "c")
49 |         assert a != d
50 | 
51 |         e = NamespacedAttribute("z", "b", "c")
52 |         assert a != e
53 | 
54 | 
55 | class TestAttributeValueWithCharsetSubstitution(object):
56 |     """Certain attributes are designed to have the charset of the
57 |     final document substituted into their value.
58 |     """
59 |     
60 |     def test_content_meta_attribute_value(self):
61 |         # The value of a CharsetMetaAttributeValue is whatever
62 |         # encoding the string is in.
63 |         value = CharsetMetaAttributeValue("euc-jp")
64 |         assert "euc-jp" == value
65 |         assert "euc-jp" == value.original_value
66 |         assert "utf8" == value.encode("utf8")
67 |         assert "ascii" == value.encode("ascii")
68 | 
69 |     def test_content_meta_attribute_value(self):
70 |         value = ContentMetaAttributeValue("text/html; charset=euc-jp")
71 |         assert "text/html; charset=euc-jp" == value
72 |         assert "text/html; charset=euc-jp" == value.original_value
73 |         assert "text/html; charset=utf8" == value.encode("utf8")
74 |         assert "text/html; charset=ascii" == value.encode("ascii")
75 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/flask/logging.py:
--------------------------------------------------------------------------------

```python
 1 | from __future__ import annotations
 2 | 
 3 | import logging
 4 | import sys
 5 | import typing as t
 6 | 
 7 | from werkzeug.local import LocalProxy
 8 | 
 9 | from .globals import request
10 | 
11 | if t.TYPE_CHECKING:  # pragma: no cover
12 |     from .sansio.app import App
13 | 
14 | 
15 | @LocalProxy
16 | def wsgi_errors_stream() -> t.TextIO:
17 |     """Find the most appropriate error stream for the application. If a request
18 |     is active, log to ``wsgi.errors``, otherwise use ``sys.stderr``.
19 | 
20 |     If you configure your own :class:`logging.StreamHandler`, you may want to
21 |     use this for the stream. If you are using file or dict configuration and
22 |     can't import this directly, you can refer to it as
23 |     ``ext://flask.logging.wsgi_errors_stream``.
24 |     """
25 |     if request:
26 |         return request.environ["wsgi.errors"]  # type: ignore[no-any-return]
27 | 
28 |     return sys.stderr
29 | 
30 | 
31 | def has_level_handler(logger: logging.Logger) -> bool:
32 |     """Check if there is a handler in the logging chain that will handle the
33 |     given logger's :meth:`effective level <~logging.Logger.getEffectiveLevel>`.
34 |     """
35 |     level = logger.getEffectiveLevel()
36 |     current = logger
37 | 
38 |     while current:
39 |         if any(handler.level <= level for handler in current.handlers):
40 |             return True
41 | 
42 |         if not current.propagate:
43 |             break
44 | 
45 |         current = current.parent  # type: ignore
46 | 
47 |     return False
48 | 
49 | 
50 | #: Log messages to :func:`~flask.logging.wsgi_errors_stream` with the format
51 | #: ``[%(asctime)s] %(levelname)s in %(module)s: %(message)s``.
52 | default_handler = logging.StreamHandler(wsgi_errors_stream)  # type: ignore
53 | default_handler.setFormatter(
54 |     logging.Formatter("[%(asctime)s] %(levelname)s in %(module)s: %(message)s")
55 | )
56 | 
57 | 
58 | def create_logger(app: App) -> logging.Logger:
59 |     """Get the Flask app's logger and configure it if needed.
60 | 
61 |     The logger name will be the same as
62 |     :attr:`app.import_name <flask.Flask.name>`.
63 | 
64 |     When :attr:`~flask.Flask.debug` is enabled, set the logger level to
65 |     :data:`logging.DEBUG` if it is not set.
66 | 
67 |     If there is no handler for the logger's effective level, add a
68 |     :class:`~logging.StreamHandler` for
69 |     :func:`~flask.logging.wsgi_errors_stream` with a basic format.
70 |     """
71 |     logger = logging.getLogger(app.name)
72 | 
73 |     if app.debug and not logger.level:
74 |         logger.setLevel(logging.DEBUG)
75 | 
76 |     if not has_level_handler(logger):
77 |         logger.addHandler(default_handler)
78 | 
79 |     return logger
80 | 
```

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

```python
 1 | from __future__ import annotations
 2 | 
 3 | import binascii
 4 | import codecs
 5 | import os
 6 | import typing
 7 | from io import BytesIO
 8 | 
 9 | from .fields import _TYPE_FIELD_VALUE_TUPLE, RequestField
10 | 
11 | writer = codecs.lookup("utf-8")[3]
12 | 
13 | _TYPE_FIELDS_SEQUENCE = typing.Sequence[
14 |     typing.Union[typing.Tuple[str, _TYPE_FIELD_VALUE_TUPLE], RequestField]
15 | ]
16 | _TYPE_FIELDS = typing.Union[
17 |     _TYPE_FIELDS_SEQUENCE,
18 |     typing.Mapping[str, _TYPE_FIELD_VALUE_TUPLE],
19 | ]
20 | 
21 | 
22 | def choose_boundary() -> str:
23 |     """
24 |     Our embarrassingly-simple replacement for mimetools.choose_boundary.
25 |     """
26 |     return binascii.hexlify(os.urandom(16)).decode()
27 | 
28 | 
29 | def iter_field_objects(fields: _TYPE_FIELDS) -> typing.Iterable[RequestField]:
30 |     """
31 |     Iterate over fields.
32 | 
33 |     Supports list of (k, v) tuples and dicts, and lists of
34 |     :class:`~urllib3.fields.RequestField`.
35 | 
36 |     """
37 |     iterable: typing.Iterable[RequestField | tuple[str, _TYPE_FIELD_VALUE_TUPLE]]
38 | 
39 |     if isinstance(fields, typing.Mapping):
40 |         iterable = fields.items()
41 |     else:
42 |         iterable = fields
43 | 
44 |     for field in iterable:
45 |         if isinstance(field, RequestField):
46 |             yield field
47 |         else:
48 |             yield RequestField.from_tuples(*field)
49 | 
50 | 
51 | def encode_multipart_formdata(
52 |     fields: _TYPE_FIELDS, boundary: str | None = None
53 | ) -> tuple[bytes, str]:
54 |     """
55 |     Encode a dictionary of ``fields`` using the multipart/form-data MIME format.
56 | 
57 |     :param fields:
58 |         Dictionary of fields or list of (key, :class:`~urllib3.fields.RequestField`).
59 |         Values are processed by :func:`urllib3.fields.RequestField.from_tuples`.
60 | 
61 |     :param boundary:
62 |         If not specified, then a random boundary will be generated using
63 |         :func:`urllib3.filepost.choose_boundary`.
64 |     """
65 |     body = BytesIO()
66 |     if boundary is None:
67 |         boundary = choose_boundary()
68 | 
69 |     for field in iter_field_objects(fields):
70 |         body.write(f"--{boundary}\r\n".encode("latin-1"))
71 | 
72 |         writer(body).write(field.render_headers())
73 |         data = field.data
74 | 
75 |         if isinstance(data, int):
76 |             data = str(data)  # Backwards compatibility
77 | 
78 |         if isinstance(data, str):
79 |             writer(body).write(data)
80 |         else:
81 |             body.write(data)
82 | 
83 |         body.write(b"\r\n")
84 | 
85 |     body.write(f"--{boundary}--\r\n".encode("latin-1"))
86 | 
87 |     content_type = f"multipart/form-data; boundary={boundary}"
88 | 
89 |     return body.getvalue(), content_type
90 | 
```

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

```python
 1 | """Stuff that differs in different Python versions and platform
 2 | distributions."""
 3 | 
 4 | import importlib.resources
 5 | import logging
 6 | import os
 7 | import sys
 8 | from typing import IO
 9 | 
10 | __all__ = ["get_path_uid", "stdlib_pkgs", "WINDOWS"]
11 | 
12 | 
13 | logger = logging.getLogger(__name__)
14 | 
15 | 
16 | def has_tls() -> bool:
17 |     try:
18 |         import _ssl  # noqa: F401  # ignore unused
19 | 
20 |         return True
21 |     except ImportError:
22 |         pass
23 | 
24 |     from pip._vendor.urllib3.util import IS_PYOPENSSL
25 | 
26 |     return IS_PYOPENSSL
27 | 
28 | 
29 | def get_path_uid(path: str) -> int:
30 |     """
31 |     Return path's uid.
32 | 
33 |     Does not follow symlinks:
34 |         https://github.com/pypa/pip/pull/935#discussion_r5307003
35 | 
36 |     Placed this function in compat due to differences on AIX and
37 |     Jython, that should eventually go away.
38 | 
39 |     :raises OSError: When path is a symlink or can't be read.
40 |     """
41 |     if hasattr(os, "O_NOFOLLOW"):
42 |         fd = os.open(path, os.O_RDONLY | os.O_NOFOLLOW)
43 |         file_uid = os.fstat(fd).st_uid
44 |         os.close(fd)
45 |     else:  # AIX and Jython
46 |         # WARNING: time of check vulnerability, but best we can do w/o NOFOLLOW
47 |         if not os.path.islink(path):
48 |             # older versions of Jython don't have `os.fstat`
49 |             file_uid = os.stat(path).st_uid
50 |         else:
51 |             # raise OSError for parity with os.O_NOFOLLOW above
52 |             raise OSError(f"{path} is a symlink; Will not return uid for symlinks")
53 |     return file_uid
54 | 
55 | 
56 | # The importlib.resources.open_text function was deprecated in 3.11 with suggested
57 | # replacement we use below.
58 | if sys.version_info < (3, 11):
59 |     open_text_resource = importlib.resources.open_text
60 | else:
61 | 
62 |     def open_text_resource(
63 |         package: str, resource: str, encoding: str = "utf-8", errors: str = "strict"
64 |     ) -> IO[str]:
65 |         return (importlib.resources.files(package) / resource).open(
66 |             "r", encoding=encoding, errors=errors
67 |         )
68 | 
69 | 
70 | # packages in the stdlib that may have installation metadata, but should not be
71 | # considered 'installed'.  this theoretically could be determined based on
72 | # dist.location (py27:`sysconfig.get_paths()['stdlib']`,
73 | # py26:sysconfig.get_config_vars('LIBDEST')), but fear platform variation may
74 | # make this ineffective, so hard-coding
75 | stdlib_pkgs = {"python", "wsgiref", "argparse"}
76 | 
77 | 
78 | # windows detection, covers cpython and ironpython
79 | WINDOWS = sys.platform.startswith("win") or (sys.platform == "cli" and os.name == "nt")
80 | 
```

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

```python
 1 | from __future__ import absolute_import
 2 | 
 3 | import binascii
 4 | import codecs
 5 | import os
 6 | from io import BytesIO
 7 | 
 8 | from .fields import RequestField
 9 | from .packages import six
10 | from .packages.six import b
11 | 
12 | writer = codecs.lookup("utf-8")[3]
13 | 
14 | 
15 | def choose_boundary():
16 |     """
17 |     Our embarrassingly-simple replacement for mimetools.choose_boundary.
18 |     """
19 |     boundary = binascii.hexlify(os.urandom(16))
20 |     if not six.PY2:
21 |         boundary = boundary.decode("ascii")
22 |     return boundary
23 | 
24 | 
25 | def iter_field_objects(fields):
26 |     """
27 |     Iterate over fields.
28 | 
29 |     Supports list of (k, v) tuples and dicts, and lists of
30 |     :class:`~urllib3.fields.RequestField`.
31 | 
32 |     """
33 |     if isinstance(fields, dict):
34 |         i = six.iteritems(fields)
35 |     else:
36 |         i = iter(fields)
37 | 
38 |     for field in i:
39 |         if isinstance(field, RequestField):
40 |             yield field
41 |         else:
42 |             yield RequestField.from_tuples(*field)
43 | 
44 | 
45 | def iter_fields(fields):
46 |     """
47 |     .. deprecated:: 1.6
48 | 
49 |     Iterate over fields.
50 | 
51 |     The addition of :class:`~urllib3.fields.RequestField` makes this function
52 |     obsolete. Instead, use :func:`iter_field_objects`, which returns
53 |     :class:`~urllib3.fields.RequestField` objects.
54 | 
55 |     Supports list of (k, v) tuples and dicts.
56 |     """
57 |     if isinstance(fields, dict):
58 |         return ((k, v) for k, v in six.iteritems(fields))
59 | 
60 |     return ((k, v) for k, v in fields)
61 | 
62 | 
63 | def encode_multipart_formdata(fields, boundary=None):
64 |     """
65 |     Encode a dictionary of ``fields`` using the multipart/form-data MIME format.
66 | 
67 |     :param fields:
68 |         Dictionary of fields or list of (key, :class:`~urllib3.fields.RequestField`).
69 | 
70 |     :param boundary:
71 |         If not specified, then a random boundary will be generated using
72 |         :func:`urllib3.filepost.choose_boundary`.
73 |     """
74 |     body = BytesIO()
75 |     if boundary is None:
76 |         boundary = choose_boundary()
77 | 
78 |     for field in iter_field_objects(fields):
79 |         body.write(b("--%s\r\n" % (boundary)))
80 | 
81 |         writer(body).write(field.render_headers())
82 |         data = field.data
83 | 
84 |         if isinstance(data, int):
85 |             data = str(data)  # Backwards compatibility
86 | 
87 |         if isinstance(data, six.text_type):
88 |             writer(body).write(data)
89 |         else:
90 |             body.write(data)
91 | 
92 |         body.write(b"\r\n")
93 | 
94 |     body.write(b("--%s--\r\n" % (boundary)))
95 | 
96 |     content_type = str("multipart/form-data; boundary=%s" % boundary)
97 | 
98 |     return body.getvalue(), content_type
99 | 
```

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

```python
 1 | import os
 2 | import re
 3 | import sys
 4 | from typing import List, Optional
 5 | 
 6 | from pip._internal.locations import site_packages, user_site
 7 | from pip._internal.utils.virtualenv import (
 8 |     running_under_virtualenv,
 9 |     virtualenv_no_global,
10 | )
11 | 
12 | __all__ = [
13 |     "egg_link_path_from_sys_path",
14 |     "egg_link_path_from_location",
15 | ]
16 | 
17 | 
18 | def _egg_link_names(raw_name: str) -> List[str]:
19 |     """
20 |     Convert a Name metadata value to a .egg-link name, by applying
21 |     the same substitution as pkg_resources's safe_name function.
22 |     Note: we cannot use canonicalize_name because it has a different logic.
23 | 
24 |     We also look for the raw name (without normalization) as setuptools 69 changed
25 |     the way it names .egg-link files (https://github.com/pypa/setuptools/issues/4167).
26 |     """
27 |     return [
28 |         re.sub("[^A-Za-z0-9.]+", "-", raw_name) + ".egg-link",
29 |         f"{raw_name}.egg-link",
30 |     ]
31 | 
32 | 
33 | def egg_link_path_from_sys_path(raw_name: str) -> Optional[str]:
34 |     """
35 |     Look for a .egg-link file for project name, by walking sys.path.
36 |     """
37 |     egg_link_names = _egg_link_names(raw_name)
38 |     for path_item in sys.path:
39 |         for egg_link_name in egg_link_names:
40 |             egg_link = os.path.join(path_item, egg_link_name)
41 |             if os.path.isfile(egg_link):
42 |                 return egg_link
43 |     return None
44 | 
45 | 
46 | def egg_link_path_from_location(raw_name: str) -> Optional[str]:
47 |     """
48 |     Return the path for the .egg-link file if it exists, otherwise, None.
49 | 
50 |     There's 3 scenarios:
51 |     1) not in a virtualenv
52 |        try to find in site.USER_SITE, then site_packages
53 |     2) in a no-global virtualenv
54 |        try to find in site_packages
55 |     3) in a yes-global virtualenv
56 |        try to find in site_packages, then site.USER_SITE
57 |        (don't look in global location)
58 | 
59 |     For #1 and #3, there could be odd cases, where there's an egg-link in 2
60 |     locations.
61 | 
62 |     This method will just return the first one found.
63 |     """
64 |     sites: List[str] = []
65 |     if running_under_virtualenv():
66 |         sites.append(site_packages)
67 |         if not virtualenv_no_global() and user_site:
68 |             sites.append(user_site)
69 |     else:
70 |         if user_site:
71 |             sites.append(user_site)
72 |         sites.append(site_packages)
73 | 
74 |     egg_link_names = _egg_link_names(raw_name)
75 |     for site in sites:
76 |         for egg_link_name in egg_link_names:
77 |             egglink = os.path.join(site, egg_link_name)
78 |             if os.path.isfile(egglink):
79 |                 return egglink
80 |     return None
81 | 
```

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

```
 1 | /*
 2 |  * Summary: the XML document serializer
 3 |  * Description: API to save document or subtree of document
 4 |  *
 5 |  * Copy: See Copyright for the status of this software.
 6 |  *
 7 |  * Author: Daniel Veillard
 8 |  */
 9 | 
10 | #ifndef __XML_XMLSAVE_H__
11 | #define __XML_XMLSAVE_H__
12 | 
13 | #include <libxml/xmlversion.h>
14 | #include <libxml/tree.h>
15 | #include <libxml/encoding.h>
16 | #include <libxml/xmlIO.h>
17 | 
18 | #ifdef LIBXML_OUTPUT_ENABLED
19 | #ifdef __cplusplus
20 | extern "C" {
21 | #endif
22 | 
23 | /**
24 |  * xmlSaveOption:
25 |  *
26 |  * This is the set of XML save options that can be passed down
27 |  * to the xmlSaveToFd() and similar calls.
28 |  */
29 | typedef enum {
30 |     XML_SAVE_FORMAT     = 1<<0,	/* format save output */
31 |     XML_SAVE_NO_DECL    = 1<<1,	/* drop the xml declaration */
32 |     XML_SAVE_NO_EMPTY	= 1<<2, /* no empty tags */
33 |     XML_SAVE_NO_XHTML	= 1<<3, /* disable XHTML1 specific rules */
34 |     XML_SAVE_XHTML	= 1<<4, /* force XHTML1 specific rules */
35 |     XML_SAVE_AS_XML     = 1<<5, /* force XML serialization on HTML doc */
36 |     XML_SAVE_AS_HTML    = 1<<6, /* force HTML serialization on XML doc */
37 |     XML_SAVE_WSNONSIG   = 1<<7  /* format with non-significant whitespace */
38 | } xmlSaveOption;
39 | 
40 | 
41 | typedef struct _xmlSaveCtxt xmlSaveCtxt;
42 | typedef xmlSaveCtxt *xmlSaveCtxtPtr;
43 | 
44 | XMLPUBFUN xmlSaveCtxtPtr
45 | 		xmlSaveToFd		(int fd,
46 | 					 const char *encoding,
47 | 					 int options);
48 | XMLPUBFUN xmlSaveCtxtPtr
49 | 		xmlSaveToFilename	(const char *filename,
50 | 					 const char *encoding,
51 | 					 int options);
52 | 
53 | XMLPUBFUN xmlSaveCtxtPtr
54 | 		xmlSaveToBuffer		(xmlBufferPtr buffer,
55 | 					 const char *encoding,
56 | 					 int options);
57 | 
58 | XMLPUBFUN xmlSaveCtxtPtr
59 | 		xmlSaveToIO		(xmlOutputWriteCallback iowrite,
60 | 					 xmlOutputCloseCallback ioclose,
61 | 					 void *ioctx,
62 | 					 const char *encoding,
63 | 					 int options);
64 | 
65 | XMLPUBFUN long
66 | 		xmlSaveDoc		(xmlSaveCtxtPtr ctxt,
67 | 					 xmlDocPtr doc);
68 | XMLPUBFUN long
69 | 		xmlSaveTree		(xmlSaveCtxtPtr ctxt,
70 | 					 xmlNodePtr node);
71 | 
72 | XMLPUBFUN int
73 | 		xmlSaveFlush		(xmlSaveCtxtPtr ctxt);
74 | XMLPUBFUN int
75 | 		xmlSaveClose		(xmlSaveCtxtPtr ctxt);
76 | XMLPUBFUN int
77 | 		xmlSaveSetEscape	(xmlSaveCtxtPtr ctxt,
78 | 					 xmlCharEncodingOutputFunc escape);
79 | XMLPUBFUN int
80 | 		xmlSaveSetAttrEscape	(xmlSaveCtxtPtr ctxt,
81 | 					 xmlCharEncodingOutputFunc escape);
82 | 
83 | XMLPUBFUN int
84 |                 xmlThrDefIndentTreeOutput(int v);
85 | XMLPUBFUN const char *
86 |                 xmlThrDefTreeIndentString(const char * v);
87 | XMLPUBFUN int
88 |                 xmlThrDefSaveNoEmptyTags(int v);
89 | 
90 | #ifdef __cplusplus
91 | }
92 | #endif
93 | 
94 | #endif /* LIBXML_OUTPUT_ENABLED */
95 | #endif /* __XML_XMLSAVE_H__ */
96 | 
97 | 
98 | 
```

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

```python
 1 | import inspect
 2 | import typing as t
 3 | from functools import WRAPPER_ASSIGNMENTS
 4 | from functools import wraps
 5 | 
 6 | from .utils import _PassArg
 7 | from .utils import pass_eval_context
 8 | 
 9 | V = t.TypeVar("V")
10 | 
11 | 
12 | def async_variant(normal_func):  # type: ignore
13 |     def decorator(async_func):  # type: ignore
14 |         pass_arg = _PassArg.from_obj(normal_func)
15 |         need_eval_context = pass_arg is None
16 | 
17 |         if pass_arg is _PassArg.environment:
18 | 
19 |             def is_async(args: t.Any) -> bool:
20 |                 return t.cast(bool, args[0].is_async)
21 | 
22 |         else:
23 | 
24 |             def is_async(args: t.Any) -> bool:
25 |                 return t.cast(bool, args[0].environment.is_async)
26 | 
27 |         # Take the doc and annotations from the sync function, but the
28 |         # name from the async function. Pallets-Sphinx-Themes
29 |         # build_function_directive expects __wrapped__ to point to the
30 |         # sync function.
31 |         async_func_attrs = ("__module__", "__name__", "__qualname__")
32 |         normal_func_attrs = tuple(set(WRAPPER_ASSIGNMENTS).difference(async_func_attrs))
33 | 
34 |         @wraps(normal_func, assigned=normal_func_attrs)
35 |         @wraps(async_func, assigned=async_func_attrs, updated=())
36 |         def wrapper(*args, **kwargs):  # type: ignore
37 |             b = is_async(args)
38 | 
39 |             if need_eval_context:
40 |                 args = args[1:]
41 | 
42 |             if b:
43 |                 return async_func(*args, **kwargs)
44 | 
45 |             return normal_func(*args, **kwargs)
46 | 
47 |         if need_eval_context:
48 |             wrapper = pass_eval_context(wrapper)
49 | 
50 |         wrapper.jinja_async_variant = True  # type: ignore[attr-defined]
51 |         return wrapper
52 | 
53 |     return decorator
54 | 
55 | 
56 | _common_primitives = {int, float, bool, str, list, dict, tuple, type(None)}
57 | 
58 | 
59 | async def auto_await(value: t.Union[t.Awaitable["V"], "V"]) -> "V":
60 |     # Avoid a costly call to isawaitable
61 |     if type(value) in _common_primitives:
62 |         return t.cast("V", value)
63 | 
64 |     if inspect.isawaitable(value):
65 |         return await t.cast("t.Awaitable[V]", value)
66 | 
67 |     return t.cast("V", value)
68 | 
69 | 
70 | async def auto_aiter(
71 |     iterable: "t.Union[t.AsyncIterable[V], t.Iterable[V]]",
72 | ) -> "t.AsyncIterator[V]":
73 |     if hasattr(iterable, "__aiter__"):
74 |         async for item in t.cast("t.AsyncIterable[V]", iterable):
75 |             yield item
76 |     else:
77 |         for item in iterable:
78 |             yield item
79 | 
80 | 
81 | async def auto_to_list(
82 |     value: "t.Union[t.AsyncIterable[V], t.Iterable[V]]",
83 | ) -> t.List["V"]:
84 |     return [x async for x in auto_aiter(value)]
85 | 
```

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

```python
 1 | from typing import FrozenSet, Optional, Set
 2 | 
 3 | from pip._vendor.packaging.utils import canonicalize_name
 4 | 
 5 | from pip._internal.exceptions import CommandError
 6 | 
 7 | 
 8 | class FormatControl:
 9 |     """Helper for managing formats from which a package can be installed."""
10 | 
11 |     __slots__ = ["no_binary", "only_binary"]
12 | 
13 |     def __init__(
14 |         self,
15 |         no_binary: Optional[Set[str]] = None,
16 |         only_binary: Optional[Set[str]] = None,
17 |     ) -> None:
18 |         if no_binary is None:
19 |             no_binary = set()
20 |         if only_binary is None:
21 |             only_binary = set()
22 | 
23 |         self.no_binary = no_binary
24 |         self.only_binary = only_binary
25 | 
26 |     def __eq__(self, other: object) -> bool:
27 |         if not isinstance(other, self.__class__):
28 |             return NotImplemented
29 | 
30 |         if self.__slots__ != other.__slots__:
31 |             return False
32 | 
33 |         return all(getattr(self, k) == getattr(other, k) for k in self.__slots__)
34 | 
35 |     def __repr__(self) -> str:
36 |         return f"{self.__class__.__name__}({self.no_binary}, {self.only_binary})"
37 | 
38 |     @staticmethod
39 |     def handle_mutual_excludes(value: str, target: Set[str], other: Set[str]) -> None:
40 |         if value.startswith("-"):
41 |             raise CommandError(
42 |                 "--no-binary / --only-binary option requires 1 argument."
43 |             )
44 |         new = value.split(",")
45 |         while ":all:" in new:
46 |             other.clear()
47 |             target.clear()
48 |             target.add(":all:")
49 |             del new[: new.index(":all:") + 1]
50 |             # Without a none, we want to discard everything as :all: covers it
51 |             if ":none:" not in new:
52 |                 return
53 |         for name in new:
54 |             if name == ":none:":
55 |                 target.clear()
56 |                 continue
57 |             name = canonicalize_name(name)
58 |             other.discard(name)
59 |             target.add(name)
60 | 
61 |     def get_allowed_formats(self, canonical_name: str) -> FrozenSet[str]:
62 |         result = {"binary", "source"}
63 |         if canonical_name in self.only_binary:
64 |             result.discard("source")
65 |         elif canonical_name in self.no_binary:
66 |             result.discard("binary")
67 |         elif ":all:" in self.only_binary:
68 |             result.discard("source")
69 |         elif ":all:" in self.no_binary:
70 |             result.discard("binary")
71 |         return frozenset(result)
72 | 
73 |     def disallow_binaries(self) -> None:
74 |         self.handle_mutual_excludes(
75 |             ":all:",
76 |             self.no_binary,
77 |             self.only_binary,
78 |         )
79 | 
```

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

```python
 1 | import sys
 2 | from typing import TYPE_CHECKING, Optional, Union
 3 | 
 4 | from .jupyter import JupyterMixin
 5 | from .segment import Segment
 6 | from .style import Style
 7 | from ._emoji_codes import EMOJI
 8 | from ._emoji_replace import _emoji_replace
 9 | 
10 | if sys.version_info >= (3, 8):
11 |     from typing import Literal
12 | else:
13 |     from pip._vendor.typing_extensions import Literal  # pragma: no cover
14 | 
15 | 
16 | if TYPE_CHECKING:
17 |     from .console import Console, ConsoleOptions, RenderResult
18 | 
19 | 
20 | EmojiVariant = Literal["emoji", "text"]
21 | 
22 | 
23 | class NoEmoji(Exception):
24 |     """No emoji by that name."""
25 | 
26 | 
27 | class Emoji(JupyterMixin):
28 |     __slots__ = ["name", "style", "_char", "variant"]
29 | 
30 |     VARIANTS = {"text": "\uFE0E", "emoji": "\uFE0F"}
31 | 
32 |     def __init__(
33 |         self,
34 |         name: str,
35 |         style: Union[str, Style] = "none",
36 |         variant: Optional[EmojiVariant] = None,
37 |     ) -> None:
38 |         """A single emoji character.
39 | 
40 |         Args:
41 |             name (str): Name of emoji.
42 |             style (Union[str, Style], optional): Optional style. Defaults to None.
43 | 
44 |         Raises:
45 |             NoEmoji: If the emoji doesn't exist.
46 |         """
47 |         self.name = name
48 |         self.style = style
49 |         self.variant = variant
50 |         try:
51 |             self._char = EMOJI[name]
52 |         except KeyError:
53 |             raise NoEmoji(f"No emoji called {name!r}")
54 |         if variant is not None:
55 |             self._char += self.VARIANTS.get(variant, "")
56 | 
57 |     @classmethod
58 |     def replace(cls, text: str) -> str:
59 |         """Replace emoji markup with corresponding unicode characters.
60 | 
61 |         Args:
62 |             text (str): A string with emojis codes, e.g. "Hello :smiley:!"
63 | 
64 |         Returns:
65 |             str: A string with emoji codes replaces with actual emoji.
66 |         """
67 |         return _emoji_replace(text)
68 | 
69 |     def __repr__(self) -> str:
70 |         return f"<emoji {self.name!r}>"
71 | 
72 |     def __str__(self) -> str:
73 |         return self._char
74 | 
75 |     def __rich_console__(
76 |         self, console: "Console", options: "ConsoleOptions"
77 |     ) -> "RenderResult":
78 |         yield Segment(self._char, console.get_style(self.style))
79 | 
80 | 
81 | if __name__ == "__main__":  # pragma: no cover
82 |     import sys
83 | 
84 |     from pip._vendor.rich.columns import Columns
85 |     from pip._vendor.rich.console import Console
86 | 
87 |     console = Console(record=True)
88 | 
89 |     columns = Columns(
90 |         (f":{name}: {name}" for name in sorted(EMOJI.keys()) if "\u200D" not in name),
91 |         column_first=True,
92 |     )
93 | 
94 |     console.print(columns)
95 |     if len(sys.argv) > 1:
96 |         console.save_html(sys.argv[1])
97 | 
```

--------------------------------------------------------------------------------
/.venv/lib/python3.12/site-packages/itsdangerous/url_safe.py:
--------------------------------------------------------------------------------

```python
 1 | from __future__ import annotations
 2 | 
 3 | import typing as t
 4 | import zlib
 5 | 
 6 | from ._json import _CompactJSON
 7 | from .encoding import base64_decode
 8 | from .encoding import base64_encode
 9 | from .exc import BadPayload
10 | from .serializer import _PDataSerializer
11 | from .serializer import Serializer
12 | from .timed import TimedSerializer
13 | 
14 | 
15 | class URLSafeSerializerMixin(Serializer[str]):
16 |     """Mixed in with a regular serializer it will attempt to zlib
17 |     compress the string to make it shorter if necessary. It will also
18 |     base64 encode the string so that it can safely be placed in a URL.
19 |     """
20 | 
21 |     default_serializer: _PDataSerializer[str] = _CompactJSON
22 | 
23 |     def load_payload(
24 |         self,
25 |         payload: bytes,
26 |         *args: t.Any,
27 |         serializer: t.Any | None = None,
28 |         **kwargs: t.Any,
29 |     ) -> t.Any:
30 |         decompress = False
31 | 
32 |         if payload.startswith(b"."):
33 |             payload = payload[1:]
34 |             decompress = True
35 | 
36 |         try:
37 |             json = base64_decode(payload)
38 |         except Exception as e:
39 |             raise BadPayload(
40 |                 "Could not base64 decode the payload because of an exception",
41 |                 original_error=e,
42 |             ) from e
43 | 
44 |         if decompress:
45 |             try:
46 |                 json = zlib.decompress(json)
47 |             except Exception as e:
48 |                 raise BadPayload(
49 |                     "Could not zlib decompress the payload before decoding the payload",
50 |                     original_error=e,
51 |                 ) from e
52 | 
53 |         return super().load_payload(json, *args, **kwargs)
54 | 
55 |     def dump_payload(self, obj: t.Any) -> bytes:
56 |         json = super().dump_payload(obj)
57 |         is_compressed = False
58 |         compressed = zlib.compress(json)
59 | 
60 |         if len(compressed) < (len(json) - 1):
61 |             json = compressed
62 |             is_compressed = True
63 | 
64 |         base64d = base64_encode(json)
65 | 
66 |         if is_compressed:
67 |             base64d = b"." + base64d
68 | 
69 |         return base64d
70 | 
71 | 
72 | class URLSafeSerializer(URLSafeSerializerMixin, Serializer[str]):
73 |     """Works like :class:`.Serializer` but dumps and loads into a URL
74 |     safe string consisting of the upper and lowercase character of the
75 |     alphabet as well as ``'_'``, ``'-'`` and ``'.'``.
76 |     """
77 | 
78 | 
79 | class URLSafeTimedSerializer(URLSafeSerializerMixin, TimedSerializer[str]):
80 |     """Works like :class:`.TimedSerializer` but dumps and loads into a
81 |     URL safe string consisting of the upper and lowercase character of
82 |     the alphabet as well as ``'_'``, ``'-'`` and ``'.'``.
83 |     """
84 | 
```

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

```python
 1 | # coding: utf-8
 2 | """Functions for reporting filesizes. Borrowed from https://github.com/PyFilesystem/pyfilesystem2
 3 | 
 4 | The functions declared in this module should cover the different
 5 | use cases needed to generate a string representation of a file size
 6 | using several different units. Since there are many standards regarding
 7 | file size units, three different functions have been implemented.
 8 | 
 9 | See Also:
10 |     * `Wikipedia: Binary prefix <https://en.wikipedia.org/wiki/Binary_prefix>`_
11 | 
12 | """
13 | 
14 | __all__ = ["decimal"]
15 | 
16 | from typing import Iterable, List, Optional, Tuple
17 | 
18 | 
19 | def _to_str(
20 |     size: int,
21 |     suffixes: Iterable[str],
22 |     base: int,
23 |     *,
24 |     precision: Optional[int] = 1,
25 |     separator: Optional[str] = " ",
26 | ) -> str:
27 |     if size == 1:
28 |         return "1 byte"
29 |     elif size < base:
30 |         return "{:,} bytes".format(size)
31 | 
32 |     for i, suffix in enumerate(suffixes, 2):  # noqa: B007
33 |         unit = base**i
34 |         if size < unit:
35 |             break
36 |     return "{:,.{precision}f}{separator}{}".format(
37 |         (base * size / unit),
38 |         suffix,
39 |         precision=precision,
40 |         separator=separator,
41 |     )
42 | 
43 | 
44 | def pick_unit_and_suffix(size: int, suffixes: List[str], base: int) -> Tuple[int, str]:
45 |     """Pick a suffix and base for the given size."""
46 |     for i, suffix in enumerate(suffixes):
47 |         unit = base**i
48 |         if size < unit * base:
49 |             break
50 |     return unit, suffix
51 | 
52 | 
53 | def decimal(
54 |     size: int,
55 |     *,
56 |     precision: Optional[int] = 1,
57 |     separator: Optional[str] = " ",
58 | ) -> str:
59 |     """Convert a filesize in to a string (powers of 1000, SI prefixes).
60 | 
61 |     In this convention, ``1000 B = 1 kB``.
62 | 
63 |     This is typically the format used to advertise the storage
64 |     capacity of USB flash drives and the like (*256 MB* meaning
65 |     actually a storage capacity of more than *256 000 000 B*),
66 |     or used by **Mac OS X** since v10.6 to report file sizes.
67 | 
68 |     Arguments:
69 |         int (size): A file size.
70 |         int (precision): The number of decimal places to include (default = 1).
71 |         str (separator): The string to separate the value from the units (default = " ").
72 | 
73 |     Returns:
74 |         `str`: A string containing a abbreviated file size and units.
75 | 
76 |     Example:
77 |         >>> filesize.decimal(30000)
78 |         '30.0 kB'
79 |         >>> filesize.decimal(30000, precision=2, separator="")
80 |         '30.00kB'
81 | 
82 |     """
83 |     return _to_str(
84 |         size,
85 |         ("kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"),
86 |         1000,
87 |         precision=precision,
88 |         separator=separator,
89 |     )
90 | 
```

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

```python
 1 | import functools
 2 | import os
 3 | import site
 4 | import sys
 5 | import sysconfig
 6 | import typing
 7 | 
 8 | from pip._internal.exceptions import InstallationError
 9 | from pip._internal.utils import appdirs
10 | from pip._internal.utils.virtualenv import running_under_virtualenv
11 | 
12 | # Application Directories
13 | USER_CACHE_DIR = appdirs.user_cache_dir("pip")
14 | 
15 | # FIXME doesn't account for venv linked to global site-packages
16 | site_packages: str = sysconfig.get_path("purelib")
17 | 
18 | 
19 | def get_major_minor_version() -> str:
20 |     """
21 |     Return the major-minor version of the current Python as a string, e.g.
22 |     "3.7" or "3.10".
23 |     """
24 |     return "{}.{}".format(*sys.version_info)
25 | 
26 | 
27 | def change_root(new_root: str, pathname: str) -> str:
28 |     """Return 'pathname' with 'new_root' prepended.
29 | 
30 |     If 'pathname' is relative, this is equivalent to os.path.join(new_root, pathname).
31 |     Otherwise, it requires making 'pathname' relative and then joining the
32 |     two, which is tricky on DOS/Windows and Mac OS.
33 | 
34 |     This is borrowed from Python's standard library's distutils module.
35 |     """
36 |     if os.name == "posix":
37 |         if not os.path.isabs(pathname):
38 |             return os.path.join(new_root, pathname)
39 |         else:
40 |             return os.path.join(new_root, pathname[1:])
41 | 
42 |     elif os.name == "nt":
43 |         (drive, path) = os.path.splitdrive(pathname)
44 |         if path[0] == "\\":
45 |             path = path[1:]
46 |         return os.path.join(new_root, path)
47 | 
48 |     else:
49 |         raise InstallationError(
50 |             f"Unknown platform: {os.name}\n"
51 |             "Can not change root path prefix on unknown platform."
52 |         )
53 | 
54 | 
55 | def get_src_prefix() -> str:
56 |     if running_under_virtualenv():
57 |         src_prefix = os.path.join(sys.prefix, "src")
58 |     else:
59 |         # FIXME: keep src in cwd for now (it is not a temporary folder)
60 |         try:
61 |             src_prefix = os.path.join(os.getcwd(), "src")
62 |         except OSError:
63 |             # In case the current working directory has been renamed or deleted
64 |             sys.exit("The folder you are executing pip from can no longer be found.")
65 | 
66 |     # under macOS + virtualenv sys.prefix is not properly resolved
67 |     # it is something like /path/to/python/bin/..
68 |     return os.path.abspath(src_prefix)
69 | 
70 | 
71 | try:
72 |     # Use getusersitepackages if this is present, as it ensures that the
73 |     # value is initialised properly.
74 |     user_site: typing.Optional[str] = site.getusersitepackages()
75 | except AttributeError:
76 |     user_site = site.USER_SITE
77 | 
78 | 
79 | @functools.lru_cache(maxsize=None)
80 | def is_osx_framework() -> bool:
81 |     return bool(sysconfig.get_config_var("PYTHONFRAMEWORK"))
82 | 
```
Page 5/168FirstPrevNextLast