primary-api-models 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- primary_api_models/__init__.py +53 -0
- primary_api_models/account_data.py +62 -0
- primary_api_models/commons.py +49 -0
- primary_api_models/detailed_instruments.py +11 -0
- primary_api_models/detailed_position.py +53 -0
- primary_api_models/enhanced_models.py +27 -0
- primary_api_models/enums.py +184 -0
- primary_api_models/instrument_details.py +48 -0
- primary_api_models/listed_instruments.py +14 -0
- primary_api_models/market_data.py +25 -0
- primary_api_models/order_report.py +34 -0
- primary_api_models/order_status.py +11 -0
- primary_api_models/positions.py +27 -0
- primary_api_models-0.1.0.dist-info/METADATA +7 -0
- primary_api_models-0.1.0.dist-info/RECORD +1580 -0
- primary_api_models-0.1.0.dist-info/WHEEL +5 -0
- primary_api_models-0.1.0.dist-info/top_level.txt +3 -0
- tests/conftest.py +6 -0
- tests/test_models.py +61 -0
- venv/Lib/site-packages/_pytest/__init__.py +13 -0
- venv/Lib/site-packages/_pytest/_argcomplete.py +117 -0
- venv/Lib/site-packages/_pytest/_code/__init__.py +26 -0
- venv/Lib/site-packages/_pytest/_code/code.py +1571 -0
- venv/Lib/site-packages/_pytest/_code/source.py +225 -0
- venv/Lib/site-packages/_pytest/_io/__init__.py +10 -0
- venv/Lib/site-packages/_pytest/_io/pprint.py +673 -0
- venv/Lib/site-packages/_pytest/_io/saferepr.py +130 -0
- venv/Lib/site-packages/_pytest/_io/terminalwriter.py +258 -0
- venv/Lib/site-packages/_pytest/_io/wcwidth.py +57 -0
- venv/Lib/site-packages/_pytest/_py/__init__.py +0 -0
- venv/Lib/site-packages/_pytest/_py/error.py +119 -0
- venv/Lib/site-packages/_pytest/_py/path.py +1475 -0
- venv/Lib/site-packages/_pytest/_version.py +24 -0
- venv/Lib/site-packages/_pytest/assertion/__init__.py +208 -0
- venv/Lib/site-packages/_pytest/assertion/rewrite.py +1202 -0
- venv/Lib/site-packages/_pytest/assertion/truncate.py +137 -0
- venv/Lib/site-packages/_pytest/assertion/util.py +615 -0
- venv/Lib/site-packages/_pytest/cacheprovider.py +646 -0
- venv/Lib/site-packages/_pytest/capture.py +1144 -0
- venv/Lib/site-packages/_pytest/compat.py +314 -0
- venv/Lib/site-packages/_pytest/config/__init__.py +2203 -0
- venv/Lib/site-packages/_pytest/config/argparsing.py +578 -0
- venv/Lib/site-packages/_pytest/config/compat.py +85 -0
- venv/Lib/site-packages/_pytest/config/exceptions.py +15 -0
- venv/Lib/site-packages/_pytest/config/findpaths.py +350 -0
- venv/Lib/site-packages/_pytest/debugging.py +407 -0
- venv/Lib/site-packages/_pytest/deprecated.py +99 -0
- venv/Lib/site-packages/_pytest/doctest.py +736 -0
- venv/Lib/site-packages/_pytest/faulthandler.py +119 -0
- venv/Lib/site-packages/_pytest/fixtures.py +2047 -0
- venv/Lib/site-packages/_pytest/freeze_support.py +45 -0
- venv/Lib/site-packages/_pytest/helpconfig.py +293 -0
- venv/Lib/site-packages/_pytest/hookspec.py +1342 -0
- venv/Lib/site-packages/_pytest/junitxml.py +695 -0
- venv/Lib/site-packages/_pytest/legacypath.py +468 -0
- venv/Lib/site-packages/_pytest/logging.py +960 -0
- venv/Lib/site-packages/_pytest/main.py +1203 -0
- venv/Lib/site-packages/_pytest/mark/__init__.py +301 -0
- venv/Lib/site-packages/_pytest/mark/expression.py +353 -0
- venv/Lib/site-packages/_pytest/mark/structures.py +664 -0
- venv/Lib/site-packages/_pytest/monkeypatch.py +435 -0
- venv/Lib/site-packages/_pytest/nodes.py +772 -0
- venv/Lib/site-packages/_pytest/outcomes.py +308 -0
- venv/Lib/site-packages/_pytest/pastebin.py +117 -0
- venv/Lib/site-packages/_pytest/pathlib.py +1063 -0
- venv/Lib/site-packages/_pytest/py.typed +0 -0
- venv/Lib/site-packages/_pytest/pytester.py +1791 -0
- venv/Lib/site-packages/_pytest/pytester_assertions.py +74 -0
- venv/Lib/site-packages/_pytest/python.py +1772 -0
- venv/Lib/site-packages/_pytest/python_api.py +819 -0
- venv/Lib/site-packages/_pytest/raises.py +1517 -0
- venv/Lib/site-packages/_pytest/recwarn.py +367 -0
- venv/Lib/site-packages/_pytest/reports.py +694 -0
- venv/Lib/site-packages/_pytest/runner.py +580 -0
- venv/Lib/site-packages/_pytest/scope.py +91 -0
- venv/Lib/site-packages/_pytest/setuponly.py +98 -0
- venv/Lib/site-packages/_pytest/setupplan.py +39 -0
- venv/Lib/site-packages/_pytest/skipping.py +321 -0
- venv/Lib/site-packages/_pytest/stash.py +116 -0
- venv/Lib/site-packages/_pytest/stepwise.py +209 -0
- venv/Lib/site-packages/_pytest/subtests.py +411 -0
- venv/Lib/site-packages/_pytest/terminal.py +1763 -0
- venv/Lib/site-packages/_pytest/terminalprogress.py +30 -0
- venv/Lib/site-packages/_pytest/threadexception.py +152 -0
- venv/Lib/site-packages/_pytest/timing.py +95 -0
- venv/Lib/site-packages/_pytest/tmpdir.py +337 -0
- venv/Lib/site-packages/_pytest/tracemalloc.py +24 -0
- venv/Lib/site-packages/_pytest/unittest.py +632 -0
- venv/Lib/site-packages/_pytest/unraisableexception.py +163 -0
- venv/Lib/site-packages/_pytest/warning_types.py +172 -0
- venv/Lib/site-packages/_pytest/warnings.py +151 -0
- venv/Lib/site-packages/annotated_types/__init__.py +432 -0
- venv/Lib/site-packages/annotated_types/py.typed +0 -0
- venv/Lib/site-packages/annotated_types/test_cases.py +151 -0
- venv/Lib/site-packages/build/__init__.py +47 -0
- venv/Lib/site-packages/build/__main__.py +654 -0
- venv/Lib/site-packages/build/_builder.py +393 -0
- venv/Lib/site-packages/build/_compat/__init__.py +0 -0
- venv/Lib/site-packages/build/_compat/importlib.py +22 -0
- venv/Lib/site-packages/build/_compat/tarfile.py +31 -0
- venv/Lib/site-packages/build/_compat/tomllib.py +19 -0
- venv/Lib/site-packages/build/_ctx.py +105 -0
- venv/Lib/site-packages/build/_exceptions.py +69 -0
- venv/Lib/site-packages/build/_types.py +22 -0
- venv/Lib/site-packages/build/_util.py +68 -0
- venv/Lib/site-packages/build/env.py +507 -0
- venv/Lib/site-packages/build/py.typed +0 -0
- venv/Lib/site-packages/build/util.py +70 -0
- venv/Lib/site-packages/certifi/__init__.py +4 -0
- venv/Lib/site-packages/certifi/__main__.py +12 -0
- venv/Lib/site-packages/certifi/core.py +83 -0
- venv/Lib/site-packages/certifi/py.typed +0 -0
- venv/Lib/site-packages/charset_normalizer/__init__.py +48 -0
- venv/Lib/site-packages/charset_normalizer/__main__.py +6 -0
- venv/Lib/site-packages/charset_normalizer/api.py +988 -0
- venv/Lib/site-packages/charset_normalizer/cd.py +454 -0
- venv/Lib/site-packages/charset_normalizer/cli/__init__.py +8 -0
- venv/Lib/site-packages/charset_normalizer/cli/__main__.py +362 -0
- venv/Lib/site-packages/charset_normalizer/constant.py +2050 -0
- venv/Lib/site-packages/charset_normalizer/legacy.py +79 -0
- venv/Lib/site-packages/charset_normalizer/md.py +936 -0
- venv/Lib/site-packages/charset_normalizer/models.py +369 -0
- venv/Lib/site-packages/charset_normalizer/py.typed +0 -0
- venv/Lib/site-packages/charset_normalizer/utils.py +422 -0
- venv/Lib/site-packages/charset_normalizer/version.py +8 -0
- venv/Lib/site-packages/colorama/__init__.py +7 -0
- venv/Lib/site-packages/colorama/ansi.py +102 -0
- venv/Lib/site-packages/colorama/ansitowin32.py +277 -0
- venv/Lib/site-packages/colorama/initialise.py +121 -0
- venv/Lib/site-packages/colorama/tests/__init__.py +1 -0
- venv/Lib/site-packages/colorama/tests/ansi_test.py +76 -0
- venv/Lib/site-packages/colorama/tests/ansitowin32_test.py +294 -0
- venv/Lib/site-packages/colorama/tests/initialise_test.py +189 -0
- venv/Lib/site-packages/colorama/tests/isatty_test.py +57 -0
- venv/Lib/site-packages/colorama/tests/utils.py +49 -0
- venv/Lib/site-packages/colorama/tests/winterm_test.py +131 -0
- venv/Lib/site-packages/colorama/win32.py +180 -0
- venv/Lib/site-packages/colorama/winterm.py +195 -0
- venv/Lib/site-packages/docutils/__init__.py +341 -0
- venv/Lib/site-packages/docutils/__main__.py +103 -0
- venv/Lib/site-packages/docutils/core.py +855 -0
- venv/Lib/site-packages/docutils/examples.py +123 -0
- venv/Lib/site-packages/docutils/frontend.py +1178 -0
- venv/Lib/site-packages/docutils/io.py +716 -0
- venv/Lib/site-packages/docutils/languages/__init__.py +117 -0
- venv/Lib/site-packages/docutils/languages/af.py +58 -0
- venv/Lib/site-packages/docutils/languages/ar.py +60 -0
- venv/Lib/site-packages/docutils/languages/ca.py +65 -0
- venv/Lib/site-packages/docutils/languages/cs.py +60 -0
- venv/Lib/site-packages/docutils/languages/da.py +61 -0
- venv/Lib/site-packages/docutils/languages/de.py +58 -0
- venv/Lib/site-packages/docutils/languages/en.py +60 -0
- venv/Lib/site-packages/docutils/languages/eo.py +61 -0
- venv/Lib/site-packages/docutils/languages/es.py +58 -0
- venv/Lib/site-packages/docutils/languages/fa.py +60 -0
- venv/Lib/site-packages/docutils/languages/fi.py +60 -0
- venv/Lib/site-packages/docutils/languages/fr.py +58 -0
- venv/Lib/site-packages/docutils/languages/gl.py +62 -0
- venv/Lib/site-packages/docutils/languages/he.py +62 -0
- venv/Lib/site-packages/docutils/languages/it.py +58 -0
- venv/Lib/site-packages/docutils/languages/ja.py +60 -0
- venv/Lib/site-packages/docutils/languages/ka.py +58 -0
- venv/Lib/site-packages/docutils/languages/ko.py +60 -0
- venv/Lib/site-packages/docutils/languages/lt.py +60 -0
- venv/Lib/site-packages/docutils/languages/lv.py +59 -0
- venv/Lib/site-packages/docutils/languages/nl.py +60 -0
- venv/Lib/site-packages/docutils/languages/pl.py +60 -0
- venv/Lib/site-packages/docutils/languages/pt_br.py +60 -0
- venv/Lib/site-packages/docutils/languages/ru.py +58 -0
- venv/Lib/site-packages/docutils/languages/sk.py +58 -0
- venv/Lib/site-packages/docutils/languages/sv.py +59 -0
- venv/Lib/site-packages/docutils/languages/uk.py +58 -0
- venv/Lib/site-packages/docutils/languages/zh_cn.py +62 -0
- venv/Lib/site-packages/docutils/languages/zh_tw.py +61 -0
- venv/Lib/site-packages/docutils/nodes.py +3341 -0
- venv/Lib/site-packages/docutils/parsers/__init__.py +115 -0
- venv/Lib/site-packages/docutils/parsers/commonmark_wrapper.py +56 -0
- venv/Lib/site-packages/docutils/parsers/docutils_xml.py +194 -0
- venv/Lib/site-packages/docutils/parsers/null.py +24 -0
- venv/Lib/site-packages/docutils/parsers/recommonmark_wrapper.py +174 -0
- venv/Lib/site-packages/docutils/parsers/rst/__init__.py +414 -0
- venv/Lib/site-packages/docutils/parsers/rst/directives/__init__.py +480 -0
- venv/Lib/site-packages/docutils/parsers/rst/directives/admonitions.py +101 -0
- venv/Lib/site-packages/docutils/parsers/rst/directives/body.py +329 -0
- venv/Lib/site-packages/docutils/parsers/rst/directives/html.py +21 -0
- venv/Lib/site-packages/docutils/parsers/rst/directives/images.py +186 -0
- venv/Lib/site-packages/docutils/parsers/rst/directives/misc.py +690 -0
- venv/Lib/site-packages/docutils/parsers/rst/directives/parts.py +129 -0
- venv/Lib/site-packages/docutils/parsers/rst/directives/references.py +28 -0
- venv/Lib/site-packages/docutils/parsers/rst/directives/tables.py +523 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/__init__.py +63 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/af.py +107 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/ar.py +99 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/ca.py +130 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/cs.py +110 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/da.py +113 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/de.py +106 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/en.py +115 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/eo.py +118 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/es.py +121 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/fa.py +102 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/fi.py +98 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/fr.py +107 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/gl.py +106 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/he.py +110 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/it.py +98 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/ja.py +119 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/ka.py +89 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/ko.py +111 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/lt.py +109 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/lv.py +108 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/nl.py +113 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/pl.py +100 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/pt_br.py +109 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/ru.py +90 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/sk.py +96 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/sv.py +96 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/uk.py +91 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/zh_cn.py +104 -0
- venv/Lib/site-packages/docutils/parsers/rst/languages/zh_tw.py +109 -0
- venv/Lib/site-packages/docutils/parsers/rst/roles.py +450 -0
- venv/Lib/site-packages/docutils/parsers/rst/states.py +3266 -0
- venv/Lib/site-packages/docutils/parsers/rst/tableparser.py +543 -0
- venv/Lib/site-packages/docutils/readers/__init__.py +135 -0
- venv/Lib/site-packages/docutils/readers/doctree.py +50 -0
- venv/Lib/site-packages/docutils/readers/pep.py +55 -0
- venv/Lib/site-packages/docutils/readers/standalone.py +65 -0
- venv/Lib/site-packages/docutils/statemachine.py +1534 -0
- venv/Lib/site-packages/docutils/transforms/__init__.py +196 -0
- venv/Lib/site-packages/docutils/transforms/components.py +56 -0
- venv/Lib/site-packages/docutils/transforms/frontmatter.py +548 -0
- venv/Lib/site-packages/docutils/transforms/misc.py +143 -0
- venv/Lib/site-packages/docutils/transforms/parts.py +175 -0
- venv/Lib/site-packages/docutils/transforms/peps.py +315 -0
- venv/Lib/site-packages/docutils/transforms/references.py +990 -0
- venv/Lib/site-packages/docutils/transforms/universal.py +364 -0
- venv/Lib/site-packages/docutils/transforms/writer_aux.py +57 -0
- venv/Lib/site-packages/docutils/utils/__init__.py +850 -0
- venv/Lib/site-packages/docutils/utils/_roman_numerals.py +264 -0
- venv/Lib/site-packages/docutils/utils/_typing.py +39 -0
- venv/Lib/site-packages/docutils/utils/code_analyzer.py +140 -0
- venv/Lib/site-packages/docutils/utils/math/__init__.py +77 -0
- venv/Lib/site-packages/docutils/utils/math/latex2mathml.py +1252 -0
- venv/Lib/site-packages/docutils/utils/math/math2html.py +3166 -0
- venv/Lib/site-packages/docutils/utils/math/mathalphabet2unichar.py +892 -0
- venv/Lib/site-packages/docutils/utils/math/mathml_elements.py +482 -0
- venv/Lib/site-packages/docutils/utils/math/tex2mathml_extern.py +263 -0
- venv/Lib/site-packages/docutils/utils/math/tex2unichar.py +730 -0
- venv/Lib/site-packages/docutils/utils/math/unichar2tex.py +808 -0
- venv/Lib/site-packages/docutils/utils/punctuation_chars.py +123 -0
- venv/Lib/site-packages/docutils/utils/smartquotes.py +1006 -0
- venv/Lib/site-packages/docutils/utils/urischemes.py +138 -0
- venv/Lib/site-packages/docutils/writers/__init__.py +277 -0
- venv/Lib/site-packages/docutils/writers/_html_base.py +1895 -0
- venv/Lib/site-packages/docutils/writers/docutils_xml.py +191 -0
- venv/Lib/site-packages/docutils/writers/html4css1/__init__.py +964 -0
- venv/Lib/site-packages/docutils/writers/html5_polyglot/__init__.py +398 -0
- venv/Lib/site-packages/docutils/writers/latex2e/__init__.py +3417 -0
- venv/Lib/site-packages/docutils/writers/manpage.py +1353 -0
- venv/Lib/site-packages/docutils/writers/null.py +28 -0
- venv/Lib/site-packages/docutils/writers/odf_odt/__init__.py +3461 -0
- venv/Lib/site-packages/docutils/writers/odf_odt/prepstyles.py +80 -0
- venv/Lib/site-packages/docutils/writers/odf_odt/pygmentsformatter.py +106 -0
- venv/Lib/site-packages/docutils/writers/pep_html/__init__.py +102 -0
- venv/Lib/site-packages/docutils/writers/pseudoxml.py +41 -0
- venv/Lib/site-packages/docutils/writers/s5_html/__init__.py +354 -0
- venv/Lib/site-packages/docutils/writers/xetex/__init__.py +168 -0
- venv/Lib/site-packages/id/__init__.py +114 -0
- venv/Lib/site-packages/id/__main__.py +88 -0
- venv/Lib/site-packages/id/_internal/oidc/__init__.py +13 -0
- venv/Lib/site-packages/id/_internal/oidc/ambient.py +363 -0
- venv/Lib/site-packages/id/py.typed +4 -0
- venv/Lib/site-packages/idna/__init__.py +45 -0
- venv/Lib/site-packages/idna/codec.py +122 -0
- venv/Lib/site-packages/idna/compat.py +15 -0
- venv/Lib/site-packages/idna/core.py +440 -0
- venv/Lib/site-packages/idna/idnadata.py +4367 -0
- venv/Lib/site-packages/idna/intranges.py +57 -0
- venv/Lib/site-packages/idna/package_data.py +1 -0
- venv/Lib/site-packages/idna/py.typed +0 -0
- venv/Lib/site-packages/idna/uts46data.py +8384 -0
- venv/Lib/site-packages/iniconfig/__init__.py +249 -0
- venv/Lib/site-packages/iniconfig/_parse.py +163 -0
- venv/Lib/site-packages/iniconfig/_version.py +34 -0
- venv/Lib/site-packages/iniconfig/exceptions.py +16 -0
- venv/Lib/site-packages/iniconfig/py.typed +0 -0
- venv/Lib/site-packages/jaraco/classes/__init__.py +0 -0
- venv/Lib/site-packages/jaraco/classes/ancestry.py +76 -0
- venv/Lib/site-packages/jaraco/classes/meta.py +85 -0
- venv/Lib/site-packages/jaraco/classes/properties.py +241 -0
- venv/Lib/site-packages/jaraco/classes/py.typed +0 -0
- venv/Lib/site-packages/jaraco/context/__init__.py +422 -0
- venv/Lib/site-packages/jaraco/context/py.typed +0 -0
- venv/Lib/site-packages/jaraco/functools/__init__.py +722 -0
- venv/Lib/site-packages/jaraco/functools/__init__.pyi +123 -0
- venv/Lib/site-packages/jaraco/functools/py.typed +0 -0
- venv/Lib/site-packages/keyring/__init__.py +17 -0
- venv/Lib/site-packages/keyring/__main__.py +4 -0
- venv/Lib/site-packages/keyring/backend.py +300 -0
- venv/Lib/site-packages/keyring/backends/SecretService.py +120 -0
- venv/Lib/site-packages/keyring/backends/Windows.py +168 -0
- venv/Lib/site-packages/keyring/backends/__init__.py +0 -0
- venv/Lib/site-packages/keyring/backends/chainer.py +71 -0
- venv/Lib/site-packages/keyring/backends/fail.py +30 -0
- venv/Lib/site-packages/keyring/backends/kwallet.py +164 -0
- venv/Lib/site-packages/keyring/backends/libsecret.py +155 -0
- venv/Lib/site-packages/keyring/backends/macOS/__init__.py +85 -0
- venv/Lib/site-packages/keyring/backends/macOS/api.py +184 -0
- venv/Lib/site-packages/keyring/backends/null.py +20 -0
- venv/Lib/site-packages/keyring/cli.py +220 -0
- venv/Lib/site-packages/keyring/compat/__init__.py +7 -0
- venv/Lib/site-packages/keyring/compat/properties.py +169 -0
- venv/Lib/site-packages/keyring/compat/py312.py +9 -0
- venv/Lib/site-packages/keyring/completion.py +55 -0
- venv/Lib/site-packages/keyring/core.py +202 -0
- venv/Lib/site-packages/keyring/credentials.py +85 -0
- venv/Lib/site-packages/keyring/devpi_client.py +29 -0
- venv/Lib/site-packages/keyring/errors.py +67 -0
- venv/Lib/site-packages/keyring/http.py +39 -0
- venv/Lib/site-packages/keyring/py.typed +0 -0
- venv/Lib/site-packages/keyring/testing/__init__.py +0 -0
- venv/Lib/site-packages/keyring/testing/backend.py +200 -0
- venv/Lib/site-packages/keyring/testing/util.py +68 -0
- venv/Lib/site-packages/keyring/util/__init__.py +11 -0
- venv/Lib/site-packages/keyring/util/platform_.py +40 -0
- venv/Lib/site-packages/markdown_it/__init__.py +6 -0
- venv/Lib/site-packages/markdown_it/_compat.py +1 -0
- venv/Lib/site-packages/markdown_it/_punycode.py +67 -0
- venv/Lib/site-packages/markdown_it/cli/__init__.py +0 -0
- venv/Lib/site-packages/markdown_it/cli/parse.py +127 -0
- venv/Lib/site-packages/markdown_it/common/__init__.py +0 -0
- venv/Lib/site-packages/markdown_it/common/entities.py +5 -0
- venv/Lib/site-packages/markdown_it/common/html_blocks.py +69 -0
- venv/Lib/site-packages/markdown_it/common/html_re.py +39 -0
- venv/Lib/site-packages/markdown_it/common/normalize_url.py +81 -0
- venv/Lib/site-packages/markdown_it/common/utils.py +313 -0
- venv/Lib/site-packages/markdown_it/helpers/__init__.py +6 -0
- venv/Lib/site-packages/markdown_it/helpers/parse_link_destination.py +83 -0
- venv/Lib/site-packages/markdown_it/helpers/parse_link_label.py +44 -0
- venv/Lib/site-packages/markdown_it/helpers/parse_link_title.py +75 -0
- venv/Lib/site-packages/markdown_it/main.py +351 -0
- venv/Lib/site-packages/markdown_it/parser_block.py +113 -0
- venv/Lib/site-packages/markdown_it/parser_core.py +46 -0
- venv/Lib/site-packages/markdown_it/parser_inline.py +215 -0
- venv/Lib/site-packages/markdown_it/presets/__init__.py +48 -0
- venv/Lib/site-packages/markdown_it/presets/commonmark.py +75 -0
- venv/Lib/site-packages/markdown_it/presets/default.py +36 -0
- venv/Lib/site-packages/markdown_it/presets/zero.py +44 -0
- venv/Lib/site-packages/markdown_it/py.typed +1 -0
- venv/Lib/site-packages/markdown_it/renderer.py +356 -0
- venv/Lib/site-packages/markdown_it/ruler.py +275 -0
- venv/Lib/site-packages/markdown_it/rules_block/__init__.py +28 -0
- venv/Lib/site-packages/markdown_it/rules_block/blockquote.py +368 -0
- venv/Lib/site-packages/markdown_it/rules_block/code.py +36 -0
- venv/Lib/site-packages/markdown_it/rules_block/fence.py +146 -0
- venv/Lib/site-packages/markdown_it/rules_block/heading.py +69 -0
- venv/Lib/site-packages/markdown_it/rules_block/hr.py +56 -0
- venv/Lib/site-packages/markdown_it/rules_block/html_block.py +90 -0
- venv/Lib/site-packages/markdown_it/rules_block/lheading.py +86 -0
- venv/Lib/site-packages/markdown_it/rules_block/list.py +408 -0
- venv/Lib/site-packages/markdown_it/rules_block/paragraph.py +66 -0
- venv/Lib/site-packages/markdown_it/rules_block/reference.py +235 -0
- venv/Lib/site-packages/markdown_it/rules_block/state_block.py +261 -0
- venv/Lib/site-packages/markdown_it/rules_block/table.py +250 -0
- venv/Lib/site-packages/markdown_it/rules_core/__init__.py +19 -0
- venv/Lib/site-packages/markdown_it/rules_core/block.py +13 -0
- venv/Lib/site-packages/markdown_it/rules_core/inline.py +10 -0
- venv/Lib/site-packages/markdown_it/rules_core/linkify.py +149 -0
- venv/Lib/site-packages/markdown_it/rules_core/normalize.py +19 -0
- venv/Lib/site-packages/markdown_it/rules_core/replacements.py +127 -0
- venv/Lib/site-packages/markdown_it/rules_core/smartquotes.py +202 -0
- venv/Lib/site-packages/markdown_it/rules_core/state_core.py +25 -0
- venv/Lib/site-packages/markdown_it/rules_core/text_join.py +53 -0
- venv/Lib/site-packages/markdown_it/rules_inline/__init__.py +31 -0
- venv/Lib/site-packages/markdown_it/rules_inline/autolink.py +77 -0
- venv/Lib/site-packages/markdown_it/rules_inline/backticks.py +72 -0
- venv/Lib/site-packages/markdown_it/rules_inline/balance_pairs.py +138 -0
- venv/Lib/site-packages/markdown_it/rules_inline/emphasis.py +102 -0
- venv/Lib/site-packages/markdown_it/rules_inline/entity.py +53 -0
- venv/Lib/site-packages/markdown_it/rules_inline/escape.py +93 -0
- venv/Lib/site-packages/markdown_it/rules_inline/fragments_join.py +54 -0
- venv/Lib/site-packages/markdown_it/rules_inline/html_inline.py +43 -0
- venv/Lib/site-packages/markdown_it/rules_inline/image.py +148 -0
- venv/Lib/site-packages/markdown_it/rules_inline/link.py +149 -0
- venv/Lib/site-packages/markdown_it/rules_inline/linkify.py +62 -0
- venv/Lib/site-packages/markdown_it/rules_inline/newline.py +44 -0
- venv/Lib/site-packages/markdown_it/rules_inline/state_inline.py +167 -0
- venv/Lib/site-packages/markdown_it/rules_inline/strikethrough.py +173 -0
- venv/Lib/site-packages/markdown_it/rules_inline/text.py +23 -0
- venv/Lib/site-packages/markdown_it/token.py +178 -0
- venv/Lib/site-packages/markdown_it/tree.py +333 -0
- venv/Lib/site-packages/markdown_it/utils.py +194 -0
- venv/Lib/site-packages/mdurl/__init__.py +18 -0
- venv/Lib/site-packages/mdurl/_decode.py +104 -0
- venv/Lib/site-packages/mdurl/_encode.py +85 -0
- venv/Lib/site-packages/mdurl/_format.py +27 -0
- venv/Lib/site-packages/mdurl/_parse.py +304 -0
- venv/Lib/site-packages/mdurl/_url.py +14 -0
- venv/Lib/site-packages/mdurl/py.typed +1 -0
- venv/Lib/site-packages/more_itertools/__init__.py +6 -0
- venv/Lib/site-packages/more_itertools/__init__.pyi +2 -0
- venv/Lib/site-packages/more_itertools/more.py +5457 -0
- venv/Lib/site-packages/more_itertools/more.pyi +963 -0
- venv/Lib/site-packages/more_itertools/py.typed +0 -0
- venv/Lib/site-packages/more_itertools/recipes.py +1599 -0
- venv/Lib/site-packages/more_itertools/recipes.pyi +234 -0
- venv/Lib/site-packages/nh3/__init__.py +5 -0
- venv/Lib/site-packages/nh3/__init__.pyi +42 -0
- venv/Lib/site-packages/nh3/py.typed +0 -0
- venv/Lib/site-packages/packaging/__init__.py +15 -0
- venv/Lib/site-packages/packaging/_elffile.py +108 -0
- venv/Lib/site-packages/packaging/_manylinux.py +262 -0
- venv/Lib/site-packages/packaging/_musllinux.py +85 -0
- venv/Lib/site-packages/packaging/_parser.py +393 -0
- venv/Lib/site-packages/packaging/_structures.py +33 -0
- venv/Lib/site-packages/packaging/_tokenizer.py +193 -0
- venv/Lib/site-packages/packaging/dependency_groups.py +302 -0
- venv/Lib/site-packages/packaging/direct_url.py +325 -0
- venv/Lib/site-packages/packaging/errors.py +94 -0
- venv/Lib/site-packages/packaging/licenses/__init__.py +186 -0
- venv/Lib/site-packages/packaging/licenses/_spdx.py +799 -0
- venv/Lib/site-packages/packaging/markers.py +492 -0
- venv/Lib/site-packages/packaging/metadata.py +964 -0
- venv/Lib/site-packages/packaging/py.typed +0 -0
- venv/Lib/site-packages/packaging/pylock.py +905 -0
- venv/Lib/site-packages/packaging/requirements.py +129 -0
- venv/Lib/site-packages/packaging/specifiers.py +1943 -0
- venv/Lib/site-packages/packaging/tags.py +932 -0
- venv/Lib/site-packages/packaging/utils.py +296 -0
- venv/Lib/site-packages/packaging/version.py +1231 -0
- venv/Lib/site-packages/pip/__init__.py +13 -0
- venv/Lib/site-packages/pip/__main__.py +24 -0
- venv/Lib/site-packages/pip/__pip-runner__.py +50 -0
- venv/Lib/site-packages/pip/_internal/__init__.py +18 -0
- venv/Lib/site-packages/pip/_internal/build_env.py +606 -0
- venv/Lib/site-packages/pip/_internal/cache.py +291 -0
- venv/Lib/site-packages/pip/_internal/cli/__init__.py +3 -0
- venv/Lib/site-packages/pip/_internal/cli/autocompletion.py +184 -0
- venv/Lib/site-packages/pip/_internal/cli/base_command.py +255 -0
- venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py +1267 -0
- venv/Lib/site-packages/pip/_internal/cli/command_context.py +28 -0
- venv/Lib/site-packages/pip/_internal/cli/index_command.py +195 -0
- venv/Lib/site-packages/pip/_internal/cli/main.py +85 -0
- venv/Lib/site-packages/pip/_internal/cli/main_parser.py +136 -0
- venv/Lib/site-packages/pip/_internal/cli/parser.py +358 -0
- venv/Lib/site-packages/pip/_internal/cli/progress_bars.py +153 -0
- venv/Lib/site-packages/pip/_internal/cli/req_command.py +447 -0
- venv/Lib/site-packages/pip/_internal/cli/spinners.py +235 -0
- venv/Lib/site-packages/pip/_internal/cli/status_codes.py +6 -0
- venv/Lib/site-packages/pip/_internal/commands/__init__.py +139 -0
- venv/Lib/site-packages/pip/_internal/commands/cache.py +255 -0
- venv/Lib/site-packages/pip/_internal/commands/check.py +66 -0
- venv/Lib/site-packages/pip/_internal/commands/completion.py +136 -0
- venv/Lib/site-packages/pip/_internal/commands/configuration.py +288 -0
- venv/Lib/site-packages/pip/_internal/commands/debug.py +203 -0
- venv/Lib/site-packages/pip/_internal/commands/download.py +146 -0
- venv/Lib/site-packages/pip/_internal/commands/freeze.py +107 -0
- venv/Lib/site-packages/pip/_internal/commands/hash.py +58 -0
- venv/Lib/site-packages/pip/_internal/commands/help.py +40 -0
- venv/Lib/site-packages/pip/_internal/commands/index.py +166 -0
- venv/Lib/site-packages/pip/_internal/commands/inspect.py +92 -0
- venv/Lib/site-packages/pip/_internal/commands/install.py +810 -0
- venv/Lib/site-packages/pip/_internal/commands/list.py +398 -0
- venv/Lib/site-packages/pip/_internal/commands/lock.py +175 -0
- venv/Lib/site-packages/pip/_internal/commands/search.py +178 -0
- venv/Lib/site-packages/pip/_internal/commands/show.py +231 -0
- venv/Lib/site-packages/pip/_internal/commands/uninstall.py +113 -0
- venv/Lib/site-packages/pip/_internal/commands/wheel.py +171 -0
- venv/Lib/site-packages/pip/_internal/configuration.py +396 -0
- venv/Lib/site-packages/pip/_internal/distributions/__init__.py +21 -0
- venv/Lib/site-packages/pip/_internal/distributions/base.py +55 -0
- venv/Lib/site-packages/pip/_internal/distributions/installed.py +33 -0
- venv/Lib/site-packages/pip/_internal/distributions/sdist.py +164 -0
- venv/Lib/site-packages/pip/_internal/distributions/wheel.py +44 -0
- venv/Lib/site-packages/pip/_internal/exceptions.py +971 -0
- venv/Lib/site-packages/pip/_internal/index/__init__.py +1 -0
- venv/Lib/site-packages/pip/_internal/index/collector.py +488 -0
- venv/Lib/site-packages/pip/_internal/index/package_finder.py +1125 -0
- venv/Lib/site-packages/pip/_internal/index/sources.py +287 -0
- venv/Lib/site-packages/pip/_internal/locations/__init__.py +440 -0
- venv/Lib/site-packages/pip/_internal/locations/_distutils.py +173 -0
- venv/Lib/site-packages/pip/_internal/locations/_sysconfig.py +218 -0
- venv/Lib/site-packages/pip/_internal/locations/base.py +82 -0
- venv/Lib/site-packages/pip/_internal/main.py +12 -0
- venv/Lib/site-packages/pip/_internal/metadata/__init__.py +169 -0
- venv/Lib/site-packages/pip/_internal/metadata/_json.py +87 -0
- venv/Lib/site-packages/pip/_internal/metadata/base.py +685 -0
- venv/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py +6 -0
- venv/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py +87 -0
- venv/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +229 -0
- venv/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +143 -0
- venv/Lib/site-packages/pip/_internal/metadata/pkg_resources.py +298 -0
- venv/Lib/site-packages/pip/_internal/models/__init__.py +1 -0
- venv/Lib/site-packages/pip/_internal/models/candidate.py +25 -0
- venv/Lib/site-packages/pip/_internal/models/direct_url.py +227 -0
- venv/Lib/site-packages/pip/_internal/models/format_control.py +78 -0
- venv/Lib/site-packages/pip/_internal/models/index.py +28 -0
- venv/Lib/site-packages/pip/_internal/models/installation_report.py +57 -0
- venv/Lib/site-packages/pip/_internal/models/link.py +617 -0
- venv/Lib/site-packages/pip/_internal/models/release_control.py +92 -0
- venv/Lib/site-packages/pip/_internal/models/scheme.py +25 -0
- venv/Lib/site-packages/pip/_internal/models/search_scope.py +126 -0
- venv/Lib/site-packages/pip/_internal/models/selection_prefs.py +56 -0
- venv/Lib/site-packages/pip/_internal/models/target_python.py +122 -0
- venv/Lib/site-packages/pip/_internal/models/wheel.py +80 -0
- venv/Lib/site-packages/pip/_internal/network/__init__.py +1 -0
- venv/Lib/site-packages/pip/_internal/network/auth.py +568 -0
- venv/Lib/site-packages/pip/_internal/network/cache.py +128 -0
- venv/Lib/site-packages/pip/_internal/network/download.py +341 -0
- venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py +215 -0
- venv/Lib/site-packages/pip/_internal/network/session.py +532 -0
- venv/Lib/site-packages/pip/_internal/network/utils.py +98 -0
- venv/Lib/site-packages/pip/_internal/network/xmlrpc.py +61 -0
- venv/Lib/site-packages/pip/_internal/operations/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/operations/build/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/operations/build/build_tracker.py +140 -0
- venv/Lib/site-packages/pip/_internal/operations/build/metadata.py +38 -0
- venv/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py +41 -0
- venv/Lib/site-packages/pip/_internal/operations/build/wheel.py +38 -0
- venv/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py +47 -0
- venv/Lib/site-packages/pip/_internal/operations/check.py +175 -0
- venv/Lib/site-packages/pip/_internal/operations/freeze.py +259 -0
- venv/Lib/site-packages/pip/_internal/operations/install/__init__.py +1 -0
- venv/Lib/site-packages/pip/_internal/operations/install/wheel.py +745 -0
- venv/Lib/site-packages/pip/_internal/operations/prepare.py +747 -0
- venv/Lib/site-packages/pip/_internal/pyproject.py +123 -0
- venv/Lib/site-packages/pip/_internal/req/__init__.py +103 -0
- venv/Lib/site-packages/pip/_internal/req/constructors.py +568 -0
- venv/Lib/site-packages/pip/_internal/req/pep723.py +41 -0
- venv/Lib/site-packages/pip/_internal/req/req_dependency_group.py +75 -0
- venv/Lib/site-packages/pip/_internal/req/req_file.py +631 -0
- venv/Lib/site-packages/pip/_internal/req/req_install.py +828 -0
- venv/Lib/site-packages/pip/_internal/req/req_set.py +81 -0
- venv/Lib/site-packages/pip/_internal/req/req_uninstall.py +639 -0
- venv/Lib/site-packages/pip/_internal/resolution/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/resolution/base.py +20 -0
- venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +598 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +142 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +591 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +856 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +166 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +285 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +98 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +251 -0
- venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +332 -0
- venv/Lib/site-packages/pip/_internal/self_outdated_check.py +255 -0
- venv/Lib/site-packages/pip/_internal/utils/__init__.py +0 -0
- venv/Lib/site-packages/pip/_internal/utils/_jaraco_text.py +109 -0
- venv/Lib/site-packages/pip/_internal/utils/_log.py +38 -0
- venv/Lib/site-packages/pip/_internal/utils/appdirs.py +52 -0
- venv/Lib/site-packages/pip/_internal/utils/compat.py +85 -0
- venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +201 -0
- venv/Lib/site-packages/pip/_internal/utils/datetime.py +28 -0
- venv/Lib/site-packages/pip/_internal/utils/deprecation.py +126 -0
- venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +87 -0
- venv/Lib/site-packages/pip/_internal/utils/egg_link.py +81 -0
- venv/Lib/site-packages/pip/_internal/utils/entrypoints.py +88 -0
- venv/Lib/site-packages/pip/_internal/utils/filesystem.py +203 -0
- venv/Lib/site-packages/pip/_internal/utils/filetypes.py +24 -0
- venv/Lib/site-packages/pip/_internal/utils/glibc.py +102 -0
- venv/Lib/site-packages/pip/_internal/utils/hashes.py +150 -0
- venv/Lib/site-packages/pip/_internal/utils/logging.py +396 -0
- venv/Lib/site-packages/pip/_internal/utils/misc.py +771 -0
- venv/Lib/site-packages/pip/_internal/utils/packaging.py +44 -0
- venv/Lib/site-packages/pip/_internal/utils/pylock.py +116 -0
- venv/Lib/site-packages/pip/_internal/utils/retry.py +45 -0
- venv/Lib/site-packages/pip/_internal/utils/subprocess.py +248 -0
- venv/Lib/site-packages/pip/_internal/utils/temp_dir.py +294 -0
- venv/Lib/site-packages/pip/_internal/utils/unpacking.py +362 -0
- venv/Lib/site-packages/pip/_internal/utils/urls.py +55 -0
- venv/Lib/site-packages/pip/_internal/utils/virtualenv.py +105 -0
- venv/Lib/site-packages/pip/_internal/utils/wheel.py +132 -0
- venv/Lib/site-packages/pip/_internal/vcs/__init__.py +15 -0
- venv/Lib/site-packages/pip/_internal/vcs/bazaar.py +130 -0
- venv/Lib/site-packages/pip/_internal/vcs/git.py +571 -0
- venv/Lib/site-packages/pip/_internal/vcs/mercurial.py +186 -0
- venv/Lib/site-packages/pip/_internal/vcs/subversion.py +335 -0
- venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +695 -0
- venv/Lib/site-packages/pip/_internal/wheel_builder.py +261 -0
- venv/Lib/site-packages/pip/_vendor/__init__.py +117 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +32 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +70 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +167 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +75 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +8 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +145 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +48 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +511 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +121 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +157 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +146 -0
- venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +43 -0
- venv/Lib/site-packages/pip/_vendor/certifi/__init__.py +4 -0
- venv/Lib/site-packages/pip/_vendor/certifi/__main__.py +12 -0
- venv/Lib/site-packages/pip/_vendor/certifi/core.py +83 -0
- venv/Lib/site-packages/pip/_vendor/certifi/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/__init__.py +13 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/__main__.py +65 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/_implementation.py +209 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/_lint_dependency_groups.py +59 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/_pip_wrapper.py +62 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/_toml_compat.py +9 -0
- venv/Lib/site-packages/pip/_vendor/dependency_groups/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/distlib/__init__.py +33 -0
- venv/Lib/site-packages/pip/_vendor/distlib/compat.py +1137 -0
- venv/Lib/site-packages/pip/_vendor/distlib/resources.py +358 -0
- venv/Lib/site-packages/pip/_vendor/distlib/scripts.py +447 -0
- venv/Lib/site-packages/pip/_vendor/distlib/util.py +1984 -0
- venv/Lib/site-packages/pip/_vendor/distro/__init__.py +54 -0
- venv/Lib/site-packages/pip/_vendor/distro/__main__.py +4 -0
- venv/Lib/site-packages/pip/_vendor/distro/distro.py +1403 -0
- venv/Lib/site-packages/pip/_vendor/distro/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/idna/__init__.py +45 -0
- venv/Lib/site-packages/pip/_vendor/idna/codec.py +122 -0
- venv/Lib/site-packages/pip/_vendor/idna/compat.py +15 -0
- venv/Lib/site-packages/pip/_vendor/idna/core.py +437 -0
- venv/Lib/site-packages/pip/_vendor/idna/idnadata.py +4309 -0
- venv/Lib/site-packages/pip/_vendor/idna/intranges.py +57 -0
- venv/Lib/site-packages/pip/_vendor/idna/package_data.py +1 -0
- venv/Lib/site-packages/pip/_vendor/idna/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/idna/uts46data.py +8841 -0
- venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py +55 -0
- venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
- venv/Lib/site-packages/pip/_vendor/msgpack/ext.py +170 -0
- venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py +929 -0
- venv/Lib/site-packages/pip/_vendor/packaging/__init__.py +15 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_elffile.py +108 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_manylinux.py +262 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_musllinux.py +85 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_parser.py +365 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_structures.py +69 -0
- venv/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py +193 -0
- venv/Lib/site-packages/pip/_vendor/packaging/licenses/__init__.py +147 -0
- venv/Lib/site-packages/pip/_vendor/packaging/licenses/_spdx.py +799 -0
- venv/Lib/site-packages/pip/_vendor/packaging/markers.py +388 -0
- venv/Lib/site-packages/pip/_vendor/packaging/metadata.py +978 -0
- venv/Lib/site-packages/pip/_vendor/packaging/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/packaging/pylock.py +635 -0
- venv/Lib/site-packages/pip/_vendor/packaging/requirements.py +86 -0
- venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py +1068 -0
- venv/Lib/site-packages/pip/_vendor/packaging/tags.py +651 -0
- venv/Lib/site-packages/pip/_vendor/packaging/utils.py +158 -0
- venv/Lib/site-packages/pip/_vendor/packaging/version.py +792 -0
- venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +3676 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +631 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +55 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/android.py +249 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/api.py +299 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/macos.py +146 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/unix.py +272 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/version.py +34 -0
- venv/Lib/site-packages/pip/_vendor/platformdirs/windows.py +278 -0
- venv/Lib/site-packages/pip/_vendor/pygments/__init__.py +82 -0
- venv/Lib/site-packages/pip/_vendor/pygments/__main__.py +17 -0
- venv/Lib/site-packages/pip/_vendor/pygments/console.py +70 -0
- venv/Lib/site-packages/pip/_vendor/pygments/filter.py +70 -0
- venv/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +940 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatter.py +129 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +157 -0
- venv/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py +23 -0
- venv/Lib/site-packages/pip/_vendor/pygments/lexer.py +963 -0
- venv/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +362 -0
- venv/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +602 -0
- venv/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +1201 -0
- venv/Lib/site-packages/pip/_vendor/pygments/modeline.py +43 -0
- venv/Lib/site-packages/pip/_vendor/pygments/plugin.py +72 -0
- venv/Lib/site-packages/pip/_vendor/pygments/regexopt.py +91 -0
- venv/Lib/site-packages/pip/_vendor/pygments/scanner.py +104 -0
- venv/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +247 -0
- venv/Lib/site-packages/pip/_vendor/pygments/style.py +203 -0
- venv/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +61 -0
- venv/Lib/site-packages/pip/_vendor/pygments/styles/_mapping.py +54 -0
- venv/Lib/site-packages/pip/_vendor/pygments/token.py +214 -0
- venv/Lib/site-packages/pip/_vendor/pygments/unistring.py +153 -0
- venv/Lib/site-packages/pip/_vendor/pygments/util.py +324 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py +31 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py +410 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +21 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +389 -0
- venv/Lib/site-packages/pip/_vendor/pyproject_hooks/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/requests/__init__.py +179 -0
- venv/Lib/site-packages/pip/_vendor/requests/__version__.py +14 -0
- venv/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +50 -0
- venv/Lib/site-packages/pip/_vendor/requests/adapters.py +696 -0
- venv/Lib/site-packages/pip/_vendor/requests/api.py +157 -0
- venv/Lib/site-packages/pip/_vendor/requests/auth.py +314 -0
- venv/Lib/site-packages/pip/_vendor/requests/certs.py +17 -0
- venv/Lib/site-packages/pip/_vendor/requests/compat.py +90 -0
- venv/Lib/site-packages/pip/_vendor/requests/cookies.py +561 -0
- venv/Lib/site-packages/pip/_vendor/requests/exceptions.py +151 -0
- venv/Lib/site-packages/pip/_vendor/requests/help.py +127 -0
- venv/Lib/site-packages/pip/_vendor/requests/hooks.py +33 -0
- venv/Lib/site-packages/pip/_vendor/requests/models.py +1039 -0
- venv/Lib/site-packages/pip/_vendor/requests/packages.py +25 -0
- venv/Lib/site-packages/pip/_vendor/requests/sessions.py +831 -0
- venv/Lib/site-packages/pip/_vendor/requests/status_codes.py +128 -0
- venv/Lib/site-packages/pip/_vendor/requests/structures.py +99 -0
- venv/Lib/site-packages/pip/_vendor/requests/utils.py +1086 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +27 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/providers.py +196 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +55 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +27 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +47 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +48 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +57 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +627 -0
- venv/Lib/site-packages/pip/_vendor/resolvelib/structs.py +209 -0
- venv/Lib/site-packages/pip/_vendor/rich/__init__.py +177 -0
- venv/Lib/site-packages/pip/_vendor/rich/__main__.py +245 -0
- venv/Lib/site-packages/pip/_vendor/rich/_cell_widths.py +454 -0
- venv/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py +3610 -0
- venv/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py +32 -0
- venv/Lib/site-packages/pip/_vendor/rich/_export_format.py +76 -0
- venv/Lib/site-packages/pip/_vendor/rich/_extension.py +10 -0
- venv/Lib/site-packages/pip/_vendor/rich/_fileno.py +24 -0
- venv/Lib/site-packages/pip/_vendor/rich/_inspect.py +268 -0
- venv/Lib/site-packages/pip/_vendor/rich/_log_render.py +94 -0
- venv/Lib/site-packages/pip/_vendor/rich/_loop.py +43 -0
- venv/Lib/site-packages/pip/_vendor/rich/_null_file.py +69 -0
- venv/Lib/site-packages/pip/_vendor/rich/_palettes.py +309 -0
- venv/Lib/site-packages/pip/_vendor/rich/_pick.py +17 -0
- venv/Lib/site-packages/pip/_vendor/rich/_ratio.py +153 -0
- venv/Lib/site-packages/pip/_vendor/rich/_spinners.py +482 -0
- venv/Lib/site-packages/pip/_vendor/rich/_stack.py +16 -0
- venv/Lib/site-packages/pip/_vendor/rich/_timer.py +19 -0
- venv/Lib/site-packages/pip/_vendor/rich/_win32_console.py +661 -0
- venv/Lib/site-packages/pip/_vendor/rich/_windows.py +71 -0
- venv/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py +56 -0
- venv/Lib/site-packages/pip/_vendor/rich/_wrap.py +93 -0
- venv/Lib/site-packages/pip/_vendor/rich/abc.py +33 -0
- venv/Lib/site-packages/pip/_vendor/rich/align.py +306 -0
- venv/Lib/site-packages/pip/_vendor/rich/ansi.py +241 -0
- venv/Lib/site-packages/pip/_vendor/rich/bar.py +93 -0
- venv/Lib/site-packages/pip/_vendor/rich/box.py +474 -0
- venv/Lib/site-packages/pip/_vendor/rich/cells.py +174 -0
- venv/Lib/site-packages/pip/_vendor/rich/color.py +621 -0
- venv/Lib/site-packages/pip/_vendor/rich/color_triplet.py +38 -0
- venv/Lib/site-packages/pip/_vendor/rich/columns.py +187 -0
- venv/Lib/site-packages/pip/_vendor/rich/console.py +2680 -0
- venv/Lib/site-packages/pip/_vendor/rich/constrain.py +37 -0
- venv/Lib/site-packages/pip/_vendor/rich/containers.py +167 -0
- venv/Lib/site-packages/pip/_vendor/rich/control.py +219 -0
- venv/Lib/site-packages/pip/_vendor/rich/default_styles.py +193 -0
- venv/Lib/site-packages/pip/_vendor/rich/diagnose.py +39 -0
- venv/Lib/site-packages/pip/_vendor/rich/emoji.py +91 -0
- venv/Lib/site-packages/pip/_vendor/rich/errors.py +34 -0
- venv/Lib/site-packages/pip/_vendor/rich/file_proxy.py +57 -0
- venv/Lib/site-packages/pip/_vendor/rich/filesize.py +88 -0
- venv/Lib/site-packages/pip/_vendor/rich/highlighter.py +232 -0
- venv/Lib/site-packages/pip/_vendor/rich/json.py +139 -0
- venv/Lib/site-packages/pip/_vendor/rich/jupyter.py +101 -0
- venv/Lib/site-packages/pip/_vendor/rich/layout.py +442 -0
- venv/Lib/site-packages/pip/_vendor/rich/live.py +400 -0
- venv/Lib/site-packages/pip/_vendor/rich/live_render.py +106 -0
- venv/Lib/site-packages/pip/_vendor/rich/logging.py +297 -0
- venv/Lib/site-packages/pip/_vendor/rich/markup.py +251 -0
- venv/Lib/site-packages/pip/_vendor/rich/measure.py +151 -0
- venv/Lib/site-packages/pip/_vendor/rich/padding.py +141 -0
- venv/Lib/site-packages/pip/_vendor/rich/pager.py +34 -0
- venv/Lib/site-packages/pip/_vendor/rich/palette.py +100 -0
- venv/Lib/site-packages/pip/_vendor/rich/panel.py +317 -0
- venv/Lib/site-packages/pip/_vendor/rich/pretty.py +1016 -0
- venv/Lib/site-packages/pip/_vendor/rich/progress.py +1715 -0
- venv/Lib/site-packages/pip/_vendor/rich/progress_bar.py +223 -0
- venv/Lib/site-packages/pip/_vendor/rich/prompt.py +400 -0
- venv/Lib/site-packages/pip/_vendor/rich/protocol.py +42 -0
- venv/Lib/site-packages/pip/_vendor/rich/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/rich/region.py +10 -0
- venv/Lib/site-packages/pip/_vendor/rich/repr.py +149 -0
- venv/Lib/site-packages/pip/_vendor/rich/rule.py +130 -0
- venv/Lib/site-packages/pip/_vendor/rich/scope.py +86 -0
- venv/Lib/site-packages/pip/_vendor/rich/screen.py +54 -0
- venv/Lib/site-packages/pip/_vendor/rich/segment.py +752 -0
- venv/Lib/site-packages/pip/_vendor/rich/spinner.py +132 -0
- venv/Lib/site-packages/pip/_vendor/rich/status.py +131 -0
- venv/Lib/site-packages/pip/_vendor/rich/style.py +792 -0
- venv/Lib/site-packages/pip/_vendor/rich/styled.py +42 -0
- venv/Lib/site-packages/pip/_vendor/rich/syntax.py +985 -0
- venv/Lib/site-packages/pip/_vendor/rich/table.py +1006 -0
- venv/Lib/site-packages/pip/_vendor/rich/terminal_theme.py +153 -0
- venv/Lib/site-packages/pip/_vendor/rich/text.py +1361 -0
- venv/Lib/site-packages/pip/_vendor/rich/theme.py +115 -0
- venv/Lib/site-packages/pip/_vendor/rich/themes.py +5 -0
- venv/Lib/site-packages/pip/_vendor/rich/traceback.py +899 -0
- venv/Lib/site-packages/pip/_vendor/rich/tree.py +257 -0
- venv/Lib/site-packages/pip/_vendor/tomli/__init__.py +8 -0
- venv/Lib/site-packages/pip/_vendor/tomli/_parser.py +777 -0
- venv/Lib/site-packages/pip/_vendor/tomli/_re.py +115 -0
- venv/Lib/site-packages/pip/_vendor/tomli/_types.py +10 -0
- venv/Lib/site-packages/pip/_vendor/tomli/py.typed +1 -0
- venv/Lib/site-packages/pip/_vendor/tomli_w/__init__.py +4 -0
- venv/Lib/site-packages/pip/_vendor/tomli_w/_writer.py +229 -0
- venv/Lib/site-packages/pip/_vendor/tomli_w/py.typed +1 -0
- venv/Lib/site-packages/pip/_vendor/truststore/__init__.py +36 -0
- venv/Lib/site-packages/pip/_vendor/truststore/_api.py +341 -0
- venv/Lib/site-packages/pip/_vendor/truststore/_macos.py +571 -0
- venv/Lib/site-packages/pip/_vendor/truststore/_openssl.py +68 -0
- venv/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py +31 -0
- venv/Lib/site-packages/pip/_vendor/truststore/_windows.py +567 -0
- venv/Lib/site-packages/pip/_vendor/truststore/py.typed +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/__init__.py +102 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/_collections.py +355 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/_version.py +2 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/connection.py +572 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +1140 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +397 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +130 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +518 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +920 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +323 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/fields.py +274 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +155 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +1076 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +540 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/request.py +191 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/response.py +879 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +149 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +57 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/request.py +137 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +622 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +504 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +159 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +271 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/url.py +435 -0
- venv/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +152 -0
- venv/Lib/site-packages/pip/py.typed +4 -0
- venv/Lib/site-packages/pluggy/__init__.py +30 -0
- venv/Lib/site-packages/pluggy/_callers.py +169 -0
- venv/Lib/site-packages/pluggy/_hooks.py +714 -0
- venv/Lib/site-packages/pluggy/_manager.py +523 -0
- venv/Lib/site-packages/pluggy/_result.py +107 -0
- venv/Lib/site-packages/pluggy/_tracing.py +72 -0
- venv/Lib/site-packages/pluggy/_version.py +21 -0
- venv/Lib/site-packages/pluggy/_warnings.py +27 -0
- venv/Lib/site-packages/pluggy/py.typed +0 -0
- venv/Lib/site-packages/py.py +15 -0
- venv/Lib/site-packages/pydantic/__init__.py +456 -0
- venv/Lib/site-packages/pydantic/_internal/__init__.py +0 -0
- venv/Lib/site-packages/pydantic/_internal/_config.py +386 -0
- venv/Lib/site-packages/pydantic/_internal/_core_metadata.py +97 -0
- venv/Lib/site-packages/pydantic/_internal/_core_utils.py +174 -0
- venv/Lib/site-packages/pydantic/_internal/_dataclasses.py +315 -0
- venv/Lib/site-packages/pydantic/_internal/_decorators.py +873 -0
- venv/Lib/site-packages/pydantic/_internal/_decorators_v1.py +174 -0
- venv/Lib/site-packages/pydantic/_internal/_discriminated_union.py +494 -0
- venv/Lib/site-packages/pydantic/_internal/_docs_extraction.py +113 -0
- venv/Lib/site-packages/pydantic/_internal/_fields.py +729 -0
- venv/Lib/site-packages/pydantic/_internal/_forward_ref.py +23 -0
- venv/Lib/site-packages/pydantic/_internal/_generate_schema.py +2934 -0
- venv/Lib/site-packages/pydantic/_internal/_generics.py +530 -0
- venv/Lib/site-packages/pydantic/_internal/_git.py +27 -0
- venv/Lib/site-packages/pydantic/_internal/_import_utils.py +20 -0
- venv/Lib/site-packages/pydantic/_internal/_internal_dataclass.py +7 -0
- venv/Lib/site-packages/pydantic/_internal/_known_annotated_metadata.py +403 -0
- venv/Lib/site-packages/pydantic/_internal/_mock_val_ser.py +228 -0
- venv/Lib/site-packages/pydantic/_internal/_model_construction.py +868 -0
- venv/Lib/site-packages/pydantic/_internal/_namespace_utils.py +293 -0
- venv/Lib/site-packages/pydantic/_internal/_repr.py +124 -0
- venv/Lib/site-packages/pydantic/_internal/_schema_gather.py +212 -0
- venv/Lib/site-packages/pydantic/_internal/_schema_generation_shared.py +125 -0
- venv/Lib/site-packages/pydantic/_internal/_serializers.py +53 -0
- venv/Lib/site-packages/pydantic/_internal/_signature.py +189 -0
- venv/Lib/site-packages/pydantic/_internal/_typing_extra.py +785 -0
- venv/Lib/site-packages/pydantic/_internal/_utils.py +446 -0
- venv/Lib/site-packages/pydantic/_internal/_validate_call.py +141 -0
- venv/Lib/site-packages/pydantic/_internal/_validators.py +534 -0
- venv/Lib/site-packages/pydantic/_migration.py +316 -0
- venv/Lib/site-packages/pydantic/alias_generators.py +62 -0
- venv/Lib/site-packages/pydantic/aliases.py +135 -0
- venv/Lib/site-packages/pydantic/annotated_handlers.py +122 -0
- venv/Lib/site-packages/pydantic/class_validators.py +5 -0
- venv/Lib/site-packages/pydantic/color.py +604 -0
- venv/Lib/site-packages/pydantic/config.py +1296 -0
- venv/Lib/site-packages/pydantic/dataclasses.py +413 -0
- venv/Lib/site-packages/pydantic/datetime_parse.py +5 -0
- venv/Lib/site-packages/pydantic/decorator.py +5 -0
- venv/Lib/site-packages/pydantic/deprecated/__init__.py +0 -0
- venv/Lib/site-packages/pydantic/deprecated/class_validators.py +256 -0
- venv/Lib/site-packages/pydantic/deprecated/config.py +72 -0
- venv/Lib/site-packages/pydantic/deprecated/copy_internals.py +224 -0
- venv/Lib/site-packages/pydantic/deprecated/decorator.py +284 -0
- venv/Lib/site-packages/pydantic/deprecated/json.py +141 -0
- venv/Lib/site-packages/pydantic/deprecated/parse.py +80 -0
- venv/Lib/site-packages/pydantic/deprecated/tools.py +103 -0
- venv/Lib/site-packages/pydantic/env_settings.py +5 -0
- venv/Lib/site-packages/pydantic/error_wrappers.py +5 -0
- venv/Lib/site-packages/pydantic/errors.py +189 -0
- venv/Lib/site-packages/pydantic/experimental/__init__.py +1 -0
- venv/Lib/site-packages/pydantic/experimental/arguments_schema.py +44 -0
- venv/Lib/site-packages/pydantic/experimental/missing_sentinel.py +5 -0
- venv/Lib/site-packages/pydantic/experimental/pipeline.py +663 -0
- venv/Lib/site-packages/pydantic/fields.py +1892 -0
- venv/Lib/site-packages/pydantic/functional_serializers.py +470 -0
- venv/Lib/site-packages/pydantic/functional_validators.py +889 -0
- venv/Lib/site-packages/pydantic/generics.py +5 -0
- venv/Lib/site-packages/pydantic/json.py +5 -0
- venv/Lib/site-packages/pydantic/json_schema.py +2911 -0
- venv/Lib/site-packages/pydantic/main.py +1838 -0
- venv/Lib/site-packages/pydantic/mypy.py +1412 -0
- venv/Lib/site-packages/pydantic/networks.py +1332 -0
- venv/Lib/site-packages/pydantic/parse.py +5 -0
- venv/Lib/site-packages/pydantic/plugin/__init__.py +193 -0
- venv/Lib/site-packages/pydantic/plugin/_loader.py +58 -0
- venv/Lib/site-packages/pydantic/plugin/_schema_validator.py +143 -0
- venv/Lib/site-packages/pydantic/py.typed +0 -0
- venv/Lib/site-packages/pydantic/root_model.py +157 -0
- venv/Lib/site-packages/pydantic/schema.py +5 -0
- venv/Lib/site-packages/pydantic/tools.py +5 -0
- venv/Lib/site-packages/pydantic/type_adapter.py +801 -0
- venv/Lib/site-packages/pydantic/types.py +3310 -0
- venv/Lib/site-packages/pydantic/typing.py +5 -0
- venv/Lib/site-packages/pydantic/utils.py +5 -0
- venv/Lib/site-packages/pydantic/v1/__init__.py +131 -0
- venv/Lib/site-packages/pydantic/v1/_hypothesis_plugin.py +391 -0
- venv/Lib/site-packages/pydantic/v1/annotated_types.py +72 -0
- venv/Lib/site-packages/pydantic/v1/class_validators.py +361 -0
- venv/Lib/site-packages/pydantic/v1/color.py +494 -0
- venv/Lib/site-packages/pydantic/v1/config.py +191 -0
- venv/Lib/site-packages/pydantic/v1/dataclasses.py +500 -0
- venv/Lib/site-packages/pydantic/v1/datetime_parse.py +248 -0
- venv/Lib/site-packages/pydantic/v1/decorator.py +264 -0
- venv/Lib/site-packages/pydantic/v1/env_settings.py +350 -0
- venv/Lib/site-packages/pydantic/v1/error_wrappers.py +161 -0
- venv/Lib/site-packages/pydantic/v1/errors.py +646 -0
- venv/Lib/site-packages/pydantic/v1/fields.py +1253 -0
- venv/Lib/site-packages/pydantic/v1/generics.py +400 -0
- venv/Lib/site-packages/pydantic/v1/json.py +112 -0
- venv/Lib/site-packages/pydantic/v1/main.py +1130 -0
- venv/Lib/site-packages/pydantic/v1/mypy.py +949 -0
- venv/Lib/site-packages/pydantic/v1/networks.py +747 -0
- venv/Lib/site-packages/pydantic/v1/parse.py +66 -0
- venv/Lib/site-packages/pydantic/v1/py.typed +0 -0
- venv/Lib/site-packages/pydantic/v1/schema.py +1163 -0
- venv/Lib/site-packages/pydantic/v1/tools.py +92 -0
- venv/Lib/site-packages/pydantic/v1/types.py +1205 -0
- venv/Lib/site-packages/pydantic/v1/typing.py +627 -0
- venv/Lib/site-packages/pydantic/v1/utils.py +807 -0
- venv/Lib/site-packages/pydantic/v1/validators.py +768 -0
- venv/Lib/site-packages/pydantic/v1/version.py +38 -0
- venv/Lib/site-packages/pydantic/validate_call_decorator.py +116 -0
- venv/Lib/site-packages/pydantic/validators.py +5 -0
- venv/Lib/site-packages/pydantic/version.py +113 -0
- venv/Lib/site-packages/pydantic/warnings.py +122 -0
- venv/Lib/site-packages/pydantic_core/__init__.py +171 -0
- venv/Lib/site-packages/pydantic_core/_pydantic_core.pyi +1056 -0
- venv/Lib/site-packages/pydantic_core/core_schema.py +4461 -0
- venv/Lib/site-packages/pydantic_core/py.typed +0 -0
- venv/Lib/site-packages/pygments/__init__.py +82 -0
- venv/Lib/site-packages/pygments/__main__.py +17 -0
- venv/Lib/site-packages/pygments/cmdline.py +668 -0
- venv/Lib/site-packages/pygments/console.py +70 -0
- venv/Lib/site-packages/pygments/filter.py +70 -0
- venv/Lib/site-packages/pygments/filters/__init__.py +942 -0
- venv/Lib/site-packages/pygments/formatter.py +129 -0
- venv/Lib/site-packages/pygments/formatters/__init__.py +157 -0
- venv/Lib/site-packages/pygments/formatters/_mapping.py +23 -0
- venv/Lib/site-packages/pygments/formatters/bbcode.py +108 -0
- venv/Lib/site-packages/pygments/formatters/groff.py +170 -0
- venv/Lib/site-packages/pygments/formatters/html.py +997 -0
- venv/Lib/site-packages/pygments/formatters/img.py +686 -0
- venv/Lib/site-packages/pygments/formatters/irc.py +153 -0
- venv/Lib/site-packages/pygments/formatters/latex.py +518 -0
- venv/Lib/site-packages/pygments/formatters/other.py +160 -0
- venv/Lib/site-packages/pygments/formatters/pangomarkup.py +83 -0
- venv/Lib/site-packages/pygments/formatters/rtf.py +349 -0
- venv/Lib/site-packages/pygments/formatters/svg.py +185 -0
- venv/Lib/site-packages/pygments/formatters/terminal.py +127 -0
- venv/Lib/site-packages/pygments/formatters/terminal256.py +338 -0
- venv/Lib/site-packages/pygments/lexer.py +963 -0
- venv/Lib/site-packages/pygments/lexers/__init__.py +362 -0
- venv/Lib/site-packages/pygments/lexers/_ada_builtins.py +103 -0
- venv/Lib/site-packages/pygments/lexers/_asy_builtins.py +1644 -0
- venv/Lib/site-packages/pygments/lexers/_cl_builtins.py +231 -0
- venv/Lib/site-packages/pygments/lexers/_cocoa_builtins.py +75 -0
- venv/Lib/site-packages/pygments/lexers/_csound_builtins.py +1780 -0
- venv/Lib/site-packages/pygments/lexers/_css_builtins.py +558 -0
- venv/Lib/site-packages/pygments/lexers/_googlesql_builtins.py +918 -0
- venv/Lib/site-packages/pygments/lexers/_julia_builtins.py +411 -0
- venv/Lib/site-packages/pygments/lexers/_lasso_builtins.py +5326 -0
- venv/Lib/site-packages/pygments/lexers/_lilypond_builtins.py +5184 -0
- venv/Lib/site-packages/pygments/lexers/_lua_builtins.py +285 -0
- venv/Lib/site-packages/pygments/lexers/_luau_builtins.py +62 -0
- venv/Lib/site-packages/pygments/lexers/_mapping.py +603 -0
- venv/Lib/site-packages/pygments/lexers/_mql_builtins.py +1171 -0
- venv/Lib/site-packages/pygments/lexers/_mysql_builtins.py +1384 -0
- venv/Lib/site-packages/pygments/lexers/_openedge_builtins.py +2600 -0
- venv/Lib/site-packages/pygments/lexers/_php_builtins.py +3328 -0
- venv/Lib/site-packages/pygments/lexers/_postgres_builtins.py +739 -0
- venv/Lib/site-packages/pygments/lexers/_qlik_builtins.py +666 -0
- venv/Lib/site-packages/pygments/lexers/_scheme_builtins.py +1609 -0
- venv/Lib/site-packages/pygments/lexers/_scilab_builtins.py +3093 -0
- venv/Lib/site-packages/pygments/lexers/_sourcemod_builtins.py +1151 -0
- venv/Lib/site-packages/pygments/lexers/_sql_builtins.py +106 -0
- venv/Lib/site-packages/pygments/lexers/_stan_builtins.py +761 -0
- venv/Lib/site-packages/pygments/lexers/_stata_builtins.py +457 -0
- venv/Lib/site-packages/pygments/lexers/_tsql_builtins.py +1003 -0
- venv/Lib/site-packages/pygments/lexers/_usd_builtins.py +112 -0
- venv/Lib/site-packages/pygments/lexers/_vbscript_builtins.py +279 -0
- venv/Lib/site-packages/pygments/lexers/_vim_builtins.py +1938 -0
- venv/Lib/site-packages/pygments/lexers/actionscript.py +243 -0
- venv/Lib/site-packages/pygments/lexers/ada.py +144 -0
- venv/Lib/site-packages/pygments/lexers/agile.py +25 -0
- venv/Lib/site-packages/pygments/lexers/algebra.py +300 -0
- venv/Lib/site-packages/pygments/lexers/ambient.py +75 -0
- venv/Lib/site-packages/pygments/lexers/amdgpu.py +54 -0
- venv/Lib/site-packages/pygments/lexers/ampl.py +87 -0
- venv/Lib/site-packages/pygments/lexers/apdlexer.py +593 -0
- venv/Lib/site-packages/pygments/lexers/apl.py +103 -0
- venv/Lib/site-packages/pygments/lexers/archetype.py +315 -0
- venv/Lib/site-packages/pygments/lexers/arrow.py +116 -0
- venv/Lib/site-packages/pygments/lexers/arturo.py +249 -0
- venv/Lib/site-packages/pygments/lexers/asc.py +55 -0
- venv/Lib/site-packages/pygments/lexers/asm.py +1058 -0
- venv/Lib/site-packages/pygments/lexers/asn1.py +178 -0
- venv/Lib/site-packages/pygments/lexers/automation.py +379 -0
- venv/Lib/site-packages/pygments/lexers/bare.py +101 -0
- venv/Lib/site-packages/pygments/lexers/basic.py +656 -0
- venv/Lib/site-packages/pygments/lexers/bdd.py +57 -0
- venv/Lib/site-packages/pygments/lexers/berry.py +99 -0
- venv/Lib/site-packages/pygments/lexers/bibtex.py +159 -0
- venv/Lib/site-packages/pygments/lexers/blueprint.py +173 -0
- venv/Lib/site-packages/pygments/lexers/boa.py +97 -0
- venv/Lib/site-packages/pygments/lexers/bqn.py +112 -0
- venv/Lib/site-packages/pygments/lexers/business.py +625 -0
- venv/Lib/site-packages/pygments/lexers/c_cpp.py +415 -0
- venv/Lib/site-packages/pygments/lexers/c_like.py +738 -0
- venv/Lib/site-packages/pygments/lexers/capnproto.py +74 -0
- venv/Lib/site-packages/pygments/lexers/carbon.py +95 -0
- venv/Lib/site-packages/pygments/lexers/cddl.py +172 -0
- venv/Lib/site-packages/pygments/lexers/chapel.py +139 -0
- venv/Lib/site-packages/pygments/lexers/clean.py +180 -0
- venv/Lib/site-packages/pygments/lexers/codeql.py +80 -0
- venv/Lib/site-packages/pygments/lexers/comal.py +81 -0
- venv/Lib/site-packages/pygments/lexers/compiled.py +35 -0
- venv/Lib/site-packages/pygments/lexers/configs.py +1433 -0
- venv/Lib/site-packages/pygments/lexers/console.py +114 -0
- venv/Lib/site-packages/pygments/lexers/cplint.py +43 -0
- venv/Lib/site-packages/pygments/lexers/crystal.py +364 -0
- venv/Lib/site-packages/pygments/lexers/csound.py +466 -0
- venv/Lib/site-packages/pygments/lexers/css.py +632 -0
- venv/Lib/site-packages/pygments/lexers/d.py +259 -0
- venv/Lib/site-packages/pygments/lexers/dalvik.py +126 -0
- venv/Lib/site-packages/pygments/lexers/data.py +763 -0
- venv/Lib/site-packages/pygments/lexers/dax.py +135 -0
- venv/Lib/site-packages/pygments/lexers/devicetree.py +120 -0
- venv/Lib/site-packages/pygments/lexers/diff.py +169 -0
- venv/Lib/site-packages/pygments/lexers/dns.py +109 -0
- venv/Lib/site-packages/pygments/lexers/dotnet.py +873 -0
- venv/Lib/site-packages/pygments/lexers/dsls.py +970 -0
- venv/Lib/site-packages/pygments/lexers/dylan.py +279 -0
- venv/Lib/site-packages/pygments/lexers/ecl.py +144 -0
- venv/Lib/site-packages/pygments/lexers/eiffel.py +68 -0
- venv/Lib/site-packages/pygments/lexers/elm.py +123 -0
- venv/Lib/site-packages/pygments/lexers/elpi.py +201 -0
- venv/Lib/site-packages/pygments/lexers/email.py +132 -0
- venv/Lib/site-packages/pygments/lexers/erlang.py +526 -0
- venv/Lib/site-packages/pygments/lexers/esoteric.py +300 -0
- venv/Lib/site-packages/pygments/lexers/ezhil.py +76 -0
- venv/Lib/site-packages/pygments/lexers/factor.py +363 -0
- venv/Lib/site-packages/pygments/lexers/fantom.py +251 -0
- venv/Lib/site-packages/pygments/lexers/felix.py +275 -0
- venv/Lib/site-packages/pygments/lexers/fift.py +68 -0
- venv/Lib/site-packages/pygments/lexers/floscript.py +81 -0
- venv/Lib/site-packages/pygments/lexers/forth.py +178 -0
- venv/Lib/site-packages/pygments/lexers/fortran.py +212 -0
- venv/Lib/site-packages/pygments/lexers/foxpro.py +427 -0
- venv/Lib/site-packages/pygments/lexers/freefem.py +893 -0
- venv/Lib/site-packages/pygments/lexers/func.py +110 -0
- venv/Lib/site-packages/pygments/lexers/functional.py +21 -0
- venv/Lib/site-packages/pygments/lexers/futhark.py +105 -0
- venv/Lib/site-packages/pygments/lexers/gcodelexer.py +35 -0
- venv/Lib/site-packages/pygments/lexers/gdscript.py +189 -0
- venv/Lib/site-packages/pygments/lexers/gleam.py +74 -0
- venv/Lib/site-packages/pygments/lexers/go.py +97 -0
- venv/Lib/site-packages/pygments/lexers/grammar_notation.py +262 -0
- venv/Lib/site-packages/pygments/lexers/graph.py +108 -0
- venv/Lib/site-packages/pygments/lexers/graphics.py +794 -0
- venv/Lib/site-packages/pygments/lexers/graphql.py +176 -0
- venv/Lib/site-packages/pygments/lexers/graphviz.py +58 -0
- venv/Lib/site-packages/pygments/lexers/gsql.py +103 -0
- venv/Lib/site-packages/pygments/lexers/hare.py +73 -0
- venv/Lib/site-packages/pygments/lexers/haskell.py +867 -0
- venv/Lib/site-packages/pygments/lexers/haxe.py +941 -0
- venv/Lib/site-packages/pygments/lexers/hdl.py +466 -0
- venv/Lib/site-packages/pygments/lexers/hexdump.py +102 -0
- venv/Lib/site-packages/pygments/lexers/html.py +670 -0
- venv/Lib/site-packages/pygments/lexers/idl.py +284 -0
- venv/Lib/site-packages/pygments/lexers/igor.py +435 -0
- venv/Lib/site-packages/pygments/lexers/inferno.py +95 -0
- venv/Lib/site-packages/pygments/lexers/installers.py +352 -0
- venv/Lib/site-packages/pygments/lexers/int_fiction.py +1370 -0
- venv/Lib/site-packages/pygments/lexers/iolang.py +61 -0
- venv/Lib/site-packages/pygments/lexers/j.py +151 -0
- venv/Lib/site-packages/pygments/lexers/javascript.py +1591 -0
- venv/Lib/site-packages/pygments/lexers/jmespath.py +69 -0
- venv/Lib/site-packages/pygments/lexers/jslt.py +94 -0
- venv/Lib/site-packages/pygments/lexers/json5.py +83 -0
- venv/Lib/site-packages/pygments/lexers/jsonnet.py +169 -0
- venv/Lib/site-packages/pygments/lexers/jsx.py +100 -0
- venv/Lib/site-packages/pygments/lexers/julia.py +294 -0
- venv/Lib/site-packages/pygments/lexers/jvm.py +1807 -0
- venv/Lib/site-packages/pygments/lexers/kuin.py +332 -0
- venv/Lib/site-packages/pygments/lexers/kusto.py +93 -0
- venv/Lib/site-packages/pygments/lexers/ldap.py +155 -0
- venv/Lib/site-packages/pygments/lexers/lean.py +241 -0
- venv/Lib/site-packages/pygments/lexers/lilypond.py +225 -0
- venv/Lib/site-packages/pygments/lexers/lisp.py +3152 -0
- venv/Lib/site-packages/pygments/lexers/macaulay2.py +1847 -0
- venv/Lib/site-packages/pygments/lexers/make.py +212 -0
- venv/Lib/site-packages/pygments/lexers/maple.py +291 -0
- venv/Lib/site-packages/pygments/lexers/markup.py +1659 -0
- venv/Lib/site-packages/pygments/lexers/math.py +21 -0
- venv/Lib/site-packages/pygments/lexers/matlab.py +3307 -0
- venv/Lib/site-packages/pygments/lexers/maxima.py +84 -0
- venv/Lib/site-packages/pygments/lexers/meson.py +139 -0
- venv/Lib/site-packages/pygments/lexers/mime.py +210 -0
- venv/Lib/site-packages/pygments/lexers/minecraft.py +392 -0
- venv/Lib/site-packages/pygments/lexers/mips.py +130 -0
- venv/Lib/site-packages/pygments/lexers/ml.py +958 -0
- venv/Lib/site-packages/pygments/lexers/modeling.py +368 -0
- venv/Lib/site-packages/pygments/lexers/modula2.py +1579 -0
- venv/Lib/site-packages/pygments/lexers/mojo.py +707 -0
- venv/Lib/site-packages/pygments/lexers/monte.py +203 -0
- venv/Lib/site-packages/pygments/lexers/mosel.py +447 -0
- venv/Lib/site-packages/pygments/lexers/ncl.py +894 -0
- venv/Lib/site-packages/pygments/lexers/nimrod.py +199 -0
- venv/Lib/site-packages/pygments/lexers/nit.py +63 -0
- venv/Lib/site-packages/pygments/lexers/nix.py +144 -0
- venv/Lib/site-packages/pygments/lexers/numbair.py +63 -0
- venv/Lib/site-packages/pygments/lexers/oberon.py +120 -0
- venv/Lib/site-packages/pygments/lexers/objective.py +513 -0
- venv/Lib/site-packages/pygments/lexers/ooc.py +84 -0
- venv/Lib/site-packages/pygments/lexers/openscad.py +96 -0
- venv/Lib/site-packages/pygments/lexers/other.py +41 -0
- venv/Lib/site-packages/pygments/lexers/parasail.py +78 -0
- venv/Lib/site-packages/pygments/lexers/parsers.py +798 -0
- venv/Lib/site-packages/pygments/lexers/pascal.py +644 -0
- venv/Lib/site-packages/pygments/lexers/pawn.py +202 -0
- venv/Lib/site-packages/pygments/lexers/pddl.py +82 -0
- venv/Lib/site-packages/pygments/lexers/perl.py +733 -0
- venv/Lib/site-packages/pygments/lexers/phix.py +363 -0
- venv/Lib/site-packages/pygments/lexers/php.py +335 -0
- venv/Lib/site-packages/pygments/lexers/pointless.py +70 -0
- venv/Lib/site-packages/pygments/lexers/pony.py +93 -0
- venv/Lib/site-packages/pygments/lexers/praat.py +303 -0
- venv/Lib/site-packages/pygments/lexers/procfile.py +41 -0
- venv/Lib/site-packages/pygments/lexers/prolog.py +318 -0
- venv/Lib/site-packages/pygments/lexers/promql.py +176 -0
- venv/Lib/site-packages/pygments/lexers/prql.py +251 -0
- venv/Lib/site-packages/pygments/lexers/ptx.py +119 -0
- venv/Lib/site-packages/pygments/lexers/python.py +1204 -0
- venv/Lib/site-packages/pygments/lexers/q.py +187 -0
- venv/Lib/site-packages/pygments/lexers/qlik.py +117 -0
- venv/Lib/site-packages/pygments/lexers/qvt.py +153 -0
- venv/Lib/site-packages/pygments/lexers/r.py +196 -0
- venv/Lib/site-packages/pygments/lexers/rdf.py +468 -0
- venv/Lib/site-packages/pygments/lexers/rebol.py +419 -0
- venv/Lib/site-packages/pygments/lexers/rego.py +57 -0
- venv/Lib/site-packages/pygments/lexers/rell.py +68 -0
- venv/Lib/site-packages/pygments/lexers/resource.py +83 -0
- venv/Lib/site-packages/pygments/lexers/ride.py +138 -0
- venv/Lib/site-packages/pygments/lexers/rita.py +42 -0
- venv/Lib/site-packages/pygments/lexers/rnc.py +66 -0
- venv/Lib/site-packages/pygments/lexers/roboconf.py +81 -0
- venv/Lib/site-packages/pygments/lexers/robotframework.py +551 -0
- venv/Lib/site-packages/pygments/lexers/ruby.py +518 -0
- venv/Lib/site-packages/pygments/lexers/rust.py +222 -0
- venv/Lib/site-packages/pygments/lexers/sas.py +227 -0
- venv/Lib/site-packages/pygments/lexers/savi.py +171 -0
- venv/Lib/site-packages/pygments/lexers/scdoc.py +85 -0
- venv/Lib/site-packages/pygments/lexers/scripting.py +1638 -0
- venv/Lib/site-packages/pygments/lexers/sgf.py +59 -0
- venv/Lib/site-packages/pygments/lexers/shell.py +902 -0
- venv/Lib/site-packages/pygments/lexers/sieve.py +78 -0
- venv/Lib/site-packages/pygments/lexers/slash.py +183 -0
- venv/Lib/site-packages/pygments/lexers/smalltalk.py +194 -0
- venv/Lib/site-packages/pygments/lexers/smithy.py +77 -0
- venv/Lib/site-packages/pygments/lexers/smv.py +78 -0
- venv/Lib/site-packages/pygments/lexers/snobol.py +82 -0
- venv/Lib/site-packages/pygments/lexers/solidity.py +87 -0
- venv/Lib/site-packages/pygments/lexers/soong.py +78 -0
- venv/Lib/site-packages/pygments/lexers/sophia.py +102 -0
- venv/Lib/site-packages/pygments/lexers/special.py +122 -0
- venv/Lib/site-packages/pygments/lexers/spice.py +70 -0
- venv/Lib/site-packages/pygments/lexers/sql.py +1111 -0
- venv/Lib/site-packages/pygments/lexers/srcinfo.py +62 -0
- venv/Lib/site-packages/pygments/lexers/stata.py +170 -0
- venv/Lib/site-packages/pygments/lexers/supercollider.py +94 -0
- venv/Lib/site-packages/pygments/lexers/tablegen.py +177 -0
- venv/Lib/site-packages/pygments/lexers/tact.py +303 -0
- venv/Lib/site-packages/pygments/lexers/tal.py +77 -0
- venv/Lib/site-packages/pygments/lexers/tcl.py +148 -0
- venv/Lib/site-packages/pygments/lexers/teal.py +88 -0
- venv/Lib/site-packages/pygments/lexers/templates.py +2355 -0
- venv/Lib/site-packages/pygments/lexers/teraterm.py +335 -0
- venv/Lib/site-packages/pygments/lexers/testing.py +209 -0
- venv/Lib/site-packages/pygments/lexers/text.py +27 -0
- venv/Lib/site-packages/pygments/lexers/textedit.py +205 -0
- venv/Lib/site-packages/pygments/lexers/textfmts.py +436 -0
- venv/Lib/site-packages/pygments/lexers/theorem.py +410 -0
- venv/Lib/site-packages/pygments/lexers/thingsdb.py +143 -0
- venv/Lib/site-packages/pygments/lexers/tlb.py +59 -0
- venv/Lib/site-packages/pygments/lexers/tls.py +54 -0
- venv/Lib/site-packages/pygments/lexers/tnt.py +270 -0
- venv/Lib/site-packages/pygments/lexers/trafficscript.py +51 -0
- venv/Lib/site-packages/pygments/lexers/typoscript.py +216 -0
- venv/Lib/site-packages/pygments/lexers/typst.py +160 -0
- venv/Lib/site-packages/pygments/lexers/ul4.py +309 -0
- venv/Lib/site-packages/pygments/lexers/unicon.py +413 -0
- venv/Lib/site-packages/pygments/lexers/urbi.py +145 -0
- venv/Lib/site-packages/pygments/lexers/usd.py +85 -0
- venv/Lib/site-packages/pygments/lexers/varnish.py +189 -0
- venv/Lib/site-packages/pygments/lexers/verification.py +113 -0
- venv/Lib/site-packages/pygments/lexers/verifpal.py +65 -0
- venv/Lib/site-packages/pygments/lexers/vip.py +150 -0
- venv/Lib/site-packages/pygments/lexers/vyper.py +140 -0
- venv/Lib/site-packages/pygments/lexers/web.py +24 -0
- venv/Lib/site-packages/pygments/lexers/webassembly.py +119 -0
- venv/Lib/site-packages/pygments/lexers/webidl.py +298 -0
- venv/Lib/site-packages/pygments/lexers/webmisc.py +1006 -0
- venv/Lib/site-packages/pygments/lexers/wgsl.py +406 -0
- venv/Lib/site-packages/pygments/lexers/whiley.py +115 -0
- venv/Lib/site-packages/pygments/lexers/wowtoc.py +120 -0
- venv/Lib/site-packages/pygments/lexers/wren.py +98 -0
- venv/Lib/site-packages/pygments/lexers/x10.py +66 -0
- venv/Lib/site-packages/pygments/lexers/xorg.py +38 -0
- venv/Lib/site-packages/pygments/lexers/yang.py +103 -0
- venv/Lib/site-packages/pygments/lexers/yara.py +69 -0
- venv/Lib/site-packages/pygments/lexers/zig.py +125 -0
- venv/Lib/site-packages/pygments/modeline.py +43 -0
- venv/Lib/site-packages/pygments/plugin.py +74 -0
- venv/Lib/site-packages/pygments/regexopt.py +102 -0
- venv/Lib/site-packages/pygments/scanner.py +104 -0
- venv/Lib/site-packages/pygments/sphinxext.py +247 -0
- venv/Lib/site-packages/pygments/style.py +203 -0
- venv/Lib/site-packages/pygments/styles/__init__.py +61 -0
- venv/Lib/site-packages/pygments/styles/_mapping.py +54 -0
- venv/Lib/site-packages/pygments/styles/abap.py +32 -0
- venv/Lib/site-packages/pygments/styles/algol.py +65 -0
- venv/Lib/site-packages/pygments/styles/algol_nu.py +65 -0
- venv/Lib/site-packages/pygments/styles/arduino.py +100 -0
- venv/Lib/site-packages/pygments/styles/autumn.py +67 -0
- venv/Lib/site-packages/pygments/styles/borland.py +53 -0
- venv/Lib/site-packages/pygments/styles/bw.py +52 -0
- venv/Lib/site-packages/pygments/styles/coffee.py +80 -0
- venv/Lib/site-packages/pygments/styles/colorful.py +83 -0
- venv/Lib/site-packages/pygments/styles/default.py +76 -0
- venv/Lib/site-packages/pygments/styles/dracula.py +90 -0
- venv/Lib/site-packages/pygments/styles/emacs.py +75 -0
- venv/Lib/site-packages/pygments/styles/friendly.py +76 -0
- venv/Lib/site-packages/pygments/styles/friendly_grayscale.py +80 -0
- venv/Lib/site-packages/pygments/styles/fruity.py +47 -0
- venv/Lib/site-packages/pygments/styles/gh_dark.py +113 -0
- venv/Lib/site-packages/pygments/styles/gruvbox.py +118 -0
- venv/Lib/site-packages/pygments/styles/igor.py +32 -0
- venv/Lib/site-packages/pygments/styles/inkpot.py +72 -0
- venv/Lib/site-packages/pygments/styles/lightbulb.py +110 -0
- venv/Lib/site-packages/pygments/styles/lilypond.py +62 -0
- venv/Lib/site-packages/pygments/styles/lovelace.py +100 -0
- venv/Lib/site-packages/pygments/styles/manni.py +79 -0
- venv/Lib/site-packages/pygments/styles/material.py +124 -0
- venv/Lib/site-packages/pygments/styles/monokai.py +112 -0
- venv/Lib/site-packages/pygments/styles/murphy.py +82 -0
- venv/Lib/site-packages/pygments/styles/native.py +70 -0
- venv/Lib/site-packages/pygments/styles/nord.py +156 -0
- venv/Lib/site-packages/pygments/styles/onedark.py +73 -0
- venv/Lib/site-packages/pygments/styles/paraiso_dark.py +124 -0
- venv/Lib/site-packages/pygments/styles/paraiso_light.py +124 -0
- venv/Lib/site-packages/pygments/styles/pastie.py +78 -0
- venv/Lib/site-packages/pygments/styles/perldoc.py +73 -0
- venv/Lib/site-packages/pygments/styles/rainbow_dash.py +95 -0
- venv/Lib/site-packages/pygments/styles/rrt.py +54 -0
- venv/Lib/site-packages/pygments/styles/sas.py +46 -0
- venv/Lib/site-packages/pygments/styles/solarized.py +144 -0
- venv/Lib/site-packages/pygments/styles/staroffice.py +31 -0
- venv/Lib/site-packages/pygments/styles/stata_dark.py +42 -0
- venv/Lib/site-packages/pygments/styles/stata_light.py +42 -0
- venv/Lib/site-packages/pygments/styles/tango.py +143 -0
- venv/Lib/site-packages/pygments/styles/trac.py +66 -0
- venv/Lib/site-packages/pygments/styles/vim.py +67 -0
- venv/Lib/site-packages/pygments/styles/vs.py +41 -0
- venv/Lib/site-packages/pygments/styles/xcode.py +53 -0
- venv/Lib/site-packages/pygments/styles/zenburn.py +83 -0
- venv/Lib/site-packages/pygments/token.py +214 -0
- venv/Lib/site-packages/pygments/unistring.py +153 -0
- venv/Lib/site-packages/pygments/util.py +324 -0
- venv/Lib/site-packages/pyproject_hooks/__init__.py +31 -0
- venv/Lib/site-packages/pyproject_hooks/_impl.py +410 -0
- venv/Lib/site-packages/pyproject_hooks/_in_process/__init__.py +21 -0
- venv/Lib/site-packages/pyproject_hooks/_in_process/_in_process.py +389 -0
- venv/Lib/site-packages/pyproject_hooks/py.typed +0 -0
- venv/Lib/site-packages/pytest/__init__.py +186 -0
- venv/Lib/site-packages/pytest/__main__.py +9 -0
- venv/Lib/site-packages/pytest/py.typed +0 -0
- venv/Lib/site-packages/readme_renderer/__init__.py +13 -0
- venv/Lib/site-packages/readme_renderer/__main__.py +66 -0
- venv/Lib/site-packages/readme_renderer/clean.py +89 -0
- venv/Lib/site-packages/readme_renderer/markdown.py +123 -0
- venv/Lib/site-packages/readme_renderer/py.typed +0 -0
- venv/Lib/site-packages/readme_renderer/rst.py +135 -0
- venv/Lib/site-packages/readme_renderer/txt.py +24 -0
- venv/Lib/site-packages/requests/__init__.py +183 -0
- venv/Lib/site-packages/requests/__version__.py +14 -0
- venv/Lib/site-packages/requests/_internal_utils.py +51 -0
- venv/Lib/site-packages/requests/adapters.py +697 -0
- venv/Lib/site-packages/requests/api.py +157 -0
- venv/Lib/site-packages/requests/auth.py +314 -0
- venv/Lib/site-packages/requests/certs.py +18 -0
- venv/Lib/site-packages/requests/compat.py +106 -0
- venv/Lib/site-packages/requests/cookies.py +561 -0
- venv/Lib/site-packages/requests/exceptions.py +152 -0
- venv/Lib/site-packages/requests/help.py +131 -0
- venv/Lib/site-packages/requests/hooks.py +34 -0
- venv/Lib/site-packages/requests/models.py +1041 -0
- venv/Lib/site-packages/requests/packages.py +23 -0
- venv/Lib/site-packages/requests/sessions.py +834 -0
- venv/Lib/site-packages/requests/status_codes.py +128 -0
- venv/Lib/site-packages/requests/structures.py +99 -0
- venv/Lib/site-packages/requests/utils.py +1083 -0
- venv/Lib/site-packages/requests_toolbelt/__init__.py +34 -0
- venv/Lib/site-packages/requests_toolbelt/_compat.py +302 -0
- venv/Lib/site-packages/requests_toolbelt/adapters/__init__.py +15 -0
- venv/Lib/site-packages/requests_toolbelt/adapters/appengine.py +206 -0
- venv/Lib/site-packages/requests_toolbelt/adapters/fingerprint.py +48 -0
- venv/Lib/site-packages/requests_toolbelt/adapters/host_header_ssl.py +43 -0
- venv/Lib/site-packages/requests_toolbelt/adapters/socket_options.py +129 -0
- venv/Lib/site-packages/requests_toolbelt/adapters/source.py +67 -0
- venv/Lib/site-packages/requests_toolbelt/adapters/ssl.py +66 -0
- venv/Lib/site-packages/requests_toolbelt/adapters/x509.py +196 -0
- venv/Lib/site-packages/requests_toolbelt/auth/__init__.py +0 -0
- venv/Lib/site-packages/requests_toolbelt/auth/_digest_auth_compat.py +29 -0
- venv/Lib/site-packages/requests_toolbelt/auth/guess.py +146 -0
- venv/Lib/site-packages/requests_toolbelt/auth/handler.py +142 -0
- venv/Lib/site-packages/requests_toolbelt/auth/http_proxy_digest.py +103 -0
- venv/Lib/site-packages/requests_toolbelt/cookies/__init__.py +0 -0
- venv/Lib/site-packages/requests_toolbelt/cookies/forgetful.py +7 -0
- venv/Lib/site-packages/requests_toolbelt/downloadutils/__init__.py +0 -0
- venv/Lib/site-packages/requests_toolbelt/downloadutils/stream.py +176 -0
- venv/Lib/site-packages/requests_toolbelt/downloadutils/tee.py +123 -0
- venv/Lib/site-packages/requests_toolbelt/exceptions.py +25 -0
- venv/Lib/site-packages/requests_toolbelt/multipart/__init__.py +31 -0
- venv/Lib/site-packages/requests_toolbelt/multipart/decoder.py +156 -0
- venv/Lib/site-packages/requests_toolbelt/multipart/encoder.py +655 -0
- venv/Lib/site-packages/requests_toolbelt/sessions.py +89 -0
- venv/Lib/site-packages/requests_toolbelt/streaming_iterator.py +116 -0
- venv/Lib/site-packages/requests_toolbelt/threaded/__init__.py +97 -0
- venv/Lib/site-packages/requests_toolbelt/threaded/pool.py +211 -0
- venv/Lib/site-packages/requests_toolbelt/threaded/thread.py +53 -0
- venv/Lib/site-packages/requests_toolbelt/utils/__init__.py +0 -0
- venv/Lib/site-packages/requests_toolbelt/utils/deprecated.py +91 -0
- venv/Lib/site-packages/requests_toolbelt/utils/dump.py +198 -0
- venv/Lib/site-packages/requests_toolbelt/utils/formdata.py +108 -0
- venv/Lib/site-packages/requests_toolbelt/utils/user_agent.py +143 -0
- venv/Lib/site-packages/rfc3986/__init__.py +53 -0
- venv/Lib/site-packages/rfc3986/_mixin.py +373 -0
- venv/Lib/site-packages/rfc3986/abnf_regexp.py +275 -0
- venv/Lib/site-packages/rfc3986/api.py +104 -0
- venv/Lib/site-packages/rfc3986/builder.py +388 -0
- venv/Lib/site-packages/rfc3986/compat.py +59 -0
- venv/Lib/site-packages/rfc3986/exceptions.py +120 -0
- venv/Lib/site-packages/rfc3986/iri.py +161 -0
- venv/Lib/site-packages/rfc3986/misc.py +131 -0
- venv/Lib/site-packages/rfc3986/normalizers.py +171 -0
- venv/Lib/site-packages/rfc3986/parseresult.py +474 -0
- venv/Lib/site-packages/rfc3986/uri.py +160 -0
- venv/Lib/site-packages/rfc3986/validators.py +440 -0
- venv/Lib/site-packages/rich/__init__.py +177 -0
- venv/Lib/site-packages/rich/__main__.py +245 -0
- venv/Lib/site-packages/rich/_emoji_codes.py +3610 -0
- venv/Lib/site-packages/rich/_emoji_replace.py +31 -0
- venv/Lib/site-packages/rich/_export_format.py +76 -0
- venv/Lib/site-packages/rich/_extension.py +10 -0
- venv/Lib/site-packages/rich/_fileno.py +24 -0
- venv/Lib/site-packages/rich/_inspect.py +272 -0
- venv/Lib/site-packages/rich/_log_render.py +94 -0
- venv/Lib/site-packages/rich/_loop.py +43 -0
- venv/Lib/site-packages/rich/_null_file.py +69 -0
- venv/Lib/site-packages/rich/_palettes.py +309 -0
- venv/Lib/site-packages/rich/_pick.py +17 -0
- venv/Lib/site-packages/rich/_ratio.py +153 -0
- venv/Lib/site-packages/rich/_spinners.py +482 -0
- venv/Lib/site-packages/rich/_stack.py +16 -0
- venv/Lib/site-packages/rich/_timer.py +19 -0
- venv/Lib/site-packages/rich/_unicode_data/__init__.py +93 -0
- venv/Lib/site-packages/rich/_unicode_data/_versions.py +23 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode10-0-0.py +611 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode11-0-0.py +625 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode12-0-0.py +637 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode12-1-0.py +636 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode13-0-0.py +648 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode14-0-0.py +661 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode15-0-0.py +671 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode15-1-0.py +670 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode16-0-0.py +683 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode17-0-0.py +691 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode4-1-0.py +425 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode5-0-0.py +430 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode5-1-0.py +433 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode5-2-0.py +461 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode6-0-0.py +469 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode6-1-0.py +480 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode6-2-0.py +480 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode6-3-0.py +481 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode7-0-0.py +507 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode8-0-0.py +515 -0
- venv/Lib/site-packages/rich/_unicode_data/unicode9-0-0.py +598 -0
- venv/Lib/site-packages/rich/_win32_console.py +661 -0
- venv/Lib/site-packages/rich/_windows.py +71 -0
- venv/Lib/site-packages/rich/_windows_renderer.py +56 -0
- venv/Lib/site-packages/rich/_wrap.py +93 -0
- venv/Lib/site-packages/rich/abc.py +33 -0
- venv/Lib/site-packages/rich/align.py +320 -0
- venv/Lib/site-packages/rich/ansi.py +241 -0
- venv/Lib/site-packages/rich/bar.py +93 -0
- venv/Lib/site-packages/rich/box.py +474 -0
- venv/Lib/site-packages/rich/cells.py +352 -0
- venv/Lib/site-packages/rich/color.py +621 -0
- venv/Lib/site-packages/rich/color_triplet.py +38 -0
- venv/Lib/site-packages/rich/columns.py +187 -0
- venv/Lib/site-packages/rich/console.py +2698 -0
- venv/Lib/site-packages/rich/constrain.py +37 -0
- venv/Lib/site-packages/rich/containers.py +167 -0
- venv/Lib/site-packages/rich/control.py +219 -0
- venv/Lib/site-packages/rich/default_styles.py +196 -0
- venv/Lib/site-packages/rich/diagnose.py +39 -0
- venv/Lib/site-packages/rich/emoji.py +93 -0
- venv/Lib/site-packages/rich/errors.py +34 -0
- venv/Lib/site-packages/rich/file_proxy.py +60 -0
- venv/Lib/site-packages/rich/filesize.py +88 -0
- venv/Lib/site-packages/rich/highlighter.py +232 -0
- venv/Lib/site-packages/rich/json.py +139 -0
- venv/Lib/site-packages/rich/jupyter.py +101 -0
- venv/Lib/site-packages/rich/layout.py +442 -0
- venv/Lib/site-packages/rich/live.py +404 -0
- venv/Lib/site-packages/rich/live_render.py +116 -0
- venv/Lib/site-packages/rich/logging.py +305 -0
- venv/Lib/site-packages/rich/markdown.py +802 -0
- venv/Lib/site-packages/rich/markup.py +251 -0
- venv/Lib/site-packages/rich/measure.py +151 -0
- venv/Lib/site-packages/rich/padding.py +141 -0
- venv/Lib/site-packages/rich/pager.py +34 -0
- venv/Lib/site-packages/rich/palette.py +100 -0
- venv/Lib/site-packages/rich/panel.py +317 -0
- venv/Lib/site-packages/rich/pretty.py +1016 -0
- venv/Lib/site-packages/rich/progress.py +1716 -0
- venv/Lib/site-packages/rich/progress_bar.py +223 -0
- venv/Lib/site-packages/rich/prompt.py +400 -0
- venv/Lib/site-packages/rich/protocol.py +41 -0
- venv/Lib/site-packages/rich/py.typed +0 -0
- venv/Lib/site-packages/rich/region.py +10 -0
- venv/Lib/site-packages/rich/repr.py +150 -0
- venv/Lib/site-packages/rich/rule.py +130 -0
- venv/Lib/site-packages/rich/scope.py +92 -0
- venv/Lib/site-packages/rich/screen.py +54 -0
- venv/Lib/site-packages/rich/segment.py +780 -0
- venv/Lib/site-packages/rich/spinner.py +132 -0
- venv/Lib/site-packages/rich/status.py +131 -0
- venv/Lib/site-packages/rich/style.py +796 -0
- venv/Lib/site-packages/rich/styled.py +42 -0
- venv/Lib/site-packages/rich/syntax.py +988 -0
- venv/Lib/site-packages/rich/table.py +1015 -0
- venv/Lib/site-packages/rich/terminal_theme.py +153 -0
- venv/Lib/site-packages/rich/text.py +1363 -0
- venv/Lib/site-packages/rich/theme.py +116 -0
- venv/Lib/site-packages/rich/themes.py +5 -0
- venv/Lib/site-packages/rich/traceback.py +924 -0
- venv/Lib/site-packages/rich/tree.py +257 -0
- venv/Lib/site-packages/twine/__init__.py +54 -0
- venv/Lib/site-packages/twine/__main__.py +54 -0
- venv/Lib/site-packages/twine/auth.py +307 -0
- venv/Lib/site-packages/twine/cli.py +139 -0
- venv/Lib/site-packages/twine/commands/__init__.py +93 -0
- venv/Lib/site-packages/twine/commands/check.py +195 -0
- venv/Lib/site-packages/twine/commands/register.py +87 -0
- venv/Lib/site-packages/twine/commands/upload.py +253 -0
- venv/Lib/site-packages/twine/distribution.py +8 -0
- venv/Lib/site-packages/twine/exceptions.py +175 -0
- venv/Lib/site-packages/twine/package.py +403 -0
- venv/Lib/site-packages/twine/py.typed +0 -0
- venv/Lib/site-packages/twine/repository.py +246 -0
- venv/Lib/site-packages/twine/sdist.py +83 -0
- venv/Lib/site-packages/twine/settings.py +360 -0
- venv/Lib/site-packages/twine/utils.py +387 -0
- venv/Lib/site-packages/twine/wheel.py +81 -0
- venv/Lib/site-packages/typing_extensions.py +4317 -0
- venv/Lib/site-packages/typing_inspection/__init__.py +0 -0
- venv/Lib/site-packages/typing_inspection/introspection.py +587 -0
- venv/Lib/site-packages/typing_inspection/py.typed +0 -0
- venv/Lib/site-packages/typing_inspection/typing_objects.py +607 -0
- venv/Lib/site-packages/typing_inspection/typing_objects.pyi +417 -0
- venv/Lib/site-packages/urllib3/__init__.py +211 -0
- venv/Lib/site-packages/urllib3/_base_connection.py +167 -0
- venv/Lib/site-packages/urllib3/_collections.py +486 -0
- venv/Lib/site-packages/urllib3/_request_methods.py +278 -0
- venv/Lib/site-packages/urllib3/_version.py +24 -0
- venv/Lib/site-packages/urllib3/connection.py +1099 -0
- venv/Lib/site-packages/urllib3/connectionpool.py +1191 -0
- venv/Lib/site-packages/urllib3/contrib/__init__.py +0 -0
- venv/Lib/site-packages/urllib3/contrib/emscripten/__init__.py +17 -0
- venv/Lib/site-packages/urllib3/contrib/emscripten/connection.py +260 -0
- venv/Lib/site-packages/urllib3/contrib/emscripten/fetch.py +726 -0
- venv/Lib/site-packages/urllib3/contrib/emscripten/request.py +22 -0
- venv/Lib/site-packages/urllib3/contrib/emscripten/response.py +281 -0
- venv/Lib/site-packages/urllib3/contrib/pyopenssl.py +563 -0
- venv/Lib/site-packages/urllib3/contrib/socks.py +228 -0
- venv/Lib/site-packages/urllib3/exceptions.py +335 -0
- venv/Lib/site-packages/urllib3/fields.py +341 -0
- venv/Lib/site-packages/urllib3/filepost.py +89 -0
- venv/Lib/site-packages/urllib3/http2/__init__.py +53 -0
- venv/Lib/site-packages/urllib3/http2/connection.py +356 -0
- venv/Lib/site-packages/urllib3/http2/probe.py +87 -0
- venv/Lib/site-packages/urllib3/poolmanager.py +653 -0
- venv/Lib/site-packages/urllib3/py.typed +2 -0
- venv/Lib/site-packages/urllib3/response.py +1493 -0
- venv/Lib/site-packages/urllib3/util/__init__.py +42 -0
- venv/Lib/site-packages/urllib3/util/connection.py +137 -0
- venv/Lib/site-packages/urllib3/util/proxy.py +43 -0
- venv/Lib/site-packages/urllib3/util/request.py +263 -0
- venv/Lib/site-packages/urllib3/util/response.py +101 -0
- venv/Lib/site-packages/urllib3/util/retry.py +557 -0
- venv/Lib/site-packages/urllib3/util/ssl_.py +477 -0
- venv/Lib/site-packages/urllib3/util/ssl_match_hostname.py +153 -0
- venv/Lib/site-packages/urllib3/util/ssltransport.py +271 -0
- venv/Lib/site-packages/urllib3/util/timeout.py +275 -0
- venv/Lib/site-packages/urllib3/util/url.py +469 -0
- venv/Lib/site-packages/urllib3/util/util.py +42 -0
- venv/Lib/site-packages/urllib3/util/wait.py +124 -0
- venv/Lib/site-packages/win32ctypes/__init__.py +8 -0
- venv/Lib/site-packages/win32ctypes/core/__init__.py +60 -0
- venv/Lib/site-packages/win32ctypes/core/_winerrors.py +9 -0
- venv/Lib/site-packages/win32ctypes/core/cffi/__init__.py +11 -0
- venv/Lib/site-packages/win32ctypes/core/cffi/_authentication.py +172 -0
- venv/Lib/site-packages/win32ctypes/core/cffi/_common.py +29 -0
- venv/Lib/site-packages/win32ctypes/core/cffi/_dll.py +30 -0
- venv/Lib/site-packages/win32ctypes/core/cffi/_nl_support.py +18 -0
- venv/Lib/site-packages/win32ctypes/core/cffi/_resource.py +132 -0
- venv/Lib/site-packages/win32ctypes/core/cffi/_system_information.py +32 -0
- venv/Lib/site-packages/win32ctypes/core/cffi/_time.py +18 -0
- venv/Lib/site-packages/win32ctypes/core/cffi/_util.py +105 -0
- venv/Lib/site-packages/win32ctypes/core/compat.py +10 -0
- venv/Lib/site-packages/win32ctypes/core/ctypes/__init__.py +11 -0
- venv/Lib/site-packages/win32ctypes/core/ctypes/_authentication.py +122 -0
- venv/Lib/site-packages/win32ctypes/core/ctypes/_common.py +53 -0
- venv/Lib/site-packages/win32ctypes/core/ctypes/_dll.py +21 -0
- venv/Lib/site-packages/win32ctypes/core/ctypes/_nl_support.py +12 -0
- venv/Lib/site-packages/win32ctypes/core/ctypes/_resource.py +148 -0
- venv/Lib/site-packages/win32ctypes/core/ctypes/_system_information.py +36 -0
- venv/Lib/site-packages/win32ctypes/core/ctypes/_time.py +15 -0
- venv/Lib/site-packages/win32ctypes/core/ctypes/_util.py +78 -0
- venv/Lib/site-packages/win32ctypes/pywin32/__init__.py +12 -0
- venv/Lib/site-packages/win32ctypes/pywin32/pywintypes.py +67 -0
- venv/Lib/site-packages/win32ctypes/pywin32/win32api.py +294 -0
- venv/Lib/site-packages/win32ctypes/pywin32/win32cred.py +145 -0
- venv/Lib/site-packages/win32ctypes/pywintypes.py +13 -0
- venv/Lib/site-packages/win32ctypes/tests/__init__.py +21 -0
- venv/Lib/site-packages/win32ctypes/tests/test_backends.py +36 -0
- venv/Lib/site-packages/win32ctypes/tests/test_win32api.py +304 -0
- venv/Lib/site-packages/win32ctypes/tests/test_win32cred.py +230 -0
- venv/Lib/site-packages/win32ctypes/version.py +1 -0
- venv/Lib/site-packages/win32ctypes/win32api.py +13 -0
- venv/Lib/site-packages/win32ctypes/win32cred.py +13 -0
|
@@ -0,0 +1,1599 @@
|
|
|
1
|
+
"""Imported from the recipes section of the itertools documentation.
|
|
2
|
+
|
|
3
|
+
All functions taken from the recipes section of the itertools library docs
|
|
4
|
+
[1]_.
|
|
5
|
+
Some backward-compatible usability improvements have been made.
|
|
6
|
+
|
|
7
|
+
.. [1] http://docs.python.org/library/itertools.html#recipes
|
|
8
|
+
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import random
|
|
12
|
+
|
|
13
|
+
from bisect import bisect_left, insort
|
|
14
|
+
from collections import deque
|
|
15
|
+
from contextlib import suppress
|
|
16
|
+
from dataclasses import dataclass
|
|
17
|
+
from functools import lru_cache, reduce
|
|
18
|
+
from heapq import heappush, heappushpop
|
|
19
|
+
from itertools import (
|
|
20
|
+
accumulate,
|
|
21
|
+
chain,
|
|
22
|
+
combinations,
|
|
23
|
+
compress,
|
|
24
|
+
count,
|
|
25
|
+
cycle,
|
|
26
|
+
filterfalse,
|
|
27
|
+
groupby,
|
|
28
|
+
islice,
|
|
29
|
+
pairwise as itertools_pairwise,
|
|
30
|
+
product,
|
|
31
|
+
repeat,
|
|
32
|
+
starmap,
|
|
33
|
+
takewhile,
|
|
34
|
+
tee,
|
|
35
|
+
zip_longest,
|
|
36
|
+
)
|
|
37
|
+
from math import prod, comb, isqrt, gcd
|
|
38
|
+
from operator import mul, getitem, index as _index, is_, itemgetter, truediv
|
|
39
|
+
from random import randrange, sample, choice, shuffle
|
|
40
|
+
from sys import hexversion
|
|
41
|
+
|
|
42
|
+
__all__ = [
|
|
43
|
+
'Stats',
|
|
44
|
+
'all_equal',
|
|
45
|
+
'batched',
|
|
46
|
+
'before_and_after',
|
|
47
|
+
'consume',
|
|
48
|
+
'convolve',
|
|
49
|
+
'dotproduct',
|
|
50
|
+
'first_true',
|
|
51
|
+
'factor',
|
|
52
|
+
'flatten',
|
|
53
|
+
'grouper',
|
|
54
|
+
'is_prime',
|
|
55
|
+
'iter_except',
|
|
56
|
+
'iter_index',
|
|
57
|
+
'loops',
|
|
58
|
+
'matmul',
|
|
59
|
+
'multinomial',
|
|
60
|
+
'ncycles',
|
|
61
|
+
'nth',
|
|
62
|
+
'nth_combination',
|
|
63
|
+
'padnone',
|
|
64
|
+
'pad_none',
|
|
65
|
+
'pairwise',
|
|
66
|
+
'partition',
|
|
67
|
+
'polynomial_eval',
|
|
68
|
+
'polynomial_from_roots',
|
|
69
|
+
'polynomial_derivative',
|
|
70
|
+
'powerset',
|
|
71
|
+
'prepend',
|
|
72
|
+
'quantify',
|
|
73
|
+
'reshape',
|
|
74
|
+
'random_combination_with_replacement',
|
|
75
|
+
'random_combination',
|
|
76
|
+
'random_derangement',
|
|
77
|
+
'random_permutation',
|
|
78
|
+
'random_product',
|
|
79
|
+
'repeatfunc',
|
|
80
|
+
'roundrobin',
|
|
81
|
+
'running_max',
|
|
82
|
+
'running_mean',
|
|
83
|
+
'running_median',
|
|
84
|
+
'running_min',
|
|
85
|
+
'running_statistics',
|
|
86
|
+
'sieve',
|
|
87
|
+
'sliding_window',
|
|
88
|
+
'subslices',
|
|
89
|
+
'sum_of_squares',
|
|
90
|
+
'tabulate',
|
|
91
|
+
'tail',
|
|
92
|
+
'take',
|
|
93
|
+
'totient',
|
|
94
|
+
'transpose',
|
|
95
|
+
'triplewise',
|
|
96
|
+
'unique',
|
|
97
|
+
'unique_everseen',
|
|
98
|
+
'unique_justseen',
|
|
99
|
+
]
|
|
100
|
+
|
|
101
|
+
_marker = object()
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
# heapq max-heap functions are available for Python 3.14+
|
|
105
|
+
try:
|
|
106
|
+
from heapq import heappush_max, heappushpop_max
|
|
107
|
+
except ImportError: # pragma: no cover
|
|
108
|
+
_max_heap_available = False
|
|
109
|
+
else: # pragma: no cover
|
|
110
|
+
_max_heap_available = True
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def take(n, iterable):
|
|
114
|
+
"""Return first *n* items of the *iterable* as a list.
|
|
115
|
+
|
|
116
|
+
>>> take(3, range(10))
|
|
117
|
+
[0, 1, 2]
|
|
118
|
+
|
|
119
|
+
If there are fewer than *n* items in the iterable, all of them are
|
|
120
|
+
returned.
|
|
121
|
+
|
|
122
|
+
>>> take(10, range(3))
|
|
123
|
+
[0, 1, 2]
|
|
124
|
+
|
|
125
|
+
"""
|
|
126
|
+
return list(islice(iterable, n))
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
def tabulate(function, start=0):
|
|
130
|
+
"""Return an iterator over the results of ``func(start)``,
|
|
131
|
+
``func(start + 1)``, ``func(start + 2)``...
|
|
132
|
+
|
|
133
|
+
*func* should be a function that accepts one integer argument.
|
|
134
|
+
|
|
135
|
+
If *start* is not specified it defaults to 0. It will be incremented each
|
|
136
|
+
time the iterator is advanced.
|
|
137
|
+
|
|
138
|
+
>>> square = lambda x: x ** 2
|
|
139
|
+
>>> iterator = tabulate(square, -3)
|
|
140
|
+
>>> take(4, iterator)
|
|
141
|
+
[9, 4, 1, 0]
|
|
142
|
+
|
|
143
|
+
"""
|
|
144
|
+
return map(function, count(start))
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def tail(n, iterable):
|
|
148
|
+
"""Return an iterator over the last *n* items of *iterable*.
|
|
149
|
+
|
|
150
|
+
>>> t = tail(3, 'ABCDEFG')
|
|
151
|
+
>>> list(t)
|
|
152
|
+
['E', 'F', 'G']
|
|
153
|
+
|
|
154
|
+
"""
|
|
155
|
+
try:
|
|
156
|
+
size = len(iterable)
|
|
157
|
+
except TypeError:
|
|
158
|
+
return iter(deque(iterable, maxlen=n))
|
|
159
|
+
else:
|
|
160
|
+
return islice(iterable, max(0, size - n), None)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def consume(iterator, n=None):
|
|
164
|
+
"""Advance *iterable* by *n* steps. If *n* is ``None``, consume it
|
|
165
|
+
entirely.
|
|
166
|
+
|
|
167
|
+
Efficiently exhausts an iterator without returning values. Defaults to
|
|
168
|
+
consuming the whole iterator, but an optional second argument may be
|
|
169
|
+
provided to limit consumption.
|
|
170
|
+
|
|
171
|
+
>>> i = (x for x in range(10))
|
|
172
|
+
>>> next(i)
|
|
173
|
+
0
|
|
174
|
+
>>> consume(i, 3)
|
|
175
|
+
>>> next(i)
|
|
176
|
+
4
|
|
177
|
+
>>> consume(i)
|
|
178
|
+
>>> next(i)
|
|
179
|
+
Traceback (most recent call last):
|
|
180
|
+
File "<stdin>", line 1, in <module>
|
|
181
|
+
StopIteration
|
|
182
|
+
|
|
183
|
+
If the iterator has fewer items remaining than the provided limit, the
|
|
184
|
+
whole iterator will be consumed.
|
|
185
|
+
|
|
186
|
+
>>> i = (x for x in range(3))
|
|
187
|
+
>>> consume(i, 5)
|
|
188
|
+
>>> next(i)
|
|
189
|
+
Traceback (most recent call last):
|
|
190
|
+
File "<stdin>", line 1, in <module>
|
|
191
|
+
StopIteration
|
|
192
|
+
|
|
193
|
+
"""
|
|
194
|
+
# Use functions that consume iterators at C speed.
|
|
195
|
+
if n is None:
|
|
196
|
+
# feed the entire iterator into a zero-length deque
|
|
197
|
+
deque(iterator, maxlen=0)
|
|
198
|
+
else:
|
|
199
|
+
# advance to the empty slice starting at position n
|
|
200
|
+
next(islice(iterator, n, n), None)
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
def nth(iterable, n, default=None):
|
|
204
|
+
"""Returns the nth item or a default value.
|
|
205
|
+
|
|
206
|
+
>>> l = range(10)
|
|
207
|
+
>>> nth(l, 3)
|
|
208
|
+
3
|
|
209
|
+
>>> nth(l, 20, "zebra")
|
|
210
|
+
'zebra'
|
|
211
|
+
|
|
212
|
+
"""
|
|
213
|
+
return next(islice(iterable, n, None), default)
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
def all_equal(iterable, key=None):
|
|
217
|
+
"""
|
|
218
|
+
Returns ``True`` if all the elements are equal to each other.
|
|
219
|
+
|
|
220
|
+
>>> all_equal('aaaa')
|
|
221
|
+
True
|
|
222
|
+
>>> all_equal('aaab')
|
|
223
|
+
False
|
|
224
|
+
|
|
225
|
+
A function that accepts a single argument and returns a transformed version
|
|
226
|
+
of each input item can be specified with *key*:
|
|
227
|
+
|
|
228
|
+
>>> all_equal('AaaA', key=str.casefold)
|
|
229
|
+
True
|
|
230
|
+
>>> all_equal([1, 2, 3], key=lambda x: x < 10)
|
|
231
|
+
True
|
|
232
|
+
|
|
233
|
+
"""
|
|
234
|
+
iterator = groupby(iterable, key)
|
|
235
|
+
for first in iterator:
|
|
236
|
+
for second in iterator:
|
|
237
|
+
return False
|
|
238
|
+
return True
|
|
239
|
+
return True
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
def quantify(iterable, pred=bool):
|
|
243
|
+
"""Return the how many times the predicate is true.
|
|
244
|
+
|
|
245
|
+
>>> quantify([True, False, True])
|
|
246
|
+
2
|
|
247
|
+
|
|
248
|
+
"""
|
|
249
|
+
return sum(map(pred, iterable))
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
def pad_none(iterable):
|
|
253
|
+
"""Returns the sequence of elements and then returns ``None`` indefinitely.
|
|
254
|
+
|
|
255
|
+
>>> take(5, pad_none(range(3)))
|
|
256
|
+
[0, 1, 2, None, None]
|
|
257
|
+
|
|
258
|
+
Useful for emulating the behavior of the built-in :func:`map` function.
|
|
259
|
+
|
|
260
|
+
See also :func:`padded`.
|
|
261
|
+
|
|
262
|
+
"""
|
|
263
|
+
return chain(iterable, repeat(None))
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
padnone = pad_none
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
def ncycles(iterable, n):
|
|
270
|
+
"""Returns the sequence elements *n* times
|
|
271
|
+
|
|
272
|
+
>>> list(ncycles(["a", "b"], 3))
|
|
273
|
+
['a', 'b', 'a', 'b', 'a', 'b']
|
|
274
|
+
|
|
275
|
+
"""
|
|
276
|
+
return chain.from_iterable(repeat(tuple(iterable), n))
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
def dotproduct(vec1, vec2):
|
|
280
|
+
"""Returns the dot product of the two iterables.
|
|
281
|
+
|
|
282
|
+
>>> dotproduct([10, 15, 12], [0.65, 0.80, 1.25])
|
|
283
|
+
33.5
|
|
284
|
+
>>> 10 * 0.65 + 15 * 0.80 + 12 * 1.25
|
|
285
|
+
33.5
|
|
286
|
+
|
|
287
|
+
In Python 3.12 and later, use ``math.sumprod()`` instead.
|
|
288
|
+
"""
|
|
289
|
+
return sum(map(mul, vec1, vec2))
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
# math.sumprod is available for Python 3.12+
|
|
293
|
+
try:
|
|
294
|
+
from math import sumprod as _sumprod
|
|
295
|
+
except ImportError: # pragma: no cover
|
|
296
|
+
_sumprod = dotproduct
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
def flatten(list_of_lists):
|
|
300
|
+
"""Return an iterator flattening one level of nesting in a list of lists.
|
|
301
|
+
|
|
302
|
+
>>> list(flatten([[0, 1], [2, 3]]))
|
|
303
|
+
[0, 1, 2, 3]
|
|
304
|
+
|
|
305
|
+
See also :func:`collapse`, which can flatten multiple levels of nesting.
|
|
306
|
+
|
|
307
|
+
"""
|
|
308
|
+
return chain.from_iterable(list_of_lists)
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
def repeatfunc(function, times=None, *args):
|
|
312
|
+
"""Call *function* with *args* repeatedly, returning an iterable over the
|
|
313
|
+
results.
|
|
314
|
+
|
|
315
|
+
If *times* is specified, the iterable will terminate after that many
|
|
316
|
+
repetitions:
|
|
317
|
+
|
|
318
|
+
>>> from operator import add
|
|
319
|
+
>>> times = 4
|
|
320
|
+
>>> args = 3, 5
|
|
321
|
+
>>> list(repeatfunc(add, times, *args))
|
|
322
|
+
[8, 8, 8, 8]
|
|
323
|
+
|
|
324
|
+
If *times* is ``None`` the iterable will not terminate:
|
|
325
|
+
|
|
326
|
+
>>> from random import randrange
|
|
327
|
+
>>> times = None
|
|
328
|
+
>>> args = 1, 11
|
|
329
|
+
>>> take(6, repeatfunc(randrange, times, *args)) # doctest:+SKIP
|
|
330
|
+
[2, 4, 8, 1, 8, 4]
|
|
331
|
+
|
|
332
|
+
"""
|
|
333
|
+
if times is None:
|
|
334
|
+
return starmap(function, repeat(args))
|
|
335
|
+
return starmap(function, repeat(args, times))
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
def pairwise(iterable):
|
|
339
|
+
"""
|
|
340
|
+
Wrapper for :func:`itertools.pairwise`.
|
|
341
|
+
|
|
342
|
+
.. warning::
|
|
343
|
+
|
|
344
|
+
This function is deprecated as of version 11.0.0. It will be removed in a future
|
|
345
|
+
major release.
|
|
346
|
+
"""
|
|
347
|
+
return itertools_pairwise(iterable)
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
def grouper(iterable, n, incomplete='fill', fillvalue=None):
|
|
351
|
+
"""Group elements from *iterable* into fixed-length groups of length *n*.
|
|
352
|
+
|
|
353
|
+
>>> list(grouper('ABCDEF', 3))
|
|
354
|
+
[('A', 'B', 'C'), ('D', 'E', 'F')]
|
|
355
|
+
|
|
356
|
+
The keyword arguments *incomplete* and *fillvalue* control what happens for
|
|
357
|
+
iterables whose length is not a multiple of *n*.
|
|
358
|
+
|
|
359
|
+
When *incomplete* is `'fill'`, the last group will contain instances of
|
|
360
|
+
*fillvalue*.
|
|
361
|
+
|
|
362
|
+
>>> list(grouper('ABCDEFG', 3, incomplete='fill', fillvalue='x'))
|
|
363
|
+
[('A', 'B', 'C'), ('D', 'E', 'F'), ('G', 'x', 'x')]
|
|
364
|
+
|
|
365
|
+
When *incomplete* is `'ignore'`, the last group will not be emitted.
|
|
366
|
+
|
|
367
|
+
>>> list(grouper('ABCDEFG', 3, incomplete='ignore', fillvalue='x'))
|
|
368
|
+
[('A', 'B', 'C'), ('D', 'E', 'F')]
|
|
369
|
+
|
|
370
|
+
When *incomplete* is `'strict'`, a `ValueError` will be raised.
|
|
371
|
+
|
|
372
|
+
>>> iterator = grouper('ABCDEFG', 3, incomplete='strict')
|
|
373
|
+
>>> list(iterator) # doctest: +IGNORE_EXCEPTION_DETAIL
|
|
374
|
+
Traceback (most recent call last):
|
|
375
|
+
...
|
|
376
|
+
ValueError
|
|
377
|
+
|
|
378
|
+
"""
|
|
379
|
+
iterators = [iter(iterable)] * n
|
|
380
|
+
match incomplete:
|
|
381
|
+
case 'fill':
|
|
382
|
+
return zip_longest(*iterators, fillvalue=fillvalue)
|
|
383
|
+
case 'strict':
|
|
384
|
+
return zip(*iterators, strict=True)
|
|
385
|
+
case 'ignore':
|
|
386
|
+
return zip(*iterators)
|
|
387
|
+
case _:
|
|
388
|
+
raise ValueError('Expected fill, strict, or ignore')
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
def roundrobin(*iterables):
|
|
392
|
+
"""Visit input iterables in a cycle until each is exhausted.
|
|
393
|
+
|
|
394
|
+
>>> list(roundrobin('ABC', 'D', 'EF'))
|
|
395
|
+
['A', 'D', 'E', 'B', 'F', 'C']
|
|
396
|
+
|
|
397
|
+
This function produces the same output as :func:`interleave_longest`, but
|
|
398
|
+
may perform better for some inputs (in particular when the number of
|
|
399
|
+
iterables is small).
|
|
400
|
+
|
|
401
|
+
"""
|
|
402
|
+
# Algorithm credited to George Sakkis
|
|
403
|
+
iterators = map(iter, iterables)
|
|
404
|
+
for num_active in range(len(iterables), 0, -1):
|
|
405
|
+
iterators = cycle(islice(iterators, num_active))
|
|
406
|
+
yield from map(next, iterators)
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
def partition(pred, iterable):
|
|
410
|
+
"""
|
|
411
|
+
Returns a 2-tuple of iterables derived from the input iterable.
|
|
412
|
+
The first yields the items that have ``pred(item) == False``.
|
|
413
|
+
The second yields the items that have ``pred(item) == True``.
|
|
414
|
+
|
|
415
|
+
>>> is_odd = lambda x: x % 2 != 0
|
|
416
|
+
>>> iterable = range(10)
|
|
417
|
+
>>> even_items, odd_items = partition(is_odd, iterable)
|
|
418
|
+
>>> list(even_items), list(odd_items)
|
|
419
|
+
([0, 2, 4, 6, 8], [1, 3, 5, 7, 9])
|
|
420
|
+
|
|
421
|
+
If *pred* is None, :func:`bool` is used.
|
|
422
|
+
|
|
423
|
+
>>> iterable = [0, 1, False, True, '', ' ']
|
|
424
|
+
>>> false_items, true_items = partition(None, iterable)
|
|
425
|
+
>>> list(false_items), list(true_items)
|
|
426
|
+
([0, False, ''], [1, True, ' '])
|
|
427
|
+
|
|
428
|
+
"""
|
|
429
|
+
if pred is None:
|
|
430
|
+
pred = bool
|
|
431
|
+
iterator = iter(iterable)
|
|
432
|
+
|
|
433
|
+
false_queue = deque()
|
|
434
|
+
true_queue = deque()
|
|
435
|
+
|
|
436
|
+
def gen(queue):
|
|
437
|
+
while True:
|
|
438
|
+
while queue:
|
|
439
|
+
yield queue.popleft()
|
|
440
|
+
for value in iterator:
|
|
441
|
+
(true_queue if pred(value) else false_queue).append(value)
|
|
442
|
+
break
|
|
443
|
+
else:
|
|
444
|
+
return
|
|
445
|
+
|
|
446
|
+
return gen(false_queue), gen(true_queue)
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
def powerset(iterable):
|
|
450
|
+
"""Yields all possible subsets of the iterable.
|
|
451
|
+
|
|
452
|
+
>>> list(powerset([1, 2, 3]))
|
|
453
|
+
[(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)]
|
|
454
|
+
|
|
455
|
+
:func:`powerset` will operate on iterables that aren't :class:`set`
|
|
456
|
+
instances, so repeated elements in the input will produce repeated elements
|
|
457
|
+
in the output.
|
|
458
|
+
|
|
459
|
+
>>> seq = [1, 1, 0]
|
|
460
|
+
>>> list(powerset(seq))
|
|
461
|
+
[(), (1,), (1,), (0,), (1, 1), (1, 0), (1, 0), (1, 1, 0)]
|
|
462
|
+
|
|
463
|
+
For a variant that efficiently yields actual :class:`set` instances, see
|
|
464
|
+
:func:`powerset_of_sets`.
|
|
465
|
+
"""
|
|
466
|
+
s = list(iterable)
|
|
467
|
+
return chain.from_iterable(combinations(s, r) for r in range(len(s) + 1))
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
def unique_everseen(iterable, key=None):
|
|
471
|
+
"""Yield unique elements, preserving order. Remember all elements ever seen.
|
|
472
|
+
|
|
473
|
+
>>> list(unique_everseen('AAAABBBCCDAABBB'))
|
|
474
|
+
['A', 'B', 'C', 'D']
|
|
475
|
+
>>> list(unique_everseen('ABBCcAD', str.casefold))
|
|
476
|
+
['A', 'B', 'C', 'D']
|
|
477
|
+
|
|
478
|
+
Raises ``TypeError`` for unhashable items.
|
|
479
|
+
|
|
480
|
+
Some unhashable objects can be converted to hashable objects
|
|
481
|
+
using the *key* parameter:
|
|
482
|
+
|
|
483
|
+
* For ``list`` objects, try ``key=tuple``.
|
|
484
|
+
* For ``set`` objects, try ``key=frozenset``.
|
|
485
|
+
* For ``dict`` objects, try ``key=lambda x: frozenset(x.items())``
|
|
486
|
+
or in Python 3.15 and later, set ``key=frozendict``.
|
|
487
|
+
|
|
488
|
+
Alternatively, consider the ``unique()`` itertool recipe. It sorts
|
|
489
|
+
the data and then uses equality to eliminate duplicates. Hashability
|
|
490
|
+
is not required.
|
|
491
|
+
|
|
492
|
+
"""
|
|
493
|
+
seen = set()
|
|
494
|
+
if key is None:
|
|
495
|
+
for element in filterfalse(seen.__contains__, iterable):
|
|
496
|
+
seen.add(element)
|
|
497
|
+
yield element
|
|
498
|
+
else:
|
|
499
|
+
for element in iterable:
|
|
500
|
+
k = key(element)
|
|
501
|
+
if k not in seen:
|
|
502
|
+
seen.add(k)
|
|
503
|
+
yield element
|
|
504
|
+
|
|
505
|
+
|
|
506
|
+
def unique_justseen(iterable, key=None):
|
|
507
|
+
"""Yields elements in order, ignoring serial duplicates
|
|
508
|
+
|
|
509
|
+
>>> list(unique_justseen('AAAABBBCCDAABBB'))
|
|
510
|
+
['A', 'B', 'C', 'D', 'A', 'B']
|
|
511
|
+
>>> list(unique_justseen('ABBCcAD', str.lower))
|
|
512
|
+
['A', 'B', 'C', 'A', 'D']
|
|
513
|
+
|
|
514
|
+
"""
|
|
515
|
+
if key is None:
|
|
516
|
+
return map(itemgetter(0), groupby(iterable))
|
|
517
|
+
|
|
518
|
+
return map(next, map(itemgetter(1), groupby(iterable, key)))
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
def unique(iterable, key=None, reverse=False):
|
|
522
|
+
"""Yields unique elements in sorted order.
|
|
523
|
+
|
|
524
|
+
>>> list(unique([[1, 2], [3, 4], [1, 2]]))
|
|
525
|
+
[[1, 2], [3, 4]]
|
|
526
|
+
|
|
527
|
+
*key* and *reverse* are passed to :func:`sorted`.
|
|
528
|
+
|
|
529
|
+
>>> list(unique('ABBcCAD', str.casefold))
|
|
530
|
+
['A', 'B', 'c', 'D']
|
|
531
|
+
>>> list(unique('ABBcCAD', str.casefold, reverse=True))
|
|
532
|
+
['D', 'c', 'B', 'A']
|
|
533
|
+
|
|
534
|
+
The elements in *iterable* need not be hashable, but they must be
|
|
535
|
+
comparable for sorting to work.
|
|
536
|
+
"""
|
|
537
|
+
sequenced = sorted(iterable, key=key, reverse=reverse)
|
|
538
|
+
return unique_justseen(sequenced, key=key)
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
def iter_except(function, exception, first=None):
|
|
542
|
+
"""Yields results from a function repeatedly until an exception is raised.
|
|
543
|
+
|
|
544
|
+
Converts a call-until-exception interface to an iterator interface.
|
|
545
|
+
Like ``iter(function, sentinel)``, but uses an exception instead of a sentinel
|
|
546
|
+
to end the loop.
|
|
547
|
+
|
|
548
|
+
>>> l = [0, 1, 2]
|
|
549
|
+
>>> list(iter_except(l.pop, IndexError))
|
|
550
|
+
[2, 1, 0]
|
|
551
|
+
|
|
552
|
+
Multiple exceptions can be specified as a stopping condition:
|
|
553
|
+
|
|
554
|
+
>>> l = [1, 2, 3, '...', 4, 5, 6]
|
|
555
|
+
>>> list(iter_except(lambda: 1 + l.pop(), (IndexError, TypeError)))
|
|
556
|
+
[7, 6, 5]
|
|
557
|
+
>>> list(iter_except(lambda: 1 + l.pop(), (IndexError, TypeError)))
|
|
558
|
+
[4, 3, 2]
|
|
559
|
+
>>> list(iter_except(lambda: 1 + l.pop(), (IndexError, TypeError)))
|
|
560
|
+
[]
|
|
561
|
+
|
|
562
|
+
"""
|
|
563
|
+
with suppress(exception):
|
|
564
|
+
if first is not None:
|
|
565
|
+
yield first()
|
|
566
|
+
while True:
|
|
567
|
+
yield function()
|
|
568
|
+
|
|
569
|
+
|
|
570
|
+
def first_true(iterable, default=None, pred=None):
|
|
571
|
+
"""
|
|
572
|
+
Returns the first true value in the iterable.
|
|
573
|
+
|
|
574
|
+
If no true value is found, returns *default*
|
|
575
|
+
|
|
576
|
+
If *pred* is not None, returns the first item for which
|
|
577
|
+
``pred(item) == True`` .
|
|
578
|
+
|
|
579
|
+
>>> first_true(range(10))
|
|
580
|
+
1
|
|
581
|
+
>>> first_true(range(10), pred=lambda x: x > 5)
|
|
582
|
+
6
|
|
583
|
+
>>> first_true(range(10), default='missing', pred=lambda x: x > 9)
|
|
584
|
+
'missing'
|
|
585
|
+
|
|
586
|
+
"""
|
|
587
|
+
return next(filter(pred, iterable), default)
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
def random_product(*iterables, repeat=1):
|
|
591
|
+
"""Draw an item at random from each of the input iterables.
|
|
592
|
+
|
|
593
|
+
>>> random_product('abc', range(4), 'XYZ') # doctest:+SKIP
|
|
594
|
+
('c', 3, 'Z')
|
|
595
|
+
|
|
596
|
+
If *repeat* is provided as a keyword argument, that many items will be
|
|
597
|
+
drawn from each iterable.
|
|
598
|
+
|
|
599
|
+
>>> random_product('abcd', range(4), repeat=2) # doctest:+SKIP
|
|
600
|
+
('a', 2, 'd', 3)
|
|
601
|
+
|
|
602
|
+
This equivalent to taking a random selection from
|
|
603
|
+
``itertools.product(*args, repeat=repeat)``.
|
|
604
|
+
|
|
605
|
+
"""
|
|
606
|
+
pools = tuple(map(tuple, iterables)) * repeat
|
|
607
|
+
return tuple(map(choice, pools))
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
def random_permutation(iterable, r=None):
|
|
611
|
+
"""Return a random *r* length permutation of the elements in *iterable*.
|
|
612
|
+
|
|
613
|
+
If *r* is not specified or is ``None``, then *r* defaults to the length of
|
|
614
|
+
*iterable*.
|
|
615
|
+
|
|
616
|
+
>>> random_permutation(range(5)) # doctest:+SKIP
|
|
617
|
+
(3, 4, 0, 1, 2)
|
|
618
|
+
|
|
619
|
+
This equivalent to taking a random selection from
|
|
620
|
+
``itertools.permutations(iterable, r)``.
|
|
621
|
+
|
|
622
|
+
"""
|
|
623
|
+
pool = tuple(iterable)
|
|
624
|
+
r = len(pool) if r is None else r
|
|
625
|
+
return tuple(sample(pool, r))
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
def random_combination(iterable, r):
|
|
629
|
+
"""Return a random *r* length subsequence of the elements in *iterable*.
|
|
630
|
+
|
|
631
|
+
>>> random_combination(range(5), 3) # doctest:+SKIP
|
|
632
|
+
(2, 3, 4)
|
|
633
|
+
|
|
634
|
+
This equivalent to taking a random selection from
|
|
635
|
+
``itertools.combinations(iterable, r)``.
|
|
636
|
+
|
|
637
|
+
"""
|
|
638
|
+
pool = tuple(iterable)
|
|
639
|
+
n = len(pool)
|
|
640
|
+
indices = sorted(sample(range(n), r))
|
|
641
|
+
return tuple([pool[i] for i in indices])
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
def random_combination_with_replacement(iterable, r):
|
|
645
|
+
"""Return a random *r* length subsequence of elements in *iterable*,
|
|
646
|
+
allowing individual elements to be repeated.
|
|
647
|
+
|
|
648
|
+
>>> random_combination_with_replacement(range(3), 5) # doctest:+SKIP
|
|
649
|
+
(0, 0, 1, 2, 2)
|
|
650
|
+
|
|
651
|
+
This equivalent to taking a random selection from
|
|
652
|
+
``itertools.combinations_with_replacement(iterable, r)``.
|
|
653
|
+
|
|
654
|
+
"""
|
|
655
|
+
pool = tuple(iterable)
|
|
656
|
+
n = len(pool)
|
|
657
|
+
indices = sorted(randrange(n) for i in range(r))
|
|
658
|
+
return tuple([pool[i] for i in indices])
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
def nth_combination(iterable, r, index):
|
|
662
|
+
"""Equivalent to ``list(combinations(iterable, r))[index]``.
|
|
663
|
+
|
|
664
|
+
The subsequences of *iterable* that are of length *r* can be ordered
|
|
665
|
+
lexicographically. :func:`nth_combination` computes the subsequence at
|
|
666
|
+
sort position *index* directly, without computing the previous
|
|
667
|
+
subsequences.
|
|
668
|
+
|
|
669
|
+
>>> nth_combination(range(5), 3, 5)
|
|
670
|
+
(0, 3, 4)
|
|
671
|
+
|
|
672
|
+
``ValueError`` will be raised If *r* is negative.
|
|
673
|
+
``IndexError`` will be raised if the given *index* is invalid.
|
|
674
|
+
"""
|
|
675
|
+
pool = tuple(iterable)
|
|
676
|
+
n = len(pool)
|
|
677
|
+
c = comb(n, r)
|
|
678
|
+
|
|
679
|
+
if index < 0:
|
|
680
|
+
index += c
|
|
681
|
+
if not 0 <= index < c:
|
|
682
|
+
raise IndexError
|
|
683
|
+
|
|
684
|
+
result = []
|
|
685
|
+
while r:
|
|
686
|
+
c, n, r = c * r // n, n - 1, r - 1
|
|
687
|
+
while index >= c:
|
|
688
|
+
index -= c
|
|
689
|
+
c, n = c * (n - r) // n, n - 1
|
|
690
|
+
result.append(pool[-1 - n])
|
|
691
|
+
|
|
692
|
+
return tuple(result)
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
def prepend(value, iterable):
|
|
696
|
+
"""Yield *value*, followed by the elements in *iterable*.
|
|
697
|
+
|
|
698
|
+
>>> value = '0'
|
|
699
|
+
>>> iterable = ['1', '2', '3']
|
|
700
|
+
>>> list(prepend(value, iterable))
|
|
701
|
+
['0', '1', '2', '3']
|
|
702
|
+
|
|
703
|
+
To prepend multiple values, see :func:`itertools.chain`
|
|
704
|
+
or :func:`value_chain`.
|
|
705
|
+
|
|
706
|
+
"""
|
|
707
|
+
return chain([value], iterable)
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
def convolve(signal, kernel):
|
|
711
|
+
"""Discrete linear convolution of two iterables.
|
|
712
|
+
Equivalent to polynomial multiplication.
|
|
713
|
+
|
|
714
|
+
For example, multiplying ``(x² -x - 20)`` by ``(x - 3)``
|
|
715
|
+
gives ``(x³ -4x² -17x + 60)``.
|
|
716
|
+
|
|
717
|
+
>>> list(convolve([1, -1, -20], [1, -3]))
|
|
718
|
+
[1, -4, -17, 60]
|
|
719
|
+
|
|
720
|
+
Examples of popular kinds of kernels:
|
|
721
|
+
|
|
722
|
+
* The kernel ``[0.25, 0.25, 0.25, 0.25]`` computes a moving average.
|
|
723
|
+
For image data, this blurs the image and reduces noise.
|
|
724
|
+
* The kernel ``[1/2, 0, -1/2]`` estimates the first derivative of
|
|
725
|
+
a function evaluated at evenly spaced inputs.
|
|
726
|
+
* The kernel ``[1, -2, 1]`` estimates the second derivative of a
|
|
727
|
+
function evaluated at evenly spaced inputs.
|
|
728
|
+
|
|
729
|
+
Convolutions are mathematically commutative; however, the inputs are
|
|
730
|
+
evaluated differently. The signal is consumed lazily and can be
|
|
731
|
+
infinite. The kernel is fully consumed before the calculations begin.
|
|
732
|
+
|
|
733
|
+
Supports all numeric types: int, float, complex, Decimal, Fraction.
|
|
734
|
+
|
|
735
|
+
References:
|
|
736
|
+
|
|
737
|
+
* Article: https://betterexplained.com/articles/intuitive-convolution/
|
|
738
|
+
* Video by 3Blue1Brown: https://www.youtube.com/watch?v=KuXjwB4LzSA
|
|
739
|
+
|
|
740
|
+
"""
|
|
741
|
+
# This implementation comes from an older version of the itertools
|
|
742
|
+
# documentation. While the newer implementation is a bit clearer,
|
|
743
|
+
# this one was kept because the inlined window logic is faster
|
|
744
|
+
# and it avoids an unnecessary deque-to-tuple conversion.
|
|
745
|
+
kernel = tuple(kernel)[::-1]
|
|
746
|
+
n = len(kernel)
|
|
747
|
+
window = deque([0], maxlen=n) * n
|
|
748
|
+
for x in chain(signal, repeat(0, n - 1)):
|
|
749
|
+
window.append(x)
|
|
750
|
+
yield _sumprod(kernel, window)
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
def before_and_after(predicate, it):
|
|
754
|
+
"""A variant of :func:`takewhile` that allows complete access to the
|
|
755
|
+
remainder of the iterator.
|
|
756
|
+
|
|
757
|
+
>>> it = iter('ABCdEfGhI')
|
|
758
|
+
>>> all_upper, remainder = before_and_after(str.isupper, it)
|
|
759
|
+
>>> ''.join(all_upper)
|
|
760
|
+
'ABC'
|
|
761
|
+
>>> ''.join(remainder) # takewhile() would lose the 'd'
|
|
762
|
+
'dEfGhI'
|
|
763
|
+
|
|
764
|
+
Note that the first iterator must be fully consumed before the second
|
|
765
|
+
iterator can generate valid results.
|
|
766
|
+
"""
|
|
767
|
+
trues, after = tee(it)
|
|
768
|
+
trues = compress(takewhile(predicate, trues), zip(after))
|
|
769
|
+
return trues, after
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
def triplewise(iterable):
|
|
773
|
+
"""Return overlapping triplets from *iterable*.
|
|
774
|
+
|
|
775
|
+
>>> list(triplewise('ABCDE'))
|
|
776
|
+
[('A', 'B', 'C'), ('B', 'C', 'D'), ('C', 'D', 'E')]
|
|
777
|
+
|
|
778
|
+
"""
|
|
779
|
+
# This deviates from the itertools documentation recipe - see
|
|
780
|
+
# https://github.com/more-itertools/more-itertools/issues/889
|
|
781
|
+
t1, t2, t3 = tee(iterable, 3)
|
|
782
|
+
next(t3, None)
|
|
783
|
+
next(t3, None)
|
|
784
|
+
next(t2, None)
|
|
785
|
+
return zip(t1, t2, t3)
|
|
786
|
+
|
|
787
|
+
|
|
788
|
+
def _sliding_window_islice(iterable, n):
|
|
789
|
+
# Fast path for small, non-zero values of n.
|
|
790
|
+
iterators = tee(iterable, n)
|
|
791
|
+
for i, iterator in enumerate(iterators):
|
|
792
|
+
next(islice(iterator, i, i), None)
|
|
793
|
+
return zip(*iterators)
|
|
794
|
+
|
|
795
|
+
|
|
796
|
+
def _sliding_window_deque(iterable, n):
|
|
797
|
+
# Normal path for other values of n.
|
|
798
|
+
iterator = iter(iterable)
|
|
799
|
+
window = deque(islice(iterator, n - 1), maxlen=n)
|
|
800
|
+
for x in iterator:
|
|
801
|
+
window.append(x)
|
|
802
|
+
yield tuple(window)
|
|
803
|
+
|
|
804
|
+
|
|
805
|
+
def sliding_window(iterable, n):
|
|
806
|
+
"""Return a sliding window of width *n* over *iterable*.
|
|
807
|
+
|
|
808
|
+
>>> list(sliding_window(range(6), 4))
|
|
809
|
+
[(0, 1, 2, 3), (1, 2, 3, 4), (2, 3, 4, 5)]
|
|
810
|
+
|
|
811
|
+
If *iterable* has fewer than *n* items, then nothing is yielded:
|
|
812
|
+
|
|
813
|
+
>>> list(sliding_window(range(3), 4))
|
|
814
|
+
[]
|
|
815
|
+
|
|
816
|
+
For a variant with more features, see :func:`windowed`.
|
|
817
|
+
"""
|
|
818
|
+
if n > 20:
|
|
819
|
+
return _sliding_window_deque(iterable, n)
|
|
820
|
+
elif n > 2:
|
|
821
|
+
return _sliding_window_islice(iterable, n)
|
|
822
|
+
elif n == 2:
|
|
823
|
+
return pairwise(iterable)
|
|
824
|
+
elif n == 1:
|
|
825
|
+
return zip(iterable)
|
|
826
|
+
else:
|
|
827
|
+
raise ValueError(f'n should be at least one, not {n}')
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
def subslices(iterable):
|
|
831
|
+
"""Return all contiguous non-empty subslices of *iterable*.
|
|
832
|
+
|
|
833
|
+
>>> list(subslices('ABC'))
|
|
834
|
+
[['A'], ['A', 'B'], ['A', 'B', 'C'], ['B'], ['B', 'C'], ['C']]
|
|
835
|
+
|
|
836
|
+
This is similar to :func:`substrings`, but emits items in a different
|
|
837
|
+
order.
|
|
838
|
+
"""
|
|
839
|
+
seq = list(iterable)
|
|
840
|
+
slices = starmap(slice, combinations(range(len(seq) + 1), 2))
|
|
841
|
+
return map(getitem, repeat(seq), slices)
|
|
842
|
+
|
|
843
|
+
|
|
844
|
+
def polynomial_from_roots(roots):
|
|
845
|
+
"""Compute a polynomial's coefficients from its roots.
|
|
846
|
+
|
|
847
|
+
>>> roots = [5, -4, 3] # (x - 5) * (x + 4) * (x - 3)
|
|
848
|
+
>>> polynomial_from_roots(roots) # x³ - 4 x² - 17 x + 60
|
|
849
|
+
[1, -4, -17, 60]
|
|
850
|
+
|
|
851
|
+
Note that polynomial coefficients are specified in descending power order.
|
|
852
|
+
|
|
853
|
+
Supports all numeric types: int, float, complex, Decimal, Fraction.
|
|
854
|
+
"""
|
|
855
|
+
|
|
856
|
+
# This recipe differs from the one in itertools docs in that it
|
|
857
|
+
# applies list() after each call to convolve(). This avoids
|
|
858
|
+
# hitting stack limits with nested generators.
|
|
859
|
+
|
|
860
|
+
poly = [1]
|
|
861
|
+
for root in roots:
|
|
862
|
+
poly = list(convolve(poly, (1, -root)))
|
|
863
|
+
return poly
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
def iter_index(iterable, value, start=0, stop=None):
|
|
867
|
+
"""Yield the index of each place in *iterable* that *value* occurs,
|
|
868
|
+
beginning with index *start* and ending before index *stop*.
|
|
869
|
+
|
|
870
|
+
|
|
871
|
+
>>> list(iter_index('AABCADEAF', 'A'))
|
|
872
|
+
[0, 1, 4, 7]
|
|
873
|
+
>>> list(iter_index('AABCADEAF', 'A', 1)) # start index is inclusive
|
|
874
|
+
[1, 4, 7]
|
|
875
|
+
>>> list(iter_index('AABCADEAF', 'A', 1, 7)) # stop index is not inclusive
|
|
876
|
+
[1, 4]
|
|
877
|
+
|
|
878
|
+
The behavior for non-scalar *values* matches the built-in Python types.
|
|
879
|
+
|
|
880
|
+
>>> list(iter_index('ABCDABCD', 'AB'))
|
|
881
|
+
[0, 4]
|
|
882
|
+
>>> list(iter_index([0, 1, 2, 3, 0, 1, 2, 3], [0, 1]))
|
|
883
|
+
[]
|
|
884
|
+
>>> list(iter_index([[0, 1], [2, 3], [0, 1], [2, 3]], [0, 1]))
|
|
885
|
+
[0, 2]
|
|
886
|
+
|
|
887
|
+
See :func:`locate` for a more general means of finding the indexes
|
|
888
|
+
associated with particular values.
|
|
889
|
+
|
|
890
|
+
"""
|
|
891
|
+
seq_index = getattr(iterable, 'index', None)
|
|
892
|
+
if seq_index is None:
|
|
893
|
+
# Slow path for general iterables
|
|
894
|
+
iterator = islice(iterable, start, stop)
|
|
895
|
+
for i, element in enumerate(iterator, start):
|
|
896
|
+
if element is value or element == value:
|
|
897
|
+
yield i
|
|
898
|
+
else:
|
|
899
|
+
# Fast path for sequences
|
|
900
|
+
stop = len(iterable) if stop is None else stop
|
|
901
|
+
i = start - 1
|
|
902
|
+
with suppress(ValueError):
|
|
903
|
+
while True:
|
|
904
|
+
yield (i := seq_index(value, i + 1, stop))
|
|
905
|
+
|
|
906
|
+
|
|
907
|
+
def sieve(n):
|
|
908
|
+
"""Yield the primes less than n.
|
|
909
|
+
|
|
910
|
+
>>> list(sieve(30))
|
|
911
|
+
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
|
|
912
|
+
|
|
913
|
+
"""
|
|
914
|
+
# This implementation comes from an older version of the itertools
|
|
915
|
+
# documentation. The newer implementation is easier to read but is
|
|
916
|
+
# less lazy.
|
|
917
|
+
if n > 2:
|
|
918
|
+
yield 2
|
|
919
|
+
start = 3
|
|
920
|
+
data = bytearray((0, 1)) * (n // 2)
|
|
921
|
+
for p in iter_index(data, 1, start, stop=isqrt(n) + 1):
|
|
922
|
+
yield from iter_index(data, 1, start, p * p)
|
|
923
|
+
data[p * p : n : p + p] = bytes(len(range(p * p, n, p + p)))
|
|
924
|
+
start = p * p
|
|
925
|
+
yield from iter_index(data, 1, start)
|
|
926
|
+
|
|
927
|
+
|
|
928
|
+
def _batched(iterable, n, *, strict=False): # pragma: no cover
|
|
929
|
+
"""Batch data into tuples of length *n*. If the number of items in
|
|
930
|
+
*iterable* is not divisible by *n*:
|
|
931
|
+
* The last batch will be shorter if *strict* is ``False``.
|
|
932
|
+
* :exc:`ValueError` will be raised if *strict* is ``True``.
|
|
933
|
+
|
|
934
|
+
>>> list(batched('ABCDEFG', 3))
|
|
935
|
+
[('A', 'B', 'C'), ('D', 'E', 'F'), ('G',)]
|
|
936
|
+
|
|
937
|
+
On Python 3.13 and above, this is an alias for :func:`itertools.batched`.
|
|
938
|
+
"""
|
|
939
|
+
if n < 1:
|
|
940
|
+
raise ValueError('n must be at least one')
|
|
941
|
+
iterator = iter(iterable)
|
|
942
|
+
while batch := tuple(islice(iterator, n)):
|
|
943
|
+
if strict and len(batch) != n:
|
|
944
|
+
raise ValueError('batched(): incomplete batch')
|
|
945
|
+
yield batch
|
|
946
|
+
|
|
947
|
+
|
|
948
|
+
if hexversion >= 0x30D00A2: # pragma: no cover
|
|
949
|
+
from itertools import batched as itertools_batched
|
|
950
|
+
|
|
951
|
+
def batched(iterable, n, *, strict=False):
|
|
952
|
+
return itertools_batched(iterable, n, strict=strict)
|
|
953
|
+
|
|
954
|
+
batched.__doc__ = _batched.__doc__
|
|
955
|
+
else: # pragma: no cover
|
|
956
|
+
batched = _batched
|
|
957
|
+
|
|
958
|
+
|
|
959
|
+
def transpose(matrix):
|
|
960
|
+
"""Swap the rows and columns of the input matrix.
|
|
961
|
+
|
|
962
|
+
>>> list(transpose([(1, 2, 3), (11, 22, 33)]))
|
|
963
|
+
[(1, 11), (2, 22), (3, 33)]
|
|
964
|
+
|
|
965
|
+
The caller should ensure that the dimensions of the input are compatible.
|
|
966
|
+
If the input is empty, no output will be produced.
|
|
967
|
+
"""
|
|
968
|
+
return zip(*matrix, strict=True)
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
def _is_scalar(value, stringlike=(str, bytes)):
|
|
972
|
+
"Scalars are bytes, strings, and non-iterables."
|
|
973
|
+
try:
|
|
974
|
+
iter(value)
|
|
975
|
+
except TypeError:
|
|
976
|
+
return True
|
|
977
|
+
return isinstance(value, stringlike)
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
def _flatten_tensor(tensor):
|
|
981
|
+
"Depth-first iterator over scalars in a tensor."
|
|
982
|
+
iterator = iter(tensor)
|
|
983
|
+
while True:
|
|
984
|
+
try:
|
|
985
|
+
value = next(iterator)
|
|
986
|
+
except StopIteration:
|
|
987
|
+
return iterator
|
|
988
|
+
iterator = chain((value,), iterator)
|
|
989
|
+
if _is_scalar(value):
|
|
990
|
+
return iterator
|
|
991
|
+
iterator = chain.from_iterable(iterator)
|
|
992
|
+
|
|
993
|
+
|
|
994
|
+
def reshape(matrix, shape):
|
|
995
|
+
"""Change the shape of a *matrix*.
|
|
996
|
+
|
|
997
|
+
If *shape* is an integer, the matrix must be two dimensional
|
|
998
|
+
and the shape is interpreted as the desired number of columns:
|
|
999
|
+
|
|
1000
|
+
>>> matrix = [(0, 1), (2, 3), (4, 5)]
|
|
1001
|
+
>>> cols = 3
|
|
1002
|
+
>>> list(reshape(matrix, cols))
|
|
1003
|
+
[(0, 1, 2), (3, 4, 5)]
|
|
1004
|
+
|
|
1005
|
+
If *shape* is a tuple (or other iterable), the input matrix can have
|
|
1006
|
+
any number of dimensions. It will first be flattened and then rebuilt
|
|
1007
|
+
to the desired shape which can also be multidimensional:
|
|
1008
|
+
|
|
1009
|
+
>>> matrix = [(0, 1), (2, 3), (4, 5)] # Start with a 3 x 2 matrix
|
|
1010
|
+
|
|
1011
|
+
>>> list(reshape(matrix, (2, 3))) # Make a 2 x 3 matrix
|
|
1012
|
+
[(0, 1, 2), (3, 4, 5)]
|
|
1013
|
+
|
|
1014
|
+
>>> list(reshape(matrix, (6,))) # Make a vector of length six
|
|
1015
|
+
[0, 1, 2, 3, 4, 5]
|
|
1016
|
+
|
|
1017
|
+
>>> list(reshape(matrix, (2, 1, 3, 1))) # Make 2 x 1 x 3 x 1 tensor
|
|
1018
|
+
[(((0,), (1,), (2,)),), (((3,), (4,), (5,)),)]
|
|
1019
|
+
|
|
1020
|
+
Each dimension is assumed to be uniform, either all arrays or all scalars.
|
|
1021
|
+
Flattening stops when the first value in a dimension is a scalar.
|
|
1022
|
+
Scalars are bytes, strings, and non-iterables.
|
|
1023
|
+
The reshape iterator stops when the requested shape is complete
|
|
1024
|
+
or when the input is exhausted, whichever comes first.
|
|
1025
|
+
|
|
1026
|
+
"""
|
|
1027
|
+
if isinstance(shape, int):
|
|
1028
|
+
return batched(chain.from_iterable(matrix), shape)
|
|
1029
|
+
first_dim, *dims = shape
|
|
1030
|
+
scalar_stream = _flatten_tensor(matrix)
|
|
1031
|
+
reshaped = reduce(batched, reversed(dims), scalar_stream)
|
|
1032
|
+
return islice(reshaped, first_dim)
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
def matmul(m1, m2):
|
|
1036
|
+
"""Multiply two matrices.
|
|
1037
|
+
|
|
1038
|
+
>>> list(matmul([(7, 5), (3, 5)], [(2, 5), (7, 9)]))
|
|
1039
|
+
[(49, 80), (41, 60)]
|
|
1040
|
+
|
|
1041
|
+
The caller should ensure that the dimensions of the input matrices are
|
|
1042
|
+
compatible with each other.
|
|
1043
|
+
|
|
1044
|
+
Supports all numeric types: int, float, complex, Decimal, Fraction.
|
|
1045
|
+
"""
|
|
1046
|
+
n = len(m2[0])
|
|
1047
|
+
return batched(starmap(_sumprod, product(m1, transpose(m2))), n)
|
|
1048
|
+
|
|
1049
|
+
|
|
1050
|
+
def _factor_pollard(n):
|
|
1051
|
+
# Return a factor of n using Pollard's rho algorithm.
|
|
1052
|
+
# Efficient when n is odd and composite.
|
|
1053
|
+
for b in range(1, n):
|
|
1054
|
+
x = y = 2
|
|
1055
|
+
d = 1
|
|
1056
|
+
while d == 1:
|
|
1057
|
+
x = (x * x + b) % n
|
|
1058
|
+
y = (y * y + b) % n
|
|
1059
|
+
y = (y * y + b) % n
|
|
1060
|
+
d = gcd(x - y, n)
|
|
1061
|
+
if d != n:
|
|
1062
|
+
return d
|
|
1063
|
+
raise ValueError('prime or under 5') # pragma: no cover
|
|
1064
|
+
|
|
1065
|
+
|
|
1066
|
+
_primes_below_211 = tuple(sieve(211))
|
|
1067
|
+
|
|
1068
|
+
|
|
1069
|
+
def factor(n):
|
|
1070
|
+
"""Yield the prime factors of n.
|
|
1071
|
+
|
|
1072
|
+
>>> list(factor(360))
|
|
1073
|
+
[2, 2, 2, 3, 3, 5]
|
|
1074
|
+
|
|
1075
|
+
Finds small factors with trial division. Larger factors are
|
|
1076
|
+
either verified as prime with ``is_prime`` or split into
|
|
1077
|
+
smaller factors with Pollard's rho algorithm.
|
|
1078
|
+
"""
|
|
1079
|
+
|
|
1080
|
+
# Corner case reduction
|
|
1081
|
+
if n < 2:
|
|
1082
|
+
return
|
|
1083
|
+
|
|
1084
|
+
# Trial division reduction
|
|
1085
|
+
for prime in _primes_below_211:
|
|
1086
|
+
while not n % prime:
|
|
1087
|
+
yield prime
|
|
1088
|
+
n //= prime
|
|
1089
|
+
|
|
1090
|
+
# Pollard's rho reduction
|
|
1091
|
+
primes = []
|
|
1092
|
+
todo = [n] if n > 1 else []
|
|
1093
|
+
for n in todo:
|
|
1094
|
+
if n < 211**2 or is_prime(n):
|
|
1095
|
+
primes.append(n)
|
|
1096
|
+
else:
|
|
1097
|
+
fact = _factor_pollard(n)
|
|
1098
|
+
todo += (fact, n // fact)
|
|
1099
|
+
yield from sorted(primes)
|
|
1100
|
+
|
|
1101
|
+
|
|
1102
|
+
def polynomial_eval(coefficients, x):
|
|
1103
|
+
"""Evaluate a polynomial at a specific value.
|
|
1104
|
+
|
|
1105
|
+
Computes with better numeric stability than Horner's method.
|
|
1106
|
+
|
|
1107
|
+
Evaluate ``x^3 - 4 * x^2 - 17 * x + 60`` at ``x = 2.5``:
|
|
1108
|
+
|
|
1109
|
+
>>> coefficients = [1, -4, -17, 60]
|
|
1110
|
+
>>> x = 2.5
|
|
1111
|
+
>>> polynomial_eval(coefficients, x)
|
|
1112
|
+
8.125
|
|
1113
|
+
|
|
1114
|
+
Note that polynomial coefficients are specified in descending power order.
|
|
1115
|
+
|
|
1116
|
+
Supports all numeric types: int, float, complex, Decimal, Fraction.
|
|
1117
|
+
"""
|
|
1118
|
+
n = len(coefficients)
|
|
1119
|
+
if n == 0:
|
|
1120
|
+
return type(x)(0)
|
|
1121
|
+
powers = map(pow, repeat(x), reversed(range(n)))
|
|
1122
|
+
return _sumprod(coefficients, powers)
|
|
1123
|
+
|
|
1124
|
+
|
|
1125
|
+
def sum_of_squares(iterable):
|
|
1126
|
+
"""Return the sum of the squares of the input values.
|
|
1127
|
+
|
|
1128
|
+
>>> sum_of_squares([10, 20, 30])
|
|
1129
|
+
1400
|
|
1130
|
+
|
|
1131
|
+
Supports all numeric types: int, float, complex, Decimal, Fraction.
|
|
1132
|
+
"""
|
|
1133
|
+
return _sumprod(*tee(iterable))
|
|
1134
|
+
|
|
1135
|
+
|
|
1136
|
+
def polynomial_derivative(coefficients):
|
|
1137
|
+
"""Compute the first derivative of a polynomial.
|
|
1138
|
+
|
|
1139
|
+
Evaluate the derivative of ``x³ - 4 x² - 17 x + 60``:
|
|
1140
|
+
|
|
1141
|
+
>>> coefficients = [1, -4, -17, 60]
|
|
1142
|
+
>>> derivative_coefficients = polynomial_derivative(coefficients)
|
|
1143
|
+
>>> derivative_coefficients
|
|
1144
|
+
[3, -8, -17]
|
|
1145
|
+
|
|
1146
|
+
Note that polynomial coefficients are specified in descending power order.
|
|
1147
|
+
|
|
1148
|
+
Supports all numeric types: int, float, complex, Decimal, Fraction.
|
|
1149
|
+
"""
|
|
1150
|
+
n = len(coefficients)
|
|
1151
|
+
powers = reversed(range(1, n))
|
|
1152
|
+
return list(map(mul, coefficients, powers))
|
|
1153
|
+
|
|
1154
|
+
|
|
1155
|
+
def totient(n):
|
|
1156
|
+
"""Return the count of natural numbers up to *n* that are coprime with *n*.
|
|
1157
|
+
|
|
1158
|
+
Euler's totient function φ(n) gives the number of totatives.
|
|
1159
|
+
Totative are integers k in the range 1 ≤ k ≤ n such that gcd(n, k) = 1.
|
|
1160
|
+
|
|
1161
|
+
>>> n = 9
|
|
1162
|
+
>>> totient(n)
|
|
1163
|
+
6
|
|
1164
|
+
|
|
1165
|
+
>>> totatives = [x for x in range(1, n) if gcd(n, x) == 1]
|
|
1166
|
+
>>> totatives
|
|
1167
|
+
[1, 2, 4, 5, 7, 8]
|
|
1168
|
+
>>> len(totatives)
|
|
1169
|
+
6
|
|
1170
|
+
|
|
1171
|
+
Reference: https://en.wikipedia.org/wiki/Euler%27s_totient_function
|
|
1172
|
+
|
|
1173
|
+
"""
|
|
1174
|
+
for prime in set(factor(n)):
|
|
1175
|
+
n -= n // prime
|
|
1176
|
+
return n
|
|
1177
|
+
|
|
1178
|
+
|
|
1179
|
+
# Miller–Rabin primality test: https://oeis.org/A014233
|
|
1180
|
+
_perfect_tests = [
|
|
1181
|
+
(2047, (2,)),
|
|
1182
|
+
(9080191, (31, 73)),
|
|
1183
|
+
(4759123141, (2, 7, 61)),
|
|
1184
|
+
(1122004669633, (2, 13, 23, 1662803)),
|
|
1185
|
+
(2152302898747, (2, 3, 5, 7, 11)),
|
|
1186
|
+
(3474749660383, (2, 3, 5, 7, 11, 13)),
|
|
1187
|
+
(18446744073709551616, (2, 325, 9375, 28178, 450775, 9780504, 1795265022)),
|
|
1188
|
+
(
|
|
1189
|
+
3317044064679887385961981,
|
|
1190
|
+
(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41),
|
|
1191
|
+
),
|
|
1192
|
+
]
|
|
1193
|
+
|
|
1194
|
+
|
|
1195
|
+
@lru_cache
|
|
1196
|
+
def _shift_to_odd(n):
|
|
1197
|
+
'Return s, d such that 2**s * d == n'
|
|
1198
|
+
s = ((n - 1) ^ n).bit_length() - 1
|
|
1199
|
+
d = n >> s
|
|
1200
|
+
assert (1 << s) * d == n and d & 1 and s >= 0
|
|
1201
|
+
return s, d
|
|
1202
|
+
|
|
1203
|
+
|
|
1204
|
+
def _strong_probable_prime(n, base):
|
|
1205
|
+
assert (n > 2) and (n & 1) and (2 <= base < n)
|
|
1206
|
+
|
|
1207
|
+
s, d = _shift_to_odd(n - 1)
|
|
1208
|
+
|
|
1209
|
+
x = pow(base, d, n)
|
|
1210
|
+
if x == 1 or x == n - 1:
|
|
1211
|
+
return True
|
|
1212
|
+
|
|
1213
|
+
for _ in range(s - 1):
|
|
1214
|
+
x = x * x % n
|
|
1215
|
+
if x == n - 1:
|
|
1216
|
+
return True
|
|
1217
|
+
|
|
1218
|
+
return False
|
|
1219
|
+
|
|
1220
|
+
|
|
1221
|
+
# Separate instance of Random() that doesn't share state
|
|
1222
|
+
# with the default user instance of Random().
|
|
1223
|
+
_private_randrange = random.Random().randrange
|
|
1224
|
+
|
|
1225
|
+
|
|
1226
|
+
def is_prime(n):
|
|
1227
|
+
"""Return ``True`` if *n* is prime and ``False`` otherwise.
|
|
1228
|
+
|
|
1229
|
+
Basic examples:
|
|
1230
|
+
|
|
1231
|
+
>>> is_prime(37)
|
|
1232
|
+
True
|
|
1233
|
+
>>> is_prime(3 * 13)
|
|
1234
|
+
False
|
|
1235
|
+
>>> is_prime(18_446_744_073_709_551_557)
|
|
1236
|
+
True
|
|
1237
|
+
|
|
1238
|
+
Find the next prime over one billion:
|
|
1239
|
+
|
|
1240
|
+
>>> next(filter(is_prime, count(10**9)))
|
|
1241
|
+
1000000007
|
|
1242
|
+
|
|
1243
|
+
Generate random primes up to 200 bits and up to 60 decimal digits:
|
|
1244
|
+
|
|
1245
|
+
>>> from random import seed, randrange, getrandbits
|
|
1246
|
+
>>> seed(18675309)
|
|
1247
|
+
|
|
1248
|
+
>>> next(filter(is_prime, map(getrandbits, repeat(200))))
|
|
1249
|
+
893303929355758292373272075469392561129886005037663238028407
|
|
1250
|
+
|
|
1251
|
+
>>> next(filter(is_prime, map(randrange, repeat(10**60))))
|
|
1252
|
+
269638077304026462407872868003560484232362454342414618963649
|
|
1253
|
+
|
|
1254
|
+
This function is exact for values of *n* below 10**24. For larger inputs,
|
|
1255
|
+
the probabilistic Miller-Rabin primality test has a less than 1 in 2**128
|
|
1256
|
+
chance of a false positive.
|
|
1257
|
+
"""
|
|
1258
|
+
|
|
1259
|
+
if n < 17:
|
|
1260
|
+
return n in {2, 3, 5, 7, 11, 13}
|
|
1261
|
+
|
|
1262
|
+
if not (n & 1 and n % 3 and n % 5 and n % 7 and n % 11 and n % 13):
|
|
1263
|
+
return False
|
|
1264
|
+
|
|
1265
|
+
for limit, bases in _perfect_tests:
|
|
1266
|
+
if n < limit:
|
|
1267
|
+
break
|
|
1268
|
+
else:
|
|
1269
|
+
bases = (_private_randrange(2, n - 1) for i in range(64))
|
|
1270
|
+
|
|
1271
|
+
return all(_strong_probable_prime(n, base) for base in bases)
|
|
1272
|
+
|
|
1273
|
+
|
|
1274
|
+
def loops(n):
|
|
1275
|
+
"""Returns an iterable with *n* elements for efficient looping.
|
|
1276
|
+
Like ``range(n)`` but doesn't create integers.
|
|
1277
|
+
|
|
1278
|
+
>>> i = 0
|
|
1279
|
+
>>> for _ in loops(5):
|
|
1280
|
+
... i += 1
|
|
1281
|
+
>>> i
|
|
1282
|
+
5
|
|
1283
|
+
|
|
1284
|
+
"""
|
|
1285
|
+
return repeat(None, n)
|
|
1286
|
+
|
|
1287
|
+
|
|
1288
|
+
def multinomial(*counts):
|
|
1289
|
+
"""Number of distinct arrangements of a multiset.
|
|
1290
|
+
|
|
1291
|
+
The expression ``multinomial(3, 4, 2)`` has several equivalent
|
|
1292
|
+
interpretations:
|
|
1293
|
+
|
|
1294
|
+
* In the expansion of ``(a + b + c)⁹``, the coefficient of the
|
|
1295
|
+
``a³b⁴c²`` term is 1260.
|
|
1296
|
+
|
|
1297
|
+
* There are 1260 distinct ways to arrange 9 balls consisting of 3 reds, 4
|
|
1298
|
+
greens, and 2 blues.
|
|
1299
|
+
|
|
1300
|
+
* There are 1260 unique ways to place 9 distinct objects into three bins
|
|
1301
|
+
with sizes 3, 4, and 2.
|
|
1302
|
+
|
|
1303
|
+
The :func:`multinomial` function computes the length of
|
|
1304
|
+
:func:`distinct_permutations`. For example, there are 83,160 distinct
|
|
1305
|
+
anagrams of the word "abracadabra":
|
|
1306
|
+
|
|
1307
|
+
>>> from more_itertools import distinct_permutations, ilen
|
|
1308
|
+
>>> ilen(distinct_permutations('abracadabra'))
|
|
1309
|
+
83160
|
|
1310
|
+
|
|
1311
|
+
This can be computed directly from the letter counts, 5a 2b 2r 1c 1d:
|
|
1312
|
+
|
|
1313
|
+
>>> from collections import Counter
|
|
1314
|
+
>>> list(Counter('abracadabra').values())
|
|
1315
|
+
[5, 2, 2, 1, 1]
|
|
1316
|
+
>>> multinomial(5, 2, 2, 1, 1)
|
|
1317
|
+
83160
|
|
1318
|
+
|
|
1319
|
+
A binomial coefficient is a special case of multinomial where there are
|
|
1320
|
+
only two categories. For example, the number of ways to arrange 12 balls
|
|
1321
|
+
with 5 reds and 7 blues is ``multinomial(5, 7)`` or ``math.comb(12, 5)``.
|
|
1322
|
+
|
|
1323
|
+
Likewise, factorial is a special case of multinomial where
|
|
1324
|
+
the multiplicities are all just 1 so that
|
|
1325
|
+
``multinomial(1, 1, 1, 1, 1, 1, 1) == math.factorial(7)``.
|
|
1326
|
+
|
|
1327
|
+
Reference: https://en.wikipedia.org/wiki/Multinomial_theorem
|
|
1328
|
+
|
|
1329
|
+
"""
|
|
1330
|
+
return prod(map(comb, accumulate(counts), counts))
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
def _running_median_minheap_and_maxheap(iterator): # pragma: no cover
|
|
1334
|
+
"Non-windowed running_median() for Python 3.14+"
|
|
1335
|
+
|
|
1336
|
+
read = iterator.__next__
|
|
1337
|
+
lo = [] # max-heap
|
|
1338
|
+
hi = [] # min-heap (same size as or one smaller than lo)
|
|
1339
|
+
|
|
1340
|
+
with suppress(StopIteration):
|
|
1341
|
+
while True:
|
|
1342
|
+
heappush_max(lo, heappushpop(hi, read()))
|
|
1343
|
+
yield lo[0]
|
|
1344
|
+
|
|
1345
|
+
heappush(hi, heappushpop_max(lo, read()))
|
|
1346
|
+
yield (lo[0] + hi[0]) / 2
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
def _running_median_minheap_only(iterator): # pragma: no cover
|
|
1350
|
+
"Backport of non-windowed running_median() for Python 3.13 and prior."
|
|
1351
|
+
|
|
1352
|
+
read = iterator.__next__
|
|
1353
|
+
lo = [] # max-heap (actually a minheap with negated values)
|
|
1354
|
+
hi = [] # min-heap (same size as or one smaller than lo)
|
|
1355
|
+
|
|
1356
|
+
with suppress(StopIteration):
|
|
1357
|
+
while True:
|
|
1358
|
+
heappush(lo, -heappushpop(hi, read()))
|
|
1359
|
+
yield -lo[0]
|
|
1360
|
+
|
|
1361
|
+
heappush(hi, -heappushpop(lo, -read()))
|
|
1362
|
+
yield (hi[0] - lo[0]) / 2
|
|
1363
|
+
|
|
1364
|
+
|
|
1365
|
+
def _running_median_windowed(iterator, maxlen):
|
|
1366
|
+
"Yield median of values in a sliding window."
|
|
1367
|
+
|
|
1368
|
+
window = deque()
|
|
1369
|
+
ordered = []
|
|
1370
|
+
|
|
1371
|
+
for x in iterator:
|
|
1372
|
+
window.append(x)
|
|
1373
|
+
insort(ordered, x)
|
|
1374
|
+
|
|
1375
|
+
if len(ordered) > maxlen:
|
|
1376
|
+
i = bisect_left(ordered, window.popleft())
|
|
1377
|
+
del ordered[i]
|
|
1378
|
+
|
|
1379
|
+
n = len(ordered)
|
|
1380
|
+
m = n // 2
|
|
1381
|
+
yield ordered[m] if n & 1 else (ordered[m - 1] + ordered[m]) / 2
|
|
1382
|
+
|
|
1383
|
+
|
|
1384
|
+
def running_median(iterable, *, maxlen=None):
|
|
1385
|
+
"""Cumulative median of values seen so far or values in a sliding window.
|
|
1386
|
+
|
|
1387
|
+
Set *maxlen* to a positive integer to specify the maximum size
|
|
1388
|
+
of the sliding window. The default of *None* is equivalent to
|
|
1389
|
+
an unbounded window.
|
|
1390
|
+
|
|
1391
|
+
For example:
|
|
1392
|
+
|
|
1393
|
+
>>> list(running_median([5.0, 9.0, 4.0, 12.0, 8.0, 9.0]))
|
|
1394
|
+
[5.0, 7.0, 5.0, 7.0, 8.0, 8.5]
|
|
1395
|
+
>>> list(running_median([5.0, 9.0, 4.0, 12.0, 8.0, 9.0], maxlen=3))
|
|
1396
|
+
[5.0, 7.0, 5.0, 9.0, 8.0, 9.0]
|
|
1397
|
+
|
|
1398
|
+
Supports numeric types such as int, float, Decimal, and Fraction,
|
|
1399
|
+
but not complex numbers which are unorderable.
|
|
1400
|
+
|
|
1401
|
+
On version Python 3.13 and prior, max-heaps are simulated with
|
|
1402
|
+
negative values. The negation causes Decimal inputs to apply context
|
|
1403
|
+
rounding, making the results slightly different than that obtained
|
|
1404
|
+
by statistics.median().
|
|
1405
|
+
"""
|
|
1406
|
+
|
|
1407
|
+
iterator = iter(iterable)
|
|
1408
|
+
|
|
1409
|
+
if maxlen is not None:
|
|
1410
|
+
maxlen = _index(maxlen)
|
|
1411
|
+
if maxlen <= 0:
|
|
1412
|
+
raise ValueError('Window size should be positive')
|
|
1413
|
+
return _running_median_windowed(iterator, maxlen)
|
|
1414
|
+
|
|
1415
|
+
if not _max_heap_available:
|
|
1416
|
+
return _running_median_minheap_only(iterator) # pragma: no cover
|
|
1417
|
+
|
|
1418
|
+
return _running_median_minheap_and_maxheap(iterator) # pragma: no cover
|
|
1419
|
+
|
|
1420
|
+
|
|
1421
|
+
def _windowed_running_mean(iterator, n):
|
|
1422
|
+
window = deque()
|
|
1423
|
+
running_sum = 0
|
|
1424
|
+
for value in iterator:
|
|
1425
|
+
window.append(value)
|
|
1426
|
+
running_sum += value
|
|
1427
|
+
if len(window) > n:
|
|
1428
|
+
running_sum -= window.popleft()
|
|
1429
|
+
yield running_sum / len(window)
|
|
1430
|
+
|
|
1431
|
+
|
|
1432
|
+
def running_mean(iterable, *, maxlen=None):
|
|
1433
|
+
"""Cumulative mean of values seen so far or values in a sliding window.
|
|
1434
|
+
|
|
1435
|
+
Set *maxlen* to a positive integer to specify the maximum size
|
|
1436
|
+
of the sliding window. The default of *None* is equivalent to
|
|
1437
|
+
an unbounded window.
|
|
1438
|
+
|
|
1439
|
+
For example:
|
|
1440
|
+
|
|
1441
|
+
>>> list(running_mean([40, 30, 50, 46, 39, 44]))
|
|
1442
|
+
[40.0, 35.0, 40.0, 41.5, 41.0, 41.5]
|
|
1443
|
+
|
|
1444
|
+
>>> list(running_mean([40, 30, 50, 46, 39, 44], maxlen=3))
|
|
1445
|
+
[40.0, 35.0, 40.0, 42.0, 45.0, 43.0]
|
|
1446
|
+
|
|
1447
|
+
Supports numeric types such as int, float, complex, Decimal, and Fraction.
|
|
1448
|
+
|
|
1449
|
+
No extra effort is made to reduce round-off errors for float inputs.
|
|
1450
|
+
So the results may be slightly different from `statistics.mean`.
|
|
1451
|
+
|
|
1452
|
+
"""
|
|
1453
|
+
|
|
1454
|
+
iterator = iter(iterable)
|
|
1455
|
+
|
|
1456
|
+
if maxlen is None:
|
|
1457
|
+
return map(truediv, accumulate(iterator), count(1))
|
|
1458
|
+
|
|
1459
|
+
if maxlen <= 0:
|
|
1460
|
+
raise ValueError('Window size should be positive')
|
|
1461
|
+
|
|
1462
|
+
return _windowed_running_mean(iterator, maxlen)
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
def _windowed_running_min(iterator, maxlen):
|
|
1466
|
+
sis = deque() # Strictly increasing subsequence
|
|
1467
|
+
for index, value in enumerate(iterator):
|
|
1468
|
+
if sis and sis[0][0] == index - maxlen:
|
|
1469
|
+
sis.popleft()
|
|
1470
|
+
while sis and not sis[-1][1] < value: # Remove non-increasing values
|
|
1471
|
+
sis.pop()
|
|
1472
|
+
sis.append((index, value)) # Most recent value at position -1
|
|
1473
|
+
yield sis[0][1] # Window minimum at position 0
|
|
1474
|
+
|
|
1475
|
+
|
|
1476
|
+
def running_min(iterable, *, maxlen=None):
|
|
1477
|
+
"""Smallest of values seen so far or values in a sliding window.
|
|
1478
|
+
|
|
1479
|
+
Set *maxlen* to a positive integer to specify the maximum size
|
|
1480
|
+
of the sliding window. The default of *None* is equivalent to
|
|
1481
|
+
an unbounded window.
|
|
1482
|
+
|
|
1483
|
+
For example:
|
|
1484
|
+
|
|
1485
|
+
>>> list(running_min([4, 3, 7, 0, 8, 1, 6, 2, 9, 5]))
|
|
1486
|
+
[4, 3, 3, 0, 0, 0, 0, 0, 0, 0]
|
|
1487
|
+
|
|
1488
|
+
>>> list(running_min([4, 3, 7, 0, 8, 1, 6, 2, 9, 5], maxlen=3))
|
|
1489
|
+
[4, 3, 3, 0, 0, 0, 1, 1, 2, 2]
|
|
1490
|
+
|
|
1491
|
+
Supports numeric types such as int, float, Decimal, and Fraction,
|
|
1492
|
+
but not complex numbers which are unorderable.
|
|
1493
|
+
"""
|
|
1494
|
+
|
|
1495
|
+
iterator = iter(iterable)
|
|
1496
|
+
|
|
1497
|
+
if maxlen is None:
|
|
1498
|
+
return accumulate(iterator, func=min)
|
|
1499
|
+
|
|
1500
|
+
if maxlen <= 0:
|
|
1501
|
+
raise ValueError('Window size should be positive')
|
|
1502
|
+
|
|
1503
|
+
return _windowed_running_min(iterator, maxlen)
|
|
1504
|
+
|
|
1505
|
+
|
|
1506
|
+
def _windowed_running_max(iterator, maxlen):
|
|
1507
|
+
sds = deque() # Strictly decreasing subsequence
|
|
1508
|
+
for index, value in enumerate(iterator):
|
|
1509
|
+
if sds and sds[0][0] == index - maxlen:
|
|
1510
|
+
sds.popleft()
|
|
1511
|
+
while sds and not sds[-1][1] > value: # Remove non-decreasing values
|
|
1512
|
+
sds.pop()
|
|
1513
|
+
sds.append((index, value)) # Most recent value at position -1
|
|
1514
|
+
yield sds[0][1] # Window maximum at position 0
|
|
1515
|
+
|
|
1516
|
+
|
|
1517
|
+
def running_max(iterable, *, maxlen=None):
|
|
1518
|
+
"""Largest of values seen so far or values in a sliding window.
|
|
1519
|
+
|
|
1520
|
+
Set *maxlen* to a positive integer to specify the maximum size
|
|
1521
|
+
of the sliding window. The default of *None* is equivalent to
|
|
1522
|
+
an unbounded window.
|
|
1523
|
+
|
|
1524
|
+
For example:
|
|
1525
|
+
|
|
1526
|
+
>>> list(running_max([4, 3, 7, 0, 8, 1, 6, 2, 9, 5]))
|
|
1527
|
+
[4, 4, 7, 7, 8, 8, 8, 8, 9, 9]
|
|
1528
|
+
|
|
1529
|
+
>>> list(running_max([4, 3, 7, 0, 8, 1, 6, 2, 9, 5], maxlen=3))
|
|
1530
|
+
[4, 4, 7, 7, 8, 8, 8, 6, 9, 9]
|
|
1531
|
+
|
|
1532
|
+
Supports numeric types such as int, float, Decimal, and Fraction,
|
|
1533
|
+
but not complex numbers which are unorderable.
|
|
1534
|
+
"""
|
|
1535
|
+
|
|
1536
|
+
iterator = iter(iterable)
|
|
1537
|
+
|
|
1538
|
+
if maxlen is None:
|
|
1539
|
+
return accumulate(iterator, func=max)
|
|
1540
|
+
|
|
1541
|
+
if maxlen <= 0:
|
|
1542
|
+
raise ValueError('Window size should be positive')
|
|
1543
|
+
|
|
1544
|
+
return _windowed_running_max(iterator, maxlen)
|
|
1545
|
+
|
|
1546
|
+
|
|
1547
|
+
@dataclass(frozen=True, slots=True)
|
|
1548
|
+
class Stats:
|
|
1549
|
+
size: int
|
|
1550
|
+
minimum: float
|
|
1551
|
+
median: float
|
|
1552
|
+
maximum: float
|
|
1553
|
+
mean: float
|
|
1554
|
+
|
|
1555
|
+
|
|
1556
|
+
def running_statistics(iterable, *, maxlen=None):
|
|
1557
|
+
"""Statistics for values seen so far or values in a sliding window.
|
|
1558
|
+
|
|
1559
|
+
Set *maxlen* to a positive integer to specify the maximum size
|
|
1560
|
+
of the sliding window. The default of *None* is equivalent to
|
|
1561
|
+
an unbounded window.
|
|
1562
|
+
|
|
1563
|
+
Yields instances of a ``Stats`` dataclass with fields for the dataset *size*,
|
|
1564
|
+
*minimum* value, *median* value, *maximum* value, and the arithmetic *mean*.
|
|
1565
|
+
|
|
1566
|
+
Supports numeric types such as int, float, Decimal, and Fraction,
|
|
1567
|
+
but not complex numbers which are unorderable.
|
|
1568
|
+
"""
|
|
1569
|
+
|
|
1570
|
+
# fmt: off
|
|
1571
|
+
t0, t1, t2, t3 = tee(iterable, 4)
|
|
1572
|
+
return map(
|
|
1573
|
+
Stats,
|
|
1574
|
+
count(1) if maxlen is None else chain(range(1, maxlen), repeat(maxlen)),
|
|
1575
|
+
running_min(t0, maxlen=maxlen),
|
|
1576
|
+
running_median(t1, maxlen=maxlen),
|
|
1577
|
+
running_max(t2, maxlen=maxlen),
|
|
1578
|
+
running_mean(t3, maxlen=maxlen),
|
|
1579
|
+
)
|
|
1580
|
+
# fmt: on
|
|
1581
|
+
|
|
1582
|
+
|
|
1583
|
+
def random_derangement(iterable):
|
|
1584
|
+
"""Return a random derangement of elements in the iterable.
|
|
1585
|
+
|
|
1586
|
+
Equivalent to but much faster than ``choice(list(derangements(iterable)))``.
|
|
1587
|
+
|
|
1588
|
+
"""
|
|
1589
|
+
seq = tuple(iterable)
|
|
1590
|
+
if len(seq) < 2:
|
|
1591
|
+
if len(seq) == 0:
|
|
1592
|
+
return ()
|
|
1593
|
+
raise IndexError('No derangments to choose from')
|
|
1594
|
+
perm = list(range(len(seq)))
|
|
1595
|
+
start = tuple(perm)
|
|
1596
|
+
while True:
|
|
1597
|
+
shuffle(perm)
|
|
1598
|
+
if not any(map(is_, start, perm)):
|
|
1599
|
+
return itemgetter(*perm)(seq)
|