diff --git a/.github/workflows/reusable_notebook.yml b/.github/workflows/reusable_notebook.yml index 6d9f045b8..6380466b7 100644 --- a/.github/workflows/reusable_notebook.yml +++ b/.github/workflows/reusable_notebook.yml @@ -51,6 +51,7 @@ jobs: env: ENV: 'dev' LLM_API_KEY: ${{ secrets.OPENAI_API_KEY }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} GRAPHISTRY_USERNAME: ${{ secrets.GRAPHISTRY_USERNAME }} GRAPHISTRY_PASSWORD: ${{ secrets.GRAPHISTRY_PASSWORD }} run: | diff --git a/.github/workflows/test_llama_index_cognee_integration_notebook.yml b/.github/workflows/test_llama_index_cognee_integration_notebook.yml new file mode 100644 index 000000000..aacc31eb5 --- /dev/null +++ b/.github/workflows/test_llama_index_cognee_integration_notebook.yml @@ -0,0 +1,20 @@ +name: test | llama index cognee integration notebook + +on: + workflow_dispatch: + pull_request: + types: [labeled, synchronize] + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + run_notebook_test: + uses: ./.github/workflows/reusable_notebook.yml + with: + notebook-location: notebooks/llama_index_cognee_integration.ipynb + secrets: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + GRAPHISTRY_USERNAME: ${{ secrets.GRAPHISTRY_USERNAME }} + GRAPHISTRY_PASSWORD: ${{ secrets.GRAPHISTRY_PASSWORD }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 42f12ea51..96bfe6d32 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,7 +10,7 @@ repos: - id: check-added-large-files - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.8.3 + rev: v0.9.0 hooks: # Run the linter. - id: ruff diff --git a/README.md b/README.md index f35829783..8ff2d71d5 100644 --- a/README.md +++ b/README.md @@ -101,15 +101,9 @@ cognee.config.set_graphistry_config({ }) ``` -(Optional) To run the UI, go to cognee-frontend directory and run: -``` -npm run dev -``` -or run everything in a docker container: -``` -docker-compose up -``` -Then navigate to localhost:3000 +(Optional) To run the with an UI, go to cognee-mcp directory and follow the instructions. +You will be able to use cognee as mcp tool and create graphs and query them. + If you want to use Cognee with PostgreSQL, make sure to set the following values in the .env file: ``` diff --git a/cognee-mcp/pyproject.toml b/cognee-mcp/pyproject.toml index 81f6c7236..aaef31c41 100644 --- a/cognee-mcp/pyproject.toml +++ b/cognee-mcp/pyproject.toml @@ -3,10 +3,10 @@ name = "cognee-mcp" version = "0.1.0" description = "A MCP server project" readme = "README.md" -requires-python = ">=3.11" +requires-python = ">=3.10" dependencies = [ "mcp>=1.1.1", - "openai==1.52.0", + "openai==1.59.4", "pydantic==2.8.2", "python-dotenv==1.0.1", "fastapi>=0.109.2,<0.110.0", @@ -21,18 +21,18 @@ dependencies = [ "boto3>=1.26.125,<2.0.0", "botocore>=1.35.54,<2.0.0", "gunicorn>=20.1.0,<21.0.0", - "sqlalchemy==2.0.35", - "instructor==1.5.2", + "sqlalchemy==2.0.36", + "instructor==1.7.2", "networkx>=3.2.1,<4.0.0", "aiosqlite>=0.20.0,<0.21.0", - "pandas==2.0.3", + "pandas==2.2.3", "filetype>=1.2.0,<2.0.0", "nltk>=3.8.1,<4.0.0", "dlt[sqlalchemy]>=1.4.1,<2.0.0", "aiofiles>=23.2.1,<24.0.0", "qdrant-client>=1.9.0,<2.0.0", # Optional "graphistry>=0.33.5,<0.34.0", - "tenacity>=8.4.1,<9.0.0", + "tenacity>=9.0.0", "weaviate-client==4.6.7", # Optional "scikit-learn>=1.5.0,<2.0.0", "pypdf>=4.1.0,<5.0.0", @@ -44,8 +44,8 @@ dependencies = [ "langsmith==0.1.139", # Optional "langdetect==1.0.9", "posthog>=3.5.0,<4.0.0", # Optional - "lancedb==0.15.0", - "litellm==1.49.1", + "lancedb==0.16.0", + "litellm==1.57.2", "groq==0.8.0", # Optional "langfuse>=2.32.0,<3.0.0", # Optional "pydantic-settings>=2.2.1,<3.0.0", @@ -56,7 +56,7 @@ dependencies = [ "asyncpg==0.30.0", # Optional "pgvector>=0.3.5,<0.4.0", # Optional "psycopg2>=2.9.10,<3.0.0", # Optional - "llama-index-core>=0.11.22,<0.12.0", # Optional + "llama-index-core>=0.12.0", # Optional "deepeval>=2.0.1,<3.0.0", # Optional "transformers>=4.46.3,<5.0.0", "pymilvus>=2.5.0,<3.0.0", # Optional diff --git a/cognee-mcp/uv.lock b/cognee-mcp/uv.lock index b748667e1..46f6c198b 100644 --- a/cognee-mcp/uv.lock +++ b/cognee-mcp/uv.lock @@ -1,7 +1,8 @@ version = 1 -requires-python = ">=3.11" +requires-python = ">=3.10" resolution-markers = [ - "python_full_version < '3.12'", + "python_full_version < '3.11'", + "python_full_version == '3.11.*'", "python_full_version >= '3.12' and python_full_version < '3.12.4'", "python_full_version >= '3.12.4' and python_full_version < '3.13'", "python_full_version >= '3.13'", @@ -32,6 +33,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohappyeyeballs" }, { name = "aiosignal" }, + { name = "async-timeout", marker = "python_full_version < '3.11'" }, { name = "attrs" }, { name = "frozenlist" }, { name = "multidict" }, @@ -39,6 +41,21 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/17/7e/16e57e6cf20eb62481a2f9ce8674328407187950ccc602ad07c685279141/aiohttp-3.10.10.tar.gz", hash = "sha256:0631dd7c9f0822cc61c88586ca76d5b5ada26538097d0f1df510b082bad3411a", size = 7542993 } wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/dd/3d40c0e67e79c5c42671e3e268742f1ff96c6573ca43823563d01abd9475/aiohttp-3.10.10-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:be7443669ae9c016b71f402e43208e13ddf00912f47f623ee5994e12fc7d4b3f", size = 586969 }, + { url = "https://files.pythonhosted.org/packages/75/64/8de41b5555e5b43ef6d4ed1261891d33fe45ecc6cb62875bfafb90b9ab93/aiohttp-3.10.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7b06b7843929e41a94ea09eb1ce3927865387e3e23ebe108e0d0d09b08d25be9", size = 399367 }, + { url = "https://files.pythonhosted.org/packages/96/36/27bd62ea7ce43906d1443a73691823fc82ffb8fa03276b0e2f7e1037c286/aiohttp-3.10.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:333cf6cf8e65f6a1e06e9eb3e643a0c515bb850d470902274239fea02033e9a8", size = 390720 }, + { url = "https://files.pythonhosted.org/packages/e8/4d/d516b050d811ce0dd26325c383013c104ffa8b58bd361b82e52833f68e78/aiohttp-3.10.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:274cfa632350225ce3fdeb318c23b4a10ec25c0e2c880eff951a3842cf358ac1", size = 1228820 }, + { url = "https://files.pythonhosted.org/packages/53/94/964d9327a3e336d89aad52260836e4ec87fdfa1207176550fdf384eaffe7/aiohttp-3.10.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9e5e4a85bdb56d224f412d9c98ae4cbd032cc4f3161818f692cd81766eee65a", size = 1264616 }, + { url = "https://files.pythonhosted.org/packages/0c/20/70ce17764b685ca8f5bf4d568881b4e1f1f4ea5e8170f512fdb1a33859d2/aiohttp-3.10.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b606353da03edcc71130b52388d25f9a30a126e04caef1fd637e31683033abd", size = 1298402 }, + { url = "https://files.pythonhosted.org/packages/d1/d1/5248225ccc687f498d06c3bca5af2647a361c3687a85eb3aedcc247ee1aa/aiohttp-3.10.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab5a5a0c7a7991d90446a198689c0535be89bbd6b410a1f9a66688f0880ec026", size = 1222205 }, + { url = "https://files.pythonhosted.org/packages/f2/a3/9296b27cc5d4feadf970a14d0694902a49a985f3fae71b8322a5f77b0baa/aiohttp-3.10.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:578a4b875af3e0daaf1ac6fa983d93e0bbfec3ead753b6d6f33d467100cdc67b", size = 1193804 }, + { url = "https://files.pythonhosted.org/packages/d9/07/f3760160feb12ac51a6168a6da251a4a8f2a70733d49e6ceb9b3e6ee2f03/aiohttp-3.10.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8105fd8a890df77b76dd3054cddf01a879fc13e8af576805d667e0fa0224c35d", size = 1193544 }, + { url = "https://files.pythonhosted.org/packages/7e/4c/93a70f9a4ba1c30183a6dd68bfa79cddbf9a674f162f9c62e823a74a5515/aiohttp-3.10.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3bcd391d083f636c06a68715e69467963d1f9600f85ef556ea82e9ef25f043f7", size = 1193047 }, + { url = "https://files.pythonhosted.org/packages/ff/a3/36a1e23ff00c7a0cd696c5a28db05db25dc42bfc78c508bd78623ff62a4a/aiohttp-3.10.10-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fbc6264158392bad9df19537e872d476f7c57adf718944cc1e4495cbabf38e2a", size = 1247201 }, + { url = "https://files.pythonhosted.org/packages/55/ae/95399848557b98bb2c402d640b2276ce3a542b94dba202de5a5a1fe29abe/aiohttp-3.10.10-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e48d5021a84d341bcaf95c8460b152cfbad770d28e5fe14a768988c461b821bc", size = 1264102 }, + { url = "https://files.pythonhosted.org/packages/38/f5/02e5c72c1b60d7cceb30b982679a26167e84ac029fd35a93dd4da52c50a3/aiohttp-3.10.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2609e9ab08474702cc67b7702dbb8a80e392c54613ebe80db7e8dbdb79837c68", size = 1215760 }, + { url = "https://files.pythonhosted.org/packages/30/17/1463840bad10d02d0439068f37ce5af0b383884b0d5838f46fb027e233bf/aiohttp-3.10.10-cp310-cp310-win32.whl", hash = "sha256:84afcdea18eda514c25bc68b9af2a2b1adea7c08899175a51fe7c4fb6d551257", size = 362678 }, + { url = "https://files.pythonhosted.org/packages/dd/01/a0ef707d93e867a43abbffee3a2cdf30559910750b9176b891628c7ad074/aiohttp-3.10.10-cp310-cp310-win_amd64.whl", hash = "sha256:9c72109213eb9d3874f7ac8c0c5fa90e072d678e117d9061c06e30c85b4cf0e6", size = 381097 }, { url = "https://files.pythonhosted.org/packages/72/31/3c351d17596194e5a38ef169a4da76458952b2497b4b54645b9d483cbbb0/aiohttp-3.10.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c30a0eafc89d28e7f959281b58198a9fa5e99405f716c0289b7892ca345fe45f", size = 586501 }, { url = "https://files.pythonhosted.org/packages/a4/a8/a559d09eb08478cdead6b7ce05b0c4a133ba27fcdfa91e05d2e62867300d/aiohttp-3.10.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:258c5dd01afc10015866114e210fb7365f0d02d9d059c3c3415382ab633fcbcb", size = 398993 }, { url = "https://files.pythonhosted.org/packages/c5/47/7736d4174613feef61d25332c3bd1a4f8ff5591fbd7331988238a7299485/aiohttp-3.10.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:15ecd889a709b0080f02721255b3f80bb261c2293d3c748151274dfea93ac871", size = 390647 }, @@ -157,6 +174,7 @@ name = "anyio" version = "4.7.0" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "sniffio" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, @@ -203,6 +221,9 @@ wheels = [ name = "astroid" version = "3.3.6" source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] sdist = { url = "https://files.pythonhosted.org/packages/ca/40/e028137cb19ed577001c76b91c5c50fee5a9c85099f45820b69385574ac5/astroid-3.3.6.tar.gz", hash = "sha256:6aaea045f938c735ead292204afdb977a36e989522b7833ef6fea94de743f442", size = 397452 } wheels = [ { url = "https://files.pythonhosted.org/packages/0c/d2/82c8ccef22ea873a2b0da9636e47d45137eeeb2fb9320c5dbbdd3627bab0/astroid-3.3.6-py3-none-any.whl", hash = "sha256:db676dc4f3ae6bfe31cda227dc60e03438378d7a896aec57422c95634e8d722f", size = 274644 }, @@ -210,19 +231,30 @@ wheels = [ [[package]] name = "async-timeout" -version = "5.0.1" +version = "4.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274 } +sdist = { url = "https://files.pythonhosted.org/packages/87/d6/21b30a550dafea84b1b8eee21b5e23fa16d010ae006011221f33dcd8d7f8/async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f", size = 8345 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233 }, + { url = "https://files.pythonhosted.org/packages/a7/fa/e01228c2938de91d47b307831c62ab9e4001e747789d0b05baf779a6488c/async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028", size = 5721 }, ] [[package]] name = "asyncpg" version = "0.30.0" source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "async-timeout", marker = "python_full_version < '3.11'" }, +] sdist = { url = "https://files.pythonhosted.org/packages/2f/4c/7c991e080e106d854809030d8584e15b2e996e26f16aee6d757e387bc17d/asyncpg-0.30.0.tar.gz", hash = "sha256:c551e9928ab6707602f44811817f82ba3c446e018bfe1d3abecc8ba5f3eac851", size = 957746 } wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/07/1650a8c30e3a5c625478fa8aafd89a8dd7d85999bf7169b16f54973ebf2c/asyncpg-0.30.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bfb4dd5ae0699bad2b233672c8fc5ccbd9ad24b89afded02341786887e37927e", size = 673143 }, + { url = "https://files.pythonhosted.org/packages/a0/9a/568ff9b590d0954553c56806766914c149609b828c426c5118d4869111d3/asyncpg-0.30.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc1f62c792752a49f88b7e6f774c26077091b44caceb1983509edc18a2222ec0", size = 645035 }, + { url = "https://files.pythonhosted.org/packages/de/11/6f2fa6c902f341ca10403743701ea952bca896fc5b07cc1f4705d2bb0593/asyncpg-0.30.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3152fef2e265c9c24eec4ee3d22b4f4d2703d30614b0b6753e9ed4115c8a146f", size = 2912384 }, + { url = "https://files.pythonhosted.org/packages/83/83/44bd393919c504ffe4a82d0aed8ea0e55eb1571a1dea6a4922b723f0a03b/asyncpg-0.30.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7255812ac85099a0e1ffb81b10dc477b9973345793776b128a23e60148dd1af", size = 2947526 }, + { url = "https://files.pythonhosted.org/packages/08/85/e23dd3a2b55536eb0ded80c457b0693352262dc70426ef4d4a6fc994fa51/asyncpg-0.30.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:578445f09f45d1ad7abddbff2a3c7f7c291738fdae0abffbeb737d3fc3ab8b75", size = 2895390 }, + { url = "https://files.pythonhosted.org/packages/9b/26/fa96c8f4877d47dc6c1864fef5500b446522365da3d3d0ee89a5cce71a3f/asyncpg-0.30.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c42f6bb65a277ce4d93f3fba46b91a265631c8df7250592dd4f11f8b0152150f", size = 3015630 }, + { url = "https://files.pythonhosted.org/packages/34/00/814514eb9287614188a5179a8b6e588a3611ca47d41937af0f3a844b1b4b/asyncpg-0.30.0-cp310-cp310-win32.whl", hash = "sha256:aa403147d3e07a267ada2ae34dfc9324e67ccc4cdca35261c8c22792ba2b10cf", size = 568760 }, + { url = "https://files.pythonhosted.org/packages/f0/28/869a7a279400f8b06dd237266fdd7220bc5f7c975348fea5d1e6909588e9/asyncpg-0.30.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb622c94db4e13137c4c7f98834185049cc50ee01d8f657ef898b6407c7b9c50", size = 625764 }, { url = "https://files.pythonhosted.org/packages/4c/0e/f5d708add0d0b97446c402db7e8dd4c4183c13edaabe8a8500b411e7b495/asyncpg-0.30.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5e0511ad3dec5f6b4f7a9e063591d407eee66b88c14e2ea636f187da1dcfff6a", size = 674506 }, { url = "https://files.pythonhosted.org/packages/6a/a0/67ec9a75cb24a1d99f97b8437c8d56da40e6f6bd23b04e2f4ea5d5ad82ac/asyncpg-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:915aeb9f79316b43c3207363af12d0e6fd10776641a7de8a01212afd95bdf0ed", size = 645922 }, { url = "https://files.pythonhosted.org/packages/5c/d9/a7584f24174bd86ff1053b14bb841f9e714380c672f61c906eb01d8ec433/asyncpg-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c198a00cce9506fcd0bf219a799f38ac7a237745e1d27f0e1f66d3707c84a5a", size = 3079565 }, @@ -307,6 +339,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5d/ab/a6c0da5c2cf86600f74402a72b06dfe365e1a1d30783b1bbeec460fd57d1/bcrypt-4.2.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:807261df60a8b1ccd13e6599c779014a362ae4e795f5c59747f60208daddd96d", size = 339836 }, { url = "https://files.pythonhosted.org/packages/b4/b4/e75b6e9a72a030a04362034022ebe317c5b735d04db6ad79237101ae4a5c/bcrypt-4.2.1-cp39-abi3-win32.whl", hash = "sha256:b588af02b89d9fad33e5f98f7838bf590d6d692df7153647724a7f20c186f6bf", size = 160911 }, { url = "https://files.pythonhosted.org/packages/76/b9/d51d34e6cd6d887adddb28a8680a1d34235cc45b9d6e238ce39b98199ca0/bcrypt-4.2.1-cp39-abi3-win_amd64.whl", hash = "sha256:e84e0e6f8e40a242b11bce56c313edc2be121cec3e0ec2d76fce01f6af33c07c", size = 153078 }, + { url = "https://files.pythonhosted.org/packages/4e/6e/7193067042de23af3d71882f898c8c0bd2b18e6ee44a4f76e395dfadb5a8/bcrypt-4.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:76132c176a6d9953cdc83c296aeaed65e1a708485fd55abf163e0d9f8f16ce0e", size = 270069 }, + { url = "https://files.pythonhosted.org/packages/3b/05/2546085c6dc07a45627460a39e6291b82382b434fff2bd0167ff3bc31eb1/bcrypt-4.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e158009a54c4c8bc91d5e0da80920d048f918c61a581f0a63e4e93bb556d362f", size = 274652 }, ] [[package]] @@ -369,43 +403,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b4/1f/a36fc867c6aef0d346e9b6b2bfe33be458c36f770f7ad8e15acc3474999d/botocore-1.35.84-py3-none-any.whl", hash = "sha256:b4dc2ac7f54ba959429e1debbd6c7c2fb2349baa1cd63803f0682f0773dbd077", size = 13287873 }, ] -[[package]] -name = "cachetools" -version = "5.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/38/a0f315319737ecf45b4319a8cd1f3a908e29d9277b46942263292115eee7/cachetools-5.5.0.tar.gz", hash = "sha256:2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a", size = 27661 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/07/14f8ad37f2d12a5ce41206c21820d8cb6561b728e51fad4530dff0552a67/cachetools-5.5.0-py3-none-any.whl", hash = "sha256:02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292", size = 9524 }, -] - -[[package]] -name = "cairocffi" -version = "1.7.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611 }, -] - -[[package]] -name = "cairosvg" -version = "2.7.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cairocffi" }, - { name = "cssselect2" }, - { name = "defusedxml" }, - { name = "pillow" }, - { name = "tinycss2" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d5/e6/ec5900b724e3c44af7f6f51f719919137284e5da4aabe96508baec8a1b40/CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0", size = 8399085 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/a5/1866b42151f50453f1a0d28fc4c39f5be5f412a2e914f33449c42daafdf1/CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b", size = 43235 }, -] - [[package]] name = "certifi" version = "2024.12.14" @@ -424,6 +421,18 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } wheels = [ + { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191 }, + { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592 }, + { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024 }, + { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188 }, + { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571 }, + { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687 }, + { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211 }, + { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325 }, + { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784 }, + { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564 }, + { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804 }, + { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299 }, { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264 }, { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651 }, { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 }, @@ -484,6 +493,21 @@ version = "3.4.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", size = 106620 } wheels = [ + { url = "https://files.pythonhosted.org/packages/69/8b/825cc84cf13a28bfbcba7c416ec22bf85a9584971be15b21dd8300c65b7f/charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6", size = 196363 }, + { url = "https://files.pythonhosted.org/packages/23/81/d7eef6a99e42c77f444fdd7bc894b0ceca6c3a95c51239e74a722039521c/charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b", size = 125639 }, + { url = "https://files.pythonhosted.org/packages/21/67/b4564d81f48042f520c948abac7079356e94b30cb8ffb22e747532cf469d/charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99", size = 120451 }, + { url = "https://files.pythonhosted.org/packages/c2/72/12a7f0943dd71fb5b4e7b55c41327ac0a1663046a868ee4d0d8e9c369b85/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca", size = 140041 }, + { url = "https://files.pythonhosted.org/packages/67/56/fa28c2c3e31217c4c52158537a2cf5d98a6c1e89d31faf476c89391cd16b/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d", size = 150333 }, + { url = "https://files.pythonhosted.org/packages/f9/d2/466a9be1f32d89eb1554cf84073a5ed9262047acee1ab39cbaefc19635d2/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7", size = 142921 }, + { url = "https://files.pythonhosted.org/packages/f8/01/344ec40cf5d85c1da3c1f57566c59e0c9b56bcc5566c08804a95a6cc8257/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3", size = 144785 }, + { url = "https://files.pythonhosted.org/packages/73/8b/2102692cb6d7e9f03b9a33a710e0164cadfce312872e3efc7cfe22ed26b4/charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907", size = 146631 }, + { url = "https://files.pythonhosted.org/packages/d8/96/cc2c1b5d994119ce9f088a9a0c3ebd489d360a2eb058e2c8049f27092847/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b", size = 140867 }, + { url = "https://files.pythonhosted.org/packages/c9/27/cde291783715b8ec30a61c810d0120411844bc4c23b50189b81188b273db/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912", size = 149273 }, + { url = "https://files.pythonhosted.org/packages/3a/a4/8633b0fc1a2d1834d5393dafecce4a1cc56727bfd82b4dc18fc92f0d3cc3/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95", size = 152437 }, + { url = "https://files.pythonhosted.org/packages/64/ea/69af161062166b5975ccbb0961fd2384853190c70786f288684490913bf5/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e", size = 150087 }, + { url = "https://files.pythonhosted.org/packages/3b/fd/e60a9d9fd967f4ad5a92810138192f825d77b4fa2a557990fd575a47695b/charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe", size = 145142 }, + { url = "https://files.pythonhosted.org/packages/6d/02/8cb0988a1e49ac9ce2eed1e07b77ff118f2923e9ebd0ede41ba85f2dcb04/charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc", size = 94701 }, + { url = "https://files.pythonhosted.org/packages/d6/20/f1d4670a8a723c46be695dff449d86d6092916f9e99c53051954ee33a1bc/charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749", size = 102191 }, { url = "https://files.pythonhosted.org/packages/9c/61/73589dcc7a719582bf56aae309b6103d2762b526bffe189d635a7fcfd998/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c", size = 193339 }, { url = "https://files.pythonhosted.org/packages/77/d5/8c982d58144de49f59571f940e329ad6e8615e1e82ef84584c5eeb5e1d72/charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944", size = 124366 }, { url = "https://files.pythonhosted.org/packages/bf/19/411a64f01ee971bed3231111b69eb56f9331a769072de479eae7de52296d/charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee", size = 118874 }, @@ -537,7 +561,7 @@ name = "click" version = "8.1.7" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "colorama", marker = "platform_system == 'Windows'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 } wheels = [ @@ -546,7 +570,7 @@ wheels = [ [[package]] name = "cognee" -version = "0.1.20" +version = "0.1.21" source = { directory = "../" } dependencies = [ { name = "aiofiles" }, @@ -556,7 +580,6 @@ dependencies = [ { name = "anthropic" }, { name = "bokeh" }, { name = "boto3" }, - { name = "cairosvg" }, { name = "datasets" }, { name = "dlt", extra = ["sqlalchemy"] }, { name = "fastapi" }, @@ -569,6 +592,7 @@ dependencies = [ { name = "jinja2" }, { name = "lancedb" }, { name = "langdetect" }, + { name = "langfuse" }, { name = "litellm" }, { name = "matplotlib" }, { name = "nest-asyncio" }, @@ -604,7 +628,6 @@ requires-dist = [ { name = "bokeh", specifier = ">=3.6.2,<4.0.0" }, { name = "boto3", specifier = ">=1.26.125,<2.0.0" }, { name = "botocore", marker = "extra == 'filesystem'", specifier = ">=1.35.54,<2.0.0" }, - { name = "cairosvg", specifier = ">=2.7.1,<3.0.0" }, { name = "datasets", specifier = "==3.1.0" }, { name = "deepeval", marker = "extra == 'deepeval'", specifier = ">=2.0.1,<3.0.0" }, { name = "dlt", extras = ["sqlalchemy"], specifier = ">=1.4.1,<2.0.0" }, @@ -616,23 +639,23 @@ requires-dist = [ { name = "groq", marker = "extra == 'groq'", specifier = "==0.8.0" }, { name = "gunicorn", specifier = ">=20.1.0,<21.0.0" }, { name = "httpx", specifier = "==0.27.0" }, - { name = "instructor", specifier = "==1.5.2" }, + { name = "instructor", specifier = "==1.7.2" }, { name = "jinja2", specifier = ">=3.1.3,<4.0.0" }, - { name = "lancedb", specifier = "==0.15.0" }, + { name = "lancedb", specifier = "==0.16.0" }, { name = "langchain-text-splitters", marker = "extra == 'langchain'", specifier = "==0.3.2" }, { name = "langdetect", specifier = "==1.0.9" }, - { name = "langfuse", marker = "extra == 'langfuse'", specifier = ">=2.32.0,<3.0.0" }, + { name = "langfuse", specifier = ">=2.32.0,<3.0.0" }, { name = "langsmith", marker = "extra == 'langchain'", specifier = "==0.2.3" }, - { name = "litellm", specifier = "==1.49.1" }, - { name = "llama-index-core", marker = "extra == 'llama-index'", specifier = ">=0.11.22,<0.12.0" }, + { name = "litellm", specifier = "==1.57.2" }, + { name = "llama-index-core", marker = "extra == 'llama-index'", specifier = ">=0.12.10.post1,<0.13.0" }, { name = "matplotlib", specifier = ">=3.8.3,<4.0.0" }, { name = "neo4j", marker = "extra == 'neo4j'", specifier = ">=5.20.0,<6.0.0" }, { name = "nest-asyncio", specifier = "==1.6.0" }, { name = "networkx", specifier = ">=3.2.1,<4.0.0" }, { name = "nltk", specifier = ">=3.8.1,<4.0.0" }, { name = "numpy", specifier = "==1.26.4" }, - { name = "openai", specifier = "==1.52.0" }, - { name = "pandas", specifier = "==2.0.3" }, + { name = "openai", specifier = "==1.59.4" }, + { name = "pandas", specifier = "==2.2.3" }, { name = "pgvector", marker = "extra == 'postgres'", specifier = ">=0.3.5,<0.4.0" }, { name = "posthog", marker = "extra == 'posthog'", specifier = ">=3.5.0,<4.0.0" }, { name = "pre-commit", specifier = ">=4.0.1,<5.0.0" }, @@ -646,8 +669,8 @@ requires-dist = [ { name = "requests", specifier = "==2.32.3" }, { name = "scikit-learn", specifier = ">=1.5.0,<2.0.0" }, { name = "sentry-sdk", extras = ["fastapi"], specifier = ">=2.9.0,<3.0.0" }, - { name = "sqlalchemy", specifier = "==2.0.35" }, - { name = "tenacity", specifier = ">=8.4.1,<9.0.0" }, + { name = "sqlalchemy", specifier = "==2.0.36" }, + { name = "tenacity", specifier = ">=9.0.0,<10.0.0" }, { name = "tiktoken", specifier = "==0.7.0" }, { name = "transformers", specifier = ">=4.46.3,<5.0.0" }, { name = "typing-extensions", specifier = "==4.12.2" }, @@ -760,15 +783,15 @@ requires-dist = [ { name = "graphistry", specifier = ">=0.33.5,<0.34.0" }, { name = "groq", specifier = "==0.8.0" }, { name = "gunicorn", specifier = ">=20.1.0,<21.0.0" }, - { name = "instructor", specifier = "==1.5.2" }, + { name = "instructor", specifier = "==1.7.2" }, { name = "jinja2", specifier = ">=3.1.3,<4.0.0" }, - { name = "lancedb", specifier = "==0.15.0" }, + { name = "lancedb", specifier = "==0.16.0" }, { name = "langchain-text-splitters", specifier = "==0.3.2" }, { name = "langdetect", specifier = "==1.0.9" }, { name = "langfuse", specifier = ">=2.32.0,<3.0.0" }, { name = "langsmith", specifier = "==0.1.139" }, - { name = "litellm", specifier = "==1.49.1" }, - { name = "llama-index-core", specifier = ">=0.11.22,<0.12.0" }, + { name = "litellm", specifier = "==1.57.2" }, + { name = "llama-index-core", specifier = ">=0.12.0" }, { name = "matplotlib", specifier = ">=3.8.3,<4.0.0" }, { name = "mcp", specifier = ">=1.1.1" }, { name = "mypy", specifier = ">=1.7.1,<2.0.0" }, @@ -777,8 +800,8 @@ requires-dist = [ { name = "networkx", specifier = ">=3.2.1,<4.0.0" }, { name = "nltk", specifier = ">=3.8.1,<4.0.0" }, { name = "numpy", specifier = "==1.26.4" }, - { name = "openai", specifier = "==1.52.0" }, - { name = "pandas", specifier = "==2.0.3" }, + { name = "openai", specifier = "==1.59.4" }, + { name = "pandas", specifier = "==2.2.3" }, { name = "pgvector", specifier = ">=0.3.5,<0.4.0" }, { name = "posthog", specifier = ">=3.5.0,<4.0.0" }, { name = "psycopg2", specifier = ">=2.9.10,<3.0.0" }, @@ -795,8 +818,8 @@ requires-dist = [ { name = "ruff", specifier = ">=0.2.2,<0.3.0" }, { name = "scikit-learn", specifier = ">=1.5.0,<2.0.0" }, { name = "sentry-sdk", extras = ["fastapi"], specifier = ">=2.9.0,<3.0.0" }, - { name = "sqlalchemy", specifier = "==2.0.35" }, - { name = "tenacity", specifier = ">=8.4.1,<9.0.0" }, + { name = "sqlalchemy", specifier = "==2.0.36" }, + { name = "tenacity", specifier = ">=9.0.0" }, { name = "tiktoken", specifier = "==0.7.0" }, { name = "transformers", specifier = ">=4.46.3,<5.0.0" }, { name = "tweepy", specifier = "==4.14.0" }, @@ -827,6 +850,16 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/25/c2/fc7193cc5383637ff390a712e88e4ded0452c9fbcf84abe3de5ea3df1866/contourpy-1.3.1.tar.gz", hash = "sha256:dfd97abd83335045a913e3bcc4a09c0ceadbe66580cf573fe961f4a825efa699", size = 13465753 } wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/a3/80937fe3efe0edacf67c9a20b955139a1a622730042c1ea991956f2704ad/contourpy-1.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a045f341a77b77e1c5de31e74e966537bba9f3c4099b35bf4c2e3939dd54cdab", size = 268466 }, + { url = "https://files.pythonhosted.org/packages/82/1d/e3eaebb4aa2d7311528c048350ca8e99cdacfafd99da87bc0a5f8d81f2c2/contourpy-1.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:500360b77259914f7805af7462e41f9cb7ca92ad38e9f94d6c8641b089338124", size = 253314 }, + { url = "https://files.pythonhosted.org/packages/de/f3/d796b22d1a2b587acc8100ba8c07fb7b5e17fde265a7bb05ab967f4c935a/contourpy-1.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2f926efda994cdf3c8d3fdb40b9962f86edbc4457e739277b961eced3d0b4c1", size = 312003 }, + { url = "https://files.pythonhosted.org/packages/bf/f5/0e67902bc4394daee8daa39c81d4f00b50e063ee1a46cb3938cc65585d36/contourpy-1.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:adce39d67c0edf383647a3a007de0a45fd1b08dedaa5318404f1a73059c2512b", size = 351896 }, + { url = "https://files.pythonhosted.org/packages/1f/d6/e766395723f6256d45d6e67c13bb638dd1fa9dc10ef912dc7dd3dcfc19de/contourpy-1.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abbb49fb7dac584e5abc6636b7b2a7227111c4f771005853e7d25176daaf8453", size = 320814 }, + { url = "https://files.pythonhosted.org/packages/a9/57/86c500d63b3e26e5b73a28b8291a67c5608d4aa87ebd17bd15bb33c178bc/contourpy-1.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0cffcbede75c059f535725c1680dfb17b6ba8753f0c74b14e6a9c68c29d7ea3", size = 324969 }, + { url = "https://files.pythonhosted.org/packages/b8/62/bb146d1289d6b3450bccc4642e7f4413b92ebffd9bf2e91b0404323704a7/contourpy-1.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ab29962927945d89d9b293eabd0d59aea28d887d4f3be6c22deaefbb938a7277", size = 1265162 }, + { url = "https://files.pythonhosted.org/packages/18/04/9f7d132ce49a212c8e767042cc80ae390f728060d2eea47058f55b9eff1c/contourpy-1.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:974d8145f8ca354498005b5b981165b74a195abfae9a8129df3e56771961d595", size = 1324328 }, + { url = "https://files.pythonhosted.org/packages/46/23/196813901be3f97c83ababdab1382e13e0edc0bb4e7b49a7bff15fcf754e/contourpy-1.3.1-cp310-cp310-win32.whl", hash = "sha256:ac4578ac281983f63b400f7fe6c101bedc10651650eef012be1ccffcbacf3697", size = 173861 }, + { url = "https://files.pythonhosted.org/packages/e0/82/c372be3fc000a3b2005061ca623a0d1ecd2eaafb10d9e883a2fc8566e951/contourpy-1.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:174e758c66bbc1c8576992cec9599ce8b6672b741b5d336b5c74e35ac382b18e", size = 218566 }, { url = "https://files.pythonhosted.org/packages/12/bb/11250d2906ee2e8b466b5f93e6b19d525f3e0254ac8b445b56e618527718/contourpy-1.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3e8b974d8db2c5610fb4e76307e265de0edb655ae8169e8b21f41807ccbeec4b", size = 269555 }, { url = "https://files.pythonhosted.org/packages/67/71/1e6e95aee21a500415f5d2dbf037bf4567529b6a4e986594d7026ec5ae90/contourpy-1.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:20914c8c973f41456337652a6eeca26d2148aa96dd7ac323b74516988bea89fc", size = 254549 }, { url = "https://files.pythonhosted.org/packages/31/2c/b88986e8d79ac45efe9d8801ae341525f38e087449b6c2f2e6050468a42c/contourpy-1.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19d40d37c1c3a4961b4619dd9d77b12124a453cc3d02bb31a07d58ef684d3d86", size = 313000 }, @@ -867,6 +900,9 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f0/ed/92d86f183a8615f13f6b9cbfc5d4298a509d6ce433432e21da838b4b63f4/contourpy-1.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:89785bb2a1980c1bd87f0cb1517a71cde374776a5f150936b82580ae6ead44a1", size = 1318403 }, { url = "https://files.pythonhosted.org/packages/b3/0e/c8e4950c77dcfc897c71d61e56690a0a9df39543d2164040301b5df8e67b/contourpy-1.3.1-cp313-cp313t-win32.whl", hash = "sha256:8eb96e79b9f3dcadbad2a3891672f81cdcab7f95b27f28f1c67d75f045b6b4f1", size = 185117 }, { url = "https://files.pythonhosted.org/packages/c1/31/1ae946f11dfbd229222e6d6ad8e7bd1891d3d48bde5fbf7a0beb9491f8e3/contourpy-1.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:287ccc248c9e0d0566934e7d606201abd74761b5703d804ff3df8935f523d546", size = 236668 }, + { url = "https://files.pythonhosted.org/packages/3e/4f/e56862e64b52b55b5ddcff4090085521fc228ceb09a88390a2b103dccd1b/contourpy-1.3.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b457d6430833cee8e4b8e9b6f07aa1c161e5e0d52e118dc102c8f9bd7dd060d6", size = 265605 }, + { url = "https://files.pythonhosted.org/packages/b0/2e/52bfeeaa4541889f23d8eadc6386b442ee2470bd3cff9baa67deb2dd5c57/contourpy-1.3.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb76c1a154b83991a3cbbf0dfeb26ec2833ad56f95540b442c73950af2013750", size = 315040 }, + { url = "https://files.pythonhosted.org/packages/52/94/86bfae441707205634d80392e873295652fc313dfd93c233c52c4dc07874/contourpy-1.3.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:44a29502ca9c7b5ba389e620d44f2fbe792b1fb5734e8b931ad307071ec58c53", size = 218221 }, ] [[package]] @@ -875,6 +911,16 @@ version = "7.6.9" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/5b/d2/c25011f4d036cf7e8acbbee07a8e09e9018390aee25ba085596c4b83d510/coverage-7.6.9.tar.gz", hash = "sha256:4a8d8977b0c6ef5aeadcb644da9e69ae0dcfe66ec7f368c89c72e058bd71164d", size = 801710 } wheels = [ + { url = "https://files.pythonhosted.org/packages/49/f3/f830fb53bf7e4f1d5542756f61d9b740352a188f43854aab9409c8cdeb18/coverage-7.6.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:85d9636f72e8991a1706b2b55b06c27545448baf9f6dbf51c4004609aacd7dcb", size = 207024 }, + { url = "https://files.pythonhosted.org/packages/4e/e3/ea5632a3a6efd00ab0a791adc0f3e48512097a757ee7dcbee5505f57bafa/coverage-7.6.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:608a7fd78c67bee8936378299a6cb9f5149bb80238c7a566fc3e6717a4e68710", size = 207463 }, + { url = "https://files.pythonhosted.org/packages/e4/ae/18ff8b5580e27e62ebcc888082aa47694c2772782ea7011ddf58e377e98f/coverage-7.6.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96d636c77af18b5cb664ddf12dab9b15a0cfe9c0bde715da38698c8cea748bfa", size = 235902 }, + { url = "https://files.pythonhosted.org/packages/6a/52/57030a8d15ab935624d298360f0a6704885578e39f7b4f68569e59f5902d/coverage-7.6.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d75cded8a3cff93da9edc31446872d2997e327921d8eed86641efafd350e1df1", size = 233806 }, + { url = "https://files.pythonhosted.org/packages/d0/c5/4466602195ecaced298d55af1e29abceb812addabefd5bd9116a204f7bab/coverage-7.6.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7b15f589593110ae767ce997775d645b47e5cbbf54fd322f8ebea6277466cec", size = 234966 }, + { url = "https://files.pythonhosted.org/packages/b0/1c/55552c3009b7bf96732e36548596ade771c87f89cf1f5a8e3975b33539b5/coverage-7.6.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:44349150f6811b44b25574839b39ae35291f6496eb795b7366fef3bd3cf112d3", size = 234029 }, + { url = "https://files.pythonhosted.org/packages/bb/7d/da3dca6878701182ea42c51df47a47c80eaef2a76f5aa3e891dc2a8cce3f/coverage-7.6.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d891c136b5b310d0e702e186d70cd16d1119ea8927347045124cb286b29297e5", size = 232494 }, + { url = "https://files.pythonhosted.org/packages/28/cc/39de85ac1d5652bc34ff2bee39ae251b1fdcaae53fab4b44cab75a432bc0/coverage-7.6.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:db1dab894cc139f67822a92910466531de5ea6034ddfd2b11c0d4c6257168073", size = 233611 }, + { url = "https://files.pythonhosted.org/packages/d1/2b/7eb011a9378911088708f121825a71134d0c15fac96972a0ae7a8f5a4049/coverage-7.6.9-cp310-cp310-win32.whl", hash = "sha256:41ff7b0da5af71a51b53f501a3bac65fb0ec311ebed1632e58fc6107f03b9198", size = 209712 }, + { url = "https://files.pythonhosted.org/packages/5b/35/c3f40a2269b416db34ce1dedf682a7132c26f857e33596830fa4deebabf9/coverage-7.6.9-cp310-cp310-win_amd64.whl", hash = "sha256:35371f8438028fdccfaf3570b31d98e8d9eda8bb1d6ab9473f5a390969e98717", size = 210553 }, { url = "https://files.pythonhosted.org/packages/b1/91/b3dc2f7f38b5cca1236ab6bbb03e84046dd887707b4ec1db2baa47493b3b/coverage-7.6.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:932fc826442132dde42ee52cf66d941f581c685a6313feebed358411238f60f9", size = 207133 }, { url = "https://files.pythonhosted.org/packages/0d/2b/53fd6cb34d443429a92b3ec737f4953627e38b3bee2a67a3c03425ba8573/coverage-7.6.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:085161be5f3b30fd9b3e7b9a8c301f935c8313dcf928a07b116324abea2c1c2c", size = 207577 }, { url = "https://files.pythonhosted.org/packages/74/f2/68edb1e6826f980a124f21ea5be0d324180bf11de6fd1defcf9604f76df0/coverage-7.6.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ccc660a77e1c2bf24ddbce969af9447a9474790160cfb23de6be4fa88e3951c7", size = 239524 }, @@ -915,6 +961,7 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/43/d0/8e258f6c3a527c1655602f4f576215e055ac704de2d101710a71a2affac2/coverage-7.6.9-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8d2dfa71665a29b153a9681edb1c8d9c1ea50dfc2375fb4dac99ea7e21a0bcd9", size = 247783 }, { url = "https://files.pythonhosted.org/packages/a9/0d/1e4a48d289429d38aae3babdfcadbf35ca36bdcf3efc8f09b550a845bdb5/coverage-7.6.9-cp313-cp313t-win32.whl", hash = "sha256:5e6b86b5847a016d0fbd31ffe1001b63355ed309651851295315031ea7eb5a9b", size = 210646 }, { url = "https://files.pythonhosted.org/packages/26/74/b0729f196f328ac55e42b1e22ec2f16d8bcafe4b8158a26ec9f1cdd1d93e/coverage-7.6.9-cp313-cp313t-win_amd64.whl", hash = "sha256:97ddc94d46088304772d21b060041c97fc16bdda13c6c7f9d8fcd8d5ae0d8611", size = 211815 }, + { url = "https://files.pythonhosted.org/packages/15/0e/4ac9035ee2ee08d2b703fdad2d84283ec0bad3b46eb4ad6affb150174cb6/coverage-7.6.9-pp39.pp310-none-any.whl", hash = "sha256:f3ca78518bc6bc92828cd11867b121891d75cae4ea9e908d72030609b996db1b", size = 199270 }, ] [[package]] @@ -946,19 +993,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/af/36/5ccc376f025a834e72b8e52e18746b927f34e4520487098e283a719c205e/cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285", size = 4239657 }, { url = "https://files.pythonhosted.org/packages/46/b0/f4f7d0d0bcfbc8dd6296c1449be326d04217c57afb8b2594f017eed95533/cryptography-44.0.0-cp39-abi3-win32.whl", hash = "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417", size = 2758672 }, { url = "https://files.pythonhosted.org/packages/97/9b/443270b9210f13f6ef240eff73fd32e02d381e7103969dc66ce8e89ee901/cryptography-44.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:708ee5f1bafe76d041b53a4f95eb28cdeb8d18da17e597d46d7833ee59b97ede", size = 3202071 }, -] - -[[package]] -name = "cssselect2" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "tinycss2" }, - { name = "webencodings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e7/fc/326cb6f988905998f09bb54a3f5d98d4462ba119363c0dfad29750d48c09/cssselect2-0.7.0.tar.gz", hash = "sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a", size = 35888 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9d/3a/e39436efe51894243ff145a37c4f9a030839b97779ebcc4f13b3ba21c54e/cssselect2-0.7.0-py3-none-any.whl", hash = "sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969", size = 15586 }, + { url = "https://files.pythonhosted.org/packages/77/d4/fea74422326388bbac0c37b7489a0fcb1681a698c3b875959430ba550daa/cryptography-44.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:37d76e6863da3774cd9db5b409a9ecfd2c71c981c38788d3fcfaf177f447b731", size = 3338857 }, + { url = "https://files.pythonhosted.org/packages/1a/aa/ba8a7467c206cb7b62f09b4168da541b5109838627f582843bbbe0235e8e/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f677e1268c4e23420c3acade68fac427fffcb8d19d7df95ed7ad17cdef8404f4", size = 3850615 }, + { url = "https://files.pythonhosted.org/packages/89/fa/b160e10a64cc395d090105be14f399b94e617c879efd401188ce0fea39ee/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f5e7cb1e5e56ca0933b4873c0220a78b773b24d40d186b6738080b73d3d0a756", size = 4081622 }, + { url = "https://files.pythonhosted.org/packages/47/8f/20ff0656bb0cf7af26ec1d01f780c5cfbaa7666736063378c5f48558b515/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:8b3e6eae66cf54701ee7d9c83c30ac0a1e3fa17be486033000f2a73a12ab507c", size = 3867546 }, + { url = "https://files.pythonhosted.org/packages/38/d9/28edf32ee2fcdca587146bcde90102a7319b2f2c690edfa627e46d586050/cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:be4ce505894d15d5c5037167ffb7f0ae90b7be6f2a98f9a5c3442395501c32fa", size = 4090937 }, + { url = "https://files.pythonhosted.org/packages/cc/9d/37e5da7519de7b0b070a3fedd4230fe76d50d2a21403e0f2153d70ac4163/cryptography-44.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:62901fb618f74d7d81bf408c8719e9ec14d863086efe4185afd07c352aee1d2c", size = 3128774 }, ] [[package]] @@ -1014,6 +1054,10 @@ version = "1.8.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b2/c9/9d585d711cdcae0db7788731b331dab0d1f600d0204e76b2a5c6b30d569e/debugpy-1.8.2.zip", hash = "sha256:95378ed08ed2089221896b9b3a8d021e642c24edc8fef20e5d4342ca8be65c00", size = 4614001 } wheels = [ + { url = "https://files.pythonhosted.org/packages/39/8d/8cc1d0a074f81bef909874353843770c68ab164e94b7d49b8182d2a147df/debugpy-1.8.2-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:7ee2e1afbf44b138c005e4380097d92532e1001580853a7cb40ed84e0ef1c3d2", size = 1713804 }, + { url = "https://files.pythonhosted.org/packages/17/4c/35395eaf9d600175fc974f4d14f7f81128fe8f65789092539b41056a9b6b/debugpy-1.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f8c3f7c53130a070f0fc845a0f2cee8ed88d220d6b04595897b66605df1edd6", size = 2998800 }, + { url = "https://files.pythonhosted.org/packages/dd/05/9f6f833a48c4e49eb181f6d5264329f40988c8c463c0ecc61fbc0f9e2107/debugpy-1.8.2-cp310-cp310-win32.whl", hash = "sha256:f179af1e1bd4c88b0b9f0fa153569b24f6b6f3de33f94703336363ae62f4bf47", size = 4766562 }, + { url = "https://files.pythonhosted.org/packages/1c/1a/7e86850fe9ed6e7e42241f6fbacaf45ebb049fa3130f10d72b0cb663fd96/debugpy-1.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:0600faef1d0b8d0e85c816b8bb0cb90ed94fc611f308d5fde28cb8b3d2ff0fe3", size = 4790128 }, { url = "https://files.pythonhosted.org/packages/2b/ba/d06289b7c6194117fcecc88c24dee405b1c14b8e318e7bdf513eb78c3278/debugpy-1.8.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:8a13417ccd5978a642e91fb79b871baded925d4fadd4dfafec1928196292aa0a", size = 1789191 }, { url = "https://files.pythonhosted.org/packages/4f/d6/04ae52227ab7c1d43b729d5ae75ebd592df56c55d4e4dfa30ba173096b0f/debugpy-1.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acdf39855f65c48ac9667b2801234fc64d46778021efac2de7e50907ab90c634", size = 2643243 }, { url = "https://files.pythonhosted.org/packages/49/cd/207d629509949568603008c8cf90cd0a949d1a9d1900936010854732ab93/debugpy-1.8.2-cp311-cp311-win32.whl", hash = "sha256:2cbd4d9a2fc5e7f583ff9bf11f3b7d78dfda8401e8bb6856ad1ed190be4281ad", size = 4703962 }, @@ -1072,15 +1116,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/39/60/533ce66e28295e2b94267126a851ac091ad29a835a9827d1f9c30574fce4/deepeval-2.0.6-py3-none-any.whl", hash = "sha256:57302830ff9d3d16ad4f1961338c7b4453e48039ff131990f258880728f33b6b", size = 504101 }, ] -[[package]] -name = "defusedxml" -version = "0.7.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, -] - [[package]] name = "deprecated" version = "1.2.15" @@ -1112,6 +1147,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/18/9e/7a976d923d3ae18d7dc4ace8e0c83e20a847828196e7f4b13a4bf6b03b50/deptry-0.20.0.tar.gz", hash = "sha256:62e9aaf3aea9e2ca66c85da98a0ba0290b4d3daea4e1d0ad937d447bd3c36402", size = 129936 } wheels = [ @@ -1121,6 +1157,11 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b4/70/456d976912c6026252034c0cdb37a3cbad34ac0ce815763466720c63aece/deptry-0.20.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ce3920e2bd6d2b4427ab31ab8efb94bbef897001c2d395782bc30002966d12d", size = 1708051 }, { url = "https://files.pythonhosted.org/packages/ff/66/95e04a84120861b0c0ac980999e6172612509d5ff9a84b41e2f71cc3c3c0/deptry-0.20.0-cp38-abi3-win_amd64.whl", hash = "sha256:0c90ce64e637d0e902bc97c5a020adecfee9e9f09ee0bf4c61554994139bebdb", size = 1493281 }, { url = "https://files.pythonhosted.org/packages/53/c9/9d7d86b5fdc452b522ef16df9e27c8404dc6f231fa865a3af31c1dab7563/deptry-0.20.0-cp38-abi3-win_arm64.whl", hash = "sha256:6886ff44aaf26fd83093f14f844ebc84589d90df9bbad9a1625e8a080e6f1be2", size = 1420087 }, + { url = "https://files.pythonhosted.org/packages/2a/06/57ccbad1a66e9a17980f03f6aed9724577a5acd58c761ede76e4b03004a7/deptry-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ace3b39b1d0763f357c79bab003d1b135bea2eb61102be539992621a42d1ac7b", size = 1624520 }, + { url = "https://files.pythonhosted.org/packages/d9/00/c8b214f4a0c52b95cabb35197046efc84f9205eeef1d12026e865eeab373/deptry-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d1a00f8c9e6c0829a4a523edd5e526e3df06d2b50e0a99446f09f9723df2efad", size = 1545283 }, + { url = "https://files.pythonhosted.org/packages/c6/6f/999f8cdb338cceb48e2d05e9638f988cd25d4971d1882e251691ecd41fa0/deptry-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e233859f150df70ffff76e95f9b7326fc25494b9beb26e776edae20f0f515e7d", size = 1677736 }, + { url = "https://files.pythonhosted.org/packages/a0/06/2fffc44168e139619c83de0a2af293c88c08879b93de72b3041a3b4e0eed/deptry-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f92e7e97ef42477717747b190bc6796ab94b35655af126d8c577f7eae0eb3a9", size = 1707537 }, + { url = "https://files.pythonhosted.org/packages/fa/a8/f5465abf491f945175d60f4a52f5c1b8bec7d58bfce41a6dc5d5894fc7b3/deptry-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f6cee6005997791bb77155667be055333fb63ae9a24f0f103f25faf1e7affe34", size = 1493191 }, ] [[package]] @@ -1256,6 +1297,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059 }, ] +[[package]] +name = "exceptiongroup" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, +] + [[package]] name = "execnet" version = "2.1.1" @@ -1347,6 +1397,14 @@ version = "4.55.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/76/61/a300d1574dc381393424047c0396a0e213db212e28361123af9830d71a8d/fonttools-4.55.3.tar.gz", hash = "sha256:3983313c2a04d6cc1fe9251f8fc647754cf49a61dac6cb1e7249ae67afaafc45", size = 3498155 } wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/f3/9ac8c6705e4a0ff3c29e524df1caeee6f2987b02fb630129f21cc99a8212/fonttools-4.55.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1dcc07934a2165ccdc3a5a608db56fb3c24b609658a5b340aee4ecf3ba679dc0", size = 2769857 }, + { url = "https://files.pythonhosted.org/packages/d8/24/e8b8edd280bdb7d0ecc88a5d952b1dec2ee2335be71cc5a33c64871cdfe8/fonttools-4.55.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f7d66c15ba875432a2d2fb419523f5d3d347f91f48f57b8b08a2dfc3c39b8a3f", size = 2299705 }, + { url = "https://files.pythonhosted.org/packages/f8/9e/e1ba20bd3b71870207fd45ca3b90208a7edd8ae3b001081dc31c45adb017/fonttools-4.55.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27e4ae3592e62eba83cd2c4ccd9462dcfa603ff78e09110680a5444c6925d841", size = 4576104 }, + { url = "https://files.pythonhosted.org/packages/34/db/d423bc646e6703fe3e6aea0edd22a2df47b9d188c5f7f1b49070be4d2205/fonttools-4.55.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62d65a3022c35e404d19ca14f291c89cc5890032ff04f6c17af0bd1927299674", size = 4618282 }, + { url = "https://files.pythonhosted.org/packages/75/a0/e5062ac960a385b984ba74e7b55132e7f2c65e449e8330ab0f595407a3de/fonttools-4.55.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d342e88764fb201286d185093781bf6628bbe380a913c24adf772d901baa8276", size = 4570539 }, + { url = "https://files.pythonhosted.org/packages/1f/33/0d744ff518ebe50020b63e5018b8b278efd6a930c1d2eedda7defc42153b/fonttools-4.55.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dd68c87a2bfe37c5b33bcda0fba39b65a353876d3b9006fde3adae31f97b3ef5", size = 4742411 }, + { url = "https://files.pythonhosted.org/packages/7e/6c/2f768652dba6b801f1567fc5d1829cda369bcd6e95e315a91e628f91c702/fonttools-4.55.3-cp310-cp310-win32.whl", hash = "sha256:1bc7ad24ff98846282eef1cbeac05d013c2154f977a79886bb943015d2b1b261", size = 2175132 }, + { url = "https://files.pythonhosted.org/packages/19/d1/4dcd865360fb2c499749a913fe80e41c26e8ae18629d87dfffa3de27e831/fonttools-4.55.3-cp310-cp310-win_amd64.whl", hash = "sha256:b54baf65c52952db65df39fcd4820668d0ef4766c0ccdf32879b77f7c804d5c5", size = 2219430 }, { url = "https://files.pythonhosted.org/packages/4b/18/14be25545600bd100e5b74a3ac39089b7c1cb403dc513b7ca348be3381bf/fonttools-4.55.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8c4491699bad88efe95772543cd49870cf756b019ad56294f6498982408ab03e", size = 2771005 }, { url = "https://files.pythonhosted.org/packages/b2/51/2e1a5d3871cd7c2ae2054b54e92604e7d6abc3fd3656e9583c399648fe1c/fonttools-4.55.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5323a22eabddf4b24f66d26894f1229261021dacd9d29e89f7872dd8c63f0b8b", size = 2300654 }, { url = "https://files.pythonhosted.org/packages/73/1a/50109bb2703bc6f774b52ea081db21edf2a9fa4b6d7485faadf9d1b997e9/fonttools-4.55.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5480673f599ad410695ca2ddef2dfefe9df779a9a5cda89503881e503c9c7d90", size = 4877541 }, @@ -1380,6 +1438,21 @@ version = "1.5.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/8f/ed/0f4cec13a93c02c47ec32d81d11c0c1efbadf4a471e3f3ce7cad366cbbd3/frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817", size = 39930 } wheels = [ + { url = "https://files.pythonhosted.org/packages/54/79/29d44c4af36b2b240725dce566b20f63f9b36ef267aaaa64ee7466f4f2f8/frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a", size = 94451 }, + { url = "https://files.pythonhosted.org/packages/47/47/0c999aeace6ead8a44441b4f4173e2261b18219e4ad1fe9a479871ca02fc/frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb", size = 54301 }, + { url = "https://files.pythonhosted.org/packages/8d/60/107a38c1e54176d12e06e9d4b5d755b677d71d1219217cee063911b1384f/frozenlist-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec", size = 52213 }, + { url = "https://files.pythonhosted.org/packages/17/62/594a6829ac5679c25755362a9dc93486a8a45241394564309641425d3ff6/frozenlist-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5", size = 240946 }, + { url = "https://files.pythonhosted.org/packages/7e/75/6c8419d8f92c80dd0ee3f63bdde2702ce6398b0ac8410ff459f9b6f2f9cb/frozenlist-1.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76", size = 264608 }, + { url = "https://files.pythonhosted.org/packages/88/3e/82a6f0b84bc6fb7e0be240e52863c6d4ab6098cd62e4f5b972cd31e002e8/frozenlist-1.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17", size = 261361 }, + { url = "https://files.pythonhosted.org/packages/fd/85/14e5f9ccac1b64ff2f10c927b3ffdf88772aea875882406f9ba0cec8ad84/frozenlist-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba", size = 231649 }, + { url = "https://files.pythonhosted.org/packages/ee/59/928322800306f6529d1852323014ee9008551e9bb027cc38d276cbc0b0e7/frozenlist-1.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d", size = 241853 }, + { url = "https://files.pythonhosted.org/packages/7d/bd/e01fa4f146a6f6c18c5d34cab8abdc4013774a26c4ff851128cd1bd3008e/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2", size = 243652 }, + { url = "https://files.pythonhosted.org/packages/a5/bd/e4771fd18a8ec6757033f0fa903e447aecc3fbba54e3630397b61596acf0/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f", size = 241734 }, + { url = "https://files.pythonhosted.org/packages/21/13/c83821fa5544af4f60c5d3a65d054af3213c26b14d3f5f48e43e5fb48556/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c", size = 260959 }, + { url = "https://files.pythonhosted.org/packages/71/f3/1f91c9a9bf7ed0e8edcf52698d23f3c211d8d00291a53c9f115ceb977ab1/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab", size = 262706 }, + { url = "https://files.pythonhosted.org/packages/4c/22/4a256fdf5d9bcb3ae32622c796ee5ff9451b3a13a68cfe3f68e2c95588ce/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5", size = 250401 }, + { url = "https://files.pythonhosted.org/packages/af/89/c48ebe1f7991bd2be6d5f4ed202d94960c01b3017a03d6954dd5fa9ea1e8/frozenlist-1.5.0-cp310-cp310-win32.whl", hash = "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb", size = 45498 }, + { url = "https://files.pythonhosted.org/packages/28/2f/cc27d5f43e023d21fe5c19538e08894db3d7e081cbf582ad5ed366c24446/frozenlist-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4", size = 51622 }, { url = "https://files.pythonhosted.org/packages/79/43/0bed28bf5eb1c9e4301003b74453b8e7aa85fb293b31dde352aac528dafc/frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30", size = 94987 }, { url = "https://files.pythonhosted.org/packages/bb/bf/b74e38f09a246e8abbe1e90eb65787ed745ccab6eaa58b9c9308e052323d/frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5", size = 54584 }, { url = "https://files.pythonhosted.org/packages/2c/31/ab01375682f14f7613a1ade30149f684c84f9b8823a4391ed950c8285656/frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778", size = 52499 }, @@ -1513,6 +1586,15 @@ version = "3.1.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/2f/ff/df5fede753cc10f6a5be0931204ea30c35fa2f2ea7a35b25bdaf4fe40e46/greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467", size = 186022 } wheels = [ + { url = "https://files.pythonhosted.org/packages/25/90/5234a78dc0ef6496a6eb97b67a42a8e96742a56f7dc808cb954a85390448/greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563", size = 271235 }, + { url = "https://files.pythonhosted.org/packages/7c/16/cd631fa0ab7d06ef06387135b7549fdcc77d8d859ed770a0d28e47b20972/greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83", size = 637168 }, + { url = "https://files.pythonhosted.org/packages/2f/b1/aed39043a6fec33c284a2c9abd63ce191f4f1a07319340ffc04d2ed3256f/greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0", size = 648826 }, + { url = "https://files.pythonhosted.org/packages/76/25/40e0112f7f3ebe54e8e8ed91b2b9f970805143efef16d043dfc15e70f44b/greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120", size = 644443 }, + { url = "https://files.pythonhosted.org/packages/fb/2f/3850b867a9af519794784a7eeed1dd5bc68ffbcc5b28cef703711025fd0a/greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc", size = 643295 }, + { url = "https://files.pythonhosted.org/packages/cf/69/79e4d63b9387b48939096e25115b8af7cd8a90397a304f92436bcb21f5b2/greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617", size = 599544 }, + { url = "https://files.pythonhosted.org/packages/46/1d/44dbcb0e6c323bd6f71b8c2f4233766a5faf4b8948873225d34a0b7efa71/greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7", size = 1125456 }, + { url = "https://files.pythonhosted.org/packages/e0/1d/a305dce121838d0278cee39d5bb268c657f10a5363ae4b726848f833f1bb/greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6", size = 1149111 }, + { url = "https://files.pythonhosted.org/packages/96/28/d62835fb33fb5652f2e98d34c44ad1a0feacc8b1d3f1aecab035f51f267d/greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80", size = 298392 }, { url = "https://files.pythonhosted.org/packages/28/62/1c2665558618553c42922ed47a4e6d6527e2fa3516a8256c2f431c5d0441/greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70", size = 272479 }, { url = "https://files.pythonhosted.org/packages/76/9d/421e2d5f07285b6e4e3a676b016ca781f63cfe4a0cd8eaecf3fd6f7a71ae/greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159", size = 640404 }, { url = "https://files.pythonhosted.org/packages/e5/de/6e05f5c59262a584e502dd3d261bbdd2c97ab5416cc9c0b91ea38932a901/greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e", size = 652813 }, @@ -1572,6 +1654,15 @@ version = "1.60.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7d/6d/919fd5886882c066122e69fbd938c1df2dc0aa22ab8de3e047c6aff5ac58/grpcio-1.60.1.tar.gz", hash = "sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962", size = 24771788 } wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/3a/e5aa8c16eceb4fbe3603f5e175d738e691f6d3789d0835fb2d5fd2e0bf54/grpcio-1.60.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092", size = 99933155 }, + { url = "https://files.pythonhosted.org/packages/6d/8f/c4c479df7a2db3cd4da9d1423d15a9b5fcae2763cd5c78254f14c6ea3324/grpcio-1.60.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216", size = 9628078 }, + { url = "https://files.pythonhosted.org/packages/02/63/38809fe7ac3c19205258881d020f9c3e70c27c54b70510cbfa0548f3bd63/grpcio-1.60.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525", size = 5115756 }, + { url = "https://files.pythonhosted.org/packages/93/47/07e4aab76f15a946ad66bd7f0df0a05498d68deb312cc5f25a2e4f0d8bb5/grpcio-1.60.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104", size = 5621845 }, + { url = "https://files.pythonhosted.org/packages/db/d4/8643b32c1ca0efa31b0a75b33e5750fe1597724bff684128096670eea13d/grpcio-1.60.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2", size = 5356187 }, + { url = "https://files.pythonhosted.org/packages/cc/ad/e26d069423832e32461f11cdf99040c9a31d2435b047563f9b8705cd2a3b/grpcio-1.60.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0", size = 5904204 }, + { url = "https://files.pythonhosted.org/packages/b4/be/5df9e04743a7c93a6fb64400afd974dfa038f5eb1ada07eac66657ecca19/grpcio-1.60.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb", size = 5605973 }, + { url = "https://files.pythonhosted.org/packages/7b/2c/1b9180ab1085ad08a0541f08972f10393ba7c1aee6090066da8f48e7c8e5/grpcio-1.60.1-cp310-cp310-win32.whl", hash = "sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1", size = 3131617 }, + { url = "https://files.pythonhosted.org/packages/80/ae/7fc100880e704b95b151d4259656d8b9fdea1c3e5862506c10f697e5f4de/grpcio-1.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177", size = 3702036 }, { url = "https://files.pythonhosted.org/packages/a0/4f/2d27f7cc911675b717cd5b0e948e38b35a707a9d669b7a5691b9cb4a1311/grpcio-1.60.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303", size = 100133807 }, { url = "https://files.pythonhosted.org/packages/ec/d5/c3ddb54b39ce43d21428407eb26cf9a21fd43de5e26d9733b1f173d57475/grpcio-1.60.1-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87", size = 9649624 }, { url = "https://files.pythonhosted.org/packages/f3/2c/ce6dbceff6c6009dedc53da3e5b0dfb6508fed730e9f56facd29d31a907d/grpcio-1.60.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c", size = 5120377 }, @@ -1616,6 +1707,15 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/2c/7f/30d9ef28cbe302c622bf289d194689cd571ea4df0b492d46b95e503aabb1/grpcio-tools-1.60.1.tar.gz", hash = "sha256:da08224ab8675c6d464b988bd8ca02cccd2bf0275bceefe8f6219bfd4a4f5e85", size = 4611737 } wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/ef/7c9fca308b1c3d960688f907037a03409acf09aaede7eb1840e04f53ef83/grpcio_tools-1.60.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:184b27333b627a7cc0972fb70d21a8bb7c02ac4a6febc16768d78ea8ff883ddd", size = 63932018 }, + { url = "https://files.pythonhosted.org/packages/ed/cf/531023bd9d18009fa2cd7956d97f22a072a0672259a85fd31f640612ec58/grpcio_tools-1.60.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:18d7737f29ef5bbe3352547d0eccd080807834f00df223867dfc860bf81e9180", size = 5120492 }, + { url = "https://files.pythonhosted.org/packages/ec/5d/59d91a79b49c954dbfa9778a715571f7df4a7492de17e55baf4be8237ea2/grpcio_tools-1.60.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:cc8ba358d2c658c6ecbc58e779bf0fc5a673fecac015a70db27fc5b4d37b76b6", size = 2707836 }, + { url = "https://files.pythonhosted.org/packages/aa/5a/0ef71a85281fed192094902c264a21ff846f0a8f70388f390440e14e70e0/grpcio_tools-1.60.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2973f75e8ba5c551033a1d59cc97654f6f386deaf2559082011d245d7ed87bba", size = 3060237 }, + { url = "https://files.pythonhosted.org/packages/97/4b/a7c3d1f64b2f3728c8ece2b5ebf9ab8ddab2edf2de17f14d2688ff5ce940/grpcio_tools-1.60.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28ae665113affebdd109247386786e5ab4dccfcfad1b5f68e9cce2e326b57ee6", size = 2795163 }, + { url = "https://files.pythonhosted.org/packages/4a/da/79509ea5149cae094797d0580157b14a289244c075074b1a74a870c5b0e6/grpcio_tools-1.60.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5c7ed086fef5ff59f46d53a052b1934b73e0f7d12365d656d6af3a88057d5a3e", size = 3673786 }, + { url = "https://files.pythonhosted.org/packages/e7/97/a01da8f8488df57c6692b133cc2007d6952986c6d9d700df5779fe2c5a5f/grpcio_tools-1.60.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8540f6480428a52614db71dd6394f52cbc0d2565b5ea1136a982f26390a42c7a", size = 3281878 }, + { url = "https://files.pythonhosted.org/packages/51/a5/6dd6b00beae3b880422d80fa17aac904d31ca200320447d36ad46024d706/grpcio_tools-1.60.1-cp310-cp310-win32.whl", hash = "sha256:5b4a939097005531edec331f22d0b82bff26e71ede009354d2f375b5d41e74f0", size = 921928 }, + { url = "https://files.pythonhosted.org/packages/f3/1c/103c72d65ed02f7836c8ecf335540b2d99712c08231847c73678f5c8e71e/grpcio_tools-1.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:075bb67895970f96aabc1761ca674bf4db193f8fcad387f08e50402023b5f953", size = 1068079 }, { url = "https://files.pythonhosted.org/packages/61/77/6414c9fec523fbc13c227b814212f1931db3bcc90d0444e25f20b4083b82/grpcio_tools-1.60.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:284749d20fb22418f17d3d351b9eb838caf4a0393a9cb02c36e5c32fa4bbe9db", size = 63937620 }, { url = "https://files.pythonhosted.org/packages/71/b4/5cdbd524494d0c17adf11ebb17deca82cc358499c2bf70c20044d8fcd099/grpcio_tools-1.60.1-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:b1041377cf32ee2338284ee26e6b9c10f9ea7728092376b19803dcb9b91d510d", size = 5147734 }, { url = "https://files.pythonhosted.org/packages/4c/bf/360dbe8de7856b36d1960afb6d8906f874c36df32fec76fe0e4d80043fba/grpcio_tools-1.60.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:e529cd3d4109a6f4a3f7bdaca68946eb33734e2d7ffe861785a0586abe99ee67", size = 2708356 }, @@ -1821,22 +1921,24 @@ wheels = [ [[package]] name = "instructor" -version = "1.5.2" +version = "1.7.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, { name = "docstring-parser" }, + { name = "jinja2" }, { name = "jiter" }, { name = "openai" }, { name = "pydantic" }, { name = "pydantic-core" }, + { name = "requests" }, { name = "rich" }, { name = "tenacity" }, { name = "typer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/45/31/f7499f60a513411a1e8c47c530987d1d3f2dbf9da0d621e52a100a80eebb/instructor-1.5.2.tar.gz", hash = "sha256:fdd5ccbca21b4c558a24e9ba12c84afd907e65153a39d035f47c25800011a977", size = 49521 } +sdist = { url = "https://files.pythonhosted.org/packages/63/ba/692739c76959191aa7e5f0fccda871b36548355f4a09c8733687e64e62b0/instructor-1.7.2.tar.gz", hash = "sha256:6c01b2b159766df24865dc81f7bf8457cbda88a3c0bbc810da3467d19b185ed2", size = 66200177 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/94/5f96c1d87ba732ba6b2a9751314ddb69bfcd8d05ed0f7e93ee17fd4df068/instructor-1.5.2-py3-none-any.whl", hash = "sha256:da25abbf1ab792fb094992f1d9ce593e26fe458cb1f9a8e7ebf9d68f3f2c757a", size = 61494 }, + { url = "https://files.pythonhosted.org/packages/c5/82/fd319382c1a33d7021cf151007b4cbd5daddf09d9ca5fb670e476668f9fc/instructor-1.7.2-py3-none-any.whl", hash = "sha256:cb43d27f6d7631c31762b936b2fcb44d2a3f9d8a020430a0f4d3484604ffb95b", size = 71353 }, ] [[package]] @@ -1862,34 +1964,61 @@ wheels = [ [[package]] name = "jiter" -version = "0.5.0" +version = "0.8.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/1a/aa64be757afc614484b370a4d9fc1747dc9237b37ce464f7f9d9ca2a3d38/jiter-0.5.0.tar.gz", hash = "sha256:1d916ba875bcab5c5f7d927df998c4cb694d27dceddf3392e58beaf10563368a", size = 158300 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/70/90bc7bd3932e651486861df5c8ffea4ca7c77d28e8532ddefe2abc561a53/jiter-0.8.2.tar.gz", hash = "sha256:cd73d3e740666d0e639f678adb176fad25c1bcbdae88d8d7b857e1783bb4212d", size = 163007 } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/5f/3ac960ed598726aae46edea916e6df4df7ff6fe084bc60774b95cf3154e6/jiter-0.5.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d4c8e1ed0ef31ad29cae5ea16b9e41529eb50a7fba70600008e9f8de6376d553", size = 284131 }, - { url = "https://files.pythonhosted.org/packages/03/eb/2308fa5f5c14c97c4c7720fef9465f1fa0771826cddb4eec9866bdd88846/jiter-0.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c6f16e21276074a12d8421692515b3fd6d2ea9c94fd0734c39a12960a20e85f3", size = 299310 }, - { url = "https://files.pythonhosted.org/packages/3c/f6/dba34ca10b44715fa5302b8e8d2113f72eb00a9297ddf3fa0ae4fd22d1d1/jiter-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5280e68e7740c8c128d3ae5ab63335ce6d1fb6603d3b809637b11713487af9e6", size = 332282 }, - { url = "https://files.pythonhosted.org/packages/69/f7/64e0a7439790ec47f7681adb3871c9d9c45fff771102490bbee5e92c00b7/jiter-0.5.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:583c57fc30cc1fec360e66323aadd7fc3edeec01289bfafc35d3b9dcb29495e4", size = 342370 }, - { url = "https://files.pythonhosted.org/packages/55/31/1efbfff2ae8e4d919144c53db19b828049ad0622a670be3bbea94a86282c/jiter-0.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26351cc14507bdf466b5f99aba3df3143a59da75799bf64a53a3ad3155ecded9", size = 363591 }, - { url = "https://files.pythonhosted.org/packages/30/c3/7ab2ca2276426a7398c6dfb651e38dbc81954c79a3bfbc36c514d8599499/jiter-0.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829df14d656b3fb87e50ae8b48253a8851c707da9f30d45aacab2aa2ba2d614", size = 378551 }, - { url = "https://files.pythonhosted.org/packages/47/e7/5d88031cd743c62199b125181a591b1671df3ff2f6e102df85c58d8f7d31/jiter-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a42a4bdcf7307b86cb863b2fb9bb55029b422d8f86276a50487982d99eed7c6e", size = 319152 }, - { url = "https://files.pythonhosted.org/packages/4c/2d/09ea58e1adca9f0359f3d41ef44a1a18e59518d7c43a21f4ece9e72e28c0/jiter-0.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04d461ad0aebf696f8da13c99bc1b3e06f66ecf6cfd56254cc402f6385231c06", size = 357377 }, - { url = "https://files.pythonhosted.org/packages/7d/2f/83ff1058cb56fc3ff73e0d3c6440703ddc9cdb7f759b00cfbde8228fc435/jiter-0.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e6375923c5f19888c9226582a124b77b622f8fd0018b843c45eeb19d9701c403", size = 511091 }, - { url = "https://files.pythonhosted.org/packages/ae/c9/4f85f97c9894382ab457382337aea0012711baaa17f2ed55c0ff25f3668a/jiter-0.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2cec323a853c24fd0472517113768c92ae0be8f8c384ef4441d3632da8baa646", size = 492948 }, - { url = "https://files.pythonhosted.org/packages/4d/f2/2e987e0eb465e064c5f52c2f29c8d955452e3b316746e326269263bfb1b7/jiter-0.5.0-cp311-none-win32.whl", hash = "sha256:aa1db0967130b5cab63dfe4d6ff547c88b2a394c3410db64744d491df7f069bb", size = 195183 }, - { url = "https://files.pythonhosted.org/packages/ab/59/05d1c3203c349b37c4dd28b02b9b4e5915a7bcbd9319173b4548a67d2e93/jiter-0.5.0-cp311-none-win_amd64.whl", hash = "sha256:aa9d2b85b2ed7dc7697597dcfaac66e63c1b3028652f751c81c65a9f220899ae", size = 191032 }, - { url = "https://files.pythonhosted.org/packages/aa/bd/c3950e2c478161e131bed8cb67c36aed418190e2a961a1c981e69954e54b/jiter-0.5.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9f664e7351604f91dcdd557603c57fc0d551bc65cc0a732fdacbf73ad335049a", size = 283511 }, - { url = "https://files.pythonhosted.org/packages/80/1c/8ce58d8c37a589eeaaa5d07d131fd31043886f5e77ab50c00a66d869a361/jiter-0.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:044f2f1148b5248ad2c8c3afb43430dccf676c5a5834d2f5089a4e6c5bbd64df", size = 296974 }, - { url = "https://files.pythonhosted.org/packages/4d/b8/6faeff9eed8952bed93a77ea1cffae7b946795b88eafd1a60e87a67b09e0/jiter-0.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:702e3520384c88b6e270c55c772d4bd6d7b150608dcc94dea87ceba1b6391248", size = 331897 }, - { url = "https://files.pythonhosted.org/packages/4f/54/1d9a2209b46d39ce6f0cef3ad87c462f9c50312ab84585e6bd5541292b35/jiter-0.5.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:528d742dcde73fad9d63e8242c036ab4a84389a56e04efd854062b660f559544", size = 342962 }, - { url = "https://files.pythonhosted.org/packages/2a/de/90360be7fc54b2b4c2dfe79eb4ed1f659fce9c96682e6a0be4bbe71371f7/jiter-0.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cf80e5fe6ab582c82f0c3331df27a7e1565e2dcf06265afd5173d809cdbf9ba", size = 363844 }, - { url = "https://files.pythonhosted.org/packages/ba/ad/ef32b173191b7a53ea8a6757b80723cba321f8469834825e8c71c96bde17/jiter-0.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:44dfc9ddfb9b51a5626568ef4e55ada462b7328996294fe4d36de02fce42721f", size = 378709 }, - { url = "https://files.pythonhosted.org/packages/07/de/353ce53743c0defbbbd652e89c106a97dbbac4eb42c95920b74b5056b93a/jiter-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c451f7922992751a936b96c5f5b9bb9312243d9b754c34b33d0cb72c84669f4e", size = 319038 }, - { url = "https://files.pythonhosted.org/packages/3f/92/42d47310bf9530b9dece9e2d7c6d51cf419af5586ededaf5e66622d160e2/jiter-0.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:308fce789a2f093dca1ff91ac391f11a9f99c35369117ad5a5c6c4903e1b3e3a", size = 357763 }, - { url = "https://files.pythonhosted.org/packages/bd/8c/2bb76a9a84474d48fdd133d3445db8a4413da4e87c23879d917e000a9d87/jiter-0.5.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7f5ad4a7c6b0d90776fdefa294f662e8a86871e601309643de30bf94bb93a64e", size = 511031 }, - { url = "https://files.pythonhosted.org/packages/33/4f/9f23d79c0795e0a8e56e7988e8785c2dcda27e0ed37977256d50c77c6a19/jiter-0.5.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ea189db75f8eca08807d02ae27929e890c7d47599ce3d0a6a5d41f2419ecf338", size = 493042 }, - { url = "https://files.pythonhosted.org/packages/df/67/8a4f975aa834b8aecdb6b131422390173928fd47f42f269dcc32034ab432/jiter-0.5.0-cp312-none-win32.whl", hash = "sha256:e3bbe3910c724b877846186c25fe3c802e105a2c1fc2b57d6688b9f8772026e4", size = 195405 }, - { url = "https://files.pythonhosted.org/packages/15/81/296b1e25c43db67848728cdab34ac3eb5c5cbb4955ceb3f51ae60d4a5e3d/jiter-0.5.0-cp312-none-win_amd64.whl", hash = "sha256:a586832f70c3f1481732919215f36d41c59ca080fa27a65cf23d9490e75b2ef5", size = 189720 }, + { url = "https://files.pythonhosted.org/packages/f2/f3/8c11e0e87bd5934c414f9b1cfae3cbfd4a938d4669d57cb427e1c4d11a7f/jiter-0.8.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:ca8577f6a413abe29b079bc30f907894d7eb07a865c4df69475e868d73e71c7b", size = 303381 }, + { url = "https://files.pythonhosted.org/packages/ea/28/4cd3f0bcbf40e946bc6a62a82c951afc386a25673d3d8d5ee461f1559bbe/jiter-0.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b25bd626bde7fb51534190c7e3cb97cee89ee76b76d7585580e22f34f5e3f393", size = 311718 }, + { url = "https://files.pythonhosted.org/packages/0d/17/57acab00507e60bd954eaec0837d9d7b119b4117ff49b8a62f2b646f32ed/jiter-0.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c826a221851a8dc028eb6d7d6429ba03184fa3c7e83ae01cd6d3bd1d4bd17d", size = 335465 }, + { url = "https://files.pythonhosted.org/packages/74/b9/1a3ddd2bc95ae17c815b021521020f40c60b32137730126bada962ef32b4/jiter-0.8.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d35c864c2dff13dfd79fb070fc4fc6235d7b9b359efe340e1261deb21b9fcb66", size = 355570 }, + { url = "https://files.pythonhosted.org/packages/78/69/6d29e2296a934199a7d0dde673ecccf98c9c8db44caf0248b3f2b65483cb/jiter-0.8.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f557c55bc2b7676e74d39d19bcb8775ca295c7a028246175d6a8b431e70835e5", size = 381383 }, + { url = "https://files.pythonhosted.org/packages/22/d7/fbc4c3fb1bf65f9be22a32759b539f88e897aeb13fe84ab0266e4423487a/jiter-0.8.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:580ccf358539153db147e40751a0b41688a5ceb275e6f3e93d91c9467f42b2e3", size = 390454 }, + { url = "https://files.pythonhosted.org/packages/4d/a0/3993cda2e267fe679b45d0bcc2cef0b4504b0aa810659cdae9737d6bace9/jiter-0.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af102d3372e917cffce49b521e4c32c497515119dc7bd8a75665e90a718bbf08", size = 345039 }, + { url = "https://files.pythonhosted.org/packages/b9/ef/69c18562b4c09ce88fab5df1dcaf643f6b1a8b970b65216e7221169b81c4/jiter-0.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cadcc978f82397d515bb2683fc0d50103acff2a180552654bb92d6045dec2c49", size = 376200 }, + { url = "https://files.pythonhosted.org/packages/4d/17/0b5a8de46a6ab4d836f70934036278b49b8530c292b29dde3483326d4555/jiter-0.8.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ba5bdf56969cad2019d4e8ffd3f879b5fdc792624129741d3d83fc832fef8c7d", size = 511158 }, + { url = "https://files.pythonhosted.org/packages/6c/b2/c401a0a2554b36c9e6d6e4876b43790d75139cf3936f0222e675cbc23451/jiter-0.8.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3b94a33a241bee9e34b8481cdcaa3d5c2116f575e0226e421bed3f7a6ea71cff", size = 503956 }, + { url = "https://files.pythonhosted.org/packages/d4/02/a0291ed7d72c0ac130f172354ee3cf0b2556b69584de391463a8ee534f40/jiter-0.8.2-cp310-cp310-win32.whl", hash = "sha256:6e5337bf454abddd91bd048ce0dca5134056fc99ca0205258766db35d0a2ea43", size = 202846 }, + { url = "https://files.pythonhosted.org/packages/ad/20/8c988831ae4bf437e29f1671e198fc99ba8fe49f2895f23789acad1d1811/jiter-0.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:4a9220497ca0cb1fe94e3f334f65b9b5102a0b8147646118f020d8ce1de70105", size = 204414 }, + { url = "https://files.pythonhosted.org/packages/cb/b0/c1a7caa7f9dc5f1f6cfa08722867790fe2d3645d6e7170ca280e6e52d163/jiter-0.8.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2dd61c5afc88a4fda7d8b2cf03ae5947c6ac7516d32b7a15bf4b49569a5c076b", size = 303666 }, + { url = "https://files.pythonhosted.org/packages/f5/97/0468bc9eeae43079aaa5feb9267964e496bf13133d469cfdc135498f8dd0/jiter-0.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a6c710d657c8d1d2adbbb5c0b0c6bfcec28fd35bd6b5f016395f9ac43e878a15", size = 311934 }, + { url = "https://files.pythonhosted.org/packages/e5/69/64058e18263d9a5f1e10f90c436853616d5f047d997c37c7b2df11b085ec/jiter-0.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9584de0cd306072635fe4b89742bf26feae858a0683b399ad0c2509011b9dc0", size = 335506 }, + { url = "https://files.pythonhosted.org/packages/9d/14/b747f9a77b8c0542141d77ca1e2a7523e854754af2c339ac89a8b66527d6/jiter-0.8.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5a90a923338531b7970abb063cfc087eebae6ef8ec8139762007188f6bc69a9f", size = 355849 }, + { url = "https://files.pythonhosted.org/packages/53/e2/98a08161db7cc9d0e39bc385415890928ff09709034982f48eccfca40733/jiter-0.8.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21974d246ed0181558087cd9f76e84e8321091ebfb3a93d4c341479a736f099", size = 381700 }, + { url = "https://files.pythonhosted.org/packages/7a/38/1674672954d35bce3b1c9af99d5849f9256ac8f5b672e020ac7821581206/jiter-0.8.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32475a42b2ea7b344069dc1e81445cfc00b9d0e3ca837f0523072432332e9f74", size = 389710 }, + { url = "https://files.pythonhosted.org/packages/f8/9b/92f9da9a9e107d019bcf883cd9125fa1690079f323f5a9d5c6986eeec3c0/jiter-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b9931fd36ee513c26b5bf08c940b0ac875de175341cbdd4fa3be109f0492586", size = 345553 }, + { url = "https://files.pythonhosted.org/packages/44/a6/6d030003394e9659cd0d7136bbeabd82e869849ceccddc34d40abbbbb269/jiter-0.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0820f4a3a59ddced7fce696d86a096d5cc48d32a4183483a17671a61edfddc", size = 376388 }, + { url = "https://files.pythonhosted.org/packages/ad/8d/87b09e648e4aca5f9af89e3ab3cfb93db2d1e633b2f2931ede8dabd9b19a/jiter-0.8.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8ffc86ae5e3e6a93765d49d1ab47b6075a9c978a2b3b80f0f32628f39caa0c88", size = 511226 }, + { url = "https://files.pythonhosted.org/packages/77/95/8008ebe4cdc82eac1c97864a8042ca7e383ed67e0ec17bfd03797045c727/jiter-0.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5127dc1abd809431172bc3fbe8168d6b90556a30bb10acd5ded41c3cfd6f43b6", size = 504134 }, + { url = "https://files.pythonhosted.org/packages/26/0d/3056a74de13e8b2562e4d526de6dac2f65d91ace63a8234deb9284a1d24d/jiter-0.8.2-cp311-cp311-win32.whl", hash = "sha256:66227a2c7b575720c1871c8800d3a0122bb8ee94edb43a5685aa9aceb2782d44", size = 203103 }, + { url = "https://files.pythonhosted.org/packages/4e/1e/7f96b798f356e531ffc0f53dd2f37185fac60fae4d6c612bbbd4639b90aa/jiter-0.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:cde031d8413842a1e7501e9129b8e676e62a657f8ec8166e18a70d94d4682855", size = 206717 }, + { url = "https://files.pythonhosted.org/packages/a1/17/c8747af8ea4e045f57d6cfd6fc180752cab9bc3de0e8a0c9ca4e8af333b1/jiter-0.8.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e6ec2be506e7d6f9527dae9ff4b7f54e68ea44a0ef6b098256ddf895218a2f8f", size = 302027 }, + { url = "https://files.pythonhosted.org/packages/3c/c1/6da849640cd35a41e91085723b76acc818d4b7d92b0b6e5111736ce1dd10/jiter-0.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76e324da7b5da060287c54f2fabd3db5f76468006c811831f051942bf68c9d44", size = 310326 }, + { url = "https://files.pythonhosted.org/packages/06/99/a2bf660d8ccffee9ad7ed46b4f860d2108a148d0ea36043fd16f4dc37e94/jiter-0.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:180a8aea058f7535d1c84183c0362c710f4750bef66630c05f40c93c2b152a0f", size = 334242 }, + { url = "https://files.pythonhosted.org/packages/a7/5f/cea1c17864828731f11427b9d1ab7f24764dbd9aaf4648a7f851164d2718/jiter-0.8.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:025337859077b41548bdcbabe38698bcd93cfe10b06ff66617a48ff92c9aec60", size = 356654 }, + { url = "https://files.pythonhosted.org/packages/e9/13/62774b7e5e7f5d5043efe1d0f94ead66e6d0f894ae010adb56b3f788de71/jiter-0.8.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecff0dc14f409599bbcafa7e470c00b80f17abc14d1405d38ab02e4b42e55b57", size = 379967 }, + { url = "https://files.pythonhosted.org/packages/ec/fb/096b34c553bb0bd3f2289d5013dcad6074948b8d55212aa13a10d44c5326/jiter-0.8.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffd9fee7d0775ebaba131f7ca2e2d83839a62ad65e8e02fe2bd8fc975cedeb9e", size = 389252 }, + { url = "https://files.pythonhosted.org/packages/17/61/beea645c0bf398ced8b199e377b61eb999d8e46e053bb285c91c3d3eaab0/jiter-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14601dcac4889e0a1c75ccf6a0e4baf70dbc75041e51bcf8d0e9274519df6887", size = 345490 }, + { url = "https://files.pythonhosted.org/packages/d5/df/834aa17ad5dcc3cf0118821da0a0cf1589ea7db9832589278553640366bc/jiter-0.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92249669925bc1c54fcd2ec73f70f2c1d6a817928480ee1c65af5f6b81cdf12d", size = 376991 }, + { url = "https://files.pythonhosted.org/packages/67/80/87d140399d382fb4ea5b3d56e7ecaa4efdca17cd7411ff904c1517855314/jiter-0.8.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e725edd0929fa79f8349ab4ec7f81c714df51dc4e991539a578e5018fa4a7152", size = 510822 }, + { url = "https://files.pythonhosted.org/packages/5c/37/3394bb47bac1ad2cb0465601f86828a0518d07828a650722e55268cdb7e6/jiter-0.8.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf55846c7b7a680eebaf9c3c48d630e1bf51bdf76c68a5f654b8524335b0ad29", size = 503730 }, + { url = "https://files.pythonhosted.org/packages/f9/e2/253fc1fa59103bb4e3aa0665d6ceb1818df1cd7bf3eb492c4dad229b1cd4/jiter-0.8.2-cp312-cp312-win32.whl", hash = "sha256:7efe4853ecd3d6110301665a5178b9856be7e2a9485f49d91aa4d737ad2ae49e", size = 203375 }, + { url = "https://files.pythonhosted.org/packages/41/69/6d4bbe66b3b3b4507e47aa1dd5d075919ad242b4b1115b3f80eecd443687/jiter-0.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:83c0efd80b29695058d0fd2fa8a556490dbce9804eac3e281f373bbc99045f6c", size = 204740 }, + { url = "https://files.pythonhosted.org/packages/6c/b0/bfa1f6f2c956b948802ef5a021281978bf53b7a6ca54bb126fd88a5d014e/jiter-0.8.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ca1f08b8e43dc3bd0594c992fb1fd2f7ce87f7bf0d44358198d6da8034afdf84", size = 301190 }, + { url = "https://files.pythonhosted.org/packages/a4/8f/396ddb4e292b5ea57e45ade5dc48229556b9044bad29a3b4b2dddeaedd52/jiter-0.8.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5672a86d55416ccd214c778efccf3266b84f87b89063b582167d803246354be4", size = 309334 }, + { url = "https://files.pythonhosted.org/packages/7f/68/805978f2f446fa6362ba0cc2e4489b945695940656edd844e110a61c98f8/jiter-0.8.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58dc9bc9767a1101f4e5e22db1b652161a225874d66f0e5cb8e2c7d1c438b587", size = 333918 }, + { url = "https://files.pythonhosted.org/packages/b3/99/0f71f7be667c33403fa9706e5b50583ae5106d96fab997fa7e2f38ee8347/jiter-0.8.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:37b2998606d6dadbb5ccda959a33d6a5e853252d921fec1792fc902351bb4e2c", size = 356057 }, + { url = "https://files.pythonhosted.org/packages/8d/50/a82796e421a22b699ee4d2ce527e5bcb29471a2351cbdc931819d941a167/jiter-0.8.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ab9a87f3784eb0e098f84a32670cfe4a79cb6512fd8f42ae3d0709f06405d18", size = 379790 }, + { url = "https://files.pythonhosted.org/packages/3c/31/10fb012b00f6d83342ca9e2c9618869ab449f1aa78c8f1b2193a6b49647c/jiter-0.8.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:79aec8172b9e3c6d05fd4b219d5de1ac616bd8da934107325a6c0d0e866a21b6", size = 388285 }, + { url = "https://files.pythonhosted.org/packages/c8/81/f15ebf7de57be488aa22944bf4274962aca8092e4f7817f92ffa50d3ee46/jiter-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:711e408732d4e9a0208008e5892c2966b485c783cd2d9a681f3eb147cf36c7ef", size = 344764 }, + { url = "https://files.pythonhosted.org/packages/b3/e8/0cae550d72b48829ba653eb348cdc25f3f06f8a62363723702ec18e7be9c/jiter-0.8.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:653cf462db4e8c41995e33d865965e79641ef45369d8a11f54cd30888b7e6ff1", size = 376620 }, + { url = "https://files.pythonhosted.org/packages/b8/50/e5478ff9d82534a944c03b63bc217c5f37019d4a34d288db0f079b13c10b/jiter-0.8.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:9c63eaef32b7bebac8ebebf4dabebdbc6769a09c127294db6babee38e9f405b9", size = 510402 }, + { url = "https://files.pythonhosted.org/packages/8e/1e/3de48bbebbc8f7025bd454cedc8c62378c0e32dd483dece5f4a814a5cb55/jiter-0.8.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:eb21aaa9a200d0a80dacc7a81038d2e476ffe473ffdd9c91eb745d623561de05", size = 503018 }, + { url = "https://files.pythonhosted.org/packages/d5/cd/d5a5501d72a11fe3e5fd65c78c884e5164eefe80077680533919be22d3a3/jiter-0.8.2-cp313-cp313-win32.whl", hash = "sha256:789361ed945d8d42850f919342a8665d2dc79e7e44ca1c97cc786966a21f627a", size = 203190 }, + { url = "https://files.pythonhosted.org/packages/51/bf/e5ca301245ba951447e3ad677a02a64a8845b185de2603dabd83e1e4b9c6/jiter-0.8.2-cp313-cp313-win_amd64.whl", hash = "sha256:ab7f43235d71e03b941c1630f4b6e3055d46b6cb8728a17663eaac9d8e83a865", size = 203551 }, + { url = "https://files.pythonhosted.org/packages/2f/3c/71a491952c37b87d127790dd7a0b1ebea0514c6b6ad30085b16bbe00aee6/jiter-0.8.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b426f72cd77da3fec300ed3bc990895e2dd6b49e3bfe6c438592a3ba660e41ca", size = 308347 }, + { url = "https://files.pythonhosted.org/packages/a0/4c/c02408042e6a7605ec063daed138e07b982fdb98467deaaf1c90950cf2c6/jiter-0.8.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2dd880785088ff2ad21ffee205e58a8c1ddabc63612444ae41e5e4b321b39c0", size = 342875 }, + { url = "https://files.pythonhosted.org/packages/91/61/c80ef80ed8a0a21158e289ef70dac01e351d929a1c30cb0f49be60772547/jiter-0.8.2-cp313-cp313t-win_amd64.whl", hash = "sha256:3ac9f578c46f22405ff7f8b1f5848fb753cc4b8377fbec8470a7dc3997ca7566", size = 202374 }, ] [[package]] @@ -1985,6 +2114,22 @@ version = "1.4.7" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/85/4d/2255e1c76304cbd60b48cee302b66d1dde4468dc5b1160e4b7cb43778f2a/kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60", size = 97286 } wheels = [ + { url = "https://files.pythonhosted.org/packages/97/14/fc943dd65268a96347472b4fbe5dcc2f6f55034516f80576cd0dd3a8930f/kiwisolver-1.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8a9c83f75223d5e48b0bc9cb1bf2776cf01563e00ade8775ffe13b0b6e1af3a6", size = 122440 }, + { url = "https://files.pythonhosted.org/packages/1e/46/e68fed66236b69dd02fcdb506218c05ac0e39745d696d22709498896875d/kiwisolver-1.4.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:58370b1ffbd35407444d57057b57da5d6549d2d854fa30249771775c63b5fe17", size = 65758 }, + { url = "https://files.pythonhosted.org/packages/ef/fa/65de49c85838681fc9cb05de2a68067a683717321e01ddafb5b8024286f0/kiwisolver-1.4.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa0abdf853e09aff551db11fce173e2177d00786c688203f52c87ad7fcd91ef9", size = 64311 }, + { url = "https://files.pythonhosted.org/packages/42/9c/cc8d90f6ef550f65443bad5872ffa68f3dee36de4974768628bea7c14979/kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8d53103597a252fb3ab8b5845af04c7a26d5e7ea8122303dd7a021176a87e8b9", size = 1637109 }, + { url = "https://files.pythonhosted.org/packages/55/91/0a57ce324caf2ff5403edab71c508dd8f648094b18cfbb4c8cc0fde4a6ac/kiwisolver-1.4.7-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:88f17c5ffa8e9462fb79f62746428dd57b46eb931698e42e990ad63103f35e6c", size = 1617814 }, + { url = "https://files.pythonhosted.org/packages/12/5d/c36140313f2510e20207708adf36ae4919416d697ee0236b0ddfb6fd1050/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a9ca9c710d598fd75ee5de59d5bda2684d9db36a9f50b6125eaea3969c2599", size = 1400881 }, + { url = "https://files.pythonhosted.org/packages/56/d0/786e524f9ed648324a466ca8df86298780ef2b29c25313d9a4f16992d3cf/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f4d742cb7af1c28303a51b7a27aaee540e71bb8e24f68c736f6f2ffc82f2bf05", size = 1512972 }, + { url = "https://files.pythonhosted.org/packages/67/5a/77851f2f201e6141d63c10a0708e996a1363efaf9e1609ad0441b343763b/kiwisolver-1.4.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28c7fea2196bf4c2f8d46a0415c77a1c480cc0724722f23d7410ffe9842c407", size = 1444787 }, + { url = "https://files.pythonhosted.org/packages/06/5f/1f5eaab84355885e224a6fc8d73089e8713dc7e91c121f00b9a1c58a2195/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e968b84db54f9d42046cf154e02911e39c0435c9801681e3fc9ce8a3c4130278", size = 2199212 }, + { url = "https://files.pythonhosted.org/packages/b5/28/9152a3bfe976a0ae21d445415defc9d1cd8614b2910b7614b30b27a47270/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0c18ec74c0472de033e1bebb2911c3c310eef5649133dd0bedf2a169a1b269e5", size = 2346399 }, + { url = "https://files.pythonhosted.org/packages/26/f6/453d1904c52ac3b400f4d5e240ac5fec25263716723e44be65f4d7149d13/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8f0ea6da6d393d8b2e187e6a5e3fb81f5862010a40c3945e2c6d12ae45cfb2ad", size = 2308688 }, + { url = "https://files.pythonhosted.org/packages/5a/9a/d4968499441b9ae187e81745e3277a8b4d7c60840a52dc9d535a7909fac3/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:f106407dda69ae456dd1227966bf445b157ccc80ba0dff3802bb63f30b74e895", size = 2445493 }, + { url = "https://files.pythonhosted.org/packages/07/c9/032267192e7828520dacb64dfdb1d74f292765f179e467c1cba97687f17d/kiwisolver-1.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84ec80df401cfee1457063732d90022f93951944b5b58975d34ab56bb150dfb3", size = 2262191 }, + { url = "https://files.pythonhosted.org/packages/6c/ad/db0aedb638a58b2951da46ddaeecf204be8b4f5454df020d850c7fa8dca8/kiwisolver-1.4.7-cp310-cp310-win32.whl", hash = "sha256:71bb308552200fb2c195e35ef05de12f0c878c07fc91c270eb3d6e41698c3bcc", size = 46644 }, + { url = "https://files.pythonhosted.org/packages/12/ca/d0f7b7ffbb0be1e7c2258b53554efec1fd652921f10d7d85045aff93ab61/kiwisolver-1.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:44756f9fd339de0fb6ee4f8c1696cfd19b2422e0d70b4cefc1cc7f1f64045a8c", size = 55877 }, + { url = "https://files.pythonhosted.org/packages/97/6c/cfcc128672f47a3e3c0d918ecb67830600078b025bfc32d858f2e2d5c6a4/kiwisolver-1.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:78a42513018c41c2ffd262eb676442315cbfe3c44eed82385c2ed043bc63210a", size = 48347 }, { url = "https://files.pythonhosted.org/packages/e9/44/77429fa0a58f941d6e1c58da9efe08597d2e86bf2b2cce6626834f49d07b/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2b0e12a42fb4e72d509fc994713d099cbb15ebf1103545e8a45f14da2dfca54", size = 122442 }, { url = "https://files.pythonhosted.org/packages/e5/20/8c75caed8f2462d63c7fd65e16c832b8f76cda331ac9e615e914ee80bac9/kiwisolver-1.4.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2a8781ac3edc42ea4b90bc23e7d37b665d89423818e26eb6df90698aa2287c95", size = 65762 }, { url = "https://files.pythonhosted.org/packages/f4/98/fe010f15dc7230f45bc4cf367b012d651367fd203caaa992fd1f5963560e/kiwisolver-1.4.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:46707a10836894b559e04b0fd143e343945c97fd170d69a2d26d640b4e297935", size = 64319 }, @@ -2033,30 +2178,34 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a8/b2/15f7f556df0a6e5b3772a1e076a9d9f6c538ce5f05bd590eca8106508e06/kiwisolver-1.4.7-cp313-cp313-win32.whl", hash = "sha256:f4c9aee212bc89d4e13f58be11a56cc8036cabad119259d12ace14b34476fd07", size = 46364 }, { url = "https://files.pythonhosted.org/packages/0b/db/32e897e43a330eee8e4770bfd2737a9584b23e33587a0812b8e20aac38f7/kiwisolver-1.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:8a3ec5aa8e38fc4c8af308917ce12c536f1c88452ce554027e55b22cbbfbff76", size = 55887 }, { url = "https://files.pythonhosted.org/packages/c8/a4/df2bdca5270ca85fd25253049eb6708d4127be2ed0e5c2650217450b59e9/kiwisolver-1.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:76c8094ac20ec259471ac53e774623eb62e6e1f56cd8690c67ce6ce4fcb05650", size = 48530 }, + { url = "https://files.pythonhosted.org/packages/ac/59/741b79775d67ab67ced9bb38552da688c0305c16e7ee24bba7a2be253fb7/kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:94252291e3fe68001b1dd747b4c0b3be12582839b95ad4d1b641924d68fd4643", size = 59491 }, + { url = "https://files.pythonhosted.org/packages/58/cc/fb239294c29a5656e99e3527f7369b174dd9cc7c3ef2dea7cb3c54a8737b/kiwisolver-1.4.7-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5b7dfa3b546da08a9f622bb6becdb14b3e24aaa30adba66749d38f3cc7ea9706", size = 57648 }, + { url = "https://files.pythonhosted.org/packages/3b/ef/2f009ac1f7aab9f81efb2d837301d255279d618d27b6015780115ac64bdd/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd3de6481f4ed8b734da5df134cd5a6a64fe32124fe83dde1e5b5f29fe30b1e6", size = 84257 }, + { url = "https://files.pythonhosted.org/packages/81/e1/c64f50987f85b68b1c52b464bb5bf73e71570c0f7782d626d1eb283ad620/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a91b5f9f1205845d488c928e8570dcb62b893372f63b8b6e98b863ebd2368ff2", size = 80906 }, + { url = "https://files.pythonhosted.org/packages/fd/71/1687c5c0a0be2cee39a5c9c389e546f9c6e215e46b691d00d9f646892083/kiwisolver-1.4.7-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fa14dbd66b8b8f470d5fc79c089a66185619d31645f9b0773b88b19f7223c4", size = 79951 }, + { url = "https://files.pythonhosted.org/packages/ea/8b/d7497df4a1cae9367adf21665dd1f896c2a7aeb8769ad77b662c5e2bcce7/kiwisolver-1.4.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:eb542fe7933aa09d8d8f9d9097ef37532a7df6497819d16efe4359890a2f417a", size = 55715 }, ] [[package]] name = "lancedb" -version = "0.15.0" +version = "0.16.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "attrs" }, - { name = "cachetools" }, { name = "deprecation" }, + { name = "nest-asyncio" }, { name = "overrides" }, { name = "packaging" }, { name = "pydantic" }, { name = "pylance" }, - { name = "requests" }, { name = "tqdm" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/b3/c0da4a07137781b35f70d8630baf656a30e5b05be6cbe5dacfe686c69229/lancedb-0.15.0-cp38-abi3-macosx_10_15_x86_64.whl", hash = "sha256:3eacc9c6766594874a7d54e822550c7991d64b14571251f1e4b43985cc4f3cdb", size = 23926022 }, - { url = "https://files.pythonhosted.org/packages/95/cc/8333fd74e82a4a088b522e76dc68f225054b3527d885e01c8ef1806dab3f/lancedb-0.15.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:48c28571f79805e11a3bca09486fd1c8d6c3f7762f7692cca1c5e0cdea6bfa20", size = 22412308 }, - { url = "https://files.pythonhosted.org/packages/85/ae/588f4587f2096e1de27d255c0e5557326e71c8e26bc19e516bb8f592785d/lancedb-0.15.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e349a1671943b75a536d2589b5a12f685c129149b0cad266e12555f9501f8ccd", size = 27653096 }, - { url = "https://files.pythonhosted.org/packages/76/8d/fb7148ab42227aff5fc72d5f278dadf1c71bda923a44896aa8c9e2e79b48/lancedb-0.15.0-cp38-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:c567866b08222457e1aca51df9abeb871aad8fed0db58c004365629c05f8ecbb", size = 25701158 }, - { url = "https://files.pythonhosted.org/packages/e3/a8/67a8dc6fd7a57bde6b9f75b10368805db46b109adc7d634d7ce45bc655f3/lancedb-0.15.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:223cd77fa84a1317301ad4771de58ac5685d58cee03f0a20ba4bc95517b5c79f", size = 27123388 }, - { url = "https://files.pythonhosted.org/packages/70/cc/beb57ff12a5f8f37f8d469fa2399ac76b2909c76f38e3d61cd07f51c288d/lancedb-0.15.0-cp38-abi3-win_amd64.whl", hash = "sha256:66d251f22709c72f819aace9e665127f1040845d88b25c1f088c4beb36087f7e", size = 24838652 }, + { url = "https://files.pythonhosted.org/packages/73/a6/a9c5077e8f0391b637c5a6e7a2adfc43418e1949a931149bd14f10c87871/lancedb-0.16.0-cp38-abi3-macosx_10_15_x86_64.whl", hash = "sha256:3521c53a116bfbb054318a35b2297cd01d57e1db500de4ba3cc7fad6c4add98c", size = 24138660 }, + { url = "https://files.pythonhosted.org/packages/b9/25/25f8494e164ec83212002018053271865ae06ca4cc5976e3987515fdeb2a/lancedb-0.16.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:8e0968e6b7a3611437dc4c4f468aafb4e665aa315ee0b201e589ea1fa433b5b6", size = 22616630 }, + { url = "https://files.pythonhosted.org/packages/ac/8d/e3afab600d9437db4d4f8eb1dac9b493778ec0d37e374313b39fa146917e/lancedb-0.16.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e466b2c734f8dde5d037b082cff1ccd9a913e7b87ecc73efa7d921ed1aa6ded", size = 27874448 }, + { url = "https://files.pythonhosted.org/packages/f6/0d/39692b1e43e02860b0fc827b5cf2d61b377de8096adc44f0ce2b4cd42d97/lancedb-0.16.0-cp38-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:84980ccd4a170a5a07f83c85f90841e6995a05dc92cadedcb806401bc60f832b", size = 25920255 }, + { url = "https://files.pythonhosted.org/packages/d7/9e/e027daeec233623fa1a0bee9479f40ef819f9af0dd873ed93062f78b72e0/lancedb-0.16.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:7135cd4733c3f7bcff7bc5f017bb79dda8e23dc3530476e0b91a4cb3ffef9e2e", size = 27354357 }, + { url = "https://files.pythonhosted.org/packages/fc/88/65a3540a0e66f5a1636b0fea715c475e733ca4394452c1095dadfcfe7708/lancedb-0.16.0-cp38-abi3-win_amd64.whl", hash = "sha256:357a4cd2d7c5bf9677f84f7aa408d6c98c9d9012b3110979b126d40d30530e12", size = 25073405 }, ] [[package]] @@ -2065,6 +2214,7 @@ version = "0.3.11" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, + { name = "async-timeout", marker = "python_full_version < '3.11'" }, { name = "langchain-core" }, { name = "langchain-text-splitters" }, { name = "langsmith" }, @@ -2193,29 +2343,29 @@ wheels = [ [[package]] name = "litellm" -version = "1.49.1" +version = "1.57.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, { name = "click" }, + { name = "httpx" }, { name = "importlib-metadata" }, { name = "jinja2" }, { name = "jsonschema" }, { name = "openai" }, { name = "pydantic" }, { name = "python-dotenv" }, - { name = "requests" }, { name = "tiktoken" }, { name = "tokenizers" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c6/84/edd715fd552c72859fe768412685952993b6238592040d5361850108ad4a/litellm-1.49.1.tar.gz", hash = "sha256:f51450ad823c8bdf057017009ae8bcce1a2810690b2f0d9dcdaff04ddc68209a", size = 6068806 } +sdist = { url = "https://files.pythonhosted.org/packages/d4/1c/e5669149f8f1d57103e97c28a8f06fc9e111370d4b6d0b4dfc76f4a11fe4/litellm-1.57.2.tar.gz", hash = "sha256:0a07c4e288f4bd9033335d5606d7da497f1193d51cf262b96812f40b8842a842", size = 6299758 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/69/4fbc6734c7f7fb497b62c27b4ffa747a72dbca6a15b5c18bf570e3808007/litellm-1.49.1-py3-none-any.whl", hash = "sha256:2ba6689fe4ea3b0d69f56f2843caff6422497489e6252943b13ef1463f016728", size = 6282095 }, + { url = "https://files.pythonhosted.org/packages/9a/46/d96a6902c3529f96f8ea1fc2ba08fd48b50652141ddce9bf8faf0acdbbe6/litellm-1.57.2-py3-none-any.whl", hash = "sha256:b572c0d3d3c33ff3a4d18928ac6f051d10ac159814017a817d88ec7af9a8600c", size = 6582805 }, ] [[package]] name = "llama-index-core" -version = "0.11.23" +version = "0.12.10.post1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, @@ -2241,9 +2391,9 @@ dependencies = [ { name = "typing-inspect" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8a/4f/496d43c467ca2497f9c7632ac8ebd15049beb05115e9f0546de3e19ddddd/llama_index_core-0.11.23.tar.gz", hash = "sha256:e150859696a0eae169fe19323f46e9a31af2c12c3182012e4d0353ea8eb06d24", size = 1325843 } +sdist = { url = "https://files.pythonhosted.org/packages/f9/0b/945ed217995e1ab685eba9a35b530d50b9f5853af88446acaff0ce4f89bb/llama_index_core-0.12.10.post1.tar.gz", hash = "sha256:af27bea4d1494ba84983a649976e60e3de677a73946aa45ed12ce27e3a623ddf", size = 1330881 } wheels = [ - { url = "https://files.pythonhosted.org/packages/99/67/96ed984ebf472fe085bd5d2847c4f284cfe416805c1d6e705682a559c9fc/llama_index_core-0.11.23-py3-none-any.whl", hash = "sha256:25a0cb4a055bfb348655ca4acd1b475529bd8537a7b81874ef14ed13f56e06c1", size = 1576555 }, + { url = "https://files.pythonhosted.org/packages/3f/04/e2bad3ebef965dd0650544cdd869befe63fd02b275a0867f04e15964a0a9/llama_index_core-0.12.10.post1-py3-none-any.whl", hash = "sha256:897e8cd4efeff6842580b043bdf4008ac60f693df1de2bfd975307a4845707c2", size = 1583668 }, ] [[package]] @@ -2252,6 +2402,23 @@ version = "5.3.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/e7/6b/20c3a4b24751377aaa6307eb230b66701024012c29dd374999cc92983269/lxml-5.3.0.tar.gz", hash = "sha256:4e109ca30d1edec1ac60cdbe341905dc3b8f55b16855e03a54aaf59e51ec8c6f", size = 3679318 } wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/ce/2789e39eddf2b13fac29878bfa465f0910eb6b0096e29090e5176bc8cf43/lxml-5.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:dd36439be765e2dde7660212b5275641edbc813e7b24668831a5c8ac91180656", size = 8124570 }, + { url = "https://files.pythonhosted.org/packages/24/a8/f4010166a25d41715527129af2675981a50d3bbf7df09c5d9ab8ca24fbf9/lxml-5.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ae5fe5c4b525aa82b8076c1a59d642c17b6e8739ecf852522c6321852178119d", size = 4413042 }, + { url = "https://files.pythonhosted.org/packages/41/a4/7e45756cecdd7577ddf67a68b69c1db0f5ddbf0c9f65021ee769165ffc5a/lxml-5.3.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:501d0d7e26b4d261fca8132854d845e4988097611ba2531408ec91cf3fd9d20a", size = 5139213 }, + { url = "https://files.pythonhosted.org/packages/02/e2/ecf845b12323c92748077e1818b64e8b4dba509a4cb12920b3762ebe7552/lxml-5.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb66442c2546446944437df74379e9cf9e9db353e61301d1a0e26482f43f0dd8", size = 4838814 }, + { url = "https://files.pythonhosted.org/packages/12/91/619f9fb72cf75e9ceb8700706f7276f23995f6ad757e6d400fbe35ca4990/lxml-5.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e41506fec7a7f9405b14aa2d5c8abbb4dbbd09d88f9496958b6d00cb4d45330", size = 5425084 }, + { url = "https://files.pythonhosted.org/packages/25/3b/162a85a8f0fd2a3032ec3f936636911c6e9523a8e263fffcfd581ce98b54/lxml-5.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f7d4a670107d75dfe5ad080bed6c341d18c4442f9378c9f58e5851e86eb79965", size = 4875993 }, + { url = "https://files.pythonhosted.org/packages/43/af/dd3f58cc7d946da6ae42909629a2b1d5dd2d1b583334d4af9396697d6863/lxml-5.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41ce1f1e2c7755abfc7e759dc34d7d05fd221723ff822947132dc934d122fe22", size = 5012462 }, + { url = "https://files.pythonhosted.org/packages/69/c1/5ea46b2d4c98f5bf5c83fffab8a0ad293c9bc74df9ecfbafef10f77f7201/lxml-5.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:44264ecae91b30e5633013fb66f6ddd05c006d3e0e884f75ce0b4755b3e3847b", size = 4815288 }, + { url = "https://files.pythonhosted.org/packages/1d/51/a0acca077ad35da458f4d3f729ef98effd2b90f003440d35fc36323f8ae6/lxml-5.3.0-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:3c174dc350d3ec52deb77f2faf05c439331d6ed5e702fc247ccb4e6b62d884b7", size = 5472435 }, + { url = "https://files.pythonhosted.org/packages/4d/6b/0989c9368986961a6b0f55b46c80404c4b758417acdb6d87bfc3bd5f4967/lxml-5.3.0-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:2dfab5fa6a28a0b60a20638dc48e6343c02ea9933e3279ccb132f555a62323d8", size = 4976354 }, + { url = "https://files.pythonhosted.org/packages/05/9e/87492d03ff604fbf656ed2bf3e2e8d28f5d58ea1f00ff27ac27b06509079/lxml-5.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b1c8c20847b9f34e98080da785bb2336ea982e7f913eed5809e5a3c872900f32", size = 5029973 }, + { url = "https://files.pythonhosted.org/packages/f9/cc/9ae1baf5472af88e19e2c454b3710c1be9ecafb20eb474eeabcd88a055d2/lxml-5.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2c86bf781b12ba417f64f3422cfc302523ac9cd1d8ae8c0f92a1c66e56ef2e86", size = 4888837 }, + { url = "https://files.pythonhosted.org/packages/d2/10/5594ffaec8c120d75b17e3ad23439b740a51549a9b5fd7484b2179adfe8f/lxml-5.3.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c162b216070f280fa7da844531169be0baf9ccb17263cf5a8bf876fcd3117fa5", size = 5530555 }, + { url = "https://files.pythonhosted.org/packages/ea/9b/de17f05377c8833343b629905571fb06cff2028f15a6f58ae2267662e341/lxml-5.3.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:36aef61a1678cb778097b4a6eeae96a69875d51d1e8f4d4b491ab3cfb54b5a03", size = 5405314 }, + { url = "https://files.pythonhosted.org/packages/8a/b4/227be0f1f3cca8255925985164c3838b8b36e441ff0cc10c1d3c6bdba031/lxml-5.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f65e5120863c2b266dbcc927b306c5b78e502c71edf3295dfcb9501ec96e5fc7", size = 5079303 }, + { url = "https://files.pythonhosted.org/packages/5c/ee/19abcebb7fc40319bb71cd6adefa1ad94d09b5660228715854d6cc420713/lxml-5.3.0-cp310-cp310-win32.whl", hash = "sha256:ef0c1fe22171dd7c7c27147f2e9c3e86f8bdf473fed75f16b0c2e84a5030ce80", size = 3475126 }, + { url = "https://files.pythonhosted.org/packages/a1/35/183d32551447e280032b2331738cd850da435a42f850b71ebeaab42c1313/lxml-5.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:052d99051e77a4f3e8482c65014cf6372e61b0a6f4fe9edb98503bb5364cfee3", size = 3805065 }, { url = "https://files.pythonhosted.org/packages/5c/a8/449faa2a3cbe6a99f8d38dcd51a3ee8844c17862841a6f769ea7c2a9cd0f/lxml-5.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:74bcb423462233bc5d6066e4e98b0264e7c1bed7541fff2f4e34fe6b21563c8b", size = 8141056 }, { url = "https://files.pythonhosted.org/packages/ac/8a/ae6325e994e2052de92f894363b038351c50ee38749d30cc6b6d96aaf90f/lxml-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a3d819eb6f9b8677f57f9664265d0a10dd6551d227afb4af2b9cd7bdc2ccbf18", size = 4425238 }, { url = "https://files.pythonhosted.org/packages/f8/fb/128dddb7f9086236bce0eeae2bfb316d138b49b159f50bc681d56c1bdd19/lxml-5.3.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b8f5db71b28b8c404956ddf79575ea77aa8b1538e8b2ef9ec877945b3f46442", size = 5095197 }, @@ -2303,6 +2470,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b6/17/71e9984cf0570cd202ac0a1c9ed5c1b8889b0fc8dc736f5ef0ffb181c284/lxml-5.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:df5c7333167b9674aa8ae1d4008fa4bc17a313cc490b2cca27838bbdcc6bb15b", size = 5011053 }, { url = "https://files.pythonhosted.org/packages/69/68/9f7e6d3312a91e30829368c2b3217e750adef12a6f8eb10498249f4e8d72/lxml-5.3.0-cp313-cp313-win32.whl", hash = "sha256:c802e1c2ed9f0c06a65bc4ed0189d000ada8049312cfeab6ca635e39c9608957", size = 3485634 }, { url = "https://files.pythonhosted.org/packages/7d/db/214290d58ad68c587bd5d6af3d34e56830438733d0d0856c0275fde43652/lxml-5.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:406246b96d552e0503e17a1006fd27edac678b3fcc9f1be71a2f94b4ff61528d", size = 3814417 }, + { url = "https://files.pythonhosted.org/packages/99/f7/b73a431c8500565aa500e99e60b448d305eaf7c0b4c893c7c5a8a69cc595/lxml-5.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7b1cd427cb0d5f7393c31b7496419da594fe600e6fdc4b105a54f82405e6626c", size = 3925431 }, + { url = "https://files.pythonhosted.org/packages/db/48/4a206623c0d093d0e3b15f415ffb4345b0bdf661a3d0b15a112948c033c7/lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51806cfe0279e06ed8500ce19479d757db42a30fd509940b1701be9c86a5ff9a", size = 4216683 }, + { url = "https://files.pythonhosted.org/packages/54/47/577820c45dd954523ae8453b632d91e76da94ca6d9ee40d8c98dd86f916b/lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee70d08fd60c9565ba8190f41a46a54096afa0eeb8f76bd66f2c25d3b1b83005", size = 4326732 }, + { url = "https://files.pythonhosted.org/packages/68/de/96cb6d3269bc994b4f5ede8ca7bf0840f5de0a278bc6e50cb317ff71cafa/lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8dc2c0395bea8254d8daebc76dcf8eb3a95ec2a46fa6fae5eaccee366bfe02ce", size = 4218377 }, + { url = "https://files.pythonhosted.org/packages/a5/43/19b1ef6cbffa4244a217f95cc5f41a6cb4720fed33510a49670b03c5f1a0/lxml-5.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6ba0d3dcac281aad8a0e5b14c7ed6f9fa89c8612b47939fc94f80b16e2e9bc83", size = 4351237 }, + { url = "https://files.pythonhosted.org/packages/ba/b2/6a22fb5c0885da3b00e116aee81f0b829ec9ac8f736cd414b4a09413fc7d/lxml-5.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6e91cf736959057f7aac7adfc83481e03615a8e8dd5758aa1d95ea69e8931dba", size = 3487557 }, ] [[package]] @@ -2353,6 +2526,16 @@ version = "3.0.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } wheels = [ + { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357 }, + { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393 }, + { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732 }, + { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866 }, + { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964 }, + { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977 }, + { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366 }, + { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091 }, + { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065 }, + { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514 }, { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353 }, { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392 }, { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984 }, @@ -2424,6 +2607,12 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/68/dd/fa2e1a45fce2d09f4aea3cee169760e672c8262325aa5796c49d543dc7e6/matplotlib-3.10.0.tar.gz", hash = "sha256:b886d02a581b96704c9d1ffe55709e49b4d2d52709ccebc4be42db856e511278", size = 36686418 } wheels = [ + { url = "https://files.pythonhosted.org/packages/09/ec/3cdff7b5239adaaacefcc4f77c316dfbbdf853c4ed2beec467e0fec31b9f/matplotlib-3.10.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2c5829a5a1dd5a71f0e31e6e8bb449bc0ee9dbfb05ad28fc0c6b55101b3a4be6", size = 8160551 }, + { url = "https://files.pythonhosted.org/packages/41/f2/b518f2c7f29895c9b167bf79f8529c63383ae94eaf49a247a4528e9a148d/matplotlib-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2a43cbefe22d653ab34bb55d42384ed30f611bcbdea1f8d7f431011a2e1c62e", size = 8034853 }, + { url = "https://files.pythonhosted.org/packages/ed/8d/45754b4affdb8f0d1a44e4e2bcd932cdf35b256b60d5eda9f455bb293ed0/matplotlib-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:607b16c8a73943df110f99ee2e940b8a1cbf9714b65307c040d422558397dac5", size = 8446724 }, + { url = "https://files.pythonhosted.org/packages/09/5a/a113495110ae3e3395c72d82d7bc4802902e46dc797f6b041e572f195c56/matplotlib-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01d2b19f13aeec2e759414d3bfe19ddfb16b13a1250add08d46d5ff6f9be83c6", size = 8583905 }, + { url = "https://files.pythonhosted.org/packages/12/b1/8b1655b4c9ed4600c817c419f7eaaf70082630efd7556a5b2e77a8a3cdaf/matplotlib-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e6c6461e1fc63df30bf6f80f0b93f5b6784299f721bc28530477acd51bfc3d1", size = 9395223 }, + { url = "https://files.pythonhosted.org/packages/5a/85/b9a54d64585a6b8737a78a61897450403c30f39e0bd3214270bb0b96f002/matplotlib-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:994c07b9d9fe8d25951e3202a68c17900679274dadfc1248738dcfa1bd40d7f3", size = 8025355 }, { url = "https://files.pythonhosted.org/packages/0c/f1/e37f6c84d252867d7ddc418fff70fc661cfd363179263b08e52e8b748e30/matplotlib-3.10.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:fd44fc75522f58612ec4a33958a7e5552562b7705b42ef1b4f8c0818e304a363", size = 8171677 }, { url = "https://files.pythonhosted.org/packages/c7/8b/92e9da1f28310a1f6572b5c55097b0c0ceb5e27486d85fb73b54f5a9b939/matplotlib-3.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c58a9622d5dbeb668f407f35f4e6bfac34bb9ecdcc81680c04d0258169747997", size = 8044945 }, { url = "https://files.pythonhosted.org/packages/c5/cb/49e83f0fd066937a5bd3bc5c5d63093703f3637b2824df8d856e0558beef/matplotlib-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:845d96568ec873be63f25fa80e9e7fae4be854a66a7e2f0c8ccc99e94a8bd4ef", size = 8458269 }, @@ -2448,6 +2637,9 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c2/2d/b5949fb2b76e9b47ab05e25a5f5f887c70de20d8b0cbc704a4e2ee71c786/matplotlib-3.10.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d907fddb39f923d011875452ff1eca29a9e7f21722b873e90db32e5d8ddff12e", size = 8610334 }, { url = "https://files.pythonhosted.org/packages/d6/9a/6e3c799d5134d9af44b01c787e1360bee38cf51850506ea2e743a787700b/matplotlib-3.10.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3b427392354d10975c1d0f4ee18aa5844640b512d5311ef32efd4dd7db106ede", size = 9406777 }, { url = "https://files.pythonhosted.org/packages/0e/dd/e6ae97151e5ed648ab2ea48885bc33d39202b640eec7a2910e2c843f7ac0/matplotlib-3.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5fd41b0ec7ee45cd960a8e71aea7c946a28a0b8a4dcee47d2856b2af051f334c", size = 8109742 }, + { url = "https://files.pythonhosted.org/packages/32/5f/29def7ce4e815ab939b56280976ee35afffb3bbdb43f332caee74cb8c951/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:81713dd0d103b379de4516b861d964b1d789a144103277769238c732229d7f03", size = 8155500 }, + { url = "https://files.pythonhosted.org/packages/de/6d/d570383c9f7ca799d0a54161446f9ce7b17d6c50f2994b653514bcaa108f/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:359f87baedb1f836ce307f0e850d12bb5f1936f70d035561f90d41d305fdacea", size = 8032398 }, + { url = "https://files.pythonhosted.org/packages/c9/b4/680aa700d99b48e8c4393fa08e9ab8c49c0555ee6f4c9c0a5e8ea8dfde5d/matplotlib-3.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae80dc3a4add4665cf2faa90138384a7ffe2a4e37c58d83e115b54287c4f06ef", size = 8587361 }, ] [[package]] @@ -2512,8 +2704,26 @@ wheels = [ name = "multidict" version = "6.1.0" source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] sdist = { url = "https://files.pythonhosted.org/packages/d6/be/504b89a5e9ca731cd47487e91c469064f8ae5af93b7259758dcfc2b9c848/multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a", size = 64002 } wheels = [ + { url = "https://files.pythonhosted.org/packages/29/68/259dee7fd14cf56a17c554125e534f6274c2860159692a414d0b402b9a6d/multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60", size = 48628 }, + { url = "https://files.pythonhosted.org/packages/50/79/53ba256069fe5386a4a9e80d4e12857ced9de295baf3e20c68cdda746e04/multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1", size = 29327 }, + { url = "https://files.pythonhosted.org/packages/ff/10/71f1379b05b196dae749b5ac062e87273e3f11634f447ebac12a571d90ae/multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53", size = 29689 }, + { url = "https://files.pythonhosted.org/packages/71/45/70bac4f87438ded36ad4793793c0095de6572d433d98575a5752629ef549/multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5", size = 126639 }, + { url = "https://files.pythonhosted.org/packages/80/cf/17f35b3b9509b4959303c05379c4bfb0d7dd05c3306039fc79cf035bbac0/multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581", size = 134315 }, + { url = "https://files.pythonhosted.org/packages/ef/1f/652d70ab5effb33c031510a3503d4d6efc5ec93153562f1ee0acdc895a57/multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56", size = 129471 }, + { url = "https://files.pythonhosted.org/packages/a6/64/2dd6c4c681688c0165dea3975a6a4eab4944ea30f35000f8b8af1df3148c/multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429", size = 124585 }, + { url = "https://files.pythonhosted.org/packages/87/56/e6ee5459894c7e554b57ba88f7257dc3c3d2d379cb15baaa1e265b8c6165/multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748", size = 116957 }, + { url = "https://files.pythonhosted.org/packages/36/9e/616ce5e8d375c24b84f14fc263c7ef1d8d5e8ef529dbc0f1df8ce71bb5b8/multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db", size = 128609 }, + { url = "https://files.pythonhosted.org/packages/8c/4f/4783e48a38495d000f2124020dc96bacc806a4340345211b1ab6175a6cb4/multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056", size = 123016 }, + { url = "https://files.pythonhosted.org/packages/3e/b3/4950551ab8fc39862ba5e9907dc821f896aa829b4524b4deefd3e12945ab/multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76", size = 133542 }, + { url = "https://files.pythonhosted.org/packages/96/4d/f0ce6ac9914168a2a71df117935bb1f1781916acdecbb43285e225b484b8/multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160", size = 130163 }, + { url = "https://files.pythonhosted.org/packages/be/72/17c9f67e7542a49dd252c5ae50248607dfb780bcc03035907dafefb067e3/multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7", size = 126832 }, + { url = "https://files.pythonhosted.org/packages/71/9f/72d719e248cbd755c8736c6d14780533a1606ffb3fbb0fbd77da9f0372da/multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0", size = 26402 }, + { url = "https://files.pythonhosted.org/packages/04/5a/d88cd5d00a184e1ddffc82aa2e6e915164a6d2641ed3606e766b5d2f275a/multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d", size = 28800 }, { url = "https://files.pythonhosted.org/packages/93/13/df3505a46d0cd08428e4c8169a196131d1b0c4b515c3649829258843dde6/multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6", size = 48570 }, { url = "https://files.pythonhosted.org/packages/f0/e1/a215908bfae1343cdb72f805366592bdd60487b4232d039c437fe8f5013d/multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156", size = 29316 }, { url = "https://files.pythonhosted.org/packages/70/0f/6dc70ddf5d442702ed74f298d69977f904960b82368532c88e854b79f72b/multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb", size = 29640 }, @@ -2571,6 +2781,8 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/b5/ae/04f39c5d0d0def03247c2893d6f2b83c136bf3320a2154d7b8858f2ba72d/multiprocess-0.70.16.tar.gz", hash = "sha256:161af703d4652a0e1410be6abccecde4a7ddffd19341be0a7011b94aeb171ac1", size = 1772603 } wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/76/6e712a2623d146d314f17598df5de7224c85c0060ef63fd95cc15a25b3fa/multiprocess-0.70.16-pp310-pypy310_pp73-macosx_10_13_x86_64.whl", hash = "sha256:476887be10e2f59ff183c006af746cb6f1fd0eadcfd4ef49e605cbe2659920ee", size = 134980 }, + { url = "https://files.pythonhosted.org/packages/0f/ab/1e6e8009e380e22254ff539ebe117861e5bdb3bff1fc977920972237c6c7/multiprocess-0.70.16-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d951bed82c8f73929ac82c61f01a7b5ce8f3e5ef40f5b52553b4f547ce2b08ec", size = 134982 }, { url = "https://files.pythonhosted.org/packages/bc/f7/7ec7fddc92e50714ea3745631f79bd9c96424cb2702632521028e57d3a36/multiprocess-0.70.16-py310-none-any.whl", hash = "sha256:c4a9944c67bd49f823687463660a2d6daae94c289adff97e0f9d696ba6371d02", size = 134824 }, { url = "https://files.pythonhosted.org/packages/50/15/b56e50e8debaf439f44befec5b2af11db85f6e0f344c3113ae0be0593a91/multiprocess-0.70.16-py311-none-any.whl", hash = "sha256:af4cabb0dac72abfb1e794fa7855c325fd2b55a10a44628a3c1ad3311c04127a", size = 143519 }, { url = "https://files.pythonhosted.org/packages/0a/7d/a988f258104dcd2ccf1ed40fdc97e26c4ac351eeaf81d76e266c52d84e2f/multiprocess-0.70.16-py312-none-any.whl", hash = "sha256:fc0544c531920dde3b00c29863377f87e1632601092ea2daca74e4beb40faa2e", size = 146741 }, @@ -2584,10 +2796,16 @@ version = "1.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mypy-extensions" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e8/21/7e9e523537991d145ab8a0a2fd98548d67646dc2aaaf6091c31ad883e7c1/mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e", size = 3152532 } wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/8c/206de95a27722b5b5a8c85ba3100467bd86299d92a4f71c6b9aa448bfa2f/mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a", size = 11020731 }, + { url = "https://files.pythonhosted.org/packages/ab/bb/b31695a29eea76b1569fd28b4ab141a1adc9842edde080d1e8e1776862c7/mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80", size = 10184276 }, + { url = "https://files.pythonhosted.org/packages/a5/2d/4a23849729bb27934a0e079c9c1aad912167d875c7b070382a408d459651/mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7", size = 12587706 }, + { url = "https://files.pythonhosted.org/packages/5c/c3/d318e38ada50255e22e23353a469c791379825240e71b0ad03e76ca07ae6/mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f", size = 13105586 }, + { url = "https://files.pythonhosted.org/packages/4a/25/3918bc64952370c3dbdbd8c82c363804678127815febd2925b7273d9482c/mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372", size = 9632318 }, { url = "https://files.pythonhosted.org/packages/d0/19/de0822609e5b93d02579075248c7aa6ceaddcea92f00bf4ea8e4c22e3598/mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d", size = 10939027 }, { url = "https://files.pythonhosted.org/packages/c8/71/6950fcc6ca84179137e4cbf7cf41e6b68b4a339a1f5d3e954f8c34e02d66/mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d", size = 10108699 }, { url = "https://files.pythonhosted.org/packages/26/50/29d3e7dd166e74dc13d46050b23f7d6d7533acf48f5217663a3719db024e/mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b", size = 12506263 }, @@ -2675,6 +2893,14 @@ version = "1.26.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129 } wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/94/ace0fdea5241a27d13543ee117cbc65868e82213fb31a8eb7fe9ff23f313/numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0", size = 20631468 }, + { url = "https://files.pythonhosted.org/packages/20/f7/b24208eba89f9d1b58c1668bc6c8c4fd472b20c45573cb767f59d49fb0f6/numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a", size = 13966411 }, + { url = "https://files.pythonhosted.org/packages/fc/a5/4beee6488160798683eed5bdb7eead455892c3b4e1f78d79d8d3f3b084ac/numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4", size = 14219016 }, + { url = "https://files.pythonhosted.org/packages/4b/d7/ecf66c1cd12dc28b4040b15ab4d17b773b87fa9d29ca16125de01adb36cd/numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f", size = 18240889 }, + { url = "https://files.pythonhosted.org/packages/24/03/6f229fe3187546435c4f6f89f6d26c129d4f5bed40552899fcf1f0bf9e50/numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a", size = 13876746 }, + { url = "https://files.pythonhosted.org/packages/39/fe/39ada9b094f01f5a35486577c848fe274e374bbf8d8f472e1423a0bbd26d/numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2", size = 18078620 }, + { url = "https://files.pythonhosted.org/packages/d5/ef/6ad11d51197aad206a9ad2286dc1aac6a378059e06e8cf22cd08ed4f20dc/numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07", size = 5972659 }, + { url = "https://files.pythonhosted.org/packages/19/77/538f202862b9183f54108557bfda67e17603fc560c384559e769321c9d92/numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5", size = 15808905 }, { url = "https://files.pythonhosted.org/packages/11/57/baae43d14fe163fa0e4c47f307b6b2511ab8d7d30177c491960504252053/numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71", size = 20630554 }, { url = "https://files.pythonhosted.org/packages/1a/2e/151484f49fd03944c4a3ad9c418ed193cfd02724e138ac8a9505d056c582/numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef", size = 13997127 }, { url = "https://files.pythonhosted.org/packages/79/ae/7e5b85136806f9dadf4878bf73cf223fe5c2636818ba3ab1c585d0403164/numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e", size = 14222994 }, @@ -2713,7 +2939,7 @@ wheels = [ [[package]] name = "openai" -version = "1.52.0" +version = "1.59.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -2725,9 +2951,9 @@ dependencies = [ { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/12/00/0983e56ca4535394a34f3ce25429ce6710878f2f8d7931973d04364ca922/openai-1.52.0.tar.gz", hash = "sha256:95c65a5f77559641ab8f3e4c3a050804f7b51d278870e2ec1f7444080bfe565a", size = 309426 } +sdist = { url = "https://files.pythonhosted.org/packages/38/db/0e1376bdee3de8c16d91647d47dc47a26d2d6036931c76844e7d3e3fb989/openai-1.59.4.tar.gz", hash = "sha256:b946dc5a2308dc1e03efbda80bf1cd64b6053b536851ad519f57ee44401663d2", size = 344405 } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/1e/9dc3ccee95d0e16e54e353d3c355bb7cc506d56a2dbb0a07bc739cc48eac/openai-1.52.0-py3-none-any.whl", hash = "sha256:0c249f20920183b0a2ca4f7dba7b0452df3ecd0fa7985eb1d91ad884bc3ced9c", size = 386947 }, + { url = "https://files.pythonhosted.org/packages/99/01/1eefc235bb79174826b2fa0cad05bc2eab90eae97bf78c765887d7430e46/openai-1.59.4-py3-none-any.whl", hash = "sha256:82113498699998e98104f87c19a890e82df9b01251a0395484360575d3a1d98a", size = 454810 }, ] [[package]] @@ -2839,6 +3065,19 @@ version = "3.10.12" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/e0/04/bb9f72987e7f62fb591d6c880c0caaa16238e4e530cbc3bdc84a7372d75f/orjson-3.10.12.tar.gz", hash = "sha256:0a78bbda3aea0f9f079057ee1ee8a1ecf790d4f1af88dd67493c6b8ee52506ff", size = 5438647 } wheels = [ + { url = "https://files.pythonhosted.org/packages/72/d2/78652b67f86d093dca984ce3fa5bf819ee1462627da83e7d0b784a9a7c45/orjson-3.10.12-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ece01a7ec71d9940cc654c482907a6b65df27251255097629d0dea781f255c6d", size = 248688 }, + { url = "https://files.pythonhosted.org/packages/70/cb/f8b6a52f3bc724edf8a62d8d1d8ee17cf19d6ae1cac89f077f0e7c30f396/orjson-3.10.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c34ec9aebc04f11f4b978dd6caf697a2df2dd9b47d35aa4cc606cabcb9df69d7", size = 136952 }, + { url = "https://files.pythonhosted.org/packages/a6/43/c55700df9814545bc8c35d87395ec4b9ee473a3c1f5ed72f8d3ad0298ee9/orjson-3.10.12-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd6ec8658da3480939c79b9e9e27e0db31dffcd4ba69c334e98c9976ac29140e", size = 149089 }, + { url = "https://files.pythonhosted.org/packages/07/da/e7e7d73bd971710b736fbd8330b8830c5fa4fc0ac003b31af61f03b26dfc/orjson-3.10.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f17e6baf4cf01534c9de8a16c0c611f3d94925d1701bf5f4aff17003677d8ced", size = 140479 }, + { url = "https://files.pythonhosted.org/packages/08/49/c9dfddba56ff24eecfacf2f01a76cae4d249ac2995b1359bf63a74b1b318/orjson-3.10.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6402ebb74a14ef96f94a868569f5dccf70d791de49feb73180eb3c6fda2ade56", size = 156564 }, + { url = "https://files.pythonhosted.org/packages/96/df/174d2eff227dc23b4540a0c2efa6ec8fe406c442c4b7f0f556242f026d1f/orjson-3.10.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0000758ae7c7853e0a4a6063f534c61656ebff644391e1f81698c1b2d2fc8cd2", size = 131282 }, + { url = "https://files.pythonhosted.org/packages/6a/96/8628c53a52e2a0a1ee861d809092df72aabbd312c71de9ad6d49e2c039ab/orjson-3.10.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:888442dcee99fd1e5bd37a4abb94930915ca6af4db50e23e746cdf4d1e63db13", size = 139764 }, + { url = "https://files.pythonhosted.org/packages/38/17/08becb49e59e7bb7b29dc1dad19bc0c48635e627ee27e60eb5b64efcf7b1/orjson-3.10.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c1f7a3ce79246aa0e92f5458d86c54f257fb5dfdc14a192651ba7ec2c00f8a05", size = 131913 }, + { url = "https://files.pythonhosted.org/packages/2a/05/f32acc2500e3fafee9445eb8b2a6ff19c4641035e6059c6c8d7bdb3abc9e/orjson-3.10.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:802a3935f45605c66fb4a586488a38af63cb37aaad1c1d94c982c40dcc452e85", size = 415782 }, + { url = "https://files.pythonhosted.org/packages/06/03/6cc740d998d8bb60e75d4b7e228d18964475239ac842cc1865d49d092545/orjson-3.10.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1da1ef0113a2be19bb6c557fb0ec2d79c92ebd2fed4cfb1b26bab93f021fb885", size = 142383 }, + { url = "https://files.pythonhosted.org/packages/f8/30/39cac82547fe021615376245c558b216d3ae8c99bd6b2274f312e49f1c94/orjson-3.10.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a3273e99f367f137d5b3fecb5e9f45bcdbfac2a8b2f32fbc72129bbd48789c2", size = 130661 }, + { url = "https://files.pythonhosted.org/packages/95/29/c6837f4fc1eaa742eaf5abcd767ab6805493f44fe1f72b37c1743706c1d8/orjson-3.10.12-cp310-none-win32.whl", hash = "sha256:475661bf249fd7907d9b0a2a2421b4e684355a77ceef85b8352439a9163418c3", size = 143625 }, + { url = "https://files.pythonhosted.org/packages/f6/62/c6b955f2144421108fa441b5471e1d5f8654a7df9840b261106e04d5d15c/orjson-3.10.12-cp310-none-win_amd64.whl", hash = "sha256:87251dc1fb2b9e5ab91ce65d8f4caf21910d99ba8fb24b49fd0c118b2362d509", size = 135075 }, { url = "https://files.pythonhosted.org/packages/d3/48/7c3cd094488f5a3bc58488555244609a8c4d105bc02f2b77e509debf0450/orjson-3.10.12-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a734c62efa42e7df94926d70fe7d37621c783dea9f707a98cdea796964d4cf74", size = 248687 }, { url = "https://files.pythonhosted.org/packages/ff/90/e55f0e25c7fdd1f82551fe787f85df6f378170caca863c04c810cd8f2730/orjson-3.10.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:750f8b27259d3409eda8350c2919a58b0cfcd2054ddc1bd317a643afc646ef23", size = 136953 }, { url = "https://files.pythonhosted.org/packages/2a/b3/109c020cf7fee747d400de53b43b183ca9d3ebda3906ad0b858eb5479718/orjson-3.10.12-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb52c22bfffe2857e7aa13b4622afd0dd9d16ea7cc65fd2bf318d3223b1b6252", size = 149090 }, @@ -2905,7 +3144,7 @@ wheels = [ [[package]] name = "pandas" -version = "2.0.3" +version = "2.2.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, @@ -2913,14 +3152,42 @@ dependencies = [ { name = "pytz" }, { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/a7/824332581e258b5aa4f3763ecb2a797e5f9a54269044ba2e50ac19936b32/pandas-2.0.3.tar.gz", hash = "sha256:c02f372a88e0d17f36d3093a644c73cfc1788e876a7c4bcb4020a77512e2043c", size = 5284455 } +sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/92/a5e5133421b49e901a12e02a6a7ef3a0130e10d13db8cb657fdd0cba3b90/pandas-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b084b91d8d66ab19f5bb3256cbd5ea661848338301940e17f4492b2ce0801fe8", size = 11645672 }, - { url = "https://files.pythonhosted.org/packages/8f/bb/aea1fbeed5b474cb8634364718abe9030d7cc7a30bf51f40bd494bbc89a2/pandas-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:37673e3bdf1551b95bf5d4ce372b37770f9529743d2498032439371fc7b7eb26", size = 10693229 }, - { url = "https://files.pythonhosted.org/packages/d6/90/e7d387f1a416b14e59290baa7a454a90d719baebbf77433ff1bdcc727800/pandas-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9cb1e14fdb546396b7e1b923ffaeeac24e4cedd14266c3497216dd4448e4f2d", size = 11581591 }, - { url = "https://files.pythonhosted.org/packages/d0/28/88b81881c056376254618fad622a5e94b5126db8c61157ea1910cd1c040a/pandas-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9cd88488cceb7635aebb84809d087468eb33551097d600c6dad13602029c2df", size = 12219370 }, - { url = "https://files.pythonhosted.org/packages/e4/a5/212b9039e25bf8ebb97e417a96660e3dc925dacd3f8653d531b8f7fd9be4/pandas-2.0.3-cp311-cp311-win32.whl", hash = "sha256:694888a81198786f0e164ee3a581df7d505024fbb1f15202fc7db88a71d84ebd", size = 9482935 }, - { url = "https://files.pythonhosted.org/packages/9e/71/756a1be6bee0209d8c0d8c5e3b9fc72c00373f384a4017095ec404aec3ad/pandas-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6a21ab5c89dcbd57f78d0ae16630b090eec626360085a4148693def5452d8a6b", size = 10607692 }, + { url = "https://files.pythonhosted.org/packages/aa/70/c853aec59839bceed032d52010ff5f1b8d87dc3114b762e4ba2727661a3b/pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5", size = 12580827 }, + { url = "https://files.pythonhosted.org/packages/99/f2/c4527768739ffa4469b2b4fff05aa3768a478aed89a2f271a79a40eee984/pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348", size = 11303897 }, + { url = "https://files.pythonhosted.org/packages/ed/12/86c1747ea27989d7a4064f806ce2bae2c6d575b950be087837bdfcabacc9/pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed", size = 66480908 }, + { url = "https://files.pythonhosted.org/packages/44/50/7db2cd5e6373ae796f0ddad3675268c8d59fb6076e66f0c339d61cea886b/pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57", size = 13064210 }, + { url = "https://files.pythonhosted.org/packages/61/61/a89015a6d5536cb0d6c3ba02cebed51a95538cf83472975275e28ebf7d0c/pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42", size = 16754292 }, + { url = "https://files.pythonhosted.org/packages/ce/0d/4cc7b69ce37fac07645a94e1d4b0880b15999494372c1523508511b09e40/pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f", size = 14416379 }, + { url = "https://files.pythonhosted.org/packages/31/9e/6ebb433de864a6cd45716af52a4d7a8c3c9aaf3a98368e61db9e69e69a9c/pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645", size = 11598471 }, + { url = "https://files.pythonhosted.org/packages/a8/44/d9502bf0ed197ba9bf1103c9867d5904ddcaf869e52329787fc54ed70cc8/pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039", size = 12602222 }, + { url = "https://files.pythonhosted.org/packages/52/11/9eac327a38834f162b8250aab32a6781339c69afe7574368fffe46387edf/pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd", size = 11321274 }, + { url = "https://files.pythonhosted.org/packages/45/fb/c4beeb084718598ba19aa9f5abbc8aed8b42f90930da861fcb1acdb54c3a/pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698", size = 15579836 }, + { url = "https://files.pythonhosted.org/packages/cd/5f/4dba1d39bb9c38d574a9a22548c540177f78ea47b32f99c0ff2ec499fac5/pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc", size = 13058505 }, + { url = "https://files.pythonhosted.org/packages/b9/57/708135b90391995361636634df1f1130d03ba456e95bcf576fada459115a/pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3", size = 16744420 }, + { url = "https://files.pythonhosted.org/packages/86/4a/03ed6b7ee323cf30404265c284cee9c65c56a212e0a08d9ee06984ba2240/pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32", size = 14440457 }, + { url = "https://files.pythonhosted.org/packages/ed/8c/87ddf1fcb55d11f9f847e3c69bb1c6f8e46e2f40ab1a2d2abadb2401b007/pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5", size = 11617166 }, + { url = "https://files.pythonhosted.org/packages/17/a3/fb2734118db0af37ea7433f57f722c0a56687e14b14690edff0cdb4b7e58/pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9", size = 12529893 }, + { url = "https://files.pythonhosted.org/packages/e1/0c/ad295fd74bfac85358fd579e271cded3ac969de81f62dd0142c426b9da91/pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4", size = 11363475 }, + { url = "https://files.pythonhosted.org/packages/c6/2a/4bba3f03f7d07207481fed47f5b35f556c7441acddc368ec43d6643c5777/pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3", size = 15188645 }, + { url = "https://files.pythonhosted.org/packages/38/f8/d8fddee9ed0d0c0f4a2132c1dfcf0e3e53265055da8df952a53e7eaf178c/pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319", size = 12739445 }, + { url = "https://files.pythonhosted.org/packages/20/e8/45a05d9c39d2cea61ab175dbe6a2de1d05b679e8de2011da4ee190d7e748/pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8", size = 16359235 }, + { url = "https://files.pythonhosted.org/packages/1d/99/617d07a6a5e429ff90c90da64d428516605a1ec7d7bea494235e1c3882de/pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a", size = 14056756 }, + { url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248 }, + { url = "https://files.pythonhosted.org/packages/64/22/3b8f4e0ed70644e85cfdcd57454686b9057c6c38d2f74fe4b8bc2527214a/pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015", size = 12477643 }, + { url = "https://files.pythonhosted.org/packages/e4/93/b3f5d1838500e22c8d793625da672f3eec046b1a99257666c94446969282/pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28", size = 11281573 }, + { url = "https://files.pythonhosted.org/packages/f5/94/6c79b07f0e5aab1dcfa35a75f4817f5c4f677931d4234afcd75f0e6a66ca/pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0", size = 15196085 }, + { url = "https://files.pythonhosted.org/packages/e8/31/aa8da88ca0eadbabd0a639788a6da13bb2ff6edbbb9f29aa786450a30a91/pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24", size = 12711809 }, + { url = "https://files.pythonhosted.org/packages/ee/7c/c6dbdb0cb2a4344cacfb8de1c5808ca885b2e4dcfde8008266608f9372af/pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659", size = 16356316 }, + { url = "https://files.pythonhosted.org/packages/57/b7/8b757e7d92023b832869fa8881a992696a0bfe2e26f72c9ae9f255988d42/pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb", size = 14022055 }, + { url = "https://files.pythonhosted.org/packages/3b/bc/4b18e2b8c002572c5a441a64826252ce5da2aa738855747247a971988043/pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d", size = 11481175 }, + { url = "https://files.pythonhosted.org/packages/76/a3/a5d88146815e972d40d19247b2c162e88213ef51c7c25993942c39dbf41d/pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468", size = 12615650 }, + { url = "https://files.pythonhosted.org/packages/9c/8c/f0fd18f6140ddafc0c24122c8a964e48294acc579d47def376fef12bcb4a/pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18", size = 11290177 }, + { url = "https://files.pythonhosted.org/packages/ed/f9/e995754eab9c0f14c6777401f7eece0943840b7a9fc932221c19d1abee9f/pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2", size = 14651526 }, + { url = "https://files.pythonhosted.org/packages/25/b0/98d6ae2e1abac4f35230aa756005e8654649d305df9a28b16b9ae4353bff/pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4", size = 11871013 }, + { url = "https://files.pythonhosted.org/packages/cc/57/0f72a10f9db6a4628744c8e8f0df4e6e21de01212c7c981d31e50ffc8328/pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d", size = 15711620 }, + { url = "https://files.pythonhosted.org/packages/ab/5f/b38085618b950b79d2d9164a711c52b10aefc0ae6833b96f626b7021b2ed/pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a", size = 13098436 }, ] [[package]] @@ -2943,6 +3210,15 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/b8/fe/27c7438c6ac8b8f8bef3c6e571855602ee784b85d072efddfff0ceb1cd77/pendulum-3.0.0.tar.gz", hash = "sha256:5d034998dea404ec31fae27af6b22cff1708f830a1ed7353be4d1019bb9f584e", size = 84524 } wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/2f/2f4719366d16f1e444b4e400d3de5021bc4b09965f97e45c81e08348cbdf/pendulum-3.0.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2cf9e53ef11668e07f73190c805dbdf07a1939c3298b78d5a9203a86775d1bfd", size = 362284 }, + { url = "https://files.pythonhosted.org/packages/30/ff/70a8f47e622e641de15b7ed8a8b66c3aa895fabc182a7d520a0c33ec850e/pendulum-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fb551b9b5e6059377889d2d878d940fd0bbb80ae4810543db18e6f77b02c5ef6", size = 352957 }, + { url = "https://files.pythonhosted.org/packages/f4/cd/4e2fb7d071e81a9b07719203fd1d329febaded59981b8709663341f758f4/pendulum-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c58227ac260d5b01fc1025176d7b31858c9f62595737f350d22124a9a3ad82d", size = 335784 }, + { url = "https://files.pythonhosted.org/packages/0f/e5/9fc684c59b6f3425cf597d9489c24c47dc96d391be9eb8c9a3c543cd7646/pendulum-3.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60fb6f415fea93a11c52578eaa10594568a6716602be8430b167eb0d730f3332", size = 362215 }, + { url = "https://files.pythonhosted.org/packages/5a/ba/4dbb1ae42775010249ba29d01829353a9b59d9c3caf97df14d548a3b7d4c/pendulum-3.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b69f6b4dbcb86f2c2fe696ba991e67347bcf87fe601362a1aba6431454b46bde", size = 448632 }, + { url = "https://files.pythonhosted.org/packages/10/a9/0932bd7cd677bee8bdc9cb898448e47ada0f74e41f434f4ff687d03a3ea9/pendulum-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:138afa9c373ee450ede206db5a5e9004fd3011b3c6bbe1e57015395cd076a09f", size = 384881 }, + { url = "https://files.pythonhosted.org/packages/31/a9/8c9887ce8bfb8ab0db068ac2f1fe679b713f728c116bd136301c303893cd/pendulum-3.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:83d9031f39c6da9677164241fd0d37fbfc9dc8ade7043b5d6d62f56e81af8ad2", size = 559554 }, + { url = "https://files.pythonhosted.org/packages/f4/7e/70596b098b97799c78e3fc2f89394decca6f5443cac28c54082daf2d48eb/pendulum-3.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0c2308af4033fa534f089595bcd40a95a39988ce4059ccd3dc6acb9ef14ca44a", size = 558246 }, + { url = "https://files.pythonhosted.org/packages/67/5e/e646afbd1632bfbacdae79289d7d5879efdeeb5f5e58327bc5c698731107/pendulum-3.0.0-cp310-none-win_amd64.whl", hash = "sha256:9a59637cdb8462bdf2dbcb9d389518c0263799189d773ad5c11db6b13064fa79", size = 293456 }, { url = "https://files.pythonhosted.org/packages/7b/f0/d60be6058657bf71281eeaa12bee85e87bac18acf6dbb7b5197bb8416537/pendulum-3.0.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3725245c0352c95d6ca297193192020d1b0c0f83d5ee6bb09964edc2b5a2d508", size = 362283 }, { url = "https://files.pythonhosted.org/packages/68/e5/0f9d8351242ddb119a40b41c0cf1d0c74cc243829eea6811f753a8ecf15f/pendulum-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6c035f03a3e565ed132927e2c1b691de0dbf4eb53b02a5a3c5a97e1a64e17bec", size = 352957 }, { url = "https://files.pythonhosted.org/packages/30/43/70d0a08e5d6ca434ba139d19ec2a4847b0a3e461fbb82e680a9b6a4237ef/pendulum-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:597e66e63cbd68dd6d58ac46cb7a92363d2088d37ccde2dae4332ef23e95cd00", size = 335784 }, @@ -2963,6 +3239,13 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d4/97/95a44aa5e1763d3a966551ed0e12f56508d8dfcc60e1f0395909b6a08626/pendulum-3.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17fe4b2c844bbf5f0ece69cfd959fa02957c61317b2161763950d88fed8e13b9", size = 558240 }, { url = "https://files.pythonhosted.org/packages/9a/91/fcd992eb36b77ab43f2cf44307b72c01a6fbb27f55c1bb2d4af30e9a6cb7/pendulum-3.0.0-cp312-none-win_amd64.whl", hash = "sha256:78f8f4e7efe5066aca24a7a57511b9c2119f5c2b5eb81c46ff9222ce11e0a7a5", size = 293456 }, { url = "https://files.pythonhosted.org/packages/3b/60/ba8aa296ca6d76603d58146b4a222cd99e7da33831158b8c00240a896a56/pendulum-3.0.0-cp312-none-win_arm64.whl", hash = "sha256:28f49d8d1e32aae9c284a90b6bb3873eee15ec6e1d9042edd611b22a94ac462f", size = 288054 }, + { url = "https://files.pythonhosted.org/packages/0f/7f/24d8c167937d663a9cf6d5fc5e87a87bfa320c3f002d4fbbc7bd5ff3b6f8/pendulum-3.0.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b1f74d1e6ffe5d01d6023870e2ce5c2191486928823196f8575dcc786e107b1", size = 362388 }, + { url = "https://files.pythonhosted.org/packages/55/e1/33775ee68f8bbb0da967dfd818706ee69e0a054f663ee6111d5c7639f67a/pendulum-3.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:729e9f93756a2cdfa77d0fc82068346e9731c7e884097160603872686e570f07", size = 353062 }, + { url = "https://files.pythonhosted.org/packages/3e/1b/c3e399148c0d69c2c84c2eda45cd3580990b13f36d0c96516591bf4def56/pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e586acc0b450cd21cbf0db6bae386237011b75260a3adceddc4be15334689a9a", size = 335871 }, + { url = "https://files.pythonhosted.org/packages/32/6b/23dde8bd3fb78f693b81bd8fc67769b2a461918d51ed6ddf486a1a97e199/pendulum-3.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22e7944ffc1f0099a79ff468ee9630c73f8c7835cd76fdb57ef7320e6a409df4", size = 384859 }, + { url = "https://files.pythonhosted.org/packages/1d/1b/a3e0387f586d6121a15e6d02f7ae8cc3cd1ebb136fd243c1c191136ed518/pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fa30af36bd8e50686846bdace37cf6707bdd044e5cb6e1109acbad3277232e04", size = 559441 }, + { url = "https://files.pythonhosted.org/packages/d7/23/91dea81265d5d11af0cd5053ca76730cc2c5ac14085c9a923d448e74c67f/pendulum-3.0.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:440215347b11914ae707981b9a57ab9c7b6983ab0babde07063c6ee75c0dc6e7", size = 558189 }, + { url = "https://files.pythonhosted.org/packages/7a/8a/166625d30f927e800e99f3f6556d8b3f4ad952c62d6a774844d73542b84b/pendulum-3.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:314c4038dc5e6a52991570f50edb2f08c339debdf8cea68ac355b32c4174e820", size = 293657 }, ] [[package]] @@ -2983,6 +3266,17 @@ version = "11.0.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a5/26/0d95c04c868f6bdb0c447e3ee2de5564411845e36a858cfd63766bc7b563/pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739", size = 46737780 } wheels = [ + { url = "https://files.pythonhosted.org/packages/98/fb/a6ce6836bd7fd93fbf9144bf54789e02babc27403b50a9e1583ee877d6da/pillow-11.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:6619654954dc4936fcff82db8eb6401d3159ec6be81e33c6000dfd76ae189947", size = 3154708 }, + { url = "https://files.pythonhosted.org/packages/6a/1d/1f51e6e912d8ff316bb3935a8cda617c801783e0b998bf7a894e91d3bd4c/pillow-11.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b3c5ac4bed7519088103d9450a1107f76308ecf91d6dabc8a33a2fcfb18d0fba", size = 2979223 }, + { url = "https://files.pythonhosted.org/packages/90/83/e2077b0192ca8a9ef794dbb74700c7e48384706467067976c2a95a0f40a1/pillow-11.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a65149d8ada1055029fcb665452b2814fe7d7082fcb0c5bed6db851cb69b2086", size = 4183167 }, + { url = "https://files.pythonhosted.org/packages/0e/74/467af0146970a98349cdf39e9b79a6cc8a2e7558f2c01c28a7b6b85c5bda/pillow-11.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a58d8ac0cc0e7f3a014509f0455248a76629ca9b604eca7dc5927cc593c5e9", size = 4283912 }, + { url = "https://files.pythonhosted.org/packages/85/b1/d95d4f7ca3a6c1ae120959605875a31a3c209c4e50f0029dc1a87566cf46/pillow-11.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c26845094b1af3c91852745ae78e3ea47abf3dbcd1cf962f16b9a5fbe3ee8488", size = 4195815 }, + { url = "https://files.pythonhosted.org/packages/41/c3/94f33af0762ed76b5a237c5797e088aa57f2b7fa8ee7932d399087be66a8/pillow-11.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:1a61b54f87ab5786b8479f81c4b11f4d61702830354520837f8cc791ebba0f5f", size = 4366117 }, + { url = "https://files.pythonhosted.org/packages/ba/3c/443e7ef01f597497268899e1cca95c0de947c9bbf77a8f18b3c126681e5d/pillow-11.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:674629ff60030d144b7bca2b8330225a9b11c482ed408813924619c6f302fdbb", size = 4278607 }, + { url = "https://files.pythonhosted.org/packages/26/95/1495304448b0081e60c0c5d63f928ef48bb290acee7385804426fa395a21/pillow-11.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:598b4e238f13276e0008299bd2482003f48158e2b11826862b1eb2ad7c768b97", size = 4410685 }, + { url = "https://files.pythonhosted.org/packages/45/da/861e1df971ef0de9870720cb309ca4d553b26a9483ec9be3a7bf1de4a095/pillow-11.0.0-cp310-cp310-win32.whl", hash = "sha256:9a0f748eaa434a41fccf8e1ee7a3eed68af1b690e75328fd7a60af123c193b50", size = 2249185 }, + { url = "https://files.pythonhosted.org/packages/d5/4e/78f7c5202ea2a772a5ab05069c1b82503e6353cd79c7e474d4945f4b82c3/pillow-11.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a5629742881bcbc1f42e840af185fd4d83a5edeb96475a575f4da50d6ede337c", size = 2566726 }, + { url = "https://files.pythonhosted.org/packages/77/e4/6e84eada35cbcc646fc1870f72ccfd4afacb0fae0c37ffbffe7f5dc24bf1/pillow-11.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:ee217c198f2e41f184f3869f3e485557296d505b5195c513b2bfe0062dc537f1", size = 2254585 }, { url = "https://files.pythonhosted.org/packages/f0/eb/f7e21b113dd48a9c97d364e0915b3988c6a0b6207652f5a92372871b7aa4/pillow-11.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1c1d72714f429a521d8d2d018badc42414c3077eb187a59579f28e4270b4b0fc", size = 3154705 }, { url = "https://files.pythonhosted.org/packages/25/b3/2b54a1d541accebe6bd8b1358b34ceb2c509f51cb7dcda8687362490da5b/pillow-11.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:499c3a1b0d6fc8213519e193796eb1a86a1be4b1877d678b30f83fd979811d1a", size = 2979222 }, { url = "https://files.pythonhosted.org/packages/20/12/1a41eddad8265c5c19dda8fb6c269ce15ee25e0b9f8f26286e6202df6693/pillow-11.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8b2351c85d855293a299038e1f89db92a2f35e8d2f783489c6f0b2b5f3fe8a3", size = 4190220 }, @@ -3024,6 +3318,13 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d6/b9/fb620dd47fc7cc9678af8f8bd8c772034ca4977237049287e99dda360b66/pillow-11.0.0-cp313-cp313t-win32.whl", hash = "sha256:607bbe123c74e272e381a8d1957083a9463401f7bd01287f50521ecb05a313f8", size = 2253197 }, { url = "https://files.pythonhosted.org/packages/df/86/25dde85c06c89d7fc5db17940f07aae0a56ac69aa9ccb5eb0f09798862a8/pillow-11.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c39ed17edea3bc69c743a8dd3e9853b7509625c2462532e62baa0732163a904", size = 2572169 }, { url = "https://files.pythonhosted.org/packages/51/85/9c33f2517add612e17f3381aee7c4072779130c634921a756c97bc29fb49/pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3", size = 2256828 }, + { url = "https://files.pythonhosted.org/packages/36/57/42a4dd825eab762ba9e690d696d894ba366e06791936056e26e099398cda/pillow-11.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1187739620f2b365de756ce086fdb3604573337cc28a0d3ac4a01ab6b2d2a6d2", size = 3119239 }, + { url = "https://files.pythonhosted.org/packages/98/f7/25f9f9e368226a1d6cf3507081a1a7944eddd3ca7821023377043f5a83c8/pillow-11.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fbbcb7b57dc9c794843e3d1258c0fbf0f48656d46ffe9e09b63bbd6e8cd5d0a2", size = 2950803 }, + { url = "https://files.pythonhosted.org/packages/59/01/98ead48a6c2e31e6185d4c16c978a67fe3ccb5da5c2ff2ba8475379bb693/pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d203af30149ae339ad1b4f710d9844ed8796e97fda23ffbc4cc472968a47d0b", size = 3281098 }, + { url = "https://files.pythonhosted.org/packages/51/c0/570255b2866a0e4d500a14f950803a2ec273bac7badc43320120b9262450/pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21a0d3b115009ebb8ac3d2ebec5c2982cc693da935f4ab7bb5c8ebe2f47d36f2", size = 3323665 }, + { url = "https://files.pythonhosted.org/packages/0e/75/689b4ec0483c42bfc7d1aacd32ade7a226db4f4fac57c6fdcdf90c0731e3/pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:73853108f56df97baf2bb8b522f3578221e56f646ba345a372c78326710d3830", size = 3310533 }, + { url = "https://files.pythonhosted.org/packages/3d/30/38bd6149cf53da1db4bad304c543ade775d225961c4310f30425995cb9ec/pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e58876c91f97b0952eb766123bfef372792ab3f4e3e1f1a2267834c2ab131734", size = 3414886 }, + { url = "https://files.pythonhosted.org/packages/ec/3d/c32a51d848401bd94cabb8767a39621496491ee7cd5199856b77da9b18ad/pillow-11.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:224aaa38177597bb179f3ec87eeefcce8e4f85e608025e9cfac60de237ba6316", size = 2567508 }, ] [[package]] @@ -3058,7 +3359,7 @@ name = "portalocker" version = "2.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "pywin32", marker = "platform_system == 'Windows'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ed/d3/c6c64067759e87af98cc668c1cc75171347d0f1577fab7ca3749134e3cd4/portalocker-2.10.1.tar.gz", hash = "sha256:ef1bf844e878ab08aee7e40184156e1151f228f103aa5c6bd0724cc330960f8f", size = 40891 } wheels = [ @@ -3103,6 +3404,22 @@ version = "0.2.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/20/c8/2a13f78d82211490855b2fb303b6721348d0787fdd9a12ac46d99d3acde1/propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64", size = 41735 } wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/a5/0ea64c9426959ef145a938e38c832fc551843481d356713ececa9a8a64e8/propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6", size = 79296 }, + { url = "https://files.pythonhosted.org/packages/76/5a/916db1aba735f55e5eca4733eea4d1973845cf77dfe67c2381a2ca3ce52d/propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2", size = 45622 }, + { url = "https://files.pythonhosted.org/packages/2d/62/685d3cf268b8401ec12b250b925b21d152b9d193b7bffa5fdc4815c392c2/propcache-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6445804cf4ec763dc70de65a3b0d9954e868609e83850a47ca4f0cb64bd79fea", size = 45133 }, + { url = "https://files.pythonhosted.org/packages/4d/3d/31c9c29ee7192defc05aa4d01624fd85a41cf98e5922aaed206017329944/propcache-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9479aa06a793c5aeba49ce5c5692ffb51fcd9a7016e017d555d5e2b0045d212", size = 204809 }, + { url = "https://files.pythonhosted.org/packages/10/a1/e4050776f4797fc86140ac9a480d5dc069fbfa9d499fe5c5d2fa1ae71f07/propcache-0.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9631c5e8b5b3a0fda99cb0d29c18133bca1e18aea9effe55adb3da1adef80d3", size = 219109 }, + { url = "https://files.pythonhosted.org/packages/c9/c0/e7ae0df76343d5e107d81e59acc085cea5fd36a48aa53ef09add7503e888/propcache-0.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3156628250f46a0895f1f36e1d4fbe062a1af8718ec3ebeb746f1d23f0c5dc4d", size = 217368 }, + { url = "https://files.pythonhosted.org/packages/fc/e1/e0a2ed6394b5772508868a977d3238f4afb2eebaf9976f0b44a8d347ad63/propcache-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b6fb63ae352e13748289f04f37868099e69dba4c2b3e271c46061e82c745634", size = 205124 }, + { url = "https://files.pythonhosted.org/packages/50/c1/e388c232d15ca10f233c778bbdc1034ba53ede14c207a72008de45b2db2e/propcache-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:887d9b0a65404929641a9fabb6452b07fe4572b269d901d622d8a34a4e9043b2", size = 195463 }, + { url = "https://files.pythonhosted.org/packages/0a/fd/71b349b9def426cc73813dbd0f33e266de77305e337c8c12bfb0a2a82bfb/propcache-0.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a96dc1fa45bd8c407a0af03b2d5218392729e1822b0c32e62c5bf7eeb5fb3958", size = 198358 }, + { url = "https://files.pythonhosted.org/packages/02/f2/d7c497cd148ebfc5b0ae32808e6c1af5922215fe38c7a06e4e722fe937c8/propcache-0.2.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a7e65eb5c003a303b94aa2c3852ef130230ec79e349632d030e9571b87c4698c", size = 195560 }, + { url = "https://files.pythonhosted.org/packages/bb/57/f37041bbe5e0dfed80a3f6be2612a3a75b9cfe2652abf2c99bef3455bbad/propcache-0.2.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:999779addc413181912e984b942fbcc951be1f5b3663cd80b2687758f434c583", size = 196895 }, + { url = "https://files.pythonhosted.org/packages/83/36/ae3cc3e4f310bff2f064e3d2ed5558935cc7778d6f827dce74dcfa125304/propcache-0.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:19a0f89a7bb9d8048d9c4370c9c543c396e894c76be5525f5e1ad287f1750ddf", size = 207124 }, + { url = "https://files.pythonhosted.org/packages/8c/c4/811b9f311f10ce9d31a32ff14ce58500458443627e4df4ae9c264defba7f/propcache-0.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1ac2f5fe02fa75f56e1ad473f1175e11f475606ec9bd0be2e78e4734ad575034", size = 210442 }, + { url = "https://files.pythonhosted.org/packages/18/dd/a1670d483a61ecac0d7fc4305d91caaac7a8fc1b200ea3965a01cf03bced/propcache-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:574faa3b79e8ebac7cb1d7930f51184ba1ccf69adfdec53a12f319a06030a68b", size = 203219 }, + { url = "https://files.pythonhosted.org/packages/f9/2d/30ced5afde41b099b2dc0c6573b66b45d16d73090e85655f1a30c5a24e07/propcache-0.2.1-cp310-cp310-win32.whl", hash = "sha256:03ff9d3f665769b2a85e6157ac8b439644f2d7fd17615a82fa55739bc97863f4", size = 40313 }, + { url = "https://files.pythonhosted.org/packages/23/84/bd9b207ac80da237af77aa6e153b08ffa83264b1c7882495984fcbfcf85c/propcache-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:2d3af2e79991102678f53e0dbf4c35de99b6b8b58f29a27ca0325816364caaba", size = 44428 }, { url = "https://files.pythonhosted.org/packages/bc/0f/2913b6791ebefb2b25b4efd4bb2299c985e09786b9f5b19184a88e5778dd/propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16", size = 79297 }, { url = "https://files.pythonhosted.org/packages/cf/73/af2053aeccd40b05d6e19058419ac77674daecdd32478088b79375b9ab54/propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717", size = 45611 }, { url = "https://files.pythonhosted.org/packages/3c/09/8386115ba7775ea3b9537730e8cf718d83bbf95bffe30757ccf37ec4e5da/propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3", size = 45146 }, @@ -3189,6 +3506,8 @@ version = "2.9.10" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/62/51/2007ea29e605957a17ac6357115d0c1a1b60c8c984951c19419b3474cdfd/psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11", size = 385672 } wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/a9/146b6bdc0d33539a359f5e134ee6dda9173fb8121c5b96af33fa299e50c4/psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716", size = 1024527 }, + { url = "https://files.pythonhosted.org/packages/47/50/c509e56f725fd2572b59b69bd964edaf064deebf1c896b2452f6b46fdfb3/psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a", size = 1163735 }, { url = "https://files.pythonhosted.org/packages/20/a2/c51ca3e667c34e7852157b665e3d49418e68182081060231d514dd823225/psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2", size = 1024538 }, { url = "https://files.pythonhosted.org/packages/33/39/5a9a229bb5414abeb86e33b8fc8143ab0aecce5a7f698a53e31367d30caa/psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4", size = 1163736 }, { url = "https://files.pythonhosted.org/packages/3d/16/4623fad6076448df21c1a870c93a9774ad8a7b4dd1660223b59082dd8fec/psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067", size = 1025113 }, @@ -3219,6 +3538,13 @@ version = "18.1.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7f/7b/640785a9062bb00314caa8a387abce547d2a420cf09bd6c715fe659ccffb/pyarrow-18.1.0.tar.gz", hash = "sha256:9386d3ca9c145b5539a1cfc75df07757dff870168c959b473a0bccbc3abc8c73", size = 1118671 } wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/bb/8d4a1573f66e0684f190dd2b55fd0b97a7214de8882d58a3867e777bf640/pyarrow-18.1.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:e21488d5cfd3d8b500b3238a6c4b075efabc18f0f6d80b29239737ebd69caa6c", size = 29531620 }, + { url = "https://files.pythonhosted.org/packages/30/90/893acfad917533b624a97b9e498c0e8393908508a0a72d624fe935e632bf/pyarrow-18.1.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:b516dad76f258a702f7ca0250885fc93d1fa5ac13ad51258e39d402bd9e2e1e4", size = 30836521 }, + { url = "https://files.pythonhosted.org/packages/a3/2a/526545a7464b5fb2fa6e2c4bad16ca90e59e1843025c534fd907b7f73e5a/pyarrow-18.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f443122c8e31f4c9199cb23dca29ab9427cef990f283f80fe15b8e124bcc49b", size = 39213905 }, + { url = "https://files.pythonhosted.org/packages/8a/77/4b3fab91a30e19e233e738d0c5eca5a8f6dd05758bc349a2ca262c65de79/pyarrow-18.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0a03da7f2758645d17b7b4f83c8bffeae5bbb7f974523fe901f36288d2eab71", size = 40128881 }, + { url = "https://files.pythonhosted.org/packages/aa/e2/a88e16c5e45e562449c52305bd3bc2f9d704295322d3434656e7ccac1444/pyarrow-18.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ba17845efe3aa358ec266cf9cc2800fa73038211fb27968bfa88acd09261a470", size = 38627517 }, + { url = "https://files.pythonhosted.org/packages/6d/84/8037c20005ccc7b869726465be0957bd9c29cfc88612962030f08292ad06/pyarrow-18.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:3c35813c11a059056a22a3bef520461310f2f7eea5c8a11ef9de7062a23f8d56", size = 40060187 }, + { url = "https://files.pythonhosted.org/packages/2a/38/d6435c723ff73df8ae74626ea778262fbcc2b9b0d1a4f3db915b61711b05/pyarrow-18.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:9736ba3c85129d72aefa21b4f3bd715bc4190fe4426715abfff90481e7d00812", size = 25118314 }, { url = "https://files.pythonhosted.org/packages/9e/4d/a4988e7d82f4fbc797715db4185939a658eeffb07a25bab7262bed1ea076/pyarrow-18.1.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:eaeabf638408de2772ce3d7793b2668d4bb93807deed1725413b70e3156a7854", size = 29554860 }, { url = "https://files.pythonhosted.org/packages/59/03/3a42c5c1e4bd4c900ab62aa1ff6b472bdb159ba8f1c3e5deadab7222244f/pyarrow-18.1.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:3b2e2239339c538f3464308fd345113f886ad031ef8266c6f004d49769bb074c", size = 30867076 }, { url = "https://files.pythonhosted.org/packages/75/7e/332055ac913373e89256dce9d14b7708f55f7bd5be631456c897f0237738/pyarrow-18.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f39a2e0ed32a0970e4e46c262753417a60c43a3246972cfc2d3eb85aedd01b21", size = 39212135 }, @@ -3280,6 +3606,18 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/12/e3/0d5ad91211dba310f7ded335f4dad871172b9cc9ce204f5a56d76ccd6247/pydantic_core-2.20.1.tar.gz", hash = "sha256:26ca695eeee5f9f1aeeb211ffc12f10bcb6f71e2989988fda61dabd65db878d4", size = 388371 } wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/9d/f30f080f745682e762512f3eef1f6e392c7d74a102e6e96de8a013a5db84/pydantic_core-2.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3acae97ffd19bf091c72df4d726d552c473f3576409b2a7ca36b2f535ffff4a3", size = 1837257 }, + { url = "https://files.pythonhosted.org/packages/f2/89/77e7aebdd4a235497ac1e07f0a99e9f40e47f6e0f6783fe30500df08fc42/pydantic_core-2.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:41f4c96227a67a013e7de5ff8f20fb496ce573893b7f4f2707d065907bffdbd6", size = 1776715 }, + { url = "https://files.pythonhosted.org/packages/18/50/5a4e9120b395108c2a0441a425356c0d26a655d7c617288bec1c28b854ac/pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f239eb799a2081495ea659d8d4a43a8f42cd1fe9ff2e7e436295c38a10c286a", size = 1789023 }, + { url = "https://files.pythonhosted.org/packages/c7/e5/f19e13ba86b968d024b56aa53f40b24828652ac026e5addd0ae49eeada02/pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53e431da3fc53360db73eedf6f7124d1076e1b4ee4276b36fb25514544ceb4a3", size = 1775598 }, + { url = "https://files.pythonhosted.org/packages/c9/c7/f3c29bed28bd022c783baba5bf9946c4f694cb837a687e62f453c81eb5c6/pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1f62b2413c3a0e846c3b838b2ecd6c7a19ec6793b2a522745b0869e37ab5bc1", size = 1977691 }, + { url = "https://files.pythonhosted.org/packages/41/3e/f62c2a05c554fff34570f6788617e9670c83ed7bc07d62a55cccd1bc0be6/pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d41e6daee2813ecceea8eda38062d69e280b39df793f5a942fa515b8ed67953", size = 2693214 }, + { url = "https://files.pythonhosted.org/packages/ae/49/8a6fe79d35e2f3bea566d8ea0e4e6f436d4f749d7838c8e8c4c5148ae706/pydantic_core-2.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d482efec8b7dc6bfaedc0f166b2ce349df0011f5d2f1f25537ced4cfc34fd98", size = 2061047 }, + { url = "https://files.pythonhosted.org/packages/51/c6/585355c7c8561e11197dbf6333c57dd32f9f62165d48589b57ced2373d97/pydantic_core-2.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e93e1a4b4b33daed65d781a57a522ff153dcf748dee70b40c7258c5861e1768a", size = 1895106 }, + { url = "https://files.pythonhosted.org/packages/ce/23/829f6b87de0775919e82f8addef8b487ace1c77bb4cb754b217f7b1301b6/pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7c4ea22b6739b162c9ecaaa41d718dfad48a244909fe7ef4b54c0b530effc5a", size = 1968506 }, + { url = "https://files.pythonhosted.org/packages/ca/2f/f8ca8f0c40b3ee0a4d8730a51851adb14c5eda986ec09f8d754b2fba784e/pydantic_core-2.20.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4f2790949cf385d985a31984907fecb3896999329103df4e4983a4a41e13e840", size = 2110217 }, + { url = "https://files.pythonhosted.org/packages/bb/a0/1876656c7b17eb69cc683452cce6bb890dd722222a71b3de57ddb512f561/pydantic_core-2.20.1-cp310-none-win32.whl", hash = "sha256:5e999ba8dd90e93d57410c5e67ebb67ffcaadcea0ad973240fdfd3a135506250", size = 1709669 }, + { url = "https://files.pythonhosted.org/packages/be/4a/576524eefa9b301c088c4818dc50ff1c51a88fe29efd87ab75748ae15fd7/pydantic_core-2.20.1-cp310-none-win_amd64.whl", hash = "sha256:512ecfbefef6dac7bc5eaaf46177b2de58cdf7acac8793fe033b24ece0b9566c", size = 1902386 }, { url = "https://files.pythonhosted.org/packages/61/db/f6a724db226d990a329910727cfac43539ff6969edc217286dd05cda3ef6/pydantic_core-2.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d2a8fa9d6d6f891f3deec72f5cc668e6f66b188ab14bb1ab52422fe8e644f312", size = 1834507 }, { url = "https://files.pythonhosted.org/packages/9b/83/6f2bfe75209d557ae1c3550c1252684fc1827b8b12fbed84c3b4439e135d/pydantic_core-2.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:175873691124f3d0da55aeea1d90660a6ea7a3cfea137c38afa0a5ffabe37b88", size = 1773527 }, { url = "https://files.pythonhosted.org/packages/93/ef/513ea76d7ca81f2354bb9c8d7839fc1157673e652613f7e1aff17d8ce05d/pydantic_core-2.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37eee5b638f0e0dcd18d21f59b679686bbd18917b87db0193ae36f9c23c355fc", size = 1787879 }, @@ -3316,6 +3654,14 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5d/1f/f378631574ead46d636b9a04a80ff878b9365d4b361b1905ef1667d4182a/pydantic_core-2.20.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c81131869240e3e568916ef4c307f8b99583efaa60a8112ef27a366eefba8ef0", size = 2118920 }, { url = "https://files.pythonhosted.org/packages/7a/ea/e4943f17df7a3031d709481fe4363d4624ae875a6409aec34c28c9e6cf59/pydantic_core-2.20.1-cp313-none-win32.whl", hash = "sha256:b91ced227c41aa29c672814f50dbb05ec93536abf8f43cd14ec9521ea09afe4e", size = 1717397 }, { url = "https://files.pythonhosted.org/packages/13/63/b95781763e8d84207025071c0cec16d921c0163c7a9033ae4b9a0e020dc7/pydantic_core-2.20.1-cp313-none-win_amd64.whl", hash = "sha256:65db0f2eefcaad1a3950f498aabb4875c8890438bc80b19362cf633b87a8ab20", size = 1898013 }, + { url = "https://files.pythonhosted.org/packages/73/73/0c7265903f66cce39ed7ca939684fba344210cefc91ccc999cfd5b113fd3/pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a45f84b09ac9c3d35dfcf6a27fd0634d30d183205230a0ebe8373a0e8cfa0906", size = 1828190 }, + { url = "https://files.pythonhosted.org/packages/27/55/60b8b0e58b49ee3ed36a18562dd7c6bc06a551c390e387af5872a238f2ec/pydantic_core-2.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d02a72df14dfdbaf228424573a07af10637bd490f0901cee872c4f434a735b94", size = 1715252 }, + { url = "https://files.pythonhosted.org/packages/28/3d/d66314bad6bb777a36559195a007b31e916bd9e2c198f7bb8f4ccdceb4fa/pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2b27e6af28f07e2f195552b37d7d66b150adbaa39a6d327766ffd695799780f", size = 1782641 }, + { url = "https://files.pythonhosted.org/packages/9e/f5/f178f4354d0d6c1431a8f9ede71f3c4269ac4dc55d314fdb7555814276dc/pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084659fac3c83fd674596612aeff6041a18402f1e1bc19ca39e417d554468482", size = 1928788 }, + { url = "https://files.pythonhosted.org/packages/9c/51/1f5e27bb194df79e30b593b608c66e881ed481241e2b9ed5bdf86d165480/pydantic_core-2.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:242b8feb3c493ab78be289c034a1f659e8826e2233786e36f2893a950a719bb6", size = 1886116 }, + { url = "https://files.pythonhosted.org/packages/ac/76/450d9258c58dc7c70b9e3aadf6bebe23ddd99e459c365e2adbde80e238da/pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:38cf1c40a921d05c5edc61a785c0ddb4bed67827069f535d794ce6bcded919fc", size = 1960125 }, + { url = "https://files.pythonhosted.org/packages/dd/9e/0309a7a4bea51771729515e413b3987be0789837de99087f7415e0db1f9b/pydantic_core-2.20.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e0bbdd76ce9aa5d4209d65f2b27fc6e5ef1312ae6c5333c26db3f5ade53a1e99", size = 2100407 }, + { url = "https://files.pythonhosted.org/packages/af/93/06d44e08277b3b818b75bd5f25e879d7693e4b7dd3505fde89916fcc9ca2/pydantic_core-2.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:254ec27fdb5b1ee60684f91683be95e5133c994cc54e86a0b0963afa25c8f8a6", size = 1914966 }, ] [[package]] @@ -3356,19 +3702,19 @@ crypto = [ [[package]] name = "pylance" -version = "0.19.1" +version = "0.19.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, { name = "pyarrow" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/fb/5e269c0c310646099fea4cc47872e21172d3d917fe68a036bf2f3e42b374/pylance-0.19.1-cp39-abi3-macosx_10_15_x86_64.whl", hash = "sha256:a254d09690a5e09cadc5fecc7b43b2bfc20b477e0f0ba31497e1d6abb36b524a", size = 28569476 }, - { url = "https://files.pythonhosted.org/packages/65/47/390622a3f7b2873966c0e197979afb72eb3cb0352342bdff6581c8600fa4/pylance-0.19.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:9859c372b2d7fe443b6218f62e9d77caf94961cac73b274c85b724f20dd6b690", size = 26540391 }, - { url = "https://files.pythonhosted.org/packages/47/8a/2a8a07af0983577b8fc68eeb85fbb3ea0e774d84125a6395d748fde1b580/pylance-0.19.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8315152f57329e7668ff5c82c252591ea0e3d2aed702dd19a42d645945e7a07e", size = 30423804 }, - { url = "https://files.pythonhosted.org/packages/ee/33/eee18d4d8996e0db79c71231b653b5c9ae86a9002e3e3d708e1461717f5c/pylance-0.19.1-cp39-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:7c2e0e00b40214edae576075dbfa432cadaf5ba21354b0c46f307daf4e77403f", size = 28979799 }, - { url = "https://files.pythonhosted.org/packages/3b/af/3bf6d0c9dc52e2ae048c575249527f3c2cc8a4df85c94905900c719b42e0/pylance-0.19.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:e26ce273840912c45dd2b8f6f8fb9082c1c788d696e11b78ddad3949e3892d50", size = 30359171 }, - { url = "https://files.pythonhosted.org/packages/d9/73/0641124631a4f5f03d988c4a8000046d4c182340719ba4cf228cb45c5dca/pylance-0.19.1-cp39-abi3-win_amd64.whl", hash = "sha256:b341e547c995b5d6b32eb63e1e015d31b608de49a9ad03f8981453f4c667e8e1", size = 28387696 }, + { url = "https://files.pythonhosted.org/packages/11/47/5eb617889ad15fc07bceb419fdc9e42c67de878f2d081e30637af9e5e735/pylance-0.19.2-cp39-abi3-macosx_10_15_x86_64.whl", hash = "sha256:659b2ba45b7c905a2873bb36e9b4a6ec4634690723d45af0b469a502acacf5eb", size = 28776069 }, + { url = "https://files.pythonhosted.org/packages/8b/f5/6c2f04869747cb382f0f561362d354e132c2adb9b299aa28f28bb1847209/pylance-0.19.2-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:6a15b8b09e015feb11307ff63ef0742f9e120100e17476b1091d3db543c19bdf", size = 26733988 }, + { url = "https://files.pythonhosted.org/packages/34/35/722388309957c2dbab64a6901152c794dce01978e859a35989f95678af81/pylance-0.19.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1732ff03acceacc6793f6b209357a757ce3cfd5a94369a81b3d15e8e425f9a", size = 30626161 }, + { url = "https://files.pythonhosted.org/packages/e9/d2/38d523007824ef975fca496022e2583df833226f128399d4daf0a046896d/pylance-0.19.2-cp39-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:c3be7883ae860c39186f41798cd752b93298450cc09488108f2aa738aa352f0e", size = 29172165 }, + { url = "https://files.pythonhosted.org/packages/90/48/f41b76e478651afee95f3a558db1d8ea9b85e1b31511b4340ea6224491fe/pylance-0.19.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:48a618dfc493932b49a8c1f50ad031e39c4d505d30c968d6467da1a03720a523", size = 30527798 }, + { url = "https://files.pythonhosted.org/packages/dd/24/126b0e37b30bf567ed31151f8adf009ee5d8eb68c613bc33e5f523f0d710/pylance-0.19.2-cp39-abi3-win_amd64.whl", hash = "sha256:70d47d94521fc973460c8d765c3960db79a1f676aab658434693ab3e5a7112c1", size = 28575346 }, ] [[package]] @@ -3382,6 +3728,7 @@ dependencies = [ { name = "isort" }, { name = "mccabe" }, { name = "platformdirs" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "tomlkit" }, ] sdist = { url = "https://files.pythonhosted.org/packages/81/d8/4471b2cb4ad18b4af717918c468209bd2bd5a02c52f60be5ee8a71b5af2c/pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01", size = 1516485 } @@ -3429,6 +3776,9 @@ wheels = [ name = "pypdf" version = "4.3.1" source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] sdist = { url = "https://files.pythonhosted.org/packages/f0/65/2ed7c9e1d31d860f096061b3dd2d665f501e09faaa0409a3f0d719d2a16d/pypdf-4.3.1.tar.gz", hash = "sha256:b2f37fe9a3030aa97ca86067a56ba3f9d3565f9a791b305c7355d8392c30d91b", size = 293266 } wheels = [ { url = "https://files.pythonhosted.org/packages/3c/60/eccdd92dd4af3e4bea6d6a342f7588c618a15b9bec4b968af581e498bcc4/pypdf-4.3.1-py3-none-any.whl", hash = "sha256:64b31da97eda0771ef22edb1bfecd5deee4b72c3d1736b7df2689805076d6418", size = 295825 }, @@ -3440,9 +3790,11 @@ version = "7.4.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/80/1f/9d8e98e4133ffb16c90f3b405c43e38d3abb715bb5d7a63a5a684f7e46a3/pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280", size = 1357116 } wheels = [ @@ -3590,6 +3942,9 @@ name = "pywin32" version = "308" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/72/a6/3e9f2c474895c1bb61b11fa9640be00067b5c5b363c501ee9c3fa53aec01/pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e", size = 5927028 }, + { url = "https://files.pythonhosted.org/packages/d9/b4/84e2463422f869b4b718f79eb7530a4c1693e96b8a4e5e968de38be4d2ba/pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e", size = 6558484 }, + { url = "https://files.pythonhosted.org/packages/9f/8f/fb84ab789713f7c6feacaa08dad3ec8105b88ade8d1c4f0f0dfcaaa017d6/pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c", size = 7971454 }, { url = "https://files.pythonhosted.org/packages/eb/e2/02652007469263fe1466e98439831d65d4ca80ea1a2df29abecedf7e47b7/pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a", size = 5928156 }, { url = "https://files.pythonhosted.org/packages/48/ef/f4fb45e2196bc7ffe09cad0542d9aff66b0e33f6c0954b43e49c33cad7bd/pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b", size = 6559559 }, { url = "https://files.pythonhosted.org/packages/79/ef/68bb6aa865c5c9b11a35771329e95917b5559845bd75b65549407f9fc6b4/pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6", size = 7972495 }, @@ -3607,6 +3962,15 @@ version = "6.0.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199 }, + { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758 }, + { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463 }, + { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280 }, + { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239 }, + { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802 }, + { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527 }, + { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052 }, + { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774 }, { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612 }, { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040 }, { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829 }, @@ -3660,6 +4024,21 @@ version = "3.11.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/a4/aa/25e5a20131369d82c7b8288c99c2c3011ec47a3f5953ccc9cb8145720be5/rapidfuzz-3.11.0.tar.gz", hash = "sha256:a53ca4d3f52f00b393fab9b5913c5bafb9afc27d030c8a1db1283da6917a860f", size = 57983000 } wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/70/820ebf9eb22ad97b9e0bb9fd1ad8c6be4c8db5a0974d12ce27b5c9a30db0/rapidfuzz-3.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eb8a54543d16ab1b69e2c5ed96cabbff16db044a50eddfc028000138ca9ddf33", size = 1954240 }, + { url = "https://files.pythonhosted.org/packages/41/bc/e39abdc28160d8147ccab0aa922a29be50529dcf149615a68a324ff6f9b1/rapidfuzz-3.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:231c8b2efbd7f8d2ecd1ae900363ba168b8870644bb8f2b5aa96e4a7573bde19", size = 1427139 }, + { url = "https://files.pythonhosted.org/packages/b6/2d/19b8e5d80257b13d73ba994552b78a69ac2ed70f1de716f1b02fcb84d09c/rapidfuzz-3.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54e7f442fb9cca81e9df32333fb075ef729052bcabe05b0afc0441f462299114", size = 1419602 }, + { url = "https://files.pythonhosted.org/packages/8c/82/1fc80cc531ec712872025c19118d78eb23aff09c7144b380c2c4b544b0d1/rapidfuzz-3.11.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:906f1f2a1b91c06599b3dd1be207449c5d4fc7bd1e1fa2f6aef161ea6223f165", size = 5635370 }, + { url = "https://files.pythonhosted.org/packages/3c/5c/007b90af25f98e301b5f7a095059b09f602701443d555724c9226a45514c/rapidfuzz-3.11.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ed59044aea9eb6c663112170f2399b040d5d7b162828b141f2673e822093fa8", size = 1680848 }, + { url = "https://files.pythonhosted.org/packages/01/04/e481530eff5d1cf337b86a3095dd4de0b758c37291e51eb0d8c4f7d49719/rapidfuzz-3.11.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1cb1965a28b0fa64abdee130c788a0bc0bb3cf9ef7e3a70bf055c086c14a3d7e", size = 1682131 }, + { url = "https://files.pythonhosted.org/packages/10/15/b0ec18edfe6146d8915679644ab7584cd0165724d6a53bcc43bd59f8edb5/rapidfuzz-3.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b488b244931d0291412917e6e46ee9f6a14376625e150056fe7c4426ef28225", size = 3134097 }, + { url = "https://files.pythonhosted.org/packages/8b/0e/cf0a5d62977381bca981fc171fd6c85dc52ca1239eaacf9c1d38978c5866/rapidfuzz-3.11.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f0ba13557fec9d5ffc0a22826754a7457cc77f1b25145be10b7bb1d143ce84c6", size = 2332928 }, + { url = "https://files.pythonhosted.org/packages/dc/71/568d383eb36586c9e7e13f1327203e2be0938e5ff070c1fa2a99b418808e/rapidfuzz-3.11.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3871fa7dfcef00bad3c7e8ae8d8fd58089bad6fb21f608d2bf42832267ca9663", size = 6940409 }, + { url = "https://files.pythonhosted.org/packages/ba/23/02972657d69e6d3aae2cdbd67debad080410ff9ef8849d8eab5e580a48a5/rapidfuzz-3.11.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:b2669eafee38c5884a6e7cc9769d25c19428549dcdf57de8541cf9e82822e7db", size = 2715928 }, + { url = "https://files.pythonhosted.org/packages/17/17/d964d770faa4e25e125618c00e31607cf8ce639d518fc29d200edf06cfda/rapidfuzz-3.11.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ffa1bb0e26297b0f22881b219ffc82a33a3c84ce6174a9d69406239b14575bd5", size = 3265078 }, + { url = "https://files.pythonhosted.org/packages/bc/13/a117412b1e4ed0bb23b9891a45a59812d96fde8c076b8b8b828aa7ca3710/rapidfuzz-3.11.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:45b15b8a118856ac9caac6877f70f38b8a0d310475d50bc814698659eabc1cdb", size = 4169215 }, + { url = "https://files.pythonhosted.org/packages/9f/0d/89ef496aedf885db4bfe7f46ac6727666afe0d9d8ca5b4f9c7cc8eef0378/rapidfuzz-3.11.0-cp310-cp310-win32.whl", hash = "sha256:22033677982b9c4c49676f215b794b0404073f8974f98739cb7234e4a9ade9ad", size = 1841736 }, + { url = "https://files.pythonhosted.org/packages/47/9a/69019f4e9c8a42e4aca0169dbae71602aba4e0fa4c5e84515f3ed682e59a/rapidfuzz-3.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:be15496e7244361ff0efcd86e52559bacda9cd975eccf19426a0025f9547c792", size = 1614955 }, + { url = "https://files.pythonhosted.org/packages/37/65/6fb036e39d175299ce44e5186ee2d08b9ea02d732ed6dbd70280f63b4eba/rapidfuzz-3.11.0-cp310-cp310-win_arm64.whl", hash = "sha256:714a7ba31ba46b64d30fccfe95f8013ea41a2e6237ba11a805a27cdd3bce2573", size = 863543 }, { url = "https://files.pythonhosted.org/packages/40/ac/9ca008834104ad138fbfe2d7ae4443ada55e00c4eb4272d288897e8763b8/rapidfuzz-3.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8724a978f8af7059c5323d523870bf272a097478e1471295511cf58b2642ff83", size = 1955019 }, { url = "https://files.pythonhosted.org/packages/4c/55/d026c01c9312c9c2a413679052a9bb884743fc5655e59339116d83a2125b/rapidfuzz-3.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b63cb1f2eb371ef20fb155e95efd96e060147bdd4ab9fc400c97325dfee9fe1", size = 1427753 }, { url = "https://files.pythonhosted.org/packages/d1/a0/5f3fae81dd1efdf47da19641e321ae84b4f49a5a7b2ab3ff78bd04a0ae7f/rapidfuzz-3.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82497f244aac10b20710448645f347d862364cc4f7d8b9ba14bd66b5ce4dec18", size = 1411472 }, @@ -3705,6 +4084,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fd/d8/4677e36e958b4d95d039d254d597db9c020896c8130911dc36b136373b87/rapidfuzz-3.11.0-cp313-cp313-win32.whl", hash = "sha256:6ad02bab756751c90fa27f3069d7b12146613061341459abf55f8190d899649f", size = 1822624 }, { url = "https://files.pythonhosted.org/packages/e8/97/1c782140e688ea2c3337d94516c635c575aa39fe62782fd53ad5d2119df4/rapidfuzz-3.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:b1472986fd9c5d318399a01a0881f4a0bf4950264131bb8e2deba9df6d8c362b", size = 1604273 }, { url = "https://files.pythonhosted.org/packages/a6/83/8b713d50bec947e945a79be47f772484307fc876c426fb26c6f369098389/rapidfuzz-3.11.0-cp313-cp313-win_arm64.whl", hash = "sha256:c408f09649cbff8da76f8d3ad878b64ba7f7abdad1471efb293d2c075e80c822", size = 857385 }, + { url = "https://files.pythonhosted.org/packages/30/5a/8ac67667663d24cc4d4b76f63783e58ef03e4d4843d02dab6b2f8470ea5e/rapidfuzz-3.11.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:f06e3c4c0a8badfc4910b9fd15beb1ad8f3b8fafa8ea82c023e5e607b66a78e4", size = 1853100 }, + { url = "https://files.pythonhosted.org/packages/dc/72/b043c26e93fb1bc5dfab1e5dd0f8d2f6135c2aa48e6db0660d4ecc5b157a/rapidfuzz-3.11.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fe7aaf5a54821d340d21412f7f6e6272a9b17a0cbafc1d68f77f2fc11009dcd5", size = 1361961 }, + { url = "https://files.pythonhosted.org/packages/5c/4a/29916c0dd853d22ef7b988af43f4e34d327581e16f60b4c9b0f229fa306c/rapidfuzz-3.11.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25398d9ac7294e99876a3027ffc52c6bebeb2d702b1895af6ae9c541ee676702", size = 1354313 }, + { url = "https://files.pythonhosted.org/packages/41/39/f352af4ede7faeeea20bae2537f1fa60c3bbbf2696f0f2f3dda696745239/rapidfuzz-3.11.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a52eea839e4bdc72c5e60a444d26004da00bb5bc6301e99b3dde18212e41465", size = 5478019 }, + { url = "https://files.pythonhosted.org/packages/99/8e/86f8a11ac0edda63ff5314d992aa1576fff5d8233f4310d46a6bb0551122/rapidfuzz-3.11.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c87319b0ab9d269ab84f6453601fd49b35d9e4a601bbaef43743f26fabf496c", size = 3056881 }, + { url = "https://files.pythonhosted.org/packages/98/53/222dceb24a83c7d7d76086b6d5bfd3d6aa9988ea73d356d287b5c437c0d5/rapidfuzz-3.11.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3048c6ed29d693fba7d2a7caf165f5e0bb2b9743a0989012a98a47b975355cca", size = 1543944 }, ] [[package]] @@ -3738,6 +4123,22 @@ version = "2024.11.6" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494 } wheels = [ + { url = "https://files.pythonhosted.org/packages/95/3c/4651f6b130c6842a8f3df82461a8950f923925db8b6961063e82744bddcc/regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91", size = 482674 }, + { url = "https://files.pythonhosted.org/packages/15/51/9f35d12da8434b489c7b7bffc205c474a0a9432a889457026e9bc06a297a/regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0", size = 287684 }, + { url = "https://files.pythonhosted.org/packages/bd/18/b731f5510d1b8fb63c6b6d3484bfa9a59b84cc578ac8b5172970e05ae07c/regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e", size = 284589 }, + { url = "https://files.pythonhosted.org/packages/78/a2/6dd36e16341ab95e4c6073426561b9bfdeb1a9c9b63ab1b579c2e96cb105/regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde", size = 782511 }, + { url = "https://files.pythonhosted.org/packages/1b/2b/323e72d5d2fd8de0d9baa443e1ed70363ed7e7b2fb526f5950c5cb99c364/regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e", size = 821149 }, + { url = "https://files.pythonhosted.org/packages/90/30/63373b9ea468fbef8a907fd273e5c329b8c9535fee36fc8dba5fecac475d/regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2", size = 809707 }, + { url = "https://files.pythonhosted.org/packages/f2/98/26d3830875b53071f1f0ae6d547f1d98e964dd29ad35cbf94439120bb67a/regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf", size = 781702 }, + { url = "https://files.pythonhosted.org/packages/87/55/eb2a068334274db86208ab9d5599ffa63631b9f0f67ed70ea7c82a69bbc8/regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c", size = 771976 }, + { url = "https://files.pythonhosted.org/packages/74/c0/be707bcfe98254d8f9d2cff55d216e946f4ea48ad2fd8cf1428f8c5332ba/regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86", size = 697397 }, + { url = "https://files.pythonhosted.org/packages/49/dc/bb45572ceb49e0f6509f7596e4ba7031f6819ecb26bc7610979af5a77f45/regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67", size = 768726 }, + { url = "https://files.pythonhosted.org/packages/5a/db/f43fd75dc4c0c2d96d0881967897926942e935d700863666f3c844a72ce6/regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d", size = 775098 }, + { url = "https://files.pythonhosted.org/packages/99/d7/f94154db29ab5a89d69ff893159b19ada89e76b915c1293e98603d39838c/regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2", size = 839325 }, + { url = "https://files.pythonhosted.org/packages/f7/17/3cbfab1f23356fbbf07708220ab438a7efa1e0f34195bf857433f79f1788/regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008", size = 843277 }, + { url = "https://files.pythonhosted.org/packages/7e/f2/48b393b51900456155de3ad001900f94298965e1cad1c772b87f9cfea011/regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62", size = 773197 }, + { url = "https://files.pythonhosted.org/packages/45/3f/ef9589aba93e084cd3f8471fded352826dcae8489b650d0b9b27bc5bba8a/regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e", size = 261714 }, + { url = "https://files.pythonhosted.org/packages/42/7e/5f1b92c8468290c465fd50c5318da64319133231415a8aa6ea5ab995a815/regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519", size = 274042 }, { url = "https://files.pythonhosted.org/packages/58/58/7e4d9493a66c88a7da6d205768119f51af0f684fe7be7bac8328e217a52c/regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638", size = 482669 }, { url = "https://files.pythonhosted.org/packages/34/4c/8f8e631fcdc2ff978609eaeef1d6994bf2f028b59d9ac67640ed051f1218/regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7", size = 287684 }, { url = "https://files.pythonhosted.org/packages/c5/1b/f0e4d13e6adf866ce9b069e191f303a30ab1277e037037a365c3aad5cc9c/regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20", size = 284589 }, @@ -3845,6 +4246,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 } wheels = [ @@ -3857,6 +4259,19 @@ version = "0.22.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/01/80/cce854d0921ff2f0a9fa831ba3ad3c65cee3a46711addf39a2af52df2cfd/rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d", size = 26771 } wheels = [ + { url = "https://files.pythonhosted.org/packages/42/2a/ead1d09e57449b99dcc190d8d2323e3a167421d8f8fdf0f217c6f6befe47/rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967", size = 359514 }, + { url = "https://files.pythonhosted.org/packages/8f/7e/1254f406b7793b586c68e217a6a24ec79040f85e030fff7e9049069284f4/rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37", size = 349031 }, + { url = "https://files.pythonhosted.org/packages/aa/da/17c6a2c73730d426df53675ff9cc6653ac7a60b6438d03c18e1c822a576a/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24", size = 381485 }, + { url = "https://files.pythonhosted.org/packages/aa/13/2dbacd820466aa2a3c4b747afb18d71209523d353cf865bf8f4796c969ea/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff", size = 386794 }, + { url = "https://files.pythonhosted.org/packages/6d/62/96905d0a35ad4e4bc3c098b2f34b2e7266e211d08635baa690643d2227be/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c", size = 423523 }, + { url = "https://files.pythonhosted.org/packages/eb/1b/d12770f2b6a9fc2c3ec0d810d7d440f6d465ccd8b7f16ae5385952c28b89/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e", size = 446695 }, + { url = "https://files.pythonhosted.org/packages/4d/cf/96f1fd75512a017f8e07408b6d5dbeb492d9ed46bfe0555544294f3681b3/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec", size = 381959 }, + { url = "https://files.pythonhosted.org/packages/ab/f0/d1c5b501c8aea85aeb938b555bfdf7612110a2f8cdc21ae0482c93dd0c24/rpds_py-0.22.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c", size = 410420 }, + { url = "https://files.pythonhosted.org/packages/33/3b/45b6c58fb6aad5a569ae40fb890fc494c6b02203505a5008ee6dc68e65f7/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09", size = 557620 }, + { url = "https://files.pythonhosted.org/packages/83/62/3fdd2d3d47bf0bb9b931c4c73036b4ab3ec77b25e016ae26fab0f02be2af/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00", size = 584202 }, + { url = "https://files.pythonhosted.org/packages/04/f2/5dced98b64874b84ca824292f9cee2e3f30f3bcf231d15a903126684f74d/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf", size = 552787 }, + { url = "https://files.pythonhosted.org/packages/67/13/2273dea1204eda0aea0ef55145da96a9aa28b3f88bb5c70e994f69eda7c3/rpds_py-0.22.3-cp310-cp310-win32.whl", hash = "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652", size = 220088 }, + { url = "https://files.pythonhosted.org/packages/4e/80/8c8176b67ad7f4a894967a7a4014ba039626d96f1d4874d53e409b58d69f/rpds_py-0.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8", size = 231737 }, { url = "https://files.pythonhosted.org/packages/15/ad/8d1ddf78f2805a71253fcd388017e7b4a0615c22c762b6d35301fef20106/rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f", size = 359773 }, { url = "https://files.pythonhosted.org/packages/c8/75/68c15732293a8485d79fe4ebe9045525502a067865fa4278f178851b2d87/rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a", size = 349214 }, { url = "https://files.pythonhosted.org/packages/3c/4c/7ce50f3070083c2e1b2bbd0fb7046f3da55f510d19e283222f8f33d7d5f4/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5", size = 380477 }, @@ -3909,6 +4324,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/30/89/35fc7a6cdf3477d441c7aca5e9bbf5a14e0f25152aed7f63f4e0b141045d/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333", size = 553855 }, { url = "https://files.pythonhosted.org/packages/8f/e0/830c02b2457c4bd20a8c5bb394d31d81f57fbefce2dbdd2e31feff4f7003/rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730", size = 219100 }, { url = "https://files.pythonhosted.org/packages/f8/30/7ac943f69855c2db77407ae363484b915d861702dbba1aa82d68d57f42be/rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf", size = 233794 }, + { url = "https://files.pythonhosted.org/packages/8b/63/e29f8ee14fcf383574f73b6bbdcbec0fbc2e5fc36b4de44d1ac389b1de62/rpds_py-0.22.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d", size = 360786 }, + { url = "https://files.pythonhosted.org/packages/d3/e0/771ee28b02a24e81c8c0e645796a371350a2bb6672753144f36ae2d2afc9/rpds_py-0.22.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd", size = 350589 }, + { url = "https://files.pythonhosted.org/packages/cf/49/abad4c4a1e6f3adf04785a99c247bfabe55ed868133e2d1881200aa5d381/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493", size = 381848 }, + { url = "https://files.pythonhosted.org/packages/3a/7d/f4bc6d6fbe6af7a0d2b5f2ee77079efef7c8528712745659ec0026888998/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96", size = 387879 }, + { url = "https://files.pythonhosted.org/packages/13/b0/575c797377fdcd26cedbb00a3324232e4cb2c5d121f6e4b0dbf8468b12ef/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123", size = 423916 }, + { url = "https://files.pythonhosted.org/packages/54/78/87157fa39d58f32a68d3326f8a81ad8fb99f49fe2aa7ad9a1b7d544f9478/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad", size = 448410 }, + { url = "https://files.pythonhosted.org/packages/59/69/860f89996065a88be1b6ff2d60e96a02b920a262d8aadab99e7903986597/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9", size = 382841 }, + { url = "https://files.pythonhosted.org/packages/bd/d7/bc144e10d27e3cb350f98df2492a319edd3caaf52ddfe1293f37a9afbfd7/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e", size = 409662 }, + { url = "https://files.pythonhosted.org/packages/14/2a/6bed0b05233c291a94c7e89bc76ffa1c619d4e1979fbfe5d96024020c1fb/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338", size = 558221 }, + { url = "https://files.pythonhosted.org/packages/11/23/cd8f566de444a137bc1ee5795e47069a947e60810ba4152886fe5308e1b7/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566", size = 583780 }, + { url = "https://files.pythonhosted.org/packages/8d/63/79c3602afd14d501f751e615a74a59040328da5ef29ed5754ae80d236b84/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe", size = 553619 }, + { url = "https://files.pythonhosted.org/packages/9f/2e/c5c1689e80298d4e94c75b70faada4c25445739d91b94c211244a3ed7ed1/rpds_py-0.22.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d", size = 233338 }, ] [[package]] @@ -3953,6 +4380,18 @@ version = "0.4.5" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/cb/46/a1c56ed856c6ac3b1a8b37abe5be0cac53219367af1331e721b04d122577/safetensors-0.4.5.tar.gz", hash = "sha256:d73de19682deabb02524b3d5d1f8b3aaba94c72f1bbfc7911b9b9d5d391c0310", size = 65702 } wheels = [ + { url = "https://files.pythonhosted.org/packages/38/10/0798ec2c8704c2d172620d8a3725bed92cdd75516357b1a3e64d4229ea4e/safetensors-0.4.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a63eaccd22243c67e4f2b1c3e258b257effc4acd78f3b9d397edc8cf8f1298a7", size = 392312 }, + { url = "https://files.pythonhosted.org/packages/2b/9e/9648d8dbb485c40a4a0212b7537626ae440b48156cc74601ca0b7a7615e0/safetensors-0.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:23fc9b4ec7b602915cbb4ec1a7c1ad96d2743c322f20ab709e2c35d1b66dad27", size = 381858 }, + { url = "https://files.pythonhosted.org/packages/8b/67/49556aeacc00df353767ed31d68b492fecf38c3f664c52692e4d92aa0032/safetensors-0.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6885016f34bef80ea1085b7e99b3c1f92cb1be78a49839203060f67b40aee761", size = 441382 }, + { url = "https://files.pythonhosted.org/packages/5d/ce/e9f4869a37bb11229e6cdb4e73a6ef23b4f360eee9dca5f7e40982779704/safetensors-0.4.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:133620f443450429322f238fda74d512c4008621227fccf2f8cf4a76206fea7c", size = 439001 }, + { url = "https://files.pythonhosted.org/packages/a0/27/aee8cf031b89c34caf83194ec6b7f2eed28d053fff8b6da6d00c85c56035/safetensors-0.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4fb3e0609ec12d2a77e882f07cced530b8262027f64b75d399f1504ffec0ba56", size = 478026 }, + { url = "https://files.pythonhosted.org/packages/da/33/1d9fc4805c623636e7d460f28eec92ebd1856f7a552df8eb78398a1ef4de/safetensors-0.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0f1dd769f064adc33831f5e97ad07babbd728427f98e3e1db6902e369122737", size = 495545 }, + { url = "https://files.pythonhosted.org/packages/b9/df/6f766b56690709d22e83836e4067a1109a7d84ea152a6deb5692743a2805/safetensors-0.4.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6d156bdb26732feada84f9388a9f135528c1ef5b05fae153da365ad4319c4c5", size = 435016 }, + { url = "https://files.pythonhosted.org/packages/90/fa/7bc3f18086201b1e55a42c88b822ae197d0158e12c54cd45c887305f1b7e/safetensors-0.4.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e347d77e2c77eb7624400ccd09bed69d35c0332f417ce8c048d404a096c593b", size = 456273 }, + { url = "https://files.pythonhosted.org/packages/3e/59/2ae50150d37a65c1c5f01aec74dc737707b8bbecdc76307e5a1a12c8a376/safetensors-0.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9f556eea3aec1d3d955403159fe2123ddd68e880f83954ee9b4a3f2e15e716b6", size = 619669 }, + { url = "https://files.pythonhosted.org/packages/fe/43/10f0bb597aef62c9c154152e265057089f3c729bdd980e6c32c3ec2407a4/safetensors-0.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9483f42be3b6bc8ff77dd67302de8ae411c4db39f7224dec66b0eb95822e4163", size = 605212 }, + { url = "https://files.pythonhosted.org/packages/7c/75/ede6887ea0ceaba55730988bfc7668dc147a8758f907fa6db26fbb681b8e/safetensors-0.4.5-cp310-none-win32.whl", hash = "sha256:7389129c03fadd1ccc37fd1ebbc773f2b031483b04700923c3511d2a939252cc", size = 272652 }, + { url = "https://files.pythonhosted.org/packages/ba/f0/919c72a9eef843781e652d0650f2819039943e69b69d5af2d0451a23edc3/safetensors-0.4.5-cp310-none-win_amd64.whl", hash = "sha256:e98ef5524f8b6620c8cdef97220c0b6a5c1cef69852fcd2f174bb96c2bb316b1", size = 285879 }, { url = "https://files.pythonhosted.org/packages/9a/a5/25bcf75e373412daf1fd88045ab3aa8140a0d804ef0e70712c4f2c5b94d8/safetensors-0.4.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:21f848d7aebd5954f92538552d6d75f7c1b4500f51664078b5b49720d180e47c", size = 392256 }, { url = "https://files.pythonhosted.org/packages/08/8c/ece3bf8756506a890bd980eca02f47f9d98dfbf5ce16eda1368f53560f67/safetensors-0.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb07000b19d41e35eecef9a454f31a8b4718a185293f0d0b1c4b61d6e4487971", size = 381490 }, { url = "https://files.pythonhosted.org/packages/39/83/c4a7ce01d626e46ea2b45887f2e59b16441408031e2ce2f9fe01860c6946/safetensors-0.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09dedf7c2fda934ee68143202acff6e9e8eb0ddeeb4cfc24182bef999efa9f42", size = 441093 }, @@ -3987,6 +4426,13 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5e/6c/7a3233c08bde558d6c33a41219119866cb596139a4673cc6c24024710ffd/safetensors-0.4.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d94581aab8c6b204def4d7320f07534d6ee34cd4855688004a4354e63b639a35", size = 457382 }, { url = "https://files.pythonhosted.org/packages/a0/58/0b7bcba3788ff503990cf9278d611b56c029400612ba93e772c987b5aa03/safetensors-0.4.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:67e1e7cb8678bb1b37ac48ec0df04faf689e2f4e9e81e566b5c63d9f23748523", size = 619301 }, { url = "https://files.pythonhosted.org/packages/82/cc/9c2cf58611daf1c83ce5d37f9de66353e23fcda36008b13fd3409a760aa3/safetensors-0.4.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:dbd280b07e6054ea68b0cb4b16ad9703e7d63cd6890f577cb98acc5354780142", size = 605580 }, + { url = "https://files.pythonhosted.org/packages/cf/ff/037ae4c0ee32db496669365e66079b6329906c6814722b159aa700e67208/safetensors-0.4.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fdadf66b5a22ceb645d5435a0be7a0292ce59648ca1d46b352f13cff3ea80410", size = 392951 }, + { url = "https://files.pythonhosted.org/packages/f1/d6/6621e16b35bf83ae099eaab07338f04991a26c9aa43879d05f19f35e149c/safetensors-0.4.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d42ffd4c2259f31832cb17ff866c111684c87bd930892a1ba53fed28370c918c", size = 383417 }, + { url = "https://files.pythonhosted.org/packages/ae/88/3068e1bb16f5e9f9068901de3cf7b3db270b9bfe6e7d51d4b55c1da0425d/safetensors-0.4.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd8a1f6d2063a92cd04145c7fd9e31a1c7d85fbec20113a14b487563fdbc0597", size = 442311 }, + { url = "https://files.pythonhosted.org/packages/f7/15/a2bb77ebbaa76b61ec2e9f731fe4db7f9473fd855d881957c51b3a168892/safetensors-0.4.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:951d2fcf1817f4fb0ef0b48f6696688a4e852a95922a042b3f96aaa67eedc920", size = 436678 }, + { url = "https://files.pythonhosted.org/packages/ec/79/9608c4546cdbfe3860dd7aa59e3562c9289113398b1a0bd89b68ce0a9d41/safetensors-0.4.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ac85d9a8c1af0e3132371d9f2d134695a06a96993c2e2f0bbe25debb9e3f67a", size = 457316 }, + { url = "https://files.pythonhosted.org/packages/0f/23/b17b483f2857835962ad33e38014efd4911791187e177bc23b057d35bee8/safetensors-0.4.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e3cec4a29eb7fe8da0b1c7988bc3828183080439dd559f720414450de076fcab", size = 620565 }, + { url = "https://files.pythonhosted.org/packages/19/46/5d11dc300feaad285c2f1bd784ff3f689f5e0ab6be49aaf568f3a77019eb/safetensors-0.4.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:21742b391b859e67b26c0b2ac37f52c9c0944a879a25ad2f9f9f3cd61e7fda8f", size = 606660 }, ] [[package]] @@ -4001,6 +4447,11 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/fa/19/5aa2002044afc297ecaf1e3517ed07bba4aece3b5613b5160c1212995fc8/scikit_learn-1.6.0.tar.gz", hash = "sha256:9d58481f9f7499dff4196927aedd4285a0baec8caa3790efbe205f13de37dd6e", size = 7074944 } wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/97/55060f91a5e7c4df945e5a69b16148b5f2256e6e1ea3f17da8e27edf9953/scikit_learn-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:366fb3fa47dce90afed3d6106183f4978d6f24cfd595c2373424171b915ee718", size = 12060299 }, + { url = "https://files.pythonhosted.org/packages/36/7b/8c5dfc64a8344ebf2ae493d59af4b3650588051f654e164ff4f9952877b3/scikit_learn-1.6.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:59cd96a8d9f8dfd546f5d6e9787e1b989e981388d7803abbc9efdcde61e47460", size = 11105443 }, + { url = "https://files.pythonhosted.org/packages/25/9f/61544f2a5cae1bc27c97f0ec9ffcc9837e469f215817608840a4ccbb277a/scikit_learn-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efa7a579606c73a0b3d210e33ea410ea9e1af7933fe324cb7e6fbafae4ea5948", size = 12637137 }, + { url = "https://files.pythonhosted.org/packages/50/79/d21599fc44d2d497ced440480670b6314ebc00308e3bae0d0ebca44cd481/scikit_learn-1.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a46d3ca0f11a540b8eaddaf5e38172d8cd65a86cb3e3632161ec96c0cffb774c", size = 13490128 }, + { url = "https://files.pythonhosted.org/packages/ff/87/788da20cfefcd261123d4bb015b2de076e49cdd3b811b55e6811acd3cb21/scikit_learn-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:5be4577769c5dde6e1b53de8e6520f9b664ab5861dd57acee47ad119fd7405d6", size = 11118524 }, { url = "https://files.pythonhosted.org/packages/07/95/070d6e70f735d13f1c10afebb65ba3526125b7d6c6fc7022651a4a061148/scikit_learn-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1f50b4f24cf12a81c3c09958ae3b864d7534934ca66ded3822de4996d25d7285", size = 12095168 }, { url = "https://files.pythonhosted.org/packages/72/3d/0381e3a59ebd4154e6a61b0ceaf299c3c141035033dd3b868776cd9af02d/scikit_learn-1.6.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:eb9ae21f387826da14b0b9cb1034f5048ddb9182da429c689f5f4a87dc96930b", size = 11108880 }, { url = "https://files.pythonhosted.org/packages/fe/2d/0999ae3eed2ac67b1b3cd7fc33370bd5ca59a7514ffe43ae2b6f3cd85b9b/scikit_learn-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0baa91eeb8c32632628874a5c91885eaedd23b71504d24227925080da075837a", size = 12585449 }, @@ -4031,6 +4482,14 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/62/11/4d44a1f274e002784e4dbdb81e0ea96d2de2d1045b2132d5af62cc31fd28/scipy-1.14.1.tar.gz", hash = "sha256:5a275584e726026a5699459aa72f828a610821006228e841b94275c4a7c08417", size = 58620554 } wheels = [ + { url = "https://files.pythonhosted.org/packages/64/68/3bc0cfaf64ff507d82b1e5d5b64521df4c8bf7e22bc0b897827cbee9872c/scipy-1.14.1-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:b28d2ca4add7ac16ae8bb6632a3c86e4b9e4d52d3e34267f6e1b0c1f8d87e389", size = 39069598 }, + { url = "https://files.pythonhosted.org/packages/43/a5/8d02f9c372790326ad405d94f04d4339482ec082455b9e6e288f7100513b/scipy-1.14.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:d0d2821003174de06b69e58cef2316a6622b60ee613121199cb2852a873f8cf3", size = 29879676 }, + { url = "https://files.pythonhosted.org/packages/07/42/0e0bea9666fcbf2cb6ea0205db42c81b1f34d7b729ba251010edf9c80ebd/scipy-1.14.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:8bddf15838ba768bb5f5083c1ea012d64c9a444e16192762bd858f1e126196d0", size = 23088696 }, + { url = "https://files.pythonhosted.org/packages/15/47/298ab6fef5ebf31b426560e978b8b8548421d4ed0bf99263e1eb44532306/scipy-1.14.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:97c5dddd5932bd2a1a31c927ba5e1463a53b87ca96b5c9bdf5dfd6096e27efc3", size = 25470699 }, + { url = "https://files.pythonhosted.org/packages/d8/df/cdb6be5274bc694c4c22862ac3438cb04f360ed9df0aecee02ce0b798380/scipy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ff0a7e01e422c15739ecd64432743cf7aae2b03f3084288f399affcefe5222d", size = 35606631 }, + { url = "https://files.pythonhosted.org/packages/47/78/b0c2c23880dd1e99e938ad49ccfb011ae353758a2dc5ed7ee59baff684c3/scipy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e32dced201274bf96899e6491d9ba3e9a5f6b336708656466ad0522d8528f69", size = 41178528 }, + { url = "https://files.pythonhosted.org/packages/5d/aa/994b45c34b897637b853ec04334afa55a85650a0d11dacfa67232260fb0a/scipy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8426251ad1e4ad903a4514712d2fa8fdd5382c978010d1c6f5f37ef286a713ad", size = 42784535 }, + { url = "https://files.pythonhosted.org/packages/e7/1c/8daa6df17a945cb1a2a1e3bae3c49643f7b3b94017ff01a4787064f03f84/scipy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:a49f6ed96f83966f576b33a44257d869756df6cf1ef4934f59dd58b25e0327e5", size = 44772117 }, { url = "https://files.pythonhosted.org/packages/b2/ab/070ccfabe870d9f105b04aee1e2860520460ef7ca0213172abfe871463b9/scipy-1.14.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:2da0469a4ef0ecd3693761acbdc20f2fdeafb69e6819cc081308cc978153c675", size = 39076999 }, { url = "https://files.pythonhosted.org/packages/a7/c5/02ac82f9bb8f70818099df7e86c3ad28dae64e1347b421d8e3adf26acab6/scipy-1.14.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c0ee987efa6737242745f347835da2cc5bb9f1b42996a4d97d5c7ff7928cb6f2", size = 29894570 }, { url = "https://files.pythonhosted.org/packages/ed/05/7f03e680cc5249c4f96c9e4e845acde08eb1aee5bc216eff8a089baa4ddb/scipy-1.14.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3a1b111fac6baec1c1d92f27e76511c9e7218f1695d61b59e05e0fe04dc59617", size = 23103567 }, @@ -4108,6 +4567,19 @@ version = "3.19.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/3d/29/085111f19717f865eceaf0d4397bf3e76b08d60428b076b64e2a1903706d/simplejson-3.19.3.tar.gz", hash = "sha256:8e086896c36210ab6050f2f9f095a5f1e03c83fa0e7f296d6cba425411364680", size = 85237 } wheels = [ + { url = "https://files.pythonhosted.org/packages/39/24/260ad03435ce8ef2436031951134659c7161776ec3a78094b35b9375ceea/simplejson-3.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:50d8b742d74c449c4dcac570d08ce0f21f6a149d2d9cf7652dbf2ba9a1bc729a", size = 93660 }, + { url = "https://files.pythonhosted.org/packages/63/a1/dee207f357bcd6b106f2ca5129ee916c24993ba08b7dfbf9a37c22442ea9/simplejson-3.19.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd011fc3c1d88b779645495fdb8189fb318a26981eebcce14109460e062f209b", size = 75546 }, + { url = "https://files.pythonhosted.org/packages/80/7b/45ef1da43f54d209ce2ef59b7356cda13f810186c381f38ae23a4d2b1337/simplejson-3.19.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:637c4d4b81825c1f4d651e56210bd35b5604034b192b02d2d8f17f7ce8c18f42", size = 75602 }, + { url = "https://files.pythonhosted.org/packages/7f/4b/9a132382982f8127bc7ce5212a5585d83c174707c9dd698d0cb6a0d41882/simplejson-3.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f56eb03bc9e432bb81adc8ecff2486d39feb371abb442964ffb44f6db23b332", size = 138632 }, + { url = "https://files.pythonhosted.org/packages/76/37/012f5ad2f38afa28f8a6ad9da01dc0b64492ffbaf2a3f2f8a0e1fddf9c1d/simplejson-3.19.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ef59a53be400c1fad2c914b8d74c9d42384fed5174f9321dd021b7017fd40270", size = 146740 }, + { url = "https://files.pythonhosted.org/packages/69/b3/89640bd676e26ea2315b5aaf80712a6fbbb4338e4caf872d91448502a19b/simplejson-3.19.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72e8abbc86fcac83629a030888b45fed3a404d54161118be52cb491cd6975d3e", size = 134440 }, + { url = "https://files.pythonhosted.org/packages/61/20/0035a288deaff05397d6cc0145b33f3dd2429b99cdc880de4c5eca41ca72/simplejson-3.19.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8efb03ca77bd7725dfacc9254df00d73e6f43013cf39bd37ef1a8ed0ebb5165", size = 137949 }, + { url = "https://files.pythonhosted.org/packages/5d/de/5b03fafe3003e32d179588953d38183af6c3747e95c7dcc668c4f9eb886a/simplejson-3.19.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:add8850db04b98507a8b62d248a326ecc8561e6d24336d1ca5c605bbfaab4cad", size = 139992 }, + { url = "https://files.pythonhosted.org/packages/d1/ce/e493116ff49fd215f7baa25195b8f684c91e65c153e2a57e04dc3f3a466b/simplejson-3.19.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fc3dc9fb413fc34c396f52f4c87de18d0bd5023804afa8ab5cc224deeb6a9900", size = 140320 }, + { url = "https://files.pythonhosted.org/packages/86/f3/a18b98a7a27548829f672754dd3940fb637a27981399838128d3e560087f/simplejson-3.19.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4dfa420bb9225dd33b6efdabde7c6a671b51150b9b1d9c4e5cd74d3b420b3fe1", size = 148625 }, + { url = "https://files.pythonhosted.org/packages/0f/55/d3da33ee3e708133da079b9d537693d7fef281e6f0d27921cc7e5b3ec523/simplejson-3.19.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7b5c472099b39b274dcde27f1113db8d818c9aa3ba8f78cbb8ad04a4c1ac2118", size = 141287 }, + { url = "https://files.pythonhosted.org/packages/17/e8/56184ab4d66bb64a6ff569f069b3796dfd943f9b961268fe0d403526fc17/simplejson-3.19.3-cp310-cp310-win32.whl", hash = "sha256:817abad79241ed4a507b3caf4d3f2be5079f39d35d4c550a061988986bffd2ec", size = 74143 }, + { url = "https://files.pythonhosted.org/packages/be/8f/a0089eff060f10a925f08b0a0f50854321484f1ac54b1895bbf4c9213dfe/simplejson-3.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:dd5b9b1783e14803e362a558680d88939e830db2466f3fa22df5c9319f8eea94", size = 75643 }, { url = "https://files.pythonhosted.org/packages/8c/bb/9ee3959e6929d228cf669b3f13f0edd43c5261b6cd69598640748b19ca35/simplejson-3.19.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e88abff510dcff903a18d11c2a75f9964e768d99c8d147839913886144b2065e", size = 91930 }, { url = "https://files.pythonhosted.org/packages/ac/ae/a06523928af3a6783e2638cd4f6035c3e32de1c1063d563d9060c8d2f1ad/simplejson-3.19.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:934a50a614fb831614db5dbfba35127ee277624dda4d15895c957d2f5d48610c", size = 74787 }, { url = "https://files.pythonhosted.org/packages/c3/58/fea732e48a7540035fe46d39e6fd77679f5810311d31da8661ce7a18210a/simplejson-3.19.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:212fce86a22188b0c7f53533b0f693ea9605c1a0f02c84c475a30616f55a744d", size = 74612 }, @@ -4188,31 +4660,47 @@ wheels = [ [[package]] name = "sqlalchemy" -version = "2.0.35" +version = "2.0.36" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "greenlet", marker = "(python_full_version < '3.13' and platform_machine == 'AMD64') or (python_full_version < '3.13' and platform_machine == 'WIN32') or (python_full_version < '3.13' and platform_machine == 'aarch64') or (python_full_version < '3.13' and platform_machine == 'amd64') or (python_full_version < '3.13' and platform_machine == 'ppc64le') or (python_full_version < '3.13' and platform_machine == 'win32') or (python_full_version < '3.13' and platform_machine == 'x86_64')" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/36/48/4f190a83525f5cefefa44f6adc9e6386c4de5218d686c27eda92eb1f5424/sqlalchemy-2.0.35.tar.gz", hash = "sha256:e11d7ea4d24f0a262bccf9a7cd6284c976c5369dac21db237cff59586045ab9f", size = 9562798 } +sdist = { url = "https://files.pythonhosted.org/packages/50/65/9cbc9c4c3287bed2499e05033e207473504dc4df999ce49385fb1f8b058a/sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5", size = 9574485 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c3/46/9215a35bf98c3a2528e987791e6180eb51624d2c7d5cb8e2d96a6450b657/SQLAlchemy-2.0.35-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e21f66748ab725ade40fa7af8ec8b5019c68ab00b929f6643e1b1af461eddb60", size = 2091274 }, - { url = "https://files.pythonhosted.org/packages/1e/69/919673c5101a0c633658d58b11b454b251ca82300941fba801201434755d/SQLAlchemy-2.0.35-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8a6219108a15fc6d24de499d0d515c7235c617b2540d97116b663dade1a54d62", size = 2081672 }, - { url = "https://files.pythonhosted.org/packages/67/ea/a6b0597cbda12796be2302153369dbbe90573fdab3bc4885f8efac499247/SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:042622a5306c23b972192283f4e22372da3b8ddf5f7aac1cc5d9c9b222ab3ff6", size = 3200083 }, - { url = "https://files.pythonhosted.org/packages/8c/d6/97bdc8d714fb21762f2092511f380f18cdb2d985d516071fa925bb433a90/SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:627dee0c280eea91aed87b20a1f849e9ae2fe719d52cbf847c0e0ea34464b3f7", size = 3200080 }, - { url = "https://files.pythonhosted.org/packages/87/d2/8c2adaf2ade4f6f1b725acd0b0be9210bb6a2df41024729a8eec6a86fe5a/SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4fdcd72a789c1c31ed242fd8c1bcd9ea186a98ee8e5408a50e610edfef980d71", size = 3137108 }, - { url = "https://files.pythonhosted.org/packages/7e/ae/ea05d0bfa8f2b25ae34591895147152854fc950f491c4ce362ae06035db8/SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:89b64cd8898a3a6f642db4eb7b26d1b28a497d4022eccd7717ca066823e9fb01", size = 3157437 }, - { url = "https://files.pythonhosted.org/packages/fe/5d/8ad6df01398388a766163d27960b3365f1bbd8bb7b05b5cad321a8b69b25/SQLAlchemy-2.0.35-cp311-cp311-win32.whl", hash = "sha256:6a93c5a0dfe8d34951e8a6f499a9479ffb9258123551fa007fc708ae2ac2bc5e", size = 2061935 }, - { url = "https://files.pythonhosted.org/packages/ff/68/8557efc0c32c8e2c147cb6512237448b8ed594a57cd015fda67f8e56bb3f/SQLAlchemy-2.0.35-cp311-cp311-win_amd64.whl", hash = "sha256:c68fe3fcde03920c46697585620135b4ecfdfc1ed23e75cc2c2ae9f8502c10b8", size = 2087281 }, - { url = "https://files.pythonhosted.org/packages/2f/2b/fff87e6db0da31212c98bbc445f83fb608ea92b96bda3f3f10e373bac76c/SQLAlchemy-2.0.35-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:eb60b026d8ad0c97917cb81d3662d0b39b8ff1335e3fabb24984c6acd0c900a2", size = 2089790 }, - { url = "https://files.pythonhosted.org/packages/68/92/4bb761bd82764d5827bf6b6095168c40fb5dbbd23670203aef2f96ba6bc6/SQLAlchemy-2.0.35-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6921ee01caf375363be5e9ae70d08ce7ca9d7e0e8983183080211a062d299468", size = 2080266 }, - { url = "https://files.pythonhosted.org/packages/22/46/068a65db6dc253c6f25a7598d99e0a1d60b14f661f9d09ef6c73c718fa4e/SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cdf1a0dbe5ced887a9b127da4ffd7354e9c1a3b9bb330dce84df6b70ccb3a8d", size = 3229760 }, - { url = "https://files.pythonhosted.org/packages/6e/36/59830dafe40dda592304debd4cd86e583f63472f3a62c9e2695a5795e786/SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93a71c8601e823236ac0e5d087e4f397874a421017b3318fd92c0b14acf2b6db", size = 3240649 }, - { url = "https://files.pythonhosted.org/packages/00/50/844c50c6996f9c7f000c959dd1a7436a6c94e449ee113046a1d19e470089/SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e04b622bb8a88f10e439084486f2f6349bf4d50605ac3e445869c7ea5cf0fa8c", size = 3176138 }, - { url = "https://files.pythonhosted.org/packages/df/d2/336b18cac68eecb67de474fc15c85f13be4e615c6f5bae87ea38c6734ce0/SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1b56961e2d31389aaadf4906d453859f35302b4eb818d34a26fab72596076bb8", size = 3202753 }, - { url = "https://files.pythonhosted.org/packages/f0/f3/ee1e62fabdc10910b5ef720ae08e59bc785f26652876af3a50b89b97b412/SQLAlchemy-2.0.35-cp312-cp312-win32.whl", hash = "sha256:0f9f3f9a3763b9c4deb8c5d09c4cc52ffe49f9876af41cc1b2ad0138878453cf", size = 2060113 }, - { url = "https://files.pythonhosted.org/packages/60/63/a3cef44a52979169d884f3583d0640e64b3c28122c096474a1d7cfcaf1f3/SQLAlchemy-2.0.35-cp312-cp312-win_amd64.whl", hash = "sha256:25b0f63e7fcc2a6290cb5f7f5b4fc4047843504983a28856ce9b35d8f7de03cc", size = 2085839 }, - { url = "https://files.pythonhosted.org/packages/0e/c6/33c706449cdd92b1b6d756b247761e27d32230fd6b2de5f44c4c3e5632b2/SQLAlchemy-2.0.35-py3-none-any.whl", hash = "sha256:2ab3f0336c0387662ce6221ad30ab3a5e6499aab01b9790879b6578fd9b8faa1", size = 1881276 }, + { url = "https://files.pythonhosted.org/packages/db/72/14ab694b8b3f0e35ef5beb74a8fea2811aa791ba1611c44dc90cdf46af17/SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72", size = 2092604 }, + { url = "https://files.pythonhosted.org/packages/1e/59/333fcbca58b79f5b8b61853d6137530198823392151fa8fd9425f367519e/SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908", size = 2083796 }, + { url = "https://files.pythonhosted.org/packages/6c/a0/ec3c188d2b0c1bc742262e76408d44104598d7247c23f5b06bb97ee21bfa/SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08", size = 3066165 }, + { url = "https://files.pythonhosted.org/packages/07/15/68ef91de5b8b7f80fb2d2b3b31ed42180c6227fe0a701aed9d01d34f98ec/SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07", size = 3074428 }, + { url = "https://files.pythonhosted.org/packages/e2/4c/9dfea5e63b87325eef6d9cdaac913459aa6a157a05a05ea6ff20004aee8e/SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5", size = 3030477 }, + { url = "https://files.pythonhosted.org/packages/16/a5/fcfde8e74ea5f683b24add22463bfc21e431d4a5531c8a5b55bc6fbea164/SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44", size = 3055942 }, + { url = "https://files.pythonhosted.org/packages/3c/ee/c22c415a771d791ae99146d72ffdb20e43625acd24835ea7fc157436d59f/SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa", size = 2064960 }, + { url = "https://files.pythonhosted.org/packages/aa/af/ad9c25cadc79bd851bdb9d82b68af9bdb91ff05f56d0da2f8a654825974f/SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5", size = 2089078 }, + { url = "https://files.pythonhosted.org/packages/00/4e/5a67963fd7cbc1beb8bd2152e907419f4c940ef04600b10151a751fe9e06/SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c", size = 2093782 }, + { url = "https://files.pythonhosted.org/packages/b3/24/30e33b6389ebb5a17df2a4243b091bc709fb3dfc9a48c8d72f8e037c943d/SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71", size = 2084180 }, + { url = "https://files.pythonhosted.org/packages/10/1e/70e9ed2143a27065246be40f78637ad5160ea0f5fd32f8cab819a31ff54d/SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff", size = 3202469 }, + { url = "https://files.pythonhosted.org/packages/b4/5f/95e0ed74093ac3c0db6acfa944d4d8ac6284ef5e1136b878a327ea1f975a/SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d", size = 3202464 }, + { url = "https://files.pythonhosted.org/packages/91/95/2cf9b85a6bc2ee660e40594dffe04e777e7b8617fd0c6d77a0f782ea96c9/SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb", size = 3139508 }, + { url = "https://files.pythonhosted.org/packages/92/ea/f0c01bc646456e4345c0fb5a3ddef457326285c2dc60435b0eb96b61bf31/SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8", size = 3159837 }, + { url = "https://files.pythonhosted.org/packages/a6/93/c8edbf153ee38fe529773240877bf1332ed95328aceef6254288f446994e/SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f", size = 2064529 }, + { url = "https://files.pythonhosted.org/packages/b1/03/d12b7c1d36fd80150c1d52e121614cf9377dac99e5497af8d8f5b2a8db64/SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959", size = 2089874 }, + { url = "https://files.pythonhosted.org/packages/b8/bf/005dc47f0e57556e14512d5542f3f183b94fde46e15ff1588ec58ca89555/SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4", size = 2092378 }, + { url = "https://files.pythonhosted.org/packages/94/65/f109d5720779a08e6e324ec89a744f5f92c48bd8005edc814bf72fbb24e5/SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855", size = 2082778 }, + { url = "https://files.pythonhosted.org/packages/60/f6/d9aa8c49c44f9b8c9b9dada1f12fa78df3d4c42aa2de437164b83ee1123c/SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53", size = 3232191 }, + { url = "https://files.pythonhosted.org/packages/8a/ab/81d4514527c068670cb1d7ab62a81a185df53a7c379bd2a5636e83d09ede/SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a", size = 3243044 }, + { url = "https://files.pythonhosted.org/packages/35/b4/f87c014ecf5167dc669199cafdb20a7358ff4b1d49ce3622cc48571f811c/SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686", size = 3178511 }, + { url = "https://files.pythonhosted.org/packages/ea/09/badfc9293bc3ccba6ede05e5f2b44a760aa47d84da1fc5a326e963e3d4d9/SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588", size = 3205147 }, + { url = "https://files.pythonhosted.org/packages/c8/60/70e681de02a13c4b27979b7b78da3058c49bacc9858c89ba672e030f03f2/SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e", size = 2062709 }, + { url = "https://files.pythonhosted.org/packages/b7/ed/f6cd9395e41bfe47dd253d74d2dfc3cab34980d4e20c8878cb1117306085/SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5", size = 2088433 }, + { url = "https://files.pythonhosted.org/packages/78/5c/236398ae3678b3237726819b484f15f5c038a9549da01703a771f05a00d6/SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef", size = 2087651 }, + { url = "https://files.pythonhosted.org/packages/a8/14/55c47420c0d23fb67a35af8be4719199b81c59f3084c28d131a7767b0b0b/SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8", size = 2078132 }, + { url = "https://files.pythonhosted.org/packages/3d/97/1e843b36abff8c4a7aa2e37f9bea364f90d021754c2de94d792c2d91405b/SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b", size = 3164559 }, + { url = "https://files.pythonhosted.org/packages/7b/c5/07f18a897b997f6d6b234fab2bf31dccf66d5d16a79fe329aefc95cd7461/SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2", size = 3177897 }, + { url = "https://files.pythonhosted.org/packages/b3/cd/e16f3cbefd82b5c40b33732da634ec67a5f33b587744c7ab41699789d492/SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf", size = 3111289 }, + { url = "https://files.pythonhosted.org/packages/15/85/5b8a3b0bc29c9928aa62b5c91fcc8335f57c1de0a6343873b5f372e3672b/SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c", size = 3139491 }, + { url = "https://files.pythonhosted.org/packages/a1/95/81babb6089938680dfe2cd3f88cd3fd39cccd1543b7cb603b21ad881bff1/SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436", size = 2060439 }, + { url = "https://files.pythonhosted.org/packages/c1/ce/5f7428df55660d6879d0522adc73a3364970b5ef33ec17fa125c5dbcac1d/SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88", size = 2084574 }, + { url = "https://files.pythonhosted.org/packages/b8/49/21633706dd6feb14cd3f7935fc00b60870ea057686035e1a99ae6d9d9d53/SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e", size = 1883787 }, ] [package.optional-dependencies] @@ -4266,11 +4754,11 @@ wheels = [ [[package]] name = "tenacity" -version = "8.5.0" +version = "9.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a3/4d/6a19536c50b849338fcbe9290d562b52cbdcf30d8963d3588a68a4107df1/tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78", size = 47309 } +sdist = { url = "https://files.pythonhosted.org/packages/cd/94/91fccdb4b8110642462e653d5dcb27e7b674742ad68efd146367da7bdb10/tenacity-9.0.0.tar.gz", hash = "sha256:807f37ca97d62aa361264d497b0e31e92b8027044942bfa756160d908320d73b", size = 47421 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/3f/8ba87d9e287b9d385a02a7114ddcef61b26f86411e121c9003eb509a1773/tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687", size = 28165 }, + { url = "https://files.pythonhosted.org/packages/b6/cb/b86984bed139586d01532a587464b5805f12e397594f19f931c4c2fbfa61/tenacity-9.0.0-py3-none-any.whl", hash = "sha256:93de0c98785b27fcf659856aa9f54bfbd399e29969b0621bc7f762bd441b4539", size = 28169 }, ] [[package]] @@ -4292,6 +4780,13 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/c4/4a/abaec53e93e3ef37224a4dd9e2fc6bb871e7a538c2b6b9d2a6397271daf4/tiktoken-0.7.0.tar.gz", hash = "sha256:1077266e949c24e0291f6c350433c6f0971365ece2b173a23bc3b9f9defef6b6", size = 33437 } wheels = [ + { url = "https://files.pythonhosted.org/packages/96/10/28d59d43d72a0ebd4211371d0bf10c935cdecbb62b812ae04c58bfc37d96/tiktoken-0.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:485f3cc6aba7c6b6ce388ba634fbba656d9ee27f766216f45146beb4ac18b25f", size = 961465 }, + { url = "https://files.pythonhosted.org/packages/f8/0c/d4125348dedd1f8f38e3f85245e7fc38858ffc77c9b7edfb762a8191ba0b/tiktoken-0.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e54be9a2cd2f6d6ffa3517b064983fb695c9a9d8aa7d574d1ef3c3f931a99225", size = 906849 }, + { url = "https://files.pythonhosted.org/packages/b9/ab/f9c7675747f259d133d66065106cf732a7c2bef6043062fbca8e011f7f4d/tiktoken-0.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79383a6e2c654c6040e5f8506f3750db9ddd71b550c724e673203b4f6b4b4590", size = 1048795 }, + { url = "https://files.pythonhosted.org/packages/e7/8c/7d1007557b343d5cf18349802e94d3a14397121e9105b4661f8cd753f9bf/tiktoken-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d4511c52caacf3c4981d1ae2df85908bd31853f33d30b345c8b6830763f769c", size = 1080866 }, + { url = "https://files.pythonhosted.org/packages/72/40/61d6354cb64a563fce475a2907039be9fe809ca5f801213856353b01a35b/tiktoken-0.7.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:13c94efacdd3de9aff824a788353aa5749c0faee1fbe3816df365ea450b82311", size = 1092776 }, + { url = "https://files.pythonhosted.org/packages/f2/6c/83ca40527d072739f0704b9f59b325786c444ca63672a77cb69adc8181f7/tiktoken-0.7.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8e58c7eb29d2ab35a7a8929cbeea60216a4ccdf42efa8974d8e176d50c9a3df5", size = 1142591 }, + { url = "https://files.pythonhosted.org/packages/ec/1f/a5d72755118e9e1b62cdf3ef9138eb83d49088f3cb37a9540025c81c0e75/tiktoken-0.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:21a20c3bd1dd3e55b91c1331bf25f4af522c525e771691adbc9a69336fa7f702", size = 798864 }, { url = "https://files.pythonhosted.org/packages/22/eb/57492b2568eea1d546da5cc1ae7559d924275280db80ba07e6f9b89a914b/tiktoken-0.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:10c7674f81e6e350fcbed7c09a65bca9356eaab27fb2dac65a1e440f2bcfe30f", size = 961468 }, { url = "https://files.pythonhosted.org/packages/30/ef/e07dbfcb2f85c84abaa1b035a9279575a8da0236305491dc22ae099327f7/tiktoken-0.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:084cec29713bc9d4189a937f8a35dbdfa785bd1235a34c1124fe2323821ee93f", size = 907005 }, { url = "https://files.pythonhosted.org/packages/ea/9b/f36db825b1e9904c3a2646439cb9923fc1e09208e2e071c6d9dd64ead131/tiktoken-0.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:811229fde1652fedcca7c6dfe76724d0908775b353556d8a71ed74d866f73f7b", size = 1049183 }, @@ -4317,6 +4812,17 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/fb/dd/5022939b9cadefe3af04f4012186c29b8afbe858b1ec2cfa38baeec94dab/time_machine-2.16.0.tar.gz", hash = "sha256:4a99acc273d2f98add23a89b94d4dd9e14969c01214c8514bfa78e4e9364c7e2", size = 24626 } wheels = [ + { url = "https://files.pythonhosted.org/packages/79/47/32fdb8e70122edbc8be9db1f032d22b38e3d9ef0bf52c64470d0815cdb62/time_machine-2.16.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:09531af59fdfb39bfd24d28bd1e837eff5a5d98318509a31b6cfd57d27801e52", size = 20493 }, + { url = "https://files.pythonhosted.org/packages/b1/e6/f3bc391d5642e69299f2d1f0a46e7f98d1669e82b1e16c8cf3c6e4615059/time_machine-2.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:92d0b0f3c49f34dd76eb462f0afdc61ed1cb318c06c46d03e99b44ebb489bdad", size = 16757 }, + { url = "https://files.pythonhosted.org/packages/d4/7f/3a78d50fec64edd9964bf42b66a2e659a9846669ac8f705acc363ee79d3a/time_machine-2.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c29616e18e2349a8766d5b6817920fc74e39c00fa375d202231e9d525a1b882", size = 34527 }, + { url = "https://files.pythonhosted.org/packages/61/00/7cf1324d8f8db8f5dab71c44ed1e9c11c4f1cecca9d4363abf44154aa13b/time_machine-2.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c1ceb6035a64cb00650e3ab203cf3faffac18576a3f3125c24df468b784077c7", size = 32537 }, + { url = "https://files.pythonhosted.org/packages/8e/c2/edf5ccb2fa529251eb7f1cfb34098c0ef236dbb88f0a6564d06f6f8378f5/time_machine-2.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64c205ea37b8c4ba232645335fc3b75bc2d03ce30f0a34649e36cae85652ee96", size = 34353 }, + { url = "https://files.pythonhosted.org/packages/a9/1e/178b9e3d0054300a4dd0485747c89359e5f719f090ae5165c88618793700/time_machine-2.16.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dfe92412bd11104c4f0fb2da68653e6c45b41f7217319a83a8b66ed4f20148b3", size = 34045 }, + { url = "https://files.pythonhosted.org/packages/e5/4d/068ad9660f00f88a54f3ff7e9d423ed5c08a5f8147518f6c66fd0393dde7/time_machine-2.16.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d5fe7a6284e3dce87ae13a25029c53542dd27a28d151f3ef362ec4dd9c3e45fd", size = 32356 }, + { url = "https://files.pythonhosted.org/packages/a5/25/c0f26294808946ec5b665f17a0072049a3f9e2468abc18aa8fe22580b4cf/time_machine-2.16.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0fca3025266d88d1b48be162a43b7c2d91c81cc5b3bee9f01194678ffb9969a", size = 33737 }, + { url = "https://files.pythonhosted.org/packages/8b/d4/ae909a269828eaa7672e1201403976e794ea679ae7ba04fe0c0c0c65c2b6/time_machine-2.16.0-cp310-cp310-win32.whl", hash = "sha256:4149e17018af07a5756a1df84aea71e6e178598c358c860c6bfec42170fa7970", size = 19133 }, + { url = "https://files.pythonhosted.org/packages/7e/e7/5946d62d49e79b97c6772fe2918eccbd069d74effa8d50bdca4056502aeb/time_machine-2.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:01bc257e9418980a4922de94775be42a966e1a082fb01a1635917f9afc7b84ca", size = 19995 }, + { url = "https://files.pythonhosted.org/packages/54/cb/6507c6594f086bc955ff200cc4fd415d2ab229371ca3ba8fc3d27429a9cc/time_machine-2.16.0-cp310-cp310-win_arm64.whl", hash = "sha256:6895e3e84119594ab12847c928f619d40ae9cedd0755515dc154a5b5dc6edd9f", size = 18109 }, { url = "https://files.pythonhosted.org/packages/38/7b/34aad93f75f86503dd1fa53bc120d8129fe4de83aef58ffa78c62b044ef9/time_machine-2.16.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8f936566ef9f09136a3d5db305961ef6d897b76b240c9ff4199144aed6dd4fe5", size = 20169 }, { url = "https://files.pythonhosted.org/packages/68/cb/7d020d5c05d0460a4a96232b0777882ef989c1e6144d11ba984c4b0b4d1a/time_machine-2.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5886e23ede3478ca2a3e0a641f5d09dd784dfa9e48c96e8e5e31fc4fe77b6dc0", size = 16614 }, { url = "https://files.pythonhosted.org/packages/0d/24/ce1ff76c9a4f3be88c2b947f2411a5a8019390734597d3106a151f8a9416/time_machine-2.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c76caf539fa4941e1817b7c482c87c65c52a1903fea761e84525955c6106fafb", size = 32507 }, @@ -4352,18 +4858,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/35/75/c4d8b2f0fe7dac22854d88a9c509d428e78ac4bf284bc54cfe83f75cc13b/time_machine-2.16.0-cp313-cp313-win_arm64.whl", hash = "sha256:4d3843143c46dddca6491a954bbd0abfd435681512ac343169560e9bab504129", size = 18047 }, ] -[[package]] -name = "tinycss2" -version = "1.4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "webencodings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, -] - [[package]] name = "tokenizers" version = "0.21.0" @@ -4389,6 +4883,45 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/44/69/d21eb253fa91622da25585d362a874fa4710be600f0ea9446d8d0217cec1/tokenizers-0.21.0-cp39-abi3-win_amd64.whl", hash = "sha256:87841da5a25a3a5f70c102de371db120f41873b854ba65e52bccd57df5a3780c", size = 2389192 }, ] +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, +] + [[package]] name = "tomlkit" version = "0.13.2" @@ -4421,7 +4954,7 @@ name = "tqdm" version = "4.67.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "colorama", marker = "platform_system == 'Windows'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 } wheels = [ @@ -4524,6 +5057,16 @@ version = "5.10.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1", size = 7154885 } wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/91/91678e49a9194f527e60115db84368c237ac7824992224fac47dcb23a5c6/ujson-5.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2601aa9ecdbee1118a1c2065323bda35e2c5a2cf0797ef4522d485f9d3ef65bd", size = 55354 }, + { url = "https://files.pythonhosted.org/packages/de/2f/1ed8c9b782fa4f44c26c1c4ec686d728a4865479da5712955daeef0b2e7b/ujson-5.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:348898dd702fc1c4f1051bc3aacbf894caa0927fe2c53e68679c073375f732cf", size = 51808 }, + { url = "https://files.pythonhosted.org/packages/51/bf/a3a38b2912288143e8e613c6c4c3f798b5e4e98c542deabf94c60237235f/ujson-5.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22cffecf73391e8abd65ef5f4e4dd523162a3399d5e84faa6aebbf9583df86d6", size = 51995 }, + { url = "https://files.pythonhosted.org/packages/b4/6d/0df8f7a6f1944ba619d93025ce468c9252aa10799d7140e07014dfc1a16c/ujson-5.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26b0e2d2366543c1bb4fbd457446f00b0187a2bddf93148ac2da07a53fe51569", size = 53566 }, + { url = "https://files.pythonhosted.org/packages/d5/ec/370741e5e30d5f7dc7f31a478d5bec7537ce6bfb7f85e72acefbe09aa2b2/ujson-5.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:caf270c6dba1be7a41125cd1e4fc7ba384bf564650beef0df2dd21a00b7f5770", size = 58499 }, + { url = "https://files.pythonhosted.org/packages/fe/29/72b33a88f7fae3c398f9ba3e74dc2e5875989b25f1c1f75489c048a2cf4e/ujson-5.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a245d59f2ffe750446292b0094244df163c3dc96b3ce152a2c837a44e7cda9d1", size = 997881 }, + { url = "https://files.pythonhosted.org/packages/70/5c/808fbf21470e7045d56a282cf5e85a0450eacdb347d871d4eb404270ee17/ujson-5.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:94a87f6e151c5f483d7d54ceef83b45d3a9cca7a9cb453dbdbb3f5a6f64033f5", size = 1140631 }, + { url = "https://files.pythonhosted.org/packages/8f/6a/e1e8281408e6270d6ecf2375af14d9e2f41c402ab6b161ecfa87a9727777/ujson-5.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:29b443c4c0a113bcbb792c88bea67b675c7ca3ca80c3474784e08bba01c18d51", size = 1043511 }, + { url = "https://files.pythonhosted.org/packages/cb/ca/e319acbe4863919ec62498bc1325309f5c14a3280318dca10fe1db3cb393/ujson-5.10.0-cp310-cp310-win32.whl", hash = "sha256:c18610b9ccd2874950faf474692deee4223a994251bc0a083c114671b64e6518", size = 38626 }, + { url = "https://files.pythonhosted.org/packages/78/ec/dc96ca379de33f73b758d72e821ee4f129ccc32221f4eb3f089ff78d8370/ujson-5.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:924f7318c31874d6bb44d9ee1900167ca32aa9b69389b98ecbde34c1698a250f", size = 42076 }, { url = "https://files.pythonhosted.org/packages/23/ec/3c551ecfe048bcb3948725251fb0214b5844a12aa60bee08d78315bb1c39/ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00", size = 55353 }, { url = "https://files.pythonhosted.org/packages/8d/9f/4731ef0671a0653e9f5ba18db7c4596d8ecbf80c7922dd5fe4150f1aea76/ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126", size = 51813 }, { url = "https://files.pythonhosted.org/packages/1f/2b/44d6b9c1688330bf011f9abfdb08911a9dc74f76926dde74e718d87600da/ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8", size = 51988 }, @@ -4554,6 +5097,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/45/ed/582c4daba0f3e1688d923b5cb914ada1f9defa702df38a1916c899f7c4d1/ujson-5.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9500e61fce0cfc86168b248104e954fead61f9be213087153d272e817ec7b4f", size = 1043580 }, { url = "https://files.pythonhosted.org/packages/d7/0c/9837fece153051e19c7bade9f88f9b409e026b9525927824cdf16293b43b/ujson-5.10.0-cp313-cp313-win32.whl", hash = "sha256:4c4fc16f11ac1612f05b6f5781b384716719547e142cfd67b65d035bd85af165", size = 38766 }, { url = "https://files.pythonhosted.org/packages/d7/72/6cb6728e2738c05bbe9bd522d6fc79f86b9a28402f38663e85a28fddd4a0/ujson-5.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:4573fd1695932d4f619928fd09d5d03d917274381649ade4328091ceca175539", size = 42212 }, + { url = "https://files.pythonhosted.org/packages/95/53/e5f5e733fc3525e65f36f533b0dbece5e5e2730b760e9beacf7e3d9d8b26/ujson-5.10.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5b6fee72fa77dc172a28f21693f64d93166534c263adb3f96c413ccc85ef6e64", size = 51846 }, + { url = "https://files.pythonhosted.org/packages/59/1f/f7bc02a54ea7b47f3dc2d125a106408f18b0f47b14fc737f0913483ae82b/ujson-5.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:61d0af13a9af01d9f26d2331ce49bb5ac1fb9c814964018ac8df605b5422dcb3", size = 48103 }, + { url = "https://files.pythonhosted.org/packages/1a/3a/d3921b6f29bc744d8d6c56db5f8bbcbe55115fd0f2b79c3c43ff292cc7c9/ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecb24f0bdd899d368b715c9e6664166cf694d1e57be73f17759573a6986dd95a", size = 47257 }, + { url = "https://files.pythonhosted.org/packages/f1/04/f4e3883204b786717038064afd537389ba7d31a72b437c1372297cb651ea/ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fbd8fd427f57a03cff3ad6574b5e299131585d9727c8c366da4624a9069ed746", size = 48468 }, + { url = "https://files.pythonhosted.org/packages/17/cd/9c6547169eb01a22b04cbb638804ccaeb3c2ec2afc12303464e0f9b2ee5a/ujson-5.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beeaf1c48e32f07d8820c705ff8e645f8afa690cca1544adba4ebfa067efdc88", size = 54266 }, + { url = "https://files.pythonhosted.org/packages/70/bf/ecd14d3cf6127f8a990b01f0ad20e257f5619a555f47d707c57d39934894/ujson-5.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:baed37ea46d756aca2955e99525cc02d9181de67f25515c468856c38d52b5f3b", size = 42224 }, ] [[package]] @@ -4743,6 +5292,8 @@ version = "1.4.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/9e/b0/21547e16a47206ccdd15769bf65e143ade1ffae67f0881c855f76e44e9fa/win-precise-time-1.4.2.tar.gz", hash = "sha256:89274785cbc5f2997e01675206da3203835a442c60fd97798415c6b3c179c0b9", size = 7982 } wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/8b/ba6bdef9284fd75f816205bf9a198a2cf7b22459ff401174143ade5afe08/win_precise_time-1.4.2-cp310-cp310-win32.whl", hash = "sha256:7fa13a2247c2ef41cd5e9b930f40716eacc7fc1f079ea72853bd5613fe087a1a", size = 14700 }, + { url = "https://files.pythonhosted.org/packages/25/7f/5087d16a720b6833cb631b4b6f912b0ff433377227ecbbc494453951cbb5/win_precise_time-1.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:bb8e44b0fc35fde268e8a781cdcd9f47d47abcd8089465d2d1d1063976411c8e", size = 14913 }, { url = "https://files.pythonhosted.org/packages/bb/d6/a48717649fea2d7a6679db86dae9ae4b12078c7a48aa89a8f14a360f29d0/win_precise_time-1.4.2-cp311-cp311-win32.whl", hash = "sha256:59272655ad6f36910d0b585969402386fa627fca3be24acc9a21be1d550e5db8", size = 14703 }, { url = "https://files.pythonhosted.org/packages/f9/9c/46d69220d468c82ca2044284c5a8089705c5eb66be416abcbba156365a14/win_precise_time-1.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:0897bb055f19f3b4336e2ba6bee0115ac20fd7ec615a6d736632e2df77f8851a", size = 14912 }, { url = "https://files.pythonhosted.org/packages/2e/96/55a14b5c0e90439951f4a72672223bba81a5f882033c5850f8a6c7f4308b/win_precise_time-1.4.2-cp312-cp312-win32.whl", hash = "sha256:0210dcea88a520c91de1708ae4c881e3c0ddc956daa08b9eabf2b7c35f3109f5", size = 14694 }, @@ -4755,6 +5306,15 @@ version = "1.17.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/24/a1/fc03dca9b0432725c2e8cdbf91a349d2194cf03d8523c124faebe581de09/wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801", size = 55542 } wheels = [ + { url = "https://files.pythonhosted.org/packages/99/f9/85220321e9bb1a5f72ccce6604395ae75fcb463d87dad0014dc1010bd1f1/wrapt-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a0c23b8319848426f305f9cb0c98a6e32ee68a36264f45948ccf8e7d2b941f8", size = 38766 }, + { url = "https://files.pythonhosted.org/packages/ff/71/ff624ff3bde91ceb65db6952cdf8947bc0111d91bd2359343bc2fa7c57fd/wrapt-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1ca5f060e205f72bec57faae5bd817a1560fcfc4af03f414b08fa29106b7e2d", size = 83262 }, + { url = "https://files.pythonhosted.org/packages/9f/0a/814d4a121a643af99cfe55a43e9e6dd08f4a47cdac8e8f0912c018794715/wrapt-1.17.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e185ec6060e301a7e5f8461c86fb3640a7beb1a0f0208ffde7a65ec4074931df", size = 74990 }, + { url = "https://files.pythonhosted.org/packages/cd/c7/b8c89bf5ca5c4e6a2d0565d149d549cdb4cffb8916d1d1b546b62fb79281/wrapt-1.17.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb90765dd91aed05b53cd7a87bd7f5c188fcd95960914bae0d32c5e7f899719d", size = 82712 }, + { url = "https://files.pythonhosted.org/packages/19/7c/5977aefa8460906c1ff914fd42b11cf6c09ded5388e46e1cc6cea4ab15e9/wrapt-1.17.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:879591c2b5ab0a7184258274c42a126b74a2c3d5a329df16d69f9cee07bba6ea", size = 81705 }, + { url = "https://files.pythonhosted.org/packages/ae/e7/233402d7bd805096bb4a8ec471f5a141421a01de3c8c957cce569772c056/wrapt-1.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fce6fee67c318fdfb7f285c29a82d84782ae2579c0e1b385b7f36c6e8074fffb", size = 74636 }, + { url = "https://files.pythonhosted.org/packages/93/81/b6c32d8387d9cfbc0134f01585dee7583315c3b46dfd3ae64d47693cd078/wrapt-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0698d3a86f68abc894d537887b9bbf84d29bcfbc759e23f4644be27acf6da301", size = 81299 }, + { url = "https://files.pythonhosted.org/packages/d1/c3/1fae15d453468c98f09519076f8d401b476d18d8d94379e839eed14c4c8b/wrapt-1.17.0-cp310-cp310-win32.whl", hash = "sha256:69d093792dc34a9c4c8a70e4973a3361c7a7578e9cd86961b2bbf38ca71e4e22", size = 36425 }, + { url = "https://files.pythonhosted.org/packages/c6/f4/77e0886c95556f2b4caa8908ea8eb85f713fc68296a2113f8c63d50fe0fb/wrapt-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:f28b29dc158ca5d6ac396c8e0a2ef45c4e97bb7e65522bfc04c989e6fe814575", size = 38748 }, { url = "https://files.pythonhosted.org/packages/0e/40/def56538acddc2f764c157d565b9f989072a1d2f2a8e384324e2e104fc7d/wrapt-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:74bf625b1b4caaa7bad51d9003f8b07a468a704e0644a700e936c357c17dd45a", size = 38766 }, { url = "https://files.pythonhosted.org/packages/89/e2/8c299f384ae4364193724e2adad99f9504599d02a73ec9199bf3f406549d/wrapt-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f2a28eb35cf99d5f5bd12f5dd44a0f41d206db226535b37b0c60e9da162c3ed", size = 83730 }, { url = "https://files.pythonhosted.org/packages/29/ef/fcdb776b12df5ea7180d065b28fa6bb27ac785dddcd7202a0b6962bbdb47/wrapt-1.17.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81b1289e99cf4bad07c23393ab447e5e96db0ab50974a280f7954b071d41b489", size = 75470 }, @@ -4818,6 +5378,21 @@ version = "3.5.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/00/5e/d6e5258d69df8b4ed8c83b6664f2b47d30d2dec551a29ad72a6c69eafd31/xxhash-3.5.0.tar.gz", hash = "sha256:84f2caddf951c9cbf8dc2e22a89d4ccf5d86391ac6418fe81e3c67d0cf60b45f", size = 84241 } wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/8a/0e9feca390d512d293afd844d31670e25608c4a901e10202aa98785eab09/xxhash-3.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ece616532c499ee9afbb83078b1b952beffef121d989841f7f4b3dc5ac0fd212", size = 31970 }, + { url = "https://files.pythonhosted.org/packages/16/e6/be5aa49580cd064a18200ab78e29b88b1127e1a8c7955eb8ecf81f2626eb/xxhash-3.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3171f693dbc2cef6477054a665dc255d996646b4023fe56cb4db80e26f4cc520", size = 30801 }, + { url = "https://files.pythonhosted.org/packages/20/ee/b8a99ebbc6d1113b3a3f09e747fa318c3cde5b04bd9c197688fadf0eeae8/xxhash-3.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5d3e570ef46adaf93fc81b44aca6002b5a4d8ca11bd0580c07eac537f36680", size = 220927 }, + { url = "https://files.pythonhosted.org/packages/58/62/15d10582ef159283a5c2b47f6d799fc3303fe3911d5bb0bcc820e1ef7ff4/xxhash-3.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cb29a034301e2982df8b1fe6328a84f4b676106a13e9135a0d7e0c3e9f806da", size = 200360 }, + { url = "https://files.pythonhosted.org/packages/23/41/61202663ea9b1bd8e53673b8ec9e2619989353dba8cfb68e59a9cbd9ffe3/xxhash-3.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d0d307d27099bb0cbeea7260eb39ed4fdb99c5542e21e94bb6fd29e49c57a23", size = 428528 }, + { url = "https://files.pythonhosted.org/packages/f2/07/d9a3059f702dec5b3b703737afb6dda32f304f6e9da181a229dafd052c29/xxhash-3.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0342aafd421795d740e514bc9858ebddfc705a75a8c5046ac56d85fe97bf196", size = 194149 }, + { url = "https://files.pythonhosted.org/packages/eb/58/27caadf78226ecf1d62dbd0c01d152ed381c14c1ee4ad01f0d460fc40eac/xxhash-3.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3dbbd9892c5ebffeca1ed620cf0ade13eb55a0d8c84e0751a6653adc6ac40d0c", size = 207703 }, + { url = "https://files.pythonhosted.org/packages/b1/08/32d558ce23e1e068453c39aed7b3c1cdc690c177873ec0ca3a90d5808765/xxhash-3.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4cc2d67fdb4d057730c75a64c5923abfa17775ae234a71b0200346bfb0a7f482", size = 216255 }, + { url = "https://files.pythonhosted.org/packages/3f/d4/2b971e2d2b0a61045f842b622ef11e94096cf1f12cd448b6fd426e80e0e2/xxhash-3.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:ec28adb204b759306a3d64358a5e5c07d7b1dd0ccbce04aa76cb9377b7b70296", size = 202744 }, + { url = "https://files.pythonhosted.org/packages/19/ae/6a6438864a8c4c39915d7b65effd85392ebe22710412902487e51769146d/xxhash-3.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1328f6d8cca2b86acb14104e381225a3d7b42c92c4b86ceae814e5c400dbb415", size = 210115 }, + { url = "https://files.pythonhosted.org/packages/48/7d/b3c27c27d1fc868094d02fe4498ccce8cec9fcc591825c01d6bcb0b4fc49/xxhash-3.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8d47ebd9f5d9607fd039c1fbf4994e3b071ea23eff42f4ecef246ab2b7334198", size = 414247 }, + { url = "https://files.pythonhosted.org/packages/a1/05/918f9e7d2fbbd334b829997045d341d6239b563c44e683b9a7ef8fe50f5d/xxhash-3.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b96d559e0fcddd3343c510a0fe2b127fbff16bf346dd76280b82292567523442", size = 191419 }, + { url = "https://files.pythonhosted.org/packages/08/29/dfe393805b2f86bfc47c290b275f0b7c189dc2f4e136fd4754f32eb18a8d/xxhash-3.5.0-cp310-cp310-win32.whl", hash = "sha256:61c722ed8d49ac9bc26c7071eeaa1f6ff24053d553146d5df031802deffd03da", size = 30114 }, + { url = "https://files.pythonhosted.org/packages/7b/d7/aa0b22c4ebb7c3ccb993d4c565132abc641cd11164f8952d89eb6a501909/xxhash-3.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:9bed5144c6923cc902cd14bb8963f2d5e034def4486ab0bbe1f58f03f042f9a9", size = 30003 }, + { url = "https://files.pythonhosted.org/packages/69/12/f969b81541ee91b55f1ce469d7ab55079593c80d04fd01691b550e535000/xxhash-3.5.0-cp310-cp310-win_arm64.whl", hash = "sha256:893074d651cf25c1cc14e3bea4fceefd67f2921b1bb8e40fcfeba56820de80c6", size = 26773 }, { url = "https://files.pythonhosted.org/packages/b8/c7/afed0f131fbda960ff15eee7f304fa0eeb2d58770fade99897984852ef23/xxhash-3.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02c2e816896dc6f85922ced60097bcf6f008dedfc5073dcba32f9c8dd786f3c1", size = 31969 }, { url = "https://files.pythonhosted.org/packages/8c/0c/7c3bc6d87e5235672fcc2fb42fd5ad79fe1033925f71bf549ee068c7d1ca/xxhash-3.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6027dcd885e21581e46d3c7f682cfb2b870942feeed58a21c29583512c3f09f8", size = 30800 }, { url = "https://files.pythonhosted.org/packages/04/9e/01067981d98069eec1c20201f8c145367698e9056f8bc295346e4ea32dd1/xxhash-3.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1308fa542bbdbf2fa85e9e66b1077eea3a88bef38ee8a06270b4298a7a62a166", size = 221566 }, @@ -4863,6 +5438,11 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1f/6d/c61e0668943a034abc3a569cdc5aeae37d686d9da7e39cf2ed621d533e36/xxhash-3.5.0-cp313-cp313-win32.whl", hash = "sha256:53a068fe70301ec30d868ece566ac90d873e3bb059cf83c32e76012c889b8637", size = 30172 }, { url = "https://files.pythonhosted.org/packages/96/14/8416dce965f35e3d24722cdf79361ae154fa23e2ab730e5323aa98d7919e/xxhash-3.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:80babcc30e7a1a484eab952d76a4f4673ff601f54d5142c26826502740e70b43", size = 30041 }, { url = "https://files.pythonhosted.org/packages/27/ee/518b72faa2073f5aa8e3262408d284892cb79cf2754ba0c3a5870645ef73/xxhash-3.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:4811336f1ce11cac89dcbd18f3a25c527c16311709a89313c3acaf771def2d4b", size = 26801 }, + { url = "https://files.pythonhosted.org/packages/ab/9a/233606bada5bd6f50b2b72c45de3d9868ad551e83893d2ac86dc7bb8553a/xxhash-3.5.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:2014c5b3ff15e64feecb6b713af12093f75b7926049e26a580e94dcad3c73d8c", size = 29732 }, + { url = "https://files.pythonhosted.org/packages/0c/67/f75276ca39e2c6604e3bee6c84e9db8a56a4973fde9bf35989787cf6e8aa/xxhash-3.5.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fab81ef75003eda96239a23eda4e4543cedc22e34c373edcaf744e721a163986", size = 36214 }, + { url = "https://files.pythonhosted.org/packages/0f/f8/f6c61fd794229cc3848d144f73754a0c107854372d7261419dcbbd286299/xxhash-3.5.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e2febf914ace002132aa09169cc572e0d8959d0f305f93d5828c4836f9bc5a6", size = 32020 }, + { url = "https://files.pythonhosted.org/packages/79/d3/c029c99801526f859e6b38d34ab87c08993bf3dcea34b11275775001638a/xxhash-3.5.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5d3a10609c51da2a1c0ea0293fc3968ca0a18bd73838455b5bca3069d7f8e32b", size = 40515 }, + { url = "https://files.pythonhosted.org/packages/62/e3/bef7b82c1997579c94de9ac5ea7626d01ae5858aa22bf4fcb38bf220cb3e/xxhash-3.5.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5a74f23335b9689b66eb6dbe2a931a88fcd7a4c2cc4b1cb0edba8ce381c7a1da", size = 30064 }, ] [[package]] @@ -4885,6 +5465,22 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/b7/9d/4b94a8e6d2b51b599516a5cb88e5bc99b4d8d4583e468057eaa29d5f0918/yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1", size = 181062 } wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/98/e005bc608765a8a5569f58e650961314873c8469c333616eb40bff19ae97/yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34", size = 141458 }, + { url = "https://files.pythonhosted.org/packages/df/5d/f8106b263b8ae8a866b46d9be869ac01f9b3fb7f2325f3ecb3df8003f796/yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7", size = 94365 }, + { url = "https://files.pythonhosted.org/packages/56/3e/d8637ddb9ba69bf851f765a3ee288676f7cf64fb3be13760c18cbc9d10bd/yarl-1.18.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:602d98f2c2d929f8e697ed274fbadc09902c4025c5a9963bf4e9edfc3ab6f7ed", size = 92181 }, + { url = "https://files.pythonhosted.org/packages/76/f9/d616a5c2daae281171de10fba41e1c0e2d8207166fc3547252f7d469b4e1/yarl-1.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c654d5207c78e0bd6d749f6dae1dcbbfde3403ad3a4b11f3c5544d9906969dde", size = 315349 }, + { url = "https://files.pythonhosted.org/packages/bb/b4/3ea5e7b6f08f698b3769a06054783e434f6d59857181b5c4e145de83f59b/yarl-1.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5094d9206c64181d0f6e76ebd8fb2f8fe274950a63890ee9e0ebfd58bf9d787b", size = 330494 }, + { url = "https://files.pythonhosted.org/packages/55/f1/e0fc810554877b1b67420568afff51b967baed5b53bcc983ab164eebf9c9/yarl-1.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35098b24e0327fc4ebdc8ffe336cee0a87a700c24ffed13161af80124b7dc8e5", size = 326927 }, + { url = "https://files.pythonhosted.org/packages/a9/42/b1753949b327b36f210899f2dd0a0947c0c74e42a32de3f8eb5c7d93edca/yarl-1.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3236da9272872443f81fedc389bace88408f64f89f75d1bdb2256069a8730ccc", size = 319703 }, + { url = "https://files.pythonhosted.org/packages/f0/6d/e87c62dc9635daefb064b56f5c97df55a2e9cc947a2b3afd4fd2f3b841c7/yarl-1.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2c08cc9b16f4f4bc522771d96734c7901e7ebef70c6c5c35dd0f10845270bcd", size = 310246 }, + { url = "https://files.pythonhosted.org/packages/e3/ef/e2e8d1785cdcbd986f7622d7f0098205f3644546da7919c24b95790ec65a/yarl-1.18.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80316a8bd5109320d38eef8833ccf5f89608c9107d02d2a7f985f98ed6876990", size = 319730 }, + { url = "https://files.pythonhosted.org/packages/fc/15/8723e22345bc160dfde68c4b3ae8b236e868f9963c74015f1bc8a614101c/yarl-1.18.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c1e1cc06da1491e6734f0ea1e6294ce00792193c463350626571c287c9a704db", size = 321681 }, + { url = "https://files.pythonhosted.org/packages/86/09/bf764e974f1516efa0ae2801494a5951e959f1610dd41edbfc07e5e0f978/yarl-1.18.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fea09ca13323376a2fdfb353a5fa2e59f90cd18d7ca4eaa1fd31f0a8b4f91e62", size = 324812 }, + { url = "https://files.pythonhosted.org/packages/f6/4c/20a0187e3b903c97d857cf0272d687c1b08b03438968ae8ffc50fe78b0d6/yarl-1.18.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e3b9fd71836999aad54084906f8663dffcd2a7fb5cdafd6c37713b2e72be1760", size = 337011 }, + { url = "https://files.pythonhosted.org/packages/c9/71/6244599a6e1cc4c9f73254a627234e0dad3883ece40cc33dce6265977461/yarl-1.18.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:757e81cae69244257d125ff31663249b3013b5dc0a8520d73694aed497fb195b", size = 338132 }, + { url = "https://files.pythonhosted.org/packages/af/f5/e0c3efaf74566c4b4a41cb76d27097df424052a064216beccae8d303c90f/yarl-1.18.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b1771de9944d875f1b98a745bc547e684b863abf8f8287da8466cf470ef52690", size = 331849 }, + { url = "https://files.pythonhosted.org/packages/8a/b8/3d16209c2014c2f98a8f658850a57b716efb97930aebf1ca0d9325933731/yarl-1.18.3-cp310-cp310-win32.whl", hash = "sha256:8874027a53e3aea659a6d62751800cf6e63314c160fd607489ba5c2edd753cf6", size = 84309 }, + { url = "https://files.pythonhosted.org/packages/fd/b7/2e9a5b18eb0fe24c3a0e8bae994e812ed9852ab4fd067c0107fadde0d5f0/yarl-1.18.3-cp310-cp310-win_amd64.whl", hash = "sha256:93b2e109287f93db79210f86deb6b9bbb81ac32fc97236b16f7433db7fc437d8", size = 90484 }, { url = "https://files.pythonhosted.org/packages/40/93/282b5f4898d8e8efaf0790ba6d10e2245d2c9f30e199d1a85cae9356098c/yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069", size = 141555 }, { url = "https://files.pythonhosted.org/packages/6d/9c/0a49af78df099c283ca3444560f10718fadb8a18dc8b3edf8c7bd9fd7d89/yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193", size = 94351 }, { url = "https://files.pythonhosted.org/packages/5a/a1/205ab51e148fdcedad189ca8dd587794c6f119882437d04c33c01a75dece/yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889", size = 92286 }, diff --git a/cognee/api/v1/cognify/code_graph_pipeline.py b/cognee/api/v1/cognify/code_graph_pipeline.py index 405cb0b40..2d077f39b 100644 --- a/cognee/api/v1/cognify/code_graph_pipeline.py +++ b/cognee/api/v1/cognify/code_graph_pipeline.py @@ -3,7 +3,6 @@ import logging from pathlib import Path from cognee.base_config import get_base_config -from cognee.infrastructure.databases.vector.embeddings import get_embedding_engine from cognee.modules.cognify.config import get_cognify_config from cognee.modules.pipelines import run_tasks from cognee.modules.pipelines.tasks.Task import Task @@ -54,8 +53,6 @@ async def run_code_graph_pipeline(repo_path, include_docs=True): await cognee.prune.prune_system(metadata=True) await create_db_and_tables() - embedding_engine = get_embedding_engine() - cognee_config = get_cognify_config() user = await get_default_user() @@ -63,11 +60,7 @@ async def run_code_graph_pipeline(repo_path, include_docs=True): Task(get_repo_file_dependencies), Task(enrich_dependency_graph), Task(expand_dependency_graph, task_config={"batch_size": 50}), - Task( - get_source_code_chunks, - embedding_model=embedding_engine.model, - task_config={"batch_size": 50}, - ), + Task(get_source_code_chunks, task_config={"batch_size": 50}), Task(summarize_code, task_config={"batch_size": 50}), Task(add_data_points, task_config={"batch_size": 50}), ] @@ -78,7 +71,7 @@ async def run_code_graph_pipeline(repo_path, include_docs=True): Task(ingest_data_with_metadata, dataset_name="repo_docs", user=user), Task(get_data_list_for_user, dataset_name="repo_docs", user=user), Task(classify_documents), - Task(extract_chunks_from_documents), + Task(extract_chunks_from_documents, max_tokens=cognee_config.max_tokens), Task( extract_graph_from_data, graph_model=KnowledgeGraph, task_config={"batch_size": 50} ), diff --git a/cognee/infrastructure/databases/graph/neo4j_driver/adapter.py b/cognee/infrastructure/databases/graph/neo4j_driver/adapter.py index 5490f6b43..3543418fc 100644 --- a/cognee/infrastructure/databases/graph/neo4j_driver/adapter.py +++ b/cognee/infrastructure/databases/graph/neo4j_driver/adapter.py @@ -493,7 +493,7 @@ class Neo4jAdapter(GraphDBInterface): query_edges = f""" MATCH (n)-[r]->(m) - WHERE {where_clause} AND {where_clause.replace('n.', 'm.')} + WHERE {where_clause} AND {where_clause.replace("n.", "m.")} RETURN ID(n) AS source, ID(m) AS target, TYPE(r) AS type, properties(r) AS properties """ result_edges = await self.query(query_edges) diff --git a/cognee/infrastructure/llm/prompts/patch_gen_kg_instructions.txt b/cognee/infrastructure/llm/prompts/patch_gen_kg_instructions.txt index ebbb03f75..3117ac9f1 100644 --- a/cognee/infrastructure/llm/prompts/patch_gen_kg_instructions.txt +++ b/cognee/infrastructure/llm/prompts/patch_gen_kg_instructions.txt @@ -1,3 +1,6 @@ -I need you to solve this issue by looking at the provided edges retrieved from a knowledge graph and -generate a single patch file that I can apply directly to this repository using git apply. -Please respond with a single patch file in the following format. \ No newline at end of file +You are a senior software engineer. I need you to solve this issue by looking at the provided context and +generate a single patch file that I can apply directly to this repository using git apply. +Additionally, please make sure that you provide code only with correct syntax and +you apply the patch on the relevant files (together with their path that you can try to find out from the github issue). Don't change the names of existing +functions or classes, as they may be referenced from other code. +Please respond only with a single patch file in the following format without adding any additional context or string. diff --git a/cognee/modules/chunking/TextChunker.py b/cognee/modules/chunking/TextChunker.py index 7bb8a1c1c..78c02b9c9 100644 --- a/cognee/modules/chunking/TextChunker.py +++ b/cognee/modules/chunking/TextChunker.py @@ -1,7 +1,9 @@ -from uuid import uuid5, NAMESPACE_OID +from typing import Optional +from uuid import NAMESPACE_OID, uuid5 + +from cognee.tasks.chunks import chunk_by_paragraph from .models.DocumentChunk import DocumentChunk -from cognee.tasks.chunks import chunk_by_paragraph class TextChunker: @@ -10,23 +12,36 @@ class TextChunker: chunk_index = 0 chunk_size = 0 + token_count = 0 - def __init__(self, document, get_text: callable, chunk_size: int = 1024): + def __init__( + self, document, get_text: callable, max_tokens: Optional[int] = None, chunk_size: int = 1024 + ): self.document = document self.max_chunk_size = chunk_size self.get_text = get_text + self.max_tokens = max_tokens if max_tokens else float("inf") + + def check_word_count_and_token_count(self, word_count_before, token_count_before, chunk_data): + word_count_fits = word_count_before + chunk_data["word_count"] <= self.max_chunk_size + token_count_fits = token_count_before + chunk_data["token_count"] <= self.max_tokens + return word_count_fits and token_count_fits def read(self): paragraph_chunks = [] for content_text in self.get_text(): for chunk_data in chunk_by_paragraph( content_text, + self.max_tokens, self.max_chunk_size, batch_paragraphs=True, ): - if self.chunk_size + chunk_data["word_count"] <= self.max_chunk_size: + if self.check_word_count_and_token_count( + self.chunk_size, self.token_count, chunk_data + ): paragraph_chunks.append(chunk_data) self.chunk_size += chunk_data["word_count"] + self.token_count += chunk_data["token_count"] else: if len(paragraph_chunks) == 0: yield DocumentChunk( @@ -66,6 +81,7 @@ class TextChunker: print(e) paragraph_chunks = [chunk_data] self.chunk_size = chunk_data["word_count"] + self.token_count = chunk_data["token_count"] self.chunk_index += 1 diff --git a/cognee/modules/chunking/models/DocumentChunk.py b/cognee/modules/chunking/models/DocumentChunk.py index 4920e9b06..a232d50a1 100644 --- a/cognee/modules/chunking/models/DocumentChunk.py +++ b/cognee/modules/chunking/models/DocumentChunk.py @@ -12,6 +12,7 @@ class DocumentChunk(DataPoint): chunk_index: int cut_type: str is_part_of: Document + pydantic_type: str = "DocumentChunk" contains: List[Entity] = None _metadata: dict = {"index_fields": ["text"], "type": "DocumentChunk"} diff --git a/cognee/modules/cognify/config.py b/cognee/modules/cognify/config.py index d40410bfc..dd94d8b41 100644 --- a/cognee/modules/cognify/config.py +++ b/cognee/modules/cognify/config.py @@ -1,12 +1,14 @@ from functools import lru_cache from pydantic_settings import BaseSettings, SettingsConfigDict from cognee.shared.data_models import DefaultContentPrediction, SummarizedContent +from typing import Optional +import os class CognifyConfig(BaseSettings): classification_model: object = DefaultContentPrediction summarization_model: object = SummarizedContent - + max_tokens: Optional[int] = os.getenv("MAX_TOKENS") model_config = SettingsConfigDict(env_file=".env", extra="allow") def to_dict(self) -> dict: diff --git a/cognee/modules/data/processing/document_types/AudioDocument.py b/cognee/modules/data/processing/document_types/AudioDocument.py index a33d4e7fc..b7d2476b4 100644 --- a/cognee/modules/data/processing/document_types/AudioDocument.py +++ b/cognee/modules/data/processing/document_types/AudioDocument.py @@ -1,6 +1,9 @@ +from typing import Optional + from cognee.infrastructure.llm.get_llm_client import get_llm_client -from .Document import Document + from .ChunkerMapping import ChunkerConfig +from .Document import Document class AudioDocument(Document): @@ -10,12 +13,14 @@ class AudioDocument(Document): result = get_llm_client().create_transcript(self.raw_data_location) return result.text - def read(self, chunk_size: int, chunker: str): + def read(self, chunk_size: int, chunker: str, max_tokens: Optional[int] = None): # Transcribe the audio file text = self.create_transcript() chunker_func = ChunkerConfig.get_chunker(chunker) - chunker = chunker_func(self, chunk_size=chunk_size, get_text=lambda: [text]) + chunker = chunker_func( + self, chunk_size=chunk_size, get_text=lambda: [text], max_tokens=max_tokens + ) yield from chunker.read() diff --git a/cognee/modules/data/processing/document_types/Document.py b/cognee/modules/data/processing/document_types/Document.py index 08380e809..7ecdf289e 100644 --- a/cognee/modules/data/processing/document_types/Document.py +++ b/cognee/modules/data/processing/document_types/Document.py @@ -1,3 +1,4 @@ +from typing import Optional from uuid import UUID from cognee.infrastructure.engine import DataPoint @@ -10,5 +11,5 @@ class Document(DataPoint): mime_type: str _metadata: dict = {"index_fields": ["name"], "type": "Document"} - def read(self, chunk_size: int, chunker=str) -> str: + def read(self, chunk_size: int, chunker=str, max_tokens: Optional[int] = None) -> str: pass diff --git a/cognee/modules/data/processing/document_types/ImageDocument.py b/cognee/modules/data/processing/document_types/ImageDocument.py index 424cd059c..c055b8253 100644 --- a/cognee/modules/data/processing/document_types/ImageDocument.py +++ b/cognee/modules/data/processing/document_types/ImageDocument.py @@ -1,6 +1,9 @@ +from typing import Optional + from cognee.infrastructure.llm.get_llm_client import get_llm_client -from .Document import Document + from .ChunkerMapping import ChunkerConfig +from .Document import Document class ImageDocument(Document): @@ -10,11 +13,13 @@ class ImageDocument(Document): result = get_llm_client().transcribe_image(self.raw_data_location) return result.choices[0].message.content - def read(self, chunk_size: int, chunker: str): + def read(self, chunk_size: int, chunker: str, max_tokens: Optional[int] = None): # Transcribe the image file text = self.transcribe_image() chunker_func = ChunkerConfig.get_chunker(chunker) - chunker = chunker_func(self, chunk_size=chunk_size, get_text=lambda: [text]) + chunker = chunker_func( + self, chunk_size=chunk_size, get_text=lambda: [text], max_tokens=max_tokens + ) yield from chunker.read() diff --git a/cognee/modules/data/processing/document_types/PdfDocument.py b/cognee/modules/data/processing/document_types/PdfDocument.py index 684fb428c..768f91264 100644 --- a/cognee/modules/data/processing/document_types/PdfDocument.py +++ b/cognee/modules/data/processing/document_types/PdfDocument.py @@ -1,12 +1,15 @@ +from typing import Optional + from pypdf import PdfReader -from .Document import Document + from .ChunkerMapping import ChunkerConfig +from .Document import Document class PdfDocument(Document): type: str = "pdf" - def read(self, chunk_size: int, chunker: str): + def read(self, chunk_size: int, chunker: str, max_tokens: Optional[int] = None): file = PdfReader(self.raw_data_location) def get_text(): @@ -15,7 +18,9 @@ class PdfDocument(Document): yield page_text chunker_func = ChunkerConfig.get_chunker(chunker) - chunker = chunker_func(self, chunk_size=chunk_size, get_text=get_text) + chunker = chunker_func( + self, chunk_size=chunk_size, get_text=get_text, max_tokens=max_tokens + ) yield from chunker.read() diff --git a/cognee/modules/data/processing/document_types/TextDocument.py b/cognee/modules/data/processing/document_types/TextDocument.py index f993ff221..b62ccd56e 100644 --- a/cognee/modules/data/processing/document_types/TextDocument.py +++ b/cognee/modules/data/processing/document_types/TextDocument.py @@ -1,11 +1,13 @@ -from .Document import Document +from typing import Optional + from .ChunkerMapping import ChunkerConfig +from .Document import Document class TextDocument(Document): type: str = "text" - def read(self, chunk_size: int, chunker: str): + def read(self, chunk_size: int, chunker: str, max_tokens: Optional[int] = None): def get_text(): with open(self.raw_data_location, mode="r", encoding="utf-8") as file: while True: @@ -18,6 +20,8 @@ class TextDocument(Document): chunker_func = ChunkerConfig.get_chunker(chunker) - chunker = chunker_func(self, chunk_size=chunk_size, get_text=get_text) + chunker = chunker_func( + self, chunk_size=chunk_size, get_text=get_text, max_tokens=max_tokens + ) yield from chunker.read() diff --git a/cognee/modules/data/processing/document_types/UnstructuredDocument.py b/cognee/modules/data/processing/document_types/UnstructuredDocument.py index cd5c72e3b..1c291d0dc 100644 --- a/cognee/modules/data/processing/document_types/UnstructuredDocument.py +++ b/cognee/modules/data/processing/document_types/UnstructuredDocument.py @@ -1,14 +1,16 @@ from io import StringIO +from typing import Optional from cognee.modules.chunking.TextChunker import TextChunker -from .Document import Document from cognee.modules.data.exceptions import UnstructuredLibraryImportError +from .Document import Document + class UnstructuredDocument(Document): type: str = "unstructured" - def read(self, chunk_size: int): + def read(self, chunk_size: int, chunker: str, max_tokens: Optional[int] = None) -> str: def get_text(): try: from unstructured.partition.auto import partition @@ -27,6 +29,6 @@ class UnstructuredDocument(Document): yield text - chunker = TextChunker(self, chunk_size=chunk_size, get_text=get_text) + chunker = TextChunker(self, chunk_size=chunk_size, get_text=get_text, max_tokens=max_tokens) yield from chunker.read() diff --git a/cognee/modules/engine/models/Entity.py b/cognee/modules/engine/models/Entity.py index 63a153bf2..0e57d5dba 100644 --- a/cognee/modules/engine/models/Entity.py +++ b/cognee/modules/engine/models/Entity.py @@ -7,5 +7,6 @@ class Entity(DataPoint): name: str is_a: EntityType description: str + pydantic_type: str = "Entity" _metadata: dict = {"index_fields": ["name"], "type": "Entity"} diff --git a/cognee/modules/engine/models/EntityType.py b/cognee/modules/engine/models/EntityType.py index 7225bb3ae..10799bb33 100644 --- a/cognee/modules/engine/models/EntityType.py +++ b/cognee/modules/engine/models/EntityType.py @@ -5,5 +5,6 @@ class EntityType(DataPoint): __tablename__ = "entity_type" name: str description: str + pydantic_type: str = "EntityType" _metadata: dict = {"index_fields": ["name"], "type": "EntityType"} diff --git a/cognee/modules/retrieval/brute_force_triplet_search.py b/cognee/modules/retrieval/brute_force_triplet_search.py index fdd312480..9c778505d 100644 --- a/cognee/modules/retrieval/brute_force_triplet_search.py +++ b/cognee/modules/retrieval/brute_force_triplet_search.py @@ -43,7 +43,7 @@ def format_triplets(edges): edge_info = {key: value for key, value in edge_attributes.items() if value is not None} # Create the formatted triplet - triplet = f"Node1: {node1_info}\n" f"Edge: {edge_info}\n" f"Node2: {node2_info}\n\n\n" + triplet = f"Node1: {node1_info}\nEdge: {edge_info}\nNode2: {node2_info}\n\n\n" triplets.append(triplet) return "".join(triplets) diff --git a/cognee/modules/retrieval/description_to_codepart_search.py b/cognee/modules/retrieval/description_to_codepart_search.py index ecd187907..243fdbde3 100644 --- a/cognee/modules/retrieval/description_to_codepart_search.py +++ b/cognee/modules/retrieval/description_to_codepart_search.py @@ -8,20 +8,27 @@ from cognee.modules.graph.cognee_graph.CogneeGraph import CogneeGraph from cognee.modules.users.methods import get_default_user from cognee.modules.users.models import User from cognee.shared.utils import send_telemetry +from cognee.api.v1.search import SearchType +from cognee.api.v1.search.search_v2 import search +from cognee.infrastructure.llm.get_llm_client import get_llm_client -async def code_description_to_code_part_search(query: str, user: User = None, top_k=2) -> list: +async def code_description_to_code_part_search( + query: str, include_docs=False, user: User = None, top_k=5 +) -> list: if user is None: user = await get_default_user() if user is None: raise PermissionError("No user found in the system. Please create a user.") - retrieved_codeparts = await code_description_to_code_part(query, user, top_k) + retrieved_codeparts = await code_description_to_code_part(query, user, top_k, include_docs) return retrieved_codeparts -async def code_description_to_code_part(query: str, user: User, top_k: int) -> List[str]: +async def code_description_to_code_part( + query: str, user: User, top_k: int, include_docs: bool = False +) -> List[str]: """ Maps a code description query to relevant code parts using a CodeGraph pipeline. @@ -29,6 +36,7 @@ async def code_description_to_code_part(query: str, user: User, top_k: int) -> L query (str): The search query describing the code parts. user (User): The user performing the search. top_k (int): Number of codegraph descriptions to match ( num of corresponding codeparts will be higher) + include_docs(bool): Boolean showing whether we have the docs in the graph or not Returns: Set[str]: A set of unique code parts matching the query. @@ -55,21 +63,48 @@ async def code_description_to_code_part(query: str, user: User, top_k: int) -> L ) try: - results = await vector_engine.search("code_summary_text", query_text=query, limit=top_k) - if not results: + if include_docs: + search_results = await search(SearchType.INSIGHTS, query_text=query) + + concatenated_descriptions = " ".join( + obj["description"] + for tpl in search_results + for obj in tpl + if isinstance(obj, dict) and "description" in obj + ) + + llm_client = get_llm_client() + context_from_documents = await llm_client.acreate_structured_output( + text_input=f"The retrieved context from documents is {concatenated_descriptions}.", + system_prompt="You are a Senior Software Engineer, summarize the context from documents" + f" in a way that it is gonna be provided next to codeparts as context" + f" while trying to solve this github issue connected to the project: {query}]", + response_model=str, + ) + + code_summaries = await vector_engine.search( + "code_summary_text", query_text=query, limit=top_k + ) + if not code_summaries: logging.warning("No results found for query: '%s' by user: %s", query, user.id) return [] memory_fragment = CogneeGraph() await memory_fragment.project_graph_from_db( graph_engine, - node_properties_to_project=["id", "type", "text", "source_code"], + node_properties_to_project=[ + "id", + "type", + "text", + "source_code", + "pydantic_type", + ], edge_properties_to_project=["relationship_name"], ) code_pieces_to_return = set() - for node in results: + for node in code_summaries: node_id = str(node.id) node_to_search_from = memory_fragment.get_node(node_id) @@ -78,9 +113,16 @@ async def code_description_to_code_part(query: str, user: User, top_k: int) -> L continue for code_file in node_to_search_from.get_skeleton_neighbours(): - for code_file_edge in code_file.get_skeleton_edges(): - if code_file_edge.get_attribute("relationship_name") == "contains": - code_pieces_to_return.add(code_file_edge.get_destination_node()) + if code_file.get_attribute("pydantic_type") == "SourceCodeChunk": + for code_file_edge in code_file.get_skeleton_edges(): + if code_file_edge.get_attribute("relationship_name") == "code_chunk_of": + code_pieces_to_return.add(code_file_edge.get_destination_node()) + elif code_file.get_attribute("pydantic_type") == "CodePart": + code_pieces_to_return.add(code_file) + elif code_file.get_attribute("pydantic_type") == "CodeFile": + for code_file_edge in code_file.get_skeleton_edges(): + if code_file_edge.get_attribute("relationship_name") == "contains": + code_pieces_to_return.add(code_file_edge.get_destination_node()) logging.info( "Search completed for user: %s, query: '%s'. Found %d code pieces.", @@ -89,7 +131,14 @@ async def code_description_to_code_part(query: str, user: User, top_k: int) -> L len(code_pieces_to_return), ) - return list(code_pieces_to_return) + context = "" + for code_piece in code_pieces_to_return: + context = context + code_piece.get_attribute("source_code") + + if include_docs: + context = context_from_documents + context + + return context except Exception as exec_error: logging.error( diff --git a/cognee/shared/CodeGraphEntities.py b/cognee/shared/CodeGraphEntities.py index 164327da0..926aae9fa 100644 --- a/cognee/shared/CodeGraphEntities.py +++ b/cognee/shared/CodeGraphEntities.py @@ -5,12 +5,14 @@ from cognee.infrastructure.engine import DataPoint class Repository(DataPoint): __tablename__ = "Repository" path: str + pydantic_type: str = "Repository" _metadata: dict = {"index_fields": [], "type": "Repository"} class CodeFile(DataPoint): __tablename__ = "codefile" extracted_id: str # actually file path + pydantic_type: str = "CodeFile" source_code: Optional[str] = None part_of: Optional[Repository] = None depends_on: Optional[List["CodeFile"]] = None @@ -22,6 +24,7 @@ class CodeFile(DataPoint): class CodePart(DataPoint): __tablename__ = "codepart" # part_of: Optional[CodeFile] = None + pydantic_type: str = "CodePart" source_code: Optional[str] = None _metadata: dict = {"index_fields": [], "type": "CodePart"} @@ -30,6 +33,7 @@ class SourceCodeChunk(DataPoint): __tablename__ = "sourcecodechunk" code_chunk_of: Optional[CodePart] = None source_code: Optional[str] = None + pydantic_type: str = "SourceCodeChunk" previous_chunk: Optional["SourceCodeChunk"] = None _metadata: dict = {"index_fields": ["source_code"], "type": "SourceCodeChunk"} diff --git a/cognee/shared/data_models.py b/cognee/shared/data_models.py index d23d2841c..a36a09010 100644 --- a/cognee/shared/data_models.py +++ b/cognee/shared/data_models.py @@ -231,6 +231,7 @@ class SummarizedContent(BaseModel): summary: str description: str + pydantic_type: str = "SummarizedContent" class SummarizedFunction(BaseModel): @@ -239,6 +240,7 @@ class SummarizedFunction(BaseModel): inputs: Optional[List[str]] = None outputs: Optional[List[str]] = None decorators: Optional[List[str]] = None + pydantic_type: str = "SummarizedFunction" class SummarizedClass(BaseModel): @@ -246,6 +248,7 @@ class SummarizedClass(BaseModel): description: str methods: Optional[List[SummarizedFunction]] = None decorators: Optional[List[str]] = None + pydantic_type: str = "SummarizedClass" class SummarizedCode(BaseModel): @@ -256,6 +259,7 @@ class SummarizedCode(BaseModel): classes: List[SummarizedClass] = [] functions: List[SummarizedFunction] = [] workflow_description: Optional[str] = None + pydantic_type: str = "SummarizedCode" class GraphDBType(Enum): diff --git a/cognee/shared/utils.py b/cognee/shared/utils.py index e57decde1..affd92c87 100644 --- a/cognee/shared/utils.py +++ b/cognee/shared/utils.py @@ -468,16 +468,20 @@ def graph_to_tuple(graph): def setup_logging(log_level=logging.INFO): - """This method sets up the logging configuration.""" + """Sets up the logging configuration.""" formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s\n") + stream_handler = logging.StreamHandler(sys.stdout) stream_handler.setFormatter(formatter) stream_handler.setLevel(log_level) - logging.basicConfig( - level=log_level, - handlers=[stream_handler], - ) + root_logger = logging.getLogger() + + if root_logger.hasHandlers(): + root_logger.handlers.clear() + + root_logger.addHandler(stream_handler) + root_logger.setLevel(log_level) # ---------------- Example Usage ---------------- diff --git a/cognee/tasks/chunks/chunk_by_paragraph.py b/cognee/tasks/chunks/chunk_by_paragraph.py index 5c95e97b7..24d566074 100644 --- a/cognee/tasks/chunks/chunk_by_paragraph.py +++ b/cognee/tasks/chunks/chunk_by_paragraph.py @@ -1,10 +1,18 @@ -from uuid import uuid5, NAMESPACE_OID -from typing import Dict, Any, Iterator +from typing import Any, Dict, Iterator, Optional, Union +from uuid import NAMESPACE_OID, uuid5 + +import tiktoken + +from cognee.infrastructure.databases.vector import get_vector_engine + from .chunk_by_sentence import chunk_by_sentence def chunk_by_paragraph( - data: str, paragraph_length: int = 1024, batch_paragraphs: bool = True + data: str, + max_tokens: Optional[Union[int, float]] = None, + paragraph_length: int = 1024, + batch_paragraphs: bool = True, ) -> Iterator[Dict[str, Any]]: """ Chunks text by paragraph while preserving exact text reconstruction capability. @@ -15,16 +23,31 @@ def chunk_by_paragraph( chunk_index = 0 paragraph_ids = [] last_cut_type = None + current_token_count = 0 + if not max_tokens: + max_tokens = float("inf") + + vector_engine = get_vector_engine() + embedding_model = vector_engine.embedding_engine.model + embedding_model = embedding_model.split("/")[-1] for paragraph_id, sentence, word_count, end_type in chunk_by_sentence( data, maximum_length=paragraph_length ): # Check if this sentence would exceed length limit - if current_word_count > 0 and current_word_count + word_count > paragraph_length: + + tokenizer = tiktoken.encoding_for_model(embedding_model) + token_count = len(tokenizer.encode(sentence)) + + if current_word_count > 0 and ( + current_word_count + word_count > paragraph_length + or current_token_count + token_count > max_tokens + ): # Yield current chunk chunk_dict = { "text": current_chunk, "word_count": current_word_count, + "token_count": current_token_count, "chunk_id": uuid5(NAMESPACE_OID, current_chunk), "paragraph_ids": paragraph_ids, "chunk_index": chunk_index, @@ -37,11 +60,13 @@ def chunk_by_paragraph( paragraph_ids = [] current_chunk = "" current_word_count = 0 + current_token_count = 0 chunk_index += 1 paragraph_ids.append(paragraph_id) current_chunk += sentence current_word_count += word_count + current_token_count += token_count # Handle end of paragraph if end_type in ("paragraph_end", "sentence_cut") and not batch_paragraphs: @@ -49,6 +74,7 @@ def chunk_by_paragraph( chunk_dict = { "text": current_chunk, "word_count": current_word_count, + "token_count": current_token_count, "paragraph_ids": paragraph_ids, "chunk_id": uuid5(NAMESPACE_OID, current_chunk), "chunk_index": chunk_index, @@ -58,6 +84,7 @@ def chunk_by_paragraph( paragraph_ids = [] current_chunk = "" current_word_count = 0 + current_token_count = 0 chunk_index += 1 last_cut_type = end_type @@ -67,6 +94,7 @@ def chunk_by_paragraph( chunk_dict = { "text": current_chunk, "word_count": current_word_count, + "token_count": current_token_count, "chunk_id": uuid5(NAMESPACE_OID, current_chunk), "paragraph_ids": paragraph_ids, "chunk_index": chunk_index, diff --git a/cognee/tasks/documents/extract_chunks_from_documents.py b/cognee/tasks/documents/extract_chunks_from_documents.py index 437d2a3e4..5ce224002 100644 --- a/cognee/tasks/documents/extract_chunks_from_documents.py +++ b/cognee/tasks/documents/extract_chunks_from_documents.py @@ -1,9 +1,16 @@ +from typing import Optional + from cognee.modules.data.processing.document_types.Document import Document async def extract_chunks_from_documents( - documents: list[Document], chunk_size: int = 1024, chunker="text_chunker" + documents: list[Document], + chunk_size: int = 1024, + chunker="text_chunker", + max_tokens: Optional[int] = None, ): for document in documents: - for document_chunk in document.read(chunk_size=chunk_size, chunker=chunker): + for document_chunk in document.read( + chunk_size=chunk_size, chunker=chunker, max_tokens=max_tokens + ): yield document_chunk diff --git a/cognee/tasks/repo_processor/extract_code_parts.py b/cognee/tasks/repo_processor/extract_code_parts.py index f25146232..c8e478692 100644 --- a/cognee/tasks/repo_processor/extract_code_parts.py +++ b/cognee/tasks/repo_processor/extract_code_parts.py @@ -1,6 +1,5 @@ from typing import Dict, List import parso - import logging logger = logging.getLogger(__name__) diff --git a/cognee/tasks/repo_processor/get_local_dependencies.py b/cognee/tasks/repo_processor/get_local_dependencies.py index b0ac2829f..888f847da 100644 --- a/cognee/tasks/repo_processor/get_local_dependencies.py +++ b/cognee/tasks/repo_processor/get_local_dependencies.py @@ -9,7 +9,6 @@ import aiofiles import jedi import parso from parso.tree import BaseNode - import logging logger = logging.getLogger(__name__) diff --git a/cognee/tasks/repo_processor/get_non_code_files.py b/cognee/tasks/repo_processor/get_non_code_files.py index 9c69afd00..12f32e841 100644 --- a/cognee/tasks/repo_processor/get_non_code_files.py +++ b/cognee/tasks/repo_processor/get_non_code_files.py @@ -29,8 +29,105 @@ async def get_non_py_files(repo_path): "*.egg-info", } + ALLOWED_EXTENSIONS = { + ".txt", + ".md", + ".csv", + ".json", + ".xml", + ".yaml", + ".yml", + ".html", + ".css", + ".js", + ".ts", + ".jsx", + ".tsx", + ".sql", + ".log", + ".ini", + ".toml", + ".properties", + ".sh", + ".bash", + ".dockerfile", + ".gitignore", + ".gitattributes", + ".makefile", + ".pyproject", + ".requirements", + ".env", + ".pdf", + ".doc", + ".docx", + ".dot", + ".dotx", + ".rtf", + ".wps", + ".wpd", + ".odt", + ".ott", + ".ottx", + ".txt", + ".wp", + ".sdw", + ".sdx", + ".docm", + ".dotm", + # Additional extensions for other programming languages + ".java", + ".c", + ".cpp", + ".h", + ".cs", + ".go", + ".php", + ".rb", + ".swift", + ".pl", + ".lua", + ".rs", + ".scala", + ".kt", + ".sh", + ".sql", + ".v", + ".asm", + ".pas", + ".d", + ".ml", + ".clj", + ".cljs", + ".erl", + ".ex", + ".exs", + ".f", + ".fs", + ".r", + ".pyi", + ".pdb", + ".ipynb", + ".rmd", + ".cabal", + ".hs", + ".nim", + ".vhdl", + ".verilog", + ".svelte", + ".html", + ".css", + ".scss", + ".less", + ".json5", + ".yaml", + ".yml", + } + def should_process(path): - return not any(pattern in path for pattern in IGNORED_PATTERNS) + _, ext = os.path.splitext(path) + return ext in ALLOWED_EXTENSIONS and not any( + pattern in path for pattern in IGNORED_PATTERNS + ) non_py_files_paths = [ os.path.join(root, file) diff --git a/cognee/tasks/repo_processor/get_source_code_chunks.py b/cognee/tasks/repo_processor/get_source_code_chunks.py index 980a86539..82fa46cf0 100644 --- a/cognee/tasks/repo_processor/get_source_code_chunks.py +++ b/cognee/tasks/repo_processor/get_source_code_chunks.py @@ -5,6 +5,7 @@ from uuid import NAMESPACE_OID, uuid5 import parso import tiktoken +from cognee.infrastructure.databases.vector import get_vector_engine from cognee.infrastructure.engine import DataPoint from cognee.shared.CodeGraphEntities import CodeFile, CodePart, SourceCodeChunk @@ -126,6 +127,9 @@ def get_source_code_chunks_from_code_part( logger.error(f"No source code in CodeFile {code_file_part.id}") return + vector_engine = get_vector_engine() + embedding_model = vector_engine.embedding_engine.model + model_name = embedding_model.split("/")[-1] tokenizer = tiktoken.encoding_for_model(model_name) max_subchunk_tokens = max(1, int(granularity * max_tokens)) subchunk_token_counts = _get_subchunk_token_counts( @@ -150,7 +154,7 @@ def get_source_code_chunks_from_code_part( async def get_source_code_chunks( - data_points: list[DataPoint], embedding_model="text-embedding-3-large" + data_points: list[DataPoint], ) -> AsyncGenerator[list[DataPoint], None]: """Processes code graph datapoints, create SourceCodeChink datapoints.""" # TODO: Add support for other embedding models, with max_token mapping @@ -165,9 +169,7 @@ async def get_source_code_chunks( for code_part in data_point.contains: try: yield code_part - for source_code_chunk in get_source_code_chunks_from_code_part( - code_part, model_name=embedding_model - ): + for source_code_chunk in get_source_code_chunks_from_code_part(code_part): yield source_code_chunk except Exception as e: logger.error(f"Error processing code part: {e}") diff --git a/cognee/tasks/summarization/models.py b/cognee/tasks/summarization/models.py index fc62209ce..bc7b4886d 100644 --- a/cognee/tasks/summarization/models.py +++ b/cognee/tasks/summarization/models.py @@ -17,5 +17,6 @@ class CodeSummary(DataPoint): __tablename__ = "code_summary" text: str summarizes: Union[CodeFile, CodePart, SourceCodeChunk] + pydantic_type: str = "CodeSummary" _metadata: dict = {"index_fields": ["text"], "type": "CodeSummary"} diff --git a/cognee/tests/integration/documents/AudioDocument_test.py b/cognee/tests/integration/documents/AudioDocument_test.py index dbd43ddda..e07a2431b 100644 --- a/cognee/tests/integration/documents/AudioDocument_test.py +++ b/cognee/tests/integration/documents/AudioDocument_test.py @@ -36,12 +36,12 @@ def test_AudioDocument(): for ground_truth, paragraph_data in zip( GROUND_TRUTH, document.read(chunk_size=64, chunker="text_chunker") ): - assert ( - ground_truth["word_count"] == paragraph_data.word_count - ), f'{ground_truth["word_count"] = } != {paragraph_data.word_count = }' - assert ground_truth["len_text"] == len( - paragraph_data.text - ), f'{ground_truth["len_text"] = } != {len(paragraph_data.text) = }' - assert ( - ground_truth["cut_type"] == paragraph_data.cut_type - ), f'{ground_truth["cut_type"] = } != {paragraph_data.cut_type = }' + assert ground_truth["word_count"] == paragraph_data.word_count, ( + f'{ground_truth["word_count"] = } != {paragraph_data.word_count = }' + ) + assert ground_truth["len_text"] == len(paragraph_data.text), ( + f'{ground_truth["len_text"] = } != {len(paragraph_data.text) = }' + ) + assert ground_truth["cut_type"] == paragraph_data.cut_type, ( + f'{ground_truth["cut_type"] = } != {paragraph_data.cut_type = }' + ) diff --git a/cognee/tests/integration/documents/ImageDocument_test.py b/cognee/tests/integration/documents/ImageDocument_test.py index c0877ae99..b8d585419 100644 --- a/cognee/tests/integration/documents/ImageDocument_test.py +++ b/cognee/tests/integration/documents/ImageDocument_test.py @@ -25,12 +25,12 @@ def test_ImageDocument(): for ground_truth, paragraph_data in zip( GROUND_TRUTH, document.read(chunk_size=64, chunker="text_chunker") ): - assert ( - ground_truth["word_count"] == paragraph_data.word_count - ), f'{ground_truth["word_count"] = } != {paragraph_data.word_count = }' - assert ground_truth["len_text"] == len( - paragraph_data.text - ), f'{ground_truth["len_text"] = } != {len(paragraph_data.text) = }' - assert ( - ground_truth["cut_type"] == paragraph_data.cut_type - ), f'{ground_truth["cut_type"] = } != {paragraph_data.cut_type = }' + assert ground_truth["word_count"] == paragraph_data.word_count, ( + f'{ground_truth["word_count"] = } != {paragraph_data.word_count = }' + ) + assert ground_truth["len_text"] == len(paragraph_data.text), ( + f'{ground_truth["len_text"] = } != {len(paragraph_data.text) = }' + ) + assert ground_truth["cut_type"] == paragraph_data.cut_type, ( + f'{ground_truth["cut_type"] = } != {paragraph_data.cut_type = }' + ) diff --git a/cognee/tests/integration/documents/PdfDocument_test.py b/cognee/tests/integration/documents/PdfDocument_test.py index 8f28815d3..fc4307846 100644 --- a/cognee/tests/integration/documents/PdfDocument_test.py +++ b/cognee/tests/integration/documents/PdfDocument_test.py @@ -27,12 +27,12 @@ def test_PdfDocument(): for ground_truth, paragraph_data in zip( GROUND_TRUTH, document.read(chunk_size=1024, chunker="text_chunker") ): - assert ( - ground_truth["word_count"] == paragraph_data.word_count - ), f'{ground_truth["word_count"] = } != {paragraph_data.word_count = }' - assert ground_truth["len_text"] == len( - paragraph_data.text - ), f'{ground_truth["len_text"] = } != {len(paragraph_data.text) = }' - assert ( - ground_truth["cut_type"] == paragraph_data.cut_type - ), f'{ground_truth["cut_type"] = } != {paragraph_data.cut_type = }' + assert ground_truth["word_count"] == paragraph_data.word_count, ( + f'{ground_truth["word_count"] = } != {paragraph_data.word_count = }' + ) + assert ground_truth["len_text"] == len(paragraph_data.text), ( + f'{ground_truth["len_text"] = } != {len(paragraph_data.text) = }' + ) + assert ground_truth["cut_type"] == paragraph_data.cut_type, ( + f'{ground_truth["cut_type"] = } != {paragraph_data.cut_type = }' + ) diff --git a/cognee/tests/integration/documents/TextDocument_test.py b/cognee/tests/integration/documents/TextDocument_test.py index 1e143d563..6daec62b7 100644 --- a/cognee/tests/integration/documents/TextDocument_test.py +++ b/cognee/tests/integration/documents/TextDocument_test.py @@ -39,12 +39,12 @@ def test_TextDocument(input_file, chunk_size): for ground_truth, paragraph_data in zip( GROUND_TRUTH[input_file], document.read(chunk_size=chunk_size, chunker="text_chunker") ): - assert ( - ground_truth["word_count"] == paragraph_data.word_count - ), f'{ground_truth["word_count"] = } != {paragraph_data.word_count = }' - assert ground_truth["len_text"] == len( - paragraph_data.text - ), f'{ground_truth["len_text"] = } != {len(paragraph_data.text) = }' - assert ( - ground_truth["cut_type"] == paragraph_data.cut_type - ), f'{ground_truth["cut_type"] = } != {paragraph_data.cut_type = }' + assert ground_truth["word_count"] == paragraph_data.word_count, ( + f'{ground_truth["word_count"] = } != {paragraph_data.word_count = }' + ) + assert ground_truth["len_text"] == len(paragraph_data.text), ( + f'{ground_truth["len_text"] = } != {len(paragraph_data.text) = }' + ) + assert ground_truth["cut_type"] == paragraph_data.cut_type, ( + f'{ground_truth["cut_type"] = } != {paragraph_data.cut_type = }' + ) diff --git a/cognee/tests/integration/documents/UnstructuredDocument_test.py b/cognee/tests/integration/documents/UnstructuredDocument_test.py index 03b8deb49..773dc2293 100644 --- a/cognee/tests/integration/documents/UnstructuredDocument_test.py +++ b/cognee/tests/integration/documents/UnstructuredDocument_test.py @@ -68,35 +68,35 @@ def test_UnstructuredDocument(): ) # Test PPTX - for paragraph_data in pptx_document.read(chunk_size=1024): + for paragraph_data in pptx_document.read(chunk_size=1024, chunker="text_chunker"): assert 19 == paragraph_data.word_count, f" 19 != {paragraph_data.word_count = }" assert 104 == len(paragraph_data.text), f" 104 != {len(paragraph_data.text) = }" - assert ( - "sentence_cut" == paragraph_data.cut_type - ), f" sentence_cut != {paragraph_data.cut_type = }" + assert "sentence_cut" == paragraph_data.cut_type, ( + f" sentence_cut != {paragraph_data.cut_type = }" + ) # Test DOCX - for paragraph_data in docx_document.read(chunk_size=1024): + for paragraph_data in docx_document.read(chunk_size=1024, chunker="text_chunker"): assert 16 == paragraph_data.word_count, f" 16 != {paragraph_data.word_count = }" assert 145 == len(paragraph_data.text), f" 145 != {len(paragraph_data.text) = }" - assert ( - "sentence_end" == paragraph_data.cut_type - ), f" sentence_end != {paragraph_data.cut_type = }" + assert "sentence_end" == paragraph_data.cut_type, ( + f" sentence_end != {paragraph_data.cut_type = }" + ) # TEST CSV - for paragraph_data in csv_document.read(chunk_size=1024): + for paragraph_data in csv_document.read(chunk_size=1024, chunker="text_chunker"): assert 15 == paragraph_data.word_count, f" 15 != {paragraph_data.word_count = }" - assert ( - "A A A A A A A A A,A A A A A A,A A" == paragraph_data.text - ), f"Read text doesn't match expected text: {paragraph_data.text}" - assert ( - "sentence_cut" == paragraph_data.cut_type - ), f" sentence_cut != {paragraph_data.cut_type = }" + assert "A A A A A A A A A,A A A A A A,A A" == paragraph_data.text, ( + f"Read text doesn't match expected text: {paragraph_data.text}" + ) + assert "sentence_cut" == paragraph_data.cut_type, ( + f" sentence_cut != {paragraph_data.cut_type = }" + ) # Test XLSX - for paragraph_data in xlsx_document.read(chunk_size=1024): + for paragraph_data in xlsx_document.read(chunk_size=1024, chunker="text_chunker"): assert 36 == paragraph_data.word_count, f" 36 != {paragraph_data.word_count = }" assert 171 == len(paragraph_data.text), f" 171 != {len(paragraph_data.text) = }" - assert ( - "sentence_cut" == paragraph_data.cut_type - ), f" sentence_cut != {paragraph_data.cut_type = }" + assert "sentence_cut" == paragraph_data.cut_type, ( + f" sentence_cut != {paragraph_data.cut_type = }" + ) diff --git a/cognee/tests/test_deduplication.py b/cognee/tests/test_deduplication.py index 9c2df032d..89c866f12 100644 --- a/cognee/tests/test_deduplication.py +++ b/cognee/tests/test_deduplication.py @@ -30,9 +30,9 @@ async def test_deduplication(): result = await relational_engine.get_all_data_from_table("data") assert len(result) == 1, "More than one data entity was found." - assert ( - result[0]["name"] == "Natural_language_processing_copy" - ), "Result name does not match expected value." + assert result[0]["name"] == "Natural_language_processing_copy", ( + "Result name does not match expected value." + ) result = await relational_engine.get_all_data_from_table("datasets") assert len(result) == 2, "Unexpected number of datasets found." @@ -61,9 +61,9 @@ async def test_deduplication(): result = await relational_engine.get_all_data_from_table("data") assert len(result) == 1, "More than one data entity was found." - assert ( - hashlib.md5(text.encode("utf-8")).hexdigest() in result[0]["name"] - ), "Content hash is not a part of file name." + assert hashlib.md5(text.encode("utf-8")).hexdigest() in result[0]["name"], ( + "Content hash is not a part of file name." + ) await cognee.prune.prune_data() await cognee.prune.prune_system(metadata=True) diff --git a/cognee/tests/test_falkordb.py b/cognee/tests/test_falkordb.py index 07ece9eb2..af0e87916 100755 --- a/cognee/tests/test_falkordb.py +++ b/cognee/tests/test_falkordb.py @@ -85,9 +85,9 @@ async def main(): from cognee.infrastructure.databases.relational import get_relational_engine - assert not os.path.exists( - get_relational_engine().db_path - ), "SQLite relational database is not empty" + assert not os.path.exists(get_relational_engine().db_path), ( + "SQLite relational database is not empty" + ) from cognee.infrastructure.databases.graph import get_graph_config diff --git a/cognee/tests/test_library.py b/cognee/tests/test_library.py index 8352b4161..192b67506 100755 --- a/cognee/tests/test_library.py +++ b/cognee/tests/test_library.py @@ -82,9 +82,9 @@ async def main(): from cognee.infrastructure.databases.relational import get_relational_engine - assert not os.path.exists( - get_relational_engine().db_path - ), "SQLite relational database is not empty" + assert not os.path.exists(get_relational_engine().db_path), ( + "SQLite relational database is not empty" + ) from cognee.infrastructure.databases.graph import get_graph_config diff --git a/cognee/tests/test_pgvector.py b/cognee/tests/test_pgvector.py index c241177f0..73b6be974 100644 --- a/cognee/tests/test_pgvector.py +++ b/cognee/tests/test_pgvector.py @@ -24,28 +24,28 @@ async def test_local_file_deletion(data_text, file_location): data_hash = hashlib.md5(encoded_text).hexdigest() # Get data entry from database based on hash contents data = (await session.scalars(select(Data).where(Data.content_hash == data_hash))).one() - assert os.path.isfile( - data.raw_data_location - ), f"Data location doesn't exist: {data.raw_data_location}" + assert os.path.isfile(data.raw_data_location), ( + f"Data location doesn't exist: {data.raw_data_location}" + ) # Test deletion of data along with local files created by cognee await engine.delete_data_entity(data.id) - assert not os.path.exists( - data.raw_data_location - ), f"Data location still exists after deletion: {data.raw_data_location}" + assert not os.path.exists(data.raw_data_location), ( + f"Data location still exists after deletion: {data.raw_data_location}" + ) async with engine.get_async_session() as session: # Get data entry from database based on file path data = ( await session.scalars(select(Data).where(Data.raw_data_location == file_location)) ).one() - assert os.path.isfile( - data.raw_data_location - ), f"Data location doesn't exist: {data.raw_data_location}" + assert os.path.isfile(data.raw_data_location), ( + f"Data location doesn't exist: {data.raw_data_location}" + ) # Test local files not created by cognee won't get deleted await engine.delete_data_entity(data.id) - assert os.path.exists( - data.raw_data_location - ), f"Data location doesn't exists: {data.raw_data_location}" + assert os.path.exists(data.raw_data_location), ( + f"Data location doesn't exists: {data.raw_data_location}" + ) async def test_getting_of_documents(dataset_name_1): @@ -54,16 +54,16 @@ async def test_getting_of_documents(dataset_name_1): user = await get_default_user() document_ids = await get_document_ids_for_user(user.id, [dataset_name_1]) - assert ( - len(document_ids) == 1 - ), f"Number of expected documents doesn't match {len(document_ids)} != 1" + assert len(document_ids) == 1, ( + f"Number of expected documents doesn't match {len(document_ids)} != 1" + ) # Test getting of documents for search when no dataset is provided user = await get_default_user() document_ids = await get_document_ids_for_user(user.id) - assert ( - len(document_ids) == 2 - ), f"Number of expected documents doesn't match {len(document_ids)} != 2" + assert len(document_ids) == 2, ( + f"Number of expected documents doesn't match {len(document_ids)} != 2" + ) async def main(): diff --git a/cognee/tests/unit/processing/chunks/chunk_by_paragraph_2_test.py b/cognee/tests/unit/processing/chunks/chunk_by_paragraph_2_test.py index 728b5cda4..d8680a604 100644 --- a/cognee/tests/unit/processing/chunks/chunk_by_paragraph_2_test.py +++ b/cognee/tests/unit/processing/chunks/chunk_by_paragraph_2_test.py @@ -17,9 +17,9 @@ batch_paragraphs_vals = [True, False] def test_chunk_by_paragraph_isomorphism(input_text, paragraph_length, batch_paragraphs): chunks = chunk_by_paragraph(input_text, paragraph_length, batch_paragraphs) reconstructed_text = "".join([chunk["text"] for chunk in chunks]) - assert ( - reconstructed_text == input_text - ), f"texts are not identical: {len(input_text) = }, {len(reconstructed_text) = }" + assert reconstructed_text == input_text, ( + f"texts are not identical: {len(input_text) = }, {len(reconstructed_text) = }" + ) @pytest.mark.parametrize( @@ -27,14 +27,18 @@ def test_chunk_by_paragraph_isomorphism(input_text, paragraph_length, batch_para list(product(list(INPUT_TEXTS.values()), paragraph_lengths, batch_paragraphs_vals)), ) def test_paragraph_chunk_length(input_text, paragraph_length, batch_paragraphs): - chunks = list(chunk_by_paragraph(input_text, paragraph_length, batch_paragraphs)) + chunks = list( + chunk_by_paragraph( + data=input_text, paragraph_length=paragraph_length, batch_paragraphs=batch_paragraphs + ) + ) chunk_lengths = np.array([len(list(chunk_by_word(chunk["text"]))) for chunk in chunks]) larger_chunks = chunk_lengths[chunk_lengths > paragraph_length] - assert np.all( - chunk_lengths <= paragraph_length - ), f"{paragraph_length = }: {larger_chunks} are too large" + assert np.all(chunk_lengths <= paragraph_length), ( + f"{paragraph_length = }: {larger_chunks} are too large" + ) @pytest.mark.parametrize( @@ -42,8 +46,10 @@ def test_paragraph_chunk_length(input_text, paragraph_length, batch_paragraphs): list(product(list(INPUT_TEXTS.values()), paragraph_lengths, batch_paragraphs_vals)), ) def test_chunk_by_paragraph_chunk_numbering(input_text, paragraph_length, batch_paragraphs): - chunks = chunk_by_paragraph(input_text, paragraph_length, batch_paragraphs) + chunks = chunk_by_paragraph( + data=input_text, paragraph_length=paragraph_length, batch_paragraphs=batch_paragraphs + ) chunk_indices = np.array([chunk["chunk_index"] for chunk in chunks]) - assert np.all( - chunk_indices == np.arange(len(chunk_indices)) - ), f"{chunk_indices = } are not monotonically increasing" + assert np.all(chunk_indices == np.arange(len(chunk_indices))), ( + f"{chunk_indices = } are not monotonically increasing" + ) diff --git a/cognee/tests/unit/processing/chunks/chunk_by_paragraph_test.py b/cognee/tests/unit/processing/chunks/chunk_by_paragraph_test.py index 3ddc6f4f5..e420b2e9f 100644 --- a/cognee/tests/unit/processing/chunks/chunk_by_paragraph_test.py +++ b/cognee/tests/unit/processing/chunks/chunk_by_paragraph_test.py @@ -49,16 +49,18 @@ Third paragraph is cut and is missing the dot at the end""", def run_chunking_test(test_text, expected_chunks): chunks = [] - for chunk_data in chunk_by_paragraph(test_text, 12, batch_paragraphs=False): + for chunk_data in chunk_by_paragraph( + data=test_text, paragraph_length=12, batch_paragraphs=False + ): chunks.append(chunk_data) assert len(chunks) == 3 for expected_chunks_item, chunk in zip(expected_chunks, chunks): for key in ["text", "word_count", "cut_type"]: - assert ( - chunk[key] == expected_chunks_item[key] - ), f"{key = }: {chunk[key] = } != {expected_chunks_item[key] = }" + assert chunk[key] == expected_chunks_item[key], ( + f"{key = }: {chunk[key] = } != {expected_chunks_item[key] = }" + ) def test_chunking_whole_text(): diff --git a/cognee/tests/unit/processing/chunks/chunk_by_sentence_test.py b/cognee/tests/unit/processing/chunks/chunk_by_sentence_test.py index d1c75d7ed..efa053077 100644 --- a/cognee/tests/unit/processing/chunks/chunk_by_sentence_test.py +++ b/cognee/tests/unit/processing/chunks/chunk_by_sentence_test.py @@ -16,9 +16,9 @@ maximum_length_vals = [None, 8, 64] def test_chunk_by_sentence_isomorphism(input_text, maximum_length): chunks = chunk_by_sentence(input_text, maximum_length) reconstructed_text = "".join([chunk[1] for chunk in chunks]) - assert ( - reconstructed_text == input_text - ), f"texts are not identical: {len(input_text) = }, {len(reconstructed_text) = }" + assert reconstructed_text == input_text, ( + f"texts are not identical: {len(input_text) = }, {len(reconstructed_text) = }" + ) @pytest.mark.parametrize( @@ -36,6 +36,6 @@ def test_paragraph_chunk_length(input_text, maximum_length): chunk_lengths = np.array([len(list(chunk_by_word(chunk[1]))) for chunk in chunks]) larger_chunks = chunk_lengths[chunk_lengths > maximum_length] - assert np.all( - chunk_lengths <= maximum_length - ), f"{maximum_length = }: {larger_chunks} are too large" + assert np.all(chunk_lengths <= maximum_length), ( + f"{maximum_length = }: {larger_chunks} are too large" + ) diff --git a/cognee/tests/unit/processing/chunks/chunk_by_word_test.py b/cognee/tests/unit/processing/chunks/chunk_by_word_test.py index fb26638cb..d79fcdbc8 100644 --- a/cognee/tests/unit/processing/chunks/chunk_by_word_test.py +++ b/cognee/tests/unit/processing/chunks/chunk_by_word_test.py @@ -17,9 +17,9 @@ from cognee.tests.unit.processing.chunks.test_input import INPUT_TEXTS def test_chunk_by_word_isomorphism(input_text): chunks = chunk_by_word(input_text) reconstructed_text = "".join([chunk[0] for chunk in chunks]) - assert ( - reconstructed_text == input_text - ), f"texts are not identical: {len(input_text) = }, {len(reconstructed_text) = }" + assert reconstructed_text == input_text, ( + f"texts are not identical: {len(input_text) = }, {len(reconstructed_text) = }" + ) @pytest.mark.parametrize( diff --git a/evals/eval_swe_bench.py b/evals/eval_swe_bench.py index 789c95ab4..a8b4c8a1d 100644 --- a/evals/eval_swe_bench.py +++ b/evals/eval_swe_bench.py @@ -11,8 +11,9 @@ from cognee.api.v1.cognify.code_graph_pipeline import run_code_graph_pipeline from cognee.api.v1.search import SearchType from cognee.infrastructure.llm.get_llm_client import get_llm_client from cognee.infrastructure.llm.prompts import read_query_prompt -from cognee.modules.retrieval.brute_force_triplet_search import brute_force_triplet_search -from cognee.shared.utils import render_graph +from cognee.modules.retrieval.description_to_codepart_search import ( + code_description_to_code_part_search, +) from evals.eval_utils import download_github_repo, retrieved_edges_to_string @@ -32,25 +33,18 @@ def check_install_package(package_name): return False -async def generate_patch_with_cognee(instance, llm_client, search_type=SearchType.CHUNKS): +async def generate_patch_with_cognee(instance): repo_path = download_github_repo(instance, "../RAW_GIT_REPOS") - pipeline = await run_code_graph_pipeline(repo_path) - - async for result in pipeline: - print(result) - - print("Here we have the repo under the repo_path") - - await render_graph(None, include_labels=True, include_nodes=True) - + include_docs = True problem_statement = instance["problem_statement"] instructions = read_query_prompt("patch_gen_kg_instructions.txt") - retrieved_edges = await brute_force_triplet_search( - problem_statement, top_k=3, collections=["data_point_source_code", "data_point_text"] - ) + async for result in run_code_graph_pipeline(repo_path, include_docs=include_docs): + print(result) - retrieved_edges_str = retrieved_edges_to_string(retrieved_edges) + retrieved_codeparts = await code_description_to_code_part_search( + problem_statement, include_docs=include_docs + ) prompt = "\n".join( [ @@ -58,8 +52,8 @@ async def generate_patch_with_cognee(instance, llm_client, search_type=SearchTyp "", PATCH_EXAMPLE, "", - "These are the retrieved edges:", - retrieved_edges_str, + "This is the additional context to solve the problem (description from documentation together with codeparts):", + retrieved_codeparts, ] ) @@ -85,8 +79,6 @@ async def generate_patch_without_cognee(instance, llm_client): async def get_preds(dataset, with_cognee=True): - llm_client = get_llm_client() - if with_cognee: model_name = "with_cognee" pred_func = generate_patch_with_cognee @@ -94,17 +86,18 @@ async def get_preds(dataset, with_cognee=True): model_name = "without_cognee" pred_func = generate_patch_without_cognee - futures = [(instance["instance_id"], pred_func(instance, llm_client)) for instance in dataset] - model_patches = await asyncio.gather(*[x[1] for x in futures]) + preds = [] - preds = [ - { - "instance_id": instance_id, - "model_patch": model_patch, - "model_name_or_path": model_name, - } - for (instance_id, _), model_patch in zip(futures, model_patches) - ] + for instance in dataset: + instance_id = instance["instance_id"] + model_patch = await pred_func(instance) # Sequentially await the async function + preds.append( + { + "instance_id": instance_id, + "model_patch": model_patch, + "model_name_or_path": model_name, + } + ) return preds @@ -134,6 +127,7 @@ async def main(): with open(predictions_path, "w") as file: json.dump(preds, file) + """ This part is for the evaluation subprocess.run( [ "python", @@ -151,6 +145,7 @@ async def main(): "test_run", ] ) + """ if __name__ == "__main__": diff --git a/examples/python/code_graph_example.py b/examples/python/code_graph_example.py index c90a0b606..59229344f 100644 --- a/examples/python/code_graph_example.py +++ b/examples/python/code_graph_example.py @@ -1,7 +1,9 @@ import argparse import asyncio +import logging from cognee.api.v1.cognify.code_graph_pipeline import run_code_graph_pipeline +from cognee.shared.utils import setup_logging async def main(repo_path, include_docs): @@ -9,7 +11,7 @@ async def main(repo_path, include_docs): print(result) -if __name__ == "__main__": +def parse_args(): parser = argparse.ArgumentParser() parser.add_argument("--repo_path", type=str, required=True, help="Path to the repository") parser.add_argument( @@ -18,5 +20,28 @@ if __name__ == "__main__": default=True, help="Whether or not to process non-code files", ) - args = parser.parse_args() - asyncio.run(main(args.repo_path, args.include_docs)) + parser.add_argument( + "--time", + type=lambda x: x.lower() in ("true", "1"), + default=True, + help="Whether or not to time the pipeline run", + ) + return parser.parse_args() + + +if __name__ == "__main__": + setup_logging(logging.ERROR) + + args = parse_args() + + if args.time: + import time + + start_time = time.time() + asyncio.run(main(args.repo_path, args.include_docs)) + end_time = time.time() + print("\n" + "=" * 50) + print(f"Pipeline Execution Time: {end_time - start_time:.2f} seconds") + print("=" * 50 + "\n") + else: + asyncio.run(main(args.repo_path, args.include_docs)) diff --git a/examples/python/dynamic_steps_example.py b/examples/python/dynamic_steps_example.py index 11596a5e2..4422dd39d 100644 --- a/examples/python/dynamic_steps_example.py +++ b/examples/python/dynamic_steps_example.py @@ -192,7 +192,7 @@ async def main(enable_steps): if __name__ == "__main__": - setup_logging(logging.INFO) + setup_logging(logging.ERROR) rebuild_kg = True retrieve = True diff --git a/notebooks/llama_index_cognee_integration.ipynb b/notebooks/llama_index_cognee_integration.ipynb new file mode 100644 index 000000000..772c0a8c7 --- /dev/null +++ b/notebooks/llama_index_cognee_integration.ipynb @@ -0,0 +1,285 @@ +{ + "cells": [ + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "## LlamaIndex Cognee GraphRAG Integration\n", + "\n", + "Connecting external knowledge to the LLM efficiently and retrieving it is a key challenge faced by developers. For developers and data scientists, integrating structured and unstructured data into AI workflows often involves multiple tools, complex pipelines, and time-consuming processes.\n", + "\n", + "Enter **cognee,** a powerful framework for knowledge and memory management, and LlamaIndex, a versatile data integration library. Together, they enable us to transform retrieval-augmented generation (RAG) pipelines, into GraphRAG pipelines, streamlining the path from raw data to actionable insights.\n", + "\n", + "In this post, we’ll explore a demo that leverages cognee and LlamaIndex to create a knowledge graph from a LlamaIndex document, process it into a meaningful structure, and extract useful insights. By the end, you’ll see how these tools can give you new insights into your data by connecting various data sources in one big semantic layer you can analyze.\n", + "\n", + "## RAG - Recap\n", + "\n", + "RAG enhances LLMs by integrating external knowledge sources during inference. It does so by turning the data into a vector representation and storing it in a vector store.\n", + "\n", + "### Key Benefits of RAG:\n", + "\n", + "1. Connecting domain specific data to LLMs\n", + "2. Cost savings\n", + "3. Higher accuracy than base LLM\n", + "\n", + "However, building a RAG system presents challenges: handling diverse data formats, data updates, creating a robust metadata layer, and mediocre accuracy\n", + "\n", + "## Introducing cognee and LlamaIndex more\n", + "\n", + "cognee simplifies knowledge and memory management for LLMs, while LlamaIndex facilitates connecting LLMs to structured data sources and enabling agentic use-cases\n", + "\n", + "cognee is inspired by human mind and higer cognitive functions. It mimics ways we construct our mental map of the world and build a semantic understanding of various objects, terms and issues in our everyday lives.\n", + "\n", + "cognee brings this approach to code by allowing developers to create semantic layers that would allow users to store their ontologies which are **a formalised depiction of knowledge** in graphs.\n", + "\n", + "This lets you use the knowledge you have about a system connect it to LLMs in a modular way, with best data engineering practices, wide choice of vector and graph stores and various LLMs you can use.\n", + "\n", + "Together, they:\n", + "\n", + "- Turn unstructured and semi-structured data into a graph/vector representation.\n", + "- Enable ontology generation for particular domains, making unique graphs for every vertical\n", + "- Provide a deterministic layer for LLM outputs, ensuring consistency and reliability.\n", + "\n", + "## Step-by-Step Demo: Building a RAG System with Cognee and LlamaIndex\n", + "\n", + "### 1. Setting Up the Environment\n", + "\n", + "Start by importing the required libraries and defining the environment:" + ], + "id": "d0d7a82d729bbef6" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "!pip install llama-index-graph-rag-cognee==0.1.1", + "id": "598b52e384086512" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": [ + "import os\n", + "import asyncio\n", + "from llama_index.core import Document\n", + "from llama_index.graph_rag.cognee import CogneeGraphRAG\n", + "\n", + "if \"OPENAI_API_KEY\" not in os.environ:\n", + " os.environ[\"OPENAI_API_KEY\"] = \"\"" + ], + "id": "892a1b1198ec662f" + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "Ensure you’ve set up your API keys and installed necessary dependencies.\n", + "\n", + "### 2. Preparing the Dataset\n", + "\n", + "We’ll use a brief profile of an individual as our sample dataset:" + ], + "id": "a1f16f5ca5249ebb" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": [ + "documents = [\n", + " Document(\n", + " text=\"Jessica Miller, Experienced Sales Manager with a strong track record in driving sales growth and building high-performing teams.\"\n", + " ),\n", + " Document(\n", + " text=\"David Thompson, Creative Graphic Designer with over 8 years of experience in visual design and branding.\"\n", + " ),\n", + " ]" + ], + "id": "198022c34636a3a0" + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "### 3. Initializing CogneeGraphRAG\n", + "\n", + "Instantiate the Cognee framework with configurations for LLM, graph, and database providers:" + ], + "id": "781ae78e52ff49a" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": [ + "cogneeRAG = CogneeGraphRAG(\n", + " llm_api_key=os.environ[\"OPENAI_API_KEY\"],\n", + " llm_provider=\"openai\",\n", + " llm_model=\"gpt-4o-mini\",\n", + " graph_db_provider=\"networkx\",\n", + " vector_db_provider=\"lancedb\",\n", + " relational_db_provider=\"sqlite\",\n", + " relational_db_name=\"cognee_db\",\n", + ")" + ], + "id": "17e466821ab88d50" + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "### 4. Adding Data to Cognee\n", + "\n", + "Load the dataset into the cognee framework:" + ], + "id": "2a55d5be9de0ce81" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "await cogneeRAG.add(documents, \"test\")", + "id": "238b716429aba541" + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "This step prepares the data for graph-based processing.\n", + "\n", + "### 5. Processing Data into a Knowledge Graph\n", + "\n", + "Transform the data into a structured knowledge graph:" + ], + "id": "23e5316aa7e5dbc7" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "await cogneeRAG.process_data(\"test\")", + "id": "c3b3063d428b07a2" + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "The graph now contains nodes and relationships derived from the dataset, creating a powerful structure for exploration.\n", + "\n", + "### 6. Performing Searches\n", + "\n", + "### Answer prompt based on knowledge graph approach:" + ], + "id": "e32327de54e98dc8" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": [ + "search_results = await cogneeRAG.search(\"Tell me who are the people mentioned?\")\n", + "\n", + "print(\"\\n\\nAnswer based on knowledge graph:\\n\")\n", + "for result in search_results:\n", + " print(f\"{result}\\n\")" + ], + "id": "fddbf5916d1e50e5" + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "### Answer prompt based on RAG approach:", + "id": "9246aed7f69ceb7e" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": [ + "search_results = await cogneeRAG.rag_search(\"Tell me who are the people mentioned?\")\n", + "\n", + "print(\"\\n\\nAnswer based on RAG:\\n\")\n", + "for result in search_results:\n", + " print(f\"{result}\\n\")" + ], + "id": "fe77c7a7c57fe4e4" + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": "In conclusion, the results demonstrate a significant advantage of the knowledge graph-based approach (Graphrag) over the RAG approach. Graphrag successfully identified all the mentioned individuals across multiple documents, showcasing its ability to aggregate and infer information from a global context. In contrast, the RAG approach was limited to identifying individuals within a single document due to its chunking-based processing constraints. This highlights Graphrag's superior capability in comprehensively resolving queries that span across a broader corpus of interconnected data.", + "id": "89cc99628392eb99" + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "### 7. Finding Related Nodes\n", + "\n", + "Explore relationships in the knowledge graph:" + ], + "id": "44c9b67c09763610" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": [ + "related_nodes = await cogneeRAG.get_related_nodes(\"person\")\n", + "\n", + "print(\"\\n\\nRelated nodes are:\\n\")\n", + "for node in related_nodes:\n", + " print(f\"{node}\\n\")" + ], + "id": "efbc1511586f46fe" + }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "## Why Choose Cognee and LlamaIndex?\n", + "\n", + "### 1. Agentic Framework and Memory tied together\n", + "\n", + "Your agents can now get long-term, short-term memory and memory specific to their domains\n", + "\n", + "### 2. Enhanced Querying and Insights\n", + "\n", + "Your memory can now automatically optimize itself and allow to respond to questions better\n", + "\n", + "### 3. Simplified Deployment\n", + "\n", + "You can use the standard tools out of the box and get things done without much effort\n", + "\n", + "## Visualizing the Knowledge Graph\n", + "\n", + "Imagine a graph structure where each node represents a document or entity, and edges indicate relationships.\n", + "\n", + "Here’s the visualized knowledge graph from the simple example above:\n", + "\n", + "![example.png](data:image/jpeg;base64,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O1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UtHWigQn0o70daO1Awx6UuM0daQgHrTQH/1f7oaT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAKXpRQIKT2opc8UDExQBS9KKBBSe1FLnigYmKAD2pelKMnpTQH//W/ugzRSDqaWgbCiiigQZopB1NLQNhRRRQIM0Ug6mloGwooooEGaKQdTS0DYUUUUCDNFIOppaBsKKKKBBmikHU0tA2FFFFAgzRSDqaWgbCiiigQZopB1NLQNhRRRQIM0Ug6mloGwooooEGaKQdTS0DYUUUUCDNFIOppaBsKKKKBBmikHU0tA2FFFFAgzRSDqaWgbCiiigQZopB1NLQNhRRRQIM0Ug6mloGwooooEGaKQdTS0DYUUUUCDNFIOppaBsKKKKBBmikHU0tA2FFFFAgzRSDqaWgbCiiigQZopB1NLQNhRRRQIM0Ug6mloGwooooEGaKQdTS0DYUUUUCDNFIOppaBsKKKKBBmikHU0tA2FFFFAgzRSDqaWgbCiiigQZopB1NLQNhRRRQIM0Ug6mloGwooooEGaKQdTS0DYUUUUCDNFIOppaBsKKKKBBmikHU0tA2FFFFAgzRSDqaWgbCiiigQZopB1NLQNhRRRQIM0Ug6mloGwooooEGaKQdTS0DYUUUUCDNFIOppaBsKKKKBBmikHU0tA2FFFFAgzRSDqaWgbCiiigQZopB1NLQNhS8UlFAj//Z)\n", + "\n", + "\n", + "## Conclusion\n", + "\n", + "Try running it yourself\n", + "\n", + "Join cognee community" + ], + "id": "d0f82c2c6eb7793" + } + ], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/poetry.lock b/poetry.lock index fe94fd245..ddcaf6618 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. [[package]] name = "aiofiles" @@ -1060,6 +1060,7 @@ files = [ {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb"}, {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b"}, {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543"}, + {file = "cryptography-44.0.0-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:60eb32934076fa07e4316b7b2742fa52cbb190b42c2df2863dbc4230a0a9b385"}, {file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e"}, {file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e"}, {file = "cryptography-44.0.0-cp37-abi3-win32.whl", hash = "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053"}, @@ -1070,6 +1071,7 @@ files = [ {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289"}, {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7"}, {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c"}, + {file = "cryptography-44.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9abcc2e083cbe8dde89124a47e5e53ec38751f0d7dfd36801008f316a127d7ba"}, {file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64"}, {file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285"}, {file = "cryptography-44.0.0-cp39-abi3-win32.whl", hash = "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417"}, @@ -2917,8 +2919,6 @@ optional = false python-versions = "*" files = [ {file = "jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c"}, - {file = "jsonpath_ng-1.7.0-py2-none-any.whl", hash = "sha256:898c93fc173f0c336784a3fa63d7434297544b7198124a68f9a3ef9597b0ae6e"}, - {file = "jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6"}, ] [package.dependencies] @@ -4988,8 +4988,8 @@ files = [ [package.dependencies] numpy = [ {version = ">=1.22.4", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2", markers = "python_version == \"3.11\""}, {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -5904,8 +5904,8 @@ astroid = ">=3.3.8,<=3.4.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, - {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, + {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, ] isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" mccabe = ">=0.6,<0.8" @@ -8762,7 +8762,6 @@ falkordb = ["falkordb"] filesystem = ["botocore"] groq = ["groq"] langchain = ["langchain_text_splitters", "langsmith"] -langfuse = ["langfuse"] llama-index = ["llama-index-core"] milvus = ["pymilvus"] neo4j = ["neo4j"] @@ -8775,4 +8774,4 @@ weaviate = ["weaviate-client"] [metadata] lock-version = "2.0" python-versions = ">=3.10.0,<3.13" -content-hash = "6c1a7d6284b7cd7ce47110149f9796fc8d91efe7bef496edd92a706f2319b3d5" +content-hash = "1ed3780936dd2a6f79fe11072f8d2cefec848fb27092b8bc523c7bbfd936b18e" diff --git a/pyproject.toml b/pyproject.toml index 8349074f6..5a0e83057 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "cognee" -version = "0.1.20" +version = "0.1.21" description = "Cognee - is a library for enriching LLM context with a semantic layer for better understanding and reasoning." authors = ["Vasilije Markovic", "Boris Arzentar"] readme = "README.md" @@ -95,7 +95,6 @@ deepeval = ["deepeval"] posthog = ["posthog"] falkordb = ["falkordb"] groq = ["groq"] -langfuse = ["langfuse"] milvus = ["pymilvus"] docs = ["unstructured"]