From 877e2386261e92e2b4c4f8f0619842d47a844a6d Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Tue, 19 Mar 2024 15:38:28 +0000 Subject: [PATCH 01/25] Add file for ML pipeline --- consultation_analyser/consultations/ml_pipeline.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 consultation_analyser/consultations/ml_pipeline.py diff --git a/consultation_analyser/consultations/ml_pipeline.py b/consultation_analyser/consultations/ml_pipeline.py new file mode 100644 index 00000000..e69de29b From 61f9560fffab586c068525dfd312d6477f149e39 Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Tue, 19 Mar 2024 15:50:41 +0000 Subject: [PATCH 02/25] Add ML packages --- poetry.lock | 2346 +++++++++++++++++++++++++++++++++++++++++++++++- pyproject.toml | 6 + 2 files changed, 2349 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index cbc9dcde..c0d827d3 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,147 @@ # This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +<<<<<<< HEAD +======= + +[[package]] +name = "aiohttp" +version = "3.9.3" +description = "Async http client/server framework (asyncio)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:939677b61f9d72a4fa2a042a5eee2a99a24001a67c13da113b2e30396567db54"}, + {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f5cd333fcf7590a18334c90f8c9147c837a6ec8a178e88d90a9b96ea03194cc"}, + {file = "aiohttp-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82e6aa28dd46374f72093eda8bcd142f7771ee1eb9d1e223ff0fa7177a96b4a5"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f56455b0c2c7cc3b0c584815264461d07b177f903a04481dfc33e08a89f0c26b"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bca77a198bb6e69795ef2f09a5f4c12758487f83f33d63acde5f0d4919815768"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e083c285857b78ee21a96ba1eb1b5339733c3563f72980728ca2b08b53826ca5"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab40e6251c3873d86ea9b30a1ac6d7478c09277b32e14745d0d3c6e76e3c7e29"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df822ee7feaaeffb99c1a9e5e608800bd8eda6e5f18f5cfb0dc7eeb2eaa6bbec"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:acef0899fea7492145d2bbaaaec7b345c87753168589cc7faf0afec9afe9b747"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cd73265a9e5ea618014802ab01babf1940cecb90c9762d8b9e7d2cc1e1969ec6"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a78ed8a53a1221393d9637c01870248a6f4ea5b214a59a92a36f18151739452c"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6b0e029353361f1746bac2e4cc19b32f972ec03f0f943b390c4ab3371840aabf"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7cf5c9458e1e90e3c390c2639f1017a0379a99a94fdfad3a1fd966a2874bba52"}, + {file = "aiohttp-3.9.3-cp310-cp310-win32.whl", hash = "sha256:3e59c23c52765951b69ec45ddbbc9403a8761ee6f57253250c6e1536cacc758b"}, + {file = "aiohttp-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4"}, + {file = "aiohttp-3.9.3-cp311-cp311-win32.whl", hash = "sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5"}, + {file = "aiohttp-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f"}, + {file = "aiohttp-3.9.3-cp312-cp312-win32.whl", hash = "sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38"}, + {file = "aiohttp-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0ed621426d961df79aa3b963ac7af0d40392956ffa9be022024cd16297b30c8c"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f46acd6a194287b7e41e87957bfe2ad1ad88318d447caf5b090012f2c5bb528"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f734e38fd8666f53da904c52a23ce517f1b07722118d750405af7e4123933511"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b40670ec7e2156d8e57f70aec34a7216407848dfe6c693ef131ddf6e76feb672"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99abf0bba688259a496f966211c49a514e65afa9b3073a1fcee08856e04425b"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:648056db9a9fa565d3fa851880f99f45e3f9a771dd3ff3bb0c048ea83fb28194"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8aacb477dc26797ee089721536a292a664846489c49d3ef9725f992449eda5a8"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:522a11c934ea660ff8953eda090dcd2154d367dec1ae3c540aff9f8a5c109ab4"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5bce0dc147ca85caa5d33debc4f4d65e8e8b5c97c7f9f660f215fa74fc49a321"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b4af9f25b49a7be47c0972139e59ec0e8285c371049df1a63b6ca81fdd216a2"}, + {file = "aiohttp-3.9.3-cp38-cp38-win32.whl", hash = "sha256:298abd678033b8571995650ccee753d9458dfa0377be4dba91e4491da3f2be63"}, + {file = "aiohttp-3.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:69361bfdca5468c0488d7017b9b1e5ce769d40b46a9f4a2eed26b78619e9396c"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0fa43c32d1643f518491d9d3a730f85f5bbaedcbd7fbcae27435bb8b7a061b29"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:835a55b7ca49468aaaac0b217092dfdff370e6c215c9224c52f30daaa735c1c1"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06a9b2c8837d9a94fae16c6223acc14b4dfdff216ab9b7202e07a9a09541168f"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abf151955990d23f84205286938796c55ff11bbfb4ccfada8c9c83ae6b3c89a3"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59c26c95975f26e662ca78fdf543d4eeaef70e533a672b4113dd888bd2423caa"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f95511dd5d0e05fd9728bac4096319f80615aaef4acbecb35a990afebe953b0e"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:595f105710293e76b9dc09f52e0dd896bd064a79346234b521f6b968ffdd8e58"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7c8b816c2b5af5c8a436df44ca08258fc1a13b449393a91484225fcb7545533"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f1088fa100bf46e7b398ffd9904f4808a0612e1d966b4aa43baa535d1b6341eb"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f59dfe57bb1ec82ac0698ebfcdb7bcd0e99c255bd637ff613760d5f33e7c81b3"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:361a1026c9dd4aba0109e4040e2aecf9884f5cfe1b1b1bd3d09419c205e2e53d"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:363afe77cfcbe3a36353d8ea133e904b108feea505aa4792dad6585a8192c55a"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e2c45c208c62e955e8256949eb225bd8b66a4c9b6865729a786f2aa79b72e9d"}, + {file = "aiohttp-3.9.3-cp39-cp39-win32.whl", hash = "sha256:f7217af2e14da0856e082e96ff637f14ae45c10a5714b63c77f26d8884cf1051"}, + {file = "aiohttp-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:27468897f628c627230dba07ec65dc8d0db566923c48f29e084ce382119802bc"}, + {file = "aiohttp-3.9.3.tar.gz", hash = "sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7"}, +] + +[package.dependencies] +aiosignal = ">=1.1.2" +attrs = ">=17.3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +yarl = ">=1.0,<2.0" + +[package.extras] +speedups = ["Brotli", "aiodns", "brotlicffi"] + +[[package]] +name = "aiosignal" +version = "1.3.1" +description = "aiosignal: a list of registered asynchronous callbacks" +optional = false +python-versions = ">=3.7" +files = [ + {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, + {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, +] + +[package.dependencies] +frozenlist = ">=1.1.0" + +[[package]] +name = "annotated-types" +version = "0.6.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, + {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, +] + +[[package]] +name = "anyio" +version = "4.3.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.8" +files = [ + {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, + {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, +] + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.23)"] +>>>>>>> e218519 (Add ML packages) [[package]] name = "annotated-types" @@ -59,6 +202,65 @@ chardet = ["chardet"] charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] +name = "attrs" +version = "23.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + +[[package]] +name = "bertopic" +version = "0.16.0" +description = "BERTopic performs topic Modeling with state-of-the-art transformer models." +optional = false +python-versions = ">=3.7" +files = [ + {file = "bertopic-0.16.0-py2.py3-none-any.whl", hash = "sha256:886b22c361473ef8901d5898ab34c7454e67f99143668d26ec2690cf7b3dc73c"}, + {file = "bertopic-0.16.0.tar.gz", hash = "sha256:7e352b3ea4b517331d5ca03c77abe5caab34decd968cb3a3c39092ec675ed9ba"}, +] + +[package.dependencies] +hdbscan = ">=0.8.29" +numpy = ">=1.20.0" +pandas = ">=1.1.5" +plotly = ">=4.7.0" +scikit-learn = ">=0.22.2.post1" +sentence-transformers = ">=0.4.1" +tqdm = ">=4.41.1" +umap-learn = ">=0.5.0" + +[package.extras] +dev = ["mkdocs (==1.1)", "mkdocs-material (==4.6.3)", "mkdocstrings (==0.8.0)", "pytest (>=5.4.3)", "pytest-cov (>=2.6.1)"] +docs = ["mkdocs (==1.1)", "mkdocs-material (==4.6.3)", "mkdocstrings (==0.8.0)"] +flair = ["flair (>=0.7)", "torch (>=1.4.0)", "transformers (>=3.5.1)"] +gensim = ["gensim (>=4.0.0)"] +spacy = ["spacy (>=3.0.1)"] +test = ["pytest (>=5.4.3)", "pytest-cov (>=2.6.1)"] +use = ["tensorflow", "tensorflow-hub", "tensorflow-text"] +vision = ["Pillow (>=9.2.0)", "accelerate (>=0.19.0)"] + +[[package]] +name = "certifi" +version = "2024.2.2" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, +] [[package]] name = "black" @@ -154,6 +356,7 @@ files = [ ] [[package]] +<<<<<<< HEAD name = "click" version = "8.1.7" description = "Composable command line interface toolkit" @@ -167,6 +370,106 @@ files = [ [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +======= +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +>>>>>>> f6ff15b (Add ML packages) [[package]] name = "colorama" version = "0.4.6" @@ -179,6 +482,7 @@ files = [ ] [[package]] +<<<<<<< HEAD name = "datamodel-code-generator" version = "0.25.5" description = "Datamodel Code Generator" @@ -205,6 +509,72 @@ debug = ["PySnooper (>=0.4.1,<2.0.0)"] graphql = ["graphql-core (>=3.2.3,<4.0.0)"] http = ["httpx"] validation = ["openapi-spec-validator (>=0.2.8,<0.7.0)", "prance (>=0.18.2)"] +======= +name = "cython" +version = "0.29.37" +description = "The Cython compiler for writing C extensions for the Python language." +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "Cython-0.29.37-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2d621fe4cb50007446742134a890500b34e3f50abaf7993baaca02634af7e15"}, + {file = "Cython-0.29.37-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d94caf90ae9cb56116ca6d54cdcbccd3c4df6b0cb7233922b2233ee7fe81d05b"}, + {file = "Cython-0.29.37-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:852cd4378cbc9ade02f53709107ff9fdad55019a3a636e8a27663ba6cfce10b6"}, + {file = "Cython-0.29.37-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:bbce388431a2608a81c8ab13cb14c50611473843ca766031b8b24bb1723faf79"}, + {file = "Cython-0.29.37-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4658499a41255431f6bbdca7e634e9c8d3a4c190bf24b4aa1646dac751d3da4d"}, + {file = "Cython-0.29.37-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:12192ab269e7185720f2d2f8894587bf1da4276db1b9b869e4622a093f18cae6"}, + {file = "Cython-0.29.37-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:9450e0766ab65947f8a2a36f9e59079fc879c3807ec936c61725a48c97741a52"}, + {file = "Cython-0.29.37-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:177481b0a7e003e5c49e2bf0dda1d6fe610c239f17642a5da9f18c2ad0c5f6b6"}, + {file = "Cython-0.29.37-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:b048354fd380278f2fa096e7526973beb6e0491a9d44d7e4e29df52612d25776"}, + {file = "Cython-0.29.37-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ea6d208be1906c5df25b674777d5905c6d8e9ef0b201b830849e0729ba08caba"}, + {file = "Cython-0.29.37-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:af03854571738307a5f30cc6b724081d72db12f907699e7fdfc04c12c839158e"}, + {file = "Cython-0.29.37-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c33508ede9172a6f6f99d5a6dadc7fee23c840423b411ef8b5a403c04e530297"}, + {file = "Cython-0.29.37-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e8af5975ecfae254d8c0051204fca995dda8f93cf9f0bbf7571e3cda2b0cef4d"}, + {file = "Cython-0.29.37-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:29415d8eb2fdc1ea518ca4810c50a2d062b387d4c9fbcfb3352346e93db22c6d"}, + {file = "Cython-0.29.37-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe0eaf6b1e9ee97c5ee7bfc943f00e36cf59d929db16886cb018352bff8208da"}, + {file = "Cython-0.29.37-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cc1b9ce2b73b9ee8c305e06173b35c7c202d4b82d084a0cd73dcedfd6d310aec"}, + {file = "Cython-0.29.37-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:2618af0b8df26d32ee4e8858d4ad8167546596762620aeade84954ae37194a0e"}, + {file = "Cython-0.29.37-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ac910a28a2fd3d280faf3077b6fe63b97a4b93994ff05647581846f0e4b2f8d1"}, + {file = "Cython-0.29.37-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:8bf38373773f967cfd793997a6fb96cf972d41a9fce987ace5767349d6f15572"}, + {file = "Cython-0.29.37-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6cddb567dadb3aa3e280a8a35e5126030915ea744c2812206e9c194b8881475d"}, + {file = "Cython-0.29.37-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:79ecfc48694e156402c05561e0adb0e25a6e9d35ac0b41693733a08219d38c58"}, + {file = "Cython-0.29.37-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:9a455347e20ddfad0c5dfee32a3e855ee96811269e5fd86be622ddc4cb326404"}, + {file = "Cython-0.29.37-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:fa5b6a0f69bf1823c9fd038fa77a2568b78fda2de045a95b48a71dee4d0d578f"}, + {file = "Cython-0.29.37-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a6164a05440dcd9daa760c6488bc91bdac1380c7b4b3aca38cf307ba66042d54"}, + {file = "Cython-0.29.37-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:562f8f911dbd6f1a1b9be8f6cba097125700355688f613994ccd4406f220557a"}, + {file = "Cython-0.29.37-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8c39c2f5a0fe29bb01de9b1fb449bf65bed6f192317c677f181732791c63fe28"}, + {file = "Cython-0.29.37-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0a0a6d5972bb3b8c7363cf19a42a988bb0c0bb5ebd9c736c84eca85113ccfdbe"}, + {file = "Cython-0.29.37-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b82584836e9e7c0d6effee976595e5cd7fa88dbef3e96e900187983c1d4637d1"}, + {file = "Cython-0.29.37-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:b6c48f1032b379135a5b4a31976d6c468e02490688acf9254c6c8ed27bd4cbd4"}, + {file = "Cython-0.29.37-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:3f87bef1808d255cf13be378c7ad27ae7c6db6df7732217d32428d1daf4109be"}, + {file = "Cython-0.29.37-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:9e68bafeeb97d5a403fb1f7700bd4a55a1f8989824c323ae02ae8a4fcd88f6a1"}, + {file = "Cython-0.29.37-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e14cd44c830e53cf9d7269c87a6bcc638bb065ec07e24990e338162c7001d3c3"}, + {file = "Cython-0.29.37-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0544f7a3e4437b89b356baa15387494c18214e03f2ffaddada5a2c71c3dfd24b"}, + {file = "Cython-0.29.37-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2de3e729d25f041036e81e2f15683dd129f977dfb5b06267e30e8d7acec43225"}, + {file = "Cython-0.29.37-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:2ad634dc77a6a74022881826099eccac19c9b79153942cc82e754ffac2bec116"}, + {file = "Cython-0.29.37-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e841a8b4f9ceefb2916e32dac4f28a895cd519e8ece71505144da1ee355c548a"}, + {file = "Cython-0.29.37-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl", hash = "sha256:6c672089fba6a8f6690b8d7924a58c04477771401ad101d53171a13405ee12cb"}, + {file = "Cython-0.29.37-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0301d4739c6894e012f1d410052082fdda9e63888c815d9e23e0f7f82fff7d79"}, + {file = "Cython-0.29.37-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:af8e7b4397620e2d18259a11f3bfa026eff9846657e397d02616962dd5dd035a"}, + {file = "Cython-0.29.37-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b225d5e2091c224d4ab328165fef224ba3919b3ed44bd9b3241416f523b4d51a"}, + {file = "Cython-0.29.37-py2.py3-none-any.whl", hash = "sha256:95f1d6a83ef2729e67b3fa7318c829ce5b07ac64c084cd6af11c228e0364662c"}, + {file = "Cython-0.29.37.tar.gz", hash = "sha256:f813d4a6dd94adee5d4ff266191d1d95bf6d4164a4facc535422c021b2504cfb"}, +] + +[[package]] +name = "dataclasses-json" +version = "0.6.4" +description = "Easily serialize dataclasses to and from JSON." +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "dataclasses_json-0.6.4-py3-none-any.whl", hash = "sha256:f90578b8a3177f7552f4e1a6e535e84293cd5da421fcce0642d49c0d7bdf8df2"}, + {file = "dataclasses_json-0.6.4.tar.gz", hash = "sha256:73696ebf24936560cca79a2430cbc4f3dd23ac7bf46ed17f38e5e5e7657a6377"}, +] + +[package.dependencies] +marshmallow = ">=3.18.0,<4.0.0" +typing-inspect = ">=0.4.0,<1" +>>>>>>> f6ff15b (Add ML packages) [[package]] name = "distlib" @@ -410,6 +780,7 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", typing = ["typing-extensions (>=4.8)"] [[package]] +<<<<<<< HEAD name = "genson" version = "1.2.2" description = "GenSON is a powerful, user-friendly JSON Schema generator." @@ -420,6 +791,129 @@ files = [ ] [[package]] +======= +name = "frozenlist" +version = "1.4.1" +description = "A list-like structure which implements collections.abc.MutableSequence" +optional = false +python-versions = ">=3.8" +files = [ + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, + {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, + {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, + {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, + {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, + {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, + {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, + {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, + {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, + {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, + {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, + {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, + {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, +] + +[[package]] +name = "fsspec" +version = "2024.3.1" +description = "File-system specification" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fsspec-2024.3.1-py3-none-any.whl", hash = "sha256:918d18d41bf73f0e2b261824baeb1b124bcf771767e3a26425cd7dec3332f512"}, + {file = "fsspec-2024.3.1.tar.gz", hash = "sha256:f39780e282d7d117ffb42bb96992f8a90795e4d0fb0f661a70ca39fe9c43ded9"}, +] + +[package.extras] +abfs = ["adlfs"] +adl = ["adlfs"] +arrow = ["pyarrow (>=1)"] +dask = ["dask", "distributed"] +devel = ["pytest", "pytest-cov"] +dropbox = ["dropbox", "dropboxdrivefs", "requests"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] +fuse = ["fusepy"] +gcs = ["gcsfs"] +git = ["pygit2"] +github = ["requests"] +gs = ["gcsfs"] +gui = ["panel"] +hdfs = ["pyarrow (>=1)"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] +libarchive = ["libarchive-c"] +oci = ["ocifs"] +s3 = ["s3fs"] +sftp = ["paramiko"] +smb = ["smbprotocol"] +ssh = ["paramiko"] +tqdm = ["tqdm"] + +[[package]] +>>>>>>> f6ff15b (Add ML packages) name = "govuk-frontend-jinja" version = "3.0.0" description = "GOV.UK Frontend Jinja Macros" @@ -452,6 +946,125 @@ eventlet = ["eventlet (>=0.24.1)"] gevent = ["gevent (>=1.4.0)"] setproctitle = ["setproctitle"] tornado = ["tornado (>=0.2)"] +name = "greenlet" +version = "3.0.3" +description = "Lightweight in-process concurrent programming" +optional = false +python-versions = ">=3.7" +files = [ + {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, + {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, + {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, + {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, + {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, + {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, + {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, + {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, + {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, + {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, + {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, + {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, + {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, + {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, + {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, + {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, + {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, + {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, + {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, + {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, + {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, + {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, + {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, + {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, + {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, + {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, + {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, + {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, +] + +[package.extras] +docs = ["Sphinx", "furo"] +test = ["objgraph", "psutil"] + +[[package]] +name = "hdbscan" +version = "0.8.33" +description = "Clustering based on density with variable density clusters" +optional = false +python-versions = "*" +files = [ + {file = "hdbscan-0.8.33.tar.gz", hash = "sha256:57fabc5f0e45f48d2407b35c731192abc896376411fe7e4bb836ffa03d38f90d"}, +] + +[package.dependencies] +cython = ">=0.27,<3" +joblib = ">=1.0" +numpy = ">=1.20" +scikit-learn = ">=0.20" +scipy = ">=1.0" + +[[package]] +name = "huggingface-hub" +version = "0.21.4" +description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "huggingface_hub-0.21.4-py3-none-any.whl", hash = "sha256:df37c2c37fc6c82163cdd8a67ede261687d80d1e262526d6c0ce73b6b3630a7b"}, + {file = "huggingface_hub-0.21.4.tar.gz", hash = "sha256:e1f4968c93726565a80edf6dc309763c7b546d0cfe79aa221206034d50155531"}, +] + +[package.dependencies] +filelock = "*" +fsspec = ">=2023.5.0" +packaging = ">=20.9" +pyyaml = ">=5.1" +requests = "*" +tqdm = ">=4.42.1" +typing-extensions = ">=3.7.4.3" + +[package.extras] +all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "mypy (==1.5.1)", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.1.3)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] +cli = ["InquirerPy (==0.3.4)"] +dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "mypy (==1.5.1)", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.1.3)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] +fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"] +hf-transfer = ["hf-transfer (>=0.1.4)"] +inference = ["aiohttp", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)"] +quality = ["mypy (==1.5.1)", "ruff (>=0.1.3)"] +tensorflow = ["graphviz", "pydot", "tensorflow"] +testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"] +torch = ["safetensors", "torch"] +typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"] [[package]] name = "identify" @@ -479,6 +1092,7 @@ files = [ ] [[package]] +<<<<<<< HEAD name = "inflect" version = "5.6.2" description = "Correctly generate plurals, singular nouns, ordinals, indefinite articles; convert numbers to words" @@ -494,6 +1108,8 @@ docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9) testing = ["pygments", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [[package]] +======= +>>>>>>> f6ff15b (Add ML packages) name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" @@ -546,6 +1162,165 @@ files = [ {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] +[[package]] +name = "joblib" +version = "1.3.2" +description = "Lightweight pipelining with Python functions" +optional = false +python-versions = ">=3.7" +files = [ + {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"}, + {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"}, +] + +[[package]] +name = "jsonpatch" +version = "1.33" +description = "Apply JSON-Patches (RFC 6902)" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +files = [ + {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, + {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, +] + +[package.dependencies] +jsonpointer = ">=1.9" + +[[package]] +name = "jsonpointer" +version = "2.4" +description = "Identify specific nodes in a JSON document (RFC 6901)" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +files = [ + {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"}, + {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"}, +] + +[[package]] +name = "langchain" +version = "0.1.12" +description = "Building applications with LLMs through composability" +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "langchain-0.1.12-py3-none-any.whl", hash = "sha256:b4dd1760e2d035daefad08af60a209b96b729ee45492d34e3e127e553a471034"}, + {file = "langchain-0.1.12.tar.gz", hash = "sha256:5f612761ba548b81748ed8dc70535e8de0531445415028a82de3fd8255bfa8a3"}, +] + +[package.dependencies] +aiohttp = ">=3.8.3,<4.0.0" +dataclasses-json = ">=0.5.7,<0.7" +jsonpatch = ">=1.33,<2.0" +langchain-community = ">=0.0.28,<0.1" +langchain-core = ">=0.1.31,<0.2.0" +langchain-text-splitters = ">=0.0.1,<0.1" +langsmith = ">=0.1.17,<0.2.0" +numpy = ">=1,<2" +pydantic = ">=1,<3" +PyYAML = ">=5.3" +requests = ">=2,<3" +SQLAlchemy = ">=1.4,<3" +tenacity = ">=8.1.0,<9.0.0" + +[package.extras] +azure = ["azure-ai-formrecognizer (>=3.2.1,<4.0.0)", "azure-ai-textanalytics (>=5.3.0,<6.0.0)", "azure-cognitiveservices-speech (>=1.28.0,<2.0.0)", "azure-core (>=1.26.4,<2.0.0)", "azure-cosmos (>=4.4.0b1,<5.0.0)", "azure-identity (>=1.12.0,<2.0.0)", "azure-search-documents (==11.4.0b8)", "openai (<2)"] +clarifai = ["clarifai (>=9.1.0)"] +cli = ["typer (>=0.9.0,<0.10.0)"] +cohere = ["cohere (>=4,<5)"] +docarray = ["docarray[hnswlib] (>=0.32.0,<0.33.0)"] +embeddings = ["sentence-transformers (>=2,<3)"] +extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<5)", "couchbase (>=4.1.9,<5.0.0)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "langchain-openai (>=0.0.2,<0.1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] +javascript = ["esprima (>=4.0.1,<5.0.0)"] +llms = ["clarifai (>=9.1.0)", "cohere (>=4,<5)", "huggingface_hub (>=0,<1)", "manifest-ml (>=0.0.1,<0.0.2)", "nlpcloud (>=1,<2)", "openai (<2)", "openlm (>=0.0.5,<0.0.6)", "torch (>=1,<3)", "transformers (>=4,<5)"] +openai = ["openai (<2)", "tiktoken (>=0.3.2,<0.6.0)"] +qdrant = ["qdrant-client (>=1.3.1,<2.0.0)"] +text-helpers = ["chardet (>=5.1.0,<6.0.0)"] + +[[package]] +name = "langchain-community" +version = "0.0.28" +description = "Community contributed LangChain integrations." +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "langchain_community-0.0.28-py3-none-any.whl", hash = "sha256:bdb015ac455ae68432ea104628717583dce041e1abdfcefe86e39f034f5e90b8"}, + {file = "langchain_community-0.0.28.tar.gz", hash = "sha256:8664d243a90550fc5ddc137b712034e02c8d43afc8d4cc832ba5842b44c864ce"}, +] + +[package.dependencies] +aiohttp = ">=3.8.3,<4.0.0" +dataclasses-json = ">=0.5.7,<0.7" +langchain-core = ">=0.1.31,<0.2.0" +langsmith = ">=0.1.0,<0.2.0" +numpy = ">=1,<2" +PyYAML = ">=5.3" +requests = ">=2,<3" +SQLAlchemy = ">=1.4,<3" +tenacity = ">=8.1.0,<9.0.0" + +[package.extras] +cli = ["typer (>=0.9.0,<0.10.0)"] +extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "azure-ai-documentintelligence (>=1.0.0b1,<2.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cloudpickle (>=2.0.0)", "cohere (>=4,<5)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "elasticsearch (>=8.12.0,<9.0.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "friendli-client (>=1.2.4,<2.0.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "gradientai (>=1.4.0,<2.0.0)", "hdbcli (>=2.19.21,<3.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "httpx (>=0.24.1,<0.25.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "nvidia-riva-client (>=2.14.0,<3.0.0)", "oci (>=2.119.1,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "oracle-ads (>=2.9.1,<3.0.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "tidb-vector (>=0.0.3,<1.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "tree-sitter (>=0.20.2,<0.21.0)", "tree-sitter-languages (>=1.8.0,<2.0.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)", "zhipuai (>=1.0.7,<2.0.0)"] + +[[package]] +name = "langchain-core" +version = "0.1.32" +description = "Building applications with LLMs through composability" +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "langchain_core-0.1.32-py3-none-any.whl", hash = "sha256:192aecdee6216af19b596ec18e7be3da0b9ecb9083eec263e02b68125737245d"}, + {file = "langchain_core-0.1.32.tar.gz", hash = "sha256:d62683becbf20f51f12875791a042320f45eaa0c87a267d30bc03bc1a07f5ec2"}, +] + +[package.dependencies] +anyio = ">=3,<5" +jsonpatch = ">=1.33,<2.0" +langsmith = ">=0.1.0,<0.2.0" +packaging = ">=23.2,<24.0" +pydantic = ">=1,<3" +PyYAML = ">=5.3" +requests = ">=2,<3" +tenacity = ">=8.1.0,<9.0.0" + +[package.extras] +extended-testing = ["jinja2 (>=3,<4)"] + +[[package]] +name = "langchain-text-splitters" +version = "0.0.1" +description = "LangChain text splitting utilities" +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "langchain_text_splitters-0.0.1-py3-none-any.whl", hash = "sha256:f5b802f873f5ff6a8b9259ff34d53ed989666ef4e1582e6d1adb3b5520e3839a"}, + {file = "langchain_text_splitters-0.0.1.tar.gz", hash = "sha256:ac459fa98799f5117ad5425a9330b21961321e30bc19a2a2f9f761ddadd62aa1"}, +] + +[package.dependencies] +langchain-core = ">=0.1.28,<0.2.0" + +[package.extras] +extended-testing = ["lxml (>=5.1.0,<6.0.0)"] + +[[package]] +name = "langsmith" +version = "0.1.29" +description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "langsmith-0.1.29-py3-none-any.whl", hash = "sha256:5439f5bf25b00a43602aa1ddaba0a31d413ed920e7b20494070328f7e1ecbb86"}, + {file = "langsmith-0.1.29.tar.gz", hash = "sha256:60ba0bd889c6a2683d123f66dc5043368eb2f103c4eb69e382abf7ce69a9f7d6"}, +] + +[package.dependencies] +orjson = ">=3.9.14,<4.0.0" +pydantic = ">=1,<3" +requests = ">=2,<3" + [[package]] name = "libsass" version = "0.23.0" @@ -561,6 +1336,36 @@ files = [ {file = "libsass-0.23.0.tar.gz", hash = "sha256:6f209955ede26684e76912caf329f4ccb57e4a043fd77fe0e7348dd9574f1880"}, ] +[[package]] +name = "llvmlite" +version = "0.42.0" +description = "lightweight wrapper around basic LLVM functionality" +optional = false +python-versions = ">=3.9" +files = [ + {file = "llvmlite-0.42.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3366938e1bf63d26c34fbfb4c8e8d2ded57d11e0567d5bb243d89aab1eb56098"}, + {file = "llvmlite-0.42.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c35da49666a21185d21b551fc3caf46a935d54d66969d32d72af109b5e7d2b6f"}, + {file = "llvmlite-0.42.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70f44ccc3c6220bd23e0ba698a63ec2a7d3205da0d848804807f37fc243e3f77"}, + {file = "llvmlite-0.42.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763f8d8717a9073b9e0246998de89929071d15b47f254c10eef2310b9aac033d"}, + {file = "llvmlite-0.42.0-cp310-cp310-win_amd64.whl", hash = "sha256:8d90edf400b4ceb3a0e776b6c6e4656d05c7187c439587e06f86afceb66d2be5"}, + {file = "llvmlite-0.42.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ae511caed28beaf1252dbaf5f40e663f533b79ceb408c874c01754cafabb9cbf"}, + {file = "llvmlite-0.42.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81e674c2fe85576e6c4474e8c7e7aba7901ac0196e864fe7985492b737dbab65"}, + {file = "llvmlite-0.42.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb3975787f13eb97629052edb5017f6c170eebc1c14a0433e8089e5db43bcce6"}, + {file = "llvmlite-0.42.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5bece0cdf77f22379f19b1959ccd7aee518afa4afbd3656c6365865f84903f9"}, + {file = "llvmlite-0.42.0-cp311-cp311-win_amd64.whl", hash = "sha256:7e0c4c11c8c2aa9b0701f91b799cb9134a6a6de51444eff5a9087fc7c1384275"}, + {file = "llvmlite-0.42.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:08fa9ab02b0d0179c688a4216b8939138266519aaa0aa94f1195a8542faedb56"}, + {file = "llvmlite-0.42.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b2fce7d355068494d1e42202c7aff25d50c462584233013eb4470c33b995e3ee"}, + {file = "llvmlite-0.42.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebe66a86dc44634b59a3bc860c7b20d26d9aaffcd30364ebe8ba79161a9121f4"}, + {file = "llvmlite-0.42.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d47494552559e00d81bfb836cf1c4d5a5062e54102cc5767d5aa1e77ccd2505c"}, + {file = "llvmlite-0.42.0-cp312-cp312-win_amd64.whl", hash = "sha256:05cb7e9b6ce69165ce4d1b994fbdedca0c62492e537b0cc86141b6e2c78d5888"}, + {file = "llvmlite-0.42.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bdd3888544538a94d7ec99e7c62a0cdd8833609c85f0c23fcb6c5c591aec60ad"}, + {file = "llvmlite-0.42.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d0936c2067a67fb8816c908d5457d63eba3e2b17e515c5fe00e5ee2bace06040"}, + {file = "llvmlite-0.42.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a78ab89f1924fc11482209f6799a7a3fc74ddc80425a7a3e0e8174af0e9e2301"}, + {file = "llvmlite-0.42.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7599b65c7af7abbc978dbf345712c60fd596aa5670496561cc10e8a71cebfb2"}, + {file = "llvmlite-0.42.0-cp39-cp39-win_amd64.whl", hash = "sha256:43d65cc4e206c2e902c1004dd5418417c4efa6c1d04df05c6c5675a27e8ca90e"}, + {file = "llvmlite-0.42.0.tar.gz", hash = "sha256:f92b09243c0cc3f457da8b983f67bd8e1295d0f5b3746c7a1861d7a99403854a"}, +] + [[package]] name = "markupsafe" version = "2.1.5" @@ -630,6 +1435,141 @@ files = [ {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] +[[package]] +name = "marshmallow" +version = "3.21.1" +description = "A lightweight library for converting complex datatypes to and from native Python datatypes." +optional = false +python-versions = ">=3.8" +files = [ + {file = "marshmallow-3.21.1-py3-none-any.whl", hash = "sha256:f085493f79efb0644f270a9bf2892843142d80d7174bbbd2f3713f2a589dc633"}, + {file = "marshmallow-3.21.1.tar.gz", hash = "sha256:4e65e9e0d80fc9e609574b9983cf32579f305c718afb30d7233ab818571768c3"}, +] + +[package.dependencies] +packaging = ">=17.0" + +[package.extras] +dev = ["marshmallow[tests]", "pre-commit (>=3.5,<4.0)", "tox"] +docs = ["alabaster (==0.7.16)", "autodocsumm (==0.2.12)", "sphinx (==7.2.6)", "sphinx-issues (==4.0.0)", "sphinx-version-warning (==1.1.2)"] +tests = ["pytest", "pytz", "simplejson"] + +[[package]] +name = "mpmath" +version = "1.3.0" +description = "Python library for arbitrary-precision floating-point arithmetic" +optional = false +python-versions = "*" +files = [ + {file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"}, + {file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"}, +] + +[package.extras] +develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"] +docs = ["sphinx"] +gmpy = ["gmpy2 (>=2.1.0a4)"] +tests = ["pytest (>=4.6)"] + +[[package]] +name = "multidict" +version = "6.0.5" +description = "multidict implementation" +optional = false +python-versions = ">=3.7" +files = [ + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, + {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, + {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, + {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, + {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, + {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, + {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, + {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, + {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, + {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, + {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, + {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, + {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, + {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, + {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, + {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, +] + [[package]] name = "mypy-extensions" version = "1.0.0" @@ -641,6 +1581,24 @@ files = [ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] +[[package]] +name = "networkx" +version = "3.2.1" +description = "Python package for creating and manipulating graphs and networks" +optional = false +python-versions = ">=3.9" +files = [ + {file = "networkx-3.2.1-py3-none-any.whl", hash = "sha256:f18c69adc97877c42332c170849c96cefa91881c99a7cb3e95b7c659ebdc1ec2"}, + {file = "networkx-3.2.1.tar.gz", hash = "sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6"}, +] + +[package.extras] +default = ["matplotlib (>=3.5)", "numpy (>=1.22)", "pandas (>=1.4)", "scipy (>=1.9,!=1.11.0,!=1.11.1)"] +developer = ["changelist (==0.4)", "mypy (>=1.1)", "pre-commit (>=3.2)", "rtoml"] +doc = ["nb2plots (>=0.7)", "nbconvert (<7.9)", "numpydoc (>=1.6)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.14)", "sphinx (>=7)", "sphinx-gallery (>=0.14)", "texext (>=0.6.7)"] +extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.11)", "sympy (>=1.10)"] +test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] + [[package]] name = "nodeenv" version = "1.8.0" @@ -655,15 +1613,294 @@ files = [ [package.dependencies] setuptools = "*" +[[package]] +name = "numba" +version = "0.59.1" +description = "compiling Python code using LLVM" +optional = false +python-versions = ">=3.9" +files = [ + {file = "numba-0.59.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:97385a7f12212c4f4bc28f648720a92514bee79d7063e40ef66c2d30600fd18e"}, + {file = "numba-0.59.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0b77aecf52040de2a1eb1d7e314497b9e56fba17466c80b457b971a25bb1576d"}, + {file = "numba-0.59.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3476a4f641bfd58f35ead42f4dcaf5f132569c4647c6f1360ccf18ee4cda3990"}, + {file = "numba-0.59.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:525ef3f820931bdae95ee5379c670d5c97289c6520726bc6937a4a7d4230ba24"}, + {file = "numba-0.59.1-cp310-cp310-win_amd64.whl", hash = "sha256:990e395e44d192a12105eca3083b61307db7da10e093972ca285c85bef0963d6"}, + {file = "numba-0.59.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43727e7ad20b3ec23ee4fc642f5b61845c71f75dd2825b3c234390c6d8d64051"}, + {file = "numba-0.59.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:411df625372c77959570050e861981e9d196cc1da9aa62c3d6a836b5cc338966"}, + {file = "numba-0.59.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2801003caa263d1e8497fb84829a7ecfb61738a95f62bc05693fcf1733e978e4"}, + {file = "numba-0.59.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dd2842fac03be4e5324ebbbd4d2d0c8c0fc6e0df75c09477dd45b288a0777389"}, + {file = "numba-0.59.1-cp311-cp311-win_amd64.whl", hash = "sha256:0594b3dfb369fada1f8bb2e3045cd6c61a564c62e50cf1f86b4666bc721b3450"}, + {file = "numba-0.59.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1cce206a3b92836cdf26ef39d3a3242fec25e07f020cc4feec4c4a865e340569"}, + {file = "numba-0.59.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8c8b4477763cb1fbd86a3be7050500229417bf60867c93e131fd2626edb02238"}, + {file = "numba-0.59.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d80bce4ef7e65bf895c29e3889ca75a29ee01da80266a01d34815918e365835"}, + {file = "numba-0.59.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f7ad1d217773e89a9845886401eaaab0a156a90aa2f179fdc125261fd1105096"}, + {file = "numba-0.59.1-cp312-cp312-win_amd64.whl", hash = "sha256:5bf68f4d69dd3a9f26a9b23548fa23e3bcb9042e2935257b471d2a8d3c424b7f"}, + {file = "numba-0.59.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4e0318ae729de6e5dbe64c75ead1a95eb01fabfe0e2ebed81ebf0344d32db0ae"}, + {file = "numba-0.59.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0f68589740a8c38bb7dc1b938b55d1145244c8353078eea23895d4f82c8b9ec1"}, + {file = "numba-0.59.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:649913a3758891c77c32e2d2a3bcbedf4a69f5fea276d11f9119677c45a422e8"}, + {file = "numba-0.59.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9712808e4545270291d76b9a264839ac878c5eb7d8b6e02c970dc0ac29bc8187"}, + {file = "numba-0.59.1-cp39-cp39-win_amd64.whl", hash = "sha256:8d51ccd7008a83105ad6a0082b6a2b70f1142dc7cfd76deb8c5a862367eb8c86"}, + {file = "numba-0.59.1.tar.gz", hash = "sha256:76f69132b96028d2774ed20415e8c528a34e3299a40581bae178f0994a2f370b"}, +] + +[package.dependencies] +llvmlite = "==0.42.*" +numpy = ">=1.22,<1.27" + +[[package]] +name = "numpy" +version = "1.26.4" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, +] + +[[package]] +name = "nvidia-cublas-cu12" +version = "12.1.3.1" +description = "CUBLAS native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:ee53ccca76a6fc08fb9701aa95b6ceb242cdaab118c3bb152af4e579af792728"}, + {file = "nvidia_cublas_cu12-12.1.3.1-py3-none-win_amd64.whl", hash = "sha256:2b964d60e8cf11b5e1073d179d85fa340c120e99b3067558f3cf98dd69d02906"}, +] + +[[package]] +name = "nvidia-cuda-cupti-cu12" +version = "12.1.105" +description = "CUDA profiling tools runtime libs." +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:e54fde3983165c624cb79254ae9818a456eb6e87a7fd4d56a2352c24ee542d7e"}, + {file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:bea8236d13a0ac7190bd2919c3e8e6ce1e402104276e6f9694479e48bb0eb2a4"}, +] + +[[package]] +name = "nvidia-cuda-nvrtc-cu12" +version = "12.1.105" +description = "NVRTC native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:339b385f50c309763ca65456ec75e17bbefcbbf2893f462cb8b90584cd27a1c2"}, + {file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:0a98a522d9ff138b96c010a65e145dc1b4850e9ecb75a0172371793752fd46ed"}, +] + +[[package]] +name = "nvidia-cuda-runtime-cu12" +version = "12.1.105" +description = "CUDA Runtime native Libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:6e258468ddf5796e25f1dc591a31029fa317d97a0a94ed93468fc86301d61e40"}, + {file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:dfb46ef84d73fababab44cf03e3b83f80700d27ca300e537f85f636fac474344"}, +] + +[[package]] +name = "nvidia-cudnn-cu12" +version = "8.9.2.26" +description = "cuDNN runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cudnn_cu12-8.9.2.26-py3-none-manylinux1_x86_64.whl", hash = "sha256:5ccb288774fdfb07a7e7025ffec286971c06d8d7b4fb162525334616d7629ff9"}, +] + +[package.dependencies] +nvidia-cublas-cu12 = "*" + +[[package]] +name = "nvidia-cufft-cu12" +version = "11.0.2.54" +description = "CUFFT native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl", hash = "sha256:794e3948a1aa71fd817c3775866943936774d1c14e7628c74f6f7417224cdf56"}, + {file = "nvidia_cufft_cu12-11.0.2.54-py3-none-win_amd64.whl", hash = "sha256:d9ac353f78ff89951da4af698f80870b1534ed69993f10a4cf1d96f21357e253"}, +] + +[[package]] +name = "nvidia-curand-cu12" +version = "10.3.2.106" +description = "CURAND native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:9d264c5036dde4e64f1de8c50ae753237c12e0b1348738169cd0f8a536c0e1e0"}, + {file = "nvidia_curand_cu12-10.3.2.106-py3-none-win_amd64.whl", hash = "sha256:75b6b0c574c0037839121317e17fd01f8a69fd2ef8e25853d826fec30bdba74a"}, +] + +[[package]] +name = "nvidia-cusolver-cu12" +version = "11.4.5.107" +description = "CUDA solver native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl", hash = "sha256:8a7ec542f0412294b15072fa7dab71d31334014a69f953004ea7a118206fe0dd"}, + {file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-win_amd64.whl", hash = "sha256:74e0c3a24c78612192a74fcd90dd117f1cf21dea4822e66d89e8ea80e3cd2da5"}, +] + +[package.dependencies] +nvidia-cublas-cu12 = "*" +nvidia-cusparse-cu12 = "*" +nvidia-nvjitlink-cu12 = "*" + +[[package]] +name = "nvidia-cusparse-cu12" +version = "12.1.0.106" +description = "CUSPARSE native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:f3b50f42cf363f86ab21f720998517a659a48131e8d538dc02f8768237bd884c"}, + {file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-win_amd64.whl", hash = "sha256:b798237e81b9719373e8fae8d4f091b70a0cf09d9d85c95a557e11df2d8e9a5a"}, +] + +[package.dependencies] +nvidia-nvjitlink-cu12 = "*" + +[[package]] +name = "nvidia-nccl-cu12" +version = "2.19.3" +description = "NVIDIA Collective Communication Library (NCCL) Runtime" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_nccl_cu12-2.19.3-py3-none-manylinux1_x86_64.whl", hash = "sha256:a9734707a2c96443331c1e48c717024aa6678a0e2a4cb66b2c364d18cee6b48d"}, +] + +[[package]] +name = "nvidia-nvjitlink-cu12" +version = "12.4.99" +description = "Nvidia JIT LTO Library" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_nvjitlink_cu12-12.4.99-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c6428836d20fe7e327191c175791d38570e10762edc588fb46749217cd444c74"}, + {file = "nvidia_nvjitlink_cu12-12.4.99-py3-none-win_amd64.whl", hash = "sha256:991905ffa2144cb603d8ca7962d75c35334ae82bf92820b6ba78157277da1ad2"}, +] + +[[package]] +name = "nvidia-nvtx-cu12" +version = "12.1.105" +description = "NVIDIA Tools Extension" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:dc21cf308ca5691e7c04d962e213f8a4aa9bbfa23d95412f452254c2caeb09e5"}, + {file = "nvidia_nvtx_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:65f4d98982b31b60026e0e6de73fbdfc09d08a96f4656dd3665ca616a11e1e82"}, +] + +[[package]] +name = "orjson" +version = "3.9.15" +description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" +optional = false +python-versions = ">=3.8" +files = [ + {file = "orjson-3.9.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d61f7ce4727a9fa7680cd6f3986b0e2c732639f46a5e0156e550e35258aa313a"}, + {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4feeb41882e8aa17634b589533baafdceb387e01e117b1ec65534ec724023d04"}, + {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fbbeb3c9b2edb5fd044b2a070f127a0ac456ffd079cb82746fc84af01ef021a4"}, + {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b66bcc5670e8a6b78f0313bcb74774c8291f6f8aeef10fe70e910b8040f3ab75"}, + {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2973474811db7b35c30248d1129c64fd2bdf40d57d84beed2a9a379a6f57d0ab"}, + {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fe41b6f72f52d3da4db524c8653e46243c8c92df826ab5ffaece2dba9cccd58"}, + {file = "orjson-3.9.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4228aace81781cc9d05a3ec3a6d2673a1ad0d8725b4e915f1089803e9efd2b99"}, + {file = "orjson-3.9.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6f7b65bfaf69493c73423ce9db66cfe9138b2f9ef62897486417a8fcb0a92bfe"}, + {file = "orjson-3.9.15-cp310-none-win32.whl", hash = "sha256:2d99e3c4c13a7b0fb3792cc04c2829c9db07838fb6973e578b85c1745e7d0ce7"}, + {file = "orjson-3.9.15-cp310-none-win_amd64.whl", hash = "sha256:b725da33e6e58e4a5d27958568484aa766e825e93aa20c26c91168be58e08cbb"}, + {file = "orjson-3.9.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c8e8fe01e435005d4421f183038fc70ca85d2c1e490f51fb972db92af6e047c2"}, + {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87f1097acb569dde17f246faa268759a71a2cb8c96dd392cd25c668b104cad2f"}, + {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff0f9913d82e1d1fadbd976424c316fbc4d9c525c81d047bbdd16bd27dd98cfc"}, + {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8055ec598605b0077e29652ccfe9372247474375e0e3f5775c91d9434e12d6b1"}, + {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6768a327ea1ba44c9114dba5fdda4a214bdb70129065cd0807eb5f010bfcbb5"}, + {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12365576039b1a5a47df01aadb353b68223da413e2e7f98c02403061aad34bde"}, + {file = "orjson-3.9.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:71c6b009d431b3839d7c14c3af86788b3cfac41e969e3e1c22f8a6ea13139404"}, + {file = "orjson-3.9.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e18668f1bd39e69b7fed19fa7cd1cd110a121ec25439328b5c89934e6d30d357"}, + {file = "orjson-3.9.15-cp311-none-win32.whl", hash = "sha256:62482873e0289cf7313461009bf62ac8b2e54bc6f00c6fabcde785709231a5d7"}, + {file = "orjson-3.9.15-cp311-none-win_amd64.whl", hash = "sha256:b3d336ed75d17c7b1af233a6561cf421dee41d9204aa3cfcc6c9c65cd5bb69a8"}, + {file = "orjson-3.9.15-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:82425dd5c7bd3adfe4e94c78e27e2fa02971750c2b7ffba648b0f5d5cc016a73"}, + {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c51378d4a8255b2e7c1e5cc430644f0939539deddfa77f6fac7b56a9784160a"}, + {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6ae4e06be04dc00618247c4ae3f7c3e561d5bc19ab6941427f6d3722a0875ef7"}, + {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcef128f970bb63ecf9a65f7beafd9b55e3aaf0efc271a4154050fc15cdb386e"}, + {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b72758f3ffc36ca566ba98a8e7f4f373b6c17c646ff8ad9b21ad10c29186f00d"}, + {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c57bc7b946cf2efa67ac55766e41764b66d40cbd9489041e637c1304400494"}, + {file = "orjson-3.9.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:946c3a1ef25338e78107fba746f299f926db408d34553b4754e90a7de1d44068"}, + {file = "orjson-3.9.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2f256d03957075fcb5923410058982aea85455d035607486ccb847f095442bda"}, + {file = "orjson-3.9.15-cp312-none-win_amd64.whl", hash = "sha256:5bb399e1b49db120653a31463b4a7b27cf2fbfe60469546baf681d1b39f4edf2"}, + {file = "orjson-3.9.15-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b17f0f14a9c0ba55ff6279a922d1932e24b13fc218a3e968ecdbf791b3682b25"}, + {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f6cbd8e6e446fb7e4ed5bac4661a29e43f38aeecbf60c4b900b825a353276a1"}, + {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:76bc6356d07c1d9f4b782813094d0caf1703b729d876ab6a676f3aaa9a47e37c"}, + {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fdfa97090e2d6f73dced247a2f2d8004ac6449df6568f30e7fa1a045767c69a6"}, + {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7413070a3e927e4207d00bd65f42d1b780fb0d32d7b1d951f6dc6ade318e1b5a"}, + {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9cf1596680ac1f01839dba32d496136bdd5d8ffb858c280fa82bbfeb173bdd40"}, + {file = "orjson-3.9.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:809d653c155e2cc4fd39ad69c08fdff7f4016c355ae4b88905219d3579e31eb7"}, + {file = "orjson-3.9.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:920fa5a0c5175ab14b9c78f6f820b75804fb4984423ee4c4f1e6d748f8b22bc1"}, + {file = "orjson-3.9.15-cp38-none-win32.whl", hash = "sha256:2b5c0f532905e60cf22a511120e3719b85d9c25d0e1c2a8abb20c4dede3b05a5"}, + {file = "orjson-3.9.15-cp38-none-win_amd64.whl", hash = "sha256:67384f588f7f8daf040114337d34a5188346e3fae6c38b6a19a2fe8c663a2f9b"}, + {file = "orjson-3.9.15-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6fc2fe4647927070df3d93f561d7e588a38865ea0040027662e3e541d592811e"}, + {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34cbcd216e7af5270f2ffa63a963346845eb71e174ea530867b7443892d77180"}, + {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f541587f5c558abd93cb0de491ce99a9ef8d1ae29dd6ab4dbb5a13281ae04cbd"}, + {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92255879280ef9c3c0bcb327c5a1b8ed694c290d61a6a532458264f887f052cb"}, + {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:05a1f57fb601c426635fcae9ddbe90dfc1ed42245eb4c75e4960440cac667262"}, + {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ede0bde16cc6e9b96633df1631fbcd66491d1063667f260a4f2386a098393790"}, + {file = "orjson-3.9.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e88b97ef13910e5f87bcbc4dd7979a7de9ba8702b54d3204ac587e83639c0c2b"}, + {file = "orjson-3.9.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57d5d8cf9c27f7ef6bc56a5925c7fbc76b61288ab674eb352c26ac780caa5b10"}, + {file = "orjson-3.9.15-cp39-none-win32.whl", hash = "sha256:001f4eb0ecd8e9ebd295722d0cbedf0748680fb9998d3993abaed2f40587257a"}, + {file = "orjson-3.9.15-cp39-none-win_amd64.whl", hash = "sha256:ea0b183a5fe6b2b45f3b854b0d19c4e932d6f5934ae1f723b07cf9560edd4ec7"}, + {file = "orjson-3.9.15.tar.gz", hash = "sha256:95cae920959d772f30ab36d3b25f83bb0f3be671e986c72ce22f8fa700dae061"}, +] + [[package]] name = "packaging" -version = "24.0" +version = "23.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] @@ -677,6 +1914,159 @@ files = [ {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] +name = "pandas" +version = "2.2.1" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pandas-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8df8612be9cd1c7797c93e1c5df861b2ddda0b48b08f2c3eaa0702cf88fb5f88"}, + {file = "pandas-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0f573ab277252ed9aaf38240f3b54cfc90fff8e5cab70411ee1d03f5d51f3944"}, + {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f02a3a6c83df4026e55b63c1f06476c9aa3ed6af3d89b4f04ea656ccdaaaa359"}, + {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c38ce92cb22a4bea4e3929429aa1067a454dcc9c335799af93ba9be21b6beb51"}, + {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c2ce852e1cf2509a69e98358e8458775f89599566ac3775e70419b98615f4b06"}, + {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53680dc9b2519cbf609c62db3ed7c0b499077c7fefda564e330286e619ff0dd9"}, + {file = "pandas-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:94e714a1cca63e4f5939cdce5f29ba8d415d85166be3441165edd427dc9f6bc0"}, + {file = "pandas-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f821213d48f4ab353d20ebc24e4faf94ba40d76680642fb7ce2ea31a3ad94f9b"}, + {file = "pandas-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c70e00c2d894cb230e5c15e4b1e1e6b2b478e09cf27cc593a11ef955b9ecc81a"}, + {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97fbb5387c69209f134893abc788a6486dbf2f9e511070ca05eed4b930b1b02"}, + {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101d0eb9c5361aa0146f500773395a03839a5e6ecde4d4b6ced88b7e5a1a6403"}, + {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7d2ed41c319c9fb4fd454fe25372028dfa417aacb9790f68171b2e3f06eae8cd"}, + {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5d3c00557d657c8773ef9ee702c61dd13b9d7426794c9dfeb1dc4a0bf0ebc7"}, + {file = "pandas-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:06cf591dbaefb6da9de8472535b185cba556d0ce2e6ed28e21d919704fef1a9e"}, + {file = "pandas-2.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:88ecb5c01bb9ca927ebc4098136038519aa5d66b44671861ffab754cae75102c"}, + {file = "pandas-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:04f6ec3baec203c13e3f8b139fb0f9f86cd8c0b94603ae3ae8ce9a422e9f5bee"}, + {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a935a90a76c44fe170d01e90a3594beef9e9a6220021acfb26053d01426f7dc2"}, + {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c391f594aae2fd9f679d419e9a4d5ba4bce5bb13f6a989195656e7dc4b95c8f0"}, + {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9d1265545f579edf3f8f0cb6f89f234f5e44ba725a34d86535b1a1d38decbccc"}, + {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:11940e9e3056576ac3244baef2fedade891977bcc1cb7e5cc8f8cc7d603edc89"}, + {file = "pandas-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4acf681325ee1c7f950d058b05a820441075b0dd9a2adf5c4835b9bc056bf4fb"}, + {file = "pandas-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9bd8a40f47080825af4317d0340c656744f2bfdb6819f818e6ba3cd24c0e1397"}, + {file = "pandas-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:df0c37ebd19e11d089ceba66eba59a168242fc6b7155cba4ffffa6eccdfb8f16"}, + {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:739cc70eaf17d57608639e74d63387b0d8594ce02f69e7a0b046f117974b3019"}, + {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d3558d263073ed95e46f4650becff0c5e1ffe0fc3a015de3c79283dfbdb3df"}, + {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4aa1d8707812a658debf03824016bf5ea0d516afdea29b7dc14cf687bc4d4ec6"}, + {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:76f27a809cda87e07f192f001d11adc2b930e93a2b0c4a236fde5429527423be"}, + {file = "pandas-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:1ba21b1d5c0e43416218db63037dbe1a01fc101dc6e6024bcad08123e48004ab"}, + {file = "pandas-2.2.1.tar.gz", hash = "sha256:0ab90f87093c13f3e8fa45b48ba9f39181046e8f3317d3aadb2fffbb1b978572"}, +] + +[package.dependencies] +numpy = {version = ">=1.26.0,<2", markers = "python_version >= \"3.12\""} +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.7" + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +pyarrow = ["pyarrow (>=10.0.1)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] + +[[package]] +name = "pillow" +version = "10.2.0" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, + {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, + {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, + {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, + {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, + {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, + {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, + {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, + {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, + {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, + {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, + {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, + {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, + {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, + {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, + {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, + {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] + [[package]] name = "platformdirs" version = "4.2.0" @@ -692,6 +2082,21 @@ files = [ docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +[[package]] +name = "plotly" +version = "5.20.0" +description = "An open-source, interactive data visualization library for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "plotly-5.20.0-py3-none-any.whl", hash = "sha256:837a9c8aa90f2c0a2f0d747b82544d014dc2a2bdde967b5bb1da25b53932d1a9"}, + {file = "plotly-5.20.0.tar.gz", hash = "sha256:bf901c805d22032cfa534b2ff7c5aa6b0659e037f19ec1e0cca7f585918b5c89"}, +] + +[package.dependencies] +packaging = "*" +tenacity = ">=6.2.0" + [[package]] name = "pluggy" version = "1.4.0" @@ -878,6 +2283,24 @@ dev = ["black", "chardet"] release = ["zest.releaser[recommended]"] tests = ["black", "chardet", "tox"] +[[package]] +name = "pynndescent" +version = "0.5.11" +description = "Nearest Neighbor Descent" +optional = false +python-versions = "*" +files = [ + {file = "pynndescent-0.5.11-py3-none-any.whl", hash = "sha256:a628f4fc8a67757c8fa15613449ac513fd056258a55b4084e47c06640ec90a8d"}, + {file = "pynndescent-0.5.11.tar.gz", hash = "sha256:6f44ced9d5a9da2c87d9b2fff30bb5308540c0657605e4d5cde7ed3275bbad50"}, +] + +[package.dependencies] +joblib = ">=0.11" +llvmlite = ">=0.30" +numba = ">=0.51.2" +scikit-learn = ">=0.18" +scipy = ">=1.0" + [[package]] name = "pyparsing" version = "3.1.2" @@ -944,6 +2367,17 @@ files = [ [package.dependencies] six = ">=1.5" +[[package]] +name = "pytz" +version = "2024.1" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, +] + [[package]] name = "pyyaml" version = "6.0.1" @@ -1035,6 +2469,129 @@ files = [ {file = "rcssmin-1.1.1.tar.gz", hash = "sha256:4f9400b4366d29f5f5446f58e78549afa8338e6a59740c73115e9f6ac413dc64"}, ] +[[package]] +name = "regex" +version = "2023.12.25" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.7" +files = [ + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"}, + {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"}, + {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"}, + {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"}, + {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"}, + {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"}, + {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"}, + {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"}, + {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"}, + {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"}, + {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"}, + {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"}, + {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"}, + {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"}, + {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"}, +] + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + [[package]] name = "rjsmin" version = "1.2.1" @@ -1109,6 +2666,241 @@ botocore = ">=1.33.2,<2.0a.0" [package.extras] crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] +name = "safetensors" +version = "0.4.2" +description = "" +optional = false +python-versions = ">=3.7" +files = [ + {file = "safetensors-0.4.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:69d8bb8384dc2cb5b72c36c4d6980771b293d1a1377b378763f5e37b6bb8d133"}, + {file = "safetensors-0.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3d420e19fcef96d0067f4de4699682b4bbd85fc8fea0bd45fcd961fdf3e8c82c"}, + {file = "safetensors-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ca54742122fa3c4821754adb67318e1cd25c3a22bbf0c5520d5176e77a099ac"}, + {file = "safetensors-0.4.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b47aa643afdfd66cf7ce4c184092ae734e15d10aba2c2948f24270211801c3c"}, + {file = "safetensors-0.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d88a16bbc330f27e7f2d4caaf6fb061ad0b8a756ecc4033260b0378e128ce8a2"}, + {file = "safetensors-0.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9223b8ac21085db614a510eb3445e7083cae915a9202357555fa939695d4f57"}, + {file = "safetensors-0.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce6cb86133dc8930a7ab5e7438545a7f205f7a1cdd5aaf108c1d0da6bdcfbc2b"}, + {file = "safetensors-0.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8a628e0ae2bbc334b62952c384aa5f41621d01850f8d67b04a96b9c39dd7326"}, + {file = "safetensors-0.4.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:88d6beb7f811a081e0e5f1d9669fdac816c45340c04b1eaf7ebfda0ce93ea403"}, + {file = "safetensors-0.4.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b57fc5b1b54cb12d8690a58a4cf4b7144730d4bde9d98aa0e1dab6295a1cd579"}, + {file = "safetensors-0.4.2-cp310-none-win32.whl", hash = "sha256:9d87a1c98803c16cf113b9ba03f07b2dce5e8eabfd1811a7f7323fcaa2a1bf47"}, + {file = "safetensors-0.4.2-cp310-none-win_amd64.whl", hash = "sha256:18930ec1d1ecb526d3d9835abc2489b8f1530877518f0c541e77ef0b7abcbd99"}, + {file = "safetensors-0.4.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c5dd2ed788730ed56b415d1a11c62026b8cc8c573f55a2092afb3ab383e94fff"}, + {file = "safetensors-0.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cc41791b33efb9c83a59b731619f3d15f543dfe71f3a793cb8fbf9bd5d0d5d71"}, + {file = "safetensors-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c888bf71d5ca12a720f1ed87d407c4918afa022fb247a6546d8fac15b1f112b"}, + {file = "safetensors-0.4.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e6b2feb4b47226a16a792e6fac3f49442714884a3d4c1008569d5068a3941be9"}, + {file = "safetensors-0.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f41cc0ee4b838ae8f4d8364a1b162067693d11a3893f0863be8c228d40e4d0ee"}, + {file = "safetensors-0.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:51b7228e46c0a483c40ba4b9470dea00fb1ff8685026bb4766799000f6328ac2"}, + {file = "safetensors-0.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02697f8f2be8ca3c37a4958702dbdb1864447ef765e18b5328a1617022dcf164"}, + {file = "safetensors-0.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:27fd8f65cf7c80e4280cae1ee6bcd85c483882f6580821abe71ee1a0d3dcfca7"}, + {file = "safetensors-0.4.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c487b5f113b0924c9534a07dc034830fb4ef05ce9bb6d78cfe016a7dedfe281f"}, + {file = "safetensors-0.4.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:da7f6483f3fe67ff39b3a55552552c67930ea10a36e9f2539d36fc205273d767"}, + {file = "safetensors-0.4.2-cp311-none-win32.whl", hash = "sha256:52a7012f6cb9cb4a132760b6308daede18a9f5f8952ce08adc7c67a7d865c2d8"}, + {file = "safetensors-0.4.2-cp311-none-win_amd64.whl", hash = "sha256:4d1361a097ac430b310ce9eed8ed4746edee33ddafdfbb965debc8966fc34dc2"}, + {file = "safetensors-0.4.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:77af8aa0edcc2863760fd6febbfdb82e88fd75d0e60c1ce4ba57208ba5e4a89b"}, + {file = "safetensors-0.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846666c1c5a8c8888d2dfda8d3921cb9cb8e2c5f78365be756c11021e75a0a2a"}, + {file = "safetensors-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f4bfc7ea19b446bfad41510d4b4c76101698c00caaa8a332c8edd8090a412ef"}, + {file = "safetensors-0.4.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:233436fd30f27ffeb3c3780d0b84f496518868445c7a8db003639a649cc98453"}, + {file = "safetensors-0.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7a09237a795d11cd11f9dae505d170a29b5616151db1e10c14f892b11caadc7d"}, + {file = "safetensors-0.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de01c9a3a3b7b69627d624ff69d9f11d28ce9908eea2fb6245adafa4b1d43df6"}, + {file = "safetensors-0.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c1f25c5069ee42a5bcffdc66c300a407941edd73f3239e9fdefd26216407391"}, + {file = "safetensors-0.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7a73b3649456d09ca8506140d44484b63154a7378434cc1e8719f8056550b224"}, + {file = "safetensors-0.4.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e1625a8d07d046e968bd5c4961810aba1225984e4fb9243626f9d04a06ed3fee"}, + {file = "safetensors-0.4.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f74c86b25615cb24ad4cff765a2eefc09d71bf0fed97588cf585aad9c38fbb4"}, + {file = "safetensors-0.4.2-cp312-none-win32.whl", hash = "sha256:8523b9c5777d771bcde5c2389c03f1cdf7ebe8797432a1bd5e345efe25c55987"}, + {file = "safetensors-0.4.2-cp312-none-win_amd64.whl", hash = "sha256:dcff0243e1737a21f83d664c63fed89d1f532c23fc6830d0427279fabd789ccb"}, + {file = "safetensors-0.4.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:96ad3d7d472612e26cbe413922b4fb13933310f0511d346ea5cc9a1e856e52eb"}, + {file = "safetensors-0.4.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:88250922401b5ae4e37de929178caf46be47ed16c817b2237b81679bec07c120"}, + {file = "safetensors-0.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d40443554142fc0ab30652d5cc8554c4b7a613513bde00373e18afd5de8cbe4b"}, + {file = "safetensors-0.4.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:27f53f70106224d32d874aacecbeb4a6e4c5b16a1d2006d0e876d97229086d71"}, + {file = "safetensors-0.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cc068afe23734dfb26ce19db0a7877499ddf73b1d55ceb762417e8da4a1b05fb"}, + {file = "safetensors-0.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9be1918eb8d43a11a6f8806759fccfa0eeb0542b12924caba66af8a7800ad01a"}, + {file = "safetensors-0.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41911087d20a7bbd78cb4ad4f98aab0c431533107584df6635d8b54b99945573"}, + {file = "safetensors-0.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:50771c662aab909f31e94d048e76861fd027d66076ea773eef2e66c717766e24"}, + {file = "safetensors-0.4.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:13f2e57be007b7ea9329133d2399e6bdfcf1910f655440a4da17df3a45afcd30"}, + {file = "safetensors-0.4.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c772147e6395bc829842e0a98e1b30c67fe25d816299c28196488511d5a5e951"}, + {file = "safetensors-0.4.2-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:36239a0060b537a3e8c473df78cffee14c3ec4f51d5f1a853af99371a2fb2a35"}, + {file = "safetensors-0.4.2-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:d0cbb7664fad2c307f95195f951b7059e95dc23e0e1822e5978c8b500098543c"}, + {file = "safetensors-0.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b3e55adb6bd9dc1c2a341e72f48f075953fa35d173dd8e29a95b3b02d0d1462"}, + {file = "safetensors-0.4.2-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42f743b3cca863fba53ca57a193f510e5ec359b97f38c282437716b6768e4a25"}, + {file = "safetensors-0.4.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04e6af4a6dbeb06c4e6e7d46cf9c716cbc4cc5ef62584fd8a7c0fe558562df45"}, + {file = "safetensors-0.4.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a492ba21b5c8f14ee5ec9b20f42ba969e53ca1f909a4d04aad736b66a341dcc2"}, + {file = "safetensors-0.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b25b8233a1a85dc67e39838951cfb01595d792f3b7b644add63edb652992e030"}, + {file = "safetensors-0.4.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fd27e063fbdafe776f7b1714da59110e88f270e86db00788a8fd65f4eacfeba7"}, + {file = "safetensors-0.4.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1b6fa399f251bbeb52029bf5a0ac2878d7705dd3612a2f8895b48e9c11f0367d"}, + {file = "safetensors-0.4.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:de642d46b459e4afd5c2020b26c0d6d869a171ea00411897d5776c127cac74f0"}, + {file = "safetensors-0.4.2-cp37-none-win32.whl", hash = "sha256:77b72d17754c93bb68f3598182f14d78776e0b9b31682ca5bb2c7c5bd9a75267"}, + {file = "safetensors-0.4.2-cp37-none-win_amd64.whl", hash = "sha256:d36ee3244d461cd655aeef493792c3bccf4875282f8407fd9af99e9a41cf2530"}, + {file = "safetensors-0.4.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:16b6b3884f7876c6b3b23a742428223a7170a5a9dac819d8c12a1569422c4b5a"}, + {file = "safetensors-0.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ee25d311493fbbe0be9d395faee46e9d79e8948f461e388ff39e59875ed9a350"}, + {file = "safetensors-0.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eed8097968585cd752a1171f86fce9aa1d89a29033e5cd8bec5a502e29f6b7af"}, + {file = "safetensors-0.4.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:880e6865cf72cb67f9ab8d04a3c4b49dd95ae92fb1583929ce65aed94e1f685f"}, + {file = "safetensors-0.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91290f83daf80ce6d1a7f629b244443c200060a80f908b29d879021409e5ea94"}, + {file = "safetensors-0.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3517d568486ab3508a7acc360b82d7a4a3e26b86efdf210a9ecd9d233c40708a"}, + {file = "safetensors-0.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1f43a77eb38540f782999e5dc5645164fe9027d3f0194f6c9a5126168017efa"}, + {file = "safetensors-0.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b684d9818aa5d63fddc65f7d0151968037d255d91adf74eba82125b41c680aaa"}, + {file = "safetensors-0.4.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ab1f5d84185f9fefaf21413efb764e4908057b8a9a0b987ede890c353490fd70"}, + {file = "safetensors-0.4.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2bd979642e6c3a517ef4b84ff36c2fee4015664fea05a61154fc565978347553"}, + {file = "safetensors-0.4.2-cp38-none-win32.whl", hash = "sha256:11be6e7afed29e5a5628f0aa6214e34bc194da73f558dc69fc7d56e07037422a"}, + {file = "safetensors-0.4.2-cp38-none-win_amd64.whl", hash = "sha256:2f7a6e5d29bd2cc340cffaa391fa437b1be9d21a2bd8b8724d2875d13a6ef2a9"}, + {file = "safetensors-0.4.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a5a921b4fe6925f9942adff3ebae8c16e0487908c54586a5a42f35b59fd69794"}, + {file = "safetensors-0.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b691727228c28f2d82d8a92b2bc26e7a1f129ee40b2f2a3185b5974e038ed47c"}, + {file = "safetensors-0.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91ca1056decc4e981248786e87b2a202d4841ee5f99d433f1adf3d44d4bcfa0e"}, + {file = "safetensors-0.4.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:55969fd2e6fdb38dc221b0ab380668c21b0efa12a7562db9924759faa3c51757"}, + {file = "safetensors-0.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ae429bfaecc10ab5fe78c93009b3d1656c1581da560041e700eadb497dbe7a4"}, + {file = "safetensors-0.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ff88f194fe4ac50b463a4a6f0c03af9ad72eb5d24ec6d6730af59522e37fedb"}, + {file = "safetensors-0.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a80cb48d0a447f8dd18e61813efa7d3f8f8d52edf0f05806abc0c59b83431f57"}, + {file = "safetensors-0.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b286fb7adfee70a4189898ac2342b8a67d5f493e6b21b0af89ca8eac1b967cbf"}, + {file = "safetensors-0.4.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ceeff9ddbab4f78738489eb6682867ae946178776f33699737b2129b5394dc1"}, + {file = "safetensors-0.4.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a26fae748a7488cb3aac381eddfa818c42052c87b5e689fb4c6e82ed58cec209"}, + {file = "safetensors-0.4.2-cp39-none-win32.whl", hash = "sha256:039a42ab33c9d68b39706fd38f1922ace26866eff246bf20271edb619f5f848b"}, + {file = "safetensors-0.4.2-cp39-none-win_amd64.whl", hash = "sha256:b3a3e1f5b85859e398773f064943b62a4059f225008a2a8ee6add1edcf77cacf"}, + {file = "safetensors-0.4.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:4e70d442ad17e8b153ef9095bf48ea64f15a66bf26dc2b6ca94660c154edbc24"}, + {file = "safetensors-0.4.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b90f1d9809caf4ff395951b4703295a68d12907f6945bbc3129e934ff8ae46f6"}, + {file = "safetensors-0.4.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c7ac9ad3728838006598e296b3ae9f27d80b489effd4685b92d97b3fc4c98f6"}, + {file = "safetensors-0.4.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5730d77e6ff7f4c7039e20913661ad0ea2f86c09e71c039e73dfdd1f394f08"}, + {file = "safetensors-0.4.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:44feb8cb156d6803dcd19fc6b81b27235f29b877660605a6ac35e1da7d64f0e4"}, + {file = "safetensors-0.4.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:523a241c33e7c827ab9a3a23760d75c7d062f43dfe55b6b019409f89b0fb52d1"}, + {file = "safetensors-0.4.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fb18300e8eb74291225214f26c9a8ae2110fd61a6c9b5a2ff4c4e0eb1bb9a998"}, + {file = "safetensors-0.4.2-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fe5437ff9fb116e44f2ab558981249ae63f978392b4576e62fcfe167d353edbc"}, + {file = "safetensors-0.4.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9304a0934ced5a5d272f39de36291dc141dfc152d277f03fb4d65f2fb2ffa7c"}, + {file = "safetensors-0.4.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:160ba1b1e11cf874602c233ab80a14f588571d09556cbc3586900121d622b5ed"}, + {file = "safetensors-0.4.2-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04fcd6fcf7d9c13c7e5dc7e08de5e492ee4daa8f4ad74b4d8299d3eb0224292f"}, + {file = "safetensors-0.4.2-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:906d14c4a677d35834fb0f3a5455ef8305e1bba10a5e0f2e0f357b3d1ad989f2"}, + {file = "safetensors-0.4.2-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:df3fcdec0cd543084610d1f09c65cdb10fb3079f79bceddc092b0d187c6a265b"}, + {file = "safetensors-0.4.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5ca76f13fb1cef242ea3ad2cb37388e7d005994f42af8b44bee56ba48b2d45ce"}, + {file = "safetensors-0.4.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:278a1a3414c020785decdcd741c578725721274d2f9f787fcc930882e83b89cc"}, + {file = "safetensors-0.4.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b5a461cc68ecd42d9d546e5e1268a39d8ede7934a68d1ce17c3c659cb829d6"}, + {file = "safetensors-0.4.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2341411412a41671d25e26bed59ec121e46bf4fadb8132895e610411c4b9681"}, + {file = "safetensors-0.4.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3497ac3895acf17c5f98197f1fa4769f09c5e7ede07fcb102f1c201e663e052c"}, + {file = "safetensors-0.4.2-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:01b5e71d3754d2201294f1eb7a6d59cce3a5702ff96d83d226571b2ca2183837"}, + {file = "safetensors-0.4.2-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3627dbd1ea488dd8046a0491de5087f3c0d641e7acc80c0189a33c69398f1cd1"}, + {file = "safetensors-0.4.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9d56f0ef53afad26ec54ceede78a43e9a23a076dadbbda7b44d304c591abf4c1"}, + {file = "safetensors-0.4.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b259ca73d42daf658a1bda463f1f83885ae4d93a60869be80d7f7dfcc9d8bbb5"}, + {file = "safetensors-0.4.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ebc3cd401e4eb54e7c0a70346be565e81942d9a41fafd5f4bf7ab3a55d10378"}, + {file = "safetensors-0.4.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5bc384a0309b706aa0425c93abb0390508a61bf029ce99c7d9df4220f25871a5"}, + {file = "safetensors-0.4.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:af2d8f7235d8a08fbccfb8394387890e7fa38942b349a94e6eff13c52ac98087"}, + {file = "safetensors-0.4.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0911315bbcc5289087d063c2c2c7ccd711ea97a7e557a7bce005ac2cf80146aa"}, + {file = "safetensors-0.4.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1efe31673be91832d73439a2af426743e1395fc9ef7b081914e9e1d567bd7b5f"}, + {file = "safetensors-0.4.2.tar.gz", hash = "sha256:acc85dcb09ec5e8aa787f588d7ad4d55c103f31e4ff060e17d92cc0e8b8cac73"}, +] + +[package.extras] +all = ["safetensors[jax]", "safetensors[numpy]", "safetensors[paddlepaddle]", "safetensors[pinned-tf]", "safetensors[quality]", "safetensors[testing]", "safetensors[torch]"] +dev = ["safetensors[all]"] +jax = ["flax (>=0.6.3)", "jax (>=0.3.25)", "jaxlib (>=0.3.25)", "safetensors[numpy]"] +mlx = ["mlx (>=0.0.9)"] +numpy = ["numpy (>=1.21.6)"] +paddlepaddle = ["paddlepaddle (>=2.4.1)", "safetensors[numpy]"] +pinned-tf = ["safetensors[numpy]", "tensorflow (==2.11.0)"] +quality = ["black (==22.3)", "click (==8.0.4)", "flake8 (>=3.8.3)", "isort (>=5.5.4)"] +tensorflow = ["safetensors[numpy]", "tensorflow (>=2.11.0)"] +testing = ["h5py (>=3.7.0)", "huggingface_hub (>=0.12.1)", "hypothesis (>=6.70.2)", "pytest (>=7.2.0)", "pytest-benchmark (>=4.0.0)", "safetensors[numpy]", "setuptools_rust (>=1.5.2)"] +torch = ["safetensors[numpy]", "torch (>=1.10)"] + +[[package]] +name = "scikit-learn" +version = "1.4.1.post1" +description = "A set of python modules for machine learning and data mining" +optional = false +python-versions = ">=3.9" +files = [ + {file = "scikit-learn-1.4.1.post1.tar.gz", hash = "sha256:93d3d496ff1965470f9977d05e5ec3376fb1e63b10e4fda5e39d23c2d8969a30"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c540aaf44729ab5cd4bd5e394f2b375e65ceaea9cdd8c195788e70433d91bbc5"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4310bff71aa98b45b46cd26fa641309deb73a5d1c0461d181587ad4f30ea3c36"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f43dd527dabff5521af2786a2f8de5ba381e182ec7292663508901cf6ceaf6e"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c02e27d65b0c7dc32f2c5eb601aaf5530b7a02bfbe92438188624524878336f2"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-win_amd64.whl", hash = "sha256:629e09f772ad42f657ca60a1a52342eef786218dd20cf1369a3b8d085e55ef8f"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6145dfd9605b0b50ae72cdf72b61a2acd87501369a763b0d73d004710ebb76b5"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1afed6951bc9d2053c6ee9a518a466cbc9b07c6a3f9d43bfe734192b6125d508"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce03506ccf5f96b7e9030fea7eb148999b254c44c10182ac55857bc9b5d4815f"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ba516fcdc73d60e7f48cbb0bccb9acbdb21807de3651531208aac73c758e3ab"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-win_amd64.whl", hash = "sha256:78cd27b4669513b50db4f683ef41ea35b5dddc797bd2bbd990d49897fd1c8a46"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a1e289f33f613cefe6707dead50db31930530dc386b6ccff176c786335a7b01c"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0df87de9ce1c0140f2818beef310fb2e2afdc1e66fc9ad587965577f17733649"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:712c1c69c45b58ef21635360b3d0a680ff7d83ac95b6f9b82cf9294070cda710"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1754b0c2409d6ed5a3380512d0adcf182a01363c669033a2b55cca429ed86a81"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-win_amd64.whl", hash = "sha256:1d491ef66e37f4e812db7e6c8286520c2c3fc61b34bf5e59b67b4ce528de93af"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:aa0029b78ef59af22cfbd833e8ace8526e4df90212db7ceccbea582ebb5d6794"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:14e4c88436ac96bf69eb6d746ac76a574c314a23c6961b7d344b38877f20fee1"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7cd3a77c32879311f2aa93466d3c288c955ef71d191503cf0677c3340ae8ae0"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a3ee19211ded1a52ee37b0a7b373a8bfc66f95353af058a210b692bd4cda0dd"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-win_amd64.whl", hash = "sha256:234b6bda70fdcae9e4abbbe028582ce99c280458665a155eed0b820599377d25"}, +] + +[package.dependencies] +joblib = ">=1.2.0" +numpy = ">=1.19.5,<2.0" +scipy = ">=1.6.0" +threadpoolctl = ">=2.0.0" + +[package.extras] +benchmark = ["matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "pandas (>=1.1.5)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] +tests = ["black (>=23.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.19.12)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.17.2)"] + +[[package]] +name = "scipy" +version = "1.12.0" +description = "Fundamental algorithms for scientific computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "scipy-1.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78e4402e140879387187f7f25d91cc592b3501a2e51dfb320f48dfb73565f10b"}, + {file = "scipy-1.12.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5f00ebaf8de24d14b8449981a2842d404152774c1a1d880c901bf454cb8e2a1"}, + {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e53958531a7c695ff66c2e7bb7b79560ffdc562e2051644c5576c39ff8efb563"}, + {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e32847e08da8d895ce09d108a494d9eb78974cf6de23063f93306a3e419960c"}, + {file = "scipy-1.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c1020cad92772bf44b8e4cdabc1df5d87376cb219742549ef69fc9fd86282dd"}, + {file = "scipy-1.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:75ea2a144096b5e39402e2ff53a36fecfd3b960d786b7efd3c180e29c39e53f2"}, + {file = "scipy-1.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:408c68423f9de16cb9e602528be4ce0d6312b05001f3de61fe9ec8b1263cad08"}, + {file = "scipy-1.12.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5adfad5dbf0163397beb4aca679187d24aec085343755fcdbdeb32b3679f254c"}, + {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3003652496f6e7c387b1cf63f4bb720951cfa18907e998ea551e6de51a04467"}, + {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8066bce124ee5531d12a74b617d9ac0ea59245246410e19bca549656d9a40a"}, + {file = "scipy-1.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8bee4993817e204d761dba10dbab0774ba5a8612e57e81319ea04d84945375ba"}, + {file = "scipy-1.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a24024d45ce9a675c1fb8494e8e5244efea1c7a09c60beb1eeb80373d0fecc70"}, + {file = "scipy-1.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7e76cc48638228212c747ada851ef355c2bb5e7f939e10952bc504c11f4e372"}, + {file = "scipy-1.12.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f7ce148dffcd64ade37b2df9315541f9adad6efcaa86866ee7dd5db0c8f041c3"}, + {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c39f92041f490422924dfdb782527a4abddf4707616e07b021de33467f917bc"}, + {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7ebda398f86e56178c2fa94cad15bf457a218a54a35c2a7b4490b9f9cb2676c"}, + {file = "scipy-1.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:95e5c750d55cf518c398a8240571b0e0782c2d5a703250872f36eaf737751338"}, + {file = "scipy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e646d8571804a304e1da01040d21577685ce8e2db08ac58e543eaca063453e1c"}, + {file = "scipy-1.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:913d6e7956c3a671de3b05ccb66b11bc293f56bfdef040583a7221d9e22a2e35"}, + {file = "scipy-1.12.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba1b0c7256ad75401c73e4b3cf09d1f176e9bd4248f0d3112170fb2ec4db067"}, + {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:730badef9b827b368f351eacae2e82da414e13cf8bd5051b4bdfd720271a5371"}, + {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6546dc2c11a9df6926afcbdd8a3edec28566e4e785b915e849348c6dd9f3f490"}, + {file = "scipy-1.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:196ebad3a4882081f62a5bf4aeb7326aa34b110e533aab23e4374fcccb0890dc"}, + {file = "scipy-1.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:b360f1b6b2f742781299514e99ff560d1fe9bd1bff2712894b52abe528d1fd1e"}, + {file = "scipy-1.12.0.tar.gz", hash = "sha256:4bf5abab8a36d20193c698b0f1fc282c1d083c94723902c447e5d2f1780936a3"}, +] + +[package.dependencies] +numpy = ">=1.22.4,<1.29.0" + +[package.extras] +dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] +doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] +test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] + +[[package]] +name = "sentence-transformers" +version = "2.5.1" +description = "Multilingual text embeddings" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "sentence-transformers-2.5.1.tar.gz", hash = "sha256:754bf2b2623eb46904fd9c72ff89a0f90200fe141a8d45b03e83bc6d51718153"}, + {file = "sentence_transformers-2.5.1-py3-none-any.whl", hash = "sha256:f12346f7fca06ed1198d24235cb9114a74665506f7c30044e0a6f12de7eeeb77"}, +] + +[package.dependencies] +huggingface-hub = ">=0.15.1" +numpy = "*" +Pillow = "*" +scikit-learn = "*" +scipy = "*" +torch = ">=1.11.0" +tqdm = "*" +transformers = ">=4.32.0,<5.0.0" [[package]] name = "setuptools" @@ -1148,6 +2940,104 @@ files = [ {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, ] +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.28" +description = "Database Abstraction Library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "SQLAlchemy-2.0.28-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0b148ab0438f72ad21cb004ce3bdaafd28465c4276af66df3b9ecd2037bf252"}, + {file = "SQLAlchemy-2.0.28-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bbda76961eb8f27e6ad3c84d1dc56d5bc61ba8f02bd20fcf3450bd421c2fcc9c"}, + {file = "SQLAlchemy-2.0.28-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feea693c452d85ea0015ebe3bb9cd15b6f49acc1a31c28b3c50f4db0f8fb1e71"}, + {file = "SQLAlchemy-2.0.28-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5da98815f82dce0cb31fd1e873a0cb30934971d15b74e0d78cf21f9e1b05953f"}, + {file = "SQLAlchemy-2.0.28-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4a5adf383c73f2d49ad15ff363a8748319ff84c371eed59ffd0127355d6ea1da"}, + {file = "SQLAlchemy-2.0.28-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56856b871146bfead25fbcaed098269d90b744eea5cb32a952df00d542cdd368"}, + {file = "SQLAlchemy-2.0.28-cp310-cp310-win32.whl", hash = "sha256:943aa74a11f5806ab68278284a4ddd282d3fb348a0e96db9b42cb81bf731acdc"}, + {file = "SQLAlchemy-2.0.28-cp310-cp310-win_amd64.whl", hash = "sha256:c6c4da4843e0dabde41b8f2e8147438330924114f541949e6318358a56d1875a"}, + {file = "SQLAlchemy-2.0.28-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46a3d4e7a472bfff2d28db838669fc437964e8af8df8ee1e4548e92710929adc"}, + {file = "SQLAlchemy-2.0.28-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d3dd67b5d69794cfe82862c002512683b3db038b99002171f624712fa71aeaa"}, + {file = "SQLAlchemy-2.0.28-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61e2e41656a673b777e2f0cbbe545323dbe0d32312f590b1bc09da1de6c2a02"}, + {file = "SQLAlchemy-2.0.28-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0315d9125a38026227f559488fe7f7cee1bd2fbc19f9fd637739dc50bb6380b2"}, + {file = "SQLAlchemy-2.0.28-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:af8ce2d31679006e7b747d30a89cd3ac1ec304c3d4c20973f0f4ad58e2d1c4c9"}, + {file = "SQLAlchemy-2.0.28-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:81ba314a08c7ab701e621b7ad079c0c933c58cdef88593c59b90b996e8b58fa5"}, + {file = "SQLAlchemy-2.0.28-cp311-cp311-win32.whl", hash = "sha256:1ee8bd6d68578e517943f5ebff3afbd93fc65f7ef8f23becab9fa8fb315afb1d"}, + {file = "SQLAlchemy-2.0.28-cp311-cp311-win_amd64.whl", hash = "sha256:ad7acbe95bac70e4e687a4dc9ae3f7a2f467aa6597049eeb6d4a662ecd990bb6"}, + {file = "SQLAlchemy-2.0.28-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d3499008ddec83127ab286c6f6ec82a34f39c9817f020f75eca96155f9765097"}, + {file = "SQLAlchemy-2.0.28-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9b66fcd38659cab5d29e8de5409cdf91e9986817703e1078b2fdaad731ea66f5"}, + {file = "SQLAlchemy-2.0.28-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bea30da1e76cb1acc5b72e204a920a3a7678d9d52f688f087dc08e54e2754c67"}, + {file = "SQLAlchemy-2.0.28-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:124202b4e0edea7f08a4db8c81cc7859012f90a0d14ba2bf07c099aff6e96462"}, + {file = "SQLAlchemy-2.0.28-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e23b88c69497a6322b5796c0781400692eca1ae5532821b39ce81a48c395aae9"}, + {file = "SQLAlchemy-2.0.28-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b6303bfd78fb3221847723104d152e5972c22367ff66edf09120fcde5ddc2e2"}, + {file = "SQLAlchemy-2.0.28-cp312-cp312-win32.whl", hash = "sha256:a921002be69ac3ab2cf0c3017c4e6a3377f800f1fca7f254c13b5f1a2f10022c"}, + {file = "SQLAlchemy-2.0.28-cp312-cp312-win_amd64.whl", hash = "sha256:b4a2cf92995635b64876dc141af0ef089c6eea7e05898d8d8865e71a326c0385"}, + {file = "SQLAlchemy-2.0.28-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e91b5e341f8c7f1e5020db8e5602f3ed045a29f8e27f7f565e0bdee3338f2c7"}, + {file = "SQLAlchemy-2.0.28-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45c7b78dfc7278329f27be02c44abc0d69fe235495bb8e16ec7ef1b1a17952db"}, + {file = "SQLAlchemy-2.0.28-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3eba73ef2c30695cb7eabcdb33bb3d0b878595737479e152468f3ba97a9c22a4"}, + {file = "SQLAlchemy-2.0.28-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5df5d1dafb8eee89384fb7a1f79128118bc0ba50ce0db27a40750f6f91aa99d5"}, + {file = "SQLAlchemy-2.0.28-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2858bbab1681ee5406650202950dc8f00e83b06a198741b7c656e63818633526"}, + {file = "SQLAlchemy-2.0.28-cp37-cp37m-win32.whl", hash = "sha256:9461802f2e965de5cff80c5a13bc945abea7edaa1d29360b485c3d2b56cdb075"}, + {file = "SQLAlchemy-2.0.28-cp37-cp37m-win_amd64.whl", hash = "sha256:a6bec1c010a6d65b3ed88c863d56b9ea5eeefdf62b5e39cafd08c65f5ce5198b"}, + {file = "SQLAlchemy-2.0.28-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:843a882cadebecc655a68bd9a5b8aa39b3c52f4a9a5572a3036fb1bb2ccdc197"}, + {file = "SQLAlchemy-2.0.28-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:dbb990612c36163c6072723523d2be7c3eb1517bbdd63fe50449f56afafd1133"}, + {file = "SQLAlchemy-2.0.28-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7e4baf9161d076b9a7e432fce06217b9bd90cfb8f1d543d6e8c4595627edb9"}, + {file = "SQLAlchemy-2.0.28-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0a5354cb4de9b64bccb6ea33162cb83e03dbefa0d892db88a672f5aad638a75"}, + {file = "SQLAlchemy-2.0.28-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fffcc8edc508801ed2e6a4e7b0d150a62196fd28b4e16ab9f65192e8186102b6"}, + {file = "SQLAlchemy-2.0.28-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aca7b6d99a4541b2ebab4494f6c8c2f947e0df4ac859ced575238e1d6ca5716b"}, + {file = "SQLAlchemy-2.0.28-cp38-cp38-win32.whl", hash = "sha256:8c7f10720fc34d14abad5b647bc8202202f4948498927d9f1b4df0fb1cf391b7"}, + {file = "SQLAlchemy-2.0.28-cp38-cp38-win_amd64.whl", hash = "sha256:243feb6882b06a2af68ecf4bec8813d99452a1b62ba2be917ce6283852cf701b"}, + {file = "SQLAlchemy-2.0.28-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fc4974d3684f28b61b9a90fcb4c41fb340fd4b6a50c04365704a4da5a9603b05"}, + {file = "SQLAlchemy-2.0.28-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87724e7ed2a936fdda2c05dbd99d395c91ea3c96f029a033a4a20e008dd876bf"}, + {file = "SQLAlchemy-2.0.28-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68722e6a550f5de2e3cfe9da6afb9a7dd15ef7032afa5651b0f0c6b3adb8815d"}, + {file = "SQLAlchemy-2.0.28-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:328529f7c7f90adcd65aed06a161851f83f475c2f664a898af574893f55d9e53"}, + {file = "SQLAlchemy-2.0.28-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:df40c16a7e8be7413b885c9bf900d402918cc848be08a59b022478804ea076b8"}, + {file = "SQLAlchemy-2.0.28-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:426f2fa71331a64f5132369ede5171c52fd1df1bd9727ce621f38b5b24f48750"}, + {file = "SQLAlchemy-2.0.28-cp39-cp39-win32.whl", hash = "sha256:33157920b233bc542ce497a81a2e1452e685a11834c5763933b440fedd1d8e2d"}, + {file = "SQLAlchemy-2.0.28-cp39-cp39-win_amd64.whl", hash = "sha256:2f60843068e432311c886c5f03c4664acaef507cf716f6c60d5fde7265be9d7b"}, + {file = "SQLAlchemy-2.0.28-py3-none-any.whl", hash = "sha256:78bb7e8da0183a8301352d569900d9d3594c48ac21dc1c2ec6b3121ed8b6c986"}, + {file = "SQLAlchemy-2.0.28.tar.gz", hash = "sha256:dd53b6c4e6d960600fd6532b79ee28e2da489322fcf6648738134587faf767b6"}, +] + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} +typing-extensions = ">=4.6.0" + +[package.extras] +aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] +aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] +asyncio = ["greenlet (!=0.4.17)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] +mssql = ["pyodbc"] +mssql-pymssql = ["pymssql"] +mssql-pyodbc = ["pyodbc"] +mypy = ["mypy (>=0.910)"] +mysql = ["mysqlclient (>=1.4.0)"] +mysql-connector = ["mysql-connector-python"] +oracle = ["cx_oracle (>=8)"] +oracle-oracledb = ["oracledb (>=1.0.1)"] +postgresql = ["psycopg2 (>=2.7)"] +postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] +postgresql-pg8000 = ["pg8000 (>=1.29.1)"] +postgresql-psycopg = ["psycopg (>=3.0.7)"] +postgresql-psycopg2binary = ["psycopg2-binary"] +postgresql-psycopg2cffi = ["psycopg2cffi"] +postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"] +pymysql = ["pymysql"] +sqlcipher = ["sqlcipher3_binary"] + [[package]] name = "sqlparse" version = "0.4.4" @@ -1164,6 +3054,317 @@ dev = ["build", "flake8"] doc = ["sphinx"] test = ["pytest", "pytest-cov"] +[[package]] +name = "sympy" +version = "1.12" +description = "Computer algebra system (CAS) in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "sympy-1.12-py3-none-any.whl", hash = "sha256:c3588cd4295d0c0f603d0f2ae780587e64e2efeedb3521e46b9bb1d08d184fa5"}, + {file = "sympy-1.12.tar.gz", hash = "sha256:ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8"}, +] + +[package.dependencies] +mpmath = ">=0.19" + +[[package]] +name = "tenacity" +version = "8.2.3" +description = "Retry code until it succeeds" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"}, + {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"}, +] + +[package.extras] +doc = ["reno", "sphinx", "tornado (>=4.5)"] + +[[package]] +name = "threadpoolctl" +version = "3.3.0" +description = "threadpoolctl" +optional = false +python-versions = ">=3.8" +files = [ + {file = "threadpoolctl-3.3.0-py3-none-any.whl", hash = "sha256:6155be1f4a39f31a18ea70f94a77e0ccd57dced08122ea61109e7da89883781e"}, + {file = "threadpoolctl-3.3.0.tar.gz", hash = "sha256:5dac632b4fa2d43f42130267929af3ba01399ef4bd1882918e92dbc30365d30c"}, +] + +[[package]] +name = "tokenizers" +version = "0.15.2" +description = "" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tokenizers-0.15.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:52f6130c9cbf70544287575a985bf44ae1bda2da7e8c24e97716080593638012"}, + {file = "tokenizers-0.15.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:054c1cc9c6d68f7ffa4e810b3d5131e0ba511b6e4be34157aa08ee54c2f8d9ee"}, + {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a9b9b070fdad06e347563b88c278995735292ded1132f8657084989a4c84a6d5"}, + {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea621a7eef4b70e1f7a4e84dd989ae3f0eeb50fc8690254eacc08acb623e82f1"}, + {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cf7fd9a5141634fa3aa8d6b7be362e6ae1b4cda60da81388fa533e0b552c98fd"}, + {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44f2a832cd0825295f7179eaf173381dc45230f9227ec4b44378322d900447c9"}, + {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8b9ec69247a23747669ec4b0ca10f8e3dfb3545d550258129bd62291aabe8605"}, + {file = "tokenizers-0.15.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b6a4c78da863ff26dbd5ad9a8ecc33d8a8d97b535172601cf00aee9d7ce9ce"}, + {file = "tokenizers-0.15.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5ab2a4d21dcf76af60e05af8063138849eb1d6553a0d059f6534357bce8ba364"}, + {file = "tokenizers-0.15.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a47acfac7e511f6bbfcf2d3fb8c26979c780a91e06fb5b9a43831b2c0153d024"}, + {file = "tokenizers-0.15.2-cp310-none-win32.whl", hash = "sha256:064ff87bb6acdbd693666de9a4b692add41308a2c0ec0770d6385737117215f2"}, + {file = "tokenizers-0.15.2-cp310-none-win_amd64.whl", hash = "sha256:3b919afe4df7eb6ac7cafd2bd14fb507d3f408db7a68c43117f579c984a73843"}, + {file = "tokenizers-0.15.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:89cd1cb93e4b12ff39bb2d626ad77e35209de9309a71e4d3d4672667b4b256e7"}, + {file = "tokenizers-0.15.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cfed5c64e5be23d7ee0f0e98081a25c2a46b0b77ce99a4f0605b1ec43dd481fa"}, + {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a907d76dcfda37023ba203ab4ceeb21bc5683436ebefbd895a0841fd52f6f6f2"}, + {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20ea60479de6fc7b8ae756b4b097572372d7e4032e2521c1bbf3d90c90a99ff0"}, + {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:48e2b9335be2bc0171df9281385c2ed06a15f5cf121c44094338306ab7b33f2c"}, + {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:112a1dd436d2cc06e6ffdc0b06d55ac019a35a63afd26475205cb4b1bf0bfbff"}, + {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4620cca5c2817177ee8706f860364cc3a8845bc1e291aaf661fb899e5d1c45b0"}, + {file = "tokenizers-0.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ccd73a82751c523b3fc31ff8194702e4af4db21dc20e55b30ecc2079c5d43cb7"}, + {file = "tokenizers-0.15.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:107089f135b4ae7817affe6264f8c7a5c5b4fd9a90f9439ed495f54fcea56fb4"}, + {file = "tokenizers-0.15.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0ff110ecc57b7aa4a594396525a3451ad70988e517237fe91c540997c4e50e29"}, + {file = "tokenizers-0.15.2-cp311-none-win32.whl", hash = "sha256:6d76f00f5c32da36c61f41c58346a4fa7f0a61be02f4301fd30ad59834977cc3"}, + {file = "tokenizers-0.15.2-cp311-none-win_amd64.whl", hash = "sha256:cc90102ed17271cf0a1262babe5939e0134b3890345d11a19c3145184b706055"}, + {file = "tokenizers-0.15.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f86593c18d2e6248e72fb91c77d413a815153b8ea4e31f7cd443bdf28e467670"}, + {file = "tokenizers-0.15.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0774bccc6608eca23eb9d620196687c8b2360624619623cf4ba9dc9bd53e8b51"}, + {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d0222c5b7c9b26c0b4822a82f6a7011de0a9d3060e1da176f66274b70f846b98"}, + {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3835738be1de66624fff2f4f6f6684775da4e9c00bde053be7564cbf3545cc66"}, + {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0143e7d9dcd811855c1ce1ab9bf5d96d29bf5e528fd6c7824d0465741e8c10fd"}, + {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db35825f6d54215f6b6009a7ff3eedee0848c99a6271c870d2826fbbedf31a38"}, + {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f5e64b0389a2be47091d8cc53c87859783b837ea1a06edd9d8e04004df55a5c"}, + {file = "tokenizers-0.15.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e0480c452217edd35eca56fafe2029fb4d368b7c0475f8dfa3c5c9c400a7456"}, + {file = "tokenizers-0.15.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a33ab881c8fe70474980577e033d0bc9a27b7ab8272896e500708b212995d834"}, + {file = "tokenizers-0.15.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a308a607ca9de2c64c1b9ba79ec9a403969715a1b8ba5f998a676826f1a7039d"}, + {file = "tokenizers-0.15.2-cp312-none-win32.whl", hash = "sha256:b8fcfa81bcb9447df582c5bc96a031e6df4da2a774b8080d4f02c0c16b42be0b"}, + {file = "tokenizers-0.15.2-cp312-none-win_amd64.whl", hash = "sha256:38d7ab43c6825abfc0b661d95f39c7f8af2449364f01d331f3b51c94dcff7221"}, + {file = "tokenizers-0.15.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:38bfb0204ff3246ca4d5e726e8cc8403bfc931090151e6eede54d0e0cf162ef0"}, + {file = "tokenizers-0.15.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c861d35e8286a53e06e9e28d030b5a05bcbf5ac9d7229e561e53c352a85b1fc"}, + {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:936bf3842db5b2048eaa53dade907b1160f318e7c90c74bfab86f1e47720bdd6"}, + {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:620beacc3373277700d0e27718aa8b25f7b383eb8001fba94ee00aeea1459d89"}, + {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2735ecbbf37e52db4ea970e539fd2d450d213517b77745114f92867f3fc246eb"}, + {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:473c83c5e2359bb81b0b6fde870b41b2764fcdd36d997485e07e72cc3a62264a"}, + {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:968fa1fb3c27398b28a4eca1cbd1e19355c4d3a6007f7398d48826bbe3a0f728"}, + {file = "tokenizers-0.15.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:865c60ae6eaebdde7da66191ee9b7db52e542ed8ee9d2c653b6d190a9351b980"}, + {file = "tokenizers-0.15.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7c0d8b52664ab2d4a8d6686eb5effc68b78608a9008f086a122a7b2996befbab"}, + {file = "tokenizers-0.15.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:f33dfbdec3784093a9aebb3680d1f91336c56d86cc70ddf88708251da1fe9064"}, + {file = "tokenizers-0.15.2-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:d44ba80988ff9424e33e0a49445072ac7029d8c0e1601ad25a0ca5f41ed0c1d6"}, + {file = "tokenizers-0.15.2-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:dce74266919b892f82b1b86025a613956ea0ea62a4843d4c4237be2c5498ed3a"}, + {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0ef06b9707baeb98b316577acb04f4852239d856b93e9ec3a299622f6084e4be"}, + {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c73e2e74bbb07910da0d37c326869f34113137b23eadad3fc00856e6b3d9930c"}, + {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4eeb12daf02a59e29f578a865f55d87cd103ce62bd8a3a5874f8fdeaa82e336b"}, + {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ba9f6895af58487ca4f54e8a664a322f16c26bbb442effd01087eba391a719e"}, + {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ccec77aa7150e38eec6878a493bf8c263ff1fa8a62404e16c6203c64c1f16a26"}, + {file = "tokenizers-0.15.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f40604f5042ff210ba82743dda2b6aa3e55aa12df4e9f2378ee01a17e2855e"}, + {file = "tokenizers-0.15.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5645938a42d78c4885086767c70923abad047163d809c16da75d6b290cb30bbe"}, + {file = "tokenizers-0.15.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:05a77cbfebe28a61ab5c3891f9939cc24798b63fa236d84e5f29f3a85a200c00"}, + {file = "tokenizers-0.15.2-cp37-none-win32.whl", hash = "sha256:361abdc068e8afe9c5b818769a48624687fb6aaed49636ee39bec4e95e1a215b"}, + {file = "tokenizers-0.15.2-cp37-none-win_amd64.whl", hash = "sha256:7ef789f83eb0f9baeb4d09a86cd639c0a5518528f9992f38b28e819df397eb06"}, + {file = "tokenizers-0.15.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:4fe1f74a902bee74a3b25aff180fbfbf4f8b444ab37c4d496af7afd13a784ed2"}, + {file = "tokenizers-0.15.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c4b89038a684f40a6b15d6b09f49650ac64d951ad0f2a3ea9169687bbf2a8ba"}, + {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d05a1b06f986d41aed5f2de464c003004b2df8aaf66f2b7628254bcbfb72a438"}, + {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:508711a108684111ec8af89d3a9e9e08755247eda27d0ba5e3c50e9da1600f6d"}, + {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:daa348f02d15160cb35439098ac96e3a53bacf35885072611cd9e5be7d333daa"}, + {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:494fdbe5932d3416de2a85fc2470b797e6f3226c12845cadf054dd906afd0442"}, + {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2d60f5246f4da9373f75ff18d64c69cbf60c3bca597290cea01059c336d2470"}, + {file = "tokenizers-0.15.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93268e788825f52de4c7bdcb6ebc1fcd4a5442c02e730faa9b6b08f23ead0e24"}, + {file = "tokenizers-0.15.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6fc7083ab404019fc9acafe78662c192673c1e696bd598d16dc005bd663a5cf9"}, + {file = "tokenizers-0.15.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:41e39b41e5531d6b2122a77532dbea60e171ef87a3820b5a3888daa847df4153"}, + {file = "tokenizers-0.15.2-cp38-none-win32.whl", hash = "sha256:06cd0487b1cbfabefb2cc52fbd6b1f8d4c37799bd6c6e1641281adaa6b2504a7"}, + {file = "tokenizers-0.15.2-cp38-none-win_amd64.whl", hash = "sha256:5179c271aa5de9c71712e31cb5a79e436ecd0d7532a408fa42a8dbfa4bc23fd9"}, + {file = "tokenizers-0.15.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:82f8652a74cc107052328b87ea8b34291c0f55b96d8fb261b3880216a9f9e48e"}, + {file = "tokenizers-0.15.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02458bee6f5f3139f1ebbb6d042b283af712c0981f5bc50edf771d6b762d5e4f"}, + {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c9a09cd26cca2e1c349f91aa665309ddb48d71636370749414fbf67bc83c5343"}, + {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:158be8ea8554e5ed69acc1ce3fbb23a06060bd4bbb09029431ad6b9a466a7121"}, + {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ddba9a2b0c8c81633eca0bb2e1aa5b3a15362b1277f1ae64176d0f6eba78ab1"}, + {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ef5dd1d39797044642dbe53eb2bc56435308432e9c7907728da74c69ee2adca"}, + {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:454c203164e07a860dbeb3b1f4a733be52b0edbb4dd2e5bd75023ffa8b49403a"}, + {file = "tokenizers-0.15.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cf6b7f1d4dc59af960e6ffdc4faffe6460bbfa8dce27a58bf75755ffdb2526d"}, + {file = "tokenizers-0.15.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2ef09bbc16519f6c25d0c7fc0c6a33a6f62923e263c9d7cca4e58b8c61572afb"}, + {file = "tokenizers-0.15.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c9a2ebdd2ad4ec7a68e7615086e633857c85e2f18025bd05d2a4399e6c5f7169"}, + {file = "tokenizers-0.15.2-cp39-none-win32.whl", hash = "sha256:918fbb0eab96fe08e72a8c2b5461e9cce95585d82a58688e7f01c2bd546c79d0"}, + {file = "tokenizers-0.15.2-cp39-none-win_amd64.whl", hash = "sha256:524e60da0135e106b254bd71f0659be9f89d83f006ea9093ce4d1fab498c6d0d"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6a9b648a58281c4672212fab04e60648fde574877d0139cd4b4f93fe28ca8944"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:7c7d18b733be6bbca8a55084027f7be428c947ddf871c500ee603e375013ffba"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:13ca3611de8d9ddfbc4dc39ef54ab1d2d4aaa114ac8727dfdc6a6ec4be017378"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:237d1bf3361cf2e6463e6c140628e6406766e8b27274f5fcc62c747ae3c6f094"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67a0fe1e49e60c664915e9fb6b0cb19bac082ab1f309188230e4b2920230edb3"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4e022fe65e99230b8fd89ebdfea138c24421f91c1a4f4781a8f5016fd5cdfb4d"}, + {file = "tokenizers-0.15.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d857be2df69763362ac699f8b251a8cd3fac9d21893de129bc788f8baaef2693"}, + {file = "tokenizers-0.15.2-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:708bb3e4283177236309e698da5fcd0879ce8fd37457d7c266d16b550bcbbd18"}, + {file = "tokenizers-0.15.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:64c35e09e9899b72a76e762f9854e8750213f67567787d45f37ce06daf57ca78"}, + {file = "tokenizers-0.15.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1257f4394be0d3b00de8c9e840ca5601d0a4a8438361ce9c2b05c7d25f6057b"}, + {file = "tokenizers-0.15.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02272fe48280e0293a04245ca5d919b2c94a48b408b55e858feae9618138aeda"}, + {file = "tokenizers-0.15.2-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dc3ad9ebc76eabe8b1d7c04d38be884b8f9d60c0cdc09b0aa4e3bcf746de0388"}, + {file = "tokenizers-0.15.2-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:32e16bdeffa7c4f46bf2152172ca511808b952701d13e7c18833c0b73cb5c23f"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fb16ba563d59003028b678d2361a27f7e4ae0ab29c7a80690efa20d829c81fdb"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:2277c36d2d6cdb7876c274547921a42425b6810d38354327dd65a8009acf870c"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1cf75d32e8d250781940d07f7eece253f2fe9ecdb1dc7ba6e3833fa17b82fcbc"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1b3b31884dc8e9b21508bb76da80ebf7308fdb947a17affce815665d5c4d028"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b10122d8d8e30afb43bb1fe21a3619f62c3e2574bff2699cf8af8b0b6c5dc4a3"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d88b96ff0fe8e91f6ef01ba50b0d71db5017fa4e3b1d99681cec89a85faf7bf7"}, + {file = "tokenizers-0.15.2-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:37aaec5a52e959892870a7c47cef80c53797c0db9149d458460f4f31e2fb250e"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e2ea752f2b0fe96eb6e2f3adbbf4d72aaa1272079b0dfa1145507bd6a5d537e6"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:4b19a808d8799fda23504a5cd31d2f58e6f52f140380082b352f877017d6342b"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:64c86e5e068ac8b19204419ed8ca90f9d25db20578f5881e337d203b314f4104"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de19c4dc503c612847edf833c82e9f73cd79926a384af9d801dcf93f110cea4e"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea09acd2fe3324174063d61ad620dec3bcf042b495515f27f638270a7d466e8b"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cf27fd43472e07b57cf420eee1e814549203d56de00b5af8659cb99885472f1f"}, + {file = "tokenizers-0.15.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:7ca22bd897537a0080521445d91a58886c8c04084a6a19e6c78c586e0cfa92a5"}, + {file = "tokenizers-0.15.2.tar.gz", hash = "sha256:e6e9c6e019dd5484be5beafc775ae6c925f4c69a3487040ed09b45e13df2cb91"}, +] + +[package.dependencies] +huggingface_hub = ">=0.16.4,<1.0" + +[package.extras] +dev = ["tokenizers[testing]"] +docs = ["setuptools_rust", "sphinx", "sphinx_rtd_theme"] +testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests"] + +[[package]] +name = "torch" +version = "2.2.1" +description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "torch-2.2.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:8d3bad336dd2c93c6bcb3268e8e9876185bda50ebde325ef211fb565c7d15273"}, + {file = "torch-2.2.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:5297f13370fdaca05959134b26a06a7f232ae254bf2e11a50eddec62525c9006"}, + {file = "torch-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:5f5dee8433798888ca1415055f5e3faf28a3bad660e4c29e1014acd3275ab11a"}, + {file = "torch-2.2.1-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:b6d78338acabf1fb2e88bf4559d837d30230cf9c3e4337261f4d83200df1fcbe"}, + {file = "torch-2.2.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:6ab3ea2e29d1aac962e905142bbe50943758f55292f1b4fdfb6f4792aae3323e"}, + {file = "torch-2.2.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:d86664ec85902967d902e78272e97d1aff1d331f7619d398d3ffab1c9b8e9157"}, + {file = "torch-2.2.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d6227060f268894f92c61af0a44c0d8212e19cb98d05c20141c73312d923bc0a"}, + {file = "torch-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:77e990af75fb1675490deb374d36e726f84732cd5677d16f19124934b2409ce9"}, + {file = "torch-2.2.1-cp311-none-macosx_10_9_x86_64.whl", hash = "sha256:46085e328d9b738c261f470231e987930f4cc9472d9ffb7087c7a1343826ac51"}, + {file = "torch-2.2.1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:2d9e7e5ecbb002257cf98fae13003abbd620196c35f85c9e34c2adfb961321ec"}, + {file = "torch-2.2.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:ada53aebede1c89570e56861b08d12ba4518a1f8b82d467c32665ec4d1f4b3c8"}, + {file = "torch-2.2.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:be21d4c41ecebed9e99430dac87de1439a8c7882faf23bba7fea3fea7b906ac1"}, + {file = "torch-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:79848f46196750367dcdf1d2132b722180b9d889571e14d579ae82d2f50596c5"}, + {file = "torch-2.2.1-cp312-none-macosx_10_9_x86_64.whl", hash = "sha256:7ee804847be6be0032fbd2d1e6742fea2814c92bebccb177f0d3b8e92b2d2b18"}, + {file = "torch-2.2.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:84b2fb322ab091039fdfe74e17442ff046b258eb5e513a28093152c5b07325a7"}, + {file = "torch-2.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5c0c83aa7d94569997f1f474595e808072d80b04d34912ce6f1a0e1c24b0c12a"}, + {file = "torch-2.2.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:91a1b598055ba06b2c386415d2e7f6ac818545e94c5def597a74754940188513"}, + {file = "torch-2.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f93ddf3001ecec16568390b507652644a3a103baa72de3ad3b9c530e3277098"}, + {file = "torch-2.2.1-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:0e8bdd4c77ac2584f33ee14c6cd3b12767b4da508ec4eed109520be7212d1069"}, + {file = "torch-2.2.1-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:6a21bcd7076677c97ca7db7506d683e4e9db137e8420eb4a68fb67c3668232a7"}, + {file = "torch-2.2.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f1b90ac61f862634039265cd0f746cc9879feee03ff962c803486301b778714b"}, + {file = "torch-2.2.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:ed9e29eb94cd493b36bca9cb0b1fd7f06a0688215ad1e4b3ab4931726e0ec092"}, + {file = "torch-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:c47bc25744c743f3835831a20efdcfd60aeb7c3f9804a213f61e45803d16c2a5"}, + {file = "torch-2.2.1-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:0952549bcb43448c8d860d5e3e947dd18cbab491b14638e21750cb3090d5ad3e"}, + {file = "torch-2.2.1-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:26bd2272ec46fc62dcf7d24b2fb284d44fcb7be9d529ebf336b9860350d674ed"}, +] + +[package.dependencies] +filelock = "*" +fsspec = "*" +jinja2 = "*" +networkx = "*" +nvidia-cublas-cu12 = {version = "12.1.3.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cuda-cupti-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cuda-nvrtc-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cuda-runtime-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cudnn-cu12 = {version = "8.9.2.26", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cufft-cu12 = {version = "11.0.2.54", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-curand-cu12 = {version = "10.3.2.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cusolver-cu12 = {version = "11.4.5.107", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cusparse-cu12 = {version = "12.1.0.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-nccl-cu12 = {version = "2.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-nvtx-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +sympy = "*" +typing-extensions = ">=4.8.0" + +[package.extras] +opt-einsum = ["opt-einsum (>=3.3)"] +optree = ["optree (>=0.9.1)"] + +[[package]] +name = "tqdm" +version = "4.66.2" +description = "Fast, Extensible Progress Meter" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, + {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "transformers" +version = "4.38.2" +description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "transformers-4.38.2-py3-none-any.whl", hash = "sha256:c4029cb9f01b3dd335e52f364c52d2b37c65b4c78e02e6a08b1919c5c928573e"}, + {file = "transformers-4.38.2.tar.gz", hash = "sha256:c5fc7ad682b8a50a48b2a4c05d4ea2de5567adb1bdd00053619dbe5960857dd5"}, +] + +[package.dependencies] +filelock = "*" +huggingface-hub = ">=0.19.3,<1.0" +numpy = ">=1.17" +packaging = ">=20.0" +pyyaml = ">=5.1" +regex = "!=2019.12.17" +requests = "*" +safetensors = ">=0.4.1" +tokenizers = ">=0.14,<0.19" +tqdm = ">=4.27" + +[package.extras] +accelerate = ["accelerate (>=0.21.0)"] +agents = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "datasets (!=2.5.0)", "diffusers", "opencv-python", "sentencepiece (>=0.1.91,!=0.1.92)", "torch"] +all = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm", "tokenizers (>=0.14,<0.19)", "torch", "torchaudio", "torchvision"] +audio = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] +codecarbon = ["codecarbon (==1.2.0)"] +deepspeed = ["accelerate (>=0.21.0)", "deepspeed (>=0.9.3)"] +deepspeed-testing = ["GitPython (<3.1.19)", "accelerate (>=0.21.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "deepspeed (>=0.9.3)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder (>=0.3.0)", "nltk", "optuna", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"] +dev = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "decord (==0.6.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "timm", "tokenizers (>=0.14,<0.19)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.14,<0.19)", "urllib3 (<2.0.0)"] +dev-torch = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "librosa", "nltk", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "timeout-decorator", "timm", "tokenizers (>=0.14,<0.19)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +docs = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "hf-doc-builder", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm", "tokenizers (>=0.14,<0.19)", "torch", "torchaudio", "torchvision"] +docs-specific = ["hf-doc-builder"] +flax = ["flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "optax (>=0.0.8,<=0.1.4)"] +flax-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] +ftfy = ["ftfy"] +integrations = ["optuna", "ray[tune] (>=2.7.0)", "sigopt"] +ja = ["fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "rhoknp (>=1.1.0,<1.3.1)", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)"] +modelcreation = ["cookiecutter (==1.7.3)"] +natten = ["natten (>=0.14.6,<0.15.0)"] +onnx = ["onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "tf2onnx"] +onnxruntime = ["onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)"] +optuna = ["optuna"] +quality = ["GitPython (<3.1.19)", "datasets (!=2.5.0)", "hf-doc-builder (>=0.3.0)", "isort (>=5.5.4)", "ruff (==0.1.5)", "urllib3 (<2.0.0)"] +ray = ["ray[tune] (>=2.7.0)"] +retrieval = ["datasets (!=2.5.0)", "faiss-cpu"] +sagemaker = ["sagemaker (>=2.31.0)"] +sentencepiece = ["protobuf", "sentencepiece (>=0.1.91,!=0.1.92)"] +serving = ["fastapi", "pydantic", "starlette", "uvicorn"] +sigopt = ["sigopt"] +sklearn = ["scikit-learn"] +speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"] +testing = ["GitPython (<3.1.19)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder (>=0.3.0)", "nltk", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.1.5)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "tensorboard", "timeout-decorator"] +tf = ["keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx"] +tf-cpu = ["keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow-cpu (>=2.6,<2.16)", "tensorflow-text (<2.16)", "tf2onnx"] +tf-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] +timm = ["timm"] +tokenizers = ["tokenizers (>=0.14,<0.19)"] +torch = ["accelerate (>=0.21.0)", "torch"] +torch-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"] +torch-vision = ["Pillow (>=10.0.1,<=15.0)", "torchvision"] +torchhub = ["filelock", "huggingface-hub (>=0.19.3,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.14,<0.19)", "torch", "tqdm (>=4.27)"] +video = ["av (==9.2.0)", "decord (==0.6.0)"] +vision = ["Pillow (>=10.0.1,<=15.0)"] + [[package]] name = "typing-extensions" version = "4.10.0" @@ -1175,6 +3376,21 @@ files = [ {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, ] +[[package]] +name = "typing-inspect" +version = "0.9.0" +description = "Runtime inspection utilities for typing module." +optional = false +python-versions = "*" +files = [ + {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"}, + {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"}, +] + +[package.dependencies] +mypy-extensions = ">=0.3.0" +typing-extensions = ">=3.7.4" + [[package]] name = "tzdata" version = "2024.1" @@ -1186,6 +3402,29 @@ files = [ {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, ] +[[package]] +name = "umap-learn" +version = "0.5.5" +description = "Uniform Manifold Approximation and Projection" +optional = false +python-versions = "*" +files = [ + {file = "umap-learn-0.5.5.tar.gz", hash = "sha256:c54d607364413eade968b73ba07c8b3ea14412817f53cd07b6f720ac957293c4"}, +] + +[package.dependencies] +numba = ">=0.51.2" +numpy = ">=1.17" +pynndescent = ">=0.5" +scikit-learn = ">=0.22" +scipy = ">=1.3.1" +tqdm = "*" + +[package.extras] +parametric-umap = ["tensorflow (>=2.1)", "tensorflow-probability (>=0.10)"] +plot = ["bokeh", "colorcet", "datashader", "holoviews", "matplotlib", "pandas", "scikit-image", "seaborn"] +tbb = ["tbb (>=2019.0)"] + [[package]] name = "urllib3" version = "2.2.1" @@ -1286,6 +3525,107 @@ files = [ [package.extras] brotli = ["Brotli"] +name = "yarl" +version = "1.9.4" +description = "Yet another URL library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, + {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, + {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, + {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, + {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, + {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, + {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, + {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, + {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, + {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, + {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, + {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, + {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, + {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, + {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, + {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" [metadata] lock-version = "2.0" diff --git a/pyproject.toml b/pyproject.toml index bbcd133b..0a8e3607 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,6 +26,12 @@ whitenoise = "^6.6.0" boto3 = "^1.34.74" pydantic = "^2.6.4" datamodel-code-generator = "^0.25.5" +langchain = "^0.1.12" +hdbscan = "^0.8.33" +sentence-transformers = "^2.5.1" +bertopic = "^0.16.0" +scikit-learn = "^1.4.1.post1" +umap-learn = "^0.5.5" [tool.poetry.group.development.dependencies] From 3570b74bb4ee2d301e220a6fe1faf6c8c4e87672 Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Tue, 19 Mar 2024 21:24:33 +0000 Subject: [PATCH 03/25] Calculate embeddings and topics. --- .../consultations/ml_pipeline.py | 73 +++++++++++++++++++ poetry.lock | 23 ++++++ pyproject.toml | 3 + tests/unit/test_ml_pipeline.py | 0 4 files changed, 99 insertions(+) create mode 100644 tests/unit/test_ml_pipeline.py diff --git a/consultation_analyser/consultations/ml_pipeline.py b/consultation_analyser/consultations/ml_pipeline.py index e69de29b..332b3b4c 100644 --- a/consultation_analyser/consultations/ml_pipeline.py +++ b/consultation_analyser/consultations/ml_pipeline.py @@ -0,0 +1,73 @@ +from uuid import UUID +from typing import List, Dict, Any + +from umap.umap_ import UMAP +from sentence_transformers import SentenceTransformer +from hdbscan import HDBSCAN +from bertopic import BERTopic +from bertopic.vectorizers import ClassTfidfTransformer +from sklearn.feature_extraction.text import CountVectorizer +import pandas as pd +import numpy as np + +from consultation_analyser.consultations import models + + +def get_answers_text_for_question(question_id: UUID) -> List[Dict[str, Any]]: + answers = models.Answer.objects.filter(question__id=question_id).order_by("created_at").values("id", "free_text") + return answers + + +def get_free_text_responses_from_answers(answers: List[Dict[str, Any]]) -> List: + free_text_responses = [answer["free_text"] for answer in answers] + return free_text_responses + + +def get_answers_text_df(answers: List[Dict[str, Any]]) -> pd.DataFrame: + df = pd.DataFrame(answers) + return df + + +def get_embeddings_for_question( + free_text_responses: List, embedding_model_name: str = "thenlper/gte-small" +) -> np.ndarray: + embedding_model = SentenceTransformer(embedding_model_name) + embeddings = embedding_model.encode(free_text_responses) + return embeddings + + +def get_topics(free_text_responses_list: List, embeddings: np.ndarray) -> BERTopic: + umap_model = UMAP(n_neighbors=15, n_components=5, min_dist=0.0, metric="cosine", random_state=12) + hdbscan_model = HDBSCAN( + min_cluster_size=3, metric="euclidean", cluster_selection_method="eom", prediction_data=True + ) + vectorizer_model = CountVectorizer(stop_words="english") + ctfidf_model = ClassTfidfTransformer() + topic_model = BERTopic( + umap_model=umap_model, hdbscan_model=hdbscan_model, vectorizer_model=vectorizer_model, ctfidf_model=ctfidf_model + ) + topic_model.fit_transform(free_text_responses_list, embeddings=embeddings) + return topic_model + + +# TODO: What is the 2D embedding for? +def get_2d_embeddings(embeddings): + umap_embeddings = UMAP( + n_neighbors=15, n_components=2, min_dist=0.0, metric="cosine", random_state=12 + ).fit_transform(embeddings) + return umap_embeddings + + +# def save_themes(topic_model): +# # TODO - add question_id to Theme model (maybe) +# topic_df = topic_model.get_topic_info() +# topic_id_lookup = {} # Mapping topic_id from model to UUID in DB +# for row in topic_df.itertuples(): +# theme = models.Theme(keywords=row[??], label=[??]) #TODO - what are field names +# theme.save() +# topic_id_lookup[row["ID"]] = theme.id +# # TODO - update with the correc t +# # save each topic to theme model +# # add column to df with theme ID + +# return topic_id_lookup diff --git a/poetry.lock b/poetry.lock index c0d827d3..250a2eae 100644 --- a/poetry.lock +++ b/poetry.lock @@ -695,6 +695,18 @@ files = [ [package.dependencies] webtest = ">=1.3.3" +name = "django-types" +version = "0.19.1" +description = "Type stubs for Django" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "django_types-0.19.1-py3-none-any.whl", hash = "sha256:b3f529de17f6374d41ca67232aa01330c531bbbaa3ac4097896f31ac33c96c30"}, + {file = "django_types-0.19.1.tar.gz", hash = "sha256:5ae7988612cf6fbc357b018bbc3b3a878b65e04275cc46e0d35d66a708daff12"}, +] + +[package.dependencies] +types-psycopg2 = ">=2.9.21.13" [[package]] name = "dnspython" @@ -3365,6 +3377,17 @@ torchhub = ["filelock", "huggingface-hub (>=0.19.3,<1.0)", "importlib-metadata", video = ["av (==9.2.0)", "decord (==0.6.0)"] vision = ["Pillow (>=10.0.1,<=15.0)"] +[[package]] +name = "types-psycopg2" +version = "2.9.21.20240311" +description = "Typing stubs for psycopg2" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-psycopg2-2.9.21.20240311.tar.gz", hash = "sha256:722945dffa6a729bebc660f14137f37edfcead5a2c15eb234212a7d017ee8072"}, + {file = "types_psycopg2-2.9.21.20240311-py3-none-any.whl", hash = "sha256:2e137ae2b516ee0dbaab6f555086b6cfb723ba4389d67f551b0336adf4efcf1b"}, +] + [[package]] name = "typing-extensions" version = "4.10.0" diff --git a/pyproject.toml b/pyproject.toml index 0a8e3607..4037bc7d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,6 +32,9 @@ sentence-transformers = "^2.5.1" bertopic = "^0.16.0" scikit-learn = "^1.4.1.post1" umap-learn = "^0.5.5" +scipy = "^1.12.0" +numpy = "^1.26.4" +django-types = "^0.19.1" [tool.poetry.group.development.dependencies] diff --git a/tests/unit/test_ml_pipeline.py b/tests/unit/test_ml_pipeline.py new file mode 100644 index 00000000..e69de29b From b53306c6ddc6c138dcec3aea5cd2bee104cd34e1 Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Tue, 19 Mar 2024 23:19:52 +0000 Subject: [PATCH 04/25] Add to the ML pipeline to save themes. --- .../consultations/ml_pipeline.py | 81 +++++++++++-------- 1 file changed, 46 insertions(+), 35 deletions(-) diff --git a/consultation_analyser/consultations/ml_pipeline.py b/consultation_analyser/consultations/ml_pipeline.py index 332b3b4c..598f4858 100644 --- a/consultation_analyser/consultations/ml_pipeline.py +++ b/consultation_analyser/consultations/ml_pipeline.py @@ -1,5 +1,5 @@ from uuid import UUID -from typing import List, Dict, Any +from typing import List from umap.umap_ import UMAP from sentence_transformers import SentenceTransformer @@ -7,27 +7,12 @@ from bertopic import BERTopic from bertopic.vectorizers import ClassTfidfTransformer from sklearn.feature_extraction.text import CountVectorizer -import pandas as pd import numpy as np +from django.db.models import QuerySet from consultation_analyser.consultations import models -def get_answers_text_for_question(question_id: UUID) -> List[Dict[str, Any]]: - answers = models.Answer.objects.filter(question__id=question_id).order_by("created_at").values("id", "free_text") - return answers - - -def get_free_text_responses_from_answers(answers: List[Dict[str, Any]]) -> List: - free_text_responses = [answer["free_text"] for answer in answers] - return free_text_responses - - -def get_answers_text_df(answers: List[Dict[str, Any]]) -> pd.DataFrame: - df = pd.DataFrame(answers) - return df - - def get_embeddings_for_question( free_text_responses: List, embedding_model_name: str = "thenlper/gte-small" ) -> np.ndarray: @@ -50,24 +35,50 @@ def get_topics(free_text_responses_list: List, embeddings: np.ndarray) -> BERTop return topic_model -# TODO: What is the 2D embedding for? -def get_2d_embeddings(embeddings): - umap_embeddings = UMAP( - n_neighbors=15, n_components=2, min_dist=0.0, metric="cosine", random_state=12 - ).fit_transform(embeddings) - return umap_embeddings +# # TODO: What is the 2D embedding for? +# def get_2d_embeddings(embeddings): +# umap_embeddings = UMAP( +# n_neighbors=15, n_components=2, min_dist=0.0, metric="cosine", random_state=12 +# ).fit_transform(embeddings) +# return umap_embeddings + + +def save_themes(topic_model: BERTopic, question_id: UUID) -> None: + # TODO - add question_id to Theme model (maybe) + topic_df = topic_model.get_topic_info() + for row in topic_df.itertuples(): + theme = models.Theme(keywords=row["Representation"], label=["Name"]) + theme.save() + + +def save_answers(topic_model: BERTopic, question_id: UUID, answers_qs: QuerySet) -> None: + free_text_responses = answers_qs.values_list("free_text", flat=True) + answers_id_list = answers_qs.values_list("id", flat=True) + # Assign topics to answers + answers_df = topic_model.get_document_info(free_text_responses) + # TODO - seems a bit fragile, relies on answers staying in the same order + answers_df["id"] = answers_id_list + for row in answers_df.itertuples(): + theme = models.Theme.objects.get(question__id=question_id, label=row["Name"]) + answer = models.Answer.objects.get(id=row["id"]) + answer.theme = theme + answer.save() + + +def get_themes_for_question(question_id: UUID) -> None: + answers_qs = models.Answer.objects.filter(question__id=question_id).order_by("created_at") + free_text_responses = answers_qs.values_list("free_text", flat=True) + embeddings = get_embeddings_for_question(free_text_responses) + topic_model = get_topics(free_text_responses, embeddings) + save_themes(topic_model, question_id) + save_answers(topic_model, question_id, answers_qs) + +def get_themes_for_consultation(consultation_id: UUID) -> None: + questions = models.Question.objects.filter(section__consultation__id=consultation_id, has_free_text=True) + for question in questions: + get_themes_for_question(question) -# def save_themes(topic_model): -# # TODO - add question_id to Theme model (maybe) -# topic_df = topic_model.get_topic_info() -# topic_id_lookup = {} # Mapping topic_id from model to UUID in DB -# for row in topic_df.itertuples(): -# theme = models.Theme(keywords=row[??], label=[??]) #TODO - what are field names -# theme.save() -# topic_id_lookup[row["ID"]] = theme.id -# # TODO - update with the correc t -# # save each topic to theme model -# # add column to df with theme ID -# return topic_id_lookup +# TODO - what to do with topic -1 +# https://github.com/MaartenGr/BERTopic From 5cb36b008236087ca3075b35a7b856f02da2da4e Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Tue, 19 Mar 2024 23:28:31 +0000 Subject: [PATCH 05/25] Add question field to theme. --- .../migrations/0002_theme_question.py | 20 +++++++++++++++++++ consultation_analyser/consultations/models.py | 1 + 2 files changed, 21 insertions(+) create mode 100644 consultation_analyser/consultations/migrations/0002_theme_question.py diff --git a/consultation_analyser/consultations/migrations/0002_theme_question.py b/consultation_analyser/consultations/migrations/0002_theme_question.py new file mode 100644 index 00000000..40a34435 --- /dev/null +++ b/consultation_analyser/consultations/migrations/0002_theme_question.py @@ -0,0 +1,20 @@ +# Generated by Django 5.0.3 on 2024-03-19 23:25 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("consultations", "0001_initial"), + ] + + operations = [ + migrations.AddField( + model_name="theme", + name="question", + field=models.ForeignKey( + null=True, on_delete=django.db.models.deletion.CASCADE, to="consultations.question" + ), + ), + ] diff --git a/consultation_analyser/consultations/models.py b/consultation_analyser/consultations/models.py index c46e5926..c2e08bf0 100644 --- a/consultation_analyser/consultations/models.py +++ b/consultation_analyser/consultations/models.py @@ -59,6 +59,7 @@ class Meta(UUIDPrimaryKeyModel.Meta, TimeStampedModel.Meta): class Theme(UUIDPrimaryKeyModel, TimeStampedModel): + question = models.ForeignKey(Question, on_delete=models.CASCADE, null=True) label = models.CharField(max_length=256, blank=True) summary = models.TextField(blank=True) keywords = models.JSONField(default=list) From feaad8e7f4372d6f999b9b0e22a76dc7dfc53587 Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Tue, 19 Mar 2024 23:32:54 +0000 Subject: [PATCH 06/25] Update the functions to assign themes. --- consultation_analyser/consultations/ml_pipeline.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/consultation_analyser/consultations/ml_pipeline.py b/consultation_analyser/consultations/ml_pipeline.py index 598f4858..26c7ced0 100644 --- a/consultation_analyser/consultations/ml_pipeline.py +++ b/consultation_analyser/consultations/ml_pipeline.py @@ -35,19 +35,11 @@ def get_topics(free_text_responses_list: List, embeddings: np.ndarray) -> BERTop return topic_model -# # TODO: What is the 2D embedding for? -# def get_2d_embeddings(embeddings): -# umap_embeddings = UMAP( -# n_neighbors=15, n_components=2, min_dist=0.0, metric="cosine", random_state=12 -# ).fit_transform(embeddings) -# return umap_embeddings - - def save_themes(topic_model: BERTopic, question_id: UUID) -> None: - # TODO - add question_id to Theme model (maybe) + question = models.Question.objects.get(id=question_id) topic_df = topic_model.get_topic_info() for row in topic_df.itertuples(): - theme = models.Theme(keywords=row["Representation"], label=["Name"]) + theme = models.Theme(keywords=row["Representation"], label=["Name"], question=question) theme.save() From 870d78a0646970afc9a9ca8416b21509609416f8 Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Tue, 19 Mar 2024 23:41:26 +0000 Subject: [PATCH 07/25] tidy ML pipeline --- consultation_analyser/consultations/ml_pipeline.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/consultation_analyser/consultations/ml_pipeline.py b/consultation_analyser/consultations/ml_pipeline.py index 26c7ced0..81289eae 100644 --- a/consultation_analyser/consultations/ml_pipeline.py +++ b/consultation_analyser/consultations/ml_pipeline.py @@ -72,5 +72,8 @@ def get_themes_for_consultation(consultation_id: UUID) -> None: get_themes_for_question(question) -# TODO - what to do with topic -1 +# TODO - what to do with topic -1 (outliers) # https://github.com/MaartenGr/BERTopic + + +# TODO - Generate theme summaries using LLM From 869b89b73a13783d36a77f998502c883f4165022 Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Wed, 20 Mar 2024 14:51:41 +0000 Subject: [PATCH 08/25] Update topic assignment. --- .../consultations/ml_pipeline.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/consultation_analyser/consultations/ml_pipeline.py b/consultation_analyser/consultations/ml_pipeline.py index 81289eae..5848b938 100644 --- a/consultation_analyser/consultations/ml_pipeline.py +++ b/consultation_analyser/consultations/ml_pipeline.py @@ -39,37 +39,36 @@ def save_themes(topic_model: BERTopic, question_id: UUID) -> None: question = models.Question.objects.get(id=question_id) topic_df = topic_model.get_topic_info() for row in topic_df.itertuples(): - theme = models.Theme(keywords=row["Representation"], label=["Name"], question=question) - theme.save() + models.Theme.objects.get_or_create(keywords=row.Representation, label=row.Name, question=question) -def save_answers(topic_model: BERTopic, question_id: UUID, answers_qs: QuerySet) -> None: - free_text_responses = answers_qs.values_list("free_text", flat=True) +def save_themes_to_answers(topic_model: BERTopic, question_id: UUID, answers_qs: QuerySet) -> None: + free_text_responses = list(answers_qs.values_list("free_text", flat=True)) answers_id_list = answers_qs.values_list("id", flat=True) # Assign topics to answers answers_df = topic_model.get_document_info(free_text_responses) - # TODO - seems a bit fragile, relies on answers staying in the same order + # Answers must be in the same order answers_df["id"] = answers_id_list for row in answers_df.itertuples(): - theme = models.Theme.objects.get(question__id=question_id, label=row["Name"]) - answer = models.Answer.objects.get(id=row["id"]) + theme = models.Theme.objects.get(question__id=question_id, label=row.Name) + answer = models.Answer.objects.get(id=row.id) answer.theme = theme answer.save() def get_themes_for_question(question_id: UUID) -> None: answers_qs = models.Answer.objects.filter(question__id=question_id).order_by("created_at") - free_text_responses = answers_qs.values_list("free_text", flat=True) + free_text_responses = list(answers_qs.values_list("free_text", flat=True)) embeddings = get_embeddings_for_question(free_text_responses) topic_model = get_topics(free_text_responses, embeddings) save_themes(topic_model, question_id) - save_answers(topic_model, question_id, answers_qs) + save_themes_to_answers(topic_model, question_id, answers_qs) def get_themes_for_consultation(consultation_id: UUID) -> None: questions = models.Question.objects.filter(section__consultation__id=consultation_id, has_free_text=True) for question in questions: - get_themes_for_question(question) + get_themes_for_question(question.id) # TODO - what to do with topic -1 (outliers) From a59ea74af53eeb0c9b29ed8af05c0e81d7e798fb Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Wed, 20 Mar 2024 16:35:32 +0000 Subject: [PATCH 09/25] Add tests for ML pipeline --- tests/integration/test_ml_pipeline.py | 37 +++++++++++++++++++++++++++ tests/unit/test_ml_pipeline.py | 0 2 files changed, 37 insertions(+) create mode 100644 tests/integration/test_ml_pipeline.py delete mode 100644 tests/unit/test_ml_pipeline.py diff --git a/tests/integration/test_ml_pipeline.py b/tests/integration/test_ml_pipeline.py new file mode 100644 index 00000000..1fbee12f --- /dev/null +++ b/tests/integration/test_ml_pipeline.py @@ -0,0 +1,37 @@ +import pytest + +from consultation_analyser.consultations.ml_pipeline import get_themes_for_consultation +from consultation_analyser.consultations import models +from tests import factories + + +@pytest.mark.django_db +def test_get_themes_for_consultation(): + # TODO - generate this in a neater way - can we fix to specific consultations? + consultation = factories.ConsultationFactory(name="My new consultation") + section = factories.SectionFactory(name="Base section", consultation=consultation) + questions = [ + factories.QuestionFactory(question=q, section=section) for q in factories.FakeConsultationData().all_questions() + ] + for r in range(10): + response = factories.ConsultationResponseFactory() + _answers = [factories.AnswerFactory(question=q, consultation_response=response) for q in questions] + + get_themes_for_consultation(consultation.id) + + free_text_questions = models.Question.objects.filter(section__consultation=consultation, has_free_text=True) + no_free_text_questions = models.Question.objects.filter(section__consultation=consultation, has_free_text=False) + + # Check we've generated themes for questions with full text responses, and check fields populated + for q in free_text_questions: + themes_for_q = models.Theme.objects.filter(question=q) + assert themes_for_q.exists() + example_theme = themes_for_q.first() + assert example_theme.keywords + assert example_theme.label + # Summary not populated yet + + # Check no themes for questions with no free text + for q in no_free_text_questions: + themes_for_q = models.Theme.objects.filter(question=q) + assert not themes_for_q.exists() diff --git a/tests/unit/test_ml_pipeline.py b/tests/unit/test_ml_pipeline.py deleted file mode 100644 index e69de29b..00000000 From 4c1a20bc18b58cddd9edfe65c2f8d41498fc3c84 Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Wed, 20 Mar 2024 17:32:40 +0000 Subject: [PATCH 10/25] Remove migration --- ...eme_question.py => 0003_theme_question.py} | 4 ++-- docs/erd.png | Bin 119606 -> 134078 bytes 2 files changed, 2 insertions(+), 2 deletions(-) rename consultation_analyser/consultations/migrations/{0002_theme_question.py => 0003_theme_question.py} (78%) diff --git a/consultation_analyser/consultations/migrations/0002_theme_question.py b/consultation_analyser/consultations/migrations/0003_theme_question.py similarity index 78% rename from consultation_analyser/consultations/migrations/0002_theme_question.py rename to consultation_analyser/consultations/migrations/0003_theme_question.py index 40a34435..1fee52b7 100644 --- a/consultation_analyser/consultations/migrations/0002_theme_question.py +++ b/consultation_analyser/consultations/migrations/0003_theme_question.py @@ -1,4 +1,4 @@ -# Generated by Django 5.0.3 on 2024-03-19 23:25 +# Generated by Django 5.0.3 on 2024-03-20 17:36 import django.db.models.deletion from django.db import migrations, models @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ("consultations", "0001_initial"), + ("consultations", "0002_consultationresponse_consultation"), ] operations = [ diff --git a/docs/erd.png b/docs/erd.png index 51b60ed8a4c513556258c19d4975af09e9d50882..1703189a2bd40a700cd4cf8006f040317511af23 100644 GIT binary patch literal 134078 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

H)}UeMQ$xix6;PLk7=$Ah_nv9Z@AE0zkL05#YSV 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�LPA2Sui`P%%fC&*n3~X3z{>~t{xDcRe<>HlNf*`= zG(h7>6hGHJ%FOHr8l%+Kb&!7}IzDLe*9vLK=WJ%+ep8T+r$oVxD}`brsYl4#P{_xX ztn4ZN4RUNIE*X%M57pIw!0-Ts0oLg<;hOA3^J+gt;|v#LRHwKLS*+55NdxcvXKgG& zAan;AC1?U=O}H1}qX28}>2@A`0*WF^*1{F%uXNgaU;YC$G6!tR4U$ zN&j0kH5fVMal6FDv89`|Y&Z+~TsB8P&#{4o_g+vnP#o^bvzsymNUH&l91wT{+sa>C zvkxO}sHE`mySaz|=c>S)KMPqBXxl=md-Ex03D)Pww}=^b0e4D)49;p7z~Ts$3;0_tZo07iUF z&I{&eo!>+agCt5J7(Aj_L#$9RHg3LEC5RUW&jw7u*t<;e(0~~r3)B1?-T@S<7D(e zr1ldoA{rGyoIum$ij0iNqn+${mHr>sM`hUolm=@I9&n>N{8UWf!r>42F6i&_LleN` zg};31f<eY$znV(W^avxY@U0q%5S^}V}onx}Sj|g1@;e8?p z5TDU{0ne_Xp~264ams$*6gwy9Ru|kR;|sA*it@TC4L2><8K`0m0_8tX0FAJb`{Ua{ zZiP~CJeN{b>+aJQ_jj@@w|8}2d)+snf-naH1~51BjS~55rBy_8mwBFp594p$YWo1x z3$nM5Ngh#?%r&S_2&vxMz2O^PL781%9?*%M{r$>1jEhX?9X-6g>)CSG;RHcw(*9ih zN4_dj%YE0SzY$fNH<&=_5HQ%T~|;sY_#XfZF!*^0NDIh5YSG0Sp>s>htfY$wkXb(>gE?_QG1eRbm#A*2b=-kXm)%ME* z|6oZ_kR~+WZZdX&ObAi_0}{^yM`YP;a7d28KnNhbWc}&`#Gy$9Dyx8WQUE>-29{d= znGUdRlm*~Y3H}w5h2xNnyj4ieM|?Q)aFkqVg8aOSM|ifb{~Umf+EA+08e^pw#wO}N^nLt zz#8atFhX7s4G8FPDy1{>818^ZFTt4lPb5oiCxVF39x%Uki;Lgmybq4={%#=W2;~m+ z5`ZoXR?-L%4GL(m6ORMTVrTJtetcNUkI2|U#zga2e+<6_^w*~YG% zdL8;Q0T-EZk`Ouh2RW9Iibo}~Nf>20;JyaO(=rpa~ zxYG;^%M73Iv^b^E?qE(KLEa?$7c3CwQsEE`z8@ zKwE~*SRqdF4s`p#=ms9~E6!!aoU)!b{Qs;e{Mw8H*MR}F)53Wb(~T@iM8K(d0*y`GMa4iM+7!?Rcv%1(Sxyfj?8A?1UN zN5dq}Lv@H8*B0#`r~q9DJAL(a;D&Li@9`;-9X5x`3~=ahH1g6>fgT$LR2Ct8Z-dG?`K7pM6@?zWaRz}7$ z&^d`oUDSs+<$w<&NNpxz3^aSZOh7u>xa0{1usT8nb@-V;|&xkY6{Q(UQDwZ6U4?t#|0#JFc=-oFE}!#-CAp3T_Q99=q%Xc%cyoiO&aX>GnX!1B8td<#i&&( zATFt4>kt$uA-0M-EI)^d_-a5LNELF=Imp95ZyFKS@UNVBz?@AIS?w z48dM3MbWhCMgGNdTx4n5`%$fLP;9C@_MSVmad#vkTYzg#+Q#^MFL9C;uW>@H@ zhO`erwZ7Q3sCUl71^~KpX_Zr8`iIARl#%^->9P%^cK?;VlUAvrSF3!bO&A;6=+24|ZgwtU1+DLoOCKq8)zmIm%5 z5o0Plm+hPOUQsPYs_Sh9Cp?RGBdv@zlb*y|X@I^ESZI*xb%PLwA0&Xr2tQb=(qmc; zTomk@tf@McviRKGD>yAtK=}3|zJIK*r-LYCnbtY4-TUF>gX#q7!ArXm=fg2oGx=`g zSVm(wo8LjY25A^Ktt5&?k%|s#l~@?MeX?H zO zaUVk!-W{W>r6r2ulR-xV$Vp^Q$r8qki;G6J*3x=6q72SJtr5&1LMzxK{z|f1ZUq4E zLGJhzirW6O-3Ray|Na>|n}$|hJD$eg`J46KKyneJM*G&~?;j6va3Iq>zxr=>Nu`sa zUAtc4fPanLidS&GDfw7gnb0g=9Sg{FG5FG@C}kKOG-_D1f3x4@R)=>dv+sh)LwK%is3Ty1Bh>FeSP^4a^D94gyw|tnnel# z6150g8;I(p^?;bNLiTjRk&6LlB}1+-_W>QQxUMd}fM^2U15X2l&@`qt3mqb33TQW6 z$Uc%-=%tJ91CF;#NFVA|Z&BlA5?&3|#7TAdYqzRRUU11uguf@=J2*@g>@w$OT^_6vLP)1qlet^2>T{jha-*;qS&)kb1Y_ zx~Zvm!_A`7(*ES4%k(}aVn}G-K`Dqg01Cu75&&w}1sMtLf{vb^&v#dEL{5GPjgXYV z*U5QYTwFwE4;eo}vqwgr22?$3iM5HBhlkeLd0E-pG|K`f5_h9Cn^+KIMbZTVvnM8T zkV-p;Ylh*X4vcX&?LPGcMJOc+PF~OexCh}eypL0-PCbES4;~p|M_}_~G2Aq+qWO%t z23G?YVE?0X3m`TQz4-%>SpkcK>*kLW8#ZoaUp)z~JED z59B8sLtbHYW+rj!w;wBEsNi6dDBfc5j3hID(1Q&N+iSKo?T0W{pndX>e+(8Ww8D=A ztVUe=P|BejbP?pFhE#*?grLI1_+*V<^*IH(T) zeoN#3&DyF-{Zw9*Q*Gb8h9d)?$!_GaJlU4PU*wLG-mMZoG1jU<6{9dd?iKDDLqJn=?D@sE}bSy5mPp>gP|NMwge` zmbv)d&ih2&l?xKYWjWqtIZz>w=@brB{*DW;Ht_$tASU+dEPNIj&-y4w?5p|yr%S?l z1xFAHtnWPG;xQ;<$ts3R~>ybYeA$**MZ5K8Nn_`j+VM^7SD70`2AkiXPhDdMzbb~*A zA`HQc%sx7UYF;P+QNKc7|J3zauw&Q0Nnb`+gQ#d&c&k;~_(hu{BEWax3tH>ap(eZc zS^2@g6GCLjMM$R=lpY*L=ok?*U&PTZF3?It(RC*zWDmO1sfM*1T+liL;UAR0Xoycc zJ3Esq7D+f>9*7Of={F^Ddi^yLdlDE}g1aEX>Dbpusl#jXVr1lBfDQzyuk(Pm|3IF| z?DG)QX0&gbl8%SUzJ;6&z7rM1W5jJrYisKt!dy>JM|Zbuq?Teee2L9JqB=(giqHT; zOA&mg(c}ehtfZnMzB)7ECR@-&X0%JpN(4K~iqhlbja{2UPv0V9_DEoj1Vf`{8zC`C z_>5$^ye5rsq#f`TalvguVun0#w5CW?nVf&8pgoKD8VPkobWKN5`aQy-evx@Q;Ur=t z@);L^Tp5xSm*G@Jb}J+c(fK}!yaf$SNSN&dKf^R{)(vQL996}r0K^gJqa5W(0)SR1 zqRn~qdJo4Uk;ff_Zo^kPaK!fvz8FnjzZq$it`o6GJ^j%D=N5iP}VETjAXCONSb2Qcv{$MHo{{krLewbVNE z-#@?i)H@l-ajXWG&p5w{q>@B&Qu3HggHUOal5~-kj$`meW=LI~a-2);iM@GD%Bt%W zdECWILtIJ9 z$T)KF;63!~SM=!#l<8)ddblSyL?bfiboUY{&P+;p=ZV*I;~-E}Q}dZEeV>w-EuYv9Wg$pOY!T$)^vyxc_$A z8la|kb(AAwau~f>%(Pf~?7K_T|kF7or?0Do%# z=eqps7_v5V2MjB4K`15SYi;~`%Wm?L9f#8Ursa;Ox*tn#@&52h2kD!~cr~ki)pqdlkD_w^9#l(|1F3_jAmJ)Y>#|IN512gm^ z-;9oBFN9m)zMYW%=X;P$N;0Bnid~h2gDy1#IR!N0#!YEsD@3KeNq`Yjz0_7~+_YtN zIyXDWZl54&hiZTn-5XgHdpvMp$9Z2xfr?=%9ZC-D?Omu>mA*}zRoPO zan2a8&_E2ecOU$vc@Vo(BFJ(3>M0C)&7rIX!MZ<>U%XzE_9=4@bQ4I*KK>i8G;3*Y zAhrb*=>Wun4n%5HIT(1oe^miGBoez#xXEs`(BqTBP-~NorsXXtKRiZ;J|JbobN6at z*!gZ}oKkL{o}QO7x4k`#3$J;F@*IIt6y6j>QJ4q~pY^_jsYK{dC=38f;Azox^hjle7?s+J3H#VR4Ea0YEgI73vRjH~e2Aph0}`y$D- zO$Y}Lay78rpMoh)>jKxK3AFY)AqGh%0-%jzl%@%SD)A=6l$FW0dn;-v;%G_u^TZN^ z0%s$V-=g~B#GHXxD0X`vTXU3kO_@nPKl(}S3qOc{hPug3WE;yLv9qADY7W(SjL5$r zreObdq2I*(SAP(r-diP3xGZ!B{PJQMtc774frfrGbW)Jy@Qt$WQ%J@sWpLW%{2qPk z*zb}!9+B5ZVKWlV*oz_jL?H?JL%``<%rrv3_hGu;3H=dpt-sXdLDdaykdxY9w!o_X zlPHbgCo)aIECzjaJaxFDUPAv2uMv6RzC-TJFiLKl?x*M0ZQNLhqa4#_QT3GuOW1WVcOzXB zD>B)*3BEmXc}Fvpl<4TlVy8mEg;4X+A}1>Pm^V{!mYR>`&RAfA4h^Qym}!(FBO^m? zlC+`utqqb7a%5t{i6($jnxXGU;VACazMh^iPa$5u2yG&$nzJydhWPG>l9GoAsw*Lr ze8IvZ87H88T6W%X2jXc5W$}l^w+$Ru-u@~M1uvA%xN4-S-|zUXIv)Zn>zZ*>VsrB7 z(d=Is!gXkfBfaQ?Kd!;G=?AT_q2sF!-_jY$DA#s{p?C6ephXWW7?S|#1r@Fw$e2;}8c?xtV z5Q%IC;xl$3r-6>i+v@bc8LS87r-_#k)*ZauP1--z?3U%_#YBkA07-9v7#l#|D;$dh zr~O0*w9k|0IJWQHDS?O#odF`Fz`ylMKXG{_MZ&rN$CNpD8Amkf!QgEkV`o2%;;wo8 zPCtrMblpgeo2%#38y~F|iN}s8@ggK-Abte7FH$IC*deEDpv*9bkdB2DjTQ}2u*8~3 zsGerEa6MncAph1Hu_V>FX(z?VXh4}ZmV&Mu^;W3_3eO(Ky1KeF7I~u@>xO`xZy({5 zL&0_qy%8W|YS;`UT>$D?*@WPV*2}kSho}59e;_m;Fg2=YXi-)aV~PF~S*dhzu@L=* zDlhrXn{WT%dCn5iau<^l77O~n?ZuZ6fZV=o*PHDZ#5wN$=|8TS#L6FiExcHQN~0p^ z@83bcL0nb!MO~tYDl=dMrkD^KIw-I{jX|`SC}mAF!?$ypG@r^_7$=rW6u>07AeBd&fRLZSEHd7*skG=fME69|ungfU@ijt%j?rq&b=s_p+2$_agYg`(7K;$Y zah@3TLV!^W( z6Joz1H23o$T&C|s(+{l!LGY_37T49Rf)jNhmN;-y-tj}T8E=R=1^gbKVOdb19$?eu z$>$DS1OZPV_WoaDKXP}ie`7zw2ns;rLI82pEbTVbS7;qjAZuHJO$D_+Euga|u_RQR z$gByrhTqWVL5N@+Km1g85SR5oD*Fy_toy$GOFL;NN#&+cRI-y*l8THJvK85TWYbVd zAqkn4kz^%%CnP(BY?(z!_WqyW?&o>m_y0c6`yT)QeH{03lw8;KyT0Qy&-45=%qjXh zzF?tJU?Vys&F`)gt#cy$31idpyAAh8rNA|>Zyt>h3v>>=_lcB4ahD#g9soheU`MR! z{%+~*I}sAW{g@w8qJo7Xa=TFTT-AjhN>OR)eTa?n0DVB(a&X4jnO()h`Cn_nV zxeuQUI3Dtq2xMOGXKznK)-c66K_z9)O=xx|8#S;an0nyh@fUDQ(AdQA9cgGPu*d-p zLd4vWVUhXq^z_XhNsoEy0O~+qWDH*<@|h;?%LA+rf)LCL9RorO_OKeE$D6i(6gayc zu!UNKK9a1_L#h*PI(>xjL=}dphy*(8s**9A$HlC7?%QYPkc)NkdZHK{ zh`RVVgn|Q|DiJ%Q2}MRdQ3f`A=0=`RE*tz1lqCz%C?g3p#y8cyLJHS6*L1jT?4MWw zYYU4ml!Oy_$<%t3>7HKi=Yz67oQ>7gPZbI}9rRq++@tdX($1Yhz;pr4BZJQTJYx1m zNHL8lV*}a-r+6Q+3Yn`~VU0RjfR9{#T^(sMP*AVdMz%@8V1u`~J|8z9mFd7EQC-P* z&gx4>j~PYfCMnKbGyV`2j6{GG6j6r6OcsCjg50|6?Ak2Xk|+(6W`I*G`rXFYq<#ls8SHut3_er{ zSKfqV?IWmT-G;IY&MnD6Q0RZncq;fHd=)a`Vv*^#B5BS%cT~EYn}g6l$u1uzdO47v zIwvJX+$aS3xFDULnAIPws*m1ZG~OE{LZ1O-U^Sf9L;!q)4RKTmIeH-3PNs)oTa@R1 z+*Z#+A`B^~`+dEawq^A9V+=KIB1Qm3gU);MW0tCUrtu`6Ge_XVONS)Ktaz2gA|lnfzwl!ee^CpJwN^$?dz$I(d+Zuvc8hJH7F>1!sH;D z-;GIajAVK^6lK-SvhI=*0Q(vEZlFGXFClQG~%fN5)0sS@|i#)npU}aKKEFmT-7dH^#{$<;H{?Utm!sXfCx%ziRk` z??8$WdlMxFgHTjsW>%0R;Wx@;WGBgU9XPLAgi@h`T&k;L)YZSAW-ZDIkU51=rD>HO$~bAq%N6x{z+)uo8d9rM|8!ZgUt23l(;Fl4jh5_F}J8Bp=F~*I|LH zo-a+X!5vc$9zMLPx+W94q1X6B98e!{fCib@qeC+Cs6s#sNe>%O7L=Jp0<%fVnhtm2 zY2l*SNh9L}2fd zoWFDflo4qz{8e*1ooQ)lgl%3DtE}6XA0Vf7;irIsyz2B6D0R zee#`2gyg${$gOI_-{K)6+j>wB&&ei1&Y@R=v zcmIESd)H5BYUu)FOomXQ9BQ-2mm`QgRg3-im-h+$1)|%fq`i3j+6w}rMOH$LI@#PG zPg3tGN<{6{bo{}BfVUduYeZdKkhGyj?ArrZD1h^-cnVu{?g(0qT=4svE|ZF=HG6sQ zUo(qeAaf@%a2YN4fBqhFw1)`w#vr&7Z9cS3o zW{)A6uCyPmH^^?kCl~xr{oa-!zR;tv#}Z&Oy?&CZW#*mvm>5v=pTG1Oqp1mi467jm z74S#i`@JCEa~~Kw@B8~43BW{|mY56MiQ?^YU5FP@(z}Y#@&KCJ1Yv++wEjPT38%9d zo-atq?kLQqWT~$tksv3CKScNBL@5Ff$!tYWL=91lE{#jdH^Q4~V~zFk9SHo5T(d#) zMYCw&wR2~>ACf6pIOUN&=T^=km;!_%osp{ zo=6pkyG*G>_IRk9+8AR?E3RXN0vuQ|P%&sa#@AX#QIVoI!p(iozfO@Y_5X8B?vQL3 z6+#>nbDJG75YK=WLg(?>g;(sYnqP_7F#K+#^gS|b16_uSkr>h6E>NspKolM5uY+O( zu{p?hHI&4d6$A);VXzEkky*eLX8;zUsq)2mLj*tstbX`#e0e%uIy(BVfb0v*TL${> z3GyV)j3Ws?&X^6<4cyur>w8`d0`FjyF=(Uq#55CgU}=9eKELey7Fg`tsIk9w7}tYZ zyi=K}5TtXeun%OU6ltNNFpsQ}3-Bw1!!n3i$eeeq7@2(rbSr|;J#dIWFsPdX4)C#;JlZZ$dk(P%MNU;){YK3oc<_Q>2k zBtj;b_#wlviBa?dkYUDQ!{THzG-vLw70B3V`_t3X$f!87!$htd9TPN|)xHf);N)xG z$Vb5O7V@DOWb*@2c7o3kaFM?t#*eF-)}bUZc;*!vPZEQ*WY7v6gi4-cT3<4nGz1V% zww)-wqh-YvbOCDkUWmFOhF%Ip5-M)YFq>$t)#2d?YzwpYr1bPy|260jMwj^==1Ww# z5~v?(Uw1-A6BX7%7^<@J@@xH-K_puz1qlT2fhfvbnUbmvrXm^P>!Nvxl_E-%H>s`B zhCzGu6rhYKmlG^)YHBLAR?J*E-Hsi_NWhF;gqLS}HWO>T&*^8fsyPSqWNG7f3O4r% zVB*C7krNFW{ktd{lOD`wk%=u3h}Q;OJk_|#8)`1UQN9X7^?1cVQ&=KN7=TdW!E|~G z9`rO!9};I2Br$}gguthAa-7muU%`xfbYg8r+JbNmV5tQW(4$ezjBUobcxp_J00nIw zr8pB55&~TIi8um^%?LL`VXw>s%#vhX2wOZPaj$S>T0^nXrH7Di(w`R%=okwqnwbSpd~U13Yu$% z4s9JB;ixMR$QrPF4?I1)Q4A%>-yGcnQfbkf!&lmcAuOoGq0GF-&Td+&6(=}Dsrjfb zcMuxU$Ec+*T98sf-BsemF0 zK>HX&X?)O&!B&ud5~f8`k@k6XG}VAy>Iuw8VNt;yq`LBdMf^{598ao*a3iNnE5Gp) z%^L#rteB?l3x^seTFL}$4eX}%NSh!+c6R5mN4>nR5rm^Mj`(?$~u@Yzy)n}0+>Z1Z5Kd_?HE9aK(rbKe1-U(oc}+5n;-G>Kk7za|F#l!sOeQD?v1hkus9quFrk=Z6DwtX z|K7biU?Nb&zJS;rw+b^;GCwqxb#@kL{zfN9MOHTM0onwjGhHijQ{PCdJm96uuJ=bJ zC+LJNyBLbEe|zX#NHU^A>3Mz<$*iE!hQ-rb% zk{cu+);M8k!b$`9iUMmY$|LF_8yfi4g3v(Tjshw?)k}73{r@OlWesz>h7IoT1n74L zhN}FC@@sM+9q<>@KSO;Xsg|F)PWw;1!TT6dB1T}7LWVsgF1@_#4Up#$Rbfmcjknln zq@#xZ8rt6^t>rT^=MVV-7#X?Ln6|W$K~};@oCFW2=fFq#Kwv|-oM?_nmKyS+`V33U z|G>{56?G(Q31jD#iGDgtdBn8i*v8zde{c>BPui`9=P>;}3fF95GRf^aP9QwKyw!D4l8lGuH;}T;2u2jB{(SHgoEqWI!lb8P_%Z$7GZO4C>2Z4`FXQ9@c!DynHl)KPOSk?7 z4g?zNDJaDvdN^0|#3arfOp{5{8^^eC*Cr~i1;8p)zG)%0pO$!oR@T<7`*X)WGN`*PP67>7roel?XAU(E1RGkZ zJ5EN?qpIWKamp-rOcHk2Mww+L>Vb6yZf>x@WL%cH&7Q5X!HMAGTziTdR~X8G$;c@p zBh_um94Eph!knPZ}N+FgRyZH6Yo8;j8i|$;NEL6smhGJVL0)< zk0xMDwlFd#Nvrc=O5}Ve8l9TXV`u)n7g^b2?ddk_%>ad9YUE}$wXhAXk4g0ztM|LN zjEsuL3i<{UU*J)@H0I+*rUeuFz0FgO4uqMf(6<0snj1^?`i;G1L)3>p=Hj-cql zeWIGS4CpXaB}r8M2XETrajxpmrXI5Yc9#y#b6y;i*xHMUSHSJq0}s=W2{mN#zmRmx zm-Pi!nh4jTxbKgV5RpCVmPlWL#5A`Dy@6;(pYX=-2CM?{b1M+Dq#`Z6I8jeZgOa6L z5s!9pkp?@ccAh{~)mlnK-AFxfQX(oA5mpz%wr&tk*u=y-zaLkAM9Pkc;eI33j=e%_ z`0CGTc86lHHQEfY5|6yCN(kT_0CrrYI&zQ&0QCj(RU+z8{Syk>fLje)hz~-l@At}y z;>l}?j$;qJ6gPN#9#=_hkdu>B%T;_5iFI8utY|zC(5il40*^+?l>MoeH zCx=}~Icj@=S$VUYzMS~&+u*6n07mPp$ILTCQ!naN^oNMrujTW7&2Fo3+3aojd|y@> z(xSv_82;nQ&i|ooftmWJ+Knfy`;RBAP(=yD8tmyA>#s*v-58NQb(LxC?B?IYADY~%)>o+WJujyF&ODu2dP~Hg}t`qybH*IPYu@V;8wCkFK z$Z`GvE49{U^ZaGojd`PtrH|Q0 zy5nrc>RReURP5w9n$p3vUd)+fP1WB5TBqv1jP!ROE2{P?$LyrojE{P#Z3vW}x^4_~ z^G!|rY(U4K`Q+$lEw!m;cJ+)rNT`Zt>~3yuxq6qDGIirdKxtlE8|RPt?sT@A@cy}& zk*jm_%deZBOG^Zc9$CL-tKqAb45OmSTPvyT7em~9!vas=(A-p0Gk>$YZd?4@57mv{ z5#7v^n|FO!mU;dlZhW>o;l=C6bp0;xn}(D>f2_Fw+Gl67OQ)HzhFV>o2Aij}XHbSC zJ#+@v-DG2JFDm+$(LK_Auh~Rz`lSTx;^O)h3oR-ARW;3-LY_{V%N&$tXM;68iFvoi zYQ&_$X6&CJiNu$ZYxqj8+zf8~`Ew)UgMm6o4!=lgGE=#5RrXH=wZd@kta zpX4GwajP?H_HHTV=={Jo-~K<=t?KeX`Y`33tbpa=@u73W^WaV~wfZQ}wFE2_@KFUmjk$#v7f z;!43=?>sX1bWdj;P23PZkUu)$TD>R~+L`q{A#I+;-9Sk99%i7m9MspS`Zk{OgD&{6 zz?)^4ud1zY^-A4lTeE2?$6K0t?AmsG+_KRIBC9o@?$&C?fhGL zpK{baRHIqrjqO-B(U;wF*Ezgs#s^tMn~|>e2+>h7m#6Q_sclr%(isJB`c>b$Sm3nt zPOV2q2%DL=EXDqKmb!BKorkSQ+LQL4)lvIm$5h--=HZB^UNjU8qS$9;gE6jMbLTc!-kL-{cSA_e742An4R3;9oE}e$g}U;^X1w8 zdqe3r3NX>=ekC-uB^VUdl|GzhSSraan{C% zneejxD@UOxbPdw0&rV#USrh4No8xM7LnvJKXuPX66PBp2XSB(pYl3Uv-nnD3Dvotl zDF@>YvgI0Y?g&~EZWpp;ijvM?ZROcTbHzB`BY*T1a0Bu@JtKxb+tD>(U8r!T9L0+w2%}Kp}-y_YPBblc{DQj-EA?~EcY}a;}I=YdFLQ~ z(HW65EXvQgj8@e6Jg0u&=F`E#vOl5ObdRw06Fj9Zb}`?1*hSQN#P+D3{#&dCT4Jl? zL|!x62XwARep8o^3NxB9*`- z*u&iCPut{w@sR(FgJYyp?D4?ZQf=N;0|qniYWplld2B(+Pnt&!1;VjXk&Ru0UFU9G z6&3iMd`;)NSD078hi>LKG7WgCugYVn<0z(FH=lG}UolzsQ{X|i+bV#*Kr8GV9`VRw zJ1+~3X%8)`JGGxw7H3&2cE!aB20D!M_&5Y^D9cg*+Lg_IS}{+}m@g*xU4*8B3zJaK zy$a1Zawp$9TS?s{0@dzsF{>HltMKQCtTC(B)q1~vD%IgKcZTA+T*6Evxu24^c;}h0 zGw%bsODbbM83O9nMa}+!tiorMPVIBkDyUOW8ZkXCU0!kAH@Ntth}zI(U)YbD$cxLr zIS)=NFhTsO_kyZXn?Tw* zLBTbf`CaNI6E4*iW!*Jd>UP>{?u_W-X!cN}n3${4o#|VvUvux8nV<8|u&w-=cH@GZ zz3}wZ$itk-4L@d^oo9O_)AzI(AC0{HrLv0GW+{#(R){rL<%j9Dg}a%TpkN)bcm3}% z{Xq||&>ATLwwILsa~rRf|KfrHQhZo`=Eml$_=|Ifxl^9wM*236Q00JS+Sgf00~5YI zNgU$^+rzt4mJ@q6+lqz`4Q~JHN4{if2pi2^Hh!Qp0&ILZ8NjCBgs#TTTkdEZjv>zpWnYC*BM8{Be~_% zmeFw#IDJZ_ilsoZSgu~+4LWuQzuO(*6o{p%5zyO@x-{?7a}XB1g{#I~Hd z8OTZbrffd4FU8zRCM&2%#d$LP<>?}3DvP)E-$r_GE4(b$G`=4gw|4A&4E^tdOAc4x(ICoKj}et9$3S<%4GcdNs7Vz4c(qux8QJ>2aq zV_TTIMe2N?k`%KkBc>t>-m4T=G3;-LKz$(^`j_e>PiAgz*&$r#Q-u<{zY$8ed5(`zoBT zz}u_jr1X5hfxfvneOP0_zOWT$nWI%+52C%6vkr@hx5;o9u@@&j&TI5OyQaM+@-*Ye z#*g>5CRI|5^rX82-BTLV)(?6GY{&^tZD5U0JFl+ZZFyAV&s9r993IgH9PUb983rLx$+c4DN?i+d2z#`kt|#*QASL-h>4T-BaY`HG&aw|GN!{Om zQor|qr_k?~_EfQzUn3)LGRLjE_T}d7Ar_Cmi{(?^kH!d>;-Wm8uXXBo5eW?XSkS+C z*Xj2BucQR7+}YV~#|%YsY3`PZ5(#3g!~AuFIv-o($Qb#-}GU zX=-6nwbZYXuiMcP@|?4KylUutMb$Ov;pP4|kohUcC>VabyJC-wtO@TL)s~E;&bh}p zY>mTnz7J0C6OU}PU_Ijhz`Wqxsj)uR`Hr?{S6XIj_ADOMS-VkZ*n9cikN2|hx`_|h zGMTXjU8U_-7Jn&!?6vaohps|CGkrs|6)DSS;hUzyg|8jekv%?ifDuNdC(8P-oMSc4 zY7q>FViefdk8S>-&1=P+);~M^?bhV>uc~P&SJKK1P3M1Pso0;$;d-HeFiCWdfs)@@ zurf_b<}K7x11qXN{}T(47Tm0}PiNluN_TbWU#Zdpo>GaAgQL$zHhzw?Rvw>y7nfna z!l=4xs3D7kF>!tyZi;XFX^V8b_Z^MiCDt8XQVxewmY4W96wI!`@%7z0&6}B*WVb}Q z`S8wm%D(DEVXniTI)@&ZwB{?--bm%CI`&>*cOxy?T7Me=>KjY^`qpfR)>o1DmJz(!9T4lP4SKogd$scDIBfzx&%Kr>dSWml

sGdV>BKlKtY@<|cld^8dK1A^ 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 O-}y7L5{cs4xBm~_!jPf> literal 119606 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

H)}UeMQ$xix6;PLk7=$Ah_nv9Z@AE0zkL05#YSV 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�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 Date: Thu, 21 Mar 2024 14:49:54 +0000 Subject: [PATCH 11/25] Start saving without the extra question field. --- .../migrations/0003_theme_question.py | 20 ------- .../consultations/ml_pipeline.py | 55 ++++++++++++------ consultation_analyser/consultations/models.py | 1 - docs/erd.png | Bin 134078 -> 119606 bytes 4 files changed, 37 insertions(+), 39 deletions(-) delete mode 100644 consultation_analyser/consultations/migrations/0003_theme_question.py diff --git a/consultation_analyser/consultations/migrations/0003_theme_question.py b/consultation_analyser/consultations/migrations/0003_theme_question.py deleted file mode 100644 index 1fee52b7..00000000 --- a/consultation_analyser/consultations/migrations/0003_theme_question.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 5.0.3 on 2024-03-20 17:36 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("consultations", "0002_consultationresponse_consultation"), - ] - - operations = [ - migrations.AddField( - model_name="theme", - name="question", - field=models.ForeignKey( - null=True, on_delete=django.db.models.deletion.CASCADE, to="consultations.question" - ), - ), - ] diff --git a/consultation_analyser/consultations/ml_pipeline.py b/consultation_analyser/consultations/ml_pipeline.py index 5848b938..461b7b7a 100644 --- a/consultation_analyser/consultations/ml_pipeline.py +++ b/consultation_analyser/consultations/ml_pipeline.py @@ -9,6 +9,7 @@ from sklearn.feature_extraction.text import CountVectorizer import numpy as np from django.db.models import QuerySet +import pandas as pd from consultation_analyser.consultations import models @@ -21,7 +22,7 @@ def get_embeddings_for_question( return embeddings -def get_topics(free_text_responses_list: List, embeddings: np.ndarray) -> BERTopic: +def get_topic_model(free_text_responses_list: List, embeddings: np.ndarray) -> BERTopic: umap_model = UMAP(n_neighbors=15, n_components=5, min_dist=0.0, metric="cosine", random_state=12) hdbscan_model = HDBSCAN( min_cluster_size=3, metric="euclidean", cluster_selection_method="eom", prediction_data=True @@ -35,34 +36,52 @@ def get_topics(free_text_responses_list: List, embeddings: np.ndarray) -> BERTop return topic_model -def save_themes(topic_model: BERTopic, question_id: UUID) -> None: - question = models.Question.objects.get(id=question_id) - topic_df = topic_model.get_topic_info() - for row in topic_df.itertuples(): - models.Theme.objects.get_or_create(keywords=row.Representation, label=row.Name, question=question) - - -def save_themes_to_answers(topic_model: BERTopic, question_id: UUID, answers_qs: QuerySet) -> None: +def get_answers_and_topics(topic_model: BERTopic, answers_qs: QuerySet) -> pd.DataFrame: + # Answers/IDs need to be in the same order - answers_qs has been sorted free_text_responses = list(answers_qs.values_list("free_text", flat=True)) answers_id_list = answers_qs.values_list("id", flat=True) # Assign topics to answers answers_df = topic_model.get_document_info(free_text_responses) - # Answers must be in the same order answers_df["id"] = answers_id_list - for row in answers_df.itertuples(): - theme = models.Theme.objects.get(question__id=question_id, label=row.Name) - answer = models.Answer.objects.get(id=row.id) - answer.theme = theme - answer.save() + answers_df = answers_df[["id", "Topic", "Name", "Representation"]] + return answers_df + + +def get_or_create_theme_for_question(question: models.Question, label: str, keywords: str) -> models.Theme: + # Themes are unique up to question and label (and keywords) + theme_qs = models.Theme.objects.filter(answer__question=question, keywords=keywords, label=label) + if theme_qs.exists(): + theme = theme_qs.first() + else: + theme = models.Theme(keywords=keywords, label=label) + theme.save() + return theme + + +def save_answer_theme(answer_row): + # TODO - fix the mypy errors + # def save_answer_theme(answer_row: NamedTuple) -> models.Answer: + # Row of answer_df with free_text answers and topic classification + answer = models.Answer.objects.get(answer_id=answer_row.id) + theme = get_or_create_theme_for_question(answer.question, label=answer_row.Name, keywords=answer_row.Representation) + answer.theme = theme + answer.save() + return answer + + +def save_themes_to_answers(answers_topics_df: pd.DataFrame) -> None: + for row in answers_topics_df.itertuples(): + save_answer_theme(row) def get_themes_for_question(question_id: UUID) -> None: + # Need to fix order answers_qs = models.Answer.objects.filter(question__id=question_id).order_by("created_at") free_text_responses = list(answers_qs.values_list("free_text", flat=True)) embeddings = get_embeddings_for_question(free_text_responses) - topic_model = get_topics(free_text_responses, embeddings) - save_themes(topic_model, question_id) - save_themes_to_answers(topic_model, question_id, answers_qs) + topic_model = get_topic_model(free_text_responses, embeddings) + answers_topics_df = get_answers_and_topics(topic_model, answers_qs) + save_themes_to_answers(answers_topics_df) def get_themes_for_consultation(consultation_id: UUID) -> None: diff --git a/consultation_analyser/consultations/models.py b/consultation_analyser/consultations/models.py index c2e08bf0..c46e5926 100644 --- a/consultation_analyser/consultations/models.py +++ b/consultation_analyser/consultations/models.py @@ -59,7 +59,6 @@ class Meta(UUIDPrimaryKeyModel.Meta, TimeStampedModel.Meta): class Theme(UUIDPrimaryKeyModel, TimeStampedModel): - question = models.ForeignKey(Question, on_delete=models.CASCADE, null=True) label = models.CharField(max_length=256, blank=True) summary = models.TextField(blank=True) keywords = models.JSONField(default=list) diff --git a/docs/erd.png b/docs/erd.png index 1703189a2bd40a700cd4cf8006f040317511af23..51b60ed8a4c513556258c19d4975af09e9d50882 100644 GIT binary patch literal 119606 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

sGdV>BKlKtY@<|cld^8dK1A^ zpL#k4qmPDVP9`k{DYd%{3_DXB`EAB0OQj+U&kwwR;uUugL0(9bSkLI*T9eL@-F_|8 z9xPtV-jT`fHtVl_``P57m49oqUY^wQNM6XJ^-N|ge|Eep==FmOI7YJj_Hym=`gy|j zvH7$~PwAbULkS1hzK0g-UyN>VXcR-UADbi^%knJ&;!R zOwLHt`F(r&bY!C7&yI>D4*BuQ*>G2l#MW@tXdJ_CN4}TNW|ch%1nr&r#N^|?^v|W; zmz!Tb84;s(Q}EOZd$XTCi2qZpD(uuN%MOfMG1W-O6gNfg|KZT=l|HH+S5$CkGg}Q? zkp4StbOAlzExy)eW6{elyn?r4_U%5aJSyv)?;v8HfOKype@S@Jf>$Hg+2L)cws^Kp z4V9L&AUs#YykKY}NVRTkHGu5pTci#8Djj zti%g9mDw&!u^ghO8xoN*_|;J4;UxPp<8@nF%*u(W&EnCQttNu4_cGGki18~m9`2mr zLo|wi`0%kjcp}$?fA7}^WvkZHUHa}1PQ{{Z7)JXq6U3Zl<&5uHt!l_R03$ZQ+Fm2Shj-w0t%ZqjG&_ z|H8ognqrplzj$8=k+B`C9WH48qIL^e-2IZO-J!3R{=#yF@OZvh+cJSS*La5)r$n+* z$zN0~yZiGIYb)cnZMVcZNbLT5-u z+{LB?wRrlkP*-jFmM#-z2Y$=wmAV1_|40B04>} zj0Y!Ie#*Q2o|x^b8oI4reHGh_BzdeSA|L&9<80i`A*|76k!+`Hyx@A1Rp&*tOI&*f z{2cFS($rvyzM-Is@MPCAZ_9N5#{-97#q4ph43a0Oc^jWP}-n)=m zW)35A>{jkVp2Y3ad)(26x=U<>Xg{o+bIt%8w&DC$OPLiHoi@b&E|;7X*hx8BM$sAb%wYUt8nl8>Aex!3whx%XGBo-UZ!afsf~MD(Weo>R(qDxxZ9lTWtKB4^_4F?-!0=UMsY> zXM|qX|D`A6=HYJ%u{BikS6|Qm-dcO)S-2}zl-}T>L!74Xe9VQp#*M@h3%cGUwu~Q1 z5}}Ra(`jrQn(h=k!uBbKXTO%)z21q3QMysdBLhc-8TcMdT55w)sLKGOlZhEOqM{YaL%jpv!=TgW=yG~3SC+bhNpjEVU{^76 zT>UnYq8|)jHr(_Z@SAZSpJVMg?V)xGQxjZQE19+yzcCH@KFnAgIW1PXOtbIfbJy{0 zqZi!5(}eiPTg2!TE-L!nyl1n%`;JP|6OCtbmwUJTG##FqC>T0;G~s-NS*rRBUy6Pj zk8IH#O_Wp2Q4}HS*xs&vq1~a+_{3?_H@u*-l0SUaUE5*rwtAjPGOiz1I(^}= zHqEi++%oii(EDND{us_EZR5zkVMFV6KeiR)#696T%AYB6bG-Qn4b$!KPK>>N%g$9L zaXe1nnoNvwbY-K$qfuE%5}jh$=QO~An}(ZWe>{gz&)A2imjt?DsP@!HD$uRMzt;@*d_LSotBHu8j%yW zSGynkBAUOF`;CM8A*Vp|^sA4>3Z=_M1De>n{qk{_ckHAagQJgc9_w_BdB4t52-DES z7d%Og2Ddz-Cf-1AdC?TnlKA(A&AF)QsLWK+T~<;Y`??rue|6!qaG1ty{h%E2OqHf> z=L9i?W`)a%Cg-m)TB}@xZc&f6+^Jo8udX3yyO8%sE{8&n_?Gmtwxu*4<)(K{Ew%Xh z`ML4_aq|S;-HvmsABP9ZjP!}``Ds)=7O%#7_=Qv6(ifT6oVxlJbK=w@iz~kVnz}ab zaEn&aA0AIDBTsc8#pvjxY@6t3XOzuzR>NpfJu~-ole1u4Gf7=~MWZUWMl>oj)m@n} ztT0Ee;5`Zlteo~G&R=t5r;Mkgryl<*8$Vynx+l)>c!P;k;TyS6?4JJWO&r z+o3wPwL&0)FDWVh&9!p|t1g{=bbaWXi}DZ~e{(6v_2^aeYpuB0{1C6sWZS(!o)akL zIm8k-`7yP6sJ4a6cw}OPfi`~Ak{r9H_~_L|HYv>zg=2KDW$8k0$=>3 zW-Uv3;_Qd|%bg(%egT==d)$VXeTDk`n$5S_F0X?G1>^?J^KZ|jN&THx=S-dcsLlJ> zeoQ@O5+*~++CiKO{QPD|xI@Fx0IE;x-WBosB zN~FsA-^xt?@gu8R|1GBONWdj-{T0j8!#V96 zncOpVP_FO z*CPapk50b(*kH;}PObb4fKPHLC+5DK#OU(?K~XXMGw4$fyuI~+GbY#^@HT=o(sawV z;Z>JM2LO#;z1wFzyTfH#qXQCPLje^|r`A;*z*7#NQ&FJ@b)dj(7Fc=GLwlR%zhO^t z)jYbd=Pq23h*qHDvrGd~dk1yN#)Rckv87XBy=R$#MFv14k%&WMlLu-76r=1$=PAU9OJ`vz>$CVd1x&ObjBYg-GY4_%9~?lX93s;_8NL%|7(1Hq8>d5H<> z^)WRXBhdyGP#h>sHLS06gTNWp7JB;gfQr5f#vc1ibhg;AE^^Tx34=3)YJP z)3>*n-a&o4Ru(9qm-Rmg!xqg%9RP&Tt@i`8YYT=}>+1Hlk3`JSzGgT}m;e|oD}Qj1 z<-x`TpN9`mCn%wv%?Re+CV9@QB50pNAm9MxC&7835a9=4;;Eq9A&{ZMFhH8S07il* zwE|O{#2$lvjGcs19waAaIyQ)>Zbf-ULI}zaM0OTyz=R$obSzihgksDKSF68@tEktl zqjUks33)p%y~^N~ zJOC-36pboLNQT@QfNnK_O<=MoD0;N-o%L_tYgATJvO-tdng&y{z5)FRR7g?8nTPfm z_)R9u0!P$8nZ}c1OYbFV9g1IGK~yW3Mwgd1N7i~kt`f^fn(4naw?ueh?54+!h^VOI zg;NWk_WNKjiolUOw%ZH%gIYi#a@tPUHrhgg3kQn}lySg;n!#1Vf>MOB)?SHXAjZ>T z;>~F1bEvm~`7a2NE65YqaAXOpQ#ejFC;w&CZxBEGj|01+4@ED?{O!OXN^${!iXjpQ znVDamziN^F*+}hIrkmXwwndy5TGS5!I{(`&7hE5H6&+m*T08IVsw2jiJixyIk?MX< z&b&-QK?6WfhcL0dzCNXv`?uy>^^BqA=a9?qjo@HvIi#i4nbW>{jN=RTO9{V>k@ADfssz|H-xdCbU6JtZY&7O>}N=l?wfh#u02iRiZ*$I3E-E)w=qnp>Rd*g ztj58CuFy;QgQ~Qr(=Z4DhUTC@AEO4S2{1*z!NKJK0@WJu0*L+&Xc-`D;7WWPguK!; z3^GGS~Ok4vYu0U-V@Js>>1%e8XWMo@aK%})WGu6V@)--hlXyIL; znP7b}rq>64w&%x>W&^Q=goKdxfVaYqc}v*`5^{6*U}hVk){ zd#IznuGZ?0F$Zj!@M9?K{?ve2<1yg?C>ZQ$0bu}|H7f!7#?=F7^d5wwz%ADW02l&2 zmozoaWOw7Y@fco>ig679z0^Y$;)UK+>IjX>>EPCYw-?gN)HHzPW8>!DX5gwG;#r{D zgrdFM(4->>5L6%<6W!DPPHbR^iCR(<_7;35OwYsYpS3%URwno@Q;8jQLsGwCa@vdf~%bcy^NK<{8>yPoc8xkA$*voL6e zS18EK--Ip$v|hMta+{7^ns>TnDgY@a)A@}JcZ2OGp*nF9M#aoKblYEWkvn&O#IRWS zCEQ!MW4IOpwpDNq$1=UzQ_A)r|7oa5zRL<+m>^DZ* z&Vzz-$JSqpg%HeuPs6o+Di!S@nZa}-Y~)@#%V9Y)vqXosRMjKEgcD4;cw}wcuT1_O zr_%sRycl~K0Snb*fB(BUslY-4T^J#M5Z@aSAW;T;!FqKV!9irQhK7a=B--z2xf``M z{jk~Cn6UURMk!8hM~}EiNF-kHDyMxtlSI$o-C<@?(GKUY<9hyqffxzwCH~SN^#Z__ zl9907$#h%*{F z2&orAUBvehXNY$rvG&zkGRl|4+B?bI>;K;$rG5ommk<@Gj>Ax|xpNDgB#421HhOCyz+3$6kv0 zY{09YX>kjZ4+uJlc>n_iks;-=uWuoEoA_r?{<{%{pM))eOl4tX<4y!PP&WhJ3bV1T z5$6(6o{dcuSb(0M)R)<5A%^s`v*0=Y0>y=g;4?&;@|l1pO4bLx;SHz)l}{O5oqSzkk1C{@kcXEkQ}($~0~kP6L9+hHiZE)JK0JWayTW z1>)Vk5qMg{!~%*B+AF7_iA4dO*BRXCiNS^qz=Mm<_HHN7@ZY`4udy*ExO$+9iNqnk zIUGIS6}WMkze!`P82Sd=zXYMzODZbO25MgLoWv;*=e%v(wUIce@`2I^uiEb0B*%M% zjcqNsQP%IMwLxVo(?!Fp?elT|ojm{5L#2(`?N4sM(u&o^W+9U z>aA%jKV&0_gc}&t5(!H1Gw1(yAz0?_fr0y&81K+beD9`Bl5q`0{s`$vh)En5==a2d zVapL2$;TOQqG>RzZ)lkG&UKA2{BI7*%wP}0!=R7p7a5ENwzYbtB{U5|zBu~r+s_M^ zoK8qvCx`yi`KZGA;5ydIe*afjfIyUmgQFsJ%Ts@UxO4b*W{6G^Qw7DY(TCf(4wRR!&wHMBjR5m4AXG~1b6dNX%;ha)89%Y z9m5)|3T7+?*Kdu^E8z8vw>P#FgghL6)dGi!ojeA@!nhm^edTaYRu-R1Q*(1x3D*&K z13`zgNKY|;yG)otW%^FRlpQ2@;Uf`x0k!~Y0zHNqoCw>5dsL|XUY9!=Kw+eTa9NOu z0n^Hi_z|lgbu7R;bM5vb-Wq`e*uX?*8e6q7z2Oy4mBb}WJ0er3*aBkmp8DP zooj!_4W9)m7D$G{gPI%cG1eJvc@`To)6gzyx{#Hb$;;3xlh*#Z@>klhz-2n4?)sXV zq%(N*OhHnQ7$$6e>bomQ4MmR?QSmAx(J%85mQ;w10%?M%ao-g`g`AiuO-MyQ0WpNA zZrhyLi@$)u38?R{KkBi*kbQul-`{|B#I^+Rj5Pfe;vREzIXEpC21#6NMa2>jXXM%a zj|&MAr9VjIvio}?-r2TyuS<-kc&$6W?)Y)TG*w6m6a%7;*fZ;!rO81(BdAkGD#RkJ zUvaFI2+XD=o9gQ~X}2~sG{AfD&y>WZFMhlx2x1s6G~&>Q*HqV8TJK=>E3?TEVsbZ7 z2RR0`oZ`~bkj+jVvH;HZM@1%rZvr+U9HT&+(jS*qE4;r!UQJO^vA3^JL%FHEoEq|< z|BDZ6YxDLL8k8(ePJWg}t6G1<+Sa^(ktx_NW_fx2L;nLLp>X{9^XG1LS02XSi2kb5 z@!n@#U6*XHL#Z3S4!$p_f@23Y0=miq>31zR+P)KmkRfi|VwN~EeD3YtEd`HJ`mt1Q zZfPlJx(t6L^Wx||{G)k-gfif}Q}`Yl*L#` zhUcNg0PO^1Z(zo3hB`Unq##WoZ;Uzt4!=PAKi_xwJu*5$lrG>4AT9x_X(=*aDx$du;5|H703o>pMNTN2 z5Q{_1%7oaD&}g7k0XfqWNLxPxzlL)5+mBUq6bg09d5Ke(efC|4puPd`ZoR7DGsp}_ z`^`LabU|PvbM0 z@WJ6WN(+YU0)UbTaUtn&tG@^3FSlMIO^b!vMRTup_Q^UXGcLjVNG6EBDdJKRh!KJW z$bCd#5Q&w;ct012o`i?*CntJdQPDpu_x}C0&@v^#BM5PXdlBwBXGqd^C@+G$`1pNfzo;`aeG()|fNmW`8wMn*p z_FYtXOPcpjSfn8v07bp0$lmZ;)V!H^c>I8{r`iJYCHXdRq)B;GyUhz0`Bf7Fa5${M zbRv@7SU&h|`{K9{lxFz+)2;*O?N{dU~LzevYC8BobH+X3F<8j&YgGJ z3_clA8Z_jwl~60U0PmBK5CTcwPVylTow0Tl>btiG2aQl~Ipyk_@9>I)m-mbM*;GzK zr~<`#G9c&ztEBgyGUT(jf>)&mNJbj+FTv*wrQva^z#?oiVBGz%6kD+JF;vY_Agb(h zadtMdGQYdU?#`cV0e)_9(Udy~B>$BlS2%-ugc@8#(~x;)9)cfO*k_o(fSS!fxj#pL zlu{}uDqU-}adrEzLkEf;ba~Lfd9TDEmPqLD=3-|r53LM<fzNJqey?rJ|0M<-)R zkGU?`Bd&X$n5c(*2`1ki|Qi|s6);H3Tg!^P_rO) zdz9&ZzRb|u@!Fw&Oc;rQJRbhu9T^)B1Q+f;scQJ7i)%%DLa zT?*$vazhzN2~1-;#KED{k?R2Zak9lXah(4m*p&-#;-E|A|46T>sA$f#+z-lbQbrq= zCQVfa0pRY0)+?d7_S@*`9sYj*KQWi{WP|boSl54euA#?ka~DvqB_h3*!0Kq-FQ(T*oCKZ3QF^E9K$wiGRVN zCH5Bj7Zj7$bi%vRHa4yxBWNJwO=Rj(B_m1pzcrgw#~mjQ!e*R_tR;+0$LSG`q@NHH z`h-&LX_#lOT{IcvEL+9ft`VT`@Ox0uW{`h5fZijBSv#D06Hgp8aF0O=<5|u_85o*3 zSr*?`kg+6?N{4Y#^*_o#)hZ$2hgWad0>d&_f&f#hzFH6*9VDPXE zkmuP73rJYTpFSO%Mv8O`?uiG&3{Rz4P$;weMY~NrHGm{Cn_f2<;VVhP3nFJLfovK` zPW&nZP#fw&xs#}okjRmiL#ZvO+LJ%#-Mel6QVqI6psM2QQJsV*Bg+74FC@kvL*E_Z z1rUir*t-5Ef;hsuq(GDk765h4hPLpuG~2wX0*L=ZW()yJ3B>ZyDZ!&Z3JeT%SVWU$ z7o0i;s=g%&%?{{ek^a^2dk}RiJZU+Io&quEWJr?jeQ9GHbSl0SJy@~+KJZ8FqLLzp z;olh`q7j!-smsk})q74UNps_u1258$sv&#_y%*tN6@mkV@I~<5>K~h$GBll#dJvTy zuc>cv_TZt0=xd%neVW+jKu)bSf5E{ccn+$lh&>{ndgSku07rca9V;^P1DlT=ur9Y6 zbr0w7yeNhuO`w3hTn+EGim2~F7&Ui%FP-TJd@|M7Ov^|I&>>y!AruD7 zo>g?=*J(^tsU4aWXutn2=GY)jb$kxLWzDSy-4M7Zb4N9C4VGrPrz6kqa^Dhg z9!0eab~)R{Jw75x-nwIl1XPrflOz}op+bRX&6k|xuauCKqifM$aOu(|)P9L_{y~2! zLd66h9Tgo@MaJT!K*;LjCCJR7S?+M!7MT(9ZrH4gC@@#<<5fa*!Dd;yNvxN)XNDko^(av@Q9`s+Ul%_c2F-Y zE~;HVo1hfJ`AC7?KS4_AmZaRN*NQnum?T=6aYiFfq2Nbqx}b=2qx*sgY4k=QBI(pi zq!zThudC~GS5*r|Ma7l<&|27tSwg#=w(pw O-}y7L5{cs4xBm~_!jPf> From 9670e1fffceaf8669f40591305b1776881970d68 Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Thu, 21 Mar 2024 20:36:46 +0000 Subject: [PATCH 12/25] Fix tests for ML pipeline. --- .../consultations/ml_pipeline.py | 31 ++++++------ tests/factories.py | 2 +- tests/integration/test_ml_pipeline.py | 39 ++++++++------- tests/unit/test_ml_pipeline_functions.py | 49 +++++++++++++++++++ ...est_run_ml_pipeline_management_command.py} | 0 5 files changed, 87 insertions(+), 34 deletions(-) create mode 100644 tests/unit/test_ml_pipeline_functions.py rename tests/unit/{test_run_ml_pipeline.py => test_run_ml_pipeline_management_command.py} (100%) diff --git a/consultation_analyser/consultations/ml_pipeline.py b/consultation_analyser/consultations/ml_pipeline.py index 461b7b7a..b6e5d461 100644 --- a/consultation_analyser/consultations/ml_pipeline.py +++ b/consultation_analyser/consultations/ml_pipeline.py @@ -1,5 +1,5 @@ from uuid import UUID -from typing import List +from typing import List, NamedTuple from umap.umap_ import UMAP from sentence_transformers import SentenceTransformer @@ -48,22 +48,22 @@ def get_answers_and_topics(topic_model: BERTopic, answers_qs: QuerySet) -> pd.Da def get_or_create_theme_for_question(question: models.Question, label: str, keywords: str) -> models.Theme: - # Themes are unique up to question and label (and keywords) - theme_qs = models.Theme.objects.filter(answer__question=question, keywords=keywords, label=label) - if theme_qs.exists(): - theme = theme_qs.first() - else: + # Themes should be unique up to question and label (and keywords) + # TODO - how can we enforce this? + # TODO - This isn't working + try: + theme = models.Theme.objects.get(answer__question=question, keywords=keywords, label=label) + except models.Theme.DoesNotExist: theme = models.Theme(keywords=keywords, label=label) theme.save() return theme -def save_answer_theme(answer_row): - # TODO - fix the mypy errors - # def save_answer_theme(answer_row: NamedTuple) -> models.Answer: +# TODO - sort out mypy error +def save_answer_theme(answer_row: NamedTuple) -> models.Answer: # Row of answer_df with free_text answers and topic classification - answer = models.Answer.objects.get(answer_id=answer_row.id) - theme = get_or_create_theme_for_question(answer.question, label=answer_row.Name, keywords=answer_row.Representation) + answer = models.Answer.objects.get(id=answer_row.id) # type: ignore + theme = get_or_create_theme_for_question(answer.question, label=answer_row.Name, keywords=answer_row.Representation) # type: ignore answer.theme = theme answer.save() return answer @@ -74,20 +74,23 @@ def save_themes_to_answers(answers_topics_df: pd.DataFrame) -> None: save_answer_theme(row) -def get_themes_for_question(question_id: UUID) -> None: +def save_themes_for_question(question_id: UUID) -> None: # Need to fix order answers_qs = models.Answer.objects.filter(question__id=question_id).order_by("created_at") free_text_responses = list(answers_qs.values_list("free_text", flat=True)) embeddings = get_embeddings_for_question(free_text_responses) topic_model = get_topic_model(free_text_responses, embeddings) answers_topics_df = get_answers_and_topics(topic_model, answers_qs) + print("answers_topics_df") + print(answers_topics_df) + print("====") save_themes_to_answers(answers_topics_df) -def get_themes_for_consultation(consultation_id: UUID) -> None: +def save_themes_for_consultation(consultation_id: UUID) -> None: questions = models.Question.objects.filter(section__consultation__id=consultation_id, has_free_text=True) for question in questions: - get_themes_for_question(question.id) + save_themes_for_question(question.id) # TODO - what to do with topic -1 (outliers) diff --git a/tests/factories.py b/tests/factories.py index fe92799c..6fa77e7e 100644 --- a/tests/factories.py +++ b/tests/factories.py @@ -136,7 +136,7 @@ class Meta: question = factory.SubFactory(QuestionFactory) consultation_response = factory.SubFactory(ConsultationResponseFactory) - theme = factory.SubFactory(ThemeFactory) + theme = factory.LazyAttribute(lambda o: ThemeFactory() if o.free_text else None) multiple_choice_responses = factory.LazyAttribute( lambda o: random.choice(o.question.multiple_choice_options) if o.question.multiple_choice_options else None diff --git a/tests/integration/test_ml_pipeline.py b/tests/integration/test_ml_pipeline.py index 1fbee12f..73fcb09d 100644 --- a/tests/integration/test_ml_pipeline.py +++ b/tests/integration/test_ml_pipeline.py @@ -1,37 +1,38 @@ import pytest -from consultation_analyser.consultations.ml_pipeline import get_themes_for_consultation +from consultation_analyser.consultations.ml_pipeline import ( + save_themes_for_consultation, +) from consultation_analyser.consultations import models from tests import factories @pytest.mark.django_db -def test_get_themes_for_consultation(): - # TODO - generate this in a neater way - can we fix to specific consultations? +def test_save_themes_for_consultation(): consultation = factories.ConsultationFactory(name="My new consultation") section = factories.SectionFactory(name="Base section", consultation=consultation) - questions = [ - factories.QuestionFactory(question=q, section=section) for q in factories.FakeConsultationData().all_questions() - ] - for r in range(10): - response = factories.ConsultationResponseFactory() - _answers = [factories.AnswerFactory(question=q, consultation_response=response) for q in questions] + free_text_question1 = factories.QuestionFactory(section=section, has_free_text=True, slug="mars-bar-recipe-change") + free_text_question2 = factories.QuestionFactory(section=section, has_free_text=True, slug="is-crunchie-too-sweet") + no_free_text_question = factories.QuestionFactory( + section=section, has_free_text=False, slug="favorite-cadbury-chocolate-bar" + ) - get_themes_for_consultation(consultation.id) + questions = [free_text_question1, free_text_question2, no_free_text_question] + for r in range(10): + response = factories.ConsultationResponseFactory(consultation=consultation) + [factories.AnswerFactory(question=q, consultation_response=response, theme=None) for q in questions] - free_text_questions = models.Question.objects.filter(section__consultation=consultation, has_free_text=True) - no_free_text_questions = models.Question.objects.filter(section__consultation=consultation, has_free_text=False) + save_themes_for_consultation(consultation.id) # Check we've generated themes for questions with full text responses, and check fields populated - for q in free_text_questions: - themes_for_q = models.Theme.objects.filter(question=q) + for q in [free_text_question1, free_text_question2]: + themes_for_q = models.Theme.objects.filter(answer__question=q) assert themes_for_q.exists() example_theme = themes_for_q.first() assert example_theme.keywords assert example_theme.label - # Summary not populated yet + # Summary will be populated in a separate step - # Check no themes for questions with no free text - for q in no_free_text_questions: - themes_for_q = models.Theme.objects.filter(question=q) - assert not themes_for_q.exists() + # Check no themes for question with no free text + themes_for_q = models.Theme.objects.filter(answer__question=no_free_text_question) + assert not themes_for_q.exists() diff --git a/tests/unit/test_ml_pipeline_functions.py b/tests/unit/test_ml_pipeline_functions.py new file mode 100644 index 00000000..69a367c6 --- /dev/null +++ b/tests/unit/test_ml_pipeline_functions.py @@ -0,0 +1,49 @@ +import pytest +import pandas as pd + +from consultation_analyser.consultations.ml_pipeline import ( + get_or_create_theme_for_question, + save_themes_for_question, +) +from consultation_analyser.consultations import models +from tests import factories + + +@pytest.mark.django_db +def test_get_or_create_theme_for_question(): + question = factories.QuestionFactory(has_free_text=True) + factories.AnswerFactory(question=question, theme=None) + keywords = ["key", "lock"] + label = "0_key_lock" + # Check theme created + theme = get_or_create_theme_for_question(question, keywords=keywords, label=label) + themes_qs = models.Theme.objects.filter(keywords=keywords, label=label) + assert themes_qs.count() == 1 + assert theme.keywords == keywords + assert theme.label == label + # Check no duplicate created + get_or_create_theme_for_question(question, keywords=keywords, label=label) + themes_qs = models.Theme.objects.filter(keywords=keywords, label=label) + assert themes_qs.count() == 1 + + +@pytest.mark.django_db +def test_save_themes_for_question(): + question = factories.QuestionFactory() + answer1 = factories.AnswerFactory(question=question) + answer2 = factories.AnswerFactory(question=question) + answer3 = factories.AnswerFactory(question=question) + df = pd.DataFrame( + { + "id": [answer1.id, answer2.id, answer3.id], + "Topic": [-1, 0, 0], + "Name": ["-1_x_y", "0_m_n", "0_m_n"], + "Representation": [["x", "y"], ["m", "n"], ["m", "n"]], + } + ) + print(df) + save_themes_for_question(df) + assert answer1.theme.label == "-1_x_y" + assert answer2.theme.keywords == ["m", "n"] + themes_for_question = models.Theme.objects.filter(answer__question=question) + assert themes_for_question.count() == 2 diff --git a/tests/unit/test_run_ml_pipeline.py b/tests/unit/test_run_ml_pipeline_management_command.py similarity index 100% rename from tests/unit/test_run_ml_pipeline.py rename to tests/unit/test_run_ml_pipeline_management_command.py From fb3fc5aab218d42b1f402c73d02a91d36074285d Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Mon, 25 Mar 2024 13:20:18 +0000 Subject: [PATCH 13/25] Update poetry lock file --- poetry.lock | 293 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 - 2 files changed, 142 insertions(+), 153 deletions(-) diff --git a/poetry.lock b/poetry.lock index 250a2eae..8df539f0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,6 +1,4 @@ # This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. -<<<<<<< HEAD -======= [[package]] name = "aiohttp" @@ -141,7 +139,6 @@ sniffio = ">=1.1" doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] trio = ["trio (>=0.23)"] ->>>>>>> e218519 (Add ML packages) [[package]] name = "annotated-types" @@ -182,6 +179,25 @@ files = [ [package.extras] tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] +[[package]] +name = "attrs" +version = "23.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + [[package]] name = "beautifulsoup4" version = "4.12.3" @@ -202,23 +218,6 @@ chardet = ["chardet"] charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] -name = "attrs" -version = "23.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, - {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, -] - -[package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] -tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] [[package]] name = "bertopic" @@ -356,7 +355,6 @@ files = [ ] [[package]] -<<<<<<< HEAD name = "click" version = "8.1.7" description = "Composable command line interface toolkit" @@ -370,7 +368,6 @@ files = [ [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} -======= name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." @@ -469,7 +466,6 @@ files = [ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] ->>>>>>> f6ff15b (Add ML packages) [[package]] name = "colorama" version = "0.4.6" @@ -482,7 +478,6 @@ files = [ ] [[package]] -<<<<<<< HEAD name = "datamodel-code-generator" version = "0.25.5" description = "Datamodel Code Generator" @@ -509,7 +504,6 @@ debug = ["PySnooper (>=0.4.1,<2.0.0)"] graphql = ["graphql-core (>=3.2.3,<4.0.0)"] http = ["httpx"] validation = ["openapi-spec-validator (>=0.2.8,<0.7.0)", "prance (>=0.18.2)"] -======= name = "cython" version = "0.29.37" description = "The Cython compiler for writing C extensions for the Python language." @@ -574,7 +568,6 @@ files = [ [package.dependencies] marshmallow = ">=3.18.0,<4.0.0" typing-inspect = ">=0.4.0,<1" ->>>>>>> f6ff15b (Add ML packages) [[package]] name = "distlib" @@ -683,18 +676,6 @@ django-compressor = ">=1.3" libsass = ">=0.7.0,<1" [[package]] -name = "django-webtest" -version = "1.9.11" -description = "Instant integration of Ian Bicking's WebTest (http://docs.pylonsproject.org/projects/webtest/) with Django's testing framework." -optional = false -python-versions = "*" -files = [ - {file = "django-webtest-1.9.11.tar.gz", hash = "sha256:9597d26ced599bc5d4d9366bb451469fc9707b4779f79543cdf401ae6c5aeb35"}, - {file = "django_webtest-1.9.11-py3-none-any.whl", hash = "sha256:e29baf8337e7fe7db41ce63ca6661f7b5c77fe56f506f48b305e09313f5475b4"}, -] - -[package.dependencies] -webtest = ">=1.3.3" name = "django-types" version = "0.19.1" description = "Type stubs for Django" @@ -742,6 +723,18 @@ files = [ [package.dependencies] dnspython = ">=2.0.0" idna = ">=2.0.0" +name = "django-webtest" +version = "1.9.11" +description = "Instant integration of Ian Bicking's WebTest (http://docs.pylonsproject.org/projects/webtest/) with Django's testing framework." +optional = false +python-versions = "*" +files = [ + {file = "django-webtest-1.9.11.tar.gz", hash = "sha256:9597d26ced599bc5d4d9366bb451469fc9707b4779f79543cdf401ae6c5aeb35"}, + {file = "django_webtest-1.9.11-py3-none-any.whl", hash = "sha256:e29baf8337e7fe7db41ce63ca6661f7b5c77fe56f506f48b305e09313f5475b4"}, +] + +[package.dependencies] +webtest = ">=1.3.3" [[package]] name = "factory-boy" @@ -792,7 +785,6 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", typing = ["typing-extensions (>=4.8)"] [[package]] -<<<<<<< HEAD name = "genson" version = "1.2.2" description = "GenSON is a powerful, user-friendly JSON Schema generator." @@ -803,7 +795,6 @@ files = [ ] [[package]] -======= name = "frozenlist" version = "1.4.1" description = "A list-like structure which implements collections.abc.MutableSequence" @@ -925,7 +916,6 @@ ssh = ["paramiko"] tqdm = ["tqdm"] [[package]] ->>>>>>> f6ff15b (Add ML packages) name = "govuk-frontend-jinja" version = "3.0.0" description = "GOV.UK Frontend Jinja Macros" @@ -940,24 +930,6 @@ files = [ jinja2 = "<3.0.0 || >3.0.0,<3.0.1 || >3.0.1" [[package]] -name = "gunicorn" -version = "21.2.0" -description = "WSGI HTTP Server for UNIX" -optional = false -python-versions = ">=3.5" -files = [ - {file = "gunicorn-21.2.0-py3-none-any.whl", hash = "sha256:3213aa5e8c24949e792bcacfc176fef362e7aac80b76c56f6b5122bf350722f0"}, - {file = "gunicorn-21.2.0.tar.gz", hash = "sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033"}, -] - -[package.dependencies] -packaging = "*" - -[package.extras] -eventlet = ["eventlet (>=0.24.1)"] -gevent = ["gevent (>=1.4.0)"] -setproctitle = ["setproctitle"] -tornado = ["tornado (>=0.2)"] name = "greenlet" version = "3.0.3" description = "Lightweight in-process concurrent programming" @@ -1028,6 +1000,26 @@ files = [ docs = ["Sphinx", "furo"] test = ["objgraph", "psutil"] +[[package]] +name = "gunicorn" +version = "21.2.0" +description = "WSGI HTTP Server for UNIX" +optional = false +python-versions = ">=3.5" +files = [ + {file = "gunicorn-21.2.0-py3-none-any.whl", hash = "sha256:3213aa5e8c24949e792bcacfc176fef362e7aac80b76c56f6b5122bf350722f0"}, + {file = "gunicorn-21.2.0.tar.gz", hash = "sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033"}, +] + +[package.dependencies] +packaging = "*" + +[package.extras] +eventlet = ["eventlet (>=0.24.1)"] +gevent = ["gevent (>=1.4.0)"] +setproctitle = ["setproctitle"] +tornado = ["tornado (>=0.2)"] + [[package]] name = "hdbscan" version = "0.8.33" @@ -1104,7 +1096,6 @@ files = [ ] [[package]] -<<<<<<< HEAD name = "inflect" version = "5.6.2" description = "Correctly generate plurals, singular nouns, ordinals, indefinite articles; convert numbers to words" @@ -1120,8 +1111,6 @@ docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9) testing = ["pygments", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [[package]] -======= ->>>>>>> f6ff15b (Add ML packages) name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" @@ -1212,21 +1201,21 @@ files = [ [[package]] name = "langchain" -version = "0.1.12" +version = "0.1.13" description = "Building applications with LLMs through composability" optional = false -python-versions = ">=3.8.1,<4.0" +python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain-0.1.12-py3-none-any.whl", hash = "sha256:b4dd1760e2d035daefad08af60a209b96b729ee45492d34e3e127e553a471034"}, - {file = "langchain-0.1.12.tar.gz", hash = "sha256:5f612761ba548b81748ed8dc70535e8de0531445415028a82de3fd8255bfa8a3"}, + {file = "langchain-0.1.13-py3-none-any.whl", hash = "sha256:c87657021b777d6b07e55be379a28660a1cd148c31593569869dd6b0b4cab945"}, + {file = "langchain-0.1.13.tar.gz", hash = "sha256:db330aa79c33501cb1ed97ff465f7645813eaa6cfd742c61e19c2d48e4aaba18"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" dataclasses-json = ">=0.5.7,<0.7" jsonpatch = ">=1.33,<2.0" -langchain-community = ">=0.0.28,<0.1" -langchain-core = ">=0.1.31,<0.2.0" +langchain-community = ">=0.0.29,<0.1" +langchain-core = ">=0.1.33,<0.2.0" langchain-text-splitters = ">=0.0.1,<0.1" langsmith = ">=0.1.17,<0.2.0" numpy = ">=1,<2" @@ -1252,19 +1241,19 @@ text-helpers = ["chardet (>=5.1.0,<6.0.0)"] [[package]] name = "langchain-community" -version = "0.0.28" +version = "0.0.29" description = "Community contributed LangChain integrations." optional = false -python-versions = ">=3.8.1,<4.0" +python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_community-0.0.28-py3-none-any.whl", hash = "sha256:bdb015ac455ae68432ea104628717583dce041e1abdfcefe86e39f034f5e90b8"}, - {file = "langchain_community-0.0.28.tar.gz", hash = "sha256:8664d243a90550fc5ddc137b712034e02c8d43afc8d4cc832ba5842b44c864ce"}, + {file = "langchain_community-0.0.29-py3-none-any.whl", hash = "sha256:1652dddf257089b7b5066974b636262b4a5b680339f4539be133b14ae351e67d"}, + {file = "langchain_community-0.0.29.tar.gz", hash = "sha256:d88107fafa9fe2c5733da9630c68d9ee51cd33b1c88a4950e7a2d9a38f7e7aa3"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" dataclasses-json = ">=0.5.7,<0.7" -langchain-core = ">=0.1.31,<0.2.0" +langchain-core = ">=0.1.33,<0.2.0" langsmith = ">=0.1.0,<0.2.0" numpy = ">=1,<2" PyYAML = ">=5.3" @@ -1278,13 +1267,13 @@ extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15. [[package]] name = "langchain-core" -version = "0.1.32" +version = "0.1.33" description = "Building applications with LLMs through composability" optional = false -python-versions = ">=3.8.1,<4.0" +python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_core-0.1.32-py3-none-any.whl", hash = "sha256:192aecdee6216af19b596ec18e7be3da0b9ecb9083eec263e02b68125737245d"}, - {file = "langchain_core-0.1.32.tar.gz", hash = "sha256:d62683becbf20f51f12875791a042320f45eaa0c87a267d30bc03bc1a07f5ec2"}, + {file = "langchain_core-0.1.33-py3-none-any.whl", hash = "sha256:cee7fbab114c74b7279a92c8a376b40344b0fa3d0f0af3143a858e3b7485bf13"}, + {file = "langchain_core-0.1.33.tar.gz", hash = "sha256:545eff3de83cc58231bd2b0c6d672323fc2077b94d326ba1a3219118af1d1a66"}, ] [package.dependencies] @@ -1319,13 +1308,13 @@ extended-testing = ["lxml (>=5.1.0,<6.0.0)"] [[package]] name = "langsmith" -version = "0.1.29" +version = "0.1.31" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false -python-versions = ">=3.8.1,<4.0" +python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.29-py3-none-any.whl", hash = "sha256:5439f5bf25b00a43602aa1ddaba0a31d413ed920e7b20494070328f7e1ecbb86"}, - {file = "langsmith-0.1.29.tar.gz", hash = "sha256:60ba0bd889c6a2683d123f66dc5043368eb2f103c4eb69e382abf7ce69a9f7d6"}, + {file = "langsmith-0.1.31-py3-none-any.whl", hash = "sha256:5211a9dc00831db307eb843485a97096484b697b5d2cd1efaac34228e97ca087"}, + {file = "langsmith-0.1.31.tar.gz", hash = "sha256:efd54ccd44be7fda911bfdc0ead340473df2fdd07345c7252901834d0c4aa37e"}, ] [package.dependencies] @@ -2895,13 +2884,13 @@ test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", [[package]] name = "sentence-transformers" -version = "2.5.1" +version = "2.6.0" description = "Multilingual text embeddings" optional = false python-versions = ">=3.8.0" files = [ - {file = "sentence-transformers-2.5.1.tar.gz", hash = "sha256:754bf2b2623eb46904fd9c72ff89a0f90200fe141a8d45b03e83bc6d51718153"}, - {file = "sentence_transformers-2.5.1-py3-none-any.whl", hash = "sha256:f12346f7fca06ed1198d24235cb9114a74665506f7c30044e0a6f12de7eeeb77"}, + {file = "sentence-transformers-2.6.0.tar.gz", hash = "sha256:cf519d311ddcc8ff84d78d18fae051985bef348716354e069e3d6d670e4db604"}, + {file = "sentence_transformers-2.6.0-py3-none-any.whl", hash = "sha256:8807db6db0cf0a92f02be799b7c8260029ff91315d18f7b4b51c30b10d6b4fdb"}, ] [package.dependencies] @@ -2941,17 +2930,6 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -[[package]] -name = "soupsieve" -version = "2.5" -description = "A modern CSS selector implementation for Beautiful Soup." -optional = false -python-versions = ">=3.8" -files = [ - {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, - {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, -] - [[package]] name = "sniffio" version = "1.3.1" @@ -2963,62 +2941,73 @@ files = [ {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, ] +[[package]] +name = "soupsieve" +version = "2.5" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.8" +files = [ + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, +] + [[package]] name = "sqlalchemy" -version = "2.0.28" +version = "2.0.29" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.28-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0b148ab0438f72ad21cb004ce3bdaafd28465c4276af66df3b9ecd2037bf252"}, - {file = "SQLAlchemy-2.0.28-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bbda76961eb8f27e6ad3c84d1dc56d5bc61ba8f02bd20fcf3450bd421c2fcc9c"}, - {file = "SQLAlchemy-2.0.28-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feea693c452d85ea0015ebe3bb9cd15b6f49acc1a31c28b3c50f4db0f8fb1e71"}, - {file = "SQLAlchemy-2.0.28-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5da98815f82dce0cb31fd1e873a0cb30934971d15b74e0d78cf21f9e1b05953f"}, - {file = "SQLAlchemy-2.0.28-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4a5adf383c73f2d49ad15ff363a8748319ff84c371eed59ffd0127355d6ea1da"}, - {file = "SQLAlchemy-2.0.28-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56856b871146bfead25fbcaed098269d90b744eea5cb32a952df00d542cdd368"}, - {file = "SQLAlchemy-2.0.28-cp310-cp310-win32.whl", hash = "sha256:943aa74a11f5806ab68278284a4ddd282d3fb348a0e96db9b42cb81bf731acdc"}, - {file = "SQLAlchemy-2.0.28-cp310-cp310-win_amd64.whl", hash = "sha256:c6c4da4843e0dabde41b8f2e8147438330924114f541949e6318358a56d1875a"}, - {file = "SQLAlchemy-2.0.28-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46a3d4e7a472bfff2d28db838669fc437964e8af8df8ee1e4548e92710929adc"}, - {file = "SQLAlchemy-2.0.28-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0d3dd67b5d69794cfe82862c002512683b3db038b99002171f624712fa71aeaa"}, - {file = "SQLAlchemy-2.0.28-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61e2e41656a673b777e2f0cbbe545323dbe0d32312f590b1bc09da1de6c2a02"}, - {file = "SQLAlchemy-2.0.28-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0315d9125a38026227f559488fe7f7cee1bd2fbc19f9fd637739dc50bb6380b2"}, - {file = "SQLAlchemy-2.0.28-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:af8ce2d31679006e7b747d30a89cd3ac1ec304c3d4c20973f0f4ad58e2d1c4c9"}, - {file = "SQLAlchemy-2.0.28-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:81ba314a08c7ab701e621b7ad079c0c933c58cdef88593c59b90b996e8b58fa5"}, - {file = "SQLAlchemy-2.0.28-cp311-cp311-win32.whl", hash = "sha256:1ee8bd6d68578e517943f5ebff3afbd93fc65f7ef8f23becab9fa8fb315afb1d"}, - {file = "SQLAlchemy-2.0.28-cp311-cp311-win_amd64.whl", hash = "sha256:ad7acbe95bac70e4e687a4dc9ae3f7a2f467aa6597049eeb6d4a662ecd990bb6"}, - {file = "SQLAlchemy-2.0.28-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d3499008ddec83127ab286c6f6ec82a34f39c9817f020f75eca96155f9765097"}, - {file = "SQLAlchemy-2.0.28-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9b66fcd38659cab5d29e8de5409cdf91e9986817703e1078b2fdaad731ea66f5"}, - {file = "SQLAlchemy-2.0.28-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bea30da1e76cb1acc5b72e204a920a3a7678d9d52f688f087dc08e54e2754c67"}, - {file = "SQLAlchemy-2.0.28-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:124202b4e0edea7f08a4db8c81cc7859012f90a0d14ba2bf07c099aff6e96462"}, - {file = "SQLAlchemy-2.0.28-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e23b88c69497a6322b5796c0781400692eca1ae5532821b39ce81a48c395aae9"}, - {file = "SQLAlchemy-2.0.28-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b6303bfd78fb3221847723104d152e5972c22367ff66edf09120fcde5ddc2e2"}, - {file = "SQLAlchemy-2.0.28-cp312-cp312-win32.whl", hash = "sha256:a921002be69ac3ab2cf0c3017c4e6a3377f800f1fca7f254c13b5f1a2f10022c"}, - {file = "SQLAlchemy-2.0.28-cp312-cp312-win_amd64.whl", hash = "sha256:b4a2cf92995635b64876dc141af0ef089c6eea7e05898d8d8865e71a326c0385"}, - {file = "SQLAlchemy-2.0.28-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e91b5e341f8c7f1e5020db8e5602f3ed045a29f8e27f7f565e0bdee3338f2c7"}, - {file = "SQLAlchemy-2.0.28-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45c7b78dfc7278329f27be02c44abc0d69fe235495bb8e16ec7ef1b1a17952db"}, - {file = "SQLAlchemy-2.0.28-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3eba73ef2c30695cb7eabcdb33bb3d0b878595737479e152468f3ba97a9c22a4"}, - {file = "SQLAlchemy-2.0.28-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5df5d1dafb8eee89384fb7a1f79128118bc0ba50ce0db27a40750f6f91aa99d5"}, - {file = "SQLAlchemy-2.0.28-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2858bbab1681ee5406650202950dc8f00e83b06a198741b7c656e63818633526"}, - {file = "SQLAlchemy-2.0.28-cp37-cp37m-win32.whl", hash = "sha256:9461802f2e965de5cff80c5a13bc945abea7edaa1d29360b485c3d2b56cdb075"}, - {file = "SQLAlchemy-2.0.28-cp37-cp37m-win_amd64.whl", hash = "sha256:a6bec1c010a6d65b3ed88c863d56b9ea5eeefdf62b5e39cafd08c65f5ce5198b"}, - {file = "SQLAlchemy-2.0.28-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:843a882cadebecc655a68bd9a5b8aa39b3c52f4a9a5572a3036fb1bb2ccdc197"}, - {file = "SQLAlchemy-2.0.28-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:dbb990612c36163c6072723523d2be7c3eb1517bbdd63fe50449f56afafd1133"}, - {file = "SQLAlchemy-2.0.28-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7e4baf9161d076b9a7e432fce06217b9bd90cfb8f1d543d6e8c4595627edb9"}, - {file = "SQLAlchemy-2.0.28-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0a5354cb4de9b64bccb6ea33162cb83e03dbefa0d892db88a672f5aad638a75"}, - {file = "SQLAlchemy-2.0.28-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:fffcc8edc508801ed2e6a4e7b0d150a62196fd28b4e16ab9f65192e8186102b6"}, - {file = "SQLAlchemy-2.0.28-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aca7b6d99a4541b2ebab4494f6c8c2f947e0df4ac859ced575238e1d6ca5716b"}, - {file = "SQLAlchemy-2.0.28-cp38-cp38-win32.whl", hash = "sha256:8c7f10720fc34d14abad5b647bc8202202f4948498927d9f1b4df0fb1cf391b7"}, - {file = "SQLAlchemy-2.0.28-cp38-cp38-win_amd64.whl", hash = "sha256:243feb6882b06a2af68ecf4bec8813d99452a1b62ba2be917ce6283852cf701b"}, - {file = "SQLAlchemy-2.0.28-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fc4974d3684f28b61b9a90fcb4c41fb340fd4b6a50c04365704a4da5a9603b05"}, - {file = "SQLAlchemy-2.0.28-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87724e7ed2a936fdda2c05dbd99d395c91ea3c96f029a033a4a20e008dd876bf"}, - {file = "SQLAlchemy-2.0.28-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68722e6a550f5de2e3cfe9da6afb9a7dd15ef7032afa5651b0f0c6b3adb8815d"}, - {file = "SQLAlchemy-2.0.28-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:328529f7c7f90adcd65aed06a161851f83f475c2f664a898af574893f55d9e53"}, - {file = "SQLAlchemy-2.0.28-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:df40c16a7e8be7413b885c9bf900d402918cc848be08a59b022478804ea076b8"}, - {file = "SQLAlchemy-2.0.28-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:426f2fa71331a64f5132369ede5171c52fd1df1bd9727ce621f38b5b24f48750"}, - {file = "SQLAlchemy-2.0.28-cp39-cp39-win32.whl", hash = "sha256:33157920b233bc542ce497a81a2e1452e685a11834c5763933b440fedd1d8e2d"}, - {file = "SQLAlchemy-2.0.28-cp39-cp39-win_amd64.whl", hash = "sha256:2f60843068e432311c886c5f03c4664acaef507cf716f6c60d5fde7265be9d7b"}, - {file = "SQLAlchemy-2.0.28-py3-none-any.whl", hash = "sha256:78bb7e8da0183a8301352d569900d9d3594c48ac21dc1c2ec6b3121ed8b6c986"}, - {file = "SQLAlchemy-2.0.28.tar.gz", hash = "sha256:dd53b6c4e6d960600fd6532b79ee28e2da489322fcf6648738134587faf767b6"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c142852ae192e9fe5aad5c350ea6befe9db14370b34047e1f0f7cf99e63c63b"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:99a1e69d4e26f71e750e9ad6fdc8614fbddb67cfe2173a3628a2566034e223c7"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ef3fbccb4058355053c51b82fd3501a6e13dd808c8d8cd2561e610c5456013c"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d6753305936eddc8ed190e006b7bb33a8f50b9854823485eed3a886857ab8d1"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0f3ca96af060a5250a8ad5a63699180bc780c2edf8abf96c58af175921df847a"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c4520047006b1d3f0d89e0532978c0688219857eb2fee7c48052560ae76aca1e"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-win32.whl", hash = "sha256:b2a0e3cf0caac2085ff172c3faacd1e00c376e6884b5bc4dd5b6b84623e29e4f"}, + {file = "SQLAlchemy-2.0.29-cp310-cp310-win_amd64.whl", hash = "sha256:01d10638a37460616708062a40c7b55f73e4d35eaa146781c683e0fa7f6c43fb"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:308ef9cb41d099099fffc9d35781638986870b29f744382904bf9c7dadd08513"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:296195df68326a48385e7a96e877bc19aa210e485fa381c5246bc0234c36c78e"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a13b917b4ffe5a0a31b83d051d60477819ddf18276852ea68037a144a506efb9"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f6d971255d9ddbd3189e2e79d743ff4845c07f0633adfd1de3f63d930dbe673"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:61405ea2d563407d316c63a7b5271ae5d274a2a9fbcd01b0aa5503635699fa1e"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:de7202ffe4d4a8c1e3cde1c03e01c1a3772c92858837e8f3879b497158e4cb44"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-win32.whl", hash = "sha256:b5d7ed79df55a731749ce65ec20d666d82b185fa4898430b17cb90c892741520"}, + {file = "SQLAlchemy-2.0.29-cp311-cp311-win_amd64.whl", hash = "sha256:205f5a2b39d7c380cbc3b5dcc8f2762fb5bcb716838e2d26ccbc54330775b003"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d96710d834a6fb31e21381c6d7b76ec729bd08c75a25a5184b1089141356171f"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:52de4736404e53c5c6a91ef2698c01e52333988ebdc218f14c833237a0804f1b"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c7b02525ede2a164c5fa5014915ba3591730f2cc831f5be9ff3b7fd3e30958e"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dfefdb3e54cd15f5d56fd5ae32f1da2d95d78319c1f6dfb9bcd0eb15d603d5d"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a88913000da9205b13f6f195f0813b6ffd8a0c0c2bd58d499e00a30eb508870c"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fecd5089c4be1bcc37c35e9aa678938d2888845a134dd016de457b942cf5a758"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-win32.whl", hash = "sha256:8197d6f7a3d2b468861ebb4c9f998b9df9e358d6e1cf9c2a01061cb9b6cf4e41"}, + {file = "SQLAlchemy-2.0.29-cp312-cp312-win_amd64.whl", hash = "sha256:9b19836ccca0d321e237560e475fd99c3d8655d03da80c845c4da20dda31b6e1"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:87a1d53a5382cdbbf4b7619f107cc862c1b0a4feb29000922db72e5a66a5ffc0"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a0732dffe32333211801b28339d2a0babc1971bc90a983e3035e7b0d6f06b93"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90453597a753322d6aa770c5935887ab1fc49cc4c4fdd436901308383d698b4b"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ea311d4ee9a8fa67f139c088ae9f905fcf0277d6cd75c310a21a88bf85e130f5"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5f20cb0a63a3e0ec4e169aa8890e32b949c8145983afa13a708bc4b0a1f30e03"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-win32.whl", hash = "sha256:e5bbe55e8552019c6463709b39634a5fc55e080d0827e2a3a11e18eb73f5cdbd"}, + {file = "SQLAlchemy-2.0.29-cp37-cp37m-win_amd64.whl", hash = "sha256:c2f9c762a2735600654c654bf48dad388b888f8ce387b095806480e6e4ff6907"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7e614d7a25a43a9f54fcce4675c12761b248547f3d41b195e8010ca7297c369c"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:471fcb39c6adf37f820350c28aac4a7df9d3940c6548b624a642852e727ea586"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:988569c8732f54ad3234cf9c561364221a9e943b78dc7a4aaf35ccc2265f1930"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dddaae9b81c88083e6437de95c41e86823d150f4ee94bf24e158a4526cbead01"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:334184d1ab8f4c87f9652b048af3f7abea1c809dfe526fb0435348a6fef3d380"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:38b624e5cf02a69b113c8047cf7f66b5dfe4a2ca07ff8b8716da4f1b3ae81567"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-win32.whl", hash = "sha256:bab41acf151cd68bc2b466deae5deeb9e8ae9c50ad113444151ad965d5bf685b"}, + {file = "SQLAlchemy-2.0.29-cp38-cp38-win_amd64.whl", hash = "sha256:52c8011088305476691b8750c60e03b87910a123cfd9ad48576d6414b6ec2a1d"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3071ad498896907a5ef756206b9dc750f8e57352113c19272bdfdc429c7bd7de"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dba622396a3170974f81bad49aacebd243455ec3cc70615aeaef9e9613b5bca5"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b184e3de58009cc0bf32e20f137f1ec75a32470f5fede06c58f6c355ed42a72"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c37f1050feb91f3d6c32f864d8e114ff5545a4a7afe56778d76a9aec62638ba"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bda7ce59b06d0f09afe22c56714c65c957b1068dee3d5e74d743edec7daba552"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:25664e18bef6dc45015b08f99c63952a53a0a61f61f2e48a9e70cec27e55f699"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-win32.whl", hash = "sha256:77d29cb6c34b14af8a484e831ab530c0f7188f8efed1c6a833a2c674bf3c26ec"}, + {file = "SQLAlchemy-2.0.29-cp39-cp39-win_amd64.whl", hash = "sha256:04c487305ab035a9548f573763915189fc0fe0824d9ba28433196f8436f1449c"}, + {file = "SQLAlchemy-2.0.29-py3-none-any.whl", hash = "sha256:dc4ee2d4ee43251905f88637d5281a8d52e916a021384ec10758826f5cbae305"}, + {file = "SQLAlchemy-2.0.29.tar.gz", hash = "sha256:bd9566b8e58cabd700bc367b60e90d9349cd16f0984973f98a9a09f9c64e86f0"}, ] [package.dependencies] @@ -3096,13 +3085,13 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] [[package]] name = "threadpoolctl" -version = "3.3.0" +version = "3.4.0" description = "threadpoolctl" optional = false python-versions = ">=3.8" files = [ - {file = "threadpoolctl-3.3.0-py3-none-any.whl", hash = "sha256:6155be1f4a39f31a18ea70f94a77e0ccd57dced08122ea61109e7da89883781e"}, - {file = "threadpoolctl-3.3.0.tar.gz", hash = "sha256:5dac632b4fa2d43f42130267929af3ba01399ef4bd1882918e92dbc30365d30c"}, + {file = "threadpoolctl-3.4.0-py3-none-any.whl", hash = "sha256:8f4c689a65b23e5ed825c8436a92b818aac005e0f3715f6a1664d7c7ee29d262"}, + {file = "threadpoolctl-3.4.0.tar.gz", hash = "sha256:f11b491a03661d6dd7ef692dd422ab34185d982466c49c8f98c8f716b5c93196"}, ] [[package]] @@ -3311,13 +3300,13 @@ telegram = ["requests"] [[package]] name = "transformers" -version = "4.38.2" +version = "4.39.1" description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" optional = false python-versions = ">=3.8.0" files = [ - {file = "transformers-4.38.2-py3-none-any.whl", hash = "sha256:c4029cb9f01b3dd335e52f364c52d2b37c65b4c78e02e6a08b1919c5c928573e"}, - {file = "transformers-4.38.2.tar.gz", hash = "sha256:c5fc7ad682b8a50a48b2a4c05d4ea2de5567adb1bdd00053619dbe5960857dd5"}, + {file = "transformers-4.39.1-py3-none-any.whl", hash = "sha256:df167e08b27ab254044a38bb7c439461cd3916332205416e9b6b1592b517a1a5"}, + {file = "transformers-4.39.1.tar.gz", hash = "sha256:ab9c1e1912843b9976e6cc62b27cd5434284fc0dab465e1b660333acfa81c6bc"}, ] [package.dependencies] @@ -3548,6 +3537,8 @@ files = [ [package.extras] brotli = ["Brotli"] + +[[package]] name = "yarl" version = "1.9.4" description = "Yet another URL library" diff --git a/pyproject.toml b/pyproject.toml index 4037bc7d..dcf62647 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,8 +48,6 @@ files = '**/*.py' exclude= ['^consultation_analyser/consultations/migrations/'] - - [tool.poetry.group.test.dependencies] pytest-django = "^4.8.0" django-webtest = "^1.9.11" From 523e507147de720a4edd2bef379a68861f6ccd9a Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Tue, 26 Mar 2024 09:54:04 +0000 Subject: [PATCH 14/25] More changes to ML pipeline --- .../consultations/dummy_data.py | 23 +++++++++++-------- .../consultations/ml_pipeline.py | 16 ++++++------- consultation_analyser/consultations/models.py | 3 --- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/consultation_analyser/consultations/dummy_data.py b/consultation_analyser/consultations/dummy_data.py index 911aeffb..7735ede7 100644 --- a/consultation_analyser/consultations/dummy_data.py +++ b/consultation_analyser/consultations/dummy_data.py @@ -22,12 +22,17 @@ def __init__(self, responses=10, **options): questions = [QuestionFactory(question=q, section=section) for q in FakeConsultationData().all_questions()] for r in range(responses): response = ConsultationResponseFactory(consultation=consultation) - _answers = [AnswerFactory(question=q, consultation_response=response) for q in questions] - - # Set themes per question, multiple answers with the same theme - for q in questions: - themes = [ThemeFactory() for _ in range(2, 6)] - for a in _answers: - random_theme = random.choice(themes) - a.theme = random_theme - a.save() + + _answers = [AnswerFactory(question=q, consultation_response=response, theme=None) for q in questions] + + # TODO - change back or create an option + + # _answers = [AnswerFactory(question=q, consultation_response=response) for q in questions] + + # # Set themes per question, multiple answers with the same theme + # for q in questions: + # themes = [ThemeFactory() for _ in range(2, 6)] + # for a in _answers: + # random_theme = random.choice(themes) + # a.theme = random_theme + # a.save() diff --git a/consultation_analyser/consultations/ml_pipeline.py b/consultation_analyser/consultations/ml_pipeline.py index b6e5d461..1f407d43 100644 --- a/consultation_analyser/consultations/ml_pipeline.py +++ b/consultation_analyser/consultations/ml_pipeline.py @@ -51,17 +51,17 @@ def get_or_create_theme_for_question(question: models.Question, label: str, keyw # Themes should be unique up to question and label (and keywords) # TODO - how can we enforce this? # TODO - This isn't working - try: - theme = models.Theme.objects.get(answer__question=question, keywords=keywords, label=label) - except models.Theme.DoesNotExist: - theme = models.Theme(keywords=keywords, label=label) - theme.save() + + theme, _ = models.Theme.objects.get_or_create(answer__question=question, keywords=keywords, label=label) + print(f"created: {_}") return theme # TODO - sort out mypy error def save_answer_theme(answer_row: NamedTuple) -> models.Answer: # Row of answer_df with free_text answers and topic classification + print(f"answer_row.id: {answer_row.id}") + print(f"answer_row.Name: {answer_row.Name}") answer = models.Answer.objects.get(id=answer_row.id) # type: ignore theme = get_or_create_theme_for_question(answer.question, label=answer_row.Name, keywords=answer_row.Representation) # type: ignore answer.theme = theme @@ -81,9 +81,9 @@ def save_themes_for_question(question_id: UUID) -> None: embeddings = get_embeddings_for_question(free_text_responses) topic_model = get_topic_model(free_text_responses, embeddings) answers_topics_df = get_answers_and_topics(topic_model, answers_qs) - print("answers_topics_df") - print(answers_topics_df) - print("====") + # print("answers_topics_df") + # print(answers_topics_df) + # print("====") save_themes_to_answers(answers_topics_df) diff --git a/consultation_analyser/consultations/models.py b/consultation_analyser/consultations/models.py index c46e5926..507adb83 100644 --- a/consultation_analyser/consultations/models.py +++ b/consultation_analyser/consultations/models.py @@ -63,9 +63,6 @@ class Theme(UUIDPrimaryKeyModel, TimeStampedModel): summary = models.TextField(blank=True) keywords = models.JSONField(default=list) - class Meta(UUIDPrimaryKeyModel.Meta, TimeStampedModel.Meta): - pass - class Answer(UUIDPrimaryKeyModel, TimeStampedModel): multiple_choice_responses = models.JSONField(null=True) # Multiple choice can have more than one response From 73e7a0c0679c03ca971937df550868c7b0d965cb Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Tue, 26 Mar 2024 21:38:27 +0000 Subject: [PATCH 15/25] Add question and constraint to themes --- ...r_theme_options_theme_question_and_more.py | 30 ++++++++++++++++++ consultation_analyser/consultations/models.py | 6 ++++ docs/erd.png | Bin 119606 -> 134078 bytes 3 files changed, 36 insertions(+) create mode 100644 consultation_analyser/consultations/migrations/0002_alter_theme_options_theme_question_and_more.py diff --git a/consultation_analyser/consultations/migrations/0002_alter_theme_options_theme_question_and_more.py b/consultation_analyser/consultations/migrations/0002_alter_theme_options_theme_question_and_more.py new file mode 100644 index 00000000..defd03b8 --- /dev/null +++ b/consultation_analyser/consultations/migrations/0002_alter_theme_options_theme_question_and_more.py @@ -0,0 +1,30 @@ +# Generated by Django 5.0.3 on 2024-03-26 21:27 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("consultations", "0001_initial"), + ] + + operations = [ + migrations.AlterModelOptions( + name="theme", + options={}, + ), + migrations.AddField( + model_name="theme", + name="question", + field=models.ForeignKey( + null=True, on_delete=django.db.models.deletion.CASCADE, to="consultations.question" + ), + ), + migrations.AddConstraint( + model_name="theme", + constraint=models.UniqueConstraint( + fields=("summary", "label", "keywords", "question"), name="unique_up_to_question" + ), + ), + ] diff --git a/consultation_analyser/consultations/models.py b/consultation_analyser/consultations/models.py index 507adb83..303a2d7d 100644 --- a/consultation_analyser/consultations/models.py +++ b/consultation_analyser/consultations/models.py @@ -62,6 +62,12 @@ class Theme(UUIDPrimaryKeyModel, TimeStampedModel): label = models.CharField(max_length=256, blank=True) summary = models.TextField(blank=True) keywords = models.JSONField(default=list) + question = models.ForeignKey(Question, on_delete=models.CASCADE, null=True) + + class Meta: + constraints = [ + models.UniqueConstraint(fields=["summary", "label", "keywords", "question"], name="unique_up_to_question"), + ] class Answer(UUIDPrimaryKeyModel, TimeStampedModel): diff --git a/docs/erd.png b/docs/erd.png index 51b60ed8a4c513556258c19d4975af09e9d50882..1703189a2bd40a700cd4cf8006f040317511af23 100644 GIT binary patch literal 134078 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

H)}UeMQ$xix6;PLk7=$Ah_nv9Z@AE0zkL05#YSV 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�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

sGdV>BKlKtY@<|cld^8dK1A^ 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 O-}y7L5{cs4xBm~_!jPf> literal 119606 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 Date: Wed, 27 Mar 2024 10:05:54 +0000 Subject: [PATCH 16/25] Tweak ML pipeline, add tests, and update type hints. --- .../consultations/ml_pipeline.py | 84 ++++++++++--------- consultation_analyser/consultations/models.py | 1 + tests/integration/test_ml_pipeline.py | 7 +- tests/unit/test_ml_pipeline_functions.py | 47 +++++++---- 4 files changed, 78 insertions(+), 61 deletions(-) diff --git a/consultation_analyser/consultations/ml_pipeline.py b/consultation_analyser/consultations/ml_pipeline.py index 1f407d43..1be479bd 100644 --- a/consultation_analyser/consultations/ml_pipeline.py +++ b/consultation_analyser/consultations/ml_pipeline.py @@ -1,5 +1,5 @@ from uuid import UUID -from typing import List, NamedTuple +from typing import List, NamedTuple, Dict, Union from umap.umap_ import UMAP from sentence_transformers import SentenceTransformer @@ -8,22 +8,31 @@ from bertopic.vectorizers import ClassTfidfTransformer from sklearn.feature_extraction.text import CountVectorizer import numpy as np -from django.db.models import QuerySet import pandas as pd from consultation_analyser.consultations import models +RANDOM_STATE = 12 # For reproducibility + + def get_embeddings_for_question( - free_text_responses: List, embedding_model_name: str = "thenlper/gte-small" -) -> np.ndarray: + answers_list: List[Dict[str, Union[UUID, str]]], embedding_model_name: str = "thenlper/gte-small" +) -> List[Dict[str, Union[UUID, str, np.ndarray]]]: + free_text_responses = [answer["free_text"] for answer in answers_list] embedding_model = SentenceTransformer(embedding_model_name) embeddings = embedding_model.encode(free_text_responses) - return embeddings + z = zip(answers_list, embeddings) + answers_list_with_embeddings = [dict(list(d.items()) + [("embedding", embedding)]) for d, embedding in z] + return answers_list_with_embeddings -def get_topic_model(free_text_responses_list: List, embeddings: np.ndarray) -> BERTopic: - umap_model = UMAP(n_neighbors=15, n_components=5, min_dist=0.0, metric="cosine", random_state=12) +def get_topic_model(answers_list_with_embeddings: List[Dict[str, Union[UUID, str, np.ndarray]]]) -> BERTopic: + free_text_responses_list = [answer["free_text"] for answer in answers_list_with_embeddings] + embeddings_list = [answer["embedding"] for answer in answers_list_with_embeddings] + embeddings = np.array(embeddings_list) + # Set random_state so that we can reproduce the results + umap_model = UMAP(n_neighbors=15, n_components=5, min_dist=0.0, metric="cosine", random_state=RANDOM_STATE) hdbscan_model = HDBSCAN( min_cluster_size=3, metric="euclidean", cluster_selection_method="eom", prediction_data=True ) @@ -36,10 +45,10 @@ def get_topic_model(free_text_responses_list: List, embeddings: np.ndarray) -> B return topic_model -def get_answers_and_topics(topic_model: BERTopic, answers_qs: QuerySet) -> pd.DataFrame: - # Answers/IDs need to be in the same order - answers_qs has been sorted - free_text_responses = list(answers_qs.values_list("free_text", flat=True)) - answers_id_list = answers_qs.values_list("id", flat=True) +def get_answers_and_topics(topic_model: BERTopic, answers_list: List[Dict[str, Union[UUID, str]]]) -> pd.DataFrame: + # Answers free text/IDs need to be in the same order + free_text_responses = [answer["free_text"] for answer in answers_list] + answers_id_list = [answer["id"] for answer in answers_list] # Assign topics to answers answers_df = topic_model.get_document_info(free_text_responses) answers_df["id"] = answers_id_list @@ -47,54 +56,49 @@ def get_answers_and_topics(topic_model: BERTopic, answers_qs: QuerySet) -> pd.Da return answers_df -def get_or_create_theme_for_question(question: models.Question, label: str, keywords: str) -> models.Theme: - # Themes should be unique up to question and label (and keywords) - # TODO - how can we enforce this? - # TODO - This isn't working +class AnswerRow(NamedTuple): + id: int + Name: str + Representation: List - theme, _ = models.Theme.objects.get_or_create(answer__question=question, keywords=keywords, label=label) - print(f"created: {_}") - return theme - -# TODO - sort out mypy error -def save_answer_theme(answer_row: NamedTuple) -> models.Answer: +def save_theme_to_answer(question: models.Question, answer_row: AnswerRow) -> models.Answer: # Row of answer_df with free_text answers and topic classification - print(f"answer_row.id: {answer_row.id}") - print(f"answer_row.Name: {answer_row.Name}") - answer = models.Answer.objects.get(id=answer_row.id) # type: ignore - theme = get_or_create_theme_for_question(answer.question, label=answer_row.Name, keywords=answer_row.Representation) # type: ignore + answer = models.Answer.objects.get(id=answer_row.id) + theme, _ = models.Theme.objects.get_or_create( + question=question, + label=answer_row.Name, + keywords=answer_row.Representation, + ) answer.theme = theme answer.save() return answer -def save_themes_to_answers(answers_topics_df: pd.DataFrame) -> None: +def save_themes_to_answers(question: models.Question, answers_topics_df: pd.DataFrame) -> None: + print(f"answers_topics_df: {answers_topics_df}") for row in answers_topics_df.itertuples(): - save_answer_theme(row) + save_theme_to_answer(question, row) -def save_themes_for_question(question_id: UUID) -> None: - # Need to fix order - answers_qs = models.Answer.objects.filter(question__id=question_id).order_by("created_at") - free_text_responses = list(answers_qs.values_list("free_text", flat=True)) - embeddings = get_embeddings_for_question(free_text_responses) - topic_model = get_topic_model(free_text_responses, embeddings) - answers_topics_df = get_answers_and_topics(topic_model, answers_qs) - # print("answers_topics_df") - # print(answers_topics_df) - # print("====") - save_themes_to_answers(answers_topics_df) +def save_themes_for_question(question: models.Question) -> None: + # Order must remain the same - so convert to list + answers_qs = models.Answer.objects.filter(question=question).order_by("created_at") + answers_list = list(answers_qs.values("id", "free_text")) + answers_list_with_embeddings = get_embeddings_for_question(answers_list) + topic_model = get_topic_model(answers_list_with_embeddings) + answers_topics_df = get_answers_and_topics(topic_model, answers_list_with_embeddings) + save_themes_to_answers(question, answers_topics_df) def save_themes_for_consultation(consultation_id: UUID) -> None: questions = models.Question.objects.filter(section__consultation__id=consultation_id, has_free_text=True) for question in questions: - save_themes_for_question(question.id) + save_themes_for_question(question) # TODO - what to do with topic -1 (outliers) -# https://github.com/MaartenGr/BERTopic +# We save them in the database, we may want to deal with them in the views # TODO - Generate theme summaries using LLM diff --git a/consultation_analyser/consultations/models.py b/consultation_analyser/consultations/models.py index 303a2d7d..7ff75cdb 100644 --- a/consultation_analyser/consultations/models.py +++ b/consultation_analyser/consultations/models.py @@ -62,6 +62,7 @@ class Theme(UUIDPrimaryKeyModel, TimeStampedModel): label = models.CharField(max_length=256, blank=True) summary = models.TextField(blank=True) keywords = models.JSONField(default=list) + # Duplicates info in Answer model, but needed for uniqueness constraint. question = models.ForeignKey(Question, on_delete=models.CASCADE, null=True) class Meta: diff --git a/tests/integration/test_ml_pipeline.py b/tests/integration/test_ml_pipeline.py index 73fcb09d..a1d8974f 100644 --- a/tests/integration/test_ml_pipeline.py +++ b/tests/integration/test_ml_pipeline.py @@ -16,7 +16,6 @@ def test_save_themes_for_consultation(): no_free_text_question = factories.QuestionFactory( section=section, has_free_text=False, slug="favorite-cadbury-chocolate-bar" ) - questions = [free_text_question1, free_text_question2, no_free_text_question] for r in range(10): response = factories.ConsultationResponseFactory(consultation=consultation) @@ -26,13 +25,13 @@ def test_save_themes_for_consultation(): # Check we've generated themes for questions with full text responses, and check fields populated for q in [free_text_question1, free_text_question2]: - themes_for_q = models.Theme.objects.filter(answer__question=q) + themes_for_q = models.Theme.objects.filter(question=q) assert themes_for_q.exists() example_theme = themes_for_q.first() assert example_theme.keywords assert example_theme.label - # Summary will be populated in a separate step + # Summary not populated here - done in a separate step # Check no themes for question with no free text - themes_for_q = models.Theme.objects.filter(answer__question=no_free_text_question) + themes_for_q = models.Theme.objects.filter(question=no_free_text_question) assert not themes_for_q.exists() diff --git a/tests/unit/test_ml_pipeline_functions.py b/tests/unit/test_ml_pipeline_functions.py index 69a367c6..d77efe9d 100644 --- a/tests/unit/test_ml_pipeline_functions.py +++ b/tests/unit/test_ml_pipeline_functions.py @@ -1,12 +1,24 @@ import pytest import pandas as pd +import numpy as np -from consultation_analyser.consultations.ml_pipeline import ( - get_or_create_theme_for_question, - save_themes_for_question, -) from consultation_analyser.consultations import models + from tests import factories +from consultation_analyser.consultations import ml_pipeline + + +def test_get_embeddings_for_question(): + answers_list = [ + {"id": 1, "free_text": "The creaminess of the chocolate, thanks to the higher milk content."}, + {"id": 2, "free_text": "The creaminess of the chocolate, thanks to the higher milk content."}, + {"id": 3, "free_text": "The balance of sweetness, not too overpowering but just right."}, + ] + output = ml_pipeline.get_embeddings_for_question(answers_list) + assert len(output) == 3 + assert "embedding" in output[0].keys() + assert np.array_equal(output[0]["embedding"], output[1]["embedding"]) + assert not np.array_equal(output[0]["embedding"], output[2]["embedding"]) @pytest.mark.django_db @@ -16,24 +28,26 @@ def test_get_or_create_theme_for_question(): keywords = ["key", "lock"] label = "0_key_lock" # Check theme created - theme = get_or_create_theme_for_question(question, keywords=keywords, label=label) + theme, created = models.Theme.objects.get_or_create(question=question, keywords=keywords, label=label) themes_qs = models.Theme.objects.filter(keywords=keywords, label=label) assert themes_qs.count() == 1 assert theme.keywords == keywords assert theme.label == label + assert created # Check no duplicate created - get_or_create_theme_for_question(question, keywords=keywords, label=label) + theme, created = models.Theme.objects.get_or_create(question=question, keywords=keywords, label=label) themes_qs = models.Theme.objects.filter(keywords=keywords, label=label) assert themes_qs.count() == 1 @pytest.mark.django_db -def test_save_themes_for_question(): +def test_save_themes_to_answers(): question = factories.QuestionFactory() - answer1 = factories.AnswerFactory(question=question) - answer2 = factories.AnswerFactory(question=question) - answer3 = factories.AnswerFactory(question=question) - df = pd.DataFrame( + answer1 = factories.AnswerFactory(question=question, theme=None) + answer2 = factories.AnswerFactory(question=question, theme=None) + answer3 = factories.AnswerFactory(question=question, theme=None) + assert not answer1.theme + answers_df = pd.DataFrame( { "id": [answer1.id, answer2.id, answer3.id], "Topic": [-1, 0, 0], @@ -41,9 +55,8 @@ def test_save_themes_for_question(): "Representation": [["x", "y"], ["m", "n"], ["m", "n"]], } ) - print(df) - save_themes_for_question(df) - assert answer1.theme.label == "-1_x_y" - assert answer2.theme.keywords == ["m", "n"] - themes_for_question = models.Theme.objects.filter(answer__question=question) - assert themes_for_question.count() == 2 + ml_pipeline.save_themes_to_answers(question, answers_df) + themes_qs = models.Theme.objects.filter(question=question) + assert themes_qs.count() == 2 + assert "-1_x_y" in themes_qs.values_list("label", flat=True) + assert themes_qs.get(label="0_m_n").keywords == ["m", "n"] From b3133d9f422e71ec0b26dca0689f74a7cae53bd4 Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Fri, 29 Mar 2024 12:43:46 +0000 Subject: [PATCH 17/25] Remove weird space. --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index dcf62647..0832b412 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,7 +47,6 @@ django-extensions = "^3.2.3" files = '**/*.py' exclude= ['^consultation_analyser/consultations/migrations/'] - [tool.poetry.group.test.dependencies] pytest-django = "^4.8.0" django-webtest = "^1.9.11" From 67c800ff3978357ee490930aa0f07c8d6c1d5ffd Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Fri, 29 Mar 2024 19:54:23 +0000 Subject: [PATCH 18/25] Change dummy data back. --- .../consultations/dummy_data.py | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/consultation_analyser/consultations/dummy_data.py b/consultation_analyser/consultations/dummy_data.py index 7735ede7..911aeffb 100644 --- a/consultation_analyser/consultations/dummy_data.py +++ b/consultation_analyser/consultations/dummy_data.py @@ -22,17 +22,12 @@ def __init__(self, responses=10, **options): questions = [QuestionFactory(question=q, section=section) for q in FakeConsultationData().all_questions()] for r in range(responses): response = ConsultationResponseFactory(consultation=consultation) - - _answers = [AnswerFactory(question=q, consultation_response=response, theme=None) for q in questions] - - # TODO - change back or create an option - - # _answers = [AnswerFactory(question=q, consultation_response=response) for q in questions] - - # # Set themes per question, multiple answers with the same theme - # for q in questions: - # themes = [ThemeFactory() for _ in range(2, 6)] - # for a in _answers: - # random_theme = random.choice(themes) - # a.theme = random_theme - # a.save() + _answers = [AnswerFactory(question=q, consultation_response=response) for q in questions] + + # Set themes per question, multiple answers with the same theme + for q in questions: + themes = [ThemeFactory() for _ in range(2, 6)] + for a in _answers: + random_theme = random.choice(themes) + a.theme = random_theme + a.save() From 770ea1ac021d7141d9e0a9899c142598f0a5d805 Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Tue, 2 Apr 2024 19:16:20 +0100 Subject: [PATCH 19/25] Update lockfile. --- poetry.lock | 397 +++++++++++++++++++++++++++------------------------- 1 file changed, 203 insertions(+), 194 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8df539f0..21471d4b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -121,6 +121,7 @@ files = [ ] [[package]] + name = "anyio" version = "4.3.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" @@ -343,6 +344,17 @@ urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version > [package.extras] crt = ["awscrt (==0.19.19)"] +[[package]] +name = "certifi" +version = "2024.2.2" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, +] + [[package]] name = "cfgv" version = "3.4.0" @@ -1039,13 +1051,13 @@ scipy = ">=1.0" [[package]] name = "huggingface-hub" -version = "0.21.4" +version = "0.22.2" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" optional = false python-versions = ">=3.8.0" files = [ - {file = "huggingface_hub-0.21.4-py3-none-any.whl", hash = "sha256:df37c2c37fc6c82163cdd8a67ede261687d80d1e262526d6c0ce73b6b3630a7b"}, - {file = "huggingface_hub-0.21.4.tar.gz", hash = "sha256:e1f4968c93726565a80edf6dc309763c7b546d0cfe79aa221206034d50155531"}, + {file = "huggingface_hub-0.22.2-py3-none-any.whl", hash = "sha256:3429e25f38ccb834d310804a3b711e7e4953db5a9e420cc147a5e194ca90fd17"}, + {file = "huggingface_hub-0.22.2.tar.gz", hash = "sha256:32e9a9a6843c92f253ff9ca16b9985def4d80a93fb357af5353f770ef74a81be"}, ] [package.dependencies] @@ -1058,15 +1070,16 @@ tqdm = ">=4.42.1" typing-extensions = ">=3.7.4.3" [package.extras] -all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "mypy (==1.5.1)", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.1.3)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] +all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "minijinja (>=1.0)", "mypy (==1.5.1)", "numpy", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.3.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] cli = ["InquirerPy (==0.3.4)"] -dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "mypy (==1.5.1)", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.1.3)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] +dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "minijinja (>=1.0)", "mypy (==1.5.1)", "numpy", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.3.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"] hf-transfer = ["hf-transfer (>=0.1.4)"] -inference = ["aiohttp", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)"] -quality = ["mypy (==1.5.1)", "ruff (>=0.1.3)"] +inference = ["aiohttp", "minijinja (>=1.0)"] +quality = ["mypy (==1.5.1)", "ruff (>=0.3.0)"] tensorflow = ["graphviz", "pydot", "tensorflow"] -testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "numpy", "pydantic (>1.1,<2.0)", "pydantic (>1.1,<3.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"] +tensorflow-testing = ["keras (<3.0)", "tensorflow"] +testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "gradio", "jedi", "minijinja (>=1.0)", "numpy", "pytest", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"] torch = ["safetensors", "torch"] typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"] @@ -1201,21 +1214,21 @@ files = [ [[package]] name = "langchain" -version = "0.1.13" +version = "0.1.14" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain-0.1.13-py3-none-any.whl", hash = "sha256:c87657021b777d6b07e55be379a28660a1cd148c31593569869dd6b0b4cab945"}, - {file = "langchain-0.1.13.tar.gz", hash = "sha256:db330aa79c33501cb1ed97ff465f7645813eaa6cfd742c61e19c2d48e4aaba18"}, + {file = "langchain-0.1.14-py3-none-any.whl", hash = "sha256:94f9b5df2421faaf762d4f43b9d65c270c2f701934580d281e4c6226deef7234"}, + {file = "langchain-0.1.14.tar.gz", hash = "sha256:124c6244cf3957616b98f2df07dc2992fc40dff6ed1a62d8ee8a40f1e0260a40"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" dataclasses-json = ">=0.5.7,<0.7" jsonpatch = ">=1.33,<2.0" -langchain-community = ">=0.0.29,<0.1" -langchain-core = ">=0.1.33,<0.2.0" +langchain-community = ">=0.0.30,<0.1" +langchain-core = ">=0.1.37,<0.2.0" langchain-text-splitters = ">=0.0.1,<0.1" langsmith = ">=0.1.17,<0.2.0" numpy = ">=1,<2" @@ -1229,31 +1242,31 @@ tenacity = ">=8.1.0,<9.0.0" azure = ["azure-ai-formrecognizer (>=3.2.1,<4.0.0)", "azure-ai-textanalytics (>=5.3.0,<6.0.0)", "azure-cognitiveservices-speech (>=1.28.0,<2.0.0)", "azure-core (>=1.26.4,<2.0.0)", "azure-cosmos (>=4.4.0b1,<5.0.0)", "azure-identity (>=1.12.0,<2.0.0)", "azure-search-documents (==11.4.0b8)", "openai (<2)"] clarifai = ["clarifai (>=9.1.0)"] cli = ["typer (>=0.9.0,<0.10.0)"] -cohere = ["cohere (>=4,<5)"] +cohere = ["cohere (>=4,<6)"] docarray = ["docarray[hnswlib] (>=0.32.0,<0.33.0)"] embeddings = ["sentence-transformers (>=2,<3)"] -extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<5)", "couchbase (>=4.1.9,<5.0.0)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "langchain-openai (>=0.0.2,<0.1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] +extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<6)", "couchbase (>=4.1.9,<5.0.0)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "langchain-openai (>=0.0.2,<0.1)", "lxml (>=4.9.3,<6.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] javascript = ["esprima (>=4.0.1,<5.0.0)"] -llms = ["clarifai (>=9.1.0)", "cohere (>=4,<5)", "huggingface_hub (>=0,<1)", "manifest-ml (>=0.0.1,<0.0.2)", "nlpcloud (>=1,<2)", "openai (<2)", "openlm (>=0.0.5,<0.0.6)", "torch (>=1,<3)", "transformers (>=4,<5)"] +llms = ["clarifai (>=9.1.0)", "cohere (>=4,<6)", "huggingface_hub (>=0,<1)", "manifest-ml (>=0.0.1,<0.0.2)", "nlpcloud (>=1,<2)", "openai (<2)", "openlm (>=0.0.5,<0.0.6)", "torch (>=1,<3)", "transformers (>=4,<5)"] openai = ["openai (<2)", "tiktoken (>=0.3.2,<0.6.0)"] qdrant = ["qdrant-client (>=1.3.1,<2.0.0)"] text-helpers = ["chardet (>=5.1.0,<6.0.0)"] [[package]] name = "langchain-community" -version = "0.0.29" +version = "0.0.31" description = "Community contributed LangChain integrations." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_community-0.0.29-py3-none-any.whl", hash = "sha256:1652dddf257089b7b5066974b636262b4a5b680339f4539be133b14ae351e67d"}, - {file = "langchain_community-0.0.29.tar.gz", hash = "sha256:d88107fafa9fe2c5733da9630c68d9ee51cd33b1c88a4950e7a2d9a38f7e7aa3"}, + {file = "langchain_community-0.0.31-py3-none-any.whl", hash = "sha256:905c01b978a1cef7fdcddd2d9241dedc9987db6f23ba1b58d974e38b1cdf2775"}, + {file = "langchain_community-0.0.31.tar.gz", hash = "sha256:9a970bc2bb59bb4c204b696d8c62c2534f6ddb31005005cc1b7d7f934e58a5fc"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" dataclasses-json = ">=0.5.7,<0.7" -langchain-core = ">=0.1.33,<0.2.0" +langchain-core = ">=0.1.37,<0.2.0" langsmith = ">=0.1.0,<0.2.0" numpy = ">=1,<2" PyYAML = ">=5.3" @@ -1263,21 +1276,20 @@ tenacity = ">=8.1.0,<9.0.0" [package.extras] cli = ["typer (>=0.9.0,<0.10.0)"] -extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "azure-ai-documentintelligence (>=1.0.0b1,<2.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cloudpickle (>=2.0.0)", "cohere (>=4,<5)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "elasticsearch (>=8.12.0,<9.0.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "friendli-client (>=1.2.4,<2.0.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "gradientai (>=1.4.0,<2.0.0)", "hdbcli (>=2.19.21,<3.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "httpx (>=0.24.1,<0.25.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "nvidia-riva-client (>=2.14.0,<3.0.0)", "oci (>=2.119.1,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "oracle-ads (>=2.9.1,<3.0.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "tidb-vector (>=0.0.3,<1.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "tree-sitter (>=0.20.2,<0.21.0)", "tree-sitter-languages (>=1.8.0,<2.0.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)", "zhipuai (>=1.0.7,<2.0.0)"] +extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "azure-ai-documentintelligence (>=1.0.0b1,<2.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cloudpickle (>=2.0.0)", "cohere (>=4,<5)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "elasticsearch (>=8.12.0,<9.0.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "friendli-client (>=1.2.4,<2.0.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "gradientai (>=1.4.0,<2.0.0)", "hdbcli (>=2.19.21,<3.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "httpx (>=0.24.1,<0.25.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.3,<6.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "nvidia-riva-client (>=2.14.0,<3.0.0)", "oci (>=2.119.1,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "oracle-ads (>=2.9.1,<3.0.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "premai (>=0.3.25,<0.4.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "tidb-vector (>=0.0.3,<1.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "tree-sitter (>=0.20.2,<0.21.0)", "tree-sitter-languages (>=1.8.0,<2.0.0)", "upstash-redis (>=0.15.0,<0.16.0)", "vdms (>=0.0.20,<0.0.21)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)", "zhipuai (>=1.0.7,<2.0.0)"] [[package]] name = "langchain-core" -version = "0.1.33" +version = "0.1.38" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_core-0.1.33-py3-none-any.whl", hash = "sha256:cee7fbab114c74b7279a92c8a376b40344b0fa3d0f0af3143a858e3b7485bf13"}, - {file = "langchain_core-0.1.33.tar.gz", hash = "sha256:545eff3de83cc58231bd2b0c6d672323fc2077b94d326ba1a3219118af1d1a66"}, + {file = "langchain_core-0.1.38-py3-none-any.whl", hash = "sha256:d881b2754254cb4bdb0d5bb56e5c138d032b6e75e5cb21f151b01224b322e02b"}, + {file = "langchain_core-0.1.38.tar.gz", hash = "sha256:ee8da6d061c06cce7dc22fec224b6ecbc3a8de106d6dd9f409c7fe448ea41861"}, ] [package.dependencies] -anyio = ">=3,<5" jsonpatch = ">=1.33,<2.0" langsmith = ">=0.1.0,<0.2.0" packaging = ">=23.2,<24.0" @@ -1308,13 +1320,13 @@ extended-testing = ["lxml (>=5.1.0,<6.0.0)"] [[package]] name = "langsmith" -version = "0.1.31" +version = "0.1.38" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.31-py3-none-any.whl", hash = "sha256:5211a9dc00831db307eb843485a97096484b697b5d2cd1efaac34228e97ca087"}, - {file = "langsmith-0.1.31.tar.gz", hash = "sha256:efd54ccd44be7fda911bfdc0ead340473df2fdd07345c7252901834d0c4aa37e"}, + {file = "langsmith-0.1.38-py3-none-any.whl", hash = "sha256:f36479f82cf537cf40d129ac2e485e72a3981360c7b6cf2549dad77d98eafd8f"}, + {file = "langsmith-0.1.38.tar.gz", hash = "sha256:2c1f98ac0a8c02e43b625650a6e13c65b09523551bfc21a59d20963f46f7d265"}, ] [package.dependencies] @@ -1836,61 +1848,62 @@ files = [ [[package]] name = "orjson" -version = "3.9.15" +version = "3.10.0" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.9.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d61f7ce4727a9fa7680cd6f3986b0e2c732639f46a5e0156e550e35258aa313a"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4feeb41882e8aa17634b589533baafdceb387e01e117b1ec65534ec724023d04"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fbbeb3c9b2edb5fd044b2a070f127a0ac456ffd079cb82746fc84af01ef021a4"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b66bcc5670e8a6b78f0313bcb74774c8291f6f8aeef10fe70e910b8040f3ab75"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2973474811db7b35c30248d1129c64fd2bdf40d57d84beed2a9a379a6f57d0ab"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fe41b6f72f52d3da4db524c8653e46243c8c92df826ab5ffaece2dba9cccd58"}, - {file = "orjson-3.9.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4228aace81781cc9d05a3ec3a6d2673a1ad0d8725b4e915f1089803e9efd2b99"}, - {file = "orjson-3.9.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6f7b65bfaf69493c73423ce9db66cfe9138b2f9ef62897486417a8fcb0a92bfe"}, - {file = "orjson-3.9.15-cp310-none-win32.whl", hash = "sha256:2d99e3c4c13a7b0fb3792cc04c2829c9db07838fb6973e578b85c1745e7d0ce7"}, - {file = "orjson-3.9.15-cp310-none-win_amd64.whl", hash = "sha256:b725da33e6e58e4a5d27958568484aa766e825e93aa20c26c91168be58e08cbb"}, - {file = "orjson-3.9.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c8e8fe01e435005d4421f183038fc70ca85d2c1e490f51fb972db92af6e047c2"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87f1097acb569dde17f246faa268759a71a2cb8c96dd392cd25c668b104cad2f"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff0f9913d82e1d1fadbd976424c316fbc4d9c525c81d047bbdd16bd27dd98cfc"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8055ec598605b0077e29652ccfe9372247474375e0e3f5775c91d9434e12d6b1"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6768a327ea1ba44c9114dba5fdda4a214bdb70129065cd0807eb5f010bfcbb5"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12365576039b1a5a47df01aadb353b68223da413e2e7f98c02403061aad34bde"}, - {file = "orjson-3.9.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:71c6b009d431b3839d7c14c3af86788b3cfac41e969e3e1c22f8a6ea13139404"}, - {file = "orjson-3.9.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e18668f1bd39e69b7fed19fa7cd1cd110a121ec25439328b5c89934e6d30d357"}, - {file = "orjson-3.9.15-cp311-none-win32.whl", hash = "sha256:62482873e0289cf7313461009bf62ac8b2e54bc6f00c6fabcde785709231a5d7"}, - {file = "orjson-3.9.15-cp311-none-win_amd64.whl", hash = "sha256:b3d336ed75d17c7b1af233a6561cf421dee41d9204aa3cfcc6c9c65cd5bb69a8"}, - {file = "orjson-3.9.15-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:82425dd5c7bd3adfe4e94c78e27e2fa02971750c2b7ffba648b0f5d5cc016a73"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c51378d4a8255b2e7c1e5cc430644f0939539deddfa77f6fac7b56a9784160a"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6ae4e06be04dc00618247c4ae3f7c3e561d5bc19ab6941427f6d3722a0875ef7"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcef128f970bb63ecf9a65f7beafd9b55e3aaf0efc271a4154050fc15cdb386e"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b72758f3ffc36ca566ba98a8e7f4f373b6c17c646ff8ad9b21ad10c29186f00d"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c57bc7b946cf2efa67ac55766e41764b66d40cbd9489041e637c1304400494"}, - {file = "orjson-3.9.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:946c3a1ef25338e78107fba746f299f926db408d34553b4754e90a7de1d44068"}, - {file = "orjson-3.9.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2f256d03957075fcb5923410058982aea85455d035607486ccb847f095442bda"}, - {file = "orjson-3.9.15-cp312-none-win_amd64.whl", hash = "sha256:5bb399e1b49db120653a31463b4a7b27cf2fbfe60469546baf681d1b39f4edf2"}, - {file = "orjson-3.9.15-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b17f0f14a9c0ba55ff6279a922d1932e24b13fc218a3e968ecdbf791b3682b25"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f6cbd8e6e446fb7e4ed5bac4661a29e43f38aeecbf60c4b900b825a353276a1"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:76bc6356d07c1d9f4b782813094d0caf1703b729d876ab6a676f3aaa9a47e37c"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fdfa97090e2d6f73dced247a2f2d8004ac6449df6568f30e7fa1a045767c69a6"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7413070a3e927e4207d00bd65f42d1b780fb0d32d7b1d951f6dc6ade318e1b5a"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9cf1596680ac1f01839dba32d496136bdd5d8ffb858c280fa82bbfeb173bdd40"}, - {file = "orjson-3.9.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:809d653c155e2cc4fd39ad69c08fdff7f4016c355ae4b88905219d3579e31eb7"}, - {file = "orjson-3.9.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:920fa5a0c5175ab14b9c78f6f820b75804fb4984423ee4c4f1e6d748f8b22bc1"}, - {file = "orjson-3.9.15-cp38-none-win32.whl", hash = "sha256:2b5c0f532905e60cf22a511120e3719b85d9c25d0e1c2a8abb20c4dede3b05a5"}, - {file = "orjson-3.9.15-cp38-none-win_amd64.whl", hash = "sha256:67384f588f7f8daf040114337d34a5188346e3fae6c38b6a19a2fe8c663a2f9b"}, - {file = "orjson-3.9.15-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6fc2fe4647927070df3d93f561d7e588a38865ea0040027662e3e541d592811e"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34cbcd216e7af5270f2ffa63a963346845eb71e174ea530867b7443892d77180"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f541587f5c558abd93cb0de491ce99a9ef8d1ae29dd6ab4dbb5a13281ae04cbd"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92255879280ef9c3c0bcb327c5a1b8ed694c290d61a6a532458264f887f052cb"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:05a1f57fb601c426635fcae9ddbe90dfc1ed42245eb4c75e4960440cac667262"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ede0bde16cc6e9b96633df1631fbcd66491d1063667f260a4f2386a098393790"}, - {file = "orjson-3.9.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e88b97ef13910e5f87bcbc4dd7979a7de9ba8702b54d3204ac587e83639c0c2b"}, - {file = "orjson-3.9.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57d5d8cf9c27f7ef6bc56a5925c7fbc76b61288ab674eb352c26ac780caa5b10"}, - {file = "orjson-3.9.15-cp39-none-win32.whl", hash = "sha256:001f4eb0ecd8e9ebd295722d0cbedf0748680fb9998d3993abaed2f40587257a"}, - {file = "orjson-3.9.15-cp39-none-win_amd64.whl", hash = "sha256:ea0b183a5fe6b2b45f3b854b0d19c4e932d6f5934ae1f723b07cf9560edd4ec7"}, - {file = "orjson-3.9.15.tar.gz", hash = "sha256:95cae920959d772f30ab36d3b25f83bb0f3be671e986c72ce22f8fa700dae061"}, + {file = "orjson-3.10.0-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:47af5d4b850a2d1328660661f0881b67fdbe712aea905dadd413bdea6f792c33"}, + {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c90681333619d78360d13840c7235fdaf01b2b129cb3a4f1647783b1971542b6"}, + {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:400c5b7c4222cb27b5059adf1fb12302eebcabf1978f33d0824aa5277ca899bd"}, + {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5dcb32e949eae80fb335e63b90e5808b4b0f64e31476b3777707416b41682db5"}, + {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7d507c7493252c0a0264b5cc7e20fa2f8622b8a83b04d819b5ce32c97cf57b"}, + {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e286a51def6626f1e0cc134ba2067dcf14f7f4b9550f6dd4535fd9d79000040b"}, + {file = "orjson-3.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8acd4b82a5f3a3ec8b1dc83452941d22b4711964c34727eb1e65449eead353ca"}, + {file = "orjson-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:30707e646080dd3c791f22ce7e4a2fc2438765408547c10510f1f690bd336217"}, + {file = "orjson-3.10.0-cp310-none-win32.whl", hash = "sha256:115498c4ad34188dcb73464e8dc80e490a3e5e88a925907b6fedcf20e545001a"}, + {file = "orjson-3.10.0-cp310-none-win_amd64.whl", hash = "sha256:6735dd4a5a7b6df00a87d1d7a02b84b54d215fb7adac50dd24da5997ffb4798d"}, + {file = "orjson-3.10.0-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9587053e0cefc284e4d1cd113c34468b7d3f17666d22b185ea654f0775316a26"}, + {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bef1050b1bdc9ea6c0d08468e3e61c9386723633b397e50b82fda37b3563d72"}, + {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d16c6963ddf3b28c0d461641517cd312ad6b3cf303d8b87d5ef3fa59d6844337"}, + {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4251964db47ef090c462a2d909f16c7c7d5fe68e341dabce6702879ec26d1134"}, + {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:73bbbdc43d520204d9ef0817ac03fa49c103c7f9ea94f410d2950755be2c349c"}, + {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:414e5293b82373606acf0d66313aecb52d9c8c2404b1900683eb32c3d042dbd7"}, + {file = "orjson-3.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:feaed5bb09877dc27ed0d37f037ddef6cb76d19aa34b108db270d27d3d2ef747"}, + {file = "orjson-3.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5127478260db640323cea131ee88541cb1a9fbce051f0b22fa2f0892f44da302"}, + {file = "orjson-3.10.0-cp311-none-win32.whl", hash = "sha256:b98345529bafe3c06c09996b303fc0a21961820d634409b8639bc16bd4f21b63"}, + {file = "orjson-3.10.0-cp311-none-win_amd64.whl", hash = "sha256:658ca5cee3379dd3d37dbacd43d42c1b4feee99a29d847ef27a1cb18abdfb23f"}, + {file = "orjson-3.10.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4329c1d24fd130ee377e32a72dc54a3c251e6706fccd9a2ecb91b3606fddd998"}, + {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef0f19fdfb6553342b1882f438afd53c7cb7aea57894c4490c43e4431739c700"}, + {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c4f60db24161534764277f798ef53b9d3063092f6d23f8f962b4a97edfa997a0"}, + {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1de3fd5c7b208d836f8ecb4526995f0d5877153a4f6f12f3e9bf11e49357de98"}, + {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f93e33f67729d460a177ba285002035d3f11425ed3cebac5f6ded4ef36b28344"}, + {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:237ba922aef472761acd697eef77fef4831ab769a42e83c04ac91e9f9e08fa0e"}, + {file = "orjson-3.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98c1bfc6a9bec52bc8f0ab9b86cc0874b0299fccef3562b793c1576cf3abb570"}, + {file = "orjson-3.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:30d795a24be16c03dca0c35ca8f9c8eaaa51e3342f2c162d327bd0225118794a"}, + {file = "orjson-3.10.0-cp312-none-win32.whl", hash = "sha256:6a3f53dc650bc860eb26ec293dfb489b2f6ae1cbfc409a127b01229980e372f7"}, + {file = "orjson-3.10.0-cp312-none-win_amd64.whl", hash = "sha256:983db1f87c371dc6ffc52931eb75f9fe17dc621273e43ce67bee407d3e5476e9"}, + {file = "orjson-3.10.0-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9a667769a96a72ca67237224a36faf57db0c82ab07d09c3aafc6f956196cfa1b"}, + {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ade1e21dfde1d37feee8cf6464c20a2f41fa46c8bcd5251e761903e46102dc6b"}, + {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:23c12bb4ced1c3308eff7ba5c63ef8f0edb3e4c43c026440247dd6c1c61cea4b"}, + {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2d014cf8d4dc9f03fc9f870de191a49a03b1bcda51f2a957943fb9fafe55aac"}, + {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eadecaa16d9783affca33597781328e4981b048615c2ddc31c47a51b833d6319"}, + {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd583341218826f48bd7c6ebf3310b4126216920853cbc471e8dbeaf07b0b80e"}, + {file = "orjson-3.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:90bfc137c75c31d32308fd61951d424424426ddc39a40e367704661a9ee97095"}, + {file = "orjson-3.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:13b5d3c795b09a466ec9fcf0bd3ad7b85467d91a60113885df7b8d639a9d374b"}, + {file = "orjson-3.10.0-cp38-none-win32.whl", hash = "sha256:5d42768db6f2ce0162544845facb7c081e9364a5eb6d2ef06cd17f6050b048d8"}, + {file = "orjson-3.10.0-cp38-none-win_amd64.whl", hash = "sha256:33e6655a2542195d6fd9f850b428926559dee382f7a862dae92ca97fea03a5ad"}, + {file = "orjson-3.10.0-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4050920e831a49d8782a1720d3ca2f1c49b150953667eed6e5d63a62e80f46a2"}, + {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1897aa25a944cec774ce4a0e1c8e98fb50523e97366c637b7d0cddabc42e6643"}, + {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9bf565a69e0082ea348c5657401acec3cbbb31564d89afebaee884614fba36b4"}, + {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6ebc17cfbbf741f5c1a888d1854354536f63d84bee537c9a7c0335791bb9009"}, + {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2817877d0b69f78f146ab305c5975d0618df41acf8811249ee64231f5953fee"}, + {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57d017863ec8aa4589be30a328dacd13c2dc49de1c170bc8d8c8a98ece0f2925"}, + {file = "orjson-3.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:22c2f7e377ac757bd3476ecb7480c8ed79d98ef89648f0176deb1da5cd014eb7"}, + {file = "orjson-3.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e62ba42bfe64c60c1bc84799944f80704e996592c6b9e14789c8e2a303279912"}, + {file = "orjson-3.10.0-cp39-none-win32.whl", hash = "sha256:60c0b1bdbccd959ebd1575bd0147bd5e10fc76f26216188be4a36b691c937077"}, + {file = "orjson-3.10.0-cp39-none-win_amd64.whl", hash = "sha256:175a41500ebb2fdf320bf78e8b9a75a1279525b62ba400b2b2444e274c2c8bee"}, + {file = "orjson-3.10.0.tar.gz", hash = "sha256:ba4d8cac5f2e2cff36bea6b6481cdb92b38c202bcec603d6f5ff91960595a1ed"}, ] [[package]] @@ -1985,79 +1998,80 @@ xml = ["lxml (>=4.9.2)"] [[package]] name = "pillow" -version = "10.2.0" +version = "10.3.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, - {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, - {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, - {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, - {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, - {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, - {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, - {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, - {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, - {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, - {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, - {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, - {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, - {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, - {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, - {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, - {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, - {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, - {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, - {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, - {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, - {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, - {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, - {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, - {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, - {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, - {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, - {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, - {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, - {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, - {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, - {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, - {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, - {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, + {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, + {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, + {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, + {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, + {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, + {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, + {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, + {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, + {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, + {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, + {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, + {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, + {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, + {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, + {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, ] [package.extras] @@ -2286,13 +2300,13 @@ tests = ["black", "chardet", "tox"] [[package]] name = "pynndescent" -version = "0.5.11" +version = "0.5.12" description = "Nearest Neighbor Descent" optional = false python-versions = "*" files = [ - {file = "pynndescent-0.5.11-py3-none-any.whl", hash = "sha256:a628f4fc8a67757c8fa15613449ac513fd056258a55b4084e47c06640ec90a8d"}, - {file = "pynndescent-0.5.11.tar.gz", hash = "sha256:6f44ced9d5a9da2c87d9b2fff30bb5308540c0657605e4d5cde7ed3275bbad50"}, + {file = "pynndescent-0.5.12-py3-none-any.whl", hash = "sha256:9023dc5fea520a4e84d0633ae735db97d2509da927bfa86c897e61f3315473c7"}, + {file = "pynndescent-0.5.12.tar.gz", hash = "sha256:0736291fcbbedfd5e0a3a280f71a63f8eb2f8bd9670d4c0b51ac1b4d081adf70"}, ] [package.dependencies] @@ -2667,6 +2681,8 @@ botocore = ">=1.33.2,<2.0a.0" [package.extras] crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"] + +[[package]] name = "safetensors" version = "0.4.2" description = "" @@ -2884,13 +2900,13 @@ test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", [[package]] name = "sentence-transformers" -version = "2.6.0" +version = "2.6.1" description = "Multilingual text embeddings" optional = false python-versions = ">=3.8.0" files = [ - {file = "sentence-transformers-2.6.0.tar.gz", hash = "sha256:cf519d311ddcc8ff84d78d18fae051985bef348716354e069e3d6d670e4db604"}, - {file = "sentence_transformers-2.6.0-py3-none-any.whl", hash = "sha256:8807db6db0cf0a92f02be799b7c8260029ff91315d18f7b4b51c30b10d6b4fdb"}, + {file = "sentence-transformers-2.6.1.tar.gz", hash = "sha256:633ad6b70e390ea335de8689652a5d6c21a323b79ed19519c2f392451088487f"}, + {file = "sentence_transformers-2.6.1-py3-none-any.whl", hash = "sha256:a887e17696b513f99a709ce1f37fd547f53857aebe863785ede546c303b09ea0"}, ] [package.dependencies] @@ -2930,17 +2946,6 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -[[package]] -name = "sniffio" -version = "1.3.1" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, - {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, -] - [[package]] name = "soupsieve" version = "2.5" @@ -3223,36 +3228,36 @@ testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests"] [[package]] name = "torch" -version = "2.2.1" +version = "2.2.2" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" optional = false python-versions = ">=3.8.0" files = [ - {file = "torch-2.2.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:8d3bad336dd2c93c6bcb3268e8e9876185bda50ebde325ef211fb565c7d15273"}, - {file = "torch-2.2.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:5297f13370fdaca05959134b26a06a7f232ae254bf2e11a50eddec62525c9006"}, - {file = "torch-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:5f5dee8433798888ca1415055f5e3faf28a3bad660e4c29e1014acd3275ab11a"}, - {file = "torch-2.2.1-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:b6d78338acabf1fb2e88bf4559d837d30230cf9c3e4337261f4d83200df1fcbe"}, - {file = "torch-2.2.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:6ab3ea2e29d1aac962e905142bbe50943758f55292f1b4fdfb6f4792aae3323e"}, - {file = "torch-2.2.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:d86664ec85902967d902e78272e97d1aff1d331f7619d398d3ffab1c9b8e9157"}, - {file = "torch-2.2.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d6227060f268894f92c61af0a44c0d8212e19cb98d05c20141c73312d923bc0a"}, - {file = "torch-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:77e990af75fb1675490deb374d36e726f84732cd5677d16f19124934b2409ce9"}, - {file = "torch-2.2.1-cp311-none-macosx_10_9_x86_64.whl", hash = "sha256:46085e328d9b738c261f470231e987930f4cc9472d9ffb7087c7a1343826ac51"}, - {file = "torch-2.2.1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:2d9e7e5ecbb002257cf98fae13003abbd620196c35f85c9e34c2adfb961321ec"}, - {file = "torch-2.2.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:ada53aebede1c89570e56861b08d12ba4518a1f8b82d467c32665ec4d1f4b3c8"}, - {file = "torch-2.2.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:be21d4c41ecebed9e99430dac87de1439a8c7882faf23bba7fea3fea7b906ac1"}, - {file = "torch-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:79848f46196750367dcdf1d2132b722180b9d889571e14d579ae82d2f50596c5"}, - {file = "torch-2.2.1-cp312-none-macosx_10_9_x86_64.whl", hash = "sha256:7ee804847be6be0032fbd2d1e6742fea2814c92bebccb177f0d3b8e92b2d2b18"}, - {file = "torch-2.2.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:84b2fb322ab091039fdfe74e17442ff046b258eb5e513a28093152c5b07325a7"}, - {file = "torch-2.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5c0c83aa7d94569997f1f474595e808072d80b04d34912ce6f1a0e1c24b0c12a"}, - {file = "torch-2.2.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:91a1b598055ba06b2c386415d2e7f6ac818545e94c5def597a74754940188513"}, - {file = "torch-2.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f93ddf3001ecec16568390b507652644a3a103baa72de3ad3b9c530e3277098"}, - {file = "torch-2.2.1-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:0e8bdd4c77ac2584f33ee14c6cd3b12767b4da508ec4eed109520be7212d1069"}, - {file = "torch-2.2.1-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:6a21bcd7076677c97ca7db7506d683e4e9db137e8420eb4a68fb67c3668232a7"}, - {file = "torch-2.2.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f1b90ac61f862634039265cd0f746cc9879feee03ff962c803486301b778714b"}, - {file = "torch-2.2.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:ed9e29eb94cd493b36bca9cb0b1fd7f06a0688215ad1e4b3ab4931726e0ec092"}, - {file = "torch-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:c47bc25744c743f3835831a20efdcfd60aeb7c3f9804a213f61e45803d16c2a5"}, - {file = "torch-2.2.1-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:0952549bcb43448c8d860d5e3e947dd18cbab491b14638e21750cb3090d5ad3e"}, - {file = "torch-2.2.1-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:26bd2272ec46fc62dcf7d24b2fb284d44fcb7be9d529ebf336b9860350d674ed"}, + {file = "torch-2.2.2-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:bc889d311a855dd2dfd164daf8cc903a6b7273a747189cebafdd89106e4ad585"}, + {file = "torch-2.2.2-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:15dffa4cc3261fa73d02f0ed25f5fa49ecc9e12bf1ae0a4c1e7a88bbfaad9030"}, + {file = "torch-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:11e8fe261233aeabd67696d6b993eeb0896faa175c6b41b9a6c9f0334bdad1c5"}, + {file = "torch-2.2.2-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:b2e2200b245bd9f263a0d41b6a2dab69c4aca635a01b30cca78064b0ef5b109e"}, + {file = "torch-2.2.2-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:877b3e6593b5e00b35bbe111b7057464e76a7dd186a287280d941b564b0563c2"}, + {file = "torch-2.2.2-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:ad4c03b786e074f46606f4151c0a1e3740268bcf29fbd2fdf6666d66341c1dcb"}, + {file = "torch-2.2.2-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:32827fa1fbe5da8851686256b4cd94cc7b11be962862c2293811c94eea9457bf"}, + {file = "torch-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:f9ef0a648310435511e76905f9b89612e45ef2c8b023bee294f5e6f7e73a3e7c"}, + {file = "torch-2.2.2-cp311-none-macosx_10_9_x86_64.whl", hash = "sha256:95b9b44f3bcebd8b6cd8d37ec802048c872d9c567ba52c894bba90863a439059"}, + {file = "torch-2.2.2-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:49aa4126ede714c5aeef7ae92969b4b0bbe67f19665106463c39f22e0a1860d1"}, + {file = "torch-2.2.2-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:cf12cdb66c9c940227ad647bc9cf5dba7e8640772ae10dfe7569a0c1e2a28aca"}, + {file = "torch-2.2.2-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:89ddac2a8c1fb6569b90890955de0c34e1724f87431cacff4c1979b5f769203c"}, + {file = "torch-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:451331406b760f4b1ab298ddd536486ab3cfb1312614cfe0532133535be60bea"}, + {file = "torch-2.2.2-cp312-none-macosx_10_9_x86_64.whl", hash = "sha256:eb4d6e9d3663e26cd27dc3ad266b34445a16b54908e74725adb241aa56987533"}, + {file = "torch-2.2.2-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:bf9558da7d2bf7463390b3b2a61a6a3dbb0b45b161ee1dd5ec640bf579d479fc"}, + {file = "torch-2.2.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:cd2bf7697c9e95fb5d97cc1d525486d8cf11a084c6af1345c2c2c22a6b0029d0"}, + {file = "torch-2.2.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:b421448d194496e1114d87a8b8d6506bce949544e513742b097e2ab8f7efef32"}, + {file = "torch-2.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:3dbcd563a9b792161640c0cffe17e3270d85e8f4243b1f1ed19cca43d28d235b"}, + {file = "torch-2.2.2-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:31f4310210e7dda49f1fb52b0ec9e59382cfcb938693f6d5378f25b43d7c1d29"}, + {file = "torch-2.2.2-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:c795feb7e8ce2e0ef63f75f8e1ab52e7fd5e1a4d7d0c31367ade1e3de35c9e95"}, + {file = "torch-2.2.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:a6e5770d68158d07456bfcb5318b173886f579fdfbf747543901ce718ea94782"}, + {file = "torch-2.2.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:67dcd726edff108e2cd6c51ff0e416fd260c869904de95750e80051358680d24"}, + {file = "torch-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:539d5ef6c4ce15bd3bd47a7b4a6e7c10d49d4d21c0baaa87c7d2ef8698632dfb"}, + {file = "torch-2.2.2-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:dff696de90d6f6d1e8200e9892861fd4677306d0ef604cb18f2134186f719f82"}, + {file = "torch-2.2.2-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:3a4dd910663fd7a124c056c878a52c2b0be4a5a424188058fe97109d4436ee42"}, ] [package.dependencies] @@ -3300,13 +3305,13 @@ telegram = ["requests"] [[package]] name = "transformers" -version = "4.39.1" +version = "4.39.3" description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" optional = false python-versions = ">=3.8.0" files = [ - {file = "transformers-4.39.1-py3-none-any.whl", hash = "sha256:df167e08b27ab254044a38bb7c439461cd3916332205416e9b6b1592b517a1a5"}, - {file = "transformers-4.39.1.tar.gz", hash = "sha256:ab9c1e1912843b9976e6cc62b27cd5434284fc0dab465e1b660333acfa81c6bc"}, + {file = "transformers-4.39.3-py3-none-any.whl", hash = "sha256:7838034a12cca3168247f9d2d1dba6724c9de3ae0f73a108258c6b8fc5912601"}, + {file = "transformers-4.39.3.tar.gz", hash = "sha256:2586e5ff4150f122716fc40f5530e92871befc051848fbe82600969c535b762d"}, ] [package.dependencies] @@ -3644,4 +3649,8 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = "^3.12" +<<<<<<< HEAD content-hash = "50973992c2de906017fdc031aff1577e494cad15db64374c9d258c977d8e3912" +======= +content-hash = "7471a0c2f35f820be550819e15fc3f39ce23338919e21ca98bd10f593590132d" +>>>>>>> 2e3f0d6 (Update lockfile.) From 5441f75fe71ddc5ae3ad266baa1460b02c327b1a Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Tue, 2 Apr 2024 19:16:45 +0100 Subject: [PATCH 20/25] Remove rogue print statement. --- consultation_analyser/consultations/ml_pipeline.py | 1 - 1 file changed, 1 deletion(-) diff --git a/consultation_analyser/consultations/ml_pipeline.py b/consultation_analyser/consultations/ml_pipeline.py index 1be479bd..d990594f 100644 --- a/consultation_analyser/consultations/ml_pipeline.py +++ b/consultation_analyser/consultations/ml_pipeline.py @@ -76,7 +76,6 @@ def save_theme_to_answer(question: models.Question, answer_row: AnswerRow) -> mo def save_themes_to_answers(question: models.Question, answers_topics_df: pd.DataFrame) -> None: - print(f"answers_topics_df: {answers_topics_df}") for row in answers_topics_df.itertuples(): save_theme_to_answer(question, row) From f5e447fd73f0f365cc6668bed8a45e4a9c4dd85b Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Thu, 4 Apr 2024 10:03:54 +0100 Subject: [PATCH 21/25] update poetry package --- poetry.lock | 309 +++++++++++++++++++++++----------------------------- 1 file changed, 134 insertions(+), 175 deletions(-) diff --git a/poetry.lock b/poetry.lock index 21471d4b..9b3027ff 100644 --- a/poetry.lock +++ b/poetry.lock @@ -120,38 +120,6 @@ files = [ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] -[[package]] - -name = "anyio" -version = "4.3.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.8" -files = [ - {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, - {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, -] - -[package.dependencies] -idna = ">=2.8" -sniffio = ">=1.1" - -[package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.23)"] - -[[package]] -name = "annotated-types" -version = "0.6.0" -description = "Reusable constraint types to use with typing.Annotated" -optional = false -python-versions = ">=3.8" -files = [ - {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, - {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, -] - [[package]] name = "argcomplete" version = "3.2.3" @@ -251,17 +219,6 @@ test = ["pytest (>=5.4.3)", "pytest-cov (>=2.6.1)"] use = ["tensorflow", "tensorflow-hub", "tensorflow-text"] vision = ["Pillow (>=9.2.0)", "accelerate (>=0.19.0)"] -[[package]] -name = "certifi" -version = "2024.2.2" -description = "Python package for providing Mozilla's CA Bundle." -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, -] - [[package]] name = "black" version = "24.3.0" @@ -308,17 +265,17 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "boto3" -version = "1.34.76" +version = "1.34.77" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.34.76-py3-none-any.whl", hash = "sha256:530a4cea3d40a6bd2f15a368ea395beef1ea6dff4491823bc48bd20c7d4da655"}, - {file = "boto3-1.34.76.tar.gz", hash = "sha256:8c598382e8fb61cfa8f75056197e9b509eb52039ebc291af3b1096241ba2542c"}, + {file = "boto3-1.34.77-py3-none-any.whl", hash = "sha256:7abd327980258ec2ae980d2ff7fc32ede7448146b14d34c56bf0be074e2a149b"}, + {file = "boto3-1.34.77.tar.gz", hash = "sha256:8ebed4fa5a3b84dd4037f28226985af00e00fb860d739fc8b1ed6381caa4b330"}, ] [package.dependencies] -botocore = ">=1.34.76,<1.35.0" +botocore = ">=1.34.77,<1.35.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -327,13 +284,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.76" +version = "1.34.77" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.34.76-py3-none-any.whl", hash = "sha256:62e45e7374844ee39e86a96fe7f5e973eb5bf3469da028b4e3a8caba0909fb1f"}, - {file = "botocore-1.34.76.tar.gz", hash = "sha256:68be44487a95132fccbc0b836fded4190dae30324f6bf822e1b6efd385ffdc83"}, + {file = "botocore-1.34.77-py3-none-any.whl", hash = "sha256:6d6a402032ca0b89525212356a865397f8f2839683dd53d41b8cee1aa84b2b4b"}, + {file = "botocore-1.34.77.tar.gz", hash = "sha256:6dab60261cdbfb7d0059488ea39408d5522fad419c004ba5db3484e6df854ea8"}, ] [package.dependencies] @@ -367,19 +324,6 @@ files = [ ] [[package]] -name = "click" -version = "8.1.7" -description = "Composable command line interface toolkit" -optional = false -python-versions = ">=3.7" -files = [ - {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, - {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "platform_system == \"Windows\""} - name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." @@ -478,6 +422,20 @@ files = [ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + [[package]] name = "colorama" version = "0.4.6" @@ -490,32 +448,6 @@ files = [ ] [[package]] -name = "datamodel-code-generator" -version = "0.25.5" -description = "Datamodel Code Generator" -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "datamodel_code_generator-0.25.5-py3-none-any.whl", hash = "sha256:3b62b42c8ebf2bb98cfbc24467b523c5b76780c585b72f4ac2fc1f1f576702ab"}, - {file = "datamodel_code_generator-0.25.5.tar.gz", hash = "sha256:545f897481a94781e32b3c26a452ce049320b091310729f7fc6fa780f6a87898"}, -] - -[package.dependencies] -argcomplete = ">=1.10,<4.0" -black = ">=19.10b0" -genson = ">=1.2.1,<2.0" -inflect = ">=4.1.0,<6.0" -isort = ">=4.3.21,<6.0" -jinja2 = ">=2.10.1,<4.0" -packaging = "*" -pydantic = {version = ">=1.10.0,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.4.0 || >2.4.0,<3.0", extras = ["email"], markers = "python_version >= \"3.12\" and python_version < \"4.0\""} -pyyaml = ">=6.0.1" - -[package.extras] -debug = ["PySnooper (>=0.4.1,<2.0.0)"] -graphql = ["graphql-core (>=3.2.3,<4.0.0)"] -http = ["httpx"] -validation = ["openapi-spec-validator (>=0.2.8,<0.7.0)", "prance (>=0.18.2)"] name = "cython" version = "0.29.37" description = "The Cython compiler for writing C extensions for the Python language." @@ -581,6 +513,34 @@ files = [ marshmallow = ">=3.18.0,<4.0.0" typing-inspect = ">=0.4.0,<1" +[[package]] +name = "datamodel-code-generator" +version = "0.25.5" +description = "Datamodel Code Generator" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "datamodel_code_generator-0.25.5-py3-none-any.whl", hash = "sha256:3b62b42c8ebf2bb98cfbc24467b523c5b76780c585b72f4ac2fc1f1f576702ab"}, + {file = "datamodel_code_generator-0.25.5.tar.gz", hash = "sha256:545f897481a94781e32b3c26a452ce049320b091310729f7fc6fa780f6a87898"}, +] + +[package.dependencies] +argcomplete = ">=1.10,<4.0" +black = ">=19.10b0" +genson = ">=1.2.1,<2.0" +inflect = ">=4.1.0,<6.0" +isort = ">=4.3.21,<6.0" +jinja2 = ">=2.10.1,<4.0" +packaging = "*" +pydantic = {version = ">=1.10.0,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.4.0 || >2.4.0,<3.0", extras = ["email"], markers = "python_version >= \"3.12\" and python_version < \"4.0\""} +pyyaml = ">=6.0.1" + +[package.extras] +debug = ["PySnooper (>=0.4.1,<2.0.0)"] +graphql = ["graphql-core (>=3.2.3,<4.0.0)"] +http = ["httpx"] +validation = ["openapi-spec-validator (>=0.2.8,<0.7.0)", "prance (>=0.18.2)"] + [[package]] name = "distlib" version = "0.3.8" @@ -594,13 +554,13 @@ files = [ [[package]] name = "django" -version = "5.0.3" +version = "5.0.4" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." optional = false python-versions = ">=3.10" files = [ - {file = "Django-5.0.3-py3-none-any.whl", hash = "sha256:5c7d748ad113a81b2d44750ccc41edc14e933f56581683db548c9257e078cc83"}, - {file = "Django-5.0.3.tar.gz", hash = "sha256:5fb37580dcf4a262f9258c1f4373819aacca906431f505e4688e37f3a99195df"}, + {file = "Django-5.0.4-py3-none-any.whl", hash = "sha256:916423499d75d62da7aa038d19aef23d23498d8df229775eb0a6309ee1013775"}, + {file = "Django-5.0.4.tar.gz", hash = "sha256:4bd01a8c830bb77a8a3b0e7d8b25b887e536ad17a81ba2dce5476135c73312bd"}, ] [package.dependencies] @@ -701,6 +661,20 @@ files = [ [package.dependencies] types-psycopg2 = ">=2.9.21.13" +[[package]] +name = "django-webtest" +version = "1.9.11" +description = "Instant integration of Ian Bicking's WebTest (http://docs.pylonsproject.org/projects/webtest/) with Django's testing framework." +optional = false +python-versions = "*" +files = [ + {file = "django-webtest-1.9.11.tar.gz", hash = "sha256:9597d26ced599bc5d4d9366bb451469fc9707b4779f79543cdf401ae6c5aeb35"}, + {file = "django_webtest-1.9.11-py3-none-any.whl", hash = "sha256:e29baf8337e7fe7db41ce63ca6661f7b5c77fe56f506f48b305e09313f5475b4"}, +] + +[package.dependencies] +webtest = ">=1.3.3" + [[package]] name = "dnspython" version = "2.6.1" @@ -735,18 +709,6 @@ files = [ [package.dependencies] dnspython = ">=2.0.0" idna = ">=2.0.0" -name = "django-webtest" -version = "1.9.11" -description = "Instant integration of Ian Bicking's WebTest (http://docs.pylonsproject.org/projects/webtest/) with Django's testing framework." -optional = false -python-versions = "*" -files = [ - {file = "django-webtest-1.9.11.tar.gz", hash = "sha256:9597d26ced599bc5d4d9366bb451469fc9707b4779f79543cdf401ae6c5aeb35"}, - {file = "django_webtest-1.9.11-py3-none-any.whl", hash = "sha256:e29baf8337e7fe7db41ce63ca6661f7b5c77fe56f506f48b305e09313f5475b4"}, -] - -[package.dependencies] -webtest = ">=1.3.3" [[package]] name = "factory-boy" @@ -796,16 +758,6 @@ docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1 testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] typing = ["typing-extensions (>=4.8)"] -[[package]] -name = "genson" -version = "1.2.2" -description = "GenSON is a powerful, user-friendly JSON Schema generator." -optional = false -python-versions = "*" -files = [ - {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, -] - [[package]] name = "frozenlist" version = "1.4.1" @@ -927,6 +879,16 @@ smb = ["smbprotocol"] ssh = ["paramiko"] tqdm = ["tqdm"] +[[package]] +name = "genson" +version = "1.2.2" +description = "GenSON is a powerful, user-friendly JSON Schema generator." +optional = false +python-versions = "*" +files = [ + {file = "genson-1.2.2.tar.gz", hash = "sha256:8caf69aa10af7aee0e1a1351d1d06801f4696e005f06cedef438635384346a16"}, +] + [[package]] name = "govuk-frontend-jinja" version = "3.0.0" @@ -1280,13 +1242,13 @@ extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15. [[package]] name = "langchain-core" -version = "0.1.38" +version = "0.1.40" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langchain_core-0.1.38-py3-none-any.whl", hash = "sha256:d881b2754254cb4bdb0d5bb56e5c138d032b6e75e5cb21f151b01224b322e02b"}, - {file = "langchain_core-0.1.38.tar.gz", hash = "sha256:ee8da6d061c06cce7dc22fec224b6ecbc3a8de106d6dd9f409c7fe448ea41861"}, + {file = "langchain_core-0.1.40-py3-none-any.whl", hash = "sha256:618dbb7ab44d8b263b91e384db1ff07d0db256ae5bdafa0123a115b6a75a13f1"}, + {file = "langchain_core-0.1.40.tar.gz", hash = "sha256:34c06fc0e6d3534b738c63f85403446b4be71161665b7e091f9bb19c914ec100"}, ] [package.dependencies] @@ -1295,7 +1257,6 @@ langsmith = ">=0.1.0,<0.2.0" packaging = ">=23.2,<24.0" pydantic = ">=1,<3" PyYAML = ">=5.3" -requests = ">=2,<3" tenacity = ">=8.1.0,<9.0.0" [package.extras] @@ -1320,13 +1281,13 @@ extended-testing = ["lxml (>=5.1.0,<6.0.0)"] [[package]] name = "langsmith" -version = "0.1.38" +version = "0.1.40" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.38-py3-none-any.whl", hash = "sha256:f36479f82cf537cf40d129ac2e485e72a3981360c7b6cf2549dad77d98eafd8f"}, - {file = "langsmith-0.1.38.tar.gz", hash = "sha256:2c1f98ac0a8c02e43b625650a6e13c65b09523551bfc21a59d20963f46f7d265"}, + {file = "langsmith-0.1.40-py3-none-any.whl", hash = "sha256:aa47d0f5a1eabd5c05ac6ce2cd3e28ccfc554d366e856a27b7c3c17c443881cb"}, + {file = "langsmith-0.1.40.tar.gz", hash = "sha256:50fdf313741cf94e978de06025fd180b56acf1d1a4549b0fd5453ef23d5461ef"}, ] [package.dependencies] @@ -1826,13 +1787,13 @@ files = [ [[package]] name = "nvidia-nvjitlink-cu12" -version = "12.4.99" +version = "12.4.127" description = "Nvidia JIT LTO Library" optional = false python-versions = ">=3" files = [ - {file = "nvidia_nvjitlink_cu12-12.4.99-py3-none-manylinux2014_x86_64.whl", hash = "sha256:c6428836d20fe7e327191c175791d38570e10762edc588fb46749217cd444c74"}, - {file = "nvidia_nvjitlink_cu12-12.4.99-py3-none-win_amd64.whl", hash = "sha256:991905ffa2144cb603d8ca7962d75c35334ae82bf92820b6ba78157277da1ad2"}, + {file = "nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:06b3b9b25bf3f8af351d664978ca26a16d2c5127dbd53c0497e28d1fb9611d57"}, + {file = "nvidia_nvjitlink_cu12-12.4.127-py3-none-win_amd64.whl", hash = "sha256:fd9020c501d27d135f983c6d3e244b197a7ccad769e34df53a42e276b0e25fa1"}, ] [[package]] @@ -1918,16 +1879,6 @@ files = [ ] [[package]] -name = "pathspec" -version = "0.12.1" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, -] - name = "pandas" version = "2.2.1" description = "Powerful data structures for data analysis, time series, and statistics" @@ -1996,6 +1947,17 @@ sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-d test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] xml = ["lxml (>=4.9.2)"] +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + [[package]] name = "pillow" version = "10.3.0" @@ -2858,45 +2820,45 @@ tests = ["black (>=23.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.3)", "numpydoc ( [[package]] name = "scipy" -version = "1.12.0" +version = "1.13.0" description = "Fundamental algorithms for scientific computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "scipy-1.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78e4402e140879387187f7f25d91cc592b3501a2e51dfb320f48dfb73565f10b"}, - {file = "scipy-1.12.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5f00ebaf8de24d14b8449981a2842d404152774c1a1d880c901bf454cb8e2a1"}, - {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e53958531a7c695ff66c2e7bb7b79560ffdc562e2051644c5576c39ff8efb563"}, - {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e32847e08da8d895ce09d108a494d9eb78974cf6de23063f93306a3e419960c"}, - {file = "scipy-1.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c1020cad92772bf44b8e4cdabc1df5d87376cb219742549ef69fc9fd86282dd"}, - {file = "scipy-1.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:75ea2a144096b5e39402e2ff53a36fecfd3b960d786b7efd3c180e29c39e53f2"}, - {file = "scipy-1.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:408c68423f9de16cb9e602528be4ce0d6312b05001f3de61fe9ec8b1263cad08"}, - {file = "scipy-1.12.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5adfad5dbf0163397beb4aca679187d24aec085343755fcdbdeb32b3679f254c"}, - {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3003652496f6e7c387b1cf63f4bb720951cfa18907e998ea551e6de51a04467"}, - {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8066bce124ee5531d12a74b617d9ac0ea59245246410e19bca549656d9a40a"}, - {file = "scipy-1.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8bee4993817e204d761dba10dbab0774ba5a8612e57e81319ea04d84945375ba"}, - {file = "scipy-1.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a24024d45ce9a675c1fb8494e8e5244efea1c7a09c60beb1eeb80373d0fecc70"}, - {file = "scipy-1.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7e76cc48638228212c747ada851ef355c2bb5e7f939e10952bc504c11f4e372"}, - {file = "scipy-1.12.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f7ce148dffcd64ade37b2df9315541f9adad6efcaa86866ee7dd5db0c8f041c3"}, - {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c39f92041f490422924dfdb782527a4abddf4707616e07b021de33467f917bc"}, - {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7ebda398f86e56178c2fa94cad15bf457a218a54a35c2a7b4490b9f9cb2676c"}, - {file = "scipy-1.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:95e5c750d55cf518c398a8240571b0e0782c2d5a703250872f36eaf737751338"}, - {file = "scipy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e646d8571804a304e1da01040d21577685ce8e2db08ac58e543eaca063453e1c"}, - {file = "scipy-1.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:913d6e7956c3a671de3b05ccb66b11bc293f56bfdef040583a7221d9e22a2e35"}, - {file = "scipy-1.12.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba1b0c7256ad75401c73e4b3cf09d1f176e9bd4248f0d3112170fb2ec4db067"}, - {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:730badef9b827b368f351eacae2e82da414e13cf8bd5051b4bdfd720271a5371"}, - {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6546dc2c11a9df6926afcbdd8a3edec28566e4e785b915e849348c6dd9f3f490"}, - {file = "scipy-1.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:196ebad3a4882081f62a5bf4aeb7326aa34b110e533aab23e4374fcccb0890dc"}, - {file = "scipy-1.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:b360f1b6b2f742781299514e99ff560d1fe9bd1bff2712894b52abe528d1fd1e"}, - {file = "scipy-1.12.0.tar.gz", hash = "sha256:4bf5abab8a36d20193c698b0f1fc282c1d083c94723902c447e5d2f1780936a3"}, -] - -[package.dependencies] -numpy = ">=1.22.4,<1.29.0" + {file = "scipy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba419578ab343a4e0a77c0ef82f088238a93eef141b2b8017e46149776dfad4d"}, + {file = "scipy-1.13.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:22789b56a999265431c417d462e5b7f2b487e831ca7bef5edeb56efe4c93f86e"}, + {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05f1432ba070e90d42d7fd836462c50bf98bd08bed0aa616c359eed8a04e3922"}, + {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8434f6f3fa49f631fae84afee424e2483289dfc30a47755b4b4e6b07b2633a4"}, + {file = "scipy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dcbb9ea49b0167de4167c40eeee6e167caeef11effb0670b554d10b1e693a8b9"}, + {file = "scipy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:1d2f7bb14c178f8b13ebae93f67e42b0a6b0fc50eba1cd8021c9b6e08e8fb1cd"}, + {file = "scipy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fbcf8abaf5aa2dc8d6400566c1a727aed338b5fe880cde64907596a89d576fa"}, + {file = "scipy-1.13.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5e4a756355522eb60fcd61f8372ac2549073c8788f6114449b37e9e8104f15a5"}, + {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5acd8e1dbd8dbe38d0004b1497019b2dbbc3d70691e65d69615f8a7292865d7"}, + {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ff7dad5d24a8045d836671e082a490848e8639cabb3dbdacb29f943a678683d"}, + {file = "scipy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4dca18c3ffee287ddd3bc8f1dabaf45f5305c5afc9f8ab9cbfab855e70b2df5c"}, + {file = "scipy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:a2f471de4d01200718b2b8927f7d76b5d9bde18047ea0fa8bd15c5ba3f26a1d6"}, + {file = "scipy-1.13.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0de696f589681c2802f9090fff730c218f7c51ff49bf252b6a97ec4a5d19e8b"}, + {file = "scipy-1.13.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:b2a3ff461ec4756b7e8e42e1c681077349a038f0686132d623fa404c0bee2551"}, + {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf9fe63e7a4bf01d3645b13ff2aa6dea023d38993f42aaac81a18b1bda7a82a"}, + {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e7626dfd91cdea5714f343ce1176b6c4745155d234f1033584154f60ef1ff42"}, + {file = "scipy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:109d391d720fcebf2fbe008621952b08e52907cf4c8c7efc7376822151820820"}, + {file = "scipy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:8930ae3ea371d6b91c203b1032b9600d69c568e537b7988a3073dfe4d4774f21"}, + {file = "scipy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5407708195cb38d70fd2d6bb04b1b9dd5c92297d86e9f9daae1576bd9e06f602"}, + {file = "scipy-1.13.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ac38c4c92951ac0f729c4c48c9e13eb3675d9986cc0c83943784d7390d540c78"}, + {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c74543c4fbeb67af6ce457f6a6a28e5d3739a87f62412e4a16e46f164f0ae5"}, + {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28e286bf9ac422d6beb559bc61312c348ca9b0f0dae0d7c5afde7f722d6ea13d"}, + {file = "scipy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33fde20efc380bd23a78a4d26d59fc8704e9b5fd9b08841693eb46716ba13d86"}, + {file = "scipy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:45c08bec71d3546d606989ba6e7daa6f0992918171e2a6f7fbedfa7361c2de1e"}, + {file = "scipy-1.13.0.tar.gz", hash = "sha256:58569af537ea29d3f78e5abd18398459f195546bb3be23d16677fb26616cc11e"}, +] + +[package.dependencies] +numpy = ">=1.22.4,<2.3" [package.extras] -dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] -doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] -test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] +doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.12.0)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0)", "sphinx-design (>=0.4.0)"] +test = ["array-api-strict", "asv", "gmpy2", "hypothesis (>=6.30)", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "sentence-transformers" @@ -3421,12 +3383,13 @@ files = [ [[package]] name = "umap-learn" -version = "0.5.5" +version = "0.5.6" description = "Uniform Manifold Approximation and Projection" optional = false python-versions = "*" files = [ - {file = "umap-learn-0.5.5.tar.gz", hash = "sha256:c54d607364413eade968b73ba07c8b3ea14412817f53cd07b6f720ac957293c4"}, + {file = "umap-learn-0.5.6.tar.gz", hash = "sha256:5b3917a862c23ba0fc83bfcd67a7b719dec85b3d9c01fdc7d894cce455df4e03"}, + {file = "umap_learn-0.5.6-py3-none-any.whl", hash = "sha256:881cc0c2ee845b790bf0455aa1664f9f68b838d9d0fe12a1291b85c5a559c913"}, ] [package.dependencies] @@ -3438,7 +3401,7 @@ scipy = ">=1.3.1" tqdm = "*" [package.extras] -parametric-umap = ["tensorflow (>=2.1)", "tensorflow-probability (>=0.10)"] +parametric-umap = ["tensorflow (>=2.1)"] plot = ["bokeh", "colorcet", "datashader", "holoviews", "matplotlib", "pandas", "scikit-image", "seaborn"] tbb = ["tbb (>=2019.0)"] @@ -3649,8 +3612,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = "^3.12" -<<<<<<< HEAD -content-hash = "50973992c2de906017fdc031aff1577e494cad15db64374c9d258c977d8e3912" -======= -content-hash = "7471a0c2f35f820be550819e15fc3f39ce23338919e21ca98bd10f593590132d" ->>>>>>> 2e3f0d6 (Update lockfile.) +content-hash = "5f13f6a0a35ae64fabed499d87efbb47f1ad4d53861b6f2a931d0e3b9f89c65e" From dfa06db14dd86a1d70653e419ff2361a5325191d Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Thu, 4 Apr 2024 12:13:30 +0100 Subject: [PATCH 22/25] refactor saving themes to answers to the model --- .../consultations/ml_pipeline.py | 41 +++++------------ consultation_analyser/consultations/models.py | 10 +++++ tests/integration/test_ml_pipeline.py | 2 +- tests/unit/test_ml_pipeline_functions.py | 44 +++++++++---------- tests/unit/test_models.py | 22 ++++++++++ 5 files changed, 66 insertions(+), 53 deletions(-) create mode 100644 tests/unit/test_models.py diff --git a/consultation_analyser/consultations/ml_pipeline.py b/consultation_analyser/consultations/ml_pipeline.py index d990594f..2010a8d9 100644 --- a/consultation_analyser/consultations/ml_pipeline.py +++ b/consultation_analyser/consultations/ml_pipeline.py @@ -1,18 +1,17 @@ +from typing import Dict, List, NamedTuple, Union from uuid import UUID -from typing import List, NamedTuple, Dict, Union -from umap.umap_ import UMAP -from sentence_transformers import SentenceTransformer -from hdbscan import HDBSCAN +import numpy as np +import pandas as pd from bertopic import BERTopic from bertopic.vectorizers import ClassTfidfTransformer +from hdbscan import HDBSCAN +from sentence_transformers import SentenceTransformer from sklearn.feature_extraction.text import CountVectorizer -import numpy as np -import pandas as pd +from umap.umap_ import UMAP from consultation_analyser.consultations import models - RANDOM_STATE = 12 # For reproducibility @@ -56,28 +55,12 @@ def get_answers_and_topics(topic_model: BERTopic, answers_list: List[Dict[str, U return answers_df -class AnswerRow(NamedTuple): - id: int - Name: str - Representation: List - - -def save_theme_to_answer(question: models.Question, answer_row: AnswerRow) -> models.Answer: - # Row of answer_df with free_text answers and topic classification - answer = models.Answer.objects.get(id=answer_row.id) - theme, _ = models.Theme.objects.get_or_create( - question=question, - label=answer_row.Name, - keywords=answer_row.Representation, - ) - answer.theme = theme - answer.save() - return answer - - -def save_themes_to_answers(question: models.Question, answers_topics_df: pd.DataFrame) -> None: +def save_themes_to_answers(answers_topics_df: pd.DataFrame) -> None: for row in answers_topics_df.itertuples(): - save_theme_to_answer(question, row) + answer = models.Answer.objects.get(id=row.id) + theme_label = row.Name + theme_keywords = row.Representation + answer.save_theme_to_answer(theme_label=theme_label, theme_keywords=theme_keywords) def save_themes_for_question(question: models.Question) -> None: @@ -87,7 +70,7 @@ def save_themes_for_question(question: models.Question) -> None: answers_list_with_embeddings = get_embeddings_for_question(answers_list) topic_model = get_topic_model(answers_list_with_embeddings) answers_topics_df = get_answers_and_topics(topic_model, answers_list_with_embeddings) - save_themes_to_answers(question, answers_topics_df) + save_themes_to_answers(answers_topics_df) def save_themes_for_consultation(consultation_id: UUID) -> None: diff --git a/consultation_analyser/consultations/models.py b/consultation_analyser/consultations/models.py index 7ff75cdb..fd8b2016 100644 --- a/consultation_analyser/consultations/models.py +++ b/consultation_analyser/consultations/models.py @@ -80,3 +80,13 @@ class Answer(UUIDPrimaryKeyModel, TimeStampedModel): class Meta(UUIDPrimaryKeyModel.Meta, TimeStampedModel.Meta): pass + + def save_theme_to_answer(self, theme_label, theme_keywords): + question = self.question + theme, _ = Theme.objects.get_or_create( + question=question, + label=theme_label, + keywords=theme_keywords, + ) + self.theme = theme + self.save() diff --git a/tests/integration/test_ml_pipeline.py b/tests/integration/test_ml_pipeline.py index a1d8974f..13db10d7 100644 --- a/tests/integration/test_ml_pipeline.py +++ b/tests/integration/test_ml_pipeline.py @@ -1,9 +1,9 @@ import pytest +from consultation_analyser.consultations import models from consultation_analyser.consultations.ml_pipeline import ( save_themes_for_consultation, ) -from consultation_analyser.consultations import models from tests import factories diff --git a/tests/unit/test_ml_pipeline_functions.py b/tests/unit/test_ml_pipeline_functions.py index d77efe9d..df4c28ab 100644 --- a/tests/unit/test_ml_pipeline_functions.py +++ b/tests/unit/test_ml_pipeline_functions.py @@ -1,11 +1,9 @@ -import pytest -import pandas as pd import numpy as np +import pandas as pd +import pytest -from consultation_analyser.consultations import models - +from consultation_analyser.consultations import ml_pipeline, models from tests import factories -from consultation_analyser.consultations import ml_pipeline def test_get_embeddings_for_question(): @@ -21,23 +19,23 @@ def test_get_embeddings_for_question(): assert not np.array_equal(output[0]["embedding"], output[2]["embedding"]) -@pytest.mark.django_db -def test_get_or_create_theme_for_question(): - question = factories.QuestionFactory(has_free_text=True) - factories.AnswerFactory(question=question, theme=None) - keywords = ["key", "lock"] - label = "0_key_lock" - # Check theme created - theme, created = models.Theme.objects.get_or_create(question=question, keywords=keywords, label=label) - themes_qs = models.Theme.objects.filter(keywords=keywords, label=label) - assert themes_qs.count() == 1 - assert theme.keywords == keywords - assert theme.label == label - assert created - # Check no duplicate created - theme, created = models.Theme.objects.get_or_create(question=question, keywords=keywords, label=label) - themes_qs = models.Theme.objects.filter(keywords=keywords, label=label) - assert themes_qs.count() == 1 +# @pytest.mark.django_db +# def test_get_or_create_theme_for_question(): +# question = factories.QuestionFactory(has_free_text=True) +# factories.AnswerFactory(question=question, theme=None) +# keywords = ["key", "lock"] +# label = "0_key_lock" +# # Check theme created +# theme, created = models.Theme.objects.get_or_create(question=question, keywords=keywords, label=label) +# themes_qs = models.Theme.objects.filter(keywords=keywords, label=label) +# assert themes_qs.count() == 1 +# assert theme.keywords == keywords +# assert theme.label == label +# assert created +# # Check no duplicate created +# theme, created = models.Theme.objects.get_or_create(question=question, keywords=keywords, label=label) +# themes_qs = models.Theme.objects.filter(keywords=keywords, label=label) +# assert themes_qs.count() == 1 @pytest.mark.django_db @@ -55,7 +53,7 @@ def test_save_themes_to_answers(): "Representation": [["x", "y"], ["m", "n"], ["m", "n"]], } ) - ml_pipeline.save_themes_to_answers(question, answers_df) + ml_pipeline.save_themes_to_answers(answers_df) themes_qs = models.Theme.objects.filter(question=question) assert themes_qs.count() == 2 assert "-1_x_y" in themes_qs.values_list("label", flat=True) diff --git a/tests/unit/test_models.py b/tests/unit/test_models.py new file mode 100644 index 00000000..3c363e04 --- /dev/null +++ b/tests/unit/test_models.py @@ -0,0 +1,22 @@ +import pytest + +from consultation_analyser.consultations import models +from tests import factories + + +@pytest.mark.django_db +def test_save_theme_to_answer(): + question = factories.QuestionFactory(has_free_text=True) + answer = factories.AnswerFactory(question=question, theme=None) + keywords = ["key", "lock"] + label = "0_key_lock" + # Check theme created and saved to answer + answer.save_theme_to_answer(theme_label=label, theme_keywords=keywords) + theme = models.Theme.objects.get(keywords=keywords, label=label) + assert theme.keywords == keywords + assert theme.label == label + assert answer.theme.label == label + # Check no duplicate created + answer.save_theme_to_answer(theme_label=label, theme_keywords=keywords) + themes_qs = models.Theme.objects.filter(keywords=keywords, label=label) + assert themes_qs.count() == 1 From 7e6cf1815ec378e67cfa85f4ffeb57c9f2a1be79 Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Thu, 4 Apr 2024 12:27:24 +0100 Subject: [PATCH 23/25] Amend tests as questions without free-text shouldn't have themes. --- tests/integration/test_responses_pages.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/integration/test_responses_pages.py b/tests/integration/test_responses_pages.py index 538f7c0d..05717392 100644 --- a/tests/integration/test_responses_pages.py +++ b/tests/integration/test_responses_pages.py @@ -27,8 +27,9 @@ def test_get_question_responses_page(django_app): answer_loop_range = min(4, len(answers)) for i in range(answer_loop_range): assert f"{answers[i].free_text}" in page_content - assert f"{answers[i].theme.label}" in page_content assert f"{answers[i].multiple_choice_responses}" in page_content + if answers[i].free_text: + assert f"{answers[i].theme.label}" in page_content # Opinions should appear in filter select-box for option in question.multiple_choice_options: From d78669219c086bb2a2dee80e5b6c9401d48d8fed Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Fri, 5 Apr 2024 14:03:06 +0100 Subject: [PATCH 24/25] Remove commented out code. --- tests/unit/test_ml_pipeline_functions.py | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/tests/unit/test_ml_pipeline_functions.py b/tests/unit/test_ml_pipeline_functions.py index df4c28ab..120787dd 100644 --- a/tests/unit/test_ml_pipeline_functions.py +++ b/tests/unit/test_ml_pipeline_functions.py @@ -19,25 +19,6 @@ def test_get_embeddings_for_question(): assert not np.array_equal(output[0]["embedding"], output[2]["embedding"]) -# @pytest.mark.django_db -# def test_get_or_create_theme_for_question(): -# question = factories.QuestionFactory(has_free_text=True) -# factories.AnswerFactory(question=question, theme=None) -# keywords = ["key", "lock"] -# label = "0_key_lock" -# # Check theme created -# theme, created = models.Theme.objects.get_or_create(question=question, keywords=keywords, label=label) -# themes_qs = models.Theme.objects.filter(keywords=keywords, label=label) -# assert themes_qs.count() == 1 -# assert theme.keywords == keywords -# assert theme.label == label -# assert created -# # Check no duplicate created -# theme, created = models.Theme.objects.get_or_create(question=question, keywords=keywords, label=label) -# themes_qs = models.Theme.objects.filter(keywords=keywords, label=label) -# assert themes_qs.count() == 1 - - @pytest.mark.django_db def test_save_themes_to_answers(): question = factories.QuestionFactory() From 1f15c6ceb464f691e5088fb8cbb8b918ca7fbd22 Mon Sep 17 00:00:00 2001 From: Nina Menezes Date: Fri, 5 Apr 2024 14:07:01 +0100 Subject: [PATCH 25/25] Remove unnecessary line. --- tests/unit/test_ml_pipeline_functions.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/unit/test_ml_pipeline_functions.py b/tests/unit/test_ml_pipeline_functions.py index 120787dd..b905803a 100644 --- a/tests/unit/test_ml_pipeline_functions.py +++ b/tests/unit/test_ml_pipeline_functions.py @@ -25,7 +25,6 @@ def test_save_themes_to_answers(): answer1 = factories.AnswerFactory(question=question, theme=None) answer2 = factories.AnswerFactory(question=question, theme=None) answer3 = factories.AnswerFactory(question=question, theme=None) - assert not answer1.theme answers_df = pd.DataFrame( { "id": [answer1.id, answer2.id, answer3.id],