From b18f3cc5ba19213e41eb28ee872a1b2f8b0b7a39 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Wed, 18 Dec 2024 17:14:25 -0500 Subject: [PATCH 01/21] Update poetry lock --- poetry.lock | 925 ++++++++++++++++++++++++++-------------------------- 1 file changed, 469 insertions(+), 456 deletions(-) diff --git a/poetry.lock b/poetry.lock index 75cf2494a..67a833677 100644 --- a/poetry.lock +++ b/poetry.lock @@ -44,87 +44,87 @@ files = [ [[package]] name = "aiohttp" -version = "3.11.10" +version = "3.11.11" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.9" files = [ - {file = "aiohttp-3.11.10-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cbad88a61fa743c5d283ad501b01c153820734118b65aee2bd7dbb735475ce0d"}, - {file = "aiohttp-3.11.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80886dac673ceaef499de2f393fc80bb4481a129e6cb29e624a12e3296cc088f"}, - {file = "aiohttp-3.11.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:61b9bae80ed1f338c42f57c16918853dc51775fb5cb61da70d590de14d8b5fb4"}, - {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e2e576caec5c6a6b93f41626c9c02fc87cd91538b81a3670b2e04452a63def6"}, - {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02c13415b5732fb6ee7ff64583a5e6ed1c57aa68f17d2bda79c04888dfdc2769"}, - {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4cfce37f31f20800a6a6620ce2cdd6737b82e42e06e6e9bd1b36f546feb3c44f"}, - {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3bbbfff4c679c64e6e23cb213f57cc2c9165c9a65d63717108a644eb5a7398df"}, - {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49c7dbbc1a559ae14fc48387a115b7d4bbc84b4a2c3b9299c31696953c2a5219"}, - {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:68386d78743e6570f054fe7949d6cb37ef2b672b4d3405ce91fafa996f7d9b4d"}, - {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9ef405356ba989fb57f84cac66f7b0260772836191ccefbb987f414bcd2979d9"}, - {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5d6958671b296febe7f5f859bea581a21c1d05430d1bbdcf2b393599b1cdce77"}, - {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:99b7920e7165be5a9e9a3a7f1b680f06f68ff0d0328ff4079e5163990d046767"}, - {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0dc49f42422163efb7e6f1df2636fe3db72713f6cd94688e339dbe33fe06d61d"}, - {file = "aiohttp-3.11.10-cp310-cp310-win32.whl", hash = "sha256:40d1c7a7f750b5648642586ba7206999650208dbe5afbcc5284bcec6579c9b91"}, - {file = "aiohttp-3.11.10-cp310-cp310-win_amd64.whl", hash = "sha256:68ff6f48b51bd78ea92b31079817aff539f6c8fc80b6b8d6ca347d7c02384e33"}, - {file = "aiohttp-3.11.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:77c4aa15a89847b9891abf97f3d4048f3c2d667e00f8a623c89ad2dccee6771b"}, - {file = "aiohttp-3.11.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:909af95a72cedbefe5596f0bdf3055740f96c1a4baa0dd11fd74ca4de0b4e3f1"}, - {file = "aiohttp-3.11.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:386fbe79863eb564e9f3615b959e28b222259da0c48fd1be5929ac838bc65683"}, - {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3de34936eb1a647aa919655ff8d38b618e9f6b7f250cc19a57a4bf7fd2062b6d"}, - {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c9527819b29cd2b9f52033e7fb9ff08073df49b4799c89cb5754624ecd98299"}, - {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a96e3e03300b41f261bbfd40dfdbf1c301e87eab7cd61c054b1f2e7c89b9e8"}, - {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98f5635f7b74bcd4f6f72fcd85bea2154b323a9f05226a80bc7398d0c90763b0"}, - {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:03b6002e20938fc6ee0918c81d9e776bebccc84690e2b03ed132331cca065ee5"}, - {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6362cc6c23c08d18ddbf0e8c4d5159b5df74fea1a5278ff4f2c79aed3f4e9f46"}, - {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3691ed7726fef54e928fe26344d930c0c8575bc968c3e239c2e1a04bd8cf7838"}, - {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31d5093d3acd02b31c649d3a69bb072d539d4c7659b87caa4f6d2bcf57c2fa2b"}, - {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8b3cf2dc0f0690a33f2d2b2cb15db87a65f1c609f53c37e226f84edb08d10f52"}, - {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:fbbaea811a2bba171197b08eea288b9402faa2bab2ba0858eecdd0a4105753a3"}, - {file = "aiohttp-3.11.10-cp311-cp311-win32.whl", hash = "sha256:4b2c7ac59c5698a7a8207ba72d9e9c15b0fc484a560be0788b31312c2c5504e4"}, - {file = "aiohttp-3.11.10-cp311-cp311-win_amd64.whl", hash = "sha256:974d3a2cce5fcfa32f06b13ccc8f20c6ad9c51802bb7f829eae8a1845c4019ec"}, - {file = "aiohttp-3.11.10-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b78f053a7ecfc35f0451d961dacdc671f4bcbc2f58241a7c820e9d82559844cf"}, - {file = "aiohttp-3.11.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ab7485222db0959a87fbe8125e233b5a6f01f4400785b36e8a7878170d8c3138"}, - {file = "aiohttp-3.11.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cf14627232dfa8730453752e9cdc210966490992234d77ff90bc8dc0dce361d5"}, - {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:076bc454a7e6fd646bc82ea7f98296be0b1219b5e3ef8a488afbdd8e81fbac50"}, - {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:482cafb7dc886bebeb6c9ba7925e03591a62ab34298ee70d3dd47ba966370d2c"}, - {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf3d1a519a324af764a46da4115bdbd566b3c73fb793ffb97f9111dbc684fc4d"}, - {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24213ba85a419103e641e55c27dc7ff03536c4873470c2478cce3311ba1eee7b"}, - {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b99acd4730ad1b196bfb03ee0803e4adac371ae8efa7e1cbc820200fc5ded109"}, - {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:14cdb5a9570be5a04eec2ace174a48ae85833c2aadc86de68f55541f66ce42ab"}, - {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7e97d622cb083e86f18317282084bc9fbf261801b0192c34fe4b1febd9f7ae69"}, - {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:012f176945af138abc10c4a48743327a92b4ca9adc7a0e078077cdb5dbab7be0"}, - {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44224d815853962f48fe124748227773acd9686eba6dc102578defd6fc99e8d9"}, - {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c87bf31b7fdab94ae3adbe4a48e711bfc5f89d21cf4c197e75561def39e223bc"}, - {file = "aiohttp-3.11.10-cp312-cp312-win32.whl", hash = "sha256:06a8e2ee1cbac16fe61e51e0b0c269400e781b13bcfc33f5425912391a542985"}, - {file = "aiohttp-3.11.10-cp312-cp312-win_amd64.whl", hash = "sha256:be2b516f56ea883a3e14dda17059716593526e10fb6303189aaf5503937db408"}, - {file = "aiohttp-3.11.10-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8cc5203b817b748adccb07f36390feb730b1bc5f56683445bfe924fc270b8816"}, - {file = "aiohttp-3.11.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ef359ebc6949e3a34c65ce20230fae70920714367c63afd80ea0c2702902ccf"}, - {file = "aiohttp-3.11.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9bca390cb247dbfaec3c664326e034ef23882c3f3bfa5fbf0b56cad0320aaca5"}, - {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:811f23b3351ca532af598405db1093f018edf81368e689d1b508c57dcc6b6a32"}, - {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddf5f7d877615f6a1e75971bfa5ac88609af3b74796ff3e06879e8422729fd01"}, - {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6ab29b8a0beb6f8eaf1e5049252cfe74adbaafd39ba91e10f18caeb0e99ffb34"}, - {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c49a76c1038c2dd116fa443eba26bbb8e6c37e924e2513574856de3b6516be99"}, - {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f3dc0e330575f5b134918976a645e79adf333c0a1439dcf6899a80776c9ab39"}, - {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:efb15a17a12497685304b2d976cb4939e55137df7b09fa53f1b6a023f01fcb4e"}, - {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:db1d0b28fcb7f1d35600150c3e4b490775251dea70f894bf15c678fdd84eda6a"}, - {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:15fccaf62a4889527539ecb86834084ecf6e9ea70588efde86e8bc775e0e7542"}, - {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:593c114a2221444f30749cc5e5f4012488f56bd14de2af44fe23e1e9894a9c60"}, - {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7852bbcb4d0d2f0c4d583f40c3bc750ee033265d80598d0f9cb6f372baa6b836"}, - {file = "aiohttp-3.11.10-cp313-cp313-win32.whl", hash = "sha256:65e55ca7debae8faaffee0ebb4b47a51b4075f01e9b641c31e554fd376595c6c"}, - {file = "aiohttp-3.11.10-cp313-cp313-win_amd64.whl", hash = "sha256:beb39a6d60a709ae3fb3516a1581777e7e8b76933bb88c8f4420d875bb0267c6"}, - {file = "aiohttp-3.11.10-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0580f2e12de2138f34debcd5d88894786453a76e98febaf3e8fe5db62d01c9bf"}, - {file = "aiohttp-3.11.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a55d2ad345684e7c3dd2c20d2f9572e9e1d5446d57200ff630e6ede7612e307f"}, - {file = "aiohttp-3.11.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04814571cb72d65a6899db6099e377ed00710bf2e3eafd2985166f2918beaf59"}, - {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e44a9a3c053b90c6f09b1bb4edd880959f5328cf63052503f892c41ea786d99f"}, - {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:502a1464ccbc800b4b1995b302efaf426e8763fadf185e933c2931df7db9a199"}, - {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:613e5169f8ae77b1933e42e418a95931fb4867b2991fc311430b15901ed67079"}, - {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cca22a61b7fe45da8fc73c3443150c3608750bbe27641fc7558ec5117b27fdf"}, - {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:86a5dfcc39309470bd7b68c591d84056d195428d5d2e0b5ccadfbaf25b026ebc"}, - {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:77ae58586930ee6b2b6f696c82cf8e78c8016ec4795c53e36718365f6959dc82"}, - {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:78153314f26d5abef3239b4a9af20c229c6f3ecb97d4c1c01b22c4f87669820c"}, - {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:98283b94cc0e11c73acaf1c9698dea80c830ca476492c0fe2622bd931f34b487"}, - {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:53bf2097e05c2accc166c142a2090e4c6fd86581bde3fd9b2d3f9e93dda66ac1"}, - {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c5532f0441fc09c119e1dca18fbc0687e64fbeb45aa4d6a87211ceaee50a74c4"}, - {file = "aiohttp-3.11.10-cp39-cp39-win32.whl", hash = "sha256:47ad15a65fb41c570cd0ad9a9ff8012489e68176e7207ec7b82a0940dddfd8be"}, - {file = "aiohttp-3.11.10-cp39-cp39-win_amd64.whl", hash = "sha256:c6b9e6d7e41656d78e37ce754813fa44b455c3d0d0dced2a047def7dc5570b74"}, - {file = "aiohttp-3.11.10.tar.gz", hash = "sha256:b1fc6b45010a8d0ff9e88f9f2418c6fd408c99c211257334aff41597ebece42e"}, + {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8"}, + {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5"}, + {file = "aiohttp-3.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c"}, + {file = "aiohttp-3.11.11-cp310-cp310-win32.whl", hash = "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745"}, + {file = "aiohttp-3.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773"}, + {file = "aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62"}, + {file = "aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e"}, + {file = "aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600"}, + {file = "aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5"}, + {file = "aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d"}, + {file = "aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226"}, + {file = "aiohttp-3.11.11-cp39-cp39-win32.whl", hash = "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3"}, + {file = "aiohttp-3.11.11-cp39-cp39-win_amd64.whl", hash = "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1"}, + {file = "aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e"}, ] [package.dependencies] @@ -142,13 +142,13 @@ speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] [[package]] name = "aiosignal" -version = "1.3.1" +version = "1.3.2" description = "aiosignal: a list of registered asynchronous callbacks" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, - {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, + {file = "aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5"}, + {file = "aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54"}, ] [package.dependencies] @@ -388,19 +388,19 @@ files = [ [[package]] name = "attrs" -version = "24.2.0" +version = "24.3.0" description = "Classes Without Boilerplate" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"}, - {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"}, + {file = "attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308"}, + {file = "attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff"}, ] [package.extras] benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] @@ -499,17 +499,17 @@ files = [ [[package]] name = "boto3" -version = "1.35.76" +version = "1.35.84" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.35.76-py3-none-any.whl", hash = "sha256:69458399f41f57a50770c8974796d96978bcca44915c260319696bb43e47dffd"}, - {file = "boto3-1.35.76.tar.gz", hash = "sha256:31ddcdb6f15dace2b68f6a0f11bdb58dd3ae79b8a3ccb174ff811ef0bbf938e0"}, + {file = "boto3-1.35.84-py3-none-any.whl", hash = "sha256:c94fc8023caf952f8740a48fc400521bba167f883cfa547d985c05fda7223f7a"}, + {file = "boto3-1.35.84.tar.gz", hash = "sha256:9f9bf72d92f7fdd546b974ffa45fa6715b9af7f5c00463e9d0f6ef9c95efe0c2"}, ] [package.dependencies] -botocore = ">=1.35.76,<1.36.0" +botocore = ">=1.35.84,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -518,13 +518,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.76" +version = "1.35.84" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.35.76-py3-none-any.whl", hash = "sha256:b4729d12d00267b3185628f83543917b6caae292385230ab464067621aa086af"}, - {file = "botocore-1.35.76.tar.gz", hash = "sha256:a75a42ae53395796b8300c5fefb2d65a8696dc40dc85e49cf3a769e0c0202b13"}, + {file = "botocore-1.35.84-py3-none-any.whl", hash = "sha256:b4dc2ac7f54ba959429e1debbd6c7c2fb2349baa1cd63803f0682f0773dbd077"}, + {file = "botocore-1.35.84.tar.gz", hash = "sha256:f86754882e04683e2e99a6a23377d0dd7f1fc2b2242844b2381dbe4dcd639301"}, ] [package.dependencies] @@ -592,13 +592,13 @@ ujson = ["ujson (>=5.7.0)"] [[package]] name = "certifi" -version = "2024.8.30" +version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, + {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] [[package]] @@ -1012,37 +1012,37 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "debugpy" -version = "1.8.9" +version = "1.8.11" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.9-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:cfe1e6c6ad7178265f74981edf1154ffce97b69005212fbc90ca22ddfe3d017e"}, - {file = "debugpy-1.8.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ada7fb65102a4d2c9ab62e8908e9e9f12aed9d76ef44880367bc9308ebe49a0f"}, - {file = "debugpy-1.8.9-cp310-cp310-win32.whl", hash = "sha256:c36856343cbaa448171cba62a721531e10e7ffb0abff838004701454149bc037"}, - {file = "debugpy-1.8.9-cp310-cp310-win_amd64.whl", hash = "sha256:17c5e0297678442511cf00a745c9709e928ea4ca263d764e90d233208889a19e"}, - {file = "debugpy-1.8.9-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:b74a49753e21e33e7cf030883a92fa607bddc4ede1aa4145172debc637780040"}, - {file = "debugpy-1.8.9-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62d22dacdb0e296966d7d74a7141aaab4bec123fa43d1a35ddcb39bf9fd29d70"}, - {file = "debugpy-1.8.9-cp311-cp311-win32.whl", hash = "sha256:8138efff315cd09b8dcd14226a21afda4ca582284bf4215126d87342bba1cc66"}, - {file = "debugpy-1.8.9-cp311-cp311-win_amd64.whl", hash = "sha256:ff54ef77ad9f5c425398efb150239f6fe8e20c53ae2f68367eba7ece1e96226d"}, - {file = "debugpy-1.8.9-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:957363d9a7a6612a37458d9a15e72d03a635047f946e5fceee74b50d52a9c8e2"}, - {file = "debugpy-1.8.9-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e565fc54b680292b418bb809f1386f17081d1346dca9a871bf69a8ac4071afe"}, - {file = "debugpy-1.8.9-cp312-cp312-win32.whl", hash = "sha256:3e59842d6c4569c65ceb3751075ff8d7e6a6ada209ceca6308c9bde932bcef11"}, - {file = "debugpy-1.8.9-cp312-cp312-win_amd64.whl", hash = "sha256:66eeae42f3137eb428ea3a86d4a55f28da9bd5a4a3d369ba95ecc3a92c1bba53"}, - {file = "debugpy-1.8.9-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:957ecffff80d47cafa9b6545de9e016ae8c9547c98a538ee96ab5947115fb3dd"}, - {file = "debugpy-1.8.9-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1efbb3ff61487e2c16b3e033bc8595aea578222c08aaf3c4bf0f93fadbd662ee"}, - {file = "debugpy-1.8.9-cp313-cp313-win32.whl", hash = "sha256:7c4d65d03bee875bcb211c76c1d8f10f600c305dbd734beaed4077e902606fee"}, - {file = "debugpy-1.8.9-cp313-cp313-win_amd64.whl", hash = "sha256:e46b420dc1bea64e5bbedd678148be512442bc589b0111bd799367cde051e71a"}, - {file = "debugpy-1.8.9-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:472a3994999fe6c0756945ffa359e9e7e2d690fb55d251639d07208dbc37caea"}, - {file = "debugpy-1.8.9-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:365e556a4772d7d0d151d7eb0e77ec4db03bcd95f26b67b15742b88cacff88e9"}, - {file = "debugpy-1.8.9-cp38-cp38-win32.whl", hash = "sha256:54a7e6d3014c408eb37b0b06021366ee985f1539e12fe49ca2ee0d392d9ceca5"}, - {file = "debugpy-1.8.9-cp38-cp38-win_amd64.whl", hash = "sha256:8e99c0b1cc7bf86d83fb95d5ccdc4ad0586d4432d489d1f54e4055bcc795f693"}, - {file = "debugpy-1.8.9-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:7e8b079323a56f719977fde9d8115590cb5e7a1cba2fcee0986ef8817116e7c1"}, - {file = "debugpy-1.8.9-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6953b335b804a41f16a192fa2e7851bdcfd92173cbb2f9f777bb934f49baab65"}, - {file = "debugpy-1.8.9-cp39-cp39-win32.whl", hash = "sha256:7e646e62d4602bb8956db88b1e72fe63172148c1e25c041e03b103a25f36673c"}, - {file = "debugpy-1.8.9-cp39-cp39-win_amd64.whl", hash = "sha256:3d9755e77a2d680ce3d2c5394a444cf42be4a592caaf246dbfbdd100ffcf7ae5"}, - {file = "debugpy-1.8.9-py2.py3-none-any.whl", hash = "sha256:cc37a6c9987ad743d9c3a14fa1b1a14b7e4e6041f9dd0c8abf8895fe7a97b899"}, - {file = "debugpy-1.8.9.zip", hash = "sha256:1339e14c7d980407248f09824d1b25ff5c5616651689f1e0f0e51bdead3ea13e"}, + {file = "debugpy-1.8.11-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:2b26fefc4e31ff85593d68b9022e35e8925714a10ab4858fb1b577a8a48cb8cd"}, + {file = "debugpy-1.8.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61bc8b3b265e6949855300e84dc93d02d7a3a637f2aec6d382afd4ceb9120c9f"}, + {file = "debugpy-1.8.11-cp310-cp310-win32.whl", hash = "sha256:c928bbf47f65288574b78518449edaa46c82572d340e2750889bbf8cd92f3737"}, + {file = "debugpy-1.8.11-cp310-cp310-win_amd64.whl", hash = "sha256:8da1db4ca4f22583e834dcabdc7832e56fe16275253ee53ba66627b86e304da1"}, + {file = "debugpy-1.8.11-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:85de8474ad53ad546ff1c7c7c89230db215b9b8a02754d41cb5a76f70d0be296"}, + {file = "debugpy-1.8.11-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ffc382e4afa4aee367bf413f55ed17bd91b191dcaf979890af239dda435f2a1"}, + {file = "debugpy-1.8.11-cp311-cp311-win32.whl", hash = "sha256:40499a9979c55f72f4eb2fc38695419546b62594f8af194b879d2a18439c97a9"}, + {file = "debugpy-1.8.11-cp311-cp311-win_amd64.whl", hash = "sha256:987bce16e86efa86f747d5151c54e91b3c1e36acc03ce1ddb50f9d09d16ded0e"}, + {file = "debugpy-1.8.11-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:84e511a7545d11683d32cdb8f809ef63fc17ea2a00455cc62d0a4dbb4ed1c308"}, + {file = "debugpy-1.8.11-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce291a5aca4985d82875d6779f61375e959208cdf09fcec40001e65fb0a54768"}, + {file = "debugpy-1.8.11-cp312-cp312-win32.whl", hash = "sha256:28e45b3f827d3bf2592f3cf7ae63282e859f3259db44ed2b129093ca0ac7940b"}, + {file = "debugpy-1.8.11-cp312-cp312-win_amd64.whl", hash = "sha256:44b1b8e6253bceada11f714acf4309ffb98bfa9ac55e4fce14f9e5d4484287a1"}, + {file = "debugpy-1.8.11-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:8988f7163e4381b0da7696f37eec7aca19deb02e500245df68a7159739bbd0d3"}, + {file = "debugpy-1.8.11-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c1f6a173d1140e557347419767d2b14ac1c9cd847e0b4c5444c7f3144697e4e"}, + {file = "debugpy-1.8.11-cp313-cp313-win32.whl", hash = "sha256:bb3b15e25891f38da3ca0740271e63ab9db61f41d4d8541745cfc1824252cb28"}, + {file = "debugpy-1.8.11-cp313-cp313-win_amd64.whl", hash = "sha256:d8768edcbeb34da9e11bcb8b5c2e0958d25218df7a6e56adf415ef262cd7b6d1"}, + {file = "debugpy-1.8.11-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:ad7efe588c8f5cf940f40c3de0cd683cc5b76819446abaa50dc0829a30c094db"}, + {file = "debugpy-1.8.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:189058d03a40103a57144752652b3ab08ff02b7595d0ce1f651b9acc3a3a35a0"}, + {file = "debugpy-1.8.11-cp38-cp38-win32.whl", hash = "sha256:32db46ba45849daed7ccf3f2e26f7a386867b077f39b2a974bb5c4c2c3b0a280"}, + {file = "debugpy-1.8.11-cp38-cp38-win_amd64.whl", hash = "sha256:116bf8342062246ca749013df4f6ea106f23bc159305843491f64672a55af2e5"}, + {file = "debugpy-1.8.11-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:654130ca6ad5de73d978057eaf9e582244ff72d4574b3e106fb8d3d2a0d32458"}, + {file = "debugpy-1.8.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23dc34c5e03b0212fa3c49a874df2b8b1b8fda95160bd79c01eb3ab51ea8d851"}, + {file = "debugpy-1.8.11-cp39-cp39-win32.whl", hash = "sha256:52d8a3166c9f2815bfae05f386114b0b2d274456980d41f320299a8d9a5615a7"}, + {file = "debugpy-1.8.11-cp39-cp39-win_amd64.whl", hash = "sha256:52c3cf9ecda273a19cc092961ee34eb9ba8687d67ba34cc7b79a521c1c64c4c0"}, + {file = "debugpy-1.8.11-py2.py3-none-any.whl", hash = "sha256:0e22f846f4211383e6a416d04b4c13ed174d24cc5d43f5fd52e7821d0ebc8920"}, + {file = "debugpy-1.8.11.tar.gz", hash = "sha256:6ad2688b69235c43b020e04fecccdf6a96c8943ca9c2fb340b8adc103c655e57"}, ] [[package]] @@ -1165,12 +1165,13 @@ files = [ [[package]] name = "editorconfig" -version = "0.12.4" +version = "0.17.0" description = "EditorConfig File Locator and Interpreter for Python" optional = false python-versions = "*" files = [ - {file = "EditorConfig-0.12.4.tar.gz", hash = "sha256:24857fa1793917dd9ccf0c7810a07e05404ce9b823521c7dce22a4fb5d125f80"}, + {file = "EditorConfig-0.17.0-py3-none-any.whl", hash = "sha256:fe491719c5f65959ec00b167d07740e7ffec9a3f362038c72b289330b9991dfc"}, + {file = "editorconfig-0.17.0.tar.gz", hash = "sha256:8739052279699840065d3a9f5c125d7d5a98daeefe53b0e5274261d77cb49aa2"}, ] [[package]] @@ -1434,61 +1435,61 @@ test = ["Faker (==2.0.0)", "blinker", "invoke (==2.2.0)", "mock (==3.0.5)", "pyt [[package]] name = "fonttools" -version = "4.55.2" +version = "4.55.3" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.55.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bef0f8603834643b1a6419d57902f18e7d950ec1a998fb70410635c598dc1a1e"}, - {file = "fonttools-4.55.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:944228b86d472612d3b48bcc83b31c25c2271e63fdc74539adfcfa7a96d487fb"}, - {file = "fonttools-4.55.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f0e55f5da594b85f269cfbecd2f6bd3e07d0abba68870bc3f34854de4fa4678"}, - {file = "fonttools-4.55.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b1a6e576db0c83c1b91925bf1363478c4bb968dbe8433147332fb5782ce6190"}, - {file = "fonttools-4.55.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:616368b15716781bc84df5c2191dc0540137aaef56c2771eb4b89b90933f347a"}, - {file = "fonttools-4.55.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7bbae4f3915225c2c37670da68e2bf18a21206060ad31dfb95fec91ef641caa7"}, - {file = "fonttools-4.55.2-cp310-cp310-win32.whl", hash = "sha256:8b02b10648d69d67a7eb055f4d3eedf4a85deb22fb7a19fbd9acbae7c7538199"}, - {file = "fonttools-4.55.2-cp310-cp310-win_amd64.whl", hash = "sha256:bbea0ab841113ac8e8edde067e099b7288ffc6ac2dded538b131c2c0595d5f77"}, - {file = "fonttools-4.55.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d34525e8141286fa976e14806639d32294bfb38d28bbdb5f6be9f46a1cd695a6"}, - {file = "fonttools-4.55.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ecd1c2b1c2ec46bb73685bc5473c72e16ed0930ef79bc2919ccadc43a99fb16"}, - {file = "fonttools-4.55.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9008438ad59e5a8e403a62fbefef2b2ff377eb3857d90a3f2a5f4d674ff441b2"}, - {file = "fonttools-4.55.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:131591ac8d7a47043aaf29581aba755ae151d46e49d2bf49608601efd71e8b4d"}, - {file = "fonttools-4.55.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4c83381c3e3e3d9caa25527c4300543578341f21aae89e4fbbb4debdda8d82a2"}, - {file = "fonttools-4.55.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42aca564b575252fd9954ed0d91d97a24de24289a16ce8ff74ed0bdf5ecebf11"}, - {file = "fonttools-4.55.2-cp311-cp311-win32.whl", hash = "sha256:c6457f650ebe15baa17fc06e256227f0a47f46f80f27ec5a0b00160de8dc2c13"}, - {file = "fonttools-4.55.2-cp311-cp311-win_amd64.whl", hash = "sha256:5cfa67414d7414442a5635ff634384101c54f53bb7b0e04aa6a61b013fcce194"}, - {file = "fonttools-4.55.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:18f082445b8fe5e91c53e6184f4c1c73f3f965c8bcc614c6cd6effd573ce6c1a"}, - {file = "fonttools-4.55.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c0f91adbbd706e8acd1db73e3e510118e62d0ffb651864567dccc5b2339f90"}, - {file = "fonttools-4.55.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d8ccce035320d63dba0c35f52499322f5531dbe85bba1514c7cea26297e4c54"}, - {file = "fonttools-4.55.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96e126df9615df214ec7f04bebcf60076297fbc10b75c777ce58b702d7708ffb"}, - {file = "fonttools-4.55.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:508ebb42956a7a931c4092dfa2d9b4ffd4f94cea09b8211199090d2bd082506b"}, - {file = "fonttools-4.55.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1b9de46ef7b683d50400abf9f1578eaceee271ff51c36bf4b7366f2be29f498"}, - {file = "fonttools-4.55.2-cp312-cp312-win32.whl", hash = "sha256:2df61d9fc15199cc86dad29f64dd686874a3a52dda0c2d8597d21f509f95c332"}, - {file = "fonttools-4.55.2-cp312-cp312-win_amd64.whl", hash = "sha256:d337ec087da8216a828574aa0525d869df0a2ac217a2efc1890974ddd1fbc5b9"}, - {file = "fonttools-4.55.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:10aff204e2edee1d312fa595c06f201adf8d528a3b659cfb34cd47eceaaa6a26"}, - {file = "fonttools-4.55.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:09fe922a3eff181fd07dd724cdb441fb6b9fc355fd1c0f1aa79aca60faf1fbdd"}, - {file = "fonttools-4.55.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:487e1e8b524143a799bda0169c48b44a23a6027c1bb1957d5a172a7d3a1dd704"}, - {file = "fonttools-4.55.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b1726872e09268bbedb14dc02e58b7ea31ecdd1204c6073eda4911746b44797"}, - {file = "fonttools-4.55.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6fc88cfb58b0cd7b48718c3e61dd0d0a3ee8e2c86b973342967ce09fbf1db6d4"}, - {file = "fonttools-4.55.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e857fe1859901ad8c5cab32e0eebc920adb09f413d2d73b74b677cf47b28590c"}, - {file = "fonttools-4.55.2-cp313-cp313-win32.whl", hash = "sha256:81ccd2b3a420b8050c7d9db3be0555d71662973b3ef2a1d921a2880b58957db8"}, - {file = "fonttools-4.55.2-cp313-cp313-win_amd64.whl", hash = "sha256:d559eb1744c7dcfa90ae60cb1a4b3595e898e48f4198738c321468c01180cd83"}, - {file = "fonttools-4.55.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6b5917ef79cac8300b88fd6113003fd01bbbbea2ea060a27b95d8f77cb4c65c2"}, - {file = "fonttools-4.55.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:663eba5615d6abaaf616432354eb7ce951d518e43404371bcc2b0694ef21e8d6"}, - {file = "fonttools-4.55.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:803d5cef5fc47f44f5084d154aa3d6f069bb1b60e32390c225f897fa19b0f939"}, - {file = "fonttools-4.55.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bc5f100de0173cc39102c0399bd6c3bd544bbdf224957933f10ee442d43cddd"}, - {file = "fonttools-4.55.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3d9bbc1e380fdaf04ad9eabd8e3e6a4301eaf3487940893e9fd98537ea2e283b"}, - {file = "fonttools-4.55.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:42a9afedff07b6f75aa0f39b5e49922ac764580ef3efce035ca30284b2ee65c8"}, - {file = "fonttools-4.55.2-cp38-cp38-win32.whl", hash = "sha256:f1c76f423f1a241df08f87614364dff6e0b7ce23c962c1b74bd995ec7c0dad13"}, - {file = "fonttools-4.55.2-cp38-cp38-win_amd64.whl", hash = "sha256:25062b6ca03464dd5179fc2040fb19e03391b7cc49b9cc4f879312e638605c5c"}, - {file = "fonttools-4.55.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d1100d8e665fe386a79cab59446992de881ea74d0d6c191bb988642692aa2421"}, - {file = "fonttools-4.55.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dbdc251c5e472e5ae6bc816f9b82718b8e93ff7992e7331d6cf3562b96aa268e"}, - {file = "fonttools-4.55.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0bf24d2b02dbc9376d795a63062632ff73e3e9e60c0229373f500aed7e86dd7"}, - {file = "fonttools-4.55.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4ff250ed4ff05015dfd9cf2adf7570c7a383ca80f4d9732ac484a5ed0d8453c"}, - {file = "fonttools-4.55.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44cf2a98aa661dbdeb8c03f5e405b074e2935196780bb729888639f5276067d9"}, - {file = "fonttools-4.55.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22ef222740eb89d189bf0612eb98fbae592c61d7efeac51bfbc2a1592d469557"}, - {file = "fonttools-4.55.2-cp39-cp39-win32.whl", hash = "sha256:93f439ca27e55f585e7aaa04a74990acd983b5f2245e41d6b79f0a8b44e684d8"}, - {file = "fonttools-4.55.2-cp39-cp39-win_amd64.whl", hash = "sha256:627cf10d6f5af5bec6324c18a2670f134c29e1b7dce3fb62e8ef88baa6cba7a9"}, - {file = "fonttools-4.55.2-py3-none-any.whl", hash = "sha256:8e2d89fbe9b08d96e22c7a81ec04a4e8d8439c31223e2dc6f2f9fc8ff14bdf9f"}, - {file = "fonttools-4.55.2.tar.gz", hash = "sha256:45947e7b3f9673f91df125d375eb57b9a23f2a603f438a1aebf3171bffa7a205"}, + {file = "fonttools-4.55.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1dcc07934a2165ccdc3a5a608db56fb3c24b609658a5b340aee4ecf3ba679dc0"}, + {file = "fonttools-4.55.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f7d66c15ba875432a2d2fb419523f5d3d347f91f48f57b8b08a2dfc3c39b8a3f"}, + {file = "fonttools-4.55.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27e4ae3592e62eba83cd2c4ccd9462dcfa603ff78e09110680a5444c6925d841"}, + {file = "fonttools-4.55.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62d65a3022c35e404d19ca14f291c89cc5890032ff04f6c17af0bd1927299674"}, + {file = "fonttools-4.55.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d342e88764fb201286d185093781bf6628bbe380a913c24adf772d901baa8276"}, + {file = "fonttools-4.55.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dd68c87a2bfe37c5b33bcda0fba39b65a353876d3b9006fde3adae31f97b3ef5"}, + {file = "fonttools-4.55.3-cp310-cp310-win32.whl", hash = "sha256:1bc7ad24ff98846282eef1cbeac05d013c2154f977a79886bb943015d2b1b261"}, + {file = "fonttools-4.55.3-cp310-cp310-win_amd64.whl", hash = "sha256:b54baf65c52952db65df39fcd4820668d0ef4766c0ccdf32879b77f7c804d5c5"}, + {file = "fonttools-4.55.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8c4491699bad88efe95772543cd49870cf756b019ad56294f6498982408ab03e"}, + {file = "fonttools-4.55.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5323a22eabddf4b24f66d26894f1229261021dacd9d29e89f7872dd8c63f0b8b"}, + {file = "fonttools-4.55.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5480673f599ad410695ca2ddef2dfefe9df779a9a5cda89503881e503c9c7d90"}, + {file = "fonttools-4.55.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da9da6d65cd7aa6b0f806556f4985bcbf603bf0c5c590e61b43aa3e5a0f822d0"}, + {file = "fonttools-4.55.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e894b5bd60d9f473bed7a8f506515549cc194de08064d829464088d23097331b"}, + {file = "fonttools-4.55.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:aee3b57643827e237ff6ec6d28d9ff9766bd8b21e08cd13bff479e13d4b14765"}, + {file = "fonttools-4.55.3-cp311-cp311-win32.whl", hash = "sha256:eb6ca911c4c17eb51853143624d8dc87cdcdf12a711fc38bf5bd21521e79715f"}, + {file = "fonttools-4.55.3-cp311-cp311-win_amd64.whl", hash = "sha256:6314bf82c54c53c71805318fcf6786d986461622dd926d92a465199ff54b1b72"}, + {file = "fonttools-4.55.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f9e736f60f4911061235603a6119e72053073a12c6d7904011df2d8fad2c0e35"}, + {file = "fonttools-4.55.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a8aa2c5e5b8b3bcb2e4538d929f6589a5c6bdb84fd16e2ed92649fb5454f11c"}, + {file = "fonttools-4.55.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07f8288aacf0a38d174445fc78377a97fb0b83cfe352a90c9d9c1400571963c7"}, + {file = "fonttools-4.55.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8d5e8916c0970fbc0f6f1bece0063363bb5857a7f170121a4493e31c3db3314"}, + {file = "fonttools-4.55.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ae3b6600565b2d80b7c05acb8e24d2b26ac407b27a3f2e078229721ba5698427"}, + {file = "fonttools-4.55.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:54153c49913f45065c8d9e6d0c101396725c5621c8aee744719300f79771d75a"}, + {file = "fonttools-4.55.3-cp312-cp312-win32.whl", hash = "sha256:827e95fdbbd3e51f8b459af5ea10ecb4e30af50221ca103bea68218e9615de07"}, + {file = "fonttools-4.55.3-cp312-cp312-win_amd64.whl", hash = "sha256:e6e8766eeeb2de759e862004aa11a9ea3d6f6d5ec710551a88b476192b64fd54"}, + {file = "fonttools-4.55.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a430178ad3e650e695167cb53242dae3477b35c95bef6525b074d87493c4bf29"}, + {file = "fonttools-4.55.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:529cef2ce91dc44f8e407cc567fae6e49a1786f2fefefa73a294704c415322a4"}, + {file = "fonttools-4.55.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e75f12c82127486fac2d8bfbf5bf058202f54bf4f158d367e41647b972342ca"}, + {file = "fonttools-4.55.3-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:859c358ebf41db18fb72342d3080bce67c02b39e86b9fbcf1610cca14984841b"}, + {file = "fonttools-4.55.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:546565028e244a701f73df6d8dd6be489d01617863ec0c6a42fa25bf45d43048"}, + {file = "fonttools-4.55.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:aca318b77f23523309eec4475d1fbbb00a6b133eb766a8bdc401faba91261abe"}, + {file = "fonttools-4.55.3-cp313-cp313-win32.whl", hash = "sha256:8c5ec45428edaa7022f1c949a632a6f298edc7b481312fc7dc258921e9399628"}, + {file = "fonttools-4.55.3-cp313-cp313-win_amd64.whl", hash = "sha256:11e5de1ee0d95af4ae23c1a138b184b7f06e0b6abacabf1d0db41c90b03d834b"}, + {file = "fonttools-4.55.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:caf8230f3e10f8f5d7593eb6d252a37caf58c480b19a17e250a63dad63834cf3"}, + {file = "fonttools-4.55.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b586ab5b15b6097f2fb71cafa3c98edfd0dba1ad8027229e7b1e204a58b0e09d"}, + {file = "fonttools-4.55.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8c2794ded89399cc2169c4d0bf7941247b8d5932b2659e09834adfbb01589aa"}, + {file = "fonttools-4.55.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf4fe7c124aa3f4e4c1940880156e13f2f4d98170d35c749e6b4f119a872551e"}, + {file = "fonttools-4.55.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:86721fbc389ef5cc1e2f477019e5069e8e4421e8d9576e9c26f840dbb04678de"}, + {file = "fonttools-4.55.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:89bdc5d88bdeec1b15af790810e267e8332d92561dce4f0748c2b95c9bdf3926"}, + {file = "fonttools-4.55.3-cp38-cp38-win32.whl", hash = "sha256:bc5dbb4685e51235ef487e4bd501ddfc49be5aede5e40f4cefcccabc6e60fb4b"}, + {file = "fonttools-4.55.3-cp38-cp38-win_amd64.whl", hash = "sha256:cd70de1a52a8ee2d1877b6293af8a2484ac82514f10b1c67c1c5762d38073e56"}, + {file = "fonttools-4.55.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bdcc9f04b36c6c20978d3f060e5323a43f6222accc4e7fcbef3f428e216d96af"}, + {file = "fonttools-4.55.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c3ca99e0d460eff46e033cd3992a969658c3169ffcd533e0a39c63a38beb6831"}, + {file = "fonttools-4.55.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22f38464daa6cdb7b6aebd14ab06609328fe1e9705bb0fcc7d1e69de7109ee02"}, + {file = "fonttools-4.55.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed63959d00b61959b035c7d47f9313c2c1ece090ff63afea702fe86de00dbed4"}, + {file = "fonttools-4.55.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5e8d657cd7326eeaba27de2740e847c6b39dde2f8d7cd7cc56f6aad404ddf0bd"}, + {file = "fonttools-4.55.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fb594b5a99943042c702c550d5494bdd7577f6ef19b0bc73877c948a63184a32"}, + {file = "fonttools-4.55.3-cp39-cp39-win32.whl", hash = "sha256:dc5294a3d5c84226e3dbba1b6f61d7ad813a8c0238fceea4e09aa04848c3d851"}, + {file = "fonttools-4.55.3-cp39-cp39-win_amd64.whl", hash = "sha256:aedbeb1db64496d098e6be92b2e63b5fac4e53b1b92032dfc6988e1ea9134a4d"}, + {file = "fonttools-4.55.3-py3-none-any.whl", hash = "sha256:f412604ccbeee81b091b420272841e5ec5ef68967a9790e80bffd0e30b8e2977"}, + {file = "fonttools-4.55.3.tar.gz", hash = "sha256:3983313c2a04d6cc1fe9251f8fc647754cf49a61dac6cb1e7249ae67afaafc45"}, ] [package.extras] @@ -1963,13 +1964,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "huggingface-hub" -version = "0.26.5" +version = "0.27.0" 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.26.5-py3-none-any.whl", hash = "sha256:fb7386090bbe892072e64b85f7c4479fd2d65eea5f2543327c970d5169e83924"}, - {file = "huggingface_hub-0.26.5.tar.gz", hash = "sha256:1008bd18f60bfb65e8dbc0a97249beeeaa8c99d3c2fa649354df9fa5a13ed83b"}, + {file = "huggingface_hub-0.27.0-py3-none-any.whl", hash = "sha256:8f2e834517f1f1ddf1ecc716f91b120d7333011b7485f665a9a412eacb1a2a81"}, + {file = "huggingface_hub-0.27.0.tar.gz", hash = "sha256:902cce1a1be5739f5589e560198a65a8edcfd3b830b1666f36e4b961f0454fac"}, ] [package.dependencies] @@ -2391,86 +2392,87 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jiter" -version = "0.8.0" +version = "0.8.2" description = "Fast iterable JSON parser." optional = false python-versions = ">=3.8" files = [ - {file = "jiter-0.8.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:dee4eeb293ffcd2c3b31ebab684dbf7f7b71fe198f8eddcdf3a042cc6e10205a"}, - {file = "jiter-0.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aad1e6e9b01cf0304dcee14db03e92e0073287a6297caf5caf2e9dbfea16a924"}, - {file = "jiter-0.8.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:504099fb7acdbe763e10690d560a25d4aee03d918d6a063f3a761d8a09fb833f"}, - {file = "jiter-0.8.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2373487caad7fe39581f588ab5c9262fc1ade078d448626fec93f4ffba528858"}, - {file = "jiter-0.8.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c341ecc3f9bccde952898b0c97c24f75b84b56a7e2f8bbc7c8e38cab0875a027"}, - {file = "jiter-0.8.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e48e7a336529b9419d299b70c358d4ebf99b8f4b847ed3f1000ec9f320e8c0c"}, - {file = "jiter-0.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5ee157a8afd2943be690db679f82fafb8d347a8342e8b9c34863de30c538d55"}, - {file = "jiter-0.8.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d7dceae3549b80087f913aad4acc2a7c1e0ab7cb983effd78bdc9c41cabdcf18"}, - {file = "jiter-0.8.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e29e9ecce53d396772590438214cac4ab89776f5e60bd30601f1050b34464019"}, - {file = "jiter-0.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fa1782f22d5f92c620153133f35a9a395d3f3823374bceddd3e7032e2fdfa0b1"}, - {file = "jiter-0.8.0-cp310-none-win32.whl", hash = "sha256:f754ef13b4e4f67a3bf59fe974ef4342523801c48bf422f720bd37a02a360584"}, - {file = "jiter-0.8.0-cp310-none-win_amd64.whl", hash = "sha256:796f750b65f5d605f5e7acaccc6b051675e60c41d7ac3eab40dbd7b5b81a290f"}, - {file = "jiter-0.8.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f6f4e645efd96b4690b9b6091dbd4e0fa2885ba5c57a0305c1916b75b4f30ff6"}, - {file = "jiter-0.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f61cf6d93c1ade9b8245c9f14b7900feadb0b7899dbe4aa8de268b705647df81"}, - {file = "jiter-0.8.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0396bc5cb1309c6dab085e70bb3913cdd92218315e47b44afe9eace68ee8adaa"}, - {file = "jiter-0.8.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:62d0e42ec5dc772bd8554a304358220be5d97d721c4648b23f3a9c01ccc2cb26"}, - {file = "jiter-0.8.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec4b711989860705733fc59fb8c41b2def97041cea656b37cf6c8ea8dee1c3f4"}, - {file = "jiter-0.8.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:859cc35bf304ab066d88f10a44a3251a9cd057fb11ec23e00be22206db878f4f"}, - {file = "jiter-0.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5000195921aa293b39b9b5bc959d7fa658e7f18f938c0e52732da8e3cc70a278"}, - {file = "jiter-0.8.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:36050284c0abde57aba34964d3920f3d6228211b65df7187059bb7c7f143759a"}, - {file = "jiter-0.8.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a88f608e050cfe45c48d771e86ecdbf5258314c883c986d4217cc79e1fb5f689"}, - {file = "jiter-0.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:646cf4237665b2e13b4159d8f26d53f59bc9f2e6e135e3a508a2e5dd26d978c6"}, - {file = "jiter-0.8.0-cp311-none-win32.whl", hash = "sha256:21fe5b8345db1b3023052b2ade9bb4d369417827242892051244af8fae8ba231"}, - {file = "jiter-0.8.0-cp311-none-win_amd64.whl", hash = "sha256:30c2161c5493acf6b6c3c909973fb64ae863747def01cc7574f3954e0a15042c"}, - {file = "jiter-0.8.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d91a52d8f49ada2672a4b808a0c5c25d28f320a2c9ca690e30ebd561eb5a1002"}, - {file = "jiter-0.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c38cf25cf7862f61410b7a49684d34eb3b5bcbd7ddaf4773eea40e0bd43de706"}, - {file = "jiter-0.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6189beb5c4b3117624be6b2e84545cff7611f5855d02de2d06ff68e316182be"}, - {file = "jiter-0.8.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e13fa849c0e30643554add089983caa82f027d69fad8f50acadcb21c462244ab"}, - {file = "jiter-0.8.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d7765ca159d0a58e8e0f8ca972cd6d26a33bc97b4480d0d2309856763807cd28"}, - {file = "jiter-0.8.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b0befe7c6e9fc867d5bed21bab0131dfe27d1fa5cd52ba2bced67da33730b7d"}, - {file = "jiter-0.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7d6363d4c6f1052b1d8b494eb9a72667c3ef5f80ebacfe18712728e85327000"}, - {file = "jiter-0.8.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a873e57009863eeac3e3969e4653f07031d6270d037d6224415074ac17e5505c"}, - {file = "jiter-0.8.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2582912473c0d9940791479fe1bf2976a34f212eb8e0a82ee9e645ac275c5d16"}, - {file = "jiter-0.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:646163201af42f55393ee6e8f6136b8df488253a6533f4230a64242ecbfe6048"}, - {file = "jiter-0.8.0-cp312-none-win32.whl", hash = "sha256:96e75c9abfbf7387cba89a324d2356d86d8897ac58c956017d062ad510832dae"}, - {file = "jiter-0.8.0-cp312-none-win_amd64.whl", hash = "sha256:ed6074552b4a32e047b52dad5ab497223721efbd0e9efe68c67749f094a092f7"}, - {file = "jiter-0.8.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:dd5e351cb9b3e676ec3360a85ea96def515ad2b83c8ae3a251ce84985a2c9a6f"}, - {file = "jiter-0.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba9f12b0f801ecd5ed0cec29041dc425d1050922b434314c592fc30d51022467"}, - {file = "jiter-0.8.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7ba461c3681728d556392e8ae56fb44a550155a24905f01982317b367c21dd4"}, - {file = "jiter-0.8.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a15ed47ab09576db560dbc5c2c5a64477535beb056cd7d997d5dd0f2798770e"}, - {file = "jiter-0.8.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cef55042816d0737142b0ec056c0356a5f681fb8d6aa8499b158e87098f4c6f8"}, - {file = "jiter-0.8.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:549f170215adeb5e866f10617c3d019d8eb4e6d4e3c6b724b3b8c056514a3487"}, - {file = "jiter-0.8.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f867edeb279d22020877640d2ea728de5817378c60a51be8af731a8a8f525306"}, - {file = "jiter-0.8.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aef8845f463093799db4464cee2aa59d61aa8edcb3762aaa4aacbec3f478c929"}, - {file = "jiter-0.8.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:d0d6e22e4062c3d3c1bf3594baa2f67fc9dcdda8275abad99e468e0c6540bc54"}, - {file = "jiter-0.8.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:079e62e64696241ac3f408e337aaac09137ed760ccf2b72b1094b48745c13641"}, - {file = "jiter-0.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74d2b56ed3da5760544df53b5f5c39782e68efb64dc3aa0bba4cc08815e6fae8"}, - {file = "jiter-0.8.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:798dafe108cba58a7bb0a50d4d5971f98bb7f3c974e1373e750de6eb21c1a329"}, - {file = "jiter-0.8.0-cp313-none-win32.whl", hash = "sha256:ca6d3064dfc743eb0d3d7539d89d4ba886957c717567adc72744341c1e3573c9"}, - {file = "jiter-0.8.0-cp313-none-win_amd64.whl", hash = "sha256:38caedda64fe1f04b06d7011fc15e86b3b837ed5088657bf778656551e3cd8f9"}, - {file = "jiter-0.8.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:bb5c8a0a8d081c338db22e5b8d53a89a121790569cbb85f7d3cfb1fe0fbe9836"}, - {file = "jiter-0.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:202dbe8970bfb166fab950eaab8f829c505730a0b33cc5e1cfb0a1c9dd56b2f9"}, - {file = "jiter-0.8.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9046812e5671fdcfb9ae02881fff1f6a14d484b7e8b3316179a372cdfa1e8026"}, - {file = "jiter-0.8.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e6ac56425023e52d65150918ae25480d0a1ce2a6bf5ea2097f66a2cc50f6d692"}, - {file = "jiter-0.8.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7dfcf97210c6eab9d2a1c6af15dd39e1d5154b96a7145d0a97fa1df865b7b834"}, - {file = "jiter-0.8.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4e3c8444d418686f78c9a547b9b90031faf72a0a1a46bfec7fb31edbd889c0d"}, - {file = "jiter-0.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6507011a299b7f578559084256405a8428875540d8d13530e00b688e41b09493"}, - {file = "jiter-0.8.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0aae4738eafdd34f0f25c2d3668ce9e8fa0d7cb75a2efae543c9a69aebc37323"}, - {file = "jiter-0.8.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5d782e790396b13f2a7b36bdcaa3736a33293bdda80a4bf1a3ce0cd5ef9f15"}, - {file = "jiter-0.8.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cc7f993bc2c4e03015445adbb16790c303282fce2e8d9dc3a3905b1d40e50564"}, - {file = "jiter-0.8.0-cp38-none-win32.whl", hash = "sha256:d4a8a6eda018a991fa58ef707dd51524055d11f5acb2f516d70b1be1d15ab39c"}, - {file = "jiter-0.8.0-cp38-none-win_amd64.whl", hash = "sha256:4cca948a3eda8ea24ed98acb0ee19dc755b6ad2e570ec85e1527d5167f91ff67"}, - {file = "jiter-0.8.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:ef89663678d8257063ce7c00d94638e05bd72f662c5e1eb0e07a172e6c1a9a9f"}, - {file = "jiter-0.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c402ddcba90b4cc71db3216e8330f4db36e0da2c78cf1d8a9c3ed8f272602a94"}, - {file = "jiter-0.8.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a6dfe795b7a173a9f8ba7421cdd92193d60c1c973bbc50dc3758a9ad0fa5eb6"}, - {file = "jiter-0.8.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ec29a31b9abd6be39453a2c45da067138a3005d65d2c0507c530e0f1fdcd9a4"}, - {file = "jiter-0.8.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a488f8c54bddc3ddefaf3bfd6de4a52c97fc265d77bc2dcc6ee540c17e8c342"}, - {file = "jiter-0.8.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aeb5561adf4d26ca0d01b5811b4d7b56a8986699a473d700757b4758ef787883"}, - {file = "jiter-0.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ab961858d7ad13132328517d29f121ae1b2d94502191d6bcf96bddcc8bb5d1c"}, - {file = "jiter-0.8.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a207e718d114d23acf0850a2174d290f42763d955030d9924ffa4227dbd0018f"}, - {file = "jiter-0.8.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:733bc9dc8ff718a0ae4695239e9268eb93e88b73b367dfac3ec227d8ce2f1e77"}, - {file = "jiter-0.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1ec27299e22d05e13a06e460bf7f75f26f9aaa0e0fb7d060f40e88df1d81faa"}, - {file = "jiter-0.8.0-cp39-none-win32.whl", hash = "sha256:e8dbfcb46553e6661d3fc1f33831598fcddf73d0f67834bce9fc3e9ebfe5c439"}, - {file = "jiter-0.8.0-cp39-none-win_amd64.whl", hash = "sha256:af2ce2487b3a93747e2cb5150081d4ae1e5874fce5924fc1a12e9e768e489ad8"}, - {file = "jiter-0.8.0.tar.gz", hash = "sha256:86fee98b569d4cc511ff2e3ec131354fafebd9348a487549c31ad371ae730310"}, + {file = "jiter-0.8.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:ca8577f6a413abe29b079bc30f907894d7eb07a865c4df69475e868d73e71c7b"}, + {file = "jiter-0.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b25bd626bde7fb51534190c7e3cb97cee89ee76b76d7585580e22f34f5e3f393"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c826a221851a8dc028eb6d7d6429ba03184fa3c7e83ae01cd6d3bd1d4bd17d"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d35c864c2dff13dfd79fb070fc4fc6235d7b9b359efe340e1261deb21b9fcb66"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f557c55bc2b7676e74d39d19bcb8775ca295c7a028246175d6a8b431e70835e5"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:580ccf358539153db147e40751a0b41688a5ceb275e6f3e93d91c9467f42b2e3"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af102d3372e917cffce49b521e4c32c497515119dc7bd8a75665e90a718bbf08"}, + {file = "jiter-0.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cadcc978f82397d515bb2683fc0d50103acff2a180552654bb92d6045dec2c49"}, + {file = "jiter-0.8.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ba5bdf56969cad2019d4e8ffd3f879b5fdc792624129741d3d83fc832fef8c7d"}, + {file = "jiter-0.8.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3b94a33a241bee9e34b8481cdcaa3d5c2116f575e0226e421bed3f7a6ea71cff"}, + {file = "jiter-0.8.2-cp310-cp310-win32.whl", hash = "sha256:6e5337bf454abddd91bd048ce0dca5134056fc99ca0205258766db35d0a2ea43"}, + {file = "jiter-0.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:4a9220497ca0cb1fe94e3f334f65b9b5102a0b8147646118f020d8ce1de70105"}, + {file = "jiter-0.8.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2dd61c5afc88a4fda7d8b2cf03ae5947c6ac7516d32b7a15bf4b49569a5c076b"}, + {file = "jiter-0.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a6c710d657c8d1d2adbbb5c0b0c6bfcec28fd35bd6b5f016395f9ac43e878a15"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9584de0cd306072635fe4b89742bf26feae858a0683b399ad0c2509011b9dc0"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5a90a923338531b7970abb063cfc087eebae6ef8ec8139762007188f6bc69a9f"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21974d246ed0181558087cd9f76e84e8321091ebfb3a93d4c341479a736f099"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32475a42b2ea7b344069dc1e81445cfc00b9d0e3ca837f0523072432332e9f74"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b9931fd36ee513c26b5bf08c940b0ac875de175341cbdd4fa3be109f0492586"}, + {file = "jiter-0.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0820f4a3a59ddced7fce696d86a096d5cc48d32a4183483a17671a61edfddc"}, + {file = "jiter-0.8.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8ffc86ae5e3e6a93765d49d1ab47b6075a9c978a2b3b80f0f32628f39caa0c88"}, + {file = "jiter-0.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5127dc1abd809431172bc3fbe8168d6b90556a30bb10acd5ded41c3cfd6f43b6"}, + {file = "jiter-0.8.2-cp311-cp311-win32.whl", hash = "sha256:66227a2c7b575720c1871c8800d3a0122bb8ee94edb43a5685aa9aceb2782d44"}, + {file = "jiter-0.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:cde031d8413842a1e7501e9129b8e676e62a657f8ec8166e18a70d94d4682855"}, + {file = "jiter-0.8.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e6ec2be506e7d6f9527dae9ff4b7f54e68ea44a0ef6b098256ddf895218a2f8f"}, + {file = "jiter-0.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76e324da7b5da060287c54f2fabd3db5f76468006c811831f051942bf68c9d44"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:180a8aea058f7535d1c84183c0362c710f4750bef66630c05f40c93c2b152a0f"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:025337859077b41548bdcbabe38698bcd93cfe10b06ff66617a48ff92c9aec60"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecff0dc14f409599bbcafa7e470c00b80f17abc14d1405d38ab02e4b42e55b57"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffd9fee7d0775ebaba131f7ca2e2d83839a62ad65e8e02fe2bd8fc975cedeb9e"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14601dcac4889e0a1c75ccf6a0e4baf70dbc75041e51bcf8d0e9274519df6887"}, + {file = "jiter-0.8.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92249669925bc1c54fcd2ec73f70f2c1d6a817928480ee1c65af5f6b81cdf12d"}, + {file = "jiter-0.8.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e725edd0929fa79f8349ab4ec7f81c714df51dc4e991539a578e5018fa4a7152"}, + {file = "jiter-0.8.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bf55846c7b7a680eebaf9c3c48d630e1bf51bdf76c68a5f654b8524335b0ad29"}, + {file = "jiter-0.8.2-cp312-cp312-win32.whl", hash = "sha256:7efe4853ecd3d6110301665a5178b9856be7e2a9485f49d91aa4d737ad2ae49e"}, + {file = "jiter-0.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:83c0efd80b29695058d0fd2fa8a556490dbce9804eac3e281f373bbc99045f6c"}, + {file = "jiter-0.8.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ca1f08b8e43dc3bd0594c992fb1fd2f7ce87f7bf0d44358198d6da8034afdf84"}, + {file = "jiter-0.8.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5672a86d55416ccd214c778efccf3266b84f87b89063b582167d803246354be4"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58dc9bc9767a1101f4e5e22db1b652161a225874d66f0e5cb8e2c7d1c438b587"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:37b2998606d6dadbb5ccda959a33d6a5e853252d921fec1792fc902351bb4e2c"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ab9a87f3784eb0e098f84a32670cfe4a79cb6512fd8f42ae3d0709f06405d18"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:79aec8172b9e3c6d05fd4b219d5de1ac616bd8da934107325a6c0d0e866a21b6"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:711e408732d4e9a0208008e5892c2966b485c783cd2d9a681f3eb147cf36c7ef"}, + {file = "jiter-0.8.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:653cf462db4e8c41995e33d865965e79641ef45369d8a11f54cd30888b7e6ff1"}, + {file = "jiter-0.8.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:9c63eaef32b7bebac8ebebf4dabebdbc6769a09c127294db6babee38e9f405b9"}, + {file = "jiter-0.8.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:eb21aaa9a200d0a80dacc7a81038d2e476ffe473ffdd9c91eb745d623561de05"}, + {file = "jiter-0.8.2-cp313-cp313-win32.whl", hash = "sha256:789361ed945d8d42850f919342a8665d2dc79e7e44ca1c97cc786966a21f627a"}, + {file = "jiter-0.8.2-cp313-cp313-win_amd64.whl", hash = "sha256:ab7f43235d71e03b941c1630f4b6e3055d46b6cb8728a17663eaac9d8e83a865"}, + {file = "jiter-0.8.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b426f72cd77da3fec300ed3bc990895e2dd6b49e3bfe6c438592a3ba660e41ca"}, + {file = "jiter-0.8.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2dd880785088ff2ad21ffee205e58a8c1ddabc63612444ae41e5e4b321b39c0"}, + {file = "jiter-0.8.2-cp313-cp313t-win_amd64.whl", hash = "sha256:3ac9f578c46f22405ff7f8b1f5848fb753cc4b8377fbec8470a7dc3997ca7566"}, + {file = "jiter-0.8.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:9e1fa156ee9454642adb7e7234a383884452532bc9d53d5af2d18d98ada1d79c"}, + {file = "jiter-0.8.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0cf5dfa9956d96ff2efb0f8e9c7d055904012c952539a774305aaaf3abdf3d6c"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e52bf98c7e727dd44f7c4acb980cb988448faeafed8433c867888268899b298b"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a2ecaa3c23e7a7cf86d00eda3390c232f4d533cd9ddea4b04f5d0644faf642c5"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:08d4c92bf480e19fc3f2717c9ce2aa31dceaa9163839a311424b6862252c943e"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:99d9a1eded738299ba8e106c6779ce5c3893cffa0e32e4485d680588adae6db8"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d20be8b7f606df096e08b0b1b4a3c6f0515e8dac296881fe7461dfa0fb5ec817"}, + {file = "jiter-0.8.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d33f94615fcaf872f7fd8cd98ac3b429e435c77619777e8a449d9d27e01134d1"}, + {file = "jiter-0.8.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:317b25e98a35ffec5c67efe56a4e9970852632c810d35b34ecdd70cc0e47b3b6"}, + {file = "jiter-0.8.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fc9043259ee430ecd71d178fccabd8c332a3bf1e81e50cae43cc2b28d19e4cb7"}, + {file = "jiter-0.8.2-cp38-cp38-win32.whl", hash = "sha256:fc5adda618205bd4678b146612ce44c3cbfdee9697951f2c0ffdef1f26d72b63"}, + {file = "jiter-0.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:cd646c827b4f85ef4a78e4e58f4f5854fae0caf3db91b59f0d73731448a970c6"}, + {file = "jiter-0.8.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e41e75344acef3fc59ba4765df29f107f309ca9e8eace5baacabd9217e52a5ee"}, + {file = "jiter-0.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f22b16b35d5c1df9dfd58843ab2cd25e6bf15191f5a236bed177afade507bfc"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7200b8f7619d36aa51c803fd52020a2dfbea36ffec1b5e22cab11fd34d95a6d"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:70bf4c43652cc294040dbb62256c83c8718370c8b93dd93d934b9a7bf6c4f53c"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f9d471356dc16f84ed48768b8ee79f29514295c7295cb41e1133ec0b2b8d637d"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:859e8eb3507894093d01929e12e267f83b1d5f6221099d3ec976f0c995cb6bd9"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaa58399c01db555346647a907b4ef6d4f584b123943be6ed5588c3f2359c9f4"}, + {file = "jiter-0.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8f2d5ed877f089862f4c7aacf3a542627c1496f972a34d0474ce85ee7d939c27"}, + {file = "jiter-0.8.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:03c9df035d4f8d647f8c210ddc2ae0728387275340668fb30d2421e17d9a0841"}, + {file = "jiter-0.8.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8bd2a824d08d8977bb2794ea2682f898ad3d8837932e3a74937e93d62ecbb637"}, + {file = "jiter-0.8.2-cp39-cp39-win32.whl", hash = "sha256:ca29b6371ebc40e496995c94b988a101b9fbbed48a51190a4461fcb0a68b4a36"}, + {file = "jiter-0.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:1c0dfbd1be3cbefc7510102370d86e35d1d53e5a93d48519688b1bf0f761160a"}, + {file = "jiter-0.8.2.tar.gz", hash = "sha256:cd73d3e740666d0e639f678adb176fad25c1bcbdae88d8d7b857e1783bb4212d"}, ] [[package]] @@ -2628,20 +2630,20 @@ files = [ [package.dependencies] attrs = ">=22.2.0" -fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} +fqdn = {version = "*", optional = true, markers = "extra == \"format\""} +idna = {version = "*", optional = true, markers = "extra == \"format\""} +isoduration = {version = "*", optional = true, markers = "extra == \"format\""} +jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format\""} jsonschema-specifications = ">=2023.03.6" referencing = ">=0.28.4" -rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format\""} rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} rfc3987 = {version = "*", optional = true, markers = "extra == \"format\""} rpds-py = ">=0.7.1" -uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +uri-template = {version = "*", optional = true, markers = "extra == \"format\""} webcolors = [ - {version = ">=1.11", optional = true, markers = "extra == \"format\""}, {version = ">=24.6.0", optional = true, markers = "extra == \"format-nongpl\""}, + {version = ">=1.11", optional = true, markers = "extra == \"format\""}, ] [package.extras] @@ -2760,13 +2762,13 @@ test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout" [[package]] name = "jupyter-events" -version = "0.10.0" +version = "0.11.0" description = "Jupyter Event System library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, - {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"}, + {file = "jupyter_events-0.11.0-py3-none-any.whl", hash = "sha256:36399b41ce1ca45fe8b8271067d6a140ffa54cec4028e95491c93b78a855cacf"}, + {file = "jupyter_events-0.11.0.tar.gz", hash = "sha256:c0bc56a37aac29c1fbc3bcfbddb8c8c49533f9cf11f1c4e6adadba936574ab90"}, ] [package.dependencies] @@ -2780,7 +2782,7 @@ traitlets = ">=5.3" [package.extras] cli = ["click", "rich"] -docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"] +docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme (>=0.16)", "sphinx (>=8)", "sphinxcontrib-spelling"] test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] [[package]] @@ -2855,13 +2857,13 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> [[package]] name = "jupyterlab" -version = "4.3.1" +version = "4.3.4" description = "JupyterLab computational environment" optional = false python-versions = ">=3.8" files = [ - {file = "jupyterlab-4.3.1-py3-none-any.whl", hash = "sha256:2d9a1c305bc748e277819a17a5d5e22452e533e835f4237b2f30f3b0e491e01f"}, - {file = "jupyterlab-4.3.1.tar.gz", hash = "sha256:a4a338327556443521731d82f2a6ccf926df478914ca029616621704d47c3c65"}, + {file = "jupyterlab-4.3.4-py3-none-any.whl", hash = "sha256:b754c2601c5be6adf87cb5a1d8495d653ffb945f021939f77776acaa94dae952"}, + {file = "jupyterlab-4.3.4.tar.gz", hash = "sha256:f0bb9b09a04766e3423cccc2fc23169aa2ffedcdf8713e9e0fb33cac0b6859d0"}, ] [package.dependencies] @@ -2876,7 +2878,7 @@ jupyter-server = ">=2.4.0,<3" jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2" packaging = "*" -setuptools = ">=40.1.0" +setuptools = ">=40.8.0" tomli = {version = ">=1.2.2", markers = "python_version < \"3.11\""} tornado = ">=6.2.0" traitlets = "*" @@ -3232,13 +3234,13 @@ requests = "*" [[package]] name = "litellm" -version = "1.54.1" +version = "1.55.4" description = "Library to easily interface with LLM API providers" optional = false python-versions = "!=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*,>=3.8" files = [ - {file = "litellm-1.54.1-py3-none-any.whl", hash = "sha256:d8e60d4a5e8decb0234a1e8c20351c904aec561fb4025df7df3d0d7ea81ca442"}, - {file = "litellm-1.54.1.tar.gz", hash = "sha256:b5a8fc99160fab0699b9258457432b3975499218ffcf1b515709808b2ce5a2d7"}, + {file = "litellm-1.55.4-py3-none-any.whl", hash = "sha256:ee608133854487d2fd985d98b2c8675dffdb5cb7fa90ed08380082f064a36ec5"}, + {file = "litellm-1.55.4.tar.gz", hash = "sha256:b464fe06863f0cf67a3974cb0465283eb5ac9d711838f7f5964d83804249f3c0"}, ] [package.dependencies] @@ -3541,52 +3543,52 @@ files = [ [[package]] name = "matplotlib" -version = "3.9.3" +version = "3.9.4" description = "Python plotting package" optional = false python-versions = ">=3.9" files = [ - {file = "matplotlib-3.9.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:41b016e3be4e740b66c79a031a0a6e145728dbc248142e751e8dab4f3188ca1d"}, - {file = "matplotlib-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e0143975fc2a6d7136c97e19c637321288371e8f09cff2564ecd73e865ea0b9"}, - {file = "matplotlib-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f459c8ee2c086455744723628264e43c884be0c7d7b45d84b8cd981310b4815"}, - {file = "matplotlib-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:687df7ceff57b8f070d02b4db66f75566370e7ae182a0782b6d3d21b0d6917dc"}, - {file = "matplotlib-3.9.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:edd14cf733fdc4f6e6fe3f705af97676a7e52859bf0044aa2c84e55be739241c"}, - {file = "matplotlib-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:1c40c244221a1adbb1256692b1133c6fb89418df27bf759a31a333e7912a4010"}, - {file = "matplotlib-3.9.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:cf2a60daf6cecff6828bc608df00dbc794380e7234d2411c0ec612811f01969d"}, - {file = "matplotlib-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:213d6dc25ce686516208d8a3e91120c6a4fdae4a3e06b8505ced5b716b50cc04"}, - {file = "matplotlib-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c52f48eb75fcc119a4fdb68ba83eb5f71656999420375df7c94cc68e0e14686e"}, - {file = "matplotlib-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3c93796b44fa111049b88a24105e947f03c01966b5c0cc782e2ee3887b790a3"}, - {file = "matplotlib-3.9.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cd1077b9a09b16d8c3c7075a8add5ffbfe6a69156a57e290c800ed4d435bef1d"}, - {file = "matplotlib-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:c96eeeb8c68b662c7747f91a385688d4b449687d29b691eff7068a4602fe6dc4"}, - {file = "matplotlib-3.9.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0a361bd5583bf0bcc08841df3c10269617ee2a36b99ac39d455a767da908bbbc"}, - {file = "matplotlib-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e14485bb1b83eeb3d55b6878f9560240981e7bbc7a8d4e1e8c38b9bd6ec8d2de"}, - {file = "matplotlib-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a8d279f78844aad213c4935c18f8292a9432d51af2d88bca99072c903948045"}, - {file = "matplotlib-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6c12514329ac0d03128cf1dcceb335f4fbf7c11da98bca68dca8dcb983153a9"}, - {file = "matplotlib-3.9.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6e9de2b390d253a508dd497e9b5579f3a851f208763ed67fdca5dc0c3ea6849c"}, - {file = "matplotlib-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d796272408f8567ff7eaa00eb2856b3a00524490e47ad505b0b4ca6bb8a7411f"}, - {file = "matplotlib-3.9.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:203d18df84f5288973b2d56de63d4678cc748250026ca9e1ad8f8a0fd8a75d83"}, - {file = "matplotlib-3.9.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b651b0d3642991259109dc0351fc33ad44c624801367bb8307be9bfc35e427ad"}, - {file = "matplotlib-3.9.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66d7b171fecf96940ce069923a08ba3df33ef542de82c2ff4fe8caa8346fa95a"}, - {file = "matplotlib-3.9.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be0ba61f6ff2e6b68e4270fb63b6813c9e7dec3d15fc3a93f47480444fd72f0"}, - {file = "matplotlib-3.9.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d6b2e8856dec3a6db1ae51aec85c82223e834b228c1d3228aede87eee2b34f9"}, - {file = "matplotlib-3.9.3-cp313-cp313-win_amd64.whl", hash = "sha256:90a85a004fefed9e583597478420bf904bb1a065b0b0ee5b9d8d31b04b0f3f70"}, - {file = "matplotlib-3.9.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3119b2f16de7f7b9212ba76d8fe6a0e9f90b27a1e04683cd89833a991682f639"}, - {file = "matplotlib-3.9.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:87ad73763d93add1b6c1f9fcd33af662fd62ed70e620c52fcb79f3ac427cf3a6"}, - {file = "matplotlib-3.9.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:026bdf3137ab6022c866efa4813b6bbeddc2ed4c9e7e02f0e323a7bca380dfa0"}, - {file = "matplotlib-3.9.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:760a5e89ebbb172989e8273024a1024b0f084510b9105261b3b00c15e9c9f006"}, - {file = "matplotlib-3.9.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a42b9dc42de2cfe357efa27d9c50c7833fc5ab9b2eb7252ccd5d5f836a84e1e4"}, - {file = "matplotlib-3.9.3-cp313-cp313t-win_amd64.whl", hash = "sha256:e0fcb7da73fbf67b5f4bdaa57d85bb585a4e913d4a10f3e15b32baea56a67f0a"}, - {file = "matplotlib-3.9.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:031b7f5b8e595cc07def77ec5b58464e9bb67dc5760be5d6f26d9da24892481d"}, - {file = "matplotlib-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9fa6e193c14d6944e0685cdb527cb6b38b0e4a518043e7212f214113af7391da"}, - {file = "matplotlib-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e6eefae6effa0c35bbbc18c25ee6e0b1da44d2359c3cd526eb0c9e703cf055d"}, - {file = "matplotlib-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d3e5c7a99bd28afb957e1ae661323b0800d75b419f24d041ed1cc5d844a764"}, - {file = "matplotlib-3.9.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816a966d5d376bf24c92af8f379e78e67278833e4c7cbc9fa41872eec629a060"}, - {file = "matplotlib-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fb0b37c896172899a4a93d9442ffdc6f870165f59e05ce2e07c6fded1c15749"}, - {file = "matplotlib-3.9.3-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f2a4ea08e6876206d511365b0bc234edc813d90b930be72c3011bbd7898796f"}, - {file = "matplotlib-3.9.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9b081dac96ab19c54fd8558fac17c9d2c9cb5cc4656e7ed3261ddc927ba3e2c5"}, - {file = "matplotlib-3.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a0a63cb8404d1d1f94968ef35738900038137dab8af836b6c21bb6f03d75465"}, - {file = "matplotlib-3.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:896774766fd6be4571a43bc2fcbcb1dcca0807e53cab4a5bf88c4aa861a08e12"}, - {file = "matplotlib-3.9.3.tar.gz", hash = "sha256:cd5dbbc8e25cad5f706845c4d100e2c8b34691b412b93717ce38d8ae803bcfa5"}, + {file = "matplotlib-3.9.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:c5fdd7abfb706dfa8d307af64a87f1a862879ec3cd8d0ec8637458f0885b9c50"}, + {file = "matplotlib-3.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d89bc4e85e40a71d1477780366c27fb7c6494d293e1617788986f74e2a03d7ff"}, + {file = "matplotlib-3.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ddf9f3c26aae695c5daafbf6b94e4c1a30d6cd617ba594bbbded3b33a1fcfa26"}, + {file = "matplotlib-3.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18ebcf248030173b59a868fda1fe42397253f6698995b55e81e1f57431d85e50"}, + {file = "matplotlib-3.9.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:974896ec43c672ec23f3f8c648981e8bc880ee163146e0312a9b8def2fac66f5"}, + {file = "matplotlib-3.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:4598c394ae9711cec135639374e70871fa36b56afae17bdf032a345be552a88d"}, + {file = "matplotlib-3.9.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d4dd29641d9fb8bc4492420c5480398dd40a09afd73aebe4eb9d0071a05fbe0c"}, + {file = "matplotlib-3.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30e5b22e8bcfb95442bf7d48b0d7f3bdf4a450cbf68986ea45fca3d11ae9d099"}, + {file = "matplotlib-3.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bb0030d1d447fd56dcc23b4c64a26e44e898f0416276cac1ebc25522e0ac249"}, + {file = "matplotlib-3.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aca90ed222ac3565d2752b83dbb27627480d27662671e4d39da72e97f657a423"}, + {file = "matplotlib-3.9.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a181b2aa2906c608fcae72f977a4a2d76e385578939891b91c2550c39ecf361e"}, + {file = "matplotlib-3.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:1f6882828231eca17f501c4dcd98a05abb3f03d157fbc0769c6911fe08b6cfd3"}, + {file = "matplotlib-3.9.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:dfc48d67e6661378a21c2983200a654b72b5c5cdbd5d2cf6e5e1ece860f0cc70"}, + {file = "matplotlib-3.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:47aef0fab8332d02d68e786eba8113ffd6f862182ea2999379dec9e237b7e483"}, + {file = "matplotlib-3.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fba1f52c6b7dc764097f52fd9ab627b90db452c9feb653a59945de16752e965f"}, + {file = "matplotlib-3.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:173ac3748acaac21afcc3fa1633924609ba1b87749006bc25051c52c422a5d00"}, + {file = "matplotlib-3.9.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320edea0cadc07007765e33f878b13b3738ffa9745c5f707705692df70ffe0e0"}, + {file = "matplotlib-3.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a4a4cfc82330b27042a7169533da7991e8789d180dd5b3daeaee57d75cd5a03b"}, + {file = "matplotlib-3.9.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:37eeffeeca3c940985b80f5b9a7b95ea35671e0e7405001f249848d2b62351b6"}, + {file = "matplotlib-3.9.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3e7465ac859ee4abcb0d836137cd8414e7bb7ad330d905abced457217d4f0f45"}, + {file = "matplotlib-3.9.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4c12302c34afa0cf061bea23b331e747e5e554b0fa595c96e01c7b75bc3b858"}, + {file = "matplotlib-3.9.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b8c97917f21b75e72108b97707ba3d48f171541a74aa2a56df7a40626bafc64"}, + {file = "matplotlib-3.9.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0229803bd7e19271b03cb09f27db76c918c467aa4ce2ae168171bc67c3f508df"}, + {file = "matplotlib-3.9.4-cp313-cp313-win_amd64.whl", hash = "sha256:7c0d8ef442ebf56ff5e206f8083d08252ee738e04f3dc88ea882853a05488799"}, + {file = "matplotlib-3.9.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a04c3b00066a688834356d196136349cb32f5e1003c55ac419e91585168b88fb"}, + {file = "matplotlib-3.9.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:04c519587f6c210626741a1e9a68eefc05966ede24205db8982841826af5871a"}, + {file = "matplotlib-3.9.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:308afbf1a228b8b525fcd5cec17f246bbbb63b175a3ef6eb7b4d33287ca0cf0c"}, + {file = "matplotlib-3.9.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddb3b02246ddcffd3ce98e88fed5b238bc5faff10dbbaa42090ea13241d15764"}, + {file = "matplotlib-3.9.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8a75287e9cb9eee48cb79ec1d806f75b29c0fde978cb7223a1f4c5848d696041"}, + {file = "matplotlib-3.9.4-cp313-cp313t-win_amd64.whl", hash = "sha256:488deb7af140f0ba86da003e66e10d55ff915e152c78b4b66d231638400b1965"}, + {file = "matplotlib-3.9.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3c3724d89a387ddf78ff88d2a30ca78ac2b4c89cf37f2db4bd453c34799e933c"}, + {file = "matplotlib-3.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d5f0a8430ffe23d7e32cfd86445864ccad141797f7d25b7c41759a5b5d17cfd7"}, + {file = "matplotlib-3.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bb0141a21aef3b64b633dc4d16cbd5fc538b727e4958be82a0e1c92a234160e"}, + {file = "matplotlib-3.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57aa235109e9eed52e2c2949db17da185383fa71083c00c6c143a60e07e0888c"}, + {file = "matplotlib-3.9.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b18c600061477ccfdd1e6fd050c33d8be82431700f3452b297a56d9ed7037abb"}, + {file = "matplotlib-3.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:ef5f2d1b67d2d2145ff75e10f8c008bfbf71d45137c4b648c87193e7dd053eac"}, + {file = "matplotlib-3.9.4-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:44e0ed786d769d85bc787b0606a53f2d8d2d1d3c8a2608237365e9121c1a338c"}, + {file = "matplotlib-3.9.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:09debb9ce941eb23ecdbe7eab972b1c3e0276dcf01688073faff7b0f61d6c6ca"}, + {file = "matplotlib-3.9.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcc53cf157a657bfd03afab14774d54ba73aa84d42cfe2480c91bd94873952db"}, + {file = "matplotlib-3.9.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ad45da51be7ad02387801fd154ef74d942f49fe3fcd26a64c94842ba7ec0d865"}, + {file = "matplotlib-3.9.4.tar.gz", hash = "sha256:1e00e8be7393cbdc6fedfa8a6fba02cf3e83814b285db1c60b906a023ba41bc3"}, ] [package.dependencies] @@ -3602,7 +3604,7 @@ pyparsing = ">=2.3.1" python-dateutil = ">=2.7" [package.extras] -dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6,!=2.13.3)", "setuptools (>=64)", "setuptools_scm (>=7)"] +dev = ["meson-python (>=0.13.1,<0.17.0)", "numpy (>=1.25)", "pybind11 (>=2.6,!=2.13.3)", "setuptools (>=64)", "setuptools_scm (>=7)"] [[package]] name = "matplotlib-inline" @@ -4072,26 +4074,26 @@ twitter = ["twython"] [[package]] name = "notebook" -version = "7.0.7" +version = "7.3.1" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" optional = false python-versions = ">=3.8" files = [ - {file = "notebook-7.0.7-py3-none-any.whl", hash = "sha256:289b606d7e173f75a18beb1406ef411b43f97f7a9c55ba03efa3622905a62346"}, - {file = "notebook-7.0.7.tar.gz", hash = "sha256:3bcff00c17b3ac142ef5f436d50637d936b274cfa0b41f6ac0175363de9b4e09"}, + {file = "notebook-7.3.1-py3-none-any.whl", hash = "sha256:212e1486b2230fe22279043f33c7db5cf9a01d29feb063a85cb139747b7c9483"}, + {file = "notebook-7.3.1.tar.gz", hash = "sha256:84381c2a82d867517fd25b86e986dae1fe113a70b98f03edff9b94e499fec8fa"}, ] [package.dependencies] jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.0.2,<5" -jupyterlab-server = ">=2.22.1,<3" +jupyterlab = ">=4.3.2,<4.4" +jupyterlab-server = ">=2.27.1,<3" notebook-shim = ">=0.2,<0.3" tornado = ">=6.2.0" [package.extras] dev = ["hatch", "pre-commit"] docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.22.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] +test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] [[package]] name = "notebook-shim" @@ -4254,13 +4256,13 @@ tests = ["coverage", "pytest", "unittest-templates"] [[package]] name = "openai" -version = "1.57.1" +version = "1.58.1" description = "The official Python library for the openai API" optional = false python-versions = ">=3.8" files = [ - {file = "openai-1.57.1-py3-none-any.whl", hash = "sha256:3865686c927e93492d1145938d4a24b634951531c4b2769d43ca5dbd4b25d8fd"}, - {file = "openai-1.57.1.tar.gz", hash = "sha256:a95f22e04ab3df26e64a15d958342265e802314131275908b3b3e36f8c5d4377"}, + {file = "openai-1.58.1-py3-none-any.whl", hash = "sha256:e2910b1170a6b7f88ef491ac3a42c387f08bd3db533411f7ee391d166571d63c"}, + {file = "openai-1.58.1.tar.gz", hash = "sha256:f5a035fd01e141fc743f4b0e02c41ca49be8fab0866d3b67f5f29b4f4d3c0973"}, ] [package.dependencies] @@ -4275,6 +4277,7 @@ typing-extensions = ">=4.11,<5" [package.extras] datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"] +realtime = ["websockets (>=13,<15)"] [[package]] name = "openpyxl" @@ -4888,18 +4891,18 @@ files = [ [[package]] name = "pydantic" -version = "2.10.3" +version = "2.10.4" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.10.3-py3-none-any.whl", hash = "sha256:be04d85bbc7b65651c5f8e6b9976ed9c6f41782a55524cef079a34a0bb82144d"}, - {file = "pydantic-2.10.3.tar.gz", hash = "sha256:cb5ac360ce894ceacd69c403187900a02c4b20b693a9dd1d643e1effab9eadf9"}, + {file = "pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d"}, + {file = "pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.27.1" +pydantic-core = "2.27.2" typing-extensions = ">=4.12.2" [package.extras] @@ -4908,111 +4911,111 @@ timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.27.1" +version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71a5e35c75c021aaf400ac048dacc855f000bdfed91614b4a726f7432f1f3d6a"}, - {file = "pydantic_core-2.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f82d068a2d6ecfc6e054726080af69a6764a10015467d7d7b9f66d6ed5afa23b"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:121ceb0e822f79163dd4699e4c54f5ad38b157084d97b34de8b232bcaad70278"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4603137322c18eaf2e06a4495f426aa8d8388940f3c457e7548145011bb68e05"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a33cd6ad9017bbeaa9ed78a2e0752c5e250eafb9534f308e7a5f7849b0b1bfb4"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15cc53a3179ba0fcefe1e3ae50beb2784dede4003ad2dfd24f81bba4b23a454f"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45d9c5eb9273aa50999ad6adc6be5e0ecea7e09dbd0d31bd0c65a55a2592ca08"}, - {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bf7b66ce12a2ac52d16f776b31d16d91033150266eb796967a7e4621707e4f6"}, - {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:655d7dd86f26cb15ce8a431036f66ce0318648f8853d709b4167786ec2fa4807"}, - {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:5556470f1a2157031e676f776c2bc20acd34c1990ca5f7e56f1ebf938b9ab57c"}, - {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f69ed81ab24d5a3bd93861c8c4436f54afdf8e8cc421562b0c7504cf3be58206"}, - {file = "pydantic_core-2.27.1-cp310-none-win32.whl", hash = "sha256:f5a823165e6d04ccea61a9f0576f345f8ce40ed533013580e087bd4d7442b52c"}, - {file = "pydantic_core-2.27.1-cp310-none-win_amd64.whl", hash = "sha256:57866a76e0b3823e0b56692d1a0bf722bffb324839bb5b7226a7dbd6c9a40b17"}, - {file = "pydantic_core-2.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac3b20653bdbe160febbea8aa6c079d3df19310d50ac314911ed8cc4eb7f8cb8"}, - {file = "pydantic_core-2.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a5a8e19d7c707c4cadb8c18f5f60c843052ae83c20fa7d44f41594c644a1d330"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f7059ca8d64fea7f238994c97d91f75965216bcbe5f695bb44f354893f11d52"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bed0f8a0eeea9fb72937ba118f9db0cb7e90773462af7962d382445f3005e5a4"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3cb37038123447cf0f3ea4c74751f6a9d7afef0eb71aa07bf5f652b5e6a132c"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84286494f6c5d05243456e04223d5a9417d7f443c3b76065e75001beb26f88de"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acc07b2cfc5b835444b44a9956846b578d27beeacd4b52e45489e93276241025"}, - {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4fefee876e07a6e9aad7a8c8c9f85b0cdbe7df52b8a9552307b09050f7512c7e"}, - {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:258c57abf1188926c774a4c94dd29237e77eda19462e5bb901d88adcab6af919"}, - {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:35c14ac45fcfdf7167ca76cc80b2001205a8d5d16d80524e13508371fb8cdd9c"}, - {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d1b26e1dff225c31897696cab7d4f0a315d4c0d9e8666dbffdb28216f3b17fdc"}, - {file = "pydantic_core-2.27.1-cp311-none-win32.whl", hash = "sha256:2cdf7d86886bc6982354862204ae3b2f7f96f21a3eb0ba5ca0ac42c7b38598b9"}, - {file = "pydantic_core-2.27.1-cp311-none-win_amd64.whl", hash = "sha256:3af385b0cee8df3746c3f406f38bcbfdc9041b5c2d5ce3e5fc6637256e60bbc5"}, - {file = "pydantic_core-2.27.1-cp311-none-win_arm64.whl", hash = "sha256:81f2ec23ddc1b476ff96563f2e8d723830b06dceae348ce02914a37cb4e74b89"}, - {file = "pydantic_core-2.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9cbd94fc661d2bab2bc702cddd2d3370bbdcc4cd0f8f57488a81bcce90c7a54f"}, - {file = "pydantic_core-2.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f8c4718cd44ec1580e180cb739713ecda2bdee1341084c1467802a417fe0f02"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15aae984e46de8d376df515f00450d1522077254ef6b7ce189b38ecee7c9677c"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ba5e3963344ff25fc8c40da90f44b0afca8cfd89d12964feb79ac1411a260ac"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:992cea5f4f3b29d6b4f7f1726ed8ee46c8331c6b4eed6db5b40134c6fe1768bb"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0325336f348dbee6550d129b1627cb8f5351a9dc91aad141ffb96d4937bd9529"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7597c07fbd11515f654d6ece3d0e4e5093edc30a436c63142d9a4b8e22f19c35"}, - {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3bbd5d8cc692616d5ef6fbbbd50dbec142c7e6ad9beb66b78a96e9c16729b089"}, - {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:dc61505e73298a84a2f317255fcc72b710b72980f3a1f670447a21efc88f8381"}, - {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:e1f735dc43da318cad19b4173dd1ffce1d84aafd6c9b782b3abc04a0d5a6f5bb"}, - {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f4e5658dbffe8843a0f12366a4c2d1c316dbe09bb4dfbdc9d2d9cd6031de8aae"}, - {file = "pydantic_core-2.27.1-cp312-none-win32.whl", hash = "sha256:672ebbe820bb37988c4d136eca2652ee114992d5d41c7e4858cdd90ea94ffe5c"}, - {file = "pydantic_core-2.27.1-cp312-none-win_amd64.whl", hash = "sha256:66ff044fd0bb1768688aecbe28b6190f6e799349221fb0de0e6f4048eca14c16"}, - {file = "pydantic_core-2.27.1-cp312-none-win_arm64.whl", hash = "sha256:9a3b0793b1bbfd4146304e23d90045f2a9b5fd5823aa682665fbdaf2a6c28f3e"}, - {file = "pydantic_core-2.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f216dbce0e60e4d03e0c4353c7023b202d95cbaeff12e5fd2e82ea0a66905073"}, - {file = "pydantic_core-2.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a2e02889071850bbfd36b56fd6bc98945e23670773bc7a76657e90e6b6603c08"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b0e23f119b2b456d07ca91b307ae167cc3f6c846a7b169fca5326e32fdc6cf"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:764be71193f87d460a03f1f7385a82e226639732214b402f9aa61f0d025f0737"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c00666a3bd2f84920a4e94434f5974d7bbc57e461318d6bb34ce9cdbbc1f6b2"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ccaa88b24eebc0f849ce0a4d09e8a408ec5a94afff395eb69baf868f5183107"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c65af9088ac534313e1963443d0ec360bb2b9cba6c2909478d22c2e363d98a51"}, - {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:206b5cf6f0c513baffaeae7bd817717140770c74528f3e4c3e1cec7871ddd61a"}, - {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:062f60e512fc7fff8b8a9d680ff0ddaaef0193dba9fa83e679c0c5f5fbd018bc"}, - {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:a0697803ed7d4af5e4c1adf1670af078f8fcab7a86350e969f454daf598c4960"}, - {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:58ca98a950171f3151c603aeea9303ef6c235f692fe555e883591103da709b23"}, - {file = "pydantic_core-2.27.1-cp313-none-win32.whl", hash = "sha256:8065914ff79f7eab1599bd80406681f0ad08f8e47c880f17b416c9f8f7a26d05"}, - {file = "pydantic_core-2.27.1-cp313-none-win_amd64.whl", hash = "sha256:ba630d5e3db74c79300d9a5bdaaf6200172b107f263c98a0539eeecb857b2337"}, - {file = "pydantic_core-2.27.1-cp313-none-win_arm64.whl", hash = "sha256:45cf8588c066860b623cd11c4ba687f8d7175d5f7ef65f7129df8a394c502de5"}, - {file = "pydantic_core-2.27.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5897bec80a09b4084aee23f9b73a9477a46c3304ad1d2d07acca19723fb1de62"}, - {file = "pydantic_core-2.27.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0165ab2914379bd56908c02294ed8405c252250668ebcb438a55494c69f44ab"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b9af86e1d8e4cfc82c2022bfaa6f459381a50b94a29e95dcdda8442d6d83864"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f6c8a66741c5f5447e047ab0ba7a1c61d1e95580d64bce852e3df1f895c4067"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a42d6a8156ff78981f8aa56eb6394114e0dedb217cf8b729f438f643608cbcd"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64c65f40b4cd8b0e049a8edde07e38b476da7e3aaebe63287c899d2cff253fa5"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdcf339322a3fae5cbd504edcefddd5a50d9ee00d968696846f089b4432cf78"}, - {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf99c8404f008750c846cb4ac4667b798a9f7de673ff719d705d9b2d6de49c5f"}, - {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f1edcea27918d748c7e5e4d917297b2a0ab80cad10f86631e488b7cddf76a36"}, - {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:159cac0a3d096f79ab6a44d77a961917219707e2a130739c64d4dd46281f5c2a"}, - {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:029d9757eb621cc6e1848fa0b0310310de7301057f623985698ed7ebb014391b"}, - {file = "pydantic_core-2.27.1-cp38-none-win32.whl", hash = "sha256:a28af0695a45f7060e6f9b7092558a928a28553366519f64083c63a44f70e618"}, - {file = "pydantic_core-2.27.1-cp38-none-win_amd64.whl", hash = "sha256:2d4567c850905d5eaaed2f7a404e61012a51caf288292e016360aa2b96ff38d4"}, - {file = "pydantic_core-2.27.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e9386266798d64eeb19dd3677051f5705bf873e98e15897ddb7d76f477131967"}, - {file = "pydantic_core-2.27.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4228b5b646caa73f119b1ae756216b59cc6e2267201c27d3912b592c5e323b60"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3dfe500de26c52abe0477dde16192ac39c98f05bf2d80e76102d394bd13854"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aee66be87825cdf72ac64cb03ad4c15ffef4143dbf5c113f64a5ff4f81477bf9"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b748c44bb9f53031c8cbc99a8a061bc181c1000c60a30f55393b6e9c45cc5bd"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ca038c7f6a0afd0b2448941b6ef9d5e1949e999f9e5517692eb6da58e9d44be"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e0bd57539da59a3e4671b90a502da9a28c72322a4f17866ba3ac63a82c4498e"}, - {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac6c2c45c847bbf8f91930d88716a0fb924b51e0c6dad329b793d670ec5db792"}, - {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b94d4ba43739bbe8b0ce4262bcc3b7b9f31459ad120fb595627eaeb7f9b9ca01"}, - {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:00e6424f4b26fe82d44577b4c842d7df97c20be6439e8e685d0d715feceb9fb9"}, - {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:38de0a70160dd97540335b7ad3a74571b24f1dc3ed33f815f0880682e6880131"}, - {file = "pydantic_core-2.27.1-cp39-none-win32.whl", hash = "sha256:7ccebf51efc61634f6c2344da73e366c75e735960b5654b63d7e6f69a5885fa3"}, - {file = "pydantic_core-2.27.1-cp39-none-win_amd64.whl", hash = "sha256:a57847b090d7892f123726202b7daa20df6694cbd583b67a592e856bff603d6c"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3fa80ac2bd5856580e242dbc202db873c60a01b20309c8319b5c5986fbe53ce6"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d950caa237bb1954f1b8c9227b5065ba6875ac9771bb8ec790d956a699b78676"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e4216e64d203e39c62df627aa882f02a2438d18a5f21d7f721621f7a5d3611d"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a3d637bd387c41d46b002f0e49c52642281edacd2740e5a42f7017feea3f2c"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:161c27ccce13b6b0c8689418da3885d3220ed2eae2ea5e9b2f7f3d48f1d52c27"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:19910754e4cc9c63bc1c7f6d73aa1cfee82f42007e407c0f413695c2f7ed777f"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e173486019cc283dc9778315fa29a363579372fe67045e971e89b6365cc035ed"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:af52d26579b308921b73b956153066481f064875140ccd1dfd4e77db89dbb12f"}, - {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:981fb88516bd1ae8b0cbbd2034678a39dedc98752f264ac9bc5839d3923fa04c"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5fde892e6c697ce3e30c61b239330fc5d569a71fefd4eb6512fc6caec9dd9e2f"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:816f5aa087094099fff7edabb5e01cc370eb21aa1a1d44fe2d2aefdfb5599b31"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c10c309e18e443ddb108f0ef64e8729363adbfd92d6d57beec680f6261556f3"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98476c98b02c8e9b2eec76ac4156fd006628b1b2d0ef27e548ffa978393fd154"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3027001c28434e7ca5a6e1e527487051136aa81803ac812be51802150d880dd"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7699b1df36a48169cdebda7ab5a2bac265204003f153b4bd17276153d997670a"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1c39b07d90be6b48968ddc8c19e7585052088fd7ec8d568bb31ff64c70ae3c97"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:46ccfe3032b3915586e469d4972973f893c0a2bb65669194a5bdea9bacc088c2"}, - {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:62ba45e21cf6571d7f716d903b5b7b6d2617e2d5d67c0923dc47b9d41369f840"}, - {file = "pydantic_core-2.27.1.tar.gz", hash = "sha256:62a763352879b84aa31058fc931884055fd75089cccbd9d58bb6afd01141b235"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, + {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, ] [package.dependencies] @@ -5067,19 +5070,19 @@ extra = ["pygments (>=2.12)"] [[package]] name = "pymupdf" -version = "1.25.0" +version = "1.25.1" description = "A high performance Python library for data extraction, analysis, conversion & manipulation of PDF (and other) documents." optional = false python-versions = ">=3.9" files = [ - {file = "pymupdf-1.25.0-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d12a4a7d4456b2c09afb674428be2021b87a3c4afbae7f717d5d7e805a30a989"}, - {file = "pymupdf-1.25.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:227ea293734b92fc1f49a01ffebe0f3d212bc0ec3be7e2db172088b8eaff5a4a"}, - {file = "pymupdf-1.25.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2e0eea2fcd7cbf84c8a18ec6744d9f92b81552df2974e40498baf41ec0dc557b"}, - {file = "pymupdf-1.25.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:62b8673a2348c1b63874d2b1e93ee29e66892e7ca8311df9c7f4a9aa1d89caed"}, - {file = "pymupdf-1.25.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e9d9e15af0fe389e15d605574f953df304d6037ce7cb4dca8b7cdec34d0694a3"}, - {file = "pymupdf-1.25.0-cp39-abi3-win32.whl", hash = "sha256:cada9ebc14ae99253639e9d752f2e1cb8a62af813626c4391c62d39c41f8a43a"}, - {file = "pymupdf-1.25.0-cp39-abi3-win_amd64.whl", hash = "sha256:148800b9b14f2f48b5fc8f9213aeb94e272f1af4b533deeabe0e561d3bd334bf"}, - {file = "pymupdf-1.25.0.tar.gz", hash = "sha256:9e5a33816e4b85ed6a01545cada2b866fc280a3b6478bb8e19c364532adf6692"}, + {file = "pymupdf-1.25.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:793f9f6d51029e97851c711b3f6d9fe912313d95a306fbe8b1866f301d0e2bd3"}, + {file = "pymupdf-1.25.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:15e6f4013ad0a029a2221920f9d2081f56dc43259dabfdf5cad7fbf1cee4b5a7"}, + {file = "pymupdf-1.25.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a39afbd80381f43e30d6eb2ec4613f465f507ac2b76070abdd2da8724f32ef36"}, + {file = "pymupdf-1.25.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b63f8e9e65b0bda48f9217efd4d2a8c6d7a739dd28baf460c1ae78439b9af489"}, + {file = "pymupdf-1.25.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a687bd387589e30abd810a78a23341f57f43fa16a4d8d8c0b870bb6d89607343"}, + {file = "pymupdf-1.25.1-cp39-abi3-win32.whl", hash = "sha256:fc7dbc1aa9e298a4c81084e389c9623c26fcaa232c71efaa073af150069e2221"}, + {file = "pymupdf-1.25.1-cp39-abi3-win_amd64.whl", hash = "sha256:e2b0b73c0aab0f863e5132c93cfa4607e8129feb1afa3d544b2cf7f172c50b5a"}, + {file = "pymupdf-1.25.1.tar.gz", hash = "sha256:6725bec0f37c2380d926f792c262693c926af7cc1aa5aa2b8207e771867f015a"}, ] [[package]] @@ -5279,24 +5282,30 @@ cli = ["click (>=5.0)"] [[package]] name = "python-json-logger" -version = "2.0.7" -description = "A python library adding a json log formatter" +version = "3.2.1" +description = "JSON Log Formatter for the Python Logging Package" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"}, - {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"}, + {file = "python_json_logger-3.2.1-py3-none-any.whl", hash = "sha256:cdc17047eb5374bd311e748b42f99d71223f3b0e186f4206cc5d52aefe85b090"}, + {file = "python_json_logger-3.2.1.tar.gz", hash = "sha256:8eb0554ea17cb75b05d2848bc14fb02fbdbd9d6972120781b974380bfa162008"}, ] +[package.dependencies] +typing_extensions = {version = "*", markers = "python_version < \"3.10\""} + +[package.extras] +dev = ["backports.zoneinfo", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec", "msgspec-python313-pre", "mypy", "orjson", "pylint", "pytest", "tzdata", "validate-pyproject[all]"] + [[package]] name = "python-multipart" -version = "0.0.19" +version = "0.0.20" description = "A streaming multipart parser for Python" optional = true python-versions = ">=3.8" files = [ - {file = "python_multipart-0.0.19-py3-none-any.whl", hash = "sha256:f8d5b0b9c618575bf9df01c684ded1d94a338839bdd8223838afacfb4bb2082d"}, - {file = "python_multipart-0.0.19.tar.gz", hash = "sha256:905502ef39050557b7a6af411f454bc19526529ca46ae6831508438890ce12cc"}, + {file = "python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104"}, + {file = "python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13"}, ] [[package]] @@ -5625,13 +5634,13 @@ rdflib-jsonld = "0.6.1" [[package]] name = "recipe-scrapers" -version = "15.3.2" +version = "15.3.3" description = "Python package, scraping recipes from all over the internet" optional = true python-versions = ">=3.9" files = [ - {file = "recipe_scrapers-15.3.2-py3-none-any.whl", hash = "sha256:4fc361512b899fefbcf1426e769880e909edf4d4ab875fcb670a98f3ce8a7c21"}, - {file = "recipe_scrapers-15.3.2.tar.gz", hash = "sha256:434dfee1ff5769f168f1bef979f89e17b6bb60b0501577971f54c13fc1809387"}, + {file = "recipe_scrapers-15.3.3-py3-none-any.whl", hash = "sha256:e3092190ff81d79992bb3fd373c6d1ac7dff5d8be033d219ff6eb46bff8a37d3"}, + {file = "recipe_scrapers-15.3.3.tar.gz", hash = "sha256:9bd41de3da0769eae6fa8a211a99db630fd283873eae6b518f51d27836c034f9"}, ] [package.dependencies] @@ -5640,8 +5649,12 @@ extruct = ">=0.17.0" isodate = ">=0.6.1" [package.extras] -dev = ["coverage (>=7.4.4)", "importlib-metadata (>=4.6)", "types-beautifulsoup4 (>=4.12.0)"] +all = ["recipe_scrapers[dev,docs,linters,online,tests]"] +dev = ["recipe-scrapers[docs,linters,tests]"] +docs = ["markdown-exec (>=1.10.0)", "mkdocs (>=1.6.1)", "mkdocs-material (>=9.5.48)", "mkdocstrings (>=0.27.0)", "mkdocstrings-python (>=1.12.2)"] +linters = ["black (==24.10.0)", "flake8 (==7.1.1)", "mypy (==1.13.0)", "pep8-naming (==0.14.1)", "pre-commit (==4.0.1)", "types-beautifulsoup4", "types-requests"] online = ["requests (>=2.31.0)"] +tests = ["coverage (>=7.6.9)", "importlib-metadata (>=4.6)", "unittest-parallel (>=1.7.0)"] [[package]] name = "referencing" @@ -7149,13 +7162,13 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "uvicorn" -version = "0.32.1" +version = "0.34.0" description = "The lightning-fast ASGI server." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "uvicorn-0.32.1-py3-none-any.whl", hash = "sha256:82ad92fd58da0d12af7482ecdb5f2470a04c9c9a53ced65b9bbb4a205377602e"}, - {file = "uvicorn-0.32.1.tar.gz", hash = "sha256:ee9519c246a72b1c084cea8d3b44ed6026e78a4a309cbedae9c37e4cb9fbb175"}, + {file = "uvicorn-0.34.0-py3-none-any.whl", hash = "sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4"}, + {file = "uvicorn-0.34.0.tar.gz", hash = "sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9"}, ] [package.dependencies] From af485d7d686dac89fc1c953235680f6d9c46d1a7 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Wed, 18 Dec 2024 17:17:25 -0500 Subject: [PATCH 02/21] Rename micronutrient template to mic --- src/ontogpt/templates/{micronutrient.py => mic.py} | 2 +- src/ontogpt/templates/{micronutrient.yaml => mic.yaml} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/ontogpt/templates/{micronutrient.py => mic.py} (99%) rename src/ontogpt/templates/{micronutrient.yaml => mic.yaml} (100%) diff --git a/src/ontogpt/templates/micronutrient.py b/src/ontogpt/templates/mic.py similarity index 99% rename from src/ontogpt/templates/micronutrient.py rename to src/ontogpt/templates/mic.py index 6703d9cec..ada0c93ce 100644 --- a/src/ontogpt/templates/micronutrient.py +++ b/src/ontogpt/templates/mic.py @@ -84,7 +84,7 @@ def __contains__(self, key:str) -> bool: 'prefix_reference': 'http://w3id.org/ontogpt/micronutrient'}, 'rdf': {'prefix_prefix': 'rdf', 'prefix_reference': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'}}, - 'source_file': 'src/ontogpt/templates/micronutrient.yaml', + 'source_file': 'src/ontogpt/templates/mic.yaml', 'title': 'Food Extraction Template'} ) class NullDataOptions(str, Enum): diff --git a/src/ontogpt/templates/micronutrient.yaml b/src/ontogpt/templates/mic.yaml similarity index 100% rename from src/ontogpt/templates/micronutrient.yaml rename to src/ontogpt/templates/mic.yaml From 880f6f7ef15df5d272be0d6982982eecea582615 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Wed, 18 Dec 2024 17:36:02 -0500 Subject: [PATCH 03/21] Revise MIC tempalate to extract nutrient to disease rels --- src/ontogpt/templates/mic.py | 107 ++++++++++++++++----------------- src/ontogpt/templates/mic.yaml | 78 +++++++++++++++--------- 2 files changed, 102 insertions(+), 83 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index ada0c93ce..ef61d5d28 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -63,15 +63,18 @@ def __contains__(self, key:str) -> bool: return key in self.root -linkml_meta = LinkMLMeta({'default_prefix': 'micronutrient', +linkml_meta = LinkMLMeta({'default_prefix': 'mic', 'default_range': 'string', 'description': 'A template for micronutrient information from text, including ' 'its participation in biochemical pathways and relationships ' - 'to genes and diseases.', - 'id': 'http://w3id.org/ontogpt/micronutrient', + 'to genes and diseases. Intended for use with the ' + 'Micronutrient Information Center, a resource curated and ' + 'managed by the Linus Pauling Institute at Oregon State ' + 'University.', + 'id': 'http://w3id.org/ontogpt/mic', 'imports': ['linkml:types', 'core'], 'license': 'https://creativecommons.org/publicdomain/zero/1.0/', - 'name': 'micronutrient', + 'name': 'mic', 'prefixes': {'GO': {'prefix_prefix': 'GO', 'prefix_reference': 'http://purl.obolibrary.org/obo/GO_'}, 'chebi': {'prefix_prefix': 'chebi', @@ -80,12 +83,12 @@ def __contains__(self, key:str) -> bool: 'prefix_reference': 'http://purl.obolibrary.org/obo/foodon_'}, 'linkml': {'prefix_prefix': 'linkml', 'prefix_reference': 'https://w3id.org/linkml/'}, - 'micronutrient': {'prefix_prefix': 'micronutrient', - 'prefix_reference': 'http://w3id.org/ontogpt/micronutrient'}, + 'mic': {'prefix_prefix': 'mic', + 'prefix_reference': 'http://w3id.org/ontogpt/mic'}, 'rdf': {'prefix_prefix': 'rdf', 'prefix_reference': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'}}, 'source_file': 'src/ontogpt/templates/mic.yaml', - 'title': 'Food Extraction Template'} ) + 'title': 'Micronutrient Information Extraction Template'} ) class NullDataOptions(str, Enum): UNSPECIFIED_METHOD_OF_ADMINISTRATION = "UNSPECIFIED_METHOD_OF_ADMINISTRATION" @@ -237,10 +240,31 @@ class AnnotatorResult(ConfiguredBaseModel): class Document(NamedEntity): - linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/micronutrient', 'tree_root': True}) - - nutrientTerms: Optional[List[str]] = Field(None, description="""A semicolon-separated list of any names of nutrients or micronutrients, e.g., riboflavin, chromium, fiber""", json_schema_extra = { "linkml_meta": {'alias': 'nutrientTerms', 'domain_of': ['Document']} }) - nutrientToPathwayRelationships: Optional[List[str]] = Field(None, description="""A semicolon-separated list of relationships between nutrients and biochemical pathways, e.g., riboflavin IS INVOLVED IN citric acid cycle""", json_schema_extra = { "linkml_meta": {'alias': 'nutrientToPathwayRelationships', 'domain_of': ['Document']} }) + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic', 'tree_root': True}) + + nutrientTerms: Optional[List[str]] = Field(None, description="""A list of any names of nutrients or micronutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrientTerms', + 'annotations': {'prompt': {'tag': 'prompt', + 'value': 'A semicolon-separated list of names of ' + 'chemicals, nutrients, or micronutrients ' + 'mentioned in the input document.'}, + 'prompt.examples': {'tag': 'prompt.examples', + 'value': 'biotin; cobalamin; iodine; ' + 'zinc; coenzyme Q10'}}, + 'domain_of': ['Document']} }) + nutrientToDiseaseRelationships: Optional[List[NutrientToDiseaseRelationship]] = Field(None, description="""A list of relationships between nutrients and biochemical diseases.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrientToDiseaseRelationships', + 'annotations': {'prompt': {'tag': 'prompt', + 'value': 'A semicolon-separated list of ' + 'relationships between a single nutrient ' + '(including vitamins, minerals, and ' + 'micronutrients) and a single disease, ' + 'with a type of relationship connecting ' + 'them both. Represent the relationship as ' + 'triples, e.g., "Nutrient HAS ' + 'RELATIONSHIP WITH Disease". ' + 'Relationships may include TREATS, ' + 'PREVENTS, INCREASES RISK OF, DECREASES ' + 'RISK OF, or others.'}}, + 'domain_of': ['Document']} }) id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, 'comments': ['this is populated during the grounding and normalization step'], @@ -272,11 +296,12 @@ def pattern_original_spans(cls, v): class NutrientTerm(NamedEntity): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'annotations': {'annotators': {'tag': 'annotators', - 'value': 'sqlite:obo:foodon, sqlite:obo:chebi'}, + 'value': 'sqlite:obo:chebi'}, 'prompt': {'tag': 'prompt', - 'value': 'The name of a nutrient.'}}, - 'from_schema': 'http://w3id.org/ontogpt/micronutrient', - 'id_prefixes': ['FOODON', 'CHEBI']}) + 'value': 'The name of a nutrient, including ' + 'vitamins and minerals.'}}, + 'from_schema': 'http://w3id.org/ontogpt/mic', + 'id_prefixes': ['CHEBI']}) id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, @@ -307,12 +332,13 @@ def pattern_original_spans(cls, v): return v -class Pathway(NamedEntity): - linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'annotations': {'annotators': {'tag': 'annotators', 'value': 'sqlite:obo:go'}, +class Disease(NamedEntity): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'annotations': {'annotators': {'tag': 'annotators', + 'value': 'sqlite:obo:mondo'}, 'prompt': {'tag': 'prompt', - 'value': 'The name of a biochemical pathway.'}}, - 'from_schema': 'http://w3id.org/ontogpt/micronutrient', - 'id_prefixes': ['GO']}) + 'value': 'The name of a disease.'}}, + 'from_schema': 'http://w3id.org/ontogpt/mic', + 'id_prefixes': ['MONDO']}) id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, @@ -343,39 +369,12 @@ def pattern_original_spans(cls, v): return v -class NutrientToPathwayRelationship(NamedEntity): - linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/micronutrient'}) +class NutrientToDiseaseRelationship(CompoundExpression): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic'}) - nutrient: Optional[str] = Field(None, description="""The name of a nutrient.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', 'domain_of': ['NutrientToPathwayRelationship']} }) - pathway: Optional[str] = Field(None, description="""The name of a biochemical pathway.""", json_schema_extra = { "linkml_meta": {'alias': 'pathway', 'domain_of': ['NutrientToPathwayRelationship']} }) - relationship: Optional[str] = Field(None, description="""The relationship between the nutrient and the pathway, for example \"IS INVOLVED IN\"""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToPathwayRelationship']} }) - id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', - 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, - 'comments': ['this is populated during the grounding and normalization step'], - 'domain_of': ['NamedEntity', 'Publication']} }) - label: Optional[str] = Field(None, description="""The label (name) of the named thing""", json_schema_extra = { "linkml_meta": {'alias': 'label', - 'aliases': ['name'], - 'annotations': {'owl': {'tag': 'owl', - 'value': 'AnnotationProperty, AnnotationAssertion'}}, - 'domain_of': ['NamedEntity'], - 'slot_uri': 'rdfs:label'} }) - original_spans: Optional[List[str]] = Field(None, description="""The coordinates of the original text span from which the named entity was extracted, inclusive. For example, \"10:25\" means the span starting from the 10th character and ending with the 25th character. The first character in the text has index 0. Newlines are treated as single characters. Multivalued as there may be multiple spans for a single text.""", json_schema_extra = { "linkml_meta": {'alias': 'original_spans', - 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, - 'comments': ['This is determined during grounding and normalization', - 'But is based on the full input text'], - 'domain_of': ['NamedEntity']} }) - - @field_validator('original_spans') - def pattern_original_spans(cls, v): - pattern=re.compile(r"^\d+:\d+$") - if isinstance(v,list): - for element in v: - if isinstance(v, str) and not pattern.match(element): - raise ValueError(f"Invalid original_spans format: {element}") - elif isinstance(v,str): - if not pattern.match(v): - raise ValueError(f"Invalid original_spans format: {v}") - return v + nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', 'domain_of': ['NutrientToDiseaseRelationship']} }) + relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the disease.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship']} }) + disease: Optional[str] = Field(None, description="""The name of the disease defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', 'domain_of': ['NutrientToDiseaseRelationship']} }) # Model rebuild @@ -391,6 +390,6 @@ def pattern_original_spans(cls, v): AnnotatorResult.model_rebuild() Document.model_rebuild() NutrientTerm.model_rebuild() -Pathway.model_rebuild() -NutrientToPathwayRelationship.model_rebuild() +Disease.model_rebuild() +NutrientToDiseaseRelationship.model_rebuild() diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index 4c2f82875..c103f94b6 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -1,20 +1,23 @@ -id: http://w3id.org/ontogpt/micronutrient -name: micronutrient -title: Food Extraction Template +id: http://w3id.org/ontogpt/mic +name: mic +title: Micronutrient Information Extraction Template description: >- A template for micronutrient information from text, including its participation in biochemical pathways and relationships to genes and diseases. + Intended for use with the Micronutrient Information + Center, a resource curated and managed by the Linus + Pauling Institute at Oregon State University. license: https://creativecommons.org/publicdomain/zero/1.0/ prefixes: rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# foodon: http://purl.obolibrary.org/obo/foodon_ chebi: http://purl.obolibrary.org/obo/CHEBI_ GO: http://purl.obolibrary.org/obo/GO_ - micronutrient: http://w3id.org/ontogpt/micronutrient + mic: http://w3id.org/ontogpt/mic linkml: https://w3id.org/linkml/ -default_prefix: micronutrient +default_prefix: mic default_range: string imports: @@ -30,48 +33,65 @@ classes: range: NutrientTerm multivalued: true description: >- - A semicolon-separated list of any names of nutrients - or micronutrients, e.g., riboflavin, chromium, fiber - nutrientToPathwayRelationships: - range: NutrientToPathwayRelationship + A list of any names of nutrients or micronutrients. + annotations: + prompt: >- + A semicolon-separated list of names of chemicals, + nutrients, or micronutrients mentioned in the + input document. + prompt.examples: >- + biotin; cobalamin; iodine; zinc; coenzyme Q10 + nutrientToDiseaseRelationships: + range: NutrientToDiseaseRelationship multivalued: true description: >- - A semicolon-separated list of relationships between - nutrients and biochemical pathways, e.g., riboflavin - IS INVOLVED IN citric acid cycle + A list of relationships between nutrients and + biochemical diseases. + annotations: + prompt: >- + A semicolon-separated list of relationships + between a single nutrient (including vitamins, + minerals, and micronutrients) and a single + disease, with a type of relationship connecting + them both. Represent the relationship as + triples, e.g., "Nutrient HAS RELATIONSHIP WITH + Disease". Relationships may include TREATS, + PREVENTS, INCREASES RISK OF, DECREASES RISK OF, + or others. NutrientTerm: is_a: NamedEntity id_prefixes: - - FOODON - CHEBI annotations: - annotators: sqlite:obo:foodon, sqlite:obo:chebi + annotators: sqlite:obo:chebi prompt: >- - The name of a nutrient. + The name of a nutrient, including vitamins and + minerals. - Pathway: + Disease: is_a: NamedEntity id_prefixes: - - GO + - MONDO annotations: - annotators: sqlite:obo:go + annotators: sqlite:obo:mondo prompt: >- - The name of a biochemical pathway. + The name of a disease. - NutrientToPathwayRelationship: - is_a: NamedEntity + NutrientToDiseaseRelationship: + is_a: CompoundExpression attributes: nutrient: range: NutrientTerm description: >- - The name of a nutrient. - pathway: - range: Pathway - description: >- - The name of a biochemical pathway. + The name of the nutrient defined in the triple, + including vitamins and minerals. relationship: - range: string + range: RelationshipType + description: >- + The name of a type of relationship between the + nutrient and the disease. + disease: + range: Disease description: >- - The relationship between the nutrient and the pathway, - for example "IS INVOLVED IN" + The name of the disease defined in the triple. From c5aa925cc644eb9fa6ae1c4b90b6c4fa680faf04 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 10:55:05 -0500 Subject: [PATCH 04/21] Class name change; descriptions --- src/ontogpt/templates/mic.py | 10 ++++++++-- src/ontogpt/templates/mic.yaml | 11 ++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index ef61d5d28..9da7e337c 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -294,7 +294,10 @@ def pattern_original_spans(cls, v): return v -class NutrientTerm(NamedEntity): +class Nutrient(NamedEntity): + """ + The name of a nutrient, including vitamins and minerals. + """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'annotations': {'annotators': {'tag': 'annotators', 'value': 'sqlite:obo:chebi'}, 'prompt': {'tag': 'prompt', @@ -333,6 +336,9 @@ def pattern_original_spans(cls, v): class Disease(NamedEntity): + """ + The name of a disease. + """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'annotations': {'annotators': {'tag': 'annotators', 'value': 'sqlite:obo:mondo'}, 'prompt': {'tag': 'prompt', @@ -389,7 +395,7 @@ class NutrientToDiseaseRelationship(CompoundExpression): Publication.model_rebuild() AnnotatorResult.model_rebuild() Document.model_rebuild() -NutrientTerm.model_rebuild() +Nutrient.model_rebuild() Disease.model_rebuild() NutrientToDiseaseRelationship.model_rebuild() diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index c103f94b6..a150819b9 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -30,7 +30,7 @@ classes: is_a: NamedEntity attributes: nutrientTerms: - range: NutrientTerm + range: Nutrient multivalued: true description: >- A list of any names of nutrients or micronutrients. @@ -59,8 +59,11 @@ classes: PREVENTS, INCREASES RISK OF, DECREASES RISK OF, or others. - NutrientTerm: + Nutrient: is_a: NamedEntity + description: >- + The name of a nutrient, including vitamins and + minerals. id_prefixes: - CHEBI annotations: @@ -71,6 +74,8 @@ classes: Disease: is_a: NamedEntity + description: >- + The name of a disease. id_prefixes: - MONDO annotations: @@ -82,7 +87,7 @@ classes: is_a: CompoundExpression attributes: nutrient: - range: NutrientTerm + range: Nutrient description: >- The name of the nutrient defined in the triple, including vitamins and minerals. From 3d375cfa659351a99a7ac432b9d5e4c7fdefc086 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 11:01:13 -0500 Subject: [PATCH 05/21] Minor class name tweak --- src/ontogpt/templates/mic.py | 4 ++-- src/ontogpt/templates/mic.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index 9da7e337c..4e0b30aa8 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -242,7 +242,7 @@ class AnnotatorResult(ConfiguredBaseModel): class Document(NamedEntity): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic', 'tree_root': True}) - nutrientTerms: Optional[List[str]] = Field(None, description="""A list of any names of nutrients or micronutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrientTerms', + nutrient_terms: Optional[List[str]] = Field(None, description="""A list of any names of nutrients or micronutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_terms', 'annotations': {'prompt': {'tag': 'prompt', 'value': 'A semicolon-separated list of names of ' 'chemicals, nutrients, or micronutrients ' @@ -251,7 +251,7 @@ class Document(NamedEntity): 'value': 'biotin; cobalamin; iodine; ' 'zinc; coenzyme Q10'}}, 'domain_of': ['Document']} }) - nutrientToDiseaseRelationships: Optional[List[NutrientToDiseaseRelationship]] = Field(None, description="""A list of relationships between nutrients and biochemical diseases.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrientToDiseaseRelationships', + nutrient_to_disease_relationships: Optional[List[NutrientToDiseaseRelationship]] = Field(None, description="""A list of relationships between nutrients and biochemical diseases.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_disease_relationships', 'annotations': {'prompt': {'tag': 'prompt', 'value': 'A semicolon-separated list of ' 'relationships between a single nutrient ' diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index a150819b9..d3d65b573 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -29,7 +29,7 @@ classes: tree_root: true is_a: NamedEntity attributes: - nutrientTerms: + nutrient_terms: range: Nutrient multivalued: true description: >- @@ -41,7 +41,7 @@ classes: input document. prompt.examples: >- biotin; cobalamin; iodine; zinc; coenzyme Q10 - nutrientToDiseaseRelationships: + nutrient_to_disease_relationships: range: NutrientToDiseaseRelationship multivalued: true description: >- From 91383a13e92d57b574dc113cf699970ecaa96b6b Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 11:18:01 -0500 Subject: [PATCH 06/21] Add nutrient vs nutrient relationships --- src/ontogpt/templates/mic.py | 30 +++++++++++++++++++++++++-- src/ontogpt/templates/mic.yaml | 38 ++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index 4e0b30aa8..38bbeb1b0 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -265,6 +265,17 @@ class Document(NamedEntity): 'PREVENTS, INCREASES RISK OF, DECREASES ' 'RISK OF, or others.'}}, 'domain_of': ['Document']} }) + nutrient_to_nutrient_relationships: Optional[List[NutrientToNutrientRelationship]] = Field(None, description="""A list of relationships between nutrients and other nutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_nutrient_relationships', + 'annotations': {'prompt': {'tag': 'prompt', + 'value': 'A semicolon-separated list of ' + 'relationships between a single nutrient ' + '(including vitamins, minerals, and ' + 'micronutrients) and another single ' + 'nutrient, with a type of relationship ' + 'connecting them both. Represent the ' + 'relationship as triples, e.g., "Nutrient ' + 'INTERACTS WITH Nutrient".'}}, + 'domain_of': ['Document']} }) id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, 'comments': ['this is populated during the grounding and normalization step'], @@ -376,13 +387,27 @@ def pattern_original_spans(cls, v): class NutrientToDiseaseRelationship(CompoundExpression): - linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic'}) + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'comments': ['a Chemical to Disease relationship'], + 'from_schema': 'http://w3id.org/ontogpt/mic'}) nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', 'domain_of': ['NutrientToDiseaseRelationship']} }) - relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the disease.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship']} }) + relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the disease.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', + 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToNutrientRelationship']} }) disease: Optional[str] = Field(None, description="""The name of the disease defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', 'domain_of': ['NutrientToDiseaseRelationship']} }) +class NutrientToNutrientRelationship(CompoundExpression): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'comments': ['a Chemical to Chemical relationship'], + 'from_schema': 'http://w3id.org/ontogpt/mic'}) + + nutrient_subject: Optional[str] = Field(None, description="""The name of a nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_subject', 'domain_of': ['NutrientToNutrientRelationship']} }) + relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient_subject and nutrient_object.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', + 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToNutrientRelationship']} }) + nutrient_object: Optional[str] = Field(None, description="""The name of a nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_object', 'domain_of': ['NutrientToNutrientRelationship']} }) + + # Model rebuild # see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model ExtractionResult.model_rebuild() @@ -398,4 +423,5 @@ class NutrientToDiseaseRelationship(CompoundExpression): Nutrient.model_rebuild() Disease.model_rebuild() NutrientToDiseaseRelationship.model_rebuild() +NutrientToNutrientRelationship.model_rebuild() diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index d3d65b573..8c7268748 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -58,6 +58,21 @@ classes: Disease". Relationships may include TREATS, PREVENTS, INCREASES RISK OF, DECREASES RISK OF, or others. + nutrient_to_nutrient_relationships: + range: NutrientToNutrientRelationship + multivalued: true + description: >- + A list of relationships between nutrients and + other nutrients. + annotations: + prompt: >- + A semicolon-separated list of relationships + between a single nutrient (including vitamins, + minerals, and micronutrients) and another single + nutrient, with a type of relationship connecting + them both. Represent the relationship as + triples, e.g., "Nutrient INTERACTS WITH + Nutrient". Nutrient: is_a: NamedEntity @@ -100,3 +115,26 @@ classes: range: Disease description: >- The name of the disease defined in the triple. + comments: + - a Chemical to Disease relationship + + NutrientToNutrientRelationship: + is_a: CompoundExpression + attributes: + nutrient_subject: + range: Nutrient + description: >- + The name of a nutrient defined in the triple, + including vitamins and minerals. + relationship: + range: RelationshipType + description: >- + The name of a type of relationship between the + nutrient_subject and nutrient_object. + nutrient_object: + range: Nutrient + description: >- + The name of a nutrient defined in the triple, + including vitamins and minerals. + comments: + - a Chemical to Chemical relationship From 7b7e5ad7bfd71aef98abc13028631f8407c051f9 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 11:35:56 -0500 Subject: [PATCH 07/21] Add nutrient to phenotype relationships --- src/ontogpt/templates/mic.py | 96 ++++++++++++++++++++++++++++++++-- src/ontogpt/templates/mic.yaml | 57 +++++++++++++++++++- 2 files changed, 147 insertions(+), 6 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index 38bbeb1b0..de49d2de5 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -258,9 +258,32 @@ class Document(NamedEntity): '(including vitamins, minerals, and ' 'micronutrients) and a single disease, ' 'with a type of relationship connecting ' - 'them both. Represent the relationship as ' - 'triples, e.g., "Nutrient HAS ' - 'RELATIONSHIP WITH Disease". ' + 'them both. A disease is any abnormal ' + "health condition (e.g., Alzheimer's " + 'disease, systemic lupus erythematosus, ' + 'rheumatoid arthritis, sickle cell ' + 'anemia, Barth syndrome). Represent the ' + 'relationship as triples, e.g., "Nutrient ' + 'HAS RELATIONSHIP WITH Disease". ' + 'Relationships may include TREATS, ' + 'PREVENTS, INCREASES RISK OF, DECREASES ' + 'RISK OF, or others.'}}, + 'domain_of': ['Document']} }) + nutrient_to_phenotype_relationships: Optional[List[NutrientToPhenotypeRelationship]] = Field(None, description="""A list of relationships between nutrients and biological phenotypes.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_phenotype_relationships', + 'annotations': {'prompt': {'tag': 'prompt', + 'value': 'A semicolon-separated list of ' + 'relationships between a single nutrient ' + '(including vitamins, minerals, and ' + 'micronutrients) and a single biological ' + 'phenotype, with a type of relationship ' + 'connecting them both. A phenotype is an ' + 'observable physical or behavioral trait ' + 'or symptom (e.g., fever, headache, short ' + 'attention span, petechiae, ' + 'telangiectasia). It may or may not be ' + 'associated with a disease. Represent the ' + 'relationship as triples, e.g., "Nutrient ' + 'HAS RELATIONSHIP WITH Phenotype". ' 'Relationships may include TREATS, ' 'PREVENTS, INCREASES RISK OF, DECREASES ' 'RISK OF, or others.'}}, @@ -386,15 +409,75 @@ def pattern_original_spans(cls, v): return v +class Phenotype(NamedEntity): + """ + The name of a phenotype. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'annotations': {'annotators': {'tag': 'annotators', 'value': 'sqlite:obo:hp'}, + 'prompt': {'tag': 'prompt', + 'value': 'The name of a phenotype.'}}, + 'from_schema': 'http://w3id.org/ontogpt/mic', + 'id_prefixes': ['HP']}) + + id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, + 'comments': ['this is populated during the grounding and normalization step'], + 'domain_of': ['NamedEntity', 'Publication']} }) + label: Optional[str] = Field(None, description="""The label (name) of the named thing""", json_schema_extra = { "linkml_meta": {'alias': 'label', + 'aliases': ['name'], + 'annotations': {'owl': {'tag': 'owl', + 'value': 'AnnotationProperty, AnnotationAssertion'}}, + 'domain_of': ['NamedEntity'], + 'slot_uri': 'rdfs:label'} }) + original_spans: Optional[List[str]] = Field(None, description="""The coordinates of the original text span from which the named entity was extracted, inclusive. For example, \"10:25\" means the span starting from the 10th character and ending with the 25th character. The first character in the text has index 0. Newlines are treated as single characters. Multivalued as there may be multiple spans for a single text.""", json_schema_extra = { "linkml_meta": {'alias': 'original_spans', + 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, + 'comments': ['This is determined during grounding and normalization', + 'But is based on the full input text'], + 'domain_of': ['NamedEntity']} }) + + @field_validator('original_spans') + def pattern_original_spans(cls, v): + pattern=re.compile(r"^\d+:\d+$") + if isinstance(v,list): + for element in v: + if isinstance(v, str) and not pattern.match(element): + raise ValueError(f"Invalid original_spans format: {element}") + elif isinstance(v,str): + if not pattern.match(v): + raise ValueError(f"Invalid original_spans format: {v}") + return v + + class NutrientToDiseaseRelationship(CompoundExpression): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'comments': ['a Chemical to Disease relationship'], 'from_schema': 'http://w3id.org/ontogpt/mic'}) - nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', 'domain_of': ['NutrientToDiseaseRelationship']} }) + nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', + 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToPhenotypeRelationship']} }) relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the disease.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToPhenotypeRelationship', 'NutrientToNutrientRelationship']} }) - disease: Optional[str] = Field(None, description="""The name of the disease defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', 'domain_of': ['NutrientToDiseaseRelationship']} }) + disease: Optional[str] = Field(None, description="""The name of the disease defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', + 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToPhenotypeRelationship']} }) + + +class NutrientToPhenotypeRelationship(CompoundExpression): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'comments': ['a Chemical to Phenotype relationship'], + 'from_schema': 'http://w3id.org/ontogpt/mic'}) + + nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', + 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToPhenotypeRelationship']} }) + relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the disease.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', + 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToPhenotypeRelationship', + 'NutrientToNutrientRelationship']} }) + disease: Optional[str] = Field(None, description="""The name of the phenotype defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', + 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToPhenotypeRelationship']} }) class NutrientToNutrientRelationship(CompoundExpression): @@ -404,6 +487,7 @@ class NutrientToNutrientRelationship(CompoundExpression): nutrient_subject: Optional[str] = Field(None, description="""The name of a nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_subject', 'domain_of': ['NutrientToNutrientRelationship']} }) relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient_subject and nutrient_object.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToPhenotypeRelationship', 'NutrientToNutrientRelationship']} }) nutrient_object: Optional[str] = Field(None, description="""The name of a nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_object', 'domain_of': ['NutrientToNutrientRelationship']} }) @@ -422,6 +506,8 @@ class NutrientToNutrientRelationship(CompoundExpression): Document.model_rebuild() Nutrient.model_rebuild() Disease.model_rebuild() +Phenotype.model_rebuild() NutrientToDiseaseRelationship.model_rebuild() +NutrientToPhenotypeRelationship.model_rebuild() NutrientToNutrientRelationship.model_rebuild() diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index 8c7268748..d46c2e259 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -53,11 +53,35 @@ classes: between a single nutrient (including vitamins, minerals, and micronutrients) and a single disease, with a type of relationship connecting - them both. Represent the relationship as + them both. A disease is any abnormal health condition + (e.g., Alzheimer's disease, systemic lupus erythematosus, + rheumatoid arthritis, sickle cell anemia, Barth syndrome). + Represent the relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Disease". Relationships may include TREATS, PREVENTS, INCREASES RISK OF, DECREASES RISK OF, or others. + nutrient_to_phenotype_relationships: + range: NutrientToPhenotypeRelationship + multivalued: true + description: >- + A list of relationships between nutrients and + biological phenotypes. + annotations: + prompt: >- + A semicolon-separated list of relationships + between a single nutrient (including vitamins, + minerals, and micronutrients) and a single + biological phenotype, with a type of relationship + connecting them both. A phenotype is an observable + physical or behavioral trait or symptom (e.g., fever, + headache, short attention span, petechiae, + telangiectasia). It may or may not be associated + with a disease. Represent the relationship as + triples, e.g., "Nutrient HAS RELATIONSHIP WITH + Phenotype". Relationships may include TREATS, + PREVENTS, INCREASES RISK OF, DECREASES RISK OF, + or others. nutrient_to_nutrient_relationships: range: NutrientToNutrientRelationship multivalued: true @@ -98,6 +122,17 @@ classes: prompt: >- The name of a disease. + Phenotype: + is_a: NamedEntity + description: >- + The name of a phenotype. + id_prefixes: + - HP + annotations: + annotators: sqlite:obo:hp + prompt: >- + The name of a phenotype. + NutrientToDiseaseRelationship: is_a: CompoundExpression attributes: @@ -118,6 +153,26 @@ classes: comments: - a Chemical to Disease relationship + NutrientToPhenotypeRelationship: + is_a: CompoundExpression + attributes: + nutrient: + range: Nutrient + description: >- + The name of the nutrient defined in the triple, + including vitamins and minerals. + relationship: + range: RelationshipType + description: >- + The name of a type of relationship between the + nutrient and the disease. + disease: + range: Phenotype + description: >- + The name of the phenotype defined in the triple. + comments: + - a Chemical to Phenotype relationship + NutrientToNutrientRelationship: is_a: CompoundExpression attributes: From c10af083e91ba3943e82ca7d25f8f7a1e0e1cac5 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 11:37:58 -0500 Subject: [PATCH 08/21] prompt tuning --- src/ontogpt/templates/mic.py | 24 +++++++++++------------- src/ontogpt/templates/mic.yaml | 15 ++++++++------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index de49d2de5..dd2429316 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -281,12 +281,14 @@ class Document(NamedEntity): 'or symptom (e.g., fever, headache, short ' 'attention span, petechiae, ' 'telangiectasia). It may or may not be ' - 'associated with a disease. Represent the ' - 'relationship as triples, e.g., "Nutrient ' - 'HAS RELATIONSHIP WITH Phenotype". ' - 'Relationships may include TREATS, ' - 'PREVENTS, INCREASES RISK OF, DECREASES ' - 'RISK OF, or others.'}}, + 'associated with a disease. Phenotypes do ' + 'NOT include high-level biological ' + 'processes such as "Insulin signaling" or ' + 'health states such as "healthy teeth". ' + 'Represent the relationship as triples, ' + 'e.g., "Nutrient HAS RELATIONSHIP WITH ' + 'Phenotype". Relationships may include ' + 'TREATS, PREVENTS, or others.'}}, 'domain_of': ['Document']} }) nutrient_to_nutrient_relationships: Optional[List[NutrientToNutrientRelationship]] = Field(None, description="""A list of relationships between nutrients and other nutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_nutrient_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -459,9 +461,7 @@ class NutrientToDiseaseRelationship(CompoundExpression): 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToNutrientRelationship']} }) - disease: Optional[str] = Field(None, description="""The name of the disease defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', - 'domain_of': ['NutrientToDiseaseRelationship', - 'NutrientToPhenotypeRelationship']} }) + disease: Optional[str] = Field(None, description="""The name of the disease defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', 'domain_of': ['NutrientToDiseaseRelationship']} }) class NutrientToPhenotypeRelationship(CompoundExpression): @@ -471,13 +471,11 @@ class NutrientToPhenotypeRelationship(CompoundExpression): nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship']} }) - relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the disease.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', + relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the phenotype.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToNutrientRelationship']} }) - disease: Optional[str] = Field(None, description="""The name of the phenotype defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', - 'domain_of': ['NutrientToDiseaseRelationship', - 'NutrientToPhenotypeRelationship']} }) + phenotype: Optional[str] = Field(None, description="""The name of the phenotype defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'phenotype', 'domain_of': ['NutrientToPhenotypeRelationship']} }) class NutrientToNutrientRelationship(CompoundExpression): diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index d46c2e259..63dc15e19 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -77,11 +77,12 @@ classes: physical or behavioral trait or symptom (e.g., fever, headache, short attention span, petechiae, telangiectasia). It may or may not be associated - with a disease. Represent the relationship as - triples, e.g., "Nutrient HAS RELATIONSHIP WITH - Phenotype". Relationships may include TREATS, - PREVENTS, INCREASES RISK OF, DECREASES RISK OF, - or others. + with a disease. Phenotypes do NOT include high-level + biological processes such as "Insulin signaling" or + health states such as "healthy teeth". Represent the + relationship as triples, e.g., "Nutrient HAS RELATIONSHIP + WITH Phenotype". Relationships may include TREATS, + PREVENTS, or others. nutrient_to_nutrient_relationships: range: NutrientToNutrientRelationship multivalued: true @@ -165,8 +166,8 @@ classes: range: RelationshipType description: >- The name of a type of relationship between the - nutrient and the disease. - disease: + nutrient and the phenotype. + phenotype: range: Phenotype description: >- The name of the phenotype defined in the triple. From 99cdb0f485e31b85b1e1daef6b824ccc0f5dea1e Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 11:41:23 -0500 Subject: [PATCH 09/21] More prompt tuning for phenotypes --- src/ontogpt/templates/mic.py | 14 ++++++++------ src/ontogpt/templates/mic.yaml | 3 ++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index dd2429316..22c708009 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -283,12 +283,14 @@ class Document(NamedEntity): 'telangiectasia). It may or may not be ' 'associated with a disease. Phenotypes do ' 'NOT include high-level biological ' - 'processes such as "Insulin signaling" or ' - 'health states such as "healthy teeth". ' - 'Represent the relationship as triples, ' - 'e.g., "Nutrient HAS RELATIONSHIP WITH ' - 'Phenotype". Relationships may include ' - 'TREATS, PREVENTS, or others.'}}, + 'processes such as "Insulin signaling", ' + 'developmental processes such as "limb ' + 'development", or health states such as ' + '"healthy teeth". Represent the ' + 'relationship as triples, e.g., "Nutrient ' + 'HAS RELATIONSHIP WITH Phenotype". ' + 'Relationships may include TREATS, ' + 'PREVENTS, or others.'}}, 'domain_of': ['Document']} }) nutrient_to_nutrient_relationships: Optional[List[NutrientToNutrientRelationship]] = Field(None, description="""A list of relationships between nutrients and other nutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_nutrient_relationships', 'annotations': {'prompt': {'tag': 'prompt', diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index 63dc15e19..a643d8955 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -78,7 +78,8 @@ classes: headache, short attention span, petechiae, telangiectasia). It may or may not be associated with a disease. Phenotypes do NOT include high-level - biological processes such as "Insulin signaling" or + biological processes such as "Insulin signaling", + developmental processes such as "limb development", or health states such as "healthy teeth". Represent the relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Phenotype". Relationships may include TREATS, From e31787ef67faef0a44f079d52fcaaaecd5091c73 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 11:48:47 -0500 Subject: [PATCH 10/21] Add NutrientToBiologicalProcessRelationship --- src/ontogpt/templates/mic.py | 99 ++++++++++++++++++++++++++++++++-- src/ontogpt/templates/mic.yaml | 62 +++++++++++++++++++++ 2 files changed, 158 insertions(+), 3 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index 22c708009..e6290b135 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -96,6 +96,10 @@ class NullDataOptions(str, Enum): NOT_MENTIONED = "NOT_MENTIONED" +class GOBiologicalProcessType(str): + pass + + class ExtractionResult(ConfiguredBaseModel): """ @@ -292,6 +296,27 @@ class Document(NamedEntity): 'Relationships may include TREATS, ' 'PREVENTS, or others.'}}, 'domain_of': ['Document']} }) + nutrient_to_biological_process_relationships: Optional[List[NutrientToBiologicalProcessRelationship]] = Field(None, description="""A list of relationships between nutrients and biological processes.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_biological_process_relationships', + 'annotations': {'prompt': {'tag': 'prompt', + 'value': 'A semicolon-separated list of ' + 'relationships between a single nutrient ' + '(including vitamins, minerals, and ' + 'micronutrients) and a single biological ' + 'process, with a type of relationship ' + 'connecting them both. A biological ' + 'process is an activity or series of ' + 'activities that occur in a cell or ' + 'organism, such as "nuclear axial ' + 'expansion", "intracellular transport", ' + '"ribosomal subunit export from nucleus", ' + '"insulin signaling", or "DNA repair". ' + 'Biological processes do NOT include ' + 'health states such as "healthy teeth". ' + 'Represent the relationship as triples, ' + 'e.g., "Nutrient HAS RELATIONSHIP WITH ' + 'Process". Relationships may include ' + 'REGULATES, PARTICIPATES IN, or others.'}}, + 'domain_of': ['Document']} }) nutrient_to_nutrient_relationships: Optional[List[NutrientToNutrientRelationship]] = Field(None, description="""A list of relationships between nutrients and other nutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_nutrient_relationships', 'annotations': {'prompt': {'tag': 'prompt', 'value': 'A semicolon-separated list of ' @@ -452,16 +477,60 @@ def pattern_original_spans(cls, v): return v +class BiologicalProcess(NamedEntity): + """ + The name of a biological process. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'annotations': {'annotators': {'tag': 'annotators', 'value': 'sqlite:obo:go'}, + 'prompt': {'tag': 'prompt', + 'value': 'The name of a biological process.'}}, + 'from_schema': 'http://w3id.org/ontogpt/mic', + 'id_prefixes': ['GO'], + 'slot_usage': {'id': {'name': 'id', + 'values_from': ['GOBiologicalProcessType']}}}) + + id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, + 'comments': ['this is populated during the grounding and normalization step'], + 'domain_of': ['NamedEntity', 'Publication'], + 'values_from': ['GOBiologicalProcessType']} }) + label: Optional[str] = Field(None, description="""The label (name) of the named thing""", json_schema_extra = { "linkml_meta": {'alias': 'label', + 'aliases': ['name'], + 'annotations': {'owl': {'tag': 'owl', + 'value': 'AnnotationProperty, AnnotationAssertion'}}, + 'domain_of': ['NamedEntity'], + 'slot_uri': 'rdfs:label'} }) + original_spans: Optional[List[str]] = Field(None, description="""The coordinates of the original text span from which the named entity was extracted, inclusive. For example, \"10:25\" means the span starting from the 10th character and ending with the 25th character. The first character in the text has index 0. Newlines are treated as single characters. Multivalued as there may be multiple spans for a single text.""", json_schema_extra = { "linkml_meta": {'alias': 'original_spans', + 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, + 'comments': ['This is determined during grounding and normalization', + 'But is based on the full input text'], + 'domain_of': ['NamedEntity']} }) + + @field_validator('original_spans') + def pattern_original_spans(cls, v): + pattern=re.compile(r"^\d+:\d+$") + if isinstance(v,list): + for element in v: + if isinstance(v, str) and not pattern.match(element): + raise ValueError(f"Invalid original_spans format: {element}") + elif isinstance(v,str): + if not pattern.match(v): + raise ValueError(f"Invalid original_spans format: {v}") + return v + + class NutrientToDiseaseRelationship(CompoundExpression): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'comments': ['a Chemical to Disease relationship'], 'from_schema': 'http://w3id.org/ontogpt/mic'}) nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', 'domain_of': ['NutrientToDiseaseRelationship', - 'NutrientToPhenotypeRelationship']} }) + 'NutrientToPhenotypeRelationship', + 'NutrientToBiologicalProcessRelationship']} }) relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the disease.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', + 'NutrientToBiologicalProcessRelationship', 'NutrientToNutrientRelationship']} }) disease: Optional[str] = Field(None, description="""The name of the disease defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', 'domain_of': ['NutrientToDiseaseRelationship']} }) @@ -472,12 +541,33 @@ class NutrientToPhenotypeRelationship(CompoundExpression): nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', 'domain_of': ['NutrientToDiseaseRelationship', - 'NutrientToPhenotypeRelationship']} }) + 'NutrientToPhenotypeRelationship', + 'NutrientToBiologicalProcessRelationship']} }) relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the phenotype.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', + 'NutrientToBiologicalProcessRelationship', + 'NutrientToNutrientRelationship']} }) + phenotype: Optional[str] = Field(None, description="""The name of the phenotype defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'phenotype', + 'domain_of': ['NutrientToPhenotypeRelationship', + 'NutrientToBiologicalProcessRelationship']} }) + + +class NutrientToBiologicalProcessRelationship(CompoundExpression): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic'}) + + nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', + 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToPhenotypeRelationship', + 'NutrientToBiologicalProcessRelationship']} }) + relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the biological process.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', + 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToPhenotypeRelationship', + 'NutrientToBiologicalProcessRelationship', 'NutrientToNutrientRelationship']} }) - phenotype: Optional[str] = Field(None, description="""The name of the phenotype defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'phenotype', 'domain_of': ['NutrientToPhenotypeRelationship']} }) + phenotype: Optional[str] = Field(None, description="""The name of the biological process defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'phenotype', + 'domain_of': ['NutrientToPhenotypeRelationship', + 'NutrientToBiologicalProcessRelationship']} }) class NutrientToNutrientRelationship(CompoundExpression): @@ -488,6 +578,7 @@ class NutrientToNutrientRelationship(CompoundExpression): relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient_subject and nutrient_object.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', + 'NutrientToBiologicalProcessRelationship', 'NutrientToNutrientRelationship']} }) nutrient_object: Optional[str] = Field(None, description="""The name of a nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_object', 'domain_of': ['NutrientToNutrientRelationship']} }) @@ -507,7 +598,9 @@ class NutrientToNutrientRelationship(CompoundExpression): Nutrient.model_rebuild() Disease.model_rebuild() Phenotype.model_rebuild() +BiologicalProcess.model_rebuild() NutrientToDiseaseRelationship.model_rebuild() NutrientToPhenotypeRelationship.model_rebuild() +NutrientToBiologicalProcessRelationship.model_rebuild() NutrientToNutrientRelationship.model_rebuild() diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index a643d8955..821613030 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -84,6 +84,27 @@ classes: relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Phenotype". Relationships may include TREATS, PREVENTS, or others. + nutrient_to_biological_process_relationships: + range: NutrientToBiologicalProcessRelationship + multivalued: true + description: >- + A list of relationships between nutrients and + biological processes. + annotations: + prompt: >- + A semicolon-separated list of relationships + between a single nutrient (including vitamins, + minerals, and micronutrients) and a single + biological process, with a type of relationship + connecting them both. A biological process is an + activity or series of activities that occur in a + cell or organism, such as "nuclear axial expansion", + "intracellular transport", "ribosomal subunit export from nucleus", + "insulin signaling", or "DNA repair". + Biological processes do NOT include health states such as + "healthy teeth". Represent the relationship as triples, e.g., + "Nutrient HAS RELATIONSHIP WITH Process". Relationships may include + REGULATES, PARTICIPATES IN, or others. nutrient_to_nutrient_relationships: range: NutrientToNutrientRelationship multivalued: true @@ -135,6 +156,21 @@ classes: prompt: >- The name of a phenotype. + BiologicalProcess: + is_a: NamedEntity + description: >- + The name of a biological process. + id_prefixes: + - GO + annotations: + annotators: sqlite:obo:go + prompt: >- + The name of a biological process. + slot_usage: + id: + values_from: + - GOBiologicalProcessType + NutrientToDiseaseRelationship: is_a: CompoundExpression attributes: @@ -175,6 +211,24 @@ classes: comments: - a Chemical to Phenotype relationship + NutrientToBiologicalProcessRelationship: + is_a: CompoundExpression + attributes: + nutrient: + range: Nutrient + description: >- + The name of the nutrient defined in the triple, + including vitamins and minerals. + relationship: + range: RelationshipType + description: >- + The name of a type of relationship between the + nutrient and the biological process. + phenotype: + range: BiologicalProcess + description: >- + The name of the biological process defined in the triple. + NutrientToNutrientRelationship: is_a: CompoundExpression attributes: @@ -195,3 +249,11 @@ classes: including vitamins and minerals. comments: - a Chemical to Chemical relationship + +enums: + + GOBiologicalProcessType: + reachable_from: + source_ontology: obo:go + source_nodes: + - GO:0008150 # biological_process From fcf2104031f24e4f50553ff514dfcadd94c6c986 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 11:55:17 -0500 Subject: [PATCH 11/21] Minor prompt tuning --- src/ontogpt/templates/mic.py | 16 ++++++++-------- src/ontogpt/templates/mic.yaml | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index e6290b135..9320c036e 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -287,14 +287,14 @@ class Document(NamedEntity): 'telangiectasia). It may or may not be ' 'associated with a disease. Phenotypes do ' 'NOT include high-level biological ' - 'processes such as "Insulin signaling", ' - 'developmental processes such as "limb ' - 'development", or health states such as ' - '"healthy teeth". Represent the ' - 'relationship as triples, e.g., "Nutrient ' - 'HAS RELATIONSHIP WITH Phenotype". ' - 'Relationships may include TREATS, ' - 'PREVENTS, or others.'}}, + 'processes such as "Insulin signaling" or ' + '"lipid metabolism", developmental ' + 'processes such as "limb development", or ' + 'health states such as "healthy teeth". ' + 'Represent the relationship as triples, ' + 'e.g., "Nutrient HAS RELATIONSHIP WITH ' + 'Phenotype". Relationships may include ' + 'TREATS, PREVENTS, or others.'}}, 'domain_of': ['Document']} }) nutrient_to_biological_process_relationships: Optional[List[NutrientToBiologicalProcessRelationship]] = Field(None, description="""A list of relationships between nutrients and biological processes.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_biological_process_relationships', 'annotations': {'prompt': {'tag': 'prompt', diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index 821613030..005e5d876 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -78,9 +78,9 @@ classes: headache, short attention span, petechiae, telangiectasia). It may or may not be associated with a disease. Phenotypes do NOT include high-level - biological processes such as "Insulin signaling", - developmental processes such as "limb development", or - health states such as "healthy teeth". Represent the + biological processes such as "Insulin signaling" or "lipid + metabolism", developmental processes such as "limb development", + or health states such as "healthy teeth". Represent the relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Phenotype". Relationships may include TREATS, PREVENTS, or others. From 3c3c0abef19acd6af626e88d229b5c0180ba18ec Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 12:05:15 -0500 Subject: [PATCH 12/21] Add NutrientToHealthStatusRelationship --- src/ontogpt/templates/mic.py | 102 ++++++++++++++++++++++++++++++--- src/ontogpt/templates/mic.yaml | 51 +++++++++++++++++ 2 files changed, 146 insertions(+), 7 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index 9320c036e..9ef187bb4 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -317,6 +317,27 @@ class Document(NamedEntity): 'Process". Relationships may include ' 'REGULATES, PARTICIPATES IN, or others.'}}, 'domain_of': ['Document']} }) + nutrient_to_health_status_relationships: Optional[List[NutrientToHealthStatusRelationship]] = Field(None, description="""A list of relationships between nutrients and health of a specific part or system of the human body.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_health_status_relationships', + 'annotations': {'prompt': {'tag': 'prompt', + 'value': 'A semicolon-separated list of ' + 'relationships between a single nutrient ' + '(including vitamins, minerals, and ' + 'micronutrients) and a single part or ' + 'system of the body, with a type of ' + 'relationship connecting them both. ' + 'Example parts or systems include ' + '"teeth", "skin", "cardiovascular ' + 'system", "digestive system", or "liver". ' + 'Transform names of processes to their ' + 'respective anatomy, e.g., "thyroid ' + 'function" or "thyroid health" should be ' + 'changed to "thyroid"; "digestion" should ' + 'be changed to "digestive system". ' + 'Represent the relationship as triples, ' + 'e.g., "Nutrient HAS RELATIONSHIP WITH ' + 'Part". Relationships should be SUPPORTS ' + 'HEALTH OF.'}}, + 'domain_of': ['Document']} }) nutrient_to_nutrient_relationships: Optional[List[NutrientToNutrientRelationship]] = Field(None, description="""A list of relationships between nutrients and other nutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_nutrient_relationships', 'annotations': {'prompt': {'tag': 'prompt', 'value': 'A semicolon-separated list of ' @@ -519,6 +540,47 @@ def pattern_original_spans(cls, v): return v +class Anatomy(NamedEntity): + """ + The name of an anatomical part or system. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'annotations': {'annotators': {'tag': 'annotators', + 'value': 'sqlite:obo:uberon'}, + 'prompt': {'tag': 'prompt', + 'value': 'The name of an anatomical part or ' + 'system.'}}, + 'from_schema': 'http://w3id.org/ontogpt/mic', + 'id_prefixes': ['UBERON']}) + + id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, + 'comments': ['this is populated during the grounding and normalization step'], + 'domain_of': ['NamedEntity', 'Publication']} }) + label: Optional[str] = Field(None, description="""The label (name) of the named thing""", json_schema_extra = { "linkml_meta": {'alias': 'label', + 'aliases': ['name'], + 'annotations': {'owl': {'tag': 'owl', + 'value': 'AnnotationProperty, AnnotationAssertion'}}, + 'domain_of': ['NamedEntity'], + 'slot_uri': 'rdfs:label'} }) + original_spans: Optional[List[str]] = Field(None, description="""The coordinates of the original text span from which the named entity was extracted, inclusive. For example, \"10:25\" means the span starting from the 10th character and ending with the 25th character. The first character in the text has index 0. Newlines are treated as single characters. Multivalued as there may be multiple spans for a single text.""", json_schema_extra = { "linkml_meta": {'alias': 'original_spans', + 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, + 'comments': ['This is determined during grounding and normalization', + 'But is based on the full input text'], + 'domain_of': ['NamedEntity']} }) + + @field_validator('original_spans') + def pattern_original_spans(cls, v): + pattern=re.compile(r"^\d+:\d+$") + if isinstance(v,list): + for element in v: + if isinstance(v, str) and not pattern.match(element): + raise ValueError(f"Invalid original_spans format: {element}") + elif isinstance(v,str): + if not pattern.match(v): + raise ValueError(f"Invalid original_spans format: {v}") + return v + + class NutrientToDiseaseRelationship(CompoundExpression): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'comments': ['a Chemical to Disease relationship'], 'from_schema': 'http://w3id.org/ontogpt/mic'}) @@ -526,12 +588,14 @@ class NutrientToDiseaseRelationship(CompoundExpression): nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', - 'NutrientToBiologicalProcessRelationship']} }) + 'NutrientToBiologicalProcessRelationship', + 'NutrientToHealthStatusRelationship']} }) relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the disease.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship', - 'NutrientToNutrientRelationship']} }) + 'NutrientToNutrientRelationship', + 'NutrientToHealthStatusRelationship']} }) disease: Optional[str] = Field(None, description="""The name of the disease defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', 'domain_of': ['NutrientToDiseaseRelationship']} }) @@ -542,12 +606,14 @@ class NutrientToPhenotypeRelationship(CompoundExpression): nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', - 'NutrientToBiologicalProcessRelationship']} }) + 'NutrientToBiologicalProcessRelationship', + 'NutrientToHealthStatusRelationship']} }) relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the phenotype.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship', - 'NutrientToNutrientRelationship']} }) + 'NutrientToNutrientRelationship', + 'NutrientToHealthStatusRelationship']} }) phenotype: Optional[str] = Field(None, description="""The name of the phenotype defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'phenotype', 'domain_of': ['NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship']} }) @@ -559,12 +625,14 @@ class NutrientToBiologicalProcessRelationship(CompoundExpression): nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', - 'NutrientToBiologicalProcessRelationship']} }) + 'NutrientToBiologicalProcessRelationship', + 'NutrientToHealthStatusRelationship']} }) relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the biological process.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship', - 'NutrientToNutrientRelationship']} }) + 'NutrientToNutrientRelationship', + 'NutrientToHealthStatusRelationship']} }) phenotype: Optional[str] = Field(None, description="""The name of the biological process defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'phenotype', 'domain_of': ['NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship']} }) @@ -579,10 +647,28 @@ class NutrientToNutrientRelationship(CompoundExpression): 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship', - 'NutrientToNutrientRelationship']} }) + 'NutrientToNutrientRelationship', + 'NutrientToHealthStatusRelationship']} }) nutrient_object: Optional[str] = Field(None, description="""The name of a nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_object', 'domain_of': ['NutrientToNutrientRelationship']} }) +class NutrientToHealthStatusRelationship(CompoundExpression): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic'}) + + nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', + 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToPhenotypeRelationship', + 'NutrientToBiologicalProcessRelationship', + 'NutrientToHealthStatusRelationship']} }) + relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the anatomical part or system.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', + 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToPhenotypeRelationship', + 'NutrientToBiologicalProcessRelationship', + 'NutrientToNutrientRelationship', + 'NutrientToHealthStatusRelationship']} }) + anatomy: Optional[str] = Field(None, description="""The name of the anatomical part or system defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'anatomy', 'domain_of': ['NutrientToHealthStatusRelationship']} }) + + # Model rebuild # see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model ExtractionResult.model_rebuild() @@ -599,8 +685,10 @@ class NutrientToNutrientRelationship(CompoundExpression): Disease.model_rebuild() Phenotype.model_rebuild() BiologicalProcess.model_rebuild() +Anatomy.model_rebuild() NutrientToDiseaseRelationship.model_rebuild() NutrientToPhenotypeRelationship.model_rebuild() NutrientToBiologicalProcessRelationship.model_rebuild() NutrientToNutrientRelationship.model_rebuild() +NutrientToHealthStatusRelationship.model_rebuild() diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index 005e5d876..cc13f4adc 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -105,6 +105,27 @@ classes: "healthy teeth". Represent the relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Process". Relationships may include REGULATES, PARTICIPATES IN, or others. + nutrient_to_health_status_relationships: + range: NutrientToHealthStatusRelationship + multivalued: true + description: >- + A list of relationships between nutrients and + health of a specific part or system of the human + body. + annotations: + prompt: >- + A semicolon-separated list of relationships + between a single nutrient (including vitamins, + minerals, and micronutrients) and a single + part or system of the body, with a type of relationship + connecting them both. Example parts or systems include + "teeth", "skin", "cardiovascular system", "digestive system", + or "liver". Transform names of processes + to their respective anatomy, e.g., "thyroid function" or + "thyroid health" should be changed to "thyroid"; "digestion" + should be changed to "digestive system". Represent the + relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH + Part". Relationships should be SUPPORTS HEALTH OF. nutrient_to_nutrient_relationships: range: NutrientToNutrientRelationship multivalued: true @@ -171,6 +192,17 @@ classes: values_from: - GOBiologicalProcessType + Anatomy: + is_a: NamedEntity + description: >- + The name of an anatomical part or system. + id_prefixes: + - UBERON + annotations: + annotators: sqlite:obo:uberon + prompt: >- + The name of an anatomical part or system. + NutrientToDiseaseRelationship: is_a: CompoundExpression attributes: @@ -250,6 +282,25 @@ classes: comments: - a Chemical to Chemical relationship + NutrientToHealthStatusRelationship: + is_a: CompoundExpression + attributes: + nutrient: + range: Nutrient + description: >- + The name of the nutrient defined in the triple, + including vitamins and minerals. + relationship: + range: RelationshipType + description: >- + The name of a type of relationship between the + nutrient and the anatomical part or system. + anatomy: + range: Anatomy + description: >- + The name of the anatomical part or system + defined in the triple. + enums: GOBiologicalProcessType: From dfccd69938f45d0a7a709db8fed5bc6b31ca2d46 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 12:08:17 -0500 Subject: [PATCH 13/21] small fix for NutrientToBiologicalProcessRelationship --- src/ontogpt/templates/mic.py | 8 ++------ src/ontogpt/templates/mic.yaml | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index 9ef187bb4..0764cd372 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -614,9 +614,7 @@ class NutrientToPhenotypeRelationship(CompoundExpression): 'NutrientToBiologicalProcessRelationship', 'NutrientToNutrientRelationship', 'NutrientToHealthStatusRelationship']} }) - phenotype: Optional[str] = Field(None, description="""The name of the phenotype defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'phenotype', - 'domain_of': ['NutrientToPhenotypeRelationship', - 'NutrientToBiologicalProcessRelationship']} }) + phenotype: Optional[str] = Field(None, description="""The name of the phenotype defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'phenotype', 'domain_of': ['NutrientToPhenotypeRelationship']} }) class NutrientToBiologicalProcessRelationship(CompoundExpression): @@ -633,9 +631,7 @@ class NutrientToBiologicalProcessRelationship(CompoundExpression): 'NutrientToBiologicalProcessRelationship', 'NutrientToNutrientRelationship', 'NutrientToHealthStatusRelationship']} }) - phenotype: Optional[str] = Field(None, description="""The name of the biological process defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'phenotype', - 'domain_of': ['NutrientToPhenotypeRelationship', - 'NutrientToBiologicalProcessRelationship']} }) + process: Optional[str] = Field(None, description="""The name of the biological process defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'process', 'domain_of': ['NutrientToBiologicalProcessRelationship']} }) class NutrientToNutrientRelationship(CompoundExpression): diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index cc13f4adc..c10fe0a18 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -256,7 +256,7 @@ classes: description: >- The name of a type of relationship between the nutrient and the biological process. - phenotype: + process: range: BiologicalProcess description: >- The name of the biological process defined in the triple. From 5ebc50c805524dcc8fb1356dd8fa5b9abd16935c Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 12:10:27 -0500 Subject: [PATCH 14/21] Tuning for nutrient_to_nutrient_relationships --- src/ontogpt/templates/mic.py | 5 ++++- src/ontogpt/templates/mic.yaml | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index 0764cd372..376d7c451 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -345,7 +345,10 @@ class Document(NamedEntity): '(including vitamins, minerals, and ' 'micronutrients) and another single ' 'nutrient, with a type of relationship ' - 'connecting them both. Represent the ' + 'connecting them both. This does not ' + 'include relationships between nutrients ' + 'and proteins (e.g., a nutrient and its ' + 'receptor protein). Represent the ' 'relationship as triples, e.g., "Nutrient ' 'INTERACTS WITH Nutrient".'}}, 'domain_of': ['Document']} }) diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index c10fe0a18..e50f26cf3 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -138,7 +138,9 @@ classes: between a single nutrient (including vitamins, minerals, and micronutrients) and another single nutrient, with a type of relationship connecting - them both. Represent the relationship as + them both. This does not include relationships + between nutrients and proteins (e.g., a nutrient + and its receptor protein). Represent the relationship as triples, e.g., "Nutrient INTERACTS WITH Nutrient". From 96b8f449de9b97294c3658883abdd0429a8d6426 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 12:11:47 -0500 Subject: [PATCH 15/21] Tuning for nutrient_to_biological_process_relationships --- src/ontogpt/templates/mic.py | 12 +++++++----- src/ontogpt/templates/mic.yaml | 3 ++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index 376d7c451..9446343f4 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -311,11 +311,13 @@ class Document(NamedEntity): '"ribosomal subunit export from nucleus", ' '"insulin signaling", or "DNA repair". ' 'Biological processes do NOT include ' - 'health states such as "healthy teeth". ' - 'Represent the relationship as triples, ' - 'e.g., "Nutrient HAS RELATIONSHIP WITH ' - 'Process". Relationships may include ' - 'REGULATES, PARTICIPATES IN, or others.'}}, + 'health states such as "healthy teeth" or ' + 'proteins such as "retinoic acid ' + 'receptor". Represent the relationship as ' + 'triples, e.g., "Nutrient HAS ' + 'RELATIONSHIP WITH Process". ' + 'Relationships may include REGULATES, ' + 'PARTICIPATES IN, or others.'}}, 'domain_of': ['Document']} }) nutrient_to_health_status_relationships: Optional[List[NutrientToHealthStatusRelationship]] = Field(None, description="""A list of relationships between nutrients and health of a specific part or system of the human body.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_health_status_relationships', 'annotations': {'prompt': {'tag': 'prompt', diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index e50f26cf3..06fe668ef 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -102,7 +102,8 @@ classes: "intracellular transport", "ribosomal subunit export from nucleus", "insulin signaling", or "DNA repair". Biological processes do NOT include health states such as - "healthy teeth". Represent the relationship as triples, e.g., + "healthy teeth" or proteins such as "retinoic acid receptor". + Represent the relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Process". Relationships may include REGULATES, PARTICIPATES IN, or others. nutrient_to_health_status_relationships: From 096fc3b6921892394caeeff7553fb0a09da55b10 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 12:17:38 -0500 Subject: [PATCH 16/21] Add NutrientToSourceRelationship --- src/ontogpt/templates/mic.py | 102 ++++++++++++++++++++++++++++++--- src/ontogpt/templates/mic.yaml | 47 +++++++++++++++ 2 files changed, 140 insertions(+), 9 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index 9446343f4..711431c18 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -340,6 +340,20 @@ class Document(NamedEntity): 'Part". Relationships should be SUPPORTS ' 'HEALTH OF.'}}, 'domain_of': ['Document']} }) + nutrient_to_source_relationships: Optional[List[NutrientToSourceRelationship]] = Field(None, description="""A list of relationships between nutrients and their sources in food or supplements.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_source_relationships', + 'annotations': {'prompt': {'tag': 'prompt', + 'value': 'A semicolon-separated list of ' + 'relationships between a single nutrient ' + '(including vitamins, minerals, and ' + 'micronutrients) and a single food or ' + 'supplement, with a type of relationship ' + 'connecting them both. Example foods ' + 'include "butter", "apple", "watermelon", ' + '"beef", or "breakfast cereal". Represent ' + 'the relationship as triples, e.g., ' + '"Nutrient HAS RELATIONSHIP WITH Source". ' + 'Relationships should be PROVIDED BY.'}}, + 'domain_of': ['Document']} }) nutrient_to_nutrient_relationships: Optional[List[NutrientToNutrientRelationship]] = Field(None, description="""A list of relationships between nutrients and other nutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_nutrient_relationships', 'annotations': {'prompt': {'tag': 'prompt', 'value': 'A semicolon-separated list of ' @@ -586,6 +600,46 @@ def pattern_original_spans(cls, v): return v +class FoodOrSupplement(NamedEntity): + """ + The name of a food or supplement. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'annotations': {'annotators': {'tag': 'annotators', + 'value': 'sqlite:obo:foodon'}, + 'prompt': {'tag': 'prompt', + 'value': 'The name of a food or supplement.'}}, + 'from_schema': 'http://w3id.org/ontogpt/mic', + 'id_prefixes': ['FOODON']}) + + id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', + 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, + 'comments': ['this is populated during the grounding and normalization step'], + 'domain_of': ['NamedEntity', 'Publication']} }) + label: Optional[str] = Field(None, description="""The label (name) of the named thing""", json_schema_extra = { "linkml_meta": {'alias': 'label', + 'aliases': ['name'], + 'annotations': {'owl': {'tag': 'owl', + 'value': 'AnnotationProperty, AnnotationAssertion'}}, + 'domain_of': ['NamedEntity'], + 'slot_uri': 'rdfs:label'} }) + original_spans: Optional[List[str]] = Field(None, description="""The coordinates of the original text span from which the named entity was extracted, inclusive. For example, \"10:25\" means the span starting from the 10th character and ending with the 25th character. The first character in the text has index 0. Newlines are treated as single characters. Multivalued as there may be multiple spans for a single text.""", json_schema_extra = { "linkml_meta": {'alias': 'original_spans', + 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, + 'comments': ['This is determined during grounding and normalization', + 'But is based on the full input text'], + 'domain_of': ['NamedEntity']} }) + + @field_validator('original_spans') + def pattern_original_spans(cls, v): + pattern=re.compile(r"^\d+:\d+$") + if isinstance(v,list): + for element in v: + if isinstance(v, str) and not pattern.match(element): + raise ValueError(f"Invalid original_spans format: {element}") + elif isinstance(v,str): + if not pattern.match(v): + raise ValueError(f"Invalid original_spans format: {v}") + return v + + class NutrientToDiseaseRelationship(CompoundExpression): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'comments': ['a Chemical to Disease relationship'], 'from_schema': 'http://w3id.org/ontogpt/mic'}) @@ -594,13 +648,15 @@ class NutrientToDiseaseRelationship(CompoundExpression): 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship', - 'NutrientToHealthStatusRelationship']} }) + 'NutrientToHealthStatusRelationship', + 'NutrientToSourceRelationship']} }) relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the disease.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship', 'NutrientToNutrientRelationship', - 'NutrientToHealthStatusRelationship']} }) + 'NutrientToHealthStatusRelationship', + 'NutrientToSourceRelationship']} }) disease: Optional[str] = Field(None, description="""The name of the disease defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', 'domain_of': ['NutrientToDiseaseRelationship']} }) @@ -612,13 +668,15 @@ class NutrientToPhenotypeRelationship(CompoundExpression): 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship', - 'NutrientToHealthStatusRelationship']} }) + 'NutrientToHealthStatusRelationship', + 'NutrientToSourceRelationship']} }) relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the phenotype.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship', 'NutrientToNutrientRelationship', - 'NutrientToHealthStatusRelationship']} }) + 'NutrientToHealthStatusRelationship', + 'NutrientToSourceRelationship']} }) phenotype: Optional[str] = Field(None, description="""The name of the phenotype defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'phenotype', 'domain_of': ['NutrientToPhenotypeRelationship']} }) @@ -629,13 +687,15 @@ class NutrientToBiologicalProcessRelationship(CompoundExpression): 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship', - 'NutrientToHealthStatusRelationship']} }) + 'NutrientToHealthStatusRelationship', + 'NutrientToSourceRelationship']} }) relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the biological process.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship', 'NutrientToNutrientRelationship', - 'NutrientToHealthStatusRelationship']} }) + 'NutrientToHealthStatusRelationship', + 'NutrientToSourceRelationship']} }) process: Optional[str] = Field(None, description="""The name of the biological process defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'process', 'domain_of': ['NutrientToBiologicalProcessRelationship']} }) @@ -649,7 +709,8 @@ class NutrientToNutrientRelationship(CompoundExpression): 'NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship', 'NutrientToNutrientRelationship', - 'NutrientToHealthStatusRelationship']} }) + 'NutrientToHealthStatusRelationship', + 'NutrientToSourceRelationship']} }) nutrient_object: Optional[str] = Field(None, description="""The name of a nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_object', 'domain_of': ['NutrientToNutrientRelationship']} }) @@ -660,16 +721,37 @@ class NutrientToHealthStatusRelationship(CompoundExpression): 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship', - 'NutrientToHealthStatusRelationship']} }) + 'NutrientToHealthStatusRelationship', + 'NutrientToSourceRelationship']} }) relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the anatomical part or system.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', 'domain_of': ['NutrientToDiseaseRelationship', 'NutrientToPhenotypeRelationship', 'NutrientToBiologicalProcessRelationship', 'NutrientToNutrientRelationship', - 'NutrientToHealthStatusRelationship']} }) + 'NutrientToHealthStatusRelationship', + 'NutrientToSourceRelationship']} }) anatomy: Optional[str] = Field(None, description="""The name of the anatomical part or system defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'anatomy', 'domain_of': ['NutrientToHealthStatusRelationship']} }) +class NutrientToSourceRelationship(CompoundExpression): + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic'}) + + nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', + 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToPhenotypeRelationship', + 'NutrientToBiologicalProcessRelationship', + 'NutrientToHealthStatusRelationship', + 'NutrientToSourceRelationship']} }) + relationship: Optional[str] = Field(None, description="""The name of a type of relationship between the nutrient and the food or supplement.""", json_schema_extra = { "linkml_meta": {'alias': 'relationship', + 'domain_of': ['NutrientToDiseaseRelationship', + 'NutrientToPhenotypeRelationship', + 'NutrientToBiologicalProcessRelationship', + 'NutrientToNutrientRelationship', + 'NutrientToHealthStatusRelationship', + 'NutrientToSourceRelationship']} }) + source: Optional[str] = Field(None, description="""The name of the food or supplement defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'source', 'domain_of': ['NutrientToSourceRelationship']} }) + + # Model rebuild # see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model ExtractionResult.model_rebuild() @@ -687,9 +769,11 @@ class NutrientToHealthStatusRelationship(CompoundExpression): Phenotype.model_rebuild() BiologicalProcess.model_rebuild() Anatomy.model_rebuild() +FoodOrSupplement.model_rebuild() NutrientToDiseaseRelationship.model_rebuild() NutrientToPhenotypeRelationship.model_rebuild() NutrientToBiologicalProcessRelationship.model_rebuild() NutrientToNutrientRelationship.model_rebuild() NutrientToHealthStatusRelationship.model_rebuild() +NutrientToSourceRelationship.model_rebuild() diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index 06fe668ef..d1ae82528 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -127,6 +127,23 @@ classes: should be changed to "digestive system". Represent the relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Part". Relationships should be SUPPORTS HEALTH OF. + nutrient_to_source_relationships: + range: NutrientToSourceRelationship + multivalued: true + description: >- + A list of relationships between nutrients and + their sources in food or supplements. + annotations: + prompt: >- + A semicolon-separated list of relationships + between a single nutrient (including vitamins, + minerals, and micronutrients) and a single + food or supplement, with a type of relationship + connecting them both. Example foods include "butter", + "apple", "watermelon", "beef", or "breakfast cereal". + Represent the relationship as triples, e.g., "Nutrient HAS + RELATIONSHIP WITH Source". Relationships should be PROVIDED + BY. nutrient_to_nutrient_relationships: range: NutrientToNutrientRelationship multivalued: true @@ -206,6 +223,17 @@ classes: prompt: >- The name of an anatomical part or system. + FoodOrSupplement: + is_a: NamedEntity + description: >- + The name of a food or supplement. + id_prefixes: + - FOODON + annotations: + annotators: sqlite:obo:foodon + prompt: >- + The name of a food or supplement. + NutrientToDiseaseRelationship: is_a: CompoundExpression attributes: @@ -304,6 +332,25 @@ classes: The name of the anatomical part or system defined in the triple. + NutrientToSourceRelationship: + is_a: CompoundExpression + attributes: + nutrient: + range: Nutrient + description: >- + The name of the nutrient defined in the triple, + including vitamins and minerals. + relationship: + range: RelationshipType + description: >- + The name of a type of relationship between the + nutrient and the food or supplement. + source: + range: FoodOrSupplement + description: >- + The name of the food or supplement defined in the + triple. + enums: GOBiologicalProcessType: From 295080f3f60499f9537c4f4dc5fb1dac3caeea51 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 12:27:25 -0500 Subject: [PATCH 17/21] Comment out redundant nutrient_terms slot --- src/ontogpt/templates/mic.py | 9 --------- src/ontogpt/templates/mic.yaml | 24 ++++++++++++------------ 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index 711431c18..2d61d1e30 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -246,15 +246,6 @@ class AnnotatorResult(ConfiguredBaseModel): class Document(NamedEntity): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic', 'tree_root': True}) - nutrient_terms: Optional[List[str]] = Field(None, description="""A list of any names of nutrients or micronutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_terms', - 'annotations': {'prompt': {'tag': 'prompt', - 'value': 'A semicolon-separated list of names of ' - 'chemicals, nutrients, or micronutrients ' - 'mentioned in the input document.'}, - 'prompt.examples': {'tag': 'prompt.examples', - 'value': 'biotin; cobalamin; iodine; ' - 'zinc; coenzyme Q10'}}, - 'domain_of': ['Document']} }) nutrient_to_disease_relationships: Optional[List[NutrientToDiseaseRelationship]] = Field(None, description="""A list of relationships between nutrients and biochemical diseases.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_disease_relationships', 'annotations': {'prompt': {'tag': 'prompt', 'value': 'A semicolon-separated list of ' diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index d1ae82528..1a90d2474 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -29,18 +29,18 @@ classes: tree_root: true is_a: NamedEntity attributes: - nutrient_terms: - range: Nutrient - multivalued: true - description: >- - A list of any names of nutrients or micronutrients. - annotations: - prompt: >- - A semicolon-separated list of names of chemicals, - nutrients, or micronutrients mentioned in the - input document. - prompt.examples: >- - biotin; cobalamin; iodine; zinc; coenzyme Q10 + # nutrient_terms: + # range: Nutrient + # multivalued: true + # description: >- + # A list of any names of nutrients or micronutrients. + # annotations: + # prompt: >- + # A semicolon-separated list of names of chemicals, + # nutrients, or micronutrients mentioned in the + # input document. + # prompt.examples: >- + # biotin; cobalamin; iodine; zinc; coenzyme Q10 nutrient_to_disease_relationships: range: NutrientToDiseaseRelationship multivalued: true From faacb2e3bbfb668c72b6f3cfa6f5b62edb78316e Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 12:53:44 -0500 Subject: [PATCH 18/21] First pass at reference extraction --- src/ontogpt/templates/mic.py | 108 +++++++++++++++++++++++++++++---- src/ontogpt/templates/mic.yaml | 81 +++++++++++++++++++++++-- 2 files changed, 171 insertions(+), 18 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index 2d61d1e30..c0daea38b 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -244,6 +244,9 @@ class AnnotatorResult(ConfiguredBaseModel): class Document(NamedEntity): + """ + A document that contains information about micronutrients, including vitamins and minerals. + """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic', 'tree_root': True}) nutrient_to_disease_relationships: Optional[List[NutrientToDiseaseRelationship]] = Field(None, description="""A list of relationships between nutrients and biochemical diseases.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_disease_relationships', @@ -262,7 +265,18 @@ class Document(NamedEntity): 'HAS RELATIONSHIP WITH Disease". ' 'Relationships may include TREATS, ' 'PREVENTS, INCREASES RISK OF, DECREASES ' - 'RISK OF, or others.'}}, + 'RISK OF, or others. For each ' + 'relationship, include the full text of ' + 'the corresponding reference in ' + 'parentheses after the relationship; ' + 'e.g., if the text indicates a reference ' + 'of (3), include the full text of ' + 'reference 3 as per the reference list, ' + 'e.g., "Subject HAS RELATIONSHIP WITH ' + 'Object Author A et al. Title of work. J ' + 'Something. 1984;26(3):511-523)". If the ' + 'reference includes a URL, include that ' + 'as well.'}}, 'domain_of': ['Document']} }) nutrient_to_phenotype_relationships: Optional[List[NutrientToPhenotypeRelationship]] = Field(None, description="""A list of relationships between nutrients and biological phenotypes.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_phenotype_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -285,7 +299,18 @@ class Document(NamedEntity): 'Represent the relationship as triples, ' 'e.g., "Nutrient HAS RELATIONSHIP WITH ' 'Phenotype". Relationships may include ' - 'TREATS, PREVENTS, or others.'}}, + 'TREATS, PREVENTS, or others. For each ' + 'relationship, include the full text of ' + 'the corresponding reference in ' + 'parentheses after the relationship; ' + 'e.g., if the text indicates a reference ' + 'of (3), include the full text of ' + 'reference 3 as per the reference list, ' + 'e.g., "Subject HAS RELATIONSHIP WITH ' + 'Object Author A et al. Title of work. J ' + 'Something. 1984;26(3):511-523)". If the ' + 'reference includes a URL, include that ' + 'as well.'}}, 'domain_of': ['Document']} }) nutrient_to_biological_process_relationships: Optional[List[NutrientToBiologicalProcessRelationship]] = Field(None, description="""A list of relationships between nutrients and biological processes.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_biological_process_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -308,7 +333,18 @@ class Document(NamedEntity): 'triples, e.g., "Nutrient HAS ' 'RELATIONSHIP WITH Process". ' 'Relationships may include REGULATES, ' - 'PARTICIPATES IN, or others.'}}, + 'PARTICIPATES IN, or others. For each ' + 'relationship, include the full text of ' + 'the corresponding reference in ' + 'parentheses after the relationship; ' + 'e.g., if the text indicates a reference ' + 'of (3), include the full text of ' + 'reference 3 as per the reference list, ' + 'e.g., "Subject HAS RELATIONSHIP WITH ' + 'Object Author A et al. Title of work. J ' + 'Something. 1984;26(3):511-523)". If the ' + 'reference includes a URL, include that ' + 'as well.'}}, 'domain_of': ['Document']} }) nutrient_to_health_status_relationships: Optional[List[NutrientToHealthStatusRelationship]] = Field(None, description="""A list of relationships between nutrients and health of a specific part or system of the human body.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_health_status_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -329,7 +365,17 @@ class Document(NamedEntity): 'Represent the relationship as triples, ' 'e.g., "Nutrient HAS RELATIONSHIP WITH ' 'Part". Relationships should be SUPPORTS ' - 'HEALTH OF.'}}, + 'HEALTH OF. For each relationship, ' + 'include the full text of the ' + 'corresponding reference in parentheses ' + 'after the relationship; e.g., if the ' + 'text indicates a reference of (3), ' + 'include the full text of reference 3 as ' + 'per the reference list, e.g., "Subject ' + 'HAS RELATIONSHIP WITH Object Author A et ' + 'al. Title of work. J Something. ' + '1984;26(3):511-523)". If the reference ' + 'includes a URL, include that as well.'}}, 'domain_of': ['Document']} }) nutrient_to_source_relationships: Optional[List[NutrientToSourceRelationship]] = Field(None, description="""A list of relationships between nutrients and their sources in food or supplements.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_source_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -343,7 +389,18 @@ class Document(NamedEntity): '"beef", or "breakfast cereal". Represent ' 'the relationship as triples, e.g., ' '"Nutrient HAS RELATIONSHIP WITH Source". ' - 'Relationships should be PROVIDED BY.'}}, + 'Relationships should be PROVIDED BY. For ' + 'each relationship, include the full text ' + 'of the corresponding reference in ' + 'parentheses after the relationship; ' + 'e.g., if the text indicates a reference ' + 'of (3), include the full text of ' + 'reference 3 as per the reference list, ' + 'e.g., "Subject HAS RELATIONSHIP WITH ' + 'Object Author A et al. Title of work. J ' + 'Something. 1984;26(3):511-523)". If the ' + 'reference includes a URL, include that ' + 'as well.'}}, 'domain_of': ['Document']} }) nutrient_to_nutrient_relationships: Optional[List[NutrientToNutrientRelationship]] = Field(None, description="""A list of relationships between nutrients and other nutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_nutrient_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -357,7 +414,18 @@ class Document(NamedEntity): 'and proteins (e.g., a nutrient and its ' 'receptor protein). Represent the ' 'relationship as triples, e.g., "Nutrient ' - 'INTERACTS WITH Nutrient".'}}, + 'INTERACTS WITH Nutrient". For each ' + 'relationship, include the full text of ' + 'the corresponding reference in ' + 'parentheses after the relationship; ' + 'e.g., if the text indicates a reference ' + 'of (3), include the full text of ' + 'reference 3 as per the reference list, ' + 'e.g., "Subject HAS RELATIONSHIP WITH ' + 'Object Author A et al. Title of work. J ' + 'Something. 1984;26(3):511-523)". If the ' + 'reference includes a URL, include that ' + 'as well.'}}, 'domain_of': ['Document']} }) id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, @@ -631,7 +699,16 @@ def pattern_original_spans(cls, v): return v -class NutrientToDiseaseRelationship(CompoundExpression): +class ScientificClaim(CompoundExpression): + """ + A scientific claim made in the input text, structured as a relationship between entities. + """ + linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic'}) + + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) + + +class NutrientToDiseaseRelationship(ScientificClaim): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'comments': ['a Chemical to Disease relationship'], 'from_schema': 'http://w3id.org/ontogpt/mic'}) @@ -649,9 +726,10 @@ class NutrientToDiseaseRelationship(CompoundExpression): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) disease: Optional[str] = Field(None, description="""The name of the disease defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', 'domain_of': ['NutrientToDiseaseRelationship']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) -class NutrientToPhenotypeRelationship(CompoundExpression): +class NutrientToPhenotypeRelationship(ScientificClaim): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'comments': ['a Chemical to Phenotype relationship'], 'from_schema': 'http://w3id.org/ontogpt/mic'}) @@ -669,9 +747,10 @@ class NutrientToPhenotypeRelationship(CompoundExpression): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) phenotype: Optional[str] = Field(None, description="""The name of the phenotype defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'phenotype', 'domain_of': ['NutrientToPhenotypeRelationship']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) -class NutrientToBiologicalProcessRelationship(CompoundExpression): +class NutrientToBiologicalProcessRelationship(ScientificClaim): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic'}) nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', @@ -688,9 +767,10 @@ class NutrientToBiologicalProcessRelationship(CompoundExpression): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) process: Optional[str] = Field(None, description="""The name of the biological process defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'process', 'domain_of': ['NutrientToBiologicalProcessRelationship']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) -class NutrientToNutrientRelationship(CompoundExpression): +class NutrientToNutrientRelationship(ScientificClaim): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'comments': ['a Chemical to Chemical relationship'], 'from_schema': 'http://w3id.org/ontogpt/mic'}) @@ -703,9 +783,10 @@ class NutrientToNutrientRelationship(CompoundExpression): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) nutrient_object: Optional[str] = Field(None, description="""The name of a nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_object', 'domain_of': ['NutrientToNutrientRelationship']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) -class NutrientToHealthStatusRelationship(CompoundExpression): +class NutrientToHealthStatusRelationship(ScientificClaim): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic'}) nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', @@ -722,9 +803,10 @@ class NutrientToHealthStatusRelationship(CompoundExpression): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) anatomy: Optional[str] = Field(None, description="""The name of the anatomical part or system defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'anatomy', 'domain_of': ['NutrientToHealthStatusRelationship']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) -class NutrientToSourceRelationship(CompoundExpression): +class NutrientToSourceRelationship(ScientificClaim): linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic'}) nutrient: Optional[str] = Field(None, description="""The name of the nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient', @@ -741,6 +823,7 @@ class NutrientToSourceRelationship(CompoundExpression): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) source: Optional[str] = Field(None, description="""The name of the food or supplement defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'source', 'domain_of': ['NutrientToSourceRelationship']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) # Model rebuild @@ -761,6 +844,7 @@ class NutrientToSourceRelationship(CompoundExpression): BiologicalProcess.model_rebuild() Anatomy.model_rebuild() FoodOrSupplement.model_rebuild() +ScientificClaim.model_rebuild() NutrientToDiseaseRelationship.model_rebuild() NutrientToPhenotypeRelationship.model_rebuild() NutrientToBiologicalProcessRelationship.model_rebuild() diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index 1a90d2474..bf587f97d 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -20,6 +20,11 @@ prefixes: default_prefix: mic default_range: string +# TODO: reduce redundancy in reference extraction. +# Providing instructions through the root class +# doesn't seem to work, whether in the description +# or the prompt field. + imports: - linkml:types - core @@ -28,6 +33,9 @@ classes: Document: tree_root: true is_a: NamedEntity + description: >- + A document that contains information about + micronutrients, including vitamins and minerals. attributes: # nutrient_terms: # range: Nutrient @@ -61,6 +69,14 @@ classes: Disease". Relationships may include TREATS, PREVENTS, INCREASES RISK OF, DECREASES RISK OF, or others. + For each relationship, include the full text + of the corresponding reference in parentheses after the + relationship; e.g., if the text indicates a reference + of (3), include the full text of reference 3 as per the + reference list, e.g., "Subject HAS RELATIONSHIP WITH Object + Author A et al. Title of work. J Something. + 1984;26(3):511-523)". If the reference includes a URL, + include that as well. nutrient_to_phenotype_relationships: range: NutrientToPhenotypeRelationship multivalued: true @@ -84,6 +100,14 @@ classes: relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Phenotype". Relationships may include TREATS, PREVENTS, or others. + For each relationship, include the full text + of the corresponding reference in parentheses after the + relationship; e.g., if the text indicates a reference + of (3), include the full text of reference 3 as per the + reference list, e.g., "Subject HAS RELATIONSHIP WITH Object + Author A et al. Title of work. J Something. + 1984;26(3):511-523)". If the reference includes a URL, + include that as well. nutrient_to_biological_process_relationships: range: NutrientToBiologicalProcessRelationship multivalued: true @@ -106,6 +130,14 @@ classes: Represent the relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Process". Relationships may include REGULATES, PARTICIPATES IN, or others. + For each relationship, include the full text + of the corresponding reference in parentheses after the + relationship; e.g., if the text indicates a reference + of (3), include the full text of reference 3 as per the + reference list, e.g., "Subject HAS RELATIONSHIP WITH Object + Author A et al. Title of work. J Something. + 1984;26(3):511-523)". If the reference includes a URL, + include that as well. nutrient_to_health_status_relationships: range: NutrientToHealthStatusRelationship multivalued: true @@ -127,6 +159,14 @@ classes: should be changed to "digestive system". Represent the relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Part". Relationships should be SUPPORTS HEALTH OF. + For each relationship, include the full text + of the corresponding reference in parentheses after the + relationship; e.g., if the text indicates a reference + of (3), include the full text of reference 3 as per the + reference list, e.g., "Subject HAS RELATIONSHIP WITH Object + Author A et al. Title of work. J Something. + 1984;26(3):511-523)". If the reference includes a URL, + include that as well. nutrient_to_source_relationships: range: NutrientToSourceRelationship multivalued: true @@ -144,6 +184,14 @@ classes: Represent the relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Source". Relationships should be PROVIDED BY. + For each relationship, include the full text + of the corresponding reference in parentheses after the + relationship; e.g., if the text indicates a reference + of (3), include the full text of reference 3 as per the + reference list, e.g., "Subject HAS RELATIONSHIP WITH Object + Author A et al. Title of work. J Something. + 1984;26(3):511-523)". If the reference includes a URL, + include that as well. nutrient_to_nutrient_relationships: range: NutrientToNutrientRelationship multivalued: true @@ -161,6 +209,14 @@ classes: and its receptor protein). Represent the relationship as triples, e.g., "Nutrient INTERACTS WITH Nutrient". + For each relationship, include the full text + of the corresponding reference in parentheses after the + relationship; e.g., if the text indicates a reference + of (3), include the full text of reference 3 as per the + reference list, e.g., "Subject HAS RELATIONSHIP WITH Object + Author A et al. Title of work. J Something. + 1984;26(3):511-523)". If the reference includes a URL, + include that as well. Nutrient: is_a: NamedEntity @@ -234,8 +290,21 @@ classes: prompt: >- The name of a food or supplement. - NutrientToDiseaseRelationship: + ScientificClaim: is_a: CompoundExpression + description: >- + A scientific claim made in the input text, + structured as a relationship between entities. + attributes: + references: + range: string + multivalued: true + description: >- + A semi-colon separated list of references + supporting the claim. + + NutrientToDiseaseRelationship: + is_a: ScientificClaim attributes: nutrient: range: Nutrient @@ -255,7 +324,7 @@ classes: - a Chemical to Disease relationship NutrientToPhenotypeRelationship: - is_a: CompoundExpression + is_a: ScientificClaim attributes: nutrient: range: Nutrient @@ -275,7 +344,7 @@ classes: - a Chemical to Phenotype relationship NutrientToBiologicalProcessRelationship: - is_a: CompoundExpression + is_a: ScientificClaim attributes: nutrient: range: Nutrient @@ -293,7 +362,7 @@ classes: The name of the biological process defined in the triple. NutrientToNutrientRelationship: - is_a: CompoundExpression + is_a: ScientificClaim attributes: nutrient_subject: range: Nutrient @@ -314,7 +383,7 @@ classes: - a Chemical to Chemical relationship NutrientToHealthStatusRelationship: - is_a: CompoundExpression + is_a: ScientificClaim attributes: nutrient: range: Nutrient @@ -333,7 +402,7 @@ classes: defined in the triple. NutrientToSourceRelationship: - is_a: CompoundExpression + is_a: ScientificClaim attributes: nutrient: range: Nutrient From 4ba63a222983f70a80fd25fa2e4914cc6d7d9704 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 13:01:13 -0500 Subject: [PATCH 19/21] Second pass at reference extraction --- src/ontogpt/templates/mic.py | 102 +++++++++++++-------------------- src/ontogpt/templates/mic.yaml | 77 +++++++++++-------------- 2 files changed, 74 insertions(+), 105 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index c0daea38b..6c5bb5d1b 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -266,17 +266,13 @@ class Document(NamedEntity): 'Relationships may include TREATS, ' 'PREVENTS, INCREASES RISK OF, DECREASES ' 'RISK OF, or others. For each ' - 'relationship, include the full text of ' - 'the corresponding reference in ' + 'relationship, include the number of the ' + 'corresponding reference(s) in ' 'parentheses after the relationship; ' 'e.g., if the text indicates a reference ' - 'of (3), include the full text of ' - 'reference 3 as per the reference list, ' - 'e.g., "Subject HAS RELATIONSHIP WITH ' - 'Object Author A et al. Title of work. J ' - 'Something. 1984;26(3):511-523)". If the ' - 'reference includes a URL, include that ' - 'as well.'}}, + 'of (3), include it after the object in ' + 'the relationship, e.g., "Subject HAS ' + 'RELATIONSHIP WITH Object (3)".'}}, 'domain_of': ['Document']} }) nutrient_to_phenotype_relationships: Optional[List[NutrientToPhenotypeRelationship]] = Field(None, description="""A list of relationships between nutrients and biological phenotypes.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_phenotype_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -300,17 +296,13 @@ class Document(NamedEntity): 'e.g., "Nutrient HAS RELATIONSHIP WITH ' 'Phenotype". Relationships may include ' 'TREATS, PREVENTS, or others. For each ' - 'relationship, include the full text of ' - 'the corresponding reference in ' + 'relationship, include the number of the ' + 'corresponding reference(s) in ' 'parentheses after the relationship; ' 'e.g., if the text indicates a reference ' - 'of (3), include the full text of ' - 'reference 3 as per the reference list, ' - 'e.g., "Subject HAS RELATIONSHIP WITH ' - 'Object Author A et al. Title of work. J ' - 'Something. 1984;26(3):511-523)". If the ' - 'reference includes a URL, include that ' - 'as well.'}}, + 'of (3), include it after the object in ' + 'the relationship, e.g., "Subject HAS ' + 'RELATIONSHIP WITH Object (3)".'}}, 'domain_of': ['Document']} }) nutrient_to_biological_process_relationships: Optional[List[NutrientToBiologicalProcessRelationship]] = Field(None, description="""A list of relationships between nutrients and biological processes.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_biological_process_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -334,17 +326,13 @@ class Document(NamedEntity): 'RELATIONSHIP WITH Process". ' 'Relationships may include REGULATES, ' 'PARTICIPATES IN, or others. For each ' - 'relationship, include the full text of ' - 'the corresponding reference in ' + 'relationship, include the number of the ' + 'corresponding reference(s) in ' 'parentheses after the relationship; ' 'e.g., if the text indicates a reference ' - 'of (3), include the full text of ' - 'reference 3 as per the reference list, ' - 'e.g., "Subject HAS RELATIONSHIP WITH ' - 'Object Author A et al. Title of work. J ' - 'Something. 1984;26(3):511-523)". If the ' - 'reference includes a URL, include that ' - 'as well.'}}, + 'of (3), include it after the object in ' + 'the relationship, e.g., "Subject HAS ' + 'RELATIONSHIP WITH Object (3)".'}}, 'domain_of': ['Document']} }) nutrient_to_health_status_relationships: Optional[List[NutrientToHealthStatusRelationship]] = Field(None, description="""A list of relationships between nutrients and health of a specific part or system of the human body.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_health_status_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -366,16 +354,13 @@ class Document(NamedEntity): 'e.g., "Nutrient HAS RELATIONSHIP WITH ' 'Part". Relationships should be SUPPORTS ' 'HEALTH OF. For each relationship, ' - 'include the full text of the ' - 'corresponding reference in parentheses ' - 'after the relationship; e.g., if the ' - 'text indicates a reference of (3), ' - 'include the full text of reference 3 as ' - 'per the reference list, e.g., "Subject ' - 'HAS RELATIONSHIP WITH Object Author A et ' - 'al. Title of work. J Something. ' - '1984;26(3):511-523)". If the reference ' - 'includes a URL, include that as well.'}}, + 'include the number of the corresponding ' + 'reference(s) in parentheses after the ' + 'relationship; e.g., if the text ' + 'indicates a reference of (3), include it ' + 'after the object in the relationship, ' + 'e.g., "Subject HAS RELATIONSHIP WITH ' + 'Object (3)".'}}, 'domain_of': ['Document']} }) nutrient_to_source_relationships: Optional[List[NutrientToSourceRelationship]] = Field(None, description="""A list of relationships between nutrients and their sources in food or supplements.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_source_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -390,17 +375,13 @@ class Document(NamedEntity): 'the relationship as triples, e.g., ' '"Nutrient HAS RELATIONSHIP WITH Source". ' 'Relationships should be PROVIDED BY. For ' - 'each relationship, include the full text ' - 'of the corresponding reference in ' + 'each relationship, include the number of ' + 'the corresponding reference(s) in ' 'parentheses after the relationship; ' 'e.g., if the text indicates a reference ' - 'of (3), include the full text of ' - 'reference 3 as per the reference list, ' - 'e.g., "Subject HAS RELATIONSHIP WITH ' - 'Object Author A et al. Title of work. J ' - 'Something. 1984;26(3):511-523)". If the ' - 'reference includes a URL, include that ' - 'as well.'}}, + 'of (3), include it after the object in ' + 'the relationship, e.g., "Subject HAS ' + 'RELATIONSHIP WITH Object (3)".'}}, 'domain_of': ['Document']} }) nutrient_to_nutrient_relationships: Optional[List[NutrientToNutrientRelationship]] = Field(None, description="""A list of relationships between nutrients and other nutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_nutrient_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -415,18 +396,15 @@ class Document(NamedEntity): 'receptor protein). Represent the ' 'relationship as triples, e.g., "Nutrient ' 'INTERACTS WITH Nutrient". For each ' - 'relationship, include the full text of ' - 'the corresponding reference in ' + 'relationship, include the number of the ' + 'corresponding reference(s) in ' 'parentheses after the relationship; ' 'e.g., if the text indicates a reference ' - 'of (3), include the full text of ' - 'reference 3 as per the reference list, ' - 'e.g., "Subject HAS RELATIONSHIP WITH ' - 'Object Author A et al. Title of work. J ' - 'Something. 1984;26(3):511-523)". If the ' - 'reference includes a URL, include that ' - 'as well.'}}, + 'of (3), include it after the object in ' + 'the relationship, e.g., "Subject HAS ' + 'RELATIONSHIP WITH Object (3)".'}}, 'domain_of': ['Document']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of all references supporting the document, found in the References section. Include the number of each reference, its full text as provided in the input, and any accompanying URLs.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, 'comments': ['this is populated during the grounding and normalization step'], @@ -705,7 +683,7 @@ class ScientificClaim(CompoundExpression): """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic'}) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) class NutrientToDiseaseRelationship(ScientificClaim): @@ -726,7 +704,7 @@ class NutrientToDiseaseRelationship(ScientificClaim): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) disease: Optional[str] = Field(None, description="""The name of the disease defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', 'domain_of': ['NutrientToDiseaseRelationship']} }) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) class NutrientToPhenotypeRelationship(ScientificClaim): @@ -747,7 +725,7 @@ class NutrientToPhenotypeRelationship(ScientificClaim): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) phenotype: Optional[str] = Field(None, description="""The name of the phenotype defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'phenotype', 'domain_of': ['NutrientToPhenotypeRelationship']} }) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) class NutrientToBiologicalProcessRelationship(ScientificClaim): @@ -767,7 +745,7 @@ class NutrientToBiologicalProcessRelationship(ScientificClaim): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) process: Optional[str] = Field(None, description="""The name of the biological process defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'process', 'domain_of': ['NutrientToBiologicalProcessRelationship']} }) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) class NutrientToNutrientRelationship(ScientificClaim): @@ -783,7 +761,7 @@ class NutrientToNutrientRelationship(ScientificClaim): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) nutrient_object: Optional[str] = Field(None, description="""The name of a nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_object', 'domain_of': ['NutrientToNutrientRelationship']} }) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) class NutrientToHealthStatusRelationship(ScientificClaim): @@ -803,7 +781,7 @@ class NutrientToHealthStatusRelationship(ScientificClaim): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) anatomy: Optional[str] = Field(None, description="""The name of the anatomical part or system defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'anatomy', 'domain_of': ['NutrientToHealthStatusRelationship']} }) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) class NutrientToSourceRelationship(ScientificClaim): @@ -823,7 +801,7 @@ class NutrientToSourceRelationship(ScientificClaim): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) source: Optional[str] = Field(None, description="""The name of the food or supplement defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'source', 'domain_of': ['NutrientToSourceRelationship']} }) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) # Model rebuild diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index bf587f97d..466f85b69 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -69,14 +69,11 @@ classes: Disease". Relationships may include TREATS, PREVENTS, INCREASES RISK OF, DECREASES RISK OF, or others. - For each relationship, include the full text - of the corresponding reference in parentheses after the + For each relationship, include the number of the + corresponding reference(s) in parentheses after the relationship; e.g., if the text indicates a reference - of (3), include the full text of reference 3 as per the - reference list, e.g., "Subject HAS RELATIONSHIP WITH Object - Author A et al. Title of work. J Something. - 1984;26(3):511-523)". If the reference includes a URL, - include that as well. + of (3), include it after the object in the relationship, + e.g., "Subject HAS RELATIONSHIP WITH Object (3)". nutrient_to_phenotype_relationships: range: NutrientToPhenotypeRelationship multivalued: true @@ -100,14 +97,11 @@ classes: relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Phenotype". Relationships may include TREATS, PREVENTS, or others. - For each relationship, include the full text - of the corresponding reference in parentheses after the + For each relationship, include the number of the + corresponding reference(s) in parentheses after the relationship; e.g., if the text indicates a reference - of (3), include the full text of reference 3 as per the - reference list, e.g., "Subject HAS RELATIONSHIP WITH Object - Author A et al. Title of work. J Something. - 1984;26(3):511-523)". If the reference includes a URL, - include that as well. + of (3), include it after the object in the relationship, + e.g., "Subject HAS RELATIONSHIP WITH Object (3)". nutrient_to_biological_process_relationships: range: NutrientToBiologicalProcessRelationship multivalued: true @@ -130,14 +124,11 @@ classes: Represent the relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Process". Relationships may include REGULATES, PARTICIPATES IN, or others. - For each relationship, include the full text - of the corresponding reference in parentheses after the + For each relationship, include the number of the + corresponding reference(s) in parentheses after the relationship; e.g., if the text indicates a reference - of (3), include the full text of reference 3 as per the - reference list, e.g., "Subject HAS RELATIONSHIP WITH Object - Author A et al. Title of work. J Something. - 1984;26(3):511-523)". If the reference includes a URL, - include that as well. + of (3), include it after the object in the relationship, + e.g., "Subject HAS RELATIONSHIP WITH Object (3)". nutrient_to_health_status_relationships: range: NutrientToHealthStatusRelationship multivalued: true @@ -159,14 +150,11 @@ classes: should be changed to "digestive system". Represent the relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Part". Relationships should be SUPPORTS HEALTH OF. - For each relationship, include the full text - of the corresponding reference in parentheses after the + For each relationship, include the number of the + corresponding reference(s) in parentheses after the relationship; e.g., if the text indicates a reference - of (3), include the full text of reference 3 as per the - reference list, e.g., "Subject HAS RELATIONSHIP WITH Object - Author A et al. Title of work. J Something. - 1984;26(3):511-523)". If the reference includes a URL, - include that as well. + of (3), include it after the object in the relationship, + e.g., "Subject HAS RELATIONSHIP WITH Object (3)". nutrient_to_source_relationships: range: NutrientToSourceRelationship multivalued: true @@ -184,14 +172,11 @@ classes: Represent the relationship as triples, e.g., "Nutrient HAS RELATIONSHIP WITH Source". Relationships should be PROVIDED BY. - For each relationship, include the full text - of the corresponding reference in parentheses after the + For each relationship, include the number of the + corresponding reference(s) in parentheses after the relationship; e.g., if the text indicates a reference - of (3), include the full text of reference 3 as per the - reference list, e.g., "Subject HAS RELATIONSHIP WITH Object - Author A et al. Title of work. J Something. - 1984;26(3):511-523)". If the reference includes a URL, - include that as well. + of (3), include it after the object in the relationship, + e.g., "Subject HAS RELATIONSHIP WITH Object (3)". nutrient_to_nutrient_relationships: range: NutrientToNutrientRelationship multivalued: true @@ -209,14 +194,19 @@ classes: and its receptor protein). Represent the relationship as triples, e.g., "Nutrient INTERACTS WITH Nutrient". - For each relationship, include the full text - of the corresponding reference in parentheses after the + For each relationship, include the number of the + corresponding reference(s) in parentheses after the relationship; e.g., if the text indicates a reference - of (3), include the full text of reference 3 as per the - reference list, e.g., "Subject HAS RELATIONSHIP WITH Object - Author A et al. Title of work. J Something. - 1984;26(3):511-523)". If the reference includes a URL, - include that as well. + of (3), include it after the object in the relationship, + e.g., "Subject HAS RELATIONSHIP WITH Object (3)". + references: + range: string + multivalued: true + description: >- + A semi-colon separated list of all references + supporting the document, found in the References section. + Include the number of each reference, its full text as provided in + the input, and any accompanying URLs. Nutrient: is_a: NamedEntity @@ -301,7 +291,8 @@ classes: multivalued: true description: >- A semi-colon separated list of references - supporting the claim. + supporting the claim, identified by number + only. NutrientToDiseaseRelationship: is_a: ScientificClaim From 54a65ba82edf06194c53be967eaf57fc063fa8f6 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 13:12:04 -0500 Subject: [PATCH 20/21] Extracting full reflist isn't working. Commenting out --- src/ontogpt/templates/mic.py | 32 ++++++++++++++++++-------------- src/ontogpt/templates/mic.yaml | 23 +++++++++++++++-------- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index 6c5bb5d1b..96e2bf69e 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -272,7 +272,8 @@ class Document(NamedEntity): 'e.g., if the text indicates a reference ' 'of (3), include it after the object in ' 'the relationship, e.g., "Subject HAS ' - 'RELATIONSHIP WITH Object (3)".'}}, + 'RELATIONSHIP WITH Object (3)". Do not ' + 'include newlines.'}}, 'domain_of': ['Document']} }) nutrient_to_phenotype_relationships: Optional[List[NutrientToPhenotypeRelationship]] = Field(None, description="""A list of relationships between nutrients and biological phenotypes.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_phenotype_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -302,7 +303,8 @@ class Document(NamedEntity): 'e.g., if the text indicates a reference ' 'of (3), include it after the object in ' 'the relationship, e.g., "Subject HAS ' - 'RELATIONSHIP WITH Object (3)".'}}, + 'RELATIONSHIP WITH Object (3)". Do not ' + 'include newlines.'}}, 'domain_of': ['Document']} }) nutrient_to_biological_process_relationships: Optional[List[NutrientToBiologicalProcessRelationship]] = Field(None, description="""A list of relationships between nutrients and biological processes.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_biological_process_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -332,7 +334,8 @@ class Document(NamedEntity): 'e.g., if the text indicates a reference ' 'of (3), include it after the object in ' 'the relationship, e.g., "Subject HAS ' - 'RELATIONSHIP WITH Object (3)".'}}, + 'RELATIONSHIP WITH Object (3)". Do not ' + 'include newlines.'}}, 'domain_of': ['Document']} }) nutrient_to_health_status_relationships: Optional[List[NutrientToHealthStatusRelationship]] = Field(None, description="""A list of relationships between nutrients and health of a specific part or system of the human body.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_health_status_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -360,7 +363,7 @@ class Document(NamedEntity): 'indicates a reference of (3), include it ' 'after the object in the relationship, ' 'e.g., "Subject HAS RELATIONSHIP WITH ' - 'Object (3)".'}}, + 'Object (3)". Do not include newlines.'}}, 'domain_of': ['Document']} }) nutrient_to_source_relationships: Optional[List[NutrientToSourceRelationship]] = Field(None, description="""A list of relationships between nutrients and their sources in food or supplements.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_source_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -381,7 +384,8 @@ class Document(NamedEntity): 'e.g., if the text indicates a reference ' 'of (3), include it after the object in ' 'the relationship, e.g., "Subject HAS ' - 'RELATIONSHIP WITH Object (3)".'}}, + 'RELATIONSHIP WITH Object (3)". Do not ' + 'include newlines.'}}, 'domain_of': ['Document']} }) nutrient_to_nutrient_relationships: Optional[List[NutrientToNutrientRelationship]] = Field(None, description="""A list of relationships between nutrients and other nutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_nutrient_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -402,9 +406,9 @@ class Document(NamedEntity): 'e.g., if the text indicates a reference ' 'of (3), include it after the object in ' 'the relationship, e.g., "Subject HAS ' - 'RELATIONSHIP WITH Object (3)".'}}, + 'RELATIONSHIP WITH Object (3)". Do not ' + 'include newlines.'}}, 'domain_of': ['Document']} }) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of all references supporting the document, found in the References section. Include the number of each reference, its full text as provided in the input, and any accompanying URLs.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, 'comments': ['this is populated during the grounding and normalization step'], @@ -683,7 +687,7 @@ class ScientificClaim(CompoundExpression): """ linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({'from_schema': 'http://w3id.org/ontogpt/mic'}) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) class NutrientToDiseaseRelationship(ScientificClaim): @@ -704,7 +708,7 @@ class NutrientToDiseaseRelationship(ScientificClaim): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) disease: Optional[str] = Field(None, description="""The name of the disease defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'disease', 'domain_of': ['NutrientToDiseaseRelationship']} }) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) class NutrientToPhenotypeRelationship(ScientificClaim): @@ -725,7 +729,7 @@ class NutrientToPhenotypeRelationship(ScientificClaim): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) phenotype: Optional[str] = Field(None, description="""The name of the phenotype defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'phenotype', 'domain_of': ['NutrientToPhenotypeRelationship']} }) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) class NutrientToBiologicalProcessRelationship(ScientificClaim): @@ -745,7 +749,7 @@ class NutrientToBiologicalProcessRelationship(ScientificClaim): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) process: Optional[str] = Field(None, description="""The name of the biological process defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'process', 'domain_of': ['NutrientToBiologicalProcessRelationship']} }) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) class NutrientToNutrientRelationship(ScientificClaim): @@ -761,7 +765,7 @@ class NutrientToNutrientRelationship(ScientificClaim): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) nutrient_object: Optional[str] = Field(None, description="""The name of a nutrient defined in the triple, including vitamins and minerals.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_object', 'domain_of': ['NutrientToNutrientRelationship']} }) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) class NutrientToHealthStatusRelationship(ScientificClaim): @@ -781,7 +785,7 @@ class NutrientToHealthStatusRelationship(ScientificClaim): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) anatomy: Optional[str] = Field(None, description="""The name of the anatomical part or system defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'anatomy', 'domain_of': ['NutrientToHealthStatusRelationship']} }) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) class NutrientToSourceRelationship(ScientificClaim): @@ -801,7 +805,7 @@ class NutrientToSourceRelationship(ScientificClaim): 'NutrientToHealthStatusRelationship', 'NutrientToSourceRelationship']} }) source: Optional[str] = Field(None, description="""The name of the food or supplement defined in the triple.""", json_schema_extra = { "linkml_meta": {'alias': 'source', 'domain_of': ['NutrientToSourceRelationship']} }) - references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['Document', 'ScientificClaim']} }) + references: Optional[List[str]] = Field(None, description="""A semi-colon separated list of references supporting the claim, identified by number only.""", json_schema_extra = { "linkml_meta": {'alias': 'references', 'domain_of': ['ScientificClaim']} }) # Model rebuild diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index 466f85b69..9898cbb57 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -74,6 +74,7 @@ classes: relationship; e.g., if the text indicates a reference of (3), include it after the object in the relationship, e.g., "Subject HAS RELATIONSHIP WITH Object (3)". + Do not include newlines. nutrient_to_phenotype_relationships: range: NutrientToPhenotypeRelationship multivalued: true @@ -102,6 +103,7 @@ classes: relationship; e.g., if the text indicates a reference of (3), include it after the object in the relationship, e.g., "Subject HAS RELATIONSHIP WITH Object (3)". + Do not include newlines. nutrient_to_biological_process_relationships: range: NutrientToBiologicalProcessRelationship multivalued: true @@ -129,6 +131,7 @@ classes: relationship; e.g., if the text indicates a reference of (3), include it after the object in the relationship, e.g., "Subject HAS RELATIONSHIP WITH Object (3)". + Do not include newlines. nutrient_to_health_status_relationships: range: NutrientToHealthStatusRelationship multivalued: true @@ -155,6 +158,7 @@ classes: relationship; e.g., if the text indicates a reference of (3), include it after the object in the relationship, e.g., "Subject HAS RELATIONSHIP WITH Object (3)". + Do not include newlines. nutrient_to_source_relationships: range: NutrientToSourceRelationship multivalued: true @@ -177,6 +181,7 @@ classes: relationship; e.g., if the text indicates a reference of (3), include it after the object in the relationship, e.g., "Subject HAS RELATIONSHIP WITH Object (3)". + Do not include newlines. nutrient_to_nutrient_relationships: range: NutrientToNutrientRelationship multivalued: true @@ -199,14 +204,16 @@ classes: relationship; e.g., if the text indicates a reference of (3), include it after the object in the relationship, e.g., "Subject HAS RELATIONSHIP WITH Object (3)". - references: - range: string - multivalued: true - description: >- - A semi-colon separated list of all references - supporting the document, found in the References section. - Include the number of each reference, its full text as provided in - the input, and any accompanying URLs. + Do not include newlines. + # references: + # range: string + # multivalued: true + # description: >- + # A semi-colon separated list of all references + # provided in the input text, found in the References section. + # Include the number of each reference, its full text as provided in + # the input, and any accompanying URLs. Do not truncate this list + # and do not include newlines. Nutrient: is_a: NamedEntity From 508f826fa66a1d9186c121e9f7e6757c01965388 Mon Sep 17 00:00:00 2001 From: caufieldjh Date: Fri, 20 Dec 2024 13:15:36 -0500 Subject: [PATCH 21/21] Tuning reference extraction --- src/ontogpt/templates/mic.py | 29 ++++++++++++++++++----------- src/ontogpt/templates/mic.yaml | 18 ++++++++++++------ 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/ontogpt/templates/mic.py b/src/ontogpt/templates/mic.py index 96e2bf69e..ad8a98e5f 100644 --- a/src/ontogpt/templates/mic.py +++ b/src/ontogpt/templates/mic.py @@ -272,8 +272,9 @@ class Document(NamedEntity): 'e.g., if the text indicates a reference ' 'of (3), include it after the object in ' 'the relationship, e.g., "Subject HAS ' - 'RELATIONSHIP WITH Object (3)". Do not ' - 'include newlines.'}}, + 'RELATIONSHIP WITH Object (3)". Delimit ' + 'multiple references with commas, e.g., ' + '"(3, 4)". Do not include newlines.'}}, 'domain_of': ['Document']} }) nutrient_to_phenotype_relationships: Optional[List[NutrientToPhenotypeRelationship]] = Field(None, description="""A list of relationships between nutrients and biological phenotypes.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_phenotype_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -303,8 +304,9 @@ class Document(NamedEntity): 'e.g., if the text indicates a reference ' 'of (3), include it after the object in ' 'the relationship, e.g., "Subject HAS ' - 'RELATIONSHIP WITH Object (3)". Do not ' - 'include newlines.'}}, + 'RELATIONSHIP WITH Object (3)". Delimit ' + 'multiple references with commas, e.g., ' + '"(3, 4)". Do not include newlines.'}}, 'domain_of': ['Document']} }) nutrient_to_biological_process_relationships: Optional[List[NutrientToBiologicalProcessRelationship]] = Field(None, description="""A list of relationships between nutrients and biological processes.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_biological_process_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -334,8 +336,9 @@ class Document(NamedEntity): 'e.g., if the text indicates a reference ' 'of (3), include it after the object in ' 'the relationship, e.g., "Subject HAS ' - 'RELATIONSHIP WITH Object (3)". Do not ' - 'include newlines.'}}, + 'RELATIONSHIP WITH Object (3)". Delimit ' + 'multiple references with commas, e.g., ' + '"(3, 4)". Do not include newlines.'}}, 'domain_of': ['Document']} }) nutrient_to_health_status_relationships: Optional[List[NutrientToHealthStatusRelationship]] = Field(None, description="""A list of relationships between nutrients and health of a specific part or system of the human body.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_health_status_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -363,7 +366,9 @@ class Document(NamedEntity): 'indicates a reference of (3), include it ' 'after the object in the relationship, ' 'e.g., "Subject HAS RELATIONSHIP WITH ' - 'Object (3)". Do not include newlines.'}}, + 'Object (3)". Delimit multiple references ' + 'with commas, e.g., "(3, 4)". Do not ' + 'include newlines.'}}, 'domain_of': ['Document']} }) nutrient_to_source_relationships: Optional[List[NutrientToSourceRelationship]] = Field(None, description="""A list of relationships between nutrients and their sources in food or supplements.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_source_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -384,8 +389,9 @@ class Document(NamedEntity): 'e.g., if the text indicates a reference ' 'of (3), include it after the object in ' 'the relationship, e.g., "Subject HAS ' - 'RELATIONSHIP WITH Object (3)". Do not ' - 'include newlines.'}}, + 'RELATIONSHIP WITH Object (3)". Delimit ' + 'multiple references with commas, e.g., ' + '"(3, 4)". Do not include newlines.'}}, 'domain_of': ['Document']} }) nutrient_to_nutrient_relationships: Optional[List[NutrientToNutrientRelationship]] = Field(None, description="""A list of relationships between nutrients and other nutrients.""", json_schema_extra = { "linkml_meta": {'alias': 'nutrient_to_nutrient_relationships', 'annotations': {'prompt': {'tag': 'prompt', @@ -406,8 +412,9 @@ class Document(NamedEntity): 'e.g., if the text indicates a reference ' 'of (3), include it after the object in ' 'the relationship, e.g., "Subject HAS ' - 'RELATIONSHIP WITH Object (3)". Do not ' - 'include newlines.'}}, + 'RELATIONSHIP WITH Object (3)". Delimit ' + 'multiple references with commas, e.g., ' + '"(3, 4)". Do not include newlines.'}}, 'domain_of': ['Document']} }) id: str = Field(..., description="""A unique identifier for the named entity""", json_schema_extra = { "linkml_meta": {'alias': 'id', 'annotations': {'prompt.skip': {'tag': 'prompt.skip', 'value': 'true'}}, diff --git a/src/ontogpt/templates/mic.yaml b/src/ontogpt/templates/mic.yaml index 9898cbb57..80af646ab 100644 --- a/src/ontogpt/templates/mic.yaml +++ b/src/ontogpt/templates/mic.yaml @@ -73,7 +73,8 @@ classes: corresponding reference(s) in parentheses after the relationship; e.g., if the text indicates a reference of (3), include it after the object in the relationship, - e.g., "Subject HAS RELATIONSHIP WITH Object (3)". + e.g., "Subject HAS RELATIONSHIP WITH Object (3)". Delimit + multiple references with commas, e.g., "(3, 4)". Do not include newlines. nutrient_to_phenotype_relationships: range: NutrientToPhenotypeRelationship @@ -102,7 +103,8 @@ classes: corresponding reference(s) in parentheses after the relationship; e.g., if the text indicates a reference of (3), include it after the object in the relationship, - e.g., "Subject HAS RELATIONSHIP WITH Object (3)". + e.g., "Subject HAS RELATIONSHIP WITH Object (3)". Delimit + multiple references with commas, e.g., "(3, 4)". Do not include newlines. nutrient_to_biological_process_relationships: range: NutrientToBiologicalProcessRelationship @@ -130,7 +132,8 @@ classes: corresponding reference(s) in parentheses after the relationship; e.g., if the text indicates a reference of (3), include it after the object in the relationship, - e.g., "Subject HAS RELATIONSHIP WITH Object (3)". + e.g., "Subject HAS RELATIONSHIP WITH Object (3)". Delimit + multiple references with commas, e.g., "(3, 4)". Do not include newlines. nutrient_to_health_status_relationships: range: NutrientToHealthStatusRelationship @@ -157,7 +160,8 @@ classes: corresponding reference(s) in parentheses after the relationship; e.g., if the text indicates a reference of (3), include it after the object in the relationship, - e.g., "Subject HAS RELATIONSHIP WITH Object (3)". + e.g., "Subject HAS RELATIONSHIP WITH Object (3)". Delimit + multiple references with commas, e.g., "(3, 4)". Do not include newlines. nutrient_to_source_relationships: range: NutrientToSourceRelationship @@ -180,7 +184,8 @@ classes: corresponding reference(s) in parentheses after the relationship; e.g., if the text indicates a reference of (3), include it after the object in the relationship, - e.g., "Subject HAS RELATIONSHIP WITH Object (3)". + e.g., "Subject HAS RELATIONSHIP WITH Object (3)". Delimit + multiple references with commas, e.g., "(3, 4)". Do not include newlines. nutrient_to_nutrient_relationships: range: NutrientToNutrientRelationship @@ -203,7 +208,8 @@ classes: corresponding reference(s) in parentheses after the relationship; e.g., if the text indicates a reference of (3), include it after the object in the relationship, - e.g., "Subject HAS RELATIONSHIP WITH Object (3)". + e.g., "Subject HAS RELATIONSHIP WITH Object (3)". Delimit + multiple references with commas, e.g., "(3, 4)". Do not include newlines. # references: # range: string