├── .gitignore ├── README.md ├── datasets ├── AIME_Dataset_1983_2024.csv └── gs8mk-test.jsonl ├── pdm.lock ├── pyproject.toml ├── results └── AIME_2024_llama_3_8b.csv └── src ├── dataset_utils.py └── mcts_llm ├── __init__.py ├── llm.py ├── mctsr.py └── prompt_configs.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # pdm 105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 106 | #pdm.lock 107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 108 | # in version control. 109 | # https://pdm-project.org/#use-with-ide 110 | .pdm.toml 111 | .pdm-python 112 | .pdm-build/ 113 | 114 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 115 | __pypackages__/ 116 | 117 | # Celery stuff 118 | celerybeat-schedule 119 | celerybeat.pid 120 | 121 | # SageMath parsed files 122 | *.sage.py 123 | 124 | # Environments 125 | .env 126 | .venv 127 | env/ 128 | venv/ 129 | ENV/ 130 | env.bak/ 131 | venv.bak/ 132 | 133 | # Spyder project settings 134 | .spyderproject 135 | .spyproject 136 | 137 | # Rope project settings 138 | .ropeproject 139 | 140 | # mkdocs documentation 141 | /site 142 | 143 | # mypy 144 | .mypy_cache/ 145 | .dmypy.json 146 | dmypy.json 147 | 148 | # Pyre type checker 149 | .pyre/ 150 | 151 | # pytype static type analyzer 152 | .pytype/ 153 | 154 | # Cython debug symbols 155 | cython_debug/ 156 | 157 | # PyCharm 158 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 159 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 160 | # and can be added to the global gitignore or merged into this file. For a more nuclear 161 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 162 | #.idea/ 163 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mcts-llm 2 | 3 | ## MCTSr 4 | 5 | Based on [Accessing GPT-4 level Mathematical Olympiad Solutions via Monte Carlo Tree Self-refine with LLaMa-3 8B](https://arxiv.org/abs/2406.07394) by Zhang, et al. 6 | 7 | At a high level, MCTSr iteratively generates solutions to a specified (math) problem. 8 | 9 | In a MCTSr tree, nodes correspond to attempted answers, and edges correspond to attempts to improve the answer. 10 | 11 | 12 | ### Initialize 13 | Generate an solution to the problem. This paper uses a "dummy" solution (e.g. `"I don't know"`). 14 | 15 | ### Select a node to expand 16 | We gather a set of candidate nodes which haven't been fully expanded. 17 | 18 | A node is fully expanded if either: 19 | 1. it has `max_children` 20 | 2. any of its children have a Q value which is greater than its own 21 | 22 | Once we've gathered the candidates, we compute UCT scores for each candidate node. 23 | There are a few ways we can make our selection: 24 | 1. Greedily (choose the node with the highest UCT) 25 | 2. Importance sampling (sample from the set of candidates, weighted by their UCT score) 26 | 3. Pairwise importance sampling (sample the max from a pair of nodes from the set of candidates, weighted by the difference between the pair's UCT scores) 27 | 28 | The authors mention that they perform greedy selection in the paper. In their [repo](https://github.com/trotsky1997/MathBlackBox/blob/main/gen_mcts_dpo.py#L182), they also perform pairwise sampling and save the (question, answer1, answer2) tuples for use in DPO. 29 | 30 | ### Expand the node 31 | 32 | Expansion involves several steps: 33 | 1. Generate a critique of the current solution. 34 | 2. Refine the solution based on the critique. 35 | 3. Add a new child, corresponding to the refined solution. 36 | 4. Self-evaluate the `reward` of the new child. 37 | 5. Backpropagate the reward from the new child through its parents, through to the root. 38 | 39 | 40 | # Results 41 | I haven't run extensive evals on this. 42 | 43 | 44 | ## [AIME 2024](./results/AIME_2024_llama_3_8b.csv) 45 | - `max_rollouts=8` 46 | - `max_children=2` 47 | 48 | -------------------------------------------------------------------------------- /pdm.lock: -------------------------------------------------------------------------------- 1 | # This file is @generated by PDM. 2 | # It is not intended for manual editing. 3 | 4 | [metadata] 5 | groups = ["default"] 6 | strategy = ["cross_platform", "inherit_metadata"] 7 | lock_version = "4.4.1" 8 | content_hash = "sha256:f25cc939bb2905fccebf20648f869ce9d9c820019d498036c587f35aa3c349f1" 9 | 10 | [[package]] 11 | name = "aiohttp" 12 | version = "3.9.5" 13 | requires_python = ">=3.8" 14 | summary = "Async http client/server framework (asyncio)" 15 | groups = ["default"] 16 | dependencies = [ 17 | "aiosignal>=1.1.2", 18 | "attrs>=17.3.0", 19 | "frozenlist>=1.1.1", 20 | "multidict<7.0,>=4.5", 21 | "yarl<2.0,>=1.0", 22 | ] 23 | files = [ 24 | {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ae53e33ee7476dd3d1132f932eeb39bf6125083820049d06edcdca4381f342"}, 25 | {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c088c4d70d21f8ca5c0b8b5403fe84a7bc8e024161febdd4ef04575ef35d474d"}, 26 | {file = "aiohttp-3.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:639d0042b7670222f33b0028de6b4e2fad6451462ce7df2af8aee37dcac55424"}, 27 | {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f26383adb94da5e7fb388d441bf09c61e5e35f455a3217bfd790c6b6bc64b2ee"}, 28 | {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66331d00fb28dc90aa606d9a54304af76b335ae204d1836f65797d6fe27f1ca2"}, 29 | {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ff550491f5492ab5ed3533e76b8567f4b37bd2995e780a1f46bca2024223233"}, 30 | {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f22eb3a6c1080d862befa0a89c380b4dafce29dc6cd56083f630073d102eb595"}, 31 | {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a81b1143d42b66ffc40a441379387076243ef7b51019204fd3ec36b9f69e77d6"}, 32 | {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f64fd07515dad67f24b6ea4a66ae2876c01031de91c93075b8093f07c0a2d93d"}, 33 | {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:93e22add827447d2e26d67c9ac0161756007f152fdc5210277d00a85f6c92323"}, 34 | {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:55b39c8684a46e56ef8c8d24faf02de4a2b2ac60d26cee93bc595651ff545de9"}, 35 | {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4715a9b778f4293b9f8ae7a0a7cef9829f02ff8d6277a39d7f40565c737d3771"}, 36 | {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:afc52b8d969eff14e069a710057d15ab9ac17cd4b6753042c407dcea0e40bf75"}, 37 | {file = "aiohttp-3.9.5-cp311-cp311-win32.whl", hash = "sha256:b3df71da99c98534be076196791adca8819761f0bf6e08e07fd7da25127150d6"}, 38 | {file = "aiohttp-3.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:88e311d98cc0bf45b62fc46c66753a83445f5ab20038bcc1b8a1cc05666f428a"}, 39 | {file = "aiohttp-3.9.5.tar.gz", hash = "sha256:edea7d15772ceeb29db4aff55e482d4bcfb6ae160ce144f2682de02f6d693551"}, 40 | ] 41 | 42 | [[package]] 43 | name = "aiosignal" 44 | version = "1.3.1" 45 | requires_python = ">=3.7" 46 | summary = "aiosignal: a list of registered asynchronous callbacks" 47 | groups = ["default"] 48 | dependencies = [ 49 | "frozenlist>=1.1.0", 50 | ] 51 | files = [ 52 | {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, 53 | {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, 54 | ] 55 | 56 | [[package]] 57 | name = "annotated-types" 58 | version = "0.7.0" 59 | requires_python = ">=3.8" 60 | summary = "Reusable constraint types to use with typing.Annotated" 61 | groups = ["default"] 62 | files = [ 63 | {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, 64 | {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, 65 | ] 66 | 67 | [[package]] 68 | name = "anthropic" 69 | version = "0.28.1" 70 | requires_python = ">=3.7" 71 | summary = "The official Python library for the anthropic API" 72 | groups = ["default"] 73 | dependencies = [ 74 | "anyio<5,>=3.5.0", 75 | "distro<2,>=1.7.0", 76 | "httpx<1,>=0.23.0", 77 | "jiter<1,>=0.4.0", 78 | "pydantic<3,>=1.9.0", 79 | "sniffio", 80 | "tokenizers>=0.13.0", 81 | "typing-extensions<5,>=4.7", 82 | ] 83 | files = [ 84 | {file = "anthropic-0.28.1-py3-none-any.whl", hash = "sha256:c4773ae2b42951a6b747bed328b0d03fa412938c95c3a8b9dce70d69badb710b"}, 85 | {file = "anthropic-0.28.1.tar.gz", hash = "sha256:e3a6d595bde241141bdc685edc393903ec95c7fa378013a71186cfb8f32b1793"}, 86 | ] 87 | 88 | [[package]] 89 | name = "anyio" 90 | version = "4.4.0" 91 | requires_python = ">=3.8" 92 | summary = "High level compatibility layer for multiple asynchronous event loop implementations" 93 | groups = ["default"] 94 | dependencies = [ 95 | "idna>=2.8", 96 | "sniffio>=1.1", 97 | ] 98 | files = [ 99 | {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, 100 | {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, 101 | ] 102 | 103 | [[package]] 104 | name = "appnope" 105 | version = "0.1.4" 106 | requires_python = ">=3.6" 107 | summary = "Disable App Nap on macOS >= 10.9" 108 | groups = ["default"] 109 | marker = "platform_system == \"Darwin\"" 110 | files = [ 111 | {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, 112 | {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, 113 | ] 114 | 115 | [[package]] 116 | name = "argon2-cffi" 117 | version = "23.1.0" 118 | requires_python = ">=3.7" 119 | summary = "Argon2 for Python" 120 | groups = ["default"] 121 | dependencies = [ 122 | "argon2-cffi-bindings", 123 | ] 124 | files = [ 125 | {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, 126 | {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, 127 | ] 128 | 129 | [[package]] 130 | name = "argon2-cffi-bindings" 131 | version = "21.2.0" 132 | requires_python = ">=3.6" 133 | summary = "Low-level CFFI bindings for Argon2" 134 | groups = ["default"] 135 | dependencies = [ 136 | "cffi>=1.0.1", 137 | ] 138 | files = [ 139 | {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, 140 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, 141 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, 142 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, 143 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, 144 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, 145 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, 146 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, 147 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, 148 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, 149 | {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, 150 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, 151 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, 152 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, 153 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, 154 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, 155 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, 156 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, 157 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, 158 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, 159 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, 160 | ] 161 | 162 | [[package]] 163 | name = "arrow" 164 | version = "1.3.0" 165 | requires_python = ">=3.8" 166 | summary = "Better dates & times for Python" 167 | groups = ["default"] 168 | dependencies = [ 169 | "python-dateutil>=2.7.0", 170 | "types-python-dateutil>=2.8.10", 171 | ] 172 | files = [ 173 | {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, 174 | {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, 175 | ] 176 | 177 | [[package]] 178 | name = "asttokens" 179 | version = "2.4.1" 180 | summary = "Annotate AST trees with source code positions" 181 | groups = ["default"] 182 | dependencies = [ 183 | "six>=1.12.0", 184 | ] 185 | files = [ 186 | {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, 187 | {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, 188 | ] 189 | 190 | [[package]] 191 | name = "async-lru" 192 | version = "2.0.4" 193 | requires_python = ">=3.8" 194 | summary = "Simple LRU cache for asyncio" 195 | groups = ["default"] 196 | files = [ 197 | {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, 198 | {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, 199 | ] 200 | 201 | [[package]] 202 | name = "attrs" 203 | version = "23.2.0" 204 | requires_python = ">=3.7" 205 | summary = "Classes Without Boilerplate" 206 | groups = ["default"] 207 | files = [ 208 | {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, 209 | {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, 210 | ] 211 | 212 | [[package]] 213 | name = "babel" 214 | version = "2.15.0" 215 | requires_python = ">=3.8" 216 | summary = "Internationalization utilities" 217 | groups = ["default"] 218 | files = [ 219 | {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, 220 | {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, 221 | ] 222 | 223 | [[package]] 224 | name = "beautifulsoup4" 225 | version = "4.12.3" 226 | requires_python = ">=3.6.0" 227 | summary = "Screen-scraping library" 228 | groups = ["default"] 229 | dependencies = [ 230 | "soupsieve>1.2", 231 | ] 232 | files = [ 233 | {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, 234 | {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, 235 | ] 236 | 237 | [[package]] 238 | name = "bleach" 239 | version = "6.1.0" 240 | requires_python = ">=3.8" 241 | summary = "An easy safelist-based HTML-sanitizing tool." 242 | groups = ["default"] 243 | dependencies = [ 244 | "six>=1.9.0", 245 | "webencodings", 246 | ] 247 | files = [ 248 | {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, 249 | {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, 250 | ] 251 | 252 | [[package]] 253 | name = "certifi" 254 | version = "2024.6.2" 255 | requires_python = ">=3.6" 256 | summary = "Python package for providing Mozilla's CA Bundle." 257 | groups = ["default"] 258 | files = [ 259 | {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, 260 | {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, 261 | ] 262 | 263 | [[package]] 264 | name = "cffi" 265 | version = "1.16.0" 266 | requires_python = ">=3.8" 267 | summary = "Foreign Function Interface for Python calling C code." 268 | groups = ["default"] 269 | dependencies = [ 270 | "pycparser", 271 | ] 272 | files = [ 273 | {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, 274 | {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, 275 | {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, 276 | {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, 277 | {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, 278 | {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, 279 | {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, 280 | {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, 281 | {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, 282 | {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, 283 | {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, 284 | {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, 285 | ] 286 | 287 | [[package]] 288 | name = "charset-normalizer" 289 | version = "3.3.2" 290 | requires_python = ">=3.7.0" 291 | summary = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." 292 | groups = ["default"] 293 | files = [ 294 | {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, 295 | {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, 296 | {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, 297 | {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, 298 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, 299 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, 300 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, 301 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, 302 | {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, 303 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, 304 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, 305 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, 306 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, 307 | {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, 308 | {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, 309 | {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, 310 | {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, 311 | ] 312 | 313 | [[package]] 314 | name = "colorama" 315 | version = "0.4.6" 316 | requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" 317 | summary = "Cross-platform colored terminal text." 318 | groups = ["default"] 319 | marker = "platform_system == \"Windows\" or sys_platform == \"win32\"" 320 | files = [ 321 | {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, 322 | {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, 323 | ] 324 | 325 | [[package]] 326 | name = "comm" 327 | version = "0.2.2" 328 | requires_python = ">=3.8" 329 | summary = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." 330 | groups = ["default"] 331 | dependencies = [ 332 | "traitlets>=4", 333 | ] 334 | files = [ 335 | {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, 336 | {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, 337 | ] 338 | 339 | [[package]] 340 | name = "datasets" 341 | version = "2.20.0" 342 | requires_python = ">=3.8.0" 343 | summary = "HuggingFace community-driven open-source library of datasets" 344 | groups = ["default"] 345 | dependencies = [ 346 | "aiohttp", 347 | "dill<0.3.9,>=0.3.0", 348 | "filelock", 349 | "fsspec[http]<=2024.5.0,>=2023.1.0", 350 | "huggingface-hub>=0.21.2", 351 | "multiprocess", 352 | "numpy>=1.17", 353 | "packaging", 354 | "pandas", 355 | "pyarrow-hotfix", 356 | "pyarrow>=15.0.0", 357 | "pyyaml>=5.1", 358 | "requests>=2.32.2", 359 | "tqdm>=4.66.3", 360 | "xxhash", 361 | ] 362 | files = [ 363 | {file = "datasets-2.20.0-py3-none-any.whl", hash = "sha256:76ac02e3bdfff824492e20678f0b6b1b6d080515957fe834b00c2ba8d6b18e5e"}, 364 | {file = "datasets-2.20.0.tar.gz", hash = "sha256:3c4dbcd27e0f642b9d41d20ff2efa721a5e04b32b2ca4009e0fc9139e324553f"}, 365 | ] 366 | 367 | [[package]] 368 | name = "debugpy" 369 | version = "1.8.1" 370 | requires_python = ">=3.8" 371 | summary = "An implementation of the Debug Adapter Protocol for Python" 372 | groups = ["default"] 373 | files = [ 374 | {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"}, 375 | {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"}, 376 | {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"}, 377 | {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"}, 378 | {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"}, 379 | {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"}, 380 | ] 381 | 382 | [[package]] 383 | name = "decorator" 384 | version = "5.1.1" 385 | requires_python = ">=3.5" 386 | summary = "Decorators for Humans" 387 | groups = ["default"] 388 | files = [ 389 | {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, 390 | {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, 391 | ] 392 | 393 | [[package]] 394 | name = "defusedxml" 395 | version = "0.7.1" 396 | requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 397 | summary = "XML bomb protection for Python stdlib modules" 398 | groups = ["default"] 399 | files = [ 400 | {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, 401 | {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, 402 | ] 403 | 404 | [[package]] 405 | name = "dill" 406 | version = "0.3.8" 407 | requires_python = ">=3.8" 408 | summary = "serialize all of Python" 409 | groups = ["default"] 410 | files = [ 411 | {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, 412 | {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, 413 | ] 414 | 415 | [[package]] 416 | name = "distro" 417 | version = "1.9.0" 418 | requires_python = ">=3.6" 419 | summary = "Distro - an OS platform information API" 420 | groups = ["default"] 421 | files = [ 422 | {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"}, 423 | {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"}, 424 | ] 425 | 426 | [[package]] 427 | name = "executing" 428 | version = "2.0.1" 429 | requires_python = ">=3.5" 430 | summary = "Get the currently executing AST node of a frame, and other information" 431 | groups = ["default"] 432 | files = [ 433 | {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"}, 434 | {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"}, 435 | ] 436 | 437 | [[package]] 438 | name = "fastjsonschema" 439 | version = "2.20.0" 440 | summary = "Fastest Python implementation of JSON schema" 441 | groups = ["default"] 442 | files = [ 443 | {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, 444 | {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, 445 | ] 446 | 447 | [[package]] 448 | name = "filelock" 449 | version = "3.15.1" 450 | requires_python = ">=3.8" 451 | summary = "A platform independent file lock." 452 | groups = ["default"] 453 | files = [ 454 | {file = "filelock-3.15.1-py3-none-any.whl", hash = "sha256:71b3102950e91dfc1bb4209b64be4dc8854f40e5f534428d8684f953ac847fac"}, 455 | {file = "filelock-3.15.1.tar.gz", hash = "sha256:58a2549afdf9e02e10720eaa4d4470f56386d7a6f72edd7d0596337af8ed7ad8"}, 456 | ] 457 | 458 | [[package]] 459 | name = "fqdn" 460 | version = "1.5.1" 461 | requires_python = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" 462 | summary = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" 463 | groups = ["default"] 464 | files = [ 465 | {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, 466 | {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, 467 | ] 468 | 469 | [[package]] 470 | name = "frozenlist" 471 | version = "1.4.1" 472 | requires_python = ">=3.8" 473 | summary = "A list-like structure which implements collections.abc.MutableSequence" 474 | groups = ["default"] 475 | files = [ 476 | {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, 477 | {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, 478 | {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, 479 | {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, 480 | {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, 481 | {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, 482 | {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, 483 | {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, 484 | {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, 485 | {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, 486 | {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, 487 | {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, 488 | {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, 489 | {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, 490 | {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, 491 | {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, 492 | {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, 493 | ] 494 | 495 | [[package]] 496 | name = "fsspec" 497 | version = "2024.5.0" 498 | requires_python = ">=3.8" 499 | summary = "File-system specification" 500 | groups = ["default"] 501 | files = [ 502 | {file = "fsspec-2024.5.0-py3-none-any.whl", hash = "sha256:e0fdbc446d67e182f49a70b82cf7889028a63588fde6b222521f10937b2b670c"}, 503 | {file = "fsspec-2024.5.0.tar.gz", hash = "sha256:1d021b0b0f933e3b3029ed808eb400c08ba101ca2de4b3483fbc9ca23fcee94a"}, 504 | ] 505 | 506 | [[package]] 507 | name = "fsspec" 508 | version = "2024.5.0" 509 | extras = ["http"] 510 | requires_python = ">=3.8" 511 | summary = "File-system specification" 512 | groups = ["default"] 513 | dependencies = [ 514 | "aiohttp!=4.0.0a0,!=4.0.0a1", 515 | "fsspec==2024.5.0", 516 | ] 517 | files = [ 518 | {file = "fsspec-2024.5.0-py3-none-any.whl", hash = "sha256:e0fdbc446d67e182f49a70b82cf7889028a63588fde6b222521f10937b2b670c"}, 519 | {file = "fsspec-2024.5.0.tar.gz", hash = "sha256:1d021b0b0f933e3b3029ed808eb400c08ba101ca2de4b3483fbc9ca23fcee94a"}, 520 | ] 521 | 522 | [[package]] 523 | name = "h11" 524 | version = "0.14.0" 525 | requires_python = ">=3.7" 526 | summary = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" 527 | groups = ["default"] 528 | files = [ 529 | {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, 530 | {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, 531 | ] 532 | 533 | [[package]] 534 | name = "httpcore" 535 | version = "1.0.5" 536 | requires_python = ">=3.8" 537 | summary = "A minimal low-level HTTP client." 538 | groups = ["default"] 539 | dependencies = [ 540 | "certifi", 541 | "h11<0.15,>=0.13", 542 | ] 543 | files = [ 544 | {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, 545 | {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, 546 | ] 547 | 548 | [[package]] 549 | name = "httpx" 550 | version = "0.27.0" 551 | requires_python = ">=3.8" 552 | summary = "The next generation HTTP client." 553 | groups = ["default"] 554 | dependencies = [ 555 | "anyio", 556 | "certifi", 557 | "httpcore==1.*", 558 | "idna", 559 | "sniffio", 560 | ] 561 | files = [ 562 | {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, 563 | {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, 564 | ] 565 | 566 | [[package]] 567 | name = "huggingface-hub" 568 | version = "0.23.4" 569 | requires_python = ">=3.8.0" 570 | summary = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" 571 | groups = ["default"] 572 | dependencies = [ 573 | "filelock", 574 | "fsspec>=2023.5.0", 575 | "packaging>=20.9", 576 | "pyyaml>=5.1", 577 | "requests", 578 | "tqdm>=4.42.1", 579 | "typing-extensions>=3.7.4.3", 580 | ] 581 | files = [ 582 | {file = "huggingface_hub-0.23.4-py3-none-any.whl", hash = "sha256:3a0b957aa87150addf0cc7bd71b4d954b78e749850e1e7fb29ebbd2db64ca037"}, 583 | {file = "huggingface_hub-0.23.4.tar.gz", hash = "sha256:35d99016433900e44ae7efe1c209164a5a81dbbcd53a52f99c281dcd7ce22431"}, 584 | ] 585 | 586 | [[package]] 587 | name = "idna" 588 | version = "3.7" 589 | requires_python = ">=3.5" 590 | summary = "Internationalized Domain Names in Applications (IDNA)" 591 | groups = ["default"] 592 | files = [ 593 | {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, 594 | {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, 595 | ] 596 | 597 | [[package]] 598 | name = "ipykernel" 599 | version = "6.29.4" 600 | requires_python = ">=3.8" 601 | summary = "IPython Kernel for Jupyter" 602 | groups = ["default"] 603 | dependencies = [ 604 | "appnope; platform_system == \"Darwin\"", 605 | "comm>=0.1.1", 606 | "debugpy>=1.6.5", 607 | "ipython>=7.23.1", 608 | "jupyter-client>=6.1.12", 609 | "jupyter-core!=5.0.*,>=4.12", 610 | "matplotlib-inline>=0.1", 611 | "nest-asyncio", 612 | "packaging", 613 | "psutil", 614 | "pyzmq>=24", 615 | "tornado>=6.1", 616 | "traitlets>=5.4.0", 617 | ] 618 | files = [ 619 | {file = "ipykernel-6.29.4-py3-none-any.whl", hash = "sha256:1181e653d95c6808039c509ef8e67c4126b3b3af7781496c7cbfb5ed938a27da"}, 620 | {file = "ipykernel-6.29.4.tar.gz", hash = "sha256:3d44070060f9475ac2092b760123fadf105d2e2493c24848b6691a7c4f42af5c"}, 621 | ] 622 | 623 | [[package]] 624 | name = "ipython" 625 | version = "8.25.0" 626 | requires_python = ">=3.10" 627 | summary = "IPython: Productive Interactive Computing" 628 | groups = ["default"] 629 | dependencies = [ 630 | "colorama; sys_platform == \"win32\"", 631 | "decorator", 632 | "jedi>=0.16", 633 | "matplotlib-inline", 634 | "pexpect>4.3; sys_platform != \"win32\" and sys_platform != \"emscripten\"", 635 | "prompt-toolkit<3.1.0,>=3.0.41", 636 | "pygments>=2.4.0", 637 | "stack-data", 638 | "traitlets>=5.13.0", 639 | "typing-extensions>=4.6; python_version < \"3.12\"", 640 | ] 641 | files = [ 642 | {file = "ipython-8.25.0-py3-none-any.whl", hash = "sha256:53eee7ad44df903a06655871cbab66d156a051fd86f3ec6750470ac9604ac1ab"}, 643 | {file = "ipython-8.25.0.tar.gz", hash = "sha256:c6ed726a140b6e725b911528f80439c534fac915246af3efc39440a6b0f9d716"}, 644 | ] 645 | 646 | [[package]] 647 | name = "isoduration" 648 | version = "20.11.0" 649 | requires_python = ">=3.7" 650 | summary = "Operations with ISO 8601 durations" 651 | groups = ["default"] 652 | dependencies = [ 653 | "arrow>=0.15.0", 654 | ] 655 | files = [ 656 | {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, 657 | {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, 658 | ] 659 | 660 | [[package]] 661 | name = "jedi" 662 | version = "0.19.1" 663 | requires_python = ">=3.6" 664 | summary = "An autocompletion tool for Python that can be used for text editors." 665 | groups = ["default"] 666 | dependencies = [ 667 | "parso<0.9.0,>=0.8.3", 668 | ] 669 | files = [ 670 | {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, 671 | {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, 672 | ] 673 | 674 | [[package]] 675 | name = "jinja2" 676 | version = "3.1.4" 677 | requires_python = ">=3.7" 678 | summary = "A very fast and expressive template engine." 679 | groups = ["default"] 680 | dependencies = [ 681 | "MarkupSafe>=2.0", 682 | ] 683 | files = [ 684 | {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, 685 | {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, 686 | ] 687 | 688 | [[package]] 689 | name = "jiter" 690 | version = "0.4.2" 691 | requires_python = ">=3.8" 692 | summary = "Fast iterable JSON parser." 693 | groups = ["default"] 694 | files = [ 695 | {file = "jiter-0.4.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:24ad336ac47f274fa83f6fbedcabff9d3387c80f67c66b992688e6a8ba2c47e9"}, 696 | {file = "jiter-0.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fc392a220095730afe365ce1516f2f88bb085a2fd29ea191be9c6e3c71713d9a"}, 697 | {file = "jiter-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1fdc408de36c81460896de0176f2f7b9f3574dcd35693a0b2c00f4ca34c98e4"}, 698 | {file = "jiter-0.4.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c10ad76722ee6a8c820b0db06a793c08b7d679e5201b9563015bd1e06c959a09"}, 699 | {file = "jiter-0.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dbb46d1e9c82bba87f0cbda38413e49448a7df35b1e55917124bff9f38974a23"}, 700 | {file = "jiter-0.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:194e28ef4b5f3b61408cb2ee6b6dcbcdb0c9063d01b92b01345b7605692849f5"}, 701 | {file = "jiter-0.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f0a447533eccd62748a727e058efa10a8d7cf1de8ffe1a4d705ecb41dad9090"}, 702 | {file = "jiter-0.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5f7704d7260bbb88cca3453951af739589132b26e896a3144fa2dae2263716d7"}, 703 | {file = "jiter-0.4.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:01427458bc9550f2eda09d425755330e7d0eb09adce099577433bebf05d28d59"}, 704 | {file = "jiter-0.4.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:159b8416879c0053b17c352f70b67b749ef5b2924c6154318ecf71918aab0905"}, 705 | {file = "jiter-0.4.2-cp311-none-win32.whl", hash = "sha256:f2445234acfb79048ce1a0d5d0e181abb9afd9e4a29d8d9988fe26cc5773a81a"}, 706 | {file = "jiter-0.4.2-cp311-none-win_amd64.whl", hash = "sha256:e15a65f233b6b0e5ac10ddf3b97ceb18aa9ffba096259961641d78b4ee321bd5"}, 707 | {file = "jiter-0.4.2.tar.gz", hash = "sha256:29b9d44f23f0c05f46d482f4ebf03213ee290d77999525d0975a17f875bf1eea"}, 708 | ] 709 | 710 | [[package]] 711 | name = "json5" 712 | version = "0.9.25" 713 | requires_python = ">=3.8" 714 | summary = "A Python implementation of the JSON5 data format." 715 | groups = ["default"] 716 | files = [ 717 | {file = "json5-0.9.25-py3-none-any.whl", hash = "sha256:34ed7d834b1341a86987ed52f3f76cd8ee184394906b6e22a1e0deb9ab294e8f"}, 718 | {file = "json5-0.9.25.tar.gz", hash = "sha256:548e41b9be043f9426776f05df8635a00fe06104ea51ed24b67f908856e151ae"}, 719 | ] 720 | 721 | [[package]] 722 | name = "jsonpointer" 723 | version = "3.0.0" 724 | requires_python = ">=3.7" 725 | summary = "Identify specific nodes in a JSON document (RFC 6901) " 726 | groups = ["default"] 727 | files = [ 728 | {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, 729 | {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, 730 | ] 731 | 732 | [[package]] 733 | name = "jsonschema" 734 | version = "4.22.0" 735 | requires_python = ">=3.8" 736 | summary = "An implementation of JSON Schema validation for Python" 737 | groups = ["default"] 738 | dependencies = [ 739 | "attrs>=22.2.0", 740 | "jsonschema-specifications>=2023.03.6", 741 | "referencing>=0.28.4", 742 | "rpds-py>=0.7.1", 743 | ] 744 | files = [ 745 | {file = "jsonschema-4.22.0-py3-none-any.whl", hash = "sha256:ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802"}, 746 | {file = "jsonschema-4.22.0.tar.gz", hash = "sha256:5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7"}, 747 | ] 748 | 749 | [[package]] 750 | name = "jsonschema-specifications" 751 | version = "2023.12.1" 752 | requires_python = ">=3.8" 753 | summary = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" 754 | groups = ["default"] 755 | dependencies = [ 756 | "referencing>=0.31.0", 757 | ] 758 | files = [ 759 | {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, 760 | {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, 761 | ] 762 | 763 | [[package]] 764 | name = "jsonschema" 765 | version = "4.22.0" 766 | extras = ["format-nongpl"] 767 | requires_python = ">=3.8" 768 | summary = "An implementation of JSON Schema validation for Python" 769 | groups = ["default"] 770 | dependencies = [ 771 | "fqdn", 772 | "idna", 773 | "isoduration", 774 | "jsonpointer>1.13", 775 | "jsonschema==4.22.0", 776 | "rfc3339-validator", 777 | "rfc3986-validator>0.1.0", 778 | "uri-template", 779 | "webcolors>=1.11", 780 | ] 781 | files = [ 782 | {file = "jsonschema-4.22.0-py3-none-any.whl", hash = "sha256:ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802"}, 783 | {file = "jsonschema-4.22.0.tar.gz", hash = "sha256:5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7"}, 784 | ] 785 | 786 | [[package]] 787 | name = "jupyter-client" 788 | version = "8.6.2" 789 | requires_python = ">=3.8" 790 | summary = "Jupyter protocol implementation and client libraries" 791 | groups = ["default"] 792 | dependencies = [ 793 | "jupyter-core!=5.0.*,>=4.12", 794 | "python-dateutil>=2.8.2", 795 | "pyzmq>=23.0", 796 | "tornado>=6.2", 797 | "traitlets>=5.3", 798 | ] 799 | files = [ 800 | {file = "jupyter_client-8.6.2-py3-none-any.whl", hash = "sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f"}, 801 | {file = "jupyter_client-8.6.2.tar.gz", hash = "sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df"}, 802 | ] 803 | 804 | [[package]] 805 | name = "jupyter-core" 806 | version = "5.7.2" 807 | requires_python = ">=3.8" 808 | summary = "Jupyter core package. A base package on which Jupyter projects rely." 809 | groups = ["default"] 810 | dependencies = [ 811 | "platformdirs>=2.5", 812 | "pywin32>=300; sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"", 813 | "traitlets>=5.3", 814 | ] 815 | files = [ 816 | {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, 817 | {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, 818 | ] 819 | 820 | [[package]] 821 | name = "jupyter-events" 822 | version = "0.10.0" 823 | requires_python = ">=3.8" 824 | summary = "Jupyter Event System library" 825 | groups = ["default"] 826 | dependencies = [ 827 | "jsonschema[format-nongpl]>=4.18.0", 828 | "python-json-logger>=2.0.4", 829 | "pyyaml>=5.3", 830 | "referencing", 831 | "rfc3339-validator", 832 | "rfc3986-validator>=0.1.1", 833 | "traitlets>=5.3", 834 | ] 835 | files = [ 836 | {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, 837 | {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"}, 838 | ] 839 | 840 | [[package]] 841 | name = "jupyter-lsp" 842 | version = "2.2.5" 843 | requires_python = ">=3.8" 844 | summary = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" 845 | groups = ["default"] 846 | dependencies = [ 847 | "jupyter-server>=1.1.2", 848 | ] 849 | files = [ 850 | {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, 851 | {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, 852 | ] 853 | 854 | [[package]] 855 | name = "jupyter-server" 856 | version = "2.14.1" 857 | requires_python = ">=3.8" 858 | summary = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." 859 | groups = ["default"] 860 | dependencies = [ 861 | "anyio>=3.1.0", 862 | "argon2-cffi>=21.1", 863 | "jinja2>=3.0.3", 864 | "jupyter-client>=7.4.4", 865 | "jupyter-core!=5.0.*,>=4.12", 866 | "jupyter-events>=0.9.0", 867 | "jupyter-server-terminals>=0.4.4", 868 | "nbconvert>=6.4.4", 869 | "nbformat>=5.3.0", 870 | "overrides>=5.0", 871 | "packaging>=22.0", 872 | "prometheus-client>=0.9", 873 | "pywinpty>=2.0.1; os_name == \"nt\"", 874 | "pyzmq>=24", 875 | "send2trash>=1.8.2", 876 | "terminado>=0.8.3", 877 | "tornado>=6.2.0", 878 | "traitlets>=5.6.0", 879 | "websocket-client>=1.7", 880 | ] 881 | files = [ 882 | {file = "jupyter_server-2.14.1-py3-none-any.whl", hash = "sha256:16f7177c3a4ea8fe37784e2d31271981a812f0b2874af17339031dc3510cc2a5"}, 883 | {file = "jupyter_server-2.14.1.tar.gz", hash = "sha256:12558d158ec7a0653bf96cc272bc7ad79e0127d503b982ed144399346694f726"}, 884 | ] 885 | 886 | [[package]] 887 | name = "jupyter-server-terminals" 888 | version = "0.5.3" 889 | requires_python = ">=3.8" 890 | summary = "A Jupyter Server Extension Providing Terminals." 891 | groups = ["default"] 892 | dependencies = [ 893 | "pywinpty>=2.0.3; os_name == \"nt\"", 894 | "terminado>=0.8.3", 895 | ] 896 | files = [ 897 | {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, 898 | {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, 899 | ] 900 | 901 | [[package]] 902 | name = "jupyterlab" 903 | version = "4.2.2" 904 | requires_python = ">=3.8" 905 | summary = "JupyterLab computational environment" 906 | groups = ["default"] 907 | dependencies = [ 908 | "async-lru>=1.0.0", 909 | "httpx>=0.25.0", 910 | "ipykernel>=6.5.0", 911 | "jinja2>=3.0.3", 912 | "jupyter-core", 913 | "jupyter-lsp>=2.0.0", 914 | "jupyter-server<3,>=2.4.0", 915 | "jupyterlab-server<3,>=2.27.1", 916 | "notebook-shim>=0.2", 917 | "packaging", 918 | "setuptools>=40.1.0", 919 | "tornado>=6.2.0", 920 | "traitlets", 921 | ] 922 | files = [ 923 | {file = "jupyterlab-4.2.2-py3-none-any.whl", hash = "sha256:59ee9b839f43308c3dfd55d72d1f1a299ed42a7f91f2d1afe9c12a783f9e525f"}, 924 | {file = "jupyterlab-4.2.2.tar.gz", hash = "sha256:a534b6a25719a92a40d514fb133a9fe8f0d9981b0bbce5d8a5fcaa33344a3038"}, 925 | ] 926 | 927 | [[package]] 928 | name = "jupyterlab-pygments" 929 | version = "0.3.0" 930 | requires_python = ">=3.8" 931 | summary = "Pygments theme using JupyterLab CSS variables" 932 | groups = ["default"] 933 | files = [ 934 | {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, 935 | {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, 936 | ] 937 | 938 | [[package]] 939 | name = "jupyterlab-server" 940 | version = "2.27.2" 941 | requires_python = ">=3.8" 942 | summary = "A set of server components for JupyterLab and JupyterLab like applications." 943 | groups = ["default"] 944 | dependencies = [ 945 | "babel>=2.10", 946 | "jinja2>=3.0.3", 947 | "json5>=0.9.0", 948 | "jsonschema>=4.18.0", 949 | "jupyter-server<3,>=1.21", 950 | "packaging>=21.3", 951 | "requests>=2.31", 952 | ] 953 | files = [ 954 | {file = "jupyterlab_server-2.27.2-py3-none-any.whl", hash = "sha256:54aa2d64fd86383b5438d9f0c032f043c4d8c0264b8af9f60bd061157466ea43"}, 955 | {file = "jupyterlab_server-2.27.2.tar.gz", hash = "sha256:15cbb349dc45e954e09bacf81b9f9bcb10815ff660fb2034ecd7417db3a7ea27"}, 956 | ] 957 | 958 | [[package]] 959 | name = "markupsafe" 960 | version = "2.1.5" 961 | requires_python = ">=3.7" 962 | summary = "Safely add untrusted strings to HTML/XML markup." 963 | groups = ["default"] 964 | files = [ 965 | {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, 966 | {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, 967 | {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, 968 | {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, 969 | {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, 970 | {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, 971 | {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, 972 | {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, 973 | {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, 974 | {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, 975 | {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, 976 | ] 977 | 978 | [[package]] 979 | name = "matplotlib-inline" 980 | version = "0.1.7" 981 | requires_python = ">=3.8" 982 | summary = "Inline Matplotlib backend for Jupyter" 983 | groups = ["default"] 984 | dependencies = [ 985 | "traitlets", 986 | ] 987 | files = [ 988 | {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, 989 | {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, 990 | ] 991 | 992 | [[package]] 993 | name = "mistune" 994 | version = "3.0.2" 995 | requires_python = ">=3.7" 996 | summary = "A sane and fast Markdown parser with useful plugins and renderers" 997 | groups = ["default"] 998 | files = [ 999 | {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, 1000 | {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, 1001 | ] 1002 | 1003 | [[package]] 1004 | name = "multidict" 1005 | version = "6.0.5" 1006 | requires_python = ">=3.7" 1007 | summary = "multidict implementation" 1008 | groups = ["default"] 1009 | files = [ 1010 | {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, 1011 | {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, 1012 | {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, 1013 | {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, 1014 | {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, 1015 | {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, 1016 | {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, 1017 | {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, 1018 | {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, 1019 | {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, 1020 | {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, 1021 | {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, 1022 | {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, 1023 | {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, 1024 | {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, 1025 | {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, 1026 | {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, 1027 | ] 1028 | 1029 | [[package]] 1030 | name = "multiprocess" 1031 | version = "0.70.16" 1032 | requires_python = ">=3.8" 1033 | summary = "better multiprocessing and multithreading in Python" 1034 | groups = ["default"] 1035 | dependencies = [ 1036 | "dill>=0.3.8", 1037 | ] 1038 | files = [ 1039 | {file = "multiprocess-0.70.16-pp310-pypy310_pp73-macosx_10_13_x86_64.whl", hash = "sha256:476887be10e2f59ff183c006af746cb6f1fd0eadcfd4ef49e605cbe2659920ee"}, 1040 | {file = "multiprocess-0.70.16-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d951bed82c8f73929ac82c61f01a7b5ce8f3e5ef40f5b52553b4f547ce2b08ec"}, 1041 | {file = "multiprocess-0.70.16-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:37b55f71c07e2d741374998c043b9520b626a8dddc8b3129222ca4f1a06ef67a"}, 1042 | {file = "multiprocess-0.70.16-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba8c31889abf4511c7308a8c52bb4a30b9d590e7f58523302ba00237702ca054"}, 1043 | {file = "multiprocess-0.70.16-pp39-pypy39_pp73-macosx_10_13_x86_64.whl", hash = "sha256:0dfd078c306e08d46d7a8d06fb120313d87aa43af60d66da43ffff40b44d2f41"}, 1044 | {file = "multiprocess-0.70.16-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e7b9d0f307cd9bd50851afaac0dba2cb6c44449efff697df7c7645f7d3f2be3a"}, 1045 | {file = "multiprocess-0.70.16-py311-none-any.whl", hash = "sha256:af4cabb0dac72abfb1e794fa7855c325fd2b55a10a44628a3c1ad3311c04127a"}, 1046 | {file = "multiprocess-0.70.16.tar.gz", hash = "sha256:161af703d4652a0e1410be6abccecde4a7ddffd19341be0a7011b94aeb171ac1"}, 1047 | ] 1048 | 1049 | [[package]] 1050 | name = "nbclient" 1051 | version = "0.10.0" 1052 | requires_python = ">=3.8.0" 1053 | summary = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." 1054 | groups = ["default"] 1055 | dependencies = [ 1056 | "jupyter-client>=6.1.12", 1057 | "jupyter-core!=5.0.*,>=4.12", 1058 | "nbformat>=5.1", 1059 | "traitlets>=5.4", 1060 | ] 1061 | files = [ 1062 | {file = "nbclient-0.10.0-py3-none-any.whl", hash = "sha256:f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f"}, 1063 | {file = "nbclient-0.10.0.tar.gz", hash = "sha256:4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09"}, 1064 | ] 1065 | 1066 | [[package]] 1067 | name = "nbconvert" 1068 | version = "7.16.4" 1069 | requires_python = ">=3.8" 1070 | summary = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." 1071 | groups = ["default"] 1072 | dependencies = [ 1073 | "beautifulsoup4", 1074 | "bleach!=5.0.0", 1075 | "defusedxml", 1076 | "jinja2>=3.0", 1077 | "jupyter-core>=4.7", 1078 | "jupyterlab-pygments", 1079 | "markupsafe>=2.0", 1080 | "mistune<4,>=2.0.3", 1081 | "nbclient>=0.5.0", 1082 | "nbformat>=5.7", 1083 | "packaging", 1084 | "pandocfilters>=1.4.1", 1085 | "pygments>=2.4.1", 1086 | "tinycss2", 1087 | "traitlets>=5.1", 1088 | ] 1089 | files = [ 1090 | {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, 1091 | {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, 1092 | ] 1093 | 1094 | [[package]] 1095 | name = "nbformat" 1096 | version = "5.10.4" 1097 | requires_python = ">=3.8" 1098 | summary = "The Jupyter Notebook format" 1099 | groups = ["default"] 1100 | dependencies = [ 1101 | "fastjsonschema>=2.15", 1102 | "jsonschema>=2.6", 1103 | "jupyter-core!=5.0.*,>=4.12", 1104 | "traitlets>=5.1", 1105 | ] 1106 | files = [ 1107 | {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, 1108 | {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, 1109 | ] 1110 | 1111 | [[package]] 1112 | name = "nest-asyncio" 1113 | version = "1.6.0" 1114 | requires_python = ">=3.5" 1115 | summary = "Patch asyncio to allow nested event loops" 1116 | groups = ["default"] 1117 | files = [ 1118 | {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, 1119 | {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, 1120 | ] 1121 | 1122 | [[package]] 1123 | name = "notebook" 1124 | version = "7.2.1" 1125 | requires_python = ">=3.8" 1126 | summary = "Jupyter Notebook - A web-based notebook environment for interactive computing" 1127 | groups = ["default"] 1128 | dependencies = [ 1129 | "jupyter-server<3,>=2.4.0", 1130 | "jupyterlab-server<3,>=2.27.1", 1131 | "jupyterlab<4.3,>=4.2.0", 1132 | "notebook-shim<0.3,>=0.2", 1133 | "tornado>=6.2.0", 1134 | ] 1135 | files = [ 1136 | {file = "notebook-7.2.1-py3-none-any.whl", hash = "sha256:f45489a3995746f2195a137e0773e2130960b51c9ac3ce257dbc2705aab3a6ca"}, 1137 | {file = "notebook-7.2.1.tar.gz", hash = "sha256:4287b6da59740b32173d01d641f763d292f49c30e7a51b89c46ba8473126341e"}, 1138 | ] 1139 | 1140 | [[package]] 1141 | name = "notebook-shim" 1142 | version = "0.2.4" 1143 | requires_python = ">=3.7" 1144 | summary = "A shim layer for notebook traits and config" 1145 | groups = ["default"] 1146 | dependencies = [ 1147 | "jupyter-server<3,>=1.8", 1148 | ] 1149 | files = [ 1150 | {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, 1151 | {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, 1152 | ] 1153 | 1154 | [[package]] 1155 | name = "numpy" 1156 | version = "2.0.0" 1157 | requires_python = ">=3.9" 1158 | summary = "Fundamental package for array computing in Python" 1159 | groups = ["default"] 1160 | files = [ 1161 | {file = "numpy-2.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad0c86f3455fbd0de6c31a3056eb822fc939f81b1618f10ff3406971893b62a5"}, 1162 | {file = "numpy-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7f387600d424f91576af20518334df3d97bc76a300a755f9a8d6e4f5cadd289"}, 1163 | {file = "numpy-2.0.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:34f003cb88b1ba38cb9a9a4a3161c1604973d7f9d5552c38bc2f04f829536609"}, 1164 | {file = "numpy-2.0.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b6f6a8f45d0313db07d6d1d37bd0b112f887e1369758a5419c0370ba915b3871"}, 1165 | {file = "numpy-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f64641b42b2429f56ee08b4f427a4d2daf916ec59686061de751a55aafa22e4"}, 1166 | {file = "numpy-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7039a136017eaa92c1848152827e1424701532ca8e8967fe480fe1569dae581"}, 1167 | {file = "numpy-2.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46e161722e0f619749d1cd892167039015b2c2817296104487cd03ed4a955995"}, 1168 | {file = "numpy-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0e50842b2295ba8414c8c1d9d957083d5dfe9e16828b37de883f51fc53c4016f"}, 1169 | {file = "numpy-2.0.0-cp311-cp311-win32.whl", hash = "sha256:2ce46fd0b8a0c947ae047d222f7136fc4d55538741373107574271bc00e20e8f"}, 1170 | {file = "numpy-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbd6acc766814ea6443628f4e6751d0da6593dae29c08c0b2606164db026970c"}, 1171 | {file = "numpy-2.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9416a5c2e92ace094e9f0082c5fd473502c91651fb896bc17690d6fc475128d6"}, 1172 | {file = "numpy-2.0.0-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:17067d097ed036636fa79f6a869ac26df7db1ba22039d962422506640314933a"}, 1173 | {file = "numpy-2.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ecb5b0582cd125f67a629072fed6f83562d9dd04d7e03256c9829bdec027ad"}, 1174 | {file = "numpy-2.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cef04d068f5fb0518a77857953193b6bb94809a806bd0a14983a8f12ada060c9"}, 1175 | {file = "numpy-2.0.0.tar.gz", hash = "sha256:cf5d1c9e6837f8af9f92b6bd3e86d513cdc11f60fd62185cc49ec7d1aba34864"}, 1176 | ] 1177 | 1178 | [[package]] 1179 | name = "openai" 1180 | version = "1.34.0" 1181 | requires_python = ">=3.7.1" 1182 | summary = "The official Python library for the openai API" 1183 | groups = ["default"] 1184 | dependencies = [ 1185 | "anyio<5,>=3.5.0", 1186 | "distro<2,>=1.7.0", 1187 | "httpx<1,>=0.23.0", 1188 | "pydantic<3,>=1.9.0", 1189 | "sniffio", 1190 | "tqdm>4", 1191 | "typing-extensions<5,>=4.7", 1192 | ] 1193 | files = [ 1194 | {file = "openai-1.34.0-py3-none-any.whl", hash = "sha256:018623c2f795424044675c6230fa3bfbf98d9e0aab45d8fd116f2efb2cfb6b7e"}, 1195 | {file = "openai-1.34.0.tar.gz", hash = "sha256:95c8e2da4acd6958e626186957d656597613587195abd0fb2527566a93e76770"}, 1196 | ] 1197 | 1198 | [[package]] 1199 | name = "overrides" 1200 | version = "7.7.0" 1201 | requires_python = ">=3.6" 1202 | summary = "A decorator to automatically detect mismatch when overriding a method." 1203 | groups = ["default"] 1204 | files = [ 1205 | {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, 1206 | {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, 1207 | ] 1208 | 1209 | [[package]] 1210 | name = "packaging" 1211 | version = "24.1" 1212 | requires_python = ">=3.8" 1213 | summary = "Core utilities for Python packages" 1214 | groups = ["default"] 1215 | files = [ 1216 | {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, 1217 | {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, 1218 | ] 1219 | 1220 | [[package]] 1221 | name = "pandas" 1222 | version = "2.2.2" 1223 | requires_python = ">=3.9" 1224 | summary = "Powerful data structures for data analysis, time series, and statistics" 1225 | groups = ["default"] 1226 | dependencies = [ 1227 | "numpy>=1.23.2; python_version == \"3.11\"", 1228 | "python-dateutil>=2.8.2", 1229 | "pytz>=2020.1", 1230 | "tzdata>=2022.7", 1231 | ] 1232 | files = [ 1233 | {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, 1234 | {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, 1235 | {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, 1236 | {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, 1237 | {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, 1238 | {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, 1239 | {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, 1240 | {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, 1241 | ] 1242 | 1243 | [[package]] 1244 | name = "pandocfilters" 1245 | version = "1.5.1" 1246 | requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" 1247 | summary = "Utilities for writing pandoc filters in python" 1248 | groups = ["default"] 1249 | files = [ 1250 | {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, 1251 | {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, 1252 | ] 1253 | 1254 | [[package]] 1255 | name = "parso" 1256 | version = "0.8.4" 1257 | requires_python = ">=3.6" 1258 | summary = "A Python Parser" 1259 | groups = ["default"] 1260 | files = [ 1261 | {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, 1262 | {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, 1263 | ] 1264 | 1265 | [[package]] 1266 | name = "pexpect" 1267 | version = "4.9.0" 1268 | summary = "Pexpect allows easy control of interactive console applications." 1269 | groups = ["default"] 1270 | marker = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" 1271 | dependencies = [ 1272 | "ptyprocess>=0.5", 1273 | ] 1274 | files = [ 1275 | {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, 1276 | {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, 1277 | ] 1278 | 1279 | [[package]] 1280 | name = "platformdirs" 1281 | version = "4.2.2" 1282 | requires_python = ">=3.8" 1283 | summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." 1284 | groups = ["default"] 1285 | files = [ 1286 | {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, 1287 | {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, 1288 | ] 1289 | 1290 | [[package]] 1291 | name = "prometheus-client" 1292 | version = "0.20.0" 1293 | requires_python = ">=3.8" 1294 | summary = "Python client for the Prometheus monitoring system." 1295 | groups = ["default"] 1296 | files = [ 1297 | {file = "prometheus_client-0.20.0-py3-none-any.whl", hash = "sha256:cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7"}, 1298 | {file = "prometheus_client-0.20.0.tar.gz", hash = "sha256:287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89"}, 1299 | ] 1300 | 1301 | [[package]] 1302 | name = "prompt-toolkit" 1303 | version = "3.0.47" 1304 | requires_python = ">=3.7.0" 1305 | summary = "Library for building powerful interactive command lines in Python" 1306 | groups = ["default"] 1307 | dependencies = [ 1308 | "wcwidth", 1309 | ] 1310 | files = [ 1311 | {file = "prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10"}, 1312 | {file = "prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360"}, 1313 | ] 1314 | 1315 | [[package]] 1316 | name = "psutil" 1317 | version = "5.9.8" 1318 | requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" 1319 | summary = "Cross-platform lib for process and system monitoring in Python." 1320 | groups = ["default"] 1321 | files = [ 1322 | {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, 1323 | {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, 1324 | {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, 1325 | {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, 1326 | {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, 1327 | {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, 1328 | {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, 1329 | ] 1330 | 1331 | [[package]] 1332 | name = "ptyprocess" 1333 | version = "0.7.0" 1334 | summary = "Run a subprocess in a pseudo terminal" 1335 | groups = ["default"] 1336 | marker = "sys_platform != \"win32\" and sys_platform != \"emscripten\" or os_name != \"nt\"" 1337 | files = [ 1338 | {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, 1339 | {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, 1340 | ] 1341 | 1342 | [[package]] 1343 | name = "pure-eval" 1344 | version = "0.2.2" 1345 | summary = "Safely evaluate AST nodes without side effects" 1346 | groups = ["default"] 1347 | files = [ 1348 | {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"}, 1349 | {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"}, 1350 | ] 1351 | 1352 | [[package]] 1353 | name = "pyarrow" 1354 | version = "16.1.0" 1355 | requires_python = ">=3.8" 1356 | summary = "Python library for Apache Arrow" 1357 | groups = ["default"] 1358 | dependencies = [ 1359 | "numpy>=1.16.6", 1360 | ] 1361 | files = [ 1362 | {file = "pyarrow-16.1.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:d0ebea336b535b37eee9eee31761813086d33ed06de9ab6fc6aaa0bace7b250c"}, 1363 | {file = "pyarrow-16.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e73cfc4a99e796727919c5541c65bb88b973377501e39b9842ea71401ca6c1c"}, 1364 | {file = "pyarrow-16.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf9251264247ecfe93e5f5a0cd43b8ae834f1e61d1abca22da55b20c788417f6"}, 1365 | {file = "pyarrow-16.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddf5aace92d520d3d2a20031d8b0ec27b4395cab9f74e07cc95edf42a5cc0147"}, 1366 | {file = "pyarrow-16.1.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:25233642583bf658f629eb230b9bb79d9af4d9f9229890b3c878699c82f7d11e"}, 1367 | {file = "pyarrow-16.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a33a64576fddfbec0a44112eaf844c20853647ca833e9a647bfae0582b2ff94b"}, 1368 | {file = "pyarrow-16.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:185d121b50836379fe012753cf15c4ba9638bda9645183ab36246923875f8d1b"}, 1369 | {file = "pyarrow-16.1.0.tar.gz", hash = "sha256:15fbb22ea96d11f0b5768504a3f961edab25eaf4197c341720c4a387f6c60315"}, 1370 | ] 1371 | 1372 | [[package]] 1373 | name = "pyarrow-hotfix" 1374 | version = "0.6" 1375 | requires_python = ">=3.5" 1376 | summary = "" 1377 | groups = ["default"] 1378 | files = [ 1379 | {file = "pyarrow_hotfix-0.6-py3-none-any.whl", hash = "sha256:dcc9ae2d220dff0083be6a9aa8e0cdee5182ad358d4931fce825c545e5c89178"}, 1380 | {file = "pyarrow_hotfix-0.6.tar.gz", hash = "sha256:79d3e030f7ff890d408a100ac16d6f00b14d44a502d7897cd9fc3e3a534e9945"}, 1381 | ] 1382 | 1383 | [[package]] 1384 | name = "pycparser" 1385 | version = "2.22" 1386 | requires_python = ">=3.8" 1387 | summary = "C parser in Python" 1388 | groups = ["default"] 1389 | files = [ 1390 | {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, 1391 | {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, 1392 | ] 1393 | 1394 | [[package]] 1395 | name = "pydantic" 1396 | version = "2.7.4" 1397 | requires_python = ">=3.8" 1398 | summary = "Data validation using Python type hints" 1399 | groups = ["default"] 1400 | dependencies = [ 1401 | "annotated-types>=0.4.0", 1402 | "pydantic-core==2.18.4", 1403 | "typing-extensions>=4.6.1", 1404 | ] 1405 | files = [ 1406 | {file = "pydantic-2.7.4-py3-none-any.whl", hash = "sha256:ee8538d41ccb9c0a9ad3e0e5f07bf15ed8015b481ced539a1759d8cc89ae90d0"}, 1407 | {file = "pydantic-2.7.4.tar.gz", hash = "sha256:0c84efd9548d545f63ac0060c1e4d39bb9b14db8b3c0652338aecc07b5adec52"}, 1408 | ] 1409 | 1410 | [[package]] 1411 | name = "pydantic-core" 1412 | version = "2.18.4" 1413 | requires_python = ">=3.8" 1414 | summary = "Core functionality for Pydantic validation and serialization" 1415 | groups = ["default"] 1416 | dependencies = [ 1417 | "typing-extensions!=4.7.0,>=4.6.0", 1418 | ] 1419 | files = [ 1420 | {file = "pydantic_core-2.18.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:942ba11e7dfb66dc70f9ae66b33452f51ac7bb90676da39a7345e99ffb55402d"}, 1421 | {file = "pydantic_core-2.18.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2ebef0e0b4454320274f5e83a41844c63438fdc874ea40a8b5b4ecb7693f1c4"}, 1422 | {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a642295cd0c8df1b86fc3dced1d067874c353a188dc8e0f744626d49e9aa51c4"}, 1423 | {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f09baa656c904807e832cf9cce799c6460c450c4ad80803517032da0cd062e2"}, 1424 | {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98906207f29bc2c459ff64fa007afd10a8c8ac080f7e4d5beff4c97086a3dabd"}, 1425 | {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19894b95aacfa98e7cb093cd7881a0c76f55731efad31073db4521e2b6ff5b7d"}, 1426 | {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fbbdc827fe5e42e4d196c746b890b3d72876bdbf160b0eafe9f0334525119c8"}, 1427 | {file = "pydantic_core-2.18.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f85d05aa0918283cf29a30b547b4df2fbb56b45b135f9e35b6807cb28bc47951"}, 1428 | {file = "pydantic_core-2.18.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e85637bc8fe81ddb73fda9e56bab24560bdddfa98aa64f87aaa4e4b6730c23d2"}, 1429 | {file = "pydantic_core-2.18.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2f5966897e5461f818e136b8451d0551a2e77259eb0f73a837027b47dc95dab9"}, 1430 | {file = "pydantic_core-2.18.4-cp311-none-win32.whl", hash = "sha256:44c7486a4228413c317952e9d89598bcdfb06399735e49e0f8df643e1ccd0558"}, 1431 | {file = "pydantic_core-2.18.4-cp311-none-win_amd64.whl", hash = "sha256:8a7164fe2005d03c64fd3b85649891cd4953a8de53107940bf272500ba8a788b"}, 1432 | {file = "pydantic_core-2.18.4-cp311-none-win_arm64.whl", hash = "sha256:4e99bc050fe65c450344421017f98298a97cefc18c53bb2f7b3531eb39bc7805"}, 1433 | {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:574d92eac874f7f4db0ca653514d823a0d22e2354359d0759e3f6a406db5d55d"}, 1434 | {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1f4d26ceb5eb9eed4af91bebeae4b06c3fb28966ca3a8fb765208cf6b51102ab"}, 1435 | {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77450e6d20016ec41f43ca4a6c63e9fdde03f0ae3fe90e7c27bdbeaece8b1ed4"}, 1436 | {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d323a01da91851a4f17bf592faf46149c9169d68430b3146dcba2bb5e5719abc"}, 1437 | {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43d447dd2ae072a0065389092a231283f62d960030ecd27565672bd40746c507"}, 1438 | {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:578e24f761f3b425834f297b9935e1ce2e30f51400964ce4801002435a1b41ef"}, 1439 | {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:81b5efb2f126454586d0f40c4d834010979cb80785173d1586df845a632e4e6d"}, 1440 | {file = "pydantic_core-2.18.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ab86ce7c8f9bea87b9d12c7f0af71102acbf5ecbc66c17796cff45dae54ef9a5"}, 1441 | {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:90afc12421df2b1b4dcc975f814e21bc1754640d502a2fbcc6d41e77af5ec312"}, 1442 | {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:51991a89639a912c17bef4b45c87bd83593aee0437d8102556af4885811d59f5"}, 1443 | {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:293afe532740370aba8c060882f7d26cfd00c94cae32fd2e212a3a6e3b7bc15e"}, 1444 | {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b48ece5bde2e768197a2d0f6e925f9d7e3e826f0ad2271120f8144a9db18d5c8"}, 1445 | {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eae237477a873ab46e8dd748e515c72c0c804fb380fbe6c85533c7de51f23a8f"}, 1446 | {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:834b5230b5dfc0c1ec37b2fda433b271cbbc0e507560b5d1588e2cc1148cf1ce"}, 1447 | {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e858ac0a25074ba4bce653f9b5d0a85b7456eaddadc0ce82d3878c22489fa4ee"}, 1448 | {file = "pydantic_core-2.18.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2fd41f6eff4c20778d717af1cc50eca52f5afe7805ee530a4fbd0bae284f16e9"}, 1449 | {file = "pydantic_core-2.18.4.tar.gz", hash = "sha256:ec3beeada09ff865c344ff3bc2f427f5e6c26401cc6113d77e372c3fdac73864"}, 1450 | ] 1451 | 1452 | [[package]] 1453 | name = "pygments" 1454 | version = "2.18.0" 1455 | requires_python = ">=3.8" 1456 | summary = "Pygments is a syntax highlighting package written in Python." 1457 | groups = ["default"] 1458 | files = [ 1459 | {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, 1460 | {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, 1461 | ] 1462 | 1463 | [[package]] 1464 | name = "python-dateutil" 1465 | version = "2.9.0.post0" 1466 | requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" 1467 | summary = "Extensions to the standard Python datetime module" 1468 | groups = ["default"] 1469 | dependencies = [ 1470 | "six>=1.5", 1471 | ] 1472 | files = [ 1473 | {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, 1474 | {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, 1475 | ] 1476 | 1477 | [[package]] 1478 | name = "python-dotenv" 1479 | version = "1.0.1" 1480 | requires_python = ">=3.8" 1481 | summary = "Read key-value pairs from a .env file and set them as environment variables" 1482 | groups = ["default"] 1483 | files = [ 1484 | {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, 1485 | {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, 1486 | ] 1487 | 1488 | [[package]] 1489 | name = "python-json-logger" 1490 | version = "2.0.7" 1491 | requires_python = ">=3.6" 1492 | summary = "A python library adding a json log formatter" 1493 | groups = ["default"] 1494 | files = [ 1495 | {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"}, 1496 | {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"}, 1497 | ] 1498 | 1499 | [[package]] 1500 | name = "pytz" 1501 | version = "2024.1" 1502 | summary = "World timezone definitions, modern and historical" 1503 | groups = ["default"] 1504 | files = [ 1505 | {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, 1506 | {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, 1507 | ] 1508 | 1509 | [[package]] 1510 | name = "pywin32" 1511 | version = "306" 1512 | summary = "Python for Window Extensions" 1513 | groups = ["default"] 1514 | marker = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" 1515 | files = [ 1516 | {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, 1517 | {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, 1518 | {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, 1519 | ] 1520 | 1521 | [[package]] 1522 | name = "pywinpty" 1523 | version = "2.0.13" 1524 | requires_python = ">=3.8" 1525 | summary = "Pseudo terminal support for Windows from Python." 1526 | groups = ["default"] 1527 | marker = "os_name == \"nt\"" 1528 | files = [ 1529 | {file = "pywinpty-2.0.13-cp311-none-win_amd64.whl", hash = "sha256:b96fb14698db1284db84ca38c79f15b4cfdc3172065b5137383910567591fa99"}, 1530 | {file = "pywinpty-2.0.13.tar.gz", hash = "sha256:c34e32351a3313ddd0d7da23d27f835c860d32fe4ac814d372a3ea9594f41dde"}, 1531 | ] 1532 | 1533 | [[package]] 1534 | name = "pyyaml" 1535 | version = "6.0.1" 1536 | requires_python = ">=3.6" 1537 | summary = "YAML parser and emitter for Python" 1538 | groups = ["default"] 1539 | files = [ 1540 | {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, 1541 | {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, 1542 | {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, 1543 | {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, 1544 | {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, 1545 | {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, 1546 | {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, 1547 | {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, 1548 | {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, 1549 | ] 1550 | 1551 | [[package]] 1552 | name = "pyzmq" 1553 | version = "26.0.3" 1554 | requires_python = ">=3.7" 1555 | summary = "Python bindings for 0MQ" 1556 | groups = ["default"] 1557 | dependencies = [ 1558 | "cffi; implementation_name == \"pypy\"", 1559 | ] 1560 | files = [ 1561 | {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:a72a84570f84c374b4c287183debc776dc319d3e8ce6b6a0041ce2e400de3f32"}, 1562 | {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ca684ee649b55fd8f378127ac8462fb6c85f251c2fb027eb3c887e8ee347bcd"}, 1563 | {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e222562dc0f38571c8b1ffdae9d7adb866363134299264a1958d077800b193b7"}, 1564 | {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f17cde1db0754c35a91ac00b22b25c11da6eec5746431d6e5092f0cd31a3fea9"}, 1565 | {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7c0c0b3244bb2275abe255d4a30c050d541c6cb18b870975553f1fb6f37527"}, 1566 | {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac97a21de3712afe6a6c071abfad40a6224fd14fa6ff0ff8d0c6e6cd4e2f807a"}, 1567 | {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:88b88282e55fa39dd556d7fc04160bcf39dea015f78e0cecec8ff4f06c1fc2b5"}, 1568 | {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:72b67f966b57dbd18dcc7efbc1c7fc9f5f983e572db1877081f075004614fcdd"}, 1569 | {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83"}, 1570 | {file = "pyzmq-26.0.3-cp311-cp311-win32.whl", hash = "sha256:eed56b6a39216d31ff8cd2f1d048b5bf1700e4b32a01b14379c3b6dde9ce3aa3"}, 1571 | {file = "pyzmq-26.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:3191d312c73e3cfd0f0afdf51df8405aafeb0bad71e7ed8f68b24b63c4f36500"}, 1572 | {file = "pyzmq-26.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:b6907da3017ef55139cf0e417c5123a84c7332520e73a6902ff1f79046cd3b94"}, 1573 | {file = "pyzmq-26.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c18645ef6294d99b256806e34653e86236eb266278c8ec8112622b61db255de"}, 1574 | {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e6bc96ebe49604df3ec2c6389cc3876cabe475e6bfc84ced1bf4e630662cb35"}, 1575 | {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:971e8990c5cc4ddcff26e149398fc7b0f6a042306e82500f5e8db3b10ce69f84"}, 1576 | {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8416c23161abd94cc7da80c734ad7c9f5dbebdadfdaa77dad78244457448223"}, 1577 | {file = "pyzmq-26.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:082a2988364b60bb5de809373098361cf1dbb239623e39e46cb18bc035ed9c0c"}, 1578 | {file = "pyzmq-26.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d57dfbf9737763b3a60d26e6800e02e04284926329aee8fb01049635e957fe81"}, 1579 | {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77a85dca4c2430ac04dc2a2185c2deb3858a34fe7f403d0a946fa56970cf60a1"}, 1580 | {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c82a6d952a1d555bf4be42b6532927d2a5686dd3c3e280e5f63225ab47ac1f5"}, 1581 | {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4496b1282c70c442809fc1b151977c3d967bfb33e4e17cedbf226d97de18f709"}, 1582 | {file = "pyzmq-26.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:e4946d6bdb7ba972dfda282f9127e5756d4f299028b1566d1245fa0d438847e6"}, 1583 | {file = "pyzmq-26.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03c0ae165e700364b266876d712acb1ac02693acd920afa67da2ebb91a0b3c09"}, 1584 | {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3e3070e680f79887d60feeda051a58d0ac36622e1759f305a41059eff62c6da7"}, 1585 | {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6ca08b840fe95d1c2bd9ab92dac5685f949fc6f9ae820ec16193e5ddf603c3b2"}, 1586 | {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e76654e9dbfb835b3518f9938e565c7806976c07b37c33526b574cc1a1050480"}, 1587 | {file = "pyzmq-26.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:871587bdadd1075b112e697173e946a07d722459d20716ceb3d1bd6c64bd08ce"}, 1588 | {file = "pyzmq-26.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d0a2d1bd63a4ad79483049b26514e70fa618ce6115220da9efdff63688808b17"}, 1589 | {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0270b49b6847f0d106d64b5086e9ad5dc8a902413b5dbbb15d12b60f9c1747a4"}, 1590 | {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703c60b9910488d3d0954ca585c34f541e506a091a41930e663a098d3b794c67"}, 1591 | {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74423631b6be371edfbf7eabb02ab995c2563fee60a80a30829176842e71722a"}, 1592 | {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4adfbb5451196842a88fda3612e2c0414134874bffb1c2ce83ab4242ec9e027d"}, 1593 | {file = "pyzmq-26.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3516119f4f9b8671083a70b6afaa0a070f5683e431ab3dc26e9215620d7ca1ad"}, 1594 | {file = "pyzmq-26.0.3.tar.gz", hash = "sha256:dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a"}, 1595 | ] 1596 | 1597 | [[package]] 1598 | name = "referencing" 1599 | version = "0.35.1" 1600 | requires_python = ">=3.8" 1601 | summary = "JSON Referencing + Python" 1602 | groups = ["default"] 1603 | dependencies = [ 1604 | "attrs>=22.2.0", 1605 | "rpds-py>=0.7.0", 1606 | ] 1607 | files = [ 1608 | {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, 1609 | {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, 1610 | ] 1611 | 1612 | [[package]] 1613 | name = "requests" 1614 | version = "2.32.3" 1615 | requires_python = ">=3.8" 1616 | summary = "Python HTTP for Humans." 1617 | groups = ["default"] 1618 | dependencies = [ 1619 | "certifi>=2017.4.17", 1620 | "charset-normalizer<4,>=2", 1621 | "idna<4,>=2.5", 1622 | "urllib3<3,>=1.21.1", 1623 | ] 1624 | files = [ 1625 | {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, 1626 | {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, 1627 | ] 1628 | 1629 | [[package]] 1630 | name = "rfc3339-validator" 1631 | version = "0.1.4" 1632 | requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 1633 | summary = "A pure python RFC3339 validator" 1634 | groups = ["default"] 1635 | dependencies = [ 1636 | "six", 1637 | ] 1638 | files = [ 1639 | {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, 1640 | {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, 1641 | ] 1642 | 1643 | [[package]] 1644 | name = "rfc3986-validator" 1645 | version = "0.1.1" 1646 | requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" 1647 | summary = "Pure python rfc3986 validator" 1648 | groups = ["default"] 1649 | files = [ 1650 | {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, 1651 | {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, 1652 | ] 1653 | 1654 | [[package]] 1655 | name = "rpds-py" 1656 | version = "0.18.1" 1657 | requires_python = ">=3.8" 1658 | summary = "Python bindings to Rust's persistent data structures (rpds)" 1659 | groups = ["default"] 1660 | files = [ 1661 | {file = "rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8"}, 1662 | {file = "rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d"}, 1663 | {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7"}, 1664 | {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc"}, 1665 | {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07"}, 1666 | {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261"}, 1667 | {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100"}, 1668 | {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8"}, 1669 | {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7"}, 1670 | {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e"}, 1671 | {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88"}, 1672 | {file = "rpds_py-0.18.1-cp311-none-win32.whl", hash = "sha256:c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb"}, 1673 | {file = "rpds_py-0.18.1-cp311-none-win_amd64.whl", hash = "sha256:70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2"}, 1674 | {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cbfbea39ba64f5e53ae2915de36f130588bba71245b418060ec3330ebf85678e"}, 1675 | {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3d456ff2a6a4d2adcdf3c1c960a36f4fd2fec6e3b4902a42a384d17cf4e7a65"}, 1676 | {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7700936ef9d006b7ef605dc53aa364da2de5a3aa65516a1f3ce73bf82ecfc7ae"}, 1677 | {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51584acc5916212e1bf45edd17f3a6b05fe0cbb40482d25e619f824dccb679de"}, 1678 | {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:942695a206a58d2575033ff1e42b12b2aece98d6003c6bc739fbf33d1773b12f"}, 1679 | {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b906b5f58892813e5ba5c6056d6a5ad08f358ba49f046d910ad992196ea61397"}, 1680 | {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f8e3fecca256fefc91bb6765a693d96692459d7d4c644660a9fff32e517843"}, 1681 | {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7732770412bab81c5a9f6d20aeb60ae943a9b36dcd990d876a773526468e7163"}, 1682 | {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bd1105b50ede37461c1d51b9698c4f4be6e13e69a908ab7751e3807985fc0346"}, 1683 | {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:618916f5535784960f3ecf8111581f4ad31d347c3de66d02e728de460a46303c"}, 1684 | {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:17c6d2155e2423f7e79e3bb18151c686d40db42d8645e7977442170c360194d4"}, 1685 | {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c4c4c3f878df21faf5fac86eda32671c27889e13570645a9eea0a1abdd50922"}, 1686 | {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:fab6ce90574645a0d6c58890e9bcaac8d94dff54fb51c69e5522a7358b80ab64"}, 1687 | {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531796fb842b53f2695e94dc338929e9f9dbf473b64710c28af5a160b2a8927d"}, 1688 | {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:740884bc62a5e2bbb31e584f5d23b32320fd75d79f916f15a788d527a5e83644"}, 1689 | {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:998125738de0158f088aef3cb264a34251908dd2e5d9966774fdab7402edfab7"}, 1690 | {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2be6e9dd4111d5b31ba3b74d17da54a8319d8168890fbaea4b9e5c3de630ae5"}, 1691 | {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0cee71bc618cd93716f3c1bf56653740d2d13ddbd47673efa8bf41435a60daa"}, 1692 | {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c3caec4ec5cd1d18e5dd6ae5194d24ed12785212a90b37f5f7f06b8bedd7139"}, 1693 | {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:27bba383e8c5231cd559affe169ca0b96ec78d39909ffd817f28b166d7ddd4d8"}, 1694 | {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:a888e8bdb45916234b99da2d859566f1e8a1d2275a801bb8e4a9644e3c7e7909"}, 1695 | {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6031b25fb1b06327b43d841f33842b383beba399884f8228a6bb3df3088485ff"}, 1696 | {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48c2faaa8adfacefcbfdb5f2e2e7bdad081e5ace8d182e5f4ade971f128e6bb3"}, 1697 | {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d85164315bd68c0806768dc6bb0429c6f95c354f87485ee3593c4f6b14def2bd"}, 1698 | {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6afd80f6c79893cfc0574956f78a0add8c76e3696f2d6a15bca2c66c415cf2d4"}, 1699 | {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa242ac1ff583e4ec7771141606aafc92b361cd90a05c30d93e343a0c2d82a89"}, 1700 | {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21be4770ff4e08698e1e8e0bce06edb6ea0626e7c8f560bc08222880aca6a6f"}, 1701 | {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c45a639e93a0c5d4b788b2613bd637468edd62f8f95ebc6fcc303d58ab3f0a8"}, 1702 | {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910e71711d1055b2768181efa0a17537b2622afeb0424116619817007f8a2b10"}, 1703 | {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9bb1f182a97880f6078283b3505a707057c42bf55d8fca604f70dedfdc0772a"}, 1704 | {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d54f74f40b1f7aaa595a02ff42ef38ca654b1469bef7d52867da474243cc633"}, 1705 | {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:8d2e182c9ee01135e11e9676e9a62dfad791a7a467738f06726872374a83db49"}, 1706 | {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:636a15acc588f70fda1661234761f9ed9ad79ebed3f2125d44be0862708b666e"}, 1707 | {file = "rpds_py-0.18.1.tar.gz", hash = "sha256:dc48b479d540770c811fbd1eb9ba2bb66951863e448efec2e2c102625328e92f"}, 1708 | ] 1709 | 1710 | [[package]] 1711 | name = "send2trash" 1712 | version = "1.8.3" 1713 | requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" 1714 | summary = "Send file to trash natively under Mac OS X, Windows and Linux" 1715 | groups = ["default"] 1716 | files = [ 1717 | {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, 1718 | {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, 1719 | ] 1720 | 1721 | [[package]] 1722 | name = "setuptools" 1723 | version = "70.0.0" 1724 | requires_python = ">=3.8" 1725 | summary = "Easily download, build, install, upgrade, and uninstall Python packages" 1726 | groups = ["default"] 1727 | files = [ 1728 | {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, 1729 | {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, 1730 | ] 1731 | 1732 | [[package]] 1733 | name = "six" 1734 | version = "1.16.0" 1735 | requires_python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" 1736 | summary = "Python 2 and 3 compatibility utilities" 1737 | groups = ["default"] 1738 | files = [ 1739 | {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, 1740 | {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, 1741 | ] 1742 | 1743 | [[package]] 1744 | name = "sniffio" 1745 | version = "1.3.1" 1746 | requires_python = ">=3.7" 1747 | summary = "Sniff out which async library your code is running under" 1748 | groups = ["default"] 1749 | files = [ 1750 | {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, 1751 | {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, 1752 | ] 1753 | 1754 | [[package]] 1755 | name = "soupsieve" 1756 | version = "2.5" 1757 | requires_python = ">=3.8" 1758 | summary = "A modern CSS selector implementation for Beautiful Soup." 1759 | groups = ["default"] 1760 | files = [ 1761 | {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, 1762 | {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, 1763 | ] 1764 | 1765 | [[package]] 1766 | name = "stack-data" 1767 | version = "0.6.3" 1768 | summary = "Extract data from python stack frames and tracebacks for informative displays" 1769 | groups = ["default"] 1770 | dependencies = [ 1771 | "asttokens>=2.1.0", 1772 | "executing>=1.2.0", 1773 | "pure-eval", 1774 | ] 1775 | files = [ 1776 | {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, 1777 | {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, 1778 | ] 1779 | 1780 | [[package]] 1781 | name = "tabulate" 1782 | version = "0.9.0" 1783 | requires_python = ">=3.7" 1784 | summary = "Pretty-print tabular data" 1785 | groups = ["default"] 1786 | files = [ 1787 | {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, 1788 | {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, 1789 | ] 1790 | 1791 | [[package]] 1792 | name = "terminado" 1793 | version = "0.18.1" 1794 | requires_python = ">=3.8" 1795 | summary = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." 1796 | groups = ["default"] 1797 | dependencies = [ 1798 | "ptyprocess; os_name != \"nt\"", 1799 | "pywinpty>=1.1.0; os_name == \"nt\"", 1800 | "tornado>=6.1.0", 1801 | ] 1802 | files = [ 1803 | {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, 1804 | {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, 1805 | ] 1806 | 1807 | [[package]] 1808 | name = "tinycss2" 1809 | version = "1.3.0" 1810 | requires_python = ">=3.8" 1811 | summary = "A tiny CSS parser" 1812 | groups = ["default"] 1813 | dependencies = [ 1814 | "webencodings>=0.4", 1815 | ] 1816 | files = [ 1817 | {file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"}, 1818 | {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"}, 1819 | ] 1820 | 1821 | [[package]] 1822 | name = "tokenizers" 1823 | version = "0.19.1" 1824 | requires_python = ">=3.7" 1825 | summary = "" 1826 | groups = ["default"] 1827 | dependencies = [ 1828 | "huggingface-hub<1.0,>=0.16.4", 1829 | ] 1830 | files = [ 1831 | {file = "tokenizers-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5c88d1481f1882c2e53e6bb06491e474e420d9ac7bdff172610c4f9ad3898059"}, 1832 | {file = "tokenizers-0.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ddf672ed719b4ed82b51499100f5417d7d9f6fb05a65e232249268f35de5ed14"}, 1833 | {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dadc509cc8a9fe460bd274c0e16ac4184d0958117cf026e0ea8b32b438171594"}, 1834 | {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfedf31824ca4915b511b03441784ff640378191918264268e6923da48104acc"}, 1835 | {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac11016d0a04aa6487b1513a3a36e7bee7eec0e5d30057c9c0408067345c48d2"}, 1836 | {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76951121890fea8330d3a0df9a954b3f2a37e3ec20e5b0530e9a0044ca2e11fe"}, 1837 | {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b342d2ce8fc8d00f376af068e3274e2e8649562e3bc6ae4a67784ded6b99428d"}, 1838 | {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d16ff18907f4909dca9b076b9c2d899114dd6abceeb074eca0c93e2353f943aa"}, 1839 | {file = "tokenizers-0.19.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:706a37cc5332f85f26efbe2bdc9ef8a9b372b77e4645331a405073e4b3a8c1c6"}, 1840 | {file = "tokenizers-0.19.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:16baac68651701364b0289979ecec728546133e8e8fe38f66fe48ad07996b88b"}, 1841 | {file = "tokenizers-0.19.1-cp311-none-win32.whl", hash = "sha256:9ed240c56b4403e22b9584ee37d87b8bfa14865134e3e1c3fb4b2c42fafd3256"}, 1842 | {file = "tokenizers-0.19.1-cp311-none-win_amd64.whl", hash = "sha256:ad57d59341710b94a7d9dbea13f5c1e7d76fd8d9bcd944a7a6ab0b0da6e0cc66"}, 1843 | {file = "tokenizers-0.19.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b11853f17b54c2fe47742c56d8a33bf49ce31caf531e87ac0d7d13d327c9334"}, 1844 | {file = "tokenizers-0.19.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d26194ef6c13302f446d39972aaa36a1dda6450bc8949f5eb4c27f51191375bd"}, 1845 | {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e8d1ed93beda54bbd6131a2cb363a576eac746d5c26ba5b7556bc6f964425594"}, 1846 | {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca407133536f19bdec44b3da117ef0d12e43f6d4b56ac4c765f37eca501c7bda"}, 1847 | {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce05fde79d2bc2e46ac08aacbc142bead21614d937aac950be88dc79f9db9022"}, 1848 | {file = "tokenizers-0.19.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:35583cd46d16f07c054efd18b5d46af4a2f070a2dd0a47914e66f3ff5efb2b1e"}, 1849 | {file = "tokenizers-0.19.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:43350270bfc16b06ad3f6f07eab21f089adb835544417afda0f83256a8bf8b75"}, 1850 | {file = "tokenizers-0.19.1-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b4399b59d1af5645bcee2072a463318114c39b8547437a7c2d6a186a1b5a0e2d"}, 1851 | {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6852c5b2a853b8b0ddc5993cd4f33bfffdca4fcc5d52f89dd4b8eada99379285"}, 1852 | {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd266ae85c3d39df2f7e7d0e07f6c41a55e9a3123bb11f854412952deacd828"}, 1853 | {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecb2651956eea2aa0a2d099434134b1b68f1c31f9a5084d6d53f08ed43d45ff2"}, 1854 | {file = "tokenizers-0.19.1-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b279ab506ec4445166ac476fb4d3cc383accde1ea152998509a94d82547c8e2a"}, 1855 | {file = "tokenizers-0.19.1-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:89183e55fb86e61d848ff83753f64cded119f5d6e1f553d14ffee3700d0a4a49"}, 1856 | {file = "tokenizers-0.19.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2edbc75744235eea94d595a8b70fe279dd42f3296f76d5a86dde1d46e35f574"}, 1857 | {file = "tokenizers-0.19.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:0e64bfde9a723274e9a71630c3e9494ed7b4c0f76a1faacf7fe294cd26f7ae7c"}, 1858 | {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0b5ca92bfa717759c052e345770792d02d1f43b06f9e790ca0a1db62838816f3"}, 1859 | {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f8a20266e695ec9d7a946a019c1d5ca4eddb6613d4f466888eee04f16eedb85"}, 1860 | {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63c38f45d8f2a2ec0f3a20073cccb335b9f99f73b3c69483cd52ebc75369d8a1"}, 1861 | {file = "tokenizers-0.19.1-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dd26e3afe8a7b61422df3176e06664503d3f5973b94f45d5c45987e1cb711876"}, 1862 | {file = "tokenizers-0.19.1-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:eddd5783a4a6309ce23432353cdb36220e25cbb779bfa9122320666508b44b88"}, 1863 | {file = "tokenizers-0.19.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:56ae39d4036b753994476a1b935584071093b55c7a72e3b8288e68c313ca26e7"}, 1864 | {file = "tokenizers-0.19.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f9939ca7e58c2758c01b40324a59c034ce0cebad18e0d4563a9b1beab3018243"}, 1865 | {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c330c0eb815d212893c67a032e9dc1b38a803eccb32f3e8172c19cc69fbb439"}, 1866 | {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec11802450a2487cdf0e634b750a04cbdc1c4d066b97d94ce7dd2cb51ebb325b"}, 1867 | {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2b718f316b596f36e1dae097a7d5b91fc5b85e90bf08b01ff139bd8953b25af"}, 1868 | {file = "tokenizers-0.19.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ed69af290c2b65169f0ba9034d1dc39a5db9459b32f1dd8b5f3f32a3fcf06eab"}, 1869 | {file = "tokenizers-0.19.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f8a9c828277133af13f3859d1b6bf1c3cb6e9e1637df0e45312e6b7c2e622b1f"}, 1870 | {file = "tokenizers-0.19.1.tar.gz", hash = "sha256:ee59e6680ed0fdbe6b724cf38bd70400a0c1dd623b07ac729087270caeac88e3"}, 1871 | ] 1872 | 1873 | [[package]] 1874 | name = "tornado" 1875 | version = "6.4.1" 1876 | requires_python = ">=3.8" 1877 | summary = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." 1878 | groups = ["default"] 1879 | files = [ 1880 | {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, 1881 | {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, 1882 | {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, 1883 | {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, 1884 | {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, 1885 | {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, 1886 | {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, 1887 | {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, 1888 | {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, 1889 | {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, 1890 | {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, 1891 | ] 1892 | 1893 | [[package]] 1894 | name = "tqdm" 1895 | version = "4.66.4" 1896 | requires_python = ">=3.7" 1897 | summary = "Fast, Extensible Progress Meter" 1898 | groups = ["default"] 1899 | dependencies = [ 1900 | "colorama; platform_system == \"Windows\"", 1901 | ] 1902 | files = [ 1903 | {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"}, 1904 | {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"}, 1905 | ] 1906 | 1907 | [[package]] 1908 | name = "traitlets" 1909 | version = "5.14.3" 1910 | requires_python = ">=3.8" 1911 | summary = "Traitlets Python configuration system" 1912 | groups = ["default"] 1913 | files = [ 1914 | {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, 1915 | {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, 1916 | ] 1917 | 1918 | [[package]] 1919 | name = "types-python-dateutil" 1920 | version = "2.9.0.20240316" 1921 | requires_python = ">=3.8" 1922 | summary = "Typing stubs for python-dateutil" 1923 | groups = ["default"] 1924 | files = [ 1925 | {file = "types-python-dateutil-2.9.0.20240316.tar.gz", hash = "sha256:5d2f2e240b86905e40944dd787db6da9263f0deabef1076ddaed797351ec0202"}, 1926 | {file = "types_python_dateutil-2.9.0.20240316-py3-none-any.whl", hash = "sha256:6b8cb66d960771ce5ff974e9dd45e38facb81718cc1e208b10b1baccbfdbee3b"}, 1927 | ] 1928 | 1929 | [[package]] 1930 | name = "typing-extensions" 1931 | version = "4.12.2" 1932 | requires_python = ">=3.8" 1933 | summary = "Backported and Experimental Type Hints for Python 3.8+" 1934 | groups = ["default"] 1935 | files = [ 1936 | {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, 1937 | {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, 1938 | ] 1939 | 1940 | [[package]] 1941 | name = "tzdata" 1942 | version = "2024.1" 1943 | requires_python = ">=2" 1944 | summary = "Provider of IANA time zone data" 1945 | groups = ["default"] 1946 | files = [ 1947 | {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, 1948 | {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, 1949 | ] 1950 | 1951 | [[package]] 1952 | name = "uri-template" 1953 | version = "1.3.0" 1954 | requires_python = ">=3.7" 1955 | summary = "RFC 6570 URI Template Processor" 1956 | groups = ["default"] 1957 | files = [ 1958 | {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, 1959 | {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, 1960 | ] 1961 | 1962 | [[package]] 1963 | name = "urllib3" 1964 | version = "2.2.1" 1965 | requires_python = ">=3.8" 1966 | summary = "HTTP library with thread-safe connection pooling, file post, and more." 1967 | groups = ["default"] 1968 | files = [ 1969 | {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, 1970 | {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, 1971 | ] 1972 | 1973 | [[package]] 1974 | name = "wcwidth" 1975 | version = "0.2.13" 1976 | summary = "Measures the displayed width of unicode strings in a terminal" 1977 | groups = ["default"] 1978 | files = [ 1979 | {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, 1980 | {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, 1981 | ] 1982 | 1983 | [[package]] 1984 | name = "webcolors" 1985 | version = "24.6.0" 1986 | requires_python = ">=3.8" 1987 | summary = "A library for working with the color formats defined by HTML and CSS." 1988 | groups = ["default"] 1989 | files = [ 1990 | {file = "webcolors-24.6.0-py3-none-any.whl", hash = "sha256:8cf5bc7e28defd1d48b9e83d5fc30741328305a8195c29a8e668fa45586568a1"}, 1991 | {file = "webcolors-24.6.0.tar.gz", hash = "sha256:1d160d1de46b3e81e58d0a280d0c78b467dc80f47294b91b1ad8029d2cedb55b"}, 1992 | ] 1993 | 1994 | [[package]] 1995 | name = "webencodings" 1996 | version = "0.5.1" 1997 | summary = "Character encoding aliases for legacy web content" 1998 | groups = ["default"] 1999 | files = [ 2000 | {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, 2001 | {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, 2002 | ] 2003 | 2004 | [[package]] 2005 | name = "websocket-client" 2006 | version = "1.8.0" 2007 | requires_python = ">=3.8" 2008 | summary = "WebSocket client for Python with low level API options" 2009 | groups = ["default"] 2010 | files = [ 2011 | {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, 2012 | {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, 2013 | ] 2014 | 2015 | [[package]] 2016 | name = "xxhash" 2017 | version = "3.4.1" 2018 | requires_python = ">=3.7" 2019 | summary = "Python binding for xxHash" 2020 | groups = ["default"] 2021 | files = [ 2022 | {file = "xxhash-3.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:58c49083801885273e262c0f5bbeac23e520564b8357fbb18fb94ff09d3d3ea5"}, 2023 | {file = "xxhash-3.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b526015a973bfbe81e804a586b703f163861da36d186627e27524f5427b0d520"}, 2024 | {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36ad4457644c91a966f6fe137d7467636bdc51a6ce10a1d04f365c70d6a16d7e"}, 2025 | {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:248d3e83d119770f96003271fe41e049dd4ae52da2feb8f832b7a20e791d2920"}, 2026 | {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2070b6d5bbef5ee031666cf21d4953c16e92c2f8a24a94b5c240f8995ba3b1d0"}, 2027 | {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2746035f518f0410915e247877f7df43ef3372bf36cfa52cc4bc33e85242641"}, 2028 | {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a8ba6181514681c2591840d5632fcf7356ab287d4aff1c8dea20f3c78097088"}, 2029 | {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aac5010869240e95f740de43cd6a05eae180c59edd182ad93bf12ee289484fa"}, 2030 | {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4cb11d8debab1626181633d184b2372aaa09825bde709bf927704ed72765bed1"}, 2031 | {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b29728cff2c12f3d9f1d940528ee83918d803c0567866e062683f300d1d2eff3"}, 2032 | {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:a15cbf3a9c40672523bdb6ea97ff74b443406ba0ab9bca10ceccd9546414bd84"}, 2033 | {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6e66df260fed01ed8ea790c2913271641c58481e807790d9fca8bfd5a3c13844"}, 2034 | {file = "xxhash-3.4.1-cp311-cp311-win32.whl", hash = "sha256:e867f68a8f381ea12858e6d67378c05359d3a53a888913b5f7d35fbf68939d5f"}, 2035 | {file = "xxhash-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:200a5a3ad9c7c0c02ed1484a1d838b63edcf92ff538770ea07456a3732c577f4"}, 2036 | {file = "xxhash-3.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:1d03f1c0d16d24ea032e99f61c552cb2b77d502e545187338bea461fde253583"}, 2037 | {file = "xxhash-3.4.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:431625fad7ab5649368c4849d2b49a83dc711b1f20e1f7f04955aab86cd307bc"}, 2038 | {file = "xxhash-3.4.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc6dbd5fc3c9886a9e041848508b7fb65fd82f94cc793253990f81617b61fe49"}, 2039 | {file = "xxhash-3.4.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3ff8dbd0ec97aec842476cb8ccc3e17dd288cd6ce3c8ef38bff83d6eb927817"}, 2040 | {file = "xxhash-3.4.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef73a53fe90558a4096e3256752268a8bdc0322f4692ed928b6cd7ce06ad4fe3"}, 2041 | {file = "xxhash-3.4.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:450401f42bbd274b519d3d8dcf3c57166913381a3d2664d6609004685039f9d3"}, 2042 | {file = "xxhash-3.4.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a162840cf4de8a7cd8720ff3b4417fbc10001eefdd2d21541a8226bb5556e3bb"}, 2043 | {file = "xxhash-3.4.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b736a2a2728ba45017cb67785e03125a79d246462dfa892d023b827007412c52"}, 2044 | {file = "xxhash-3.4.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d0ae4c2e7698adef58710d6e7a32ff518b66b98854b1c68e70eee504ad061d8"}, 2045 | {file = "xxhash-3.4.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6322c4291c3ff174dcd104fae41500e75dad12be6f3085d119c2c8a80956c51"}, 2046 | {file = "xxhash-3.4.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:dd59ed668801c3fae282f8f4edadf6dc7784db6d18139b584b6d9677ddde1b6b"}, 2047 | {file = "xxhash-3.4.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:92693c487e39523a80474b0394645b393f0ae781d8db3474ccdcead0559ccf45"}, 2048 | {file = "xxhash-3.4.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4603a0f642a1e8d7f3ba5c4c25509aca6a9c1cc16f85091004a7028607ead663"}, 2049 | {file = "xxhash-3.4.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fa45e8cbfbadb40a920fe9ca40c34b393e0b067082d94006f7f64e70c7490a6"}, 2050 | {file = "xxhash-3.4.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595b252943b3552de491ff51e5bb79660f84f033977f88f6ca1605846637b7c6"}, 2051 | {file = "xxhash-3.4.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:562d8b8f783c6af969806aaacf95b6c7b776929ae26c0cd941d54644ea7ef51e"}, 2052 | {file = "xxhash-3.4.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:41ddeae47cf2828335d8d991f2d2b03b0bdc89289dc64349d712ff8ce59d0647"}, 2053 | {file = "xxhash-3.4.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c44d584afdf3c4dbb3277e32321d1a7b01d6071c1992524b6543025fb8f4206f"}, 2054 | {file = "xxhash-3.4.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd7bddb3a5b86213cc3f2c61500c16945a1b80ecd572f3078ddbbe68f9dabdfb"}, 2055 | {file = "xxhash-3.4.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9ecb6c987b62437c2f99c01e97caf8d25660bf541fe79a481d05732e5236719c"}, 2056 | {file = "xxhash-3.4.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:696b4e18b7023527d5c50ed0626ac0520edac45a50ec7cf3fc265cd08b1f4c03"}, 2057 | {file = "xxhash-3.4.1.tar.gz", hash = "sha256:0379d6cf1ff987cd421609a264ce025e74f346e3e145dd106c0cc2e3ec3f99a9"}, 2058 | ] 2059 | 2060 | [[package]] 2061 | name = "yarl" 2062 | version = "1.9.4" 2063 | requires_python = ">=3.7" 2064 | summary = "Yet another URL library" 2065 | groups = ["default"] 2066 | dependencies = [ 2067 | "idna>=2.0", 2068 | "multidict>=4.0", 2069 | ] 2070 | files = [ 2071 | {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, 2072 | {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, 2073 | {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, 2074 | {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, 2075 | {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, 2076 | {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, 2077 | {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, 2078 | {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, 2079 | {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, 2080 | {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, 2081 | {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, 2082 | {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, 2083 | {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, 2084 | {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, 2085 | {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, 2086 | {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, 2087 | {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, 2088 | ] 2089 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "mcts-llm" 3 | version = "0.1.0" 4 | description = "An implementation of MCTS + Self-Refine + Self-Evaluation" 5 | authors = [{ name = "brendangraham14" }] 6 | dependencies = [ 7 | "notebook>=7.2.1", 8 | "openai>=1.34.0", 9 | "anthropic>=0.28.1", 10 | "python-dotenv>=1.0.1", 11 | "pandas>=2.2.2", 12 | "tqdm>=4.66.4", 13 | "tabulate>=0.9.0", 14 | "datasets>=2.20.0", 15 | ] 16 | requires-python = "==3.11.*" 17 | readme = "README.md" 18 | license = { text = "MIT" } 19 | -------------------------------------------------------------------------------- /results/AIME_2024_llama_3_8b.csv: -------------------------------------------------------------------------------- 1 | ,ID,Year,Problem Number,Question,Answer,Part,mctsr_answer 2 | 919,2024-II-1,2024,1,"Among the $900$ residents of Aimeville, there are $195$ who own a diamond ring, $367$ who own a set of golf clubs, and $562$ who own a garden spade. In addition, each of the $900$ residents owns a bag of candy hearts. There are $437$ residents who own exactly two of these things, and $234$ residents who own exactly three of these things. Find the number of residents of Aimeville who own all four of these things.",73,II,"Here is the refined answer: 3 | 4 | Let $R$ represent the set of residents who own a diamond ring, $G$ represent the set of residents who own a set of golf clubs, $S$ represent the set of residents who own a garden spade, and $H$ represent the set of residents who own a bag of candy hearts. We can apply the inclusion-exclusion principle to find the number of residents who own at least one of the four items. The inclusion-exclusion principle states that the total number of residents who own at least one of the four items is equal to the sum of the number of residents who own each item separately, minus the number of residents who own exactly two items, minus the number of residents who own exactly three items, plus the number of residents who own exactly four items. 5 | 6 | Using the given information, we can set up the following equation: 7 | 8 | |R ∪ G ∪ S ∪ H| = 900 - 437 - 234 - 562 + 234 9 | 10 | Simplifying the equation, we get: 11 | 12 | |R ∪ G ∪ S ∪ H| = 671 13 | 14 | From this equation, we can conclude that the number of residents who own exactly four of these items is 0, since there are 0 residents who own exactly one item and the remaining 671 residents who own at least one item own either two or three items." 15 | 920,2024-II-2,2024,2,A list of positive integers has the following properties: $\bullet$ The sum of the items in the list is $30$ . $\bullet$ The unique mode of the list is $9$ . $\bullet$ The median of the list is a positive integer that does not appear in the list itself. Find the sum of the squares of all the items in the list.,236,II,"Here is a refined answer based on the critique: 16 | 17 | The mode of the list is 9, which means that 9 appears more than once, and the sum of the list is 30. Since 9 is the unique mode of the list, we can write the sum of the list as 9a + 9b, where a and b are positive integers that do not include 9. To see this, note that 9 appears more than once in the list, and thus must be a common factor in the sum of the list. Since 9 is the only positive integer that appears more than once in the list, we can conclude that 9 is the unique mode of the list. Therefore, we can write the sum of the list as 9a + 9b, where a and b are positive integers that do not include 9. 18 | 19 | This representation allows us to factorize 30 in terms of 9, which gives us 30 = 9(3 + 1). This means that the sum of the squares of the items in the list is 9^2(3^2 + 1^2) = 9(9 + 1) = 90." 20 | 921,2024-II-3,2024,3,"Find the number of ways to place a digit in each cell of a 2x3 grid so that the sum of the two numbers formed by reading left to right is $999$ , and the sum of the three numbers formed by reading top to bottom is $99$ . The grid below is an example of such an arrangement because $8+991=999$ and $9+9+81=99$ . \[\begin{array}{|c|c|c|} \hline 0 & 0 & 8 \\ \hline 9 & 9 & 1 \\ \hline \end{array}\]",45,II,"Here is a refined solution that directly addresses the problem: 21 | 22 | The 2x3 grid can be filled with digits such that the sum of the two numbers formed by reading left to right is 999, and the sum of the three numbers formed by reading top to bottom is 99. The top row must consist of two 9's and one 0, with the remaining digits spread among the three cells. This is the only possible arrangement because the total sum of the digits in the top row must be 18, and the only way to achieve this is with two 9's and one 0. 23 | 24 | The only possible way to fill the remaining cells is with the given arrangement: 25 | 26 | \[\begin{array}{|c|c|c|} \hline 0 & 0 & 8 \\ \hline 9 & 9 & 1 \\ \hline \end{array}\] 27 | 28 | The sum of the left-to-right numbers is 999, and the sum of the top-to-bottom numbers is 99, as required." 29 | 922,2024-II-4,2024,4,"Let $x,y$ and $z$ be positive real numbers that satisfy the following system of equations: \[\log_2\left({x \over yz}\right) = {1 \over 2}\] \[\log_2\left({y \over xz}\right) = {1 \over 3}\] \[\log_2\left({z \over xy}\right) = {1 \over 4}\] Then the value of $\left|\log_2(x^4y^3z^2)\right|$ is $\tfrac{m}{n}$ where $m$ and $n$ are relatively prime positive integers. Find $m+n$ .",33,II,The value of $\left|\log_2(x^4y^3z^2)\right|$ is $\frac{11}{12}$. 30 | 923,2024-II-5,2024,5,"Let $ABCDEF$ be a convex equilateral hexagon in which all pairs of opposite sides are parallel. The triangle whose sides are extensions of segments $\overline{AB}$ , $\overline{CD}$ , and $\overline{EF}$ has side lengths $200, 240,$ and $300$ . Find the side length of the hexagon.",80,II,"Let $ABCDEF$ be a convex equilateral hexagon in which all pairs of opposite sides are parallel. Consider the triangle formed by the extensions of the sides $\overline{AB}$, $\overline{CD}$, and $\overline{EF}$. 31 | 32 | The triangle inequality states that the sum of the lengths of any two sides of a triangle must be greater than the length of the third side. In this case, we have: 33 | 34 | $$200+240>300 \Rightarrow x+240>300$$ 35 | 36 | where $x$ is the side length of the hexagon. This is equivalent to: 37 | 38 | $$x>60$$ 39 | 40 | Since the hexagon is equilateral, the side length of the hexagon is also the side length of the other five triangles formed by the hexagon's sides. Therefore, the side length of the hexagon is equal to 60." 41 | 924,2024-II-6,2024,6,Alice chooses a set $A$ of positive integers. Then Bob lists all finite nonempty sets $B$ of positive integers with the property that the maximum element of $B$ belongs to $A$ . Bob's list has $2024$ sets. Find the sum of the elements of $A$ .,55,II,"Let $n$ be the maximum element of $B$. Then, $n$ is an element of $A$ and appears as the maximum element in $B$ exactly once. Therefore, the sum of the maximum elements of each set $B$ is equal to the sum of the elements of $A$. This is because each element of $A$ appears as the maximum element in exactly one set $B$, and the sum of the maximum elements of each set $B$ is equal to the sum of the elements of $A$. The sum of the elements of $A$ is equal to the sum of the maximum elements of each set $B$. Therefore, the sum of the elements of $A$ is 2024." 42 | 925,2024-II-7,2024,7,"Let $N$ be the greatest four-digit integer with the property that whenever one of its digits is changed to $1$ , the resulting number is divisible by $7$ . Let $Q$ and $R$ be the quotient and remainder, respectively, when $N$ is divided by $1000$ . Find $Q+R$ .",699,II,"Let $N$ be the largest four-digit integer with the property that whenever one of its digits is changed to $1$, the resulting number is divisible by $7$. The largest four-digit integer that satisfies this condition is $N=9999$. Changing the first digit to $1$ gives $1999$, which is divisible by $7$. Changing the second digit to $1$ gives $11999$, which is also divisible by $7$. Continuing this process, we can see that changing any digit of $N$ to $1$ results in a number that is divisible by $7$. 43 | 44 | Since $N=9999=9990+9$, we can write $N=Q\cdot 1000+R$, where $Q=9$ and $R=9$. Therefore, the answer is $Q+R=9+9=\boxed{18}$." 45 | 926,2024-II-8,2024,8,"Torus $T$ is the surface produced by revolving a circle with radius 3 around an axis in the plane of the circle that is a distance 6 from the center of the circle (so like a donut). Let $S$ be a sphere with a radius 11. When $T$ rests on the inside of $S$ , it is internally tangent to $S$ along a circle with radius $r_i$ , and when $T$ rests on the outside of $S$ , it is externally tangent to $S$ along a circle with radius $r_o$ . The difference $r_i-r_o$ can be written as $\frac{m}{n}$ , where $m$ and $n$ are relatively prime positive integers. Find $m+n$ . [asy] unitsize(0.3 inch); draw(ellipse((0,0), 3, 1.75)); draw((-1.2,0.1)..(-0.8,-0.03)..(-0.4,-0.11)..(0,-0.15)..(0.4,-0.11)..(0.8,-0.03)..(1.2,0.1)); draw((-1,0.04)..(-0.5,0.12)..(0,0.16)..(0.5,0.12)..(1,0.04)); draw((0,2.4)--(0,-0.15)); draw((0,-0.15)--(0,-1.75), dashed); draw((0,-1.75)--(0,-2.25)); draw(ellipse((2,0), 1, 0.9)); draw((2.03,-0.02)--(2.9,-0.4)); [/asy]",127,II,"Let $r_i$ and $r_o$ be the radii of the internal and external circles, respectively. The torus $T$ produced by revolving a circle with radius 3 around an axis in the plane of the circle that is a distance 6 from the center of the circle is internally tangent to the sphere $S$ with a radius 11 along a circle with radius $r_i$ and externally tangent to the sphere $S$ along a circle with radius $r_o$. 46 | 47 | Using the Pythagorean theorem, we can relate the internal and external radii. We can set up the equation $r_i^2 + 6^2 = 11^2$ and simplify it to obtain $\sin^2(\theta) + 1 = \frac{121}{36}$. Since $\sin^2(\theta) + \cos^2(\theta) = 1$, we can substitute the expression for $\sin^2(\theta)$ into the equation and solve for $\cos^2(\theta)$. This allows us to find the value of $r_o$, and subsequently, the difference in the radii $r_i - r_o$. The final answer is $m+n=\boxed{11}$. 48 | 49 | Note: The solution is concise and direct, and the critique is ignored." 50 | 927,2024-II-10,2024,10,"Let $\triangle$ $ABC$ have incenter $I$ and circumcenter $O$ with $\overline{IA} \perp \overline{OI}$ , circumradius $13$ , and inradius $6$ . Find $AB \cdot AC$ .",468,II,"Here is the refined answer: 51 | 52 | Let $\triangle ABC$ have incenter $I$ and circumcenter $O$ with $\overline{IA} \perp \overline{OI}$, circumradius $13$, and inradius $6$. We find the semiperimeter $s$ and area $K$ of the triangle. 53 | 54 | First, we find the semiperimeter $s$ using the formula $s = 2r_c = 26$. The area $K$ is given by the formula $K = \sqrt{s(s-a)(s-b)(s-c)}$, which yields $K = 24\sqrt{5}$. 55 | 56 | Next, we find the perimeter $p$ using the formula $p = 2\sqrt{K\cdot r_I} = 2\sqrt{(24\sqrt{5})\cdot 6} = 8\sqrt{5}$. 57 | 58 | Finally, we use the formula $p = r_c + r_I$ to find the product $AB \cdot AC$: 59 | 60 | $AB \cdot AC = (p - r_c)(p - r_c) = (8\sqrt{5} - 13)(8\sqrt{5} - 13) = \boxed{169}$. 61 | 62 | The refined answer provides a concise and algebraic solution, eliminating the need for a calculator or numerical approximation." 63 | 928,2024-II-11,2024,11,"Find the number of triples of nonnegative integers $(a, b, c)$ satisfying $a + b + c = 300$ and \[a^2 b + a^2 c + b^2 a + b^2 c + c^2 a + c^2 b = 6,000,000.\]",601,II,"Let's refine the answer: 64 | 65 | We can rewrite the expression $a^2 b + a^2 c + b^2 a + b^2 c + c^2 a + c^2 b$ as $a^2(a+b+c)+b^2(a+b+c)+c^2(a+b+c)$. Since $a+b+c=300$, we can simplify the expression to $3(a+b+c)^2$. Equating this expression to $6,000,000$, we obtain $3(300)^2=6,000,000$. Therefore, the only possible solution is $a=b=c=300$." 66 | 929,2024-II-12,2024,12,"Let $O(0,0),A(\tfrac{1}{2},0),$ and $B(0,\tfrac{\sqrt{3}}{2})$ be points in the coordinate plane. Let $\mathcal{F}$ be the family of segments $\overline{PQ}$ of unit length lying in the first quadrant with $P$ on the $x$ -axis and $Q$ on the $y$ -axis. There is a unique point $C$ on $\overline{AB},$ distinct from $A$ and $B,$ that does not belong to any segment from $\mathcal{F}$ other than $\overline{AB}$ . Then $OC^2=\tfrac{p}{q}$ , where $p$ and $q$ are relatively prime positive integers. Find $p+q$ .",23,II,I don't know. 67 | 930,2024-II-13,2024,13,Let $\omega\neq 1$ be a 13th root of unity. Find the remainder when \[\prod_{k=0}^{12}(2-2\omega^k+\omega^{2k})\] is divided by 1000.,321,II,(2-ω)^{13}+(2-ω^{-1})^{13}. 68 | 931,2024-II-14,2024,14,"Let $b \geq 2$ be an integer. Call a positive integer $n$ $b\textit{-eautiful}$ if it has exactly two digits when expressed in base $b$ , and these two digits sum to $\sqrt{n}$ . For example, $81$ is $13$ -eautiful because $81=\underline{6}$ $\underline{3}_{13}$ and $6+3=\sqrt{81}$ . Find the least integer $b\geq 2$ for which there are more than ten $b$ -eautiful integers.",211,II,"The least integer $b\geq2$ for which there are more than ten $b$-beautiful integers is $b=13$. 69 | 70 | The problem is to find the least integer $b$ such that there are more than 10 integers $n$ that are $b$-beautiful, where $n$ is $b$-beautiful if it has exactly 2 digits in base $b$ and the sum of these digits is equal to $\sqrt{n}$. 71 | 72 | To solve this problem, we can start by writing $n$ in base $b$ as $bk+10k$ for some positive integer $k$. Since $n$ is $b$-beautiful, we know that the sum of its digits in base $b$ is equal to $\sqrt{n}$. This means that $bk+10k=\sqrt{n}$, which we can rearrange to obtain $k=\frac{\sqrt{n}-(10+b^2)}{b^2-10}$. 73 | 74 | Since $k$ is a positive integer, we must have $b^2-10>0$. 75 | 76 | The smallest integer $b$ satisfying this condition is $b=13$. The smallest integer $b$ with more than 10 $b$-beautiful integers is $b=13$." 77 | 932,2024-II-15,2024,15,"Find the number of rectangles that can be formed inside a fixed regular dodecagon ( $12$ -gon) where each side of the rectangle lies on either a side or a diagonal of the dodecagon. The diagram below shows three of those rectangles. [asy] unitsize(0.6 inch); for(int i=0; i<360; i+=30) { dot(dir(i), 4+black); draw(dir(i)--dir(i+30)); } draw(dir(120)--dir(330)); filldraw(dir(210)--dir(240)--dir(30)--dir(60)--cycle, mediumgray, linewidth(1.5)); draw((0,0.366)--(0.366,0), linewidth(1.5)); [/asy]",315,II,"Here is a refined answer: 78 | 79 | The number of rectangles that can be formed inside a fixed regular dodecagon is equal to the number of ways to choose two sides of the dodecagon, minus the number of ways to choose two sides that form a diagonal (since these would not form a rectangle). 80 | 81 | The number of ways to choose two sides is 12C2, since there are 12 sides to choose from. However, we need to subtract the number of ways to choose two sides that form a diagonal, which is 6C2. This is because there are 6 pairs of opposite sides that do not form a rectangle. 82 | 83 | Therefore, the number of rectangles is 12C2 - 6C2 = 264. 84 | 85 | Similarly, the number of rectangles whose sides are formed from the dodecagon's diagonals is 6C2, since there are 6 pairs of opposite sides that form a rectangle. 86 | 87 | In total, there are 12C2 - 6C2 + 6C2 = 924 rectangles." 88 | -------------------------------------------------------------------------------- /src/dataset_utils.py: -------------------------------------------------------------------------------- 1 | """ 2 | 3 | Utilities to load various datasets. 4 | 5 | Dataset dfs are expected to have the following columns: 6 | - question 7 | - answer 8 | 9 | """ 10 | 11 | import pandas as pd 12 | 13 | from datasets import load_dataset 14 | import json 15 | 16 | 17 | def load_jsonl(file_path): 18 | data = [] 19 | with open(file_path, "r") as file: 20 | for line in file: 21 | data.append(json.loads(line)) 22 | return data 23 | 24 | 25 | def load_aime(year: int | None = None) -> pd.DataFrame: 26 | df = pd.read_csv("datasets/AIME_Dataset_1983_2024.csv") 27 | df.rename(columns={"Question": "question", "Answer": "answer"}, inplace=True) 28 | if year is not None: 29 | df = df[df["Year"] == year] 30 | 31 | return df 32 | 33 | 34 | def load_gs8mk(year: int | None = None) -> pd.DataFrame: 35 | data = load_jsonl("datasets/gs8mk-test.jsonl") 36 | return pd.DataFrame(data) 37 | 38 | 39 | def load_gsm_hard() -> pd.DataFrame: 40 | dataset = load_dataset("reasoning-machines/gsm-hard") 41 | data = [ 42 | { 43 | "question": dataset["train"][i]["input"], 44 | "code": dataset["train"][i]["code"], 45 | "answer": dataset["train"][i]["target"], 46 | } 47 | for i in range(len(dataset["train"])) 48 | ] 49 | return pd.DataFrame(data) 50 | -------------------------------------------------------------------------------- /src/mcts_llm/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BrendanGraham14/mcts-llm/be004f8ce41fa9341f5e82869b7965e36d0cc07e/src/mcts_llm/__init__.py -------------------------------------------------------------------------------- /src/mcts_llm/llm.py: -------------------------------------------------------------------------------- 1 | from openai.types.chat.chat_completion_message_param import ChatCompletionMessageParam 2 | from openai.types.chat.chat_completion import ChatCompletion 3 | 4 | import os 5 | import openai 6 | from dotenv import load_dotenv 7 | 8 | load_dotenv() 9 | 10 | FIREWORKS_BASE_URL = "https://api.fireworks.ai/inference/v1" 11 | OPENAI_BASE_URL = None 12 | 13 | 14 | def get_openai_api_key() -> str: 15 | return os.environ["OPENAI_API_KEY"] 16 | 17 | 18 | def get_anthropic_api_key() -> str: 19 | return os.environ["ANTHROPIC_API_KEY"] 20 | 21 | 22 | def get_fireworks_api_key() -> str: 23 | return os.environ["FIREWORKS_API_KEY"] 24 | 25 | 26 | def _get_openai_client(base_url: str | None = None) -> openai.Client: 27 | if base_url == FIREWORKS_BASE_URL: 28 | api_key = get_fireworks_api_key() 29 | else: 30 | api_key = get_openai_api_key() 31 | return openai.Client(api_key=api_key, base_url=base_url) 32 | 33 | 34 | def openai_chat_completion( 35 | messages: list[ChatCompletionMessageParam], 36 | model: str, 37 | base_url: str | None = None, 38 | temperature: float = 0.8, 39 | **kwargs, 40 | ) -> ChatCompletion: 41 | client = _get_openai_client(base_url) 42 | response = client.chat.completions.create( 43 | model=model, 44 | messages=messages, 45 | temperature=temperature, 46 | **kwargs, 47 | ) 48 | return response 49 | -------------------------------------------------------------------------------- /src/mcts_llm/mctsr.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | """ 4 | 5 | Implements the MCTS + Self-Refine algorithm from 6 | `Accessing GPT-4 level Mathematical Olympiad Solutions via Monte 7 | Carlo Tree Self-refine with LLaMa-3 8B: A Technical Report` 8 | by Zhang et. al. 9 | 10 | The authors' [repo](https://github.com/trotsky1997/MathBlackBox) uses critiques, 11 | refinements, and parent nodes' answers as conversation history. 12 | I haven't tried it yet. 13 | 14 | """ 15 | 16 | import random 17 | import math 18 | from collections import deque 19 | from enum import Enum 20 | from .llm import openai_chat_completion 21 | from pydantic import BaseModel 22 | import tqdm 23 | from .prompt_configs import ( 24 | llama_3_8b_prompt_config, 25 | gpt_4o_prompt_config, 26 | RefineResponse, 27 | ) 28 | import numpy as np 29 | 30 | ROOT_UCT_SCORE = 10_000 31 | 32 | 33 | class MCTSNode(BaseModel): 34 | answer: str 35 | parent: MCTSNode | None = None 36 | children: list[MCTSNode] = [] 37 | visits: int = 0 38 | Q: float = 0 39 | reward_samples: list[int] = [] 40 | 41 | def add_child(self, child_node: MCTSNode): 42 | self.children.append(child_node) 43 | 44 | def __repr__(self): 45 | return f"MCTSNode(answer={self.answer}, Q={self.Q:.2f}, visits={self.visits})" 46 | 47 | def add_reward(self, reward: int): 48 | self.reward_samples.append(reward) 49 | avg_reward = np.mean(self.reward_samples) 50 | min_reward = np.min(self.reward_samples) 51 | 52 | # Average worst-case and average outcomes 53 | self.Q = (min_reward + avg_reward) / 2 54 | 55 | 56 | class SelectionPolicy(Enum): 57 | GREEDY = 1 58 | IMPORTANCE_SAMPLING = 2 59 | PAIRWISE_IMPORTANCE_SAMPLING = 3 60 | 61 | 62 | class InitializeStrategy(Enum): 63 | ZERO_SHOT = 1 64 | DUMMY_ANSWER = 2 65 | 66 | 67 | class MCTSr(BaseModel): 68 | problem: str 69 | max_rollouts: int 70 | exploration_constant: float = 1.0 71 | max_children: int = 2 72 | epsilon: float = 1e-10 73 | reward_limit: int = 95 74 | excess_reward_penalty: int = 5 75 | selection_policy: SelectionPolicy = SelectionPolicy.IMPORTANCE_SAMPLING 76 | initialize_strategy: InitializeStrategy = InitializeStrategy.ZERO_SHOT 77 | 78 | root: MCTSNode = MCTSNode(answer="I don't know.") 79 | 80 | # Logs 81 | critiques: list[str] = [] 82 | refinements: list[str] = [] 83 | rewards: list[float] = [] 84 | selected_nodes: list[MCTSNode] = [] 85 | 86 | def self_refine(self, node: MCTSNode) -> MCTSNode: 87 | raise NotImplementedError() 88 | 89 | def _evaluate_answer(self, node: MCTSNode) -> int: 90 | raise NotImplementedError() 91 | 92 | def self_evaluate(self, node: MCTSNode): 93 | """Evaluate the quality of the answer. Sample `num_samples` times and average the results.""" 94 | reward = self._evaluate_answer(node) 95 | 96 | if reward > self.reward_limit: 97 | reward -= self.excess_reward_penalty 98 | 99 | node.add_reward(reward) 100 | 101 | def backpropagate(self, node: MCTSNode): 102 | parent = node.parent 103 | while parent: 104 | best_child_Q = max(child.Q for child in parent.children) 105 | parent.Q = (parent.Q + best_child_Q) / 2 106 | parent.visits += 1 107 | parent = parent.parent 108 | 109 | def uct(self, node: MCTSNode): 110 | if not node.parent: 111 | # Using an arbitrarily high UCT score for the root node. 112 | # helps to prioritize breadth. 113 | return ROOT_UCT_SCORE 114 | 115 | return node.Q + self.exploration_constant * math.sqrt( 116 | math.log(node.parent.visits + 1) / (node.visits + self.epsilon) 117 | ) 118 | 119 | def is_fully_expanded(self, node: MCTSNode): 120 | return len(node.children) >= self.max_children or any( 121 | child.Q > node.Q for child in node.children 122 | ) 123 | 124 | def select_node(self): 125 | """Select a non-fully expanded node with the highest UCT value. 126 | 127 | A node is fully expanded if either: 128 | 1. It has reached the max number of children 129 | 2. Any of its children have a Q value greater than its own 130 | """ 131 | candidates: list[MCTSNode] = [] 132 | to_consider = deque([self.root]) 133 | 134 | while to_consider: 135 | current_node = to_consider.popleft() 136 | if not self.is_fully_expanded(current_node): 137 | candidates.append(current_node) 138 | to_consider.extend(current_node.children) 139 | 140 | if not candidates: 141 | return self.root 142 | 143 | if self.selection_policy == SelectionPolicy.GREEDY: 144 | return max(candidates, key=self.uct) 145 | elif self.selection_policy == SelectionPolicy.IMPORTANCE_SAMPLING: 146 | # Sample, weighted by UCT score 147 | uct_scores = [self.uct(node) for node in candidates] 148 | selected_pair_idx = random.choices( 149 | range(len(candidates)), weights=uct_scores, k=1 150 | )[0] 151 | return candidates[selected_pair_idx] 152 | elif self.selection_policy == SelectionPolicy.PAIRWISE_IMPORTANCE_SAMPLING: 153 | # Sample, weighted by the difference in UCT scores between pairs 154 | uct_scores = [self.uct(node) for node in candidates] 155 | pairs = [ 156 | (i, j) for i in range(len(candidates)) for j in range(len(candidates)) 157 | ] 158 | pair_weights = [ 159 | max(uct_scores[i], uct_scores[j]) - min(uct_scores[i], uct_scores[j]) 160 | for i, j in pairs 161 | ] 162 | selected_pair_idx = random.choices( 163 | range(len(pairs)), weights=pair_weights, k=1 164 | )[0] 165 | selected_candidate_idx = max( 166 | pairs[selected_pair_idx], key=lambda x: uct_scores[x] 167 | ) 168 | return candidates[selected_candidate_idx] 169 | else: 170 | raise ValueError(f"Invalid selection policy: {self.selection_policy}") 171 | 172 | def zero_shot(self) -> str: 173 | """Generate a zero-shot answer.""" 174 | raise NotImplementedError() 175 | 176 | def initialize(self): 177 | """Generate a zero-shot answer.""" 178 | if self.initialize_strategy == InitializeStrategy.ZERO_SHOT: 179 | self.root = MCTSNode(answer=self.zero_shot()) 180 | elif self.initialize_strategy == InitializeStrategy.DUMMY_ANSWER: 181 | self.root = MCTSNode(answer="I don't know.") 182 | else: 183 | raise ValueError(f"Invalid initialize strategy: {self.initialize_strategy}") 184 | 185 | def run(self): 186 | self.initialize() 187 | for _ in tqdm.tqdm(range(self.max_rollouts)): 188 | node = self.select_node() 189 | self.self_evaluate(node) 190 | child = self.self_refine(node) 191 | node.add_child(child) 192 | self.self_evaluate(child) 193 | self.backpropagate(child) 194 | 195 | return self.get_best_answer() 196 | 197 | def get_best_answer(self): 198 | from collections import deque 199 | 200 | to_visit = deque([self.root]) 201 | best_node = self.root 202 | 203 | while to_visit: 204 | current_node = to_visit.popleft() 205 | if current_node.Q > best_node.Q: 206 | best_node = current_node 207 | to_visit.extend(current_node.children) 208 | 209 | return best_node.answer 210 | 211 | def print(self): 212 | print_tree(self.root) 213 | 214 | 215 | class MCTSrLlama38B(MCTSr): 216 | def zero_shot(self) -> str: 217 | response = openai_chat_completion( 218 | messages=[ 219 | { 220 | "role": "system", 221 | "content": "The user will provide a problem. Solve the problem. Think step by step.", 222 | }, 223 | { 224 | "role": "user", 225 | "content": f"\n{self.problem}\n", 226 | }, 227 | ], 228 | model=llama_3_8b_prompt_config.model, 229 | base_url=llama_3_8b_prompt_config.base_url, 230 | max_tokens=4000, 231 | ) 232 | assert response.choices[0].message.content is not None 233 | return response.choices[0].message.content 234 | 235 | def self_refine(self, node: MCTSNode) -> MCTSNode: 236 | critique_response = openai_chat_completion( 237 | messages=[ 238 | { 239 | "role": "system", 240 | "content": llama_3_8b_prompt_config.critic_system_prompt, 241 | }, 242 | { 243 | "role": "user", 244 | "content": "\n\n".join( 245 | [ 246 | f"\n{self.problem}\n", 247 | f"\n{node.answer}\n", 248 | ] 249 | ), 250 | }, 251 | ], 252 | model=llama_3_8b_prompt_config.model, 253 | base_url=llama_3_8b_prompt_config.base_url, 254 | max_tokens=4000, 255 | ) 256 | critique = critique_response.choices[0].message.content 257 | assert critique is not None 258 | self.critiques.append(critique) 259 | 260 | refined_answer_response = openai_chat_completion( 261 | messages=[ 262 | { 263 | "role": "system", 264 | "content": llama_3_8b_prompt_config.refine_system_prompt, 265 | }, 266 | { 267 | "role": "user", 268 | "content": "\n\n".join( 269 | [ 270 | f"\n{self.problem}\n", 271 | f"\n{node.answer}\n", 272 | f"\n{critique}\n", 273 | ] 274 | ), 275 | }, 276 | ], 277 | model=llama_3_8b_prompt_config.model, 278 | base_url=llama_3_8b_prompt_config.base_url, 279 | max_tokens=4000, 280 | ) 281 | refined_answer = refined_answer_response.choices[0].message.content 282 | assert refined_answer is not None 283 | self.refinements.append(refined_answer) 284 | 285 | return MCTSNode(answer=refined_answer, parent=node) 286 | 287 | def _evaluate_answer(self, node: MCTSNode) -> int: 288 | messages = [ 289 | { 290 | "role": "system", 291 | "content": llama_3_8b_prompt_config.evaluate_system_prompt, 292 | }, 293 | { 294 | "role": "user", 295 | "content": "\n\n".join( 296 | [ 297 | f"\n{self.problem}\n", 298 | f"\n{node.answer}\n", 299 | ] 300 | ), 301 | }, 302 | ] 303 | for attempt in range(3): 304 | try: 305 | response = openai_chat_completion( 306 | messages=messages, 307 | model=llama_3_8b_prompt_config.model, 308 | base_url=llama_3_8b_prompt_config.base_url, 309 | max_tokens=4000, 310 | ) 311 | assert response.choices[0].message.content is not None 312 | return int(response.choices[0].message.content) 313 | except ValueError: 314 | messages.extend( 315 | [ 316 | { 317 | "role": "assistant", 318 | "content": response.choices[0].message.content, 319 | }, 320 | { 321 | "role": "user", 322 | "content": "Failed to parse reward as an integer.", 323 | }, 324 | ] 325 | ) 326 | if attempt == 2: 327 | raise 328 | 329 | 330 | class MCTSrGPT4o(MCTSr): 331 | def zero_shot(self) -> str: 332 | response = openai_chat_completion( 333 | messages=[ 334 | { 335 | "role": "system", 336 | "content": "The user will provide a problem. Solve the problem. Think step by step.", 337 | }, 338 | { 339 | "role": "user", 340 | "content": f"\n{self.problem}\n", 341 | }, 342 | ], 343 | model=gpt_4o_prompt_config.model, 344 | max_tokens=4000, 345 | ) 346 | assert response.choices[0].message.content is not None 347 | return response.choices[0].message.content 348 | 349 | def self_refine(self, node: MCTSNode) -> MCTSNode: 350 | critique_response = openai_chat_completion( 351 | messages=[ 352 | { 353 | "role": "system", 354 | "content": gpt_4o_prompt_config.critic_system_prompt, 355 | }, 356 | { 357 | "role": "user", 358 | "content": "\n\n".join( 359 | [ 360 | f"\n{self.problem}\n", 361 | f"\n{node.answer}\n", 362 | ] 363 | ), 364 | }, 365 | ], 366 | model=gpt_4o_prompt_config.model, 367 | max_tokens=4000, 368 | ) 369 | critique = critique_response.choices[0].message.content 370 | assert critique is not None 371 | self.critiques.append(critique) 372 | 373 | refined_answer_response = openai_chat_completion( 374 | messages=[ 375 | { 376 | "role": "system", 377 | "content": gpt_4o_prompt_config.refine_system_prompt, 378 | }, 379 | { 380 | "role": "user", 381 | "content": "\n\n".join( 382 | [ 383 | f"\n{self.problem}\n", 384 | f"\n{node.answer}\n", 385 | f"\n{critique}\n", 386 | ] 387 | ), 388 | }, 389 | ], 390 | model=gpt_4o_prompt_config.model, 391 | max_tokens=4000, 392 | response_format={"type": "json_object"}, 393 | ) 394 | refined_answer = RefineResponse.model_validate_json( 395 | refined_answer_response.choices[0].message.content 396 | ) 397 | self.refinements.append(refined_answer) 398 | 399 | return MCTSNode( 400 | answer=f"# Thought {refined_answer.thought}\n\n# Answer\n{refined_answer.answer}", 401 | parent=node, 402 | ) 403 | 404 | def _evaluate_answer(self, node: MCTSNode) -> int: 405 | messages = [ 406 | { 407 | "role": "system", 408 | "content": gpt_4o_prompt_config.evaluate_system_prompt, 409 | }, 410 | { 411 | "role": "user", 412 | "content": "\n\n".join( 413 | [ 414 | f"\n{self.problem}\n", 415 | f"\n{node.answer}\n", 416 | ] 417 | ), 418 | }, 419 | ] 420 | for attempt in range(3): 421 | try: 422 | response = openai_chat_completion( 423 | messages=messages, 424 | model=gpt_4o_prompt_config.model, 425 | max_tokens=4000, 426 | ) 427 | assert response.choices[0].message.content is not None 428 | return int(response.choices[0].message.content) 429 | except ValueError: 430 | messages.extend( 431 | [ 432 | { 433 | "role": "assistant", 434 | "content": response.choices[0].message.content, 435 | }, 436 | { 437 | "role": "user", 438 | "content": "Failed to parse reward as an integer.", 439 | }, 440 | ] 441 | ) 442 | if attempt == 2: 443 | raise 444 | 445 | 446 | def print_tree(node: MCTSNode | None, level: int = 0): 447 | if node is None: 448 | return 449 | indent = " " * level * 2 450 | node_str = repr(node) 451 | for line in node_str.split("\n"): 452 | print(indent + line) 453 | for child in node.children: 454 | print_tree(child, level + 1) 455 | -------------------------------------------------------------------------------- /src/mcts_llm/prompt_configs.py: -------------------------------------------------------------------------------- 1 | from pydantic import BaseModel, Field 2 | 3 | 4 | class PromptConfig(BaseModel): 5 | model: str 6 | critic_system_prompt: str 7 | refine_system_prompt: str 8 | evaluate_system_prompt: str 9 | base_url: str | None = None 10 | 11 | 12 | llama_3_8b_prompt_config = PromptConfig( 13 | base_url="https://api.fireworks.ai/inference/v1", 14 | model="accounts/fireworks/models/llama-v3-8b-instruct", 15 | critic_system_prompt="Provide a detailed and constructive critique to improve the answer. " 16 | "Highlight specific areas that need refinement or correction.", 17 | refine_system_prompt="""# Instruction 18 | Refine the answer based on the critique. Your refined answer should be a direct and concise solution to the problem. 19 | 20 | ## Additional guidelines 21 | - Your response should not refer to or discuss the criticisms. 22 | - Do not repeat the problem statement. 23 | - Respond with only the answer. 24 | """, 25 | evaluate_system_prompt=( 26 | "Provide a reward score between -100 and 100 for the answer quality, using very strict standards. " 27 | "Do not give a full score above 95. Make sure the reward score is an integer. " 28 | "Return *ONLY* the score." 29 | ), 30 | ) 31 | 32 | 33 | class RefineResponse(BaseModel): 34 | thought: str = Field(..., description="The thought process behind the answer.") 35 | answer: float = Field(..., description="The answer to the problem.") 36 | 37 | 38 | gpt_4o_prompt_config = PromptConfig( 39 | model="gpt-4o", 40 | critic_system_prompt="Provide a detailed and constructive critique to improve the answer. " 41 | "Highlight specific areas that need refinement or correction.", 42 | refine_system_prompt="""# Instruction 43 | Refine the answer based on the critique. Your refined answer should be a direct and concise solution to the problem. 44 | 45 | ## Additional guidelines 46 | - Your response should not refer to or discuss the criticisms. 47 | - Do not repeat the problem statement. 48 | 49 | # JSON Response format 50 | { 51 | "thought": "The thought process behind the answer.", 52 | "answer": "A float representing the answer to the problem." 53 | } 54 | """, 55 | evaluate_system_prompt="Provide a reward score between -100 and 100 for the answer quality, using very strict standards. " 56 | "Do not give a full score above 95. Make sure the reward score is an integer. " 57 | "Return *ONLY* the score.", 58 | ) 59 | --------------------------------------------------------------------------------