From 0cfe85396a9aa9f96113a7c3cba1feedb518a364 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 2 Apr 2025 16:49:09 +0200 Subject: [PATCH 001/106] Bump `pydantic-core` to v2.33.1 (#11678) --- pydantic/version.py | 2 +- pyproject.toml | 2 +- uv.lock | 204 ++++++++++++++++++++++---------------------- 3 files changed, 104 insertions(+), 104 deletions(-) diff --git a/pydantic/version.py b/pydantic/version.py index 1c15d010a49..59e1bb43211 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -68,7 +68,7 @@ def version_info() -> str: def check_pydantic_core_version() -> bool: """Check that the installed `pydantic-core` dependency is compatible.""" # Keep this in sync with the version constraint in the `pyproject.toml` dependencies: - return __pydantic_core_version__ == '2.33.0' + return __pydantic_core_version__ == '2.33.1' def parse_mypy_version(version: str) -> tuple[int, int, int]: diff --git a/pyproject.toml b/pyproject.toml index dc89759bdfa..d70650c36b5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,7 +46,7 @@ dependencies = [ 'typing-extensions>=4.12.2', 'annotated-types>=0.6.0', # Keep this in sync with the version in the `check_pydantic_core_version()` function: - "pydantic-core==2.33.0", + 'pydantic-core==2.33.1', 'typing-inspection>=0.4.0', ] dynamic = ['version', 'readme'] diff --git a/uv.lock b/uv.lock index b3769bf8d8d..26c0a259426 100644 --- a/uv.lock +++ b/uv.lock @@ -1780,7 +1780,7 @@ typechecking = [ requires-dist = [ { name = "annotated-types", specifier = ">=0.6.0" }, { name = "email-validator", marker = "extra == 'email'", specifier = ">=2.0.0" }, - { name = "pydantic-core", specifier = "==2.33.0" }, + { name = "pydantic-core", specifier = "==2.33.1" }, { name = "typing-extensions", specifier = ">=4.12.2" }, { name = "typing-inspection", specifier = ">=0.4.0" }, { name = "tzdata", marker = "python_full_version >= '3.9' and sys_platform == 'win32' and extra == 'timezone'" }, @@ -1877,111 +1877,111 @@ typechecking = [ [[package]] name = "pydantic-core" -version = "2.33.0" +version = "2.33.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/05/91ce14dfd5a3a99555fce436318cc0fd1f08c4daa32b3248ad63669ea8b4/pydantic_core-2.33.0.tar.gz", hash = "sha256:40eb8af662ba409c3cbf4a8150ad32ae73514cd7cb1f1a2113af39763dd616b3", size = 434080 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/29/43/0649ad07e66b36a3fb21442b425bd0348ac162c5e686b36471f363201535/pydantic_core-2.33.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71dffba8fe9ddff628c68f3abd845e91b028361d43c5f8e7b3f8b91d7d85413e", size = 2042968 }, - { url = "https://files.pythonhosted.org/packages/a0/a6/975fea4774a459e495cb4be288efd8b041ac756a0a763f0b976d0861334b/pydantic_core-2.33.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:abaeec1be6ed535a5d7ffc2e6c390083c425832b20efd621562fbb5bff6dc518", size = 1860347 }, - { url = "https://files.pythonhosted.org/packages/aa/49/7858dadad305101a077ec4d0c606b6425a2b134ea8d858458a6d287fd871/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759871f00e26ad3709efc773ac37b4d571de065f9dfb1778012908bcc36b3a73", size = 1910060 }, - { url = "https://files.pythonhosted.org/packages/8d/4f/6522527911d9c5fe6d76b084d8b388d5c84b09d113247b39f91937500b34/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dcfebee69cd5e1c0b76a17e17e347c84b00acebb8dd8edb22d4a03e88e82a207", size = 1997129 }, - { url = "https://files.pythonhosted.org/packages/75/d0/06f396da053e3d73001ea4787e56b4d7132a87c0b5e2e15a041e808c35cd/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b1262b912435a501fa04cd213720609e2cefa723a07c92017d18693e69bf00b", size = 2140389 }, - { url = "https://files.pythonhosted.org/packages/f5/6b/b9ff5b69cd4ef007cf665463f3be2e481dc7eb26c4a55b2f57a94308c31a/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4726f1f3f42d6a25678c67da3f0b10f148f5655813c5aca54b0d1742ba821b8f", size = 2754237 }, - { url = "https://files.pythonhosted.org/packages/53/80/b4879de375cdf3718d05fcb60c9aa1f119d28e261dafa51b6a69c78f7178/pydantic_core-2.33.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e790954b5093dff1e3a9a2523fddc4e79722d6f07993b4cd5547825c3cbf97b5", size = 2007433 }, - { url = "https://files.pythonhosted.org/packages/46/24/54054713dc0af98a94eab37e0f4294dfd5cd8f70b2ca9dcdccd15709fd7e/pydantic_core-2.33.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:34e7fb3abe375b5c4e64fab75733d605dda0f59827752debc99c17cb2d5f3276", size = 2123980 }, - { url = "https://files.pythonhosted.org/packages/3a/4c/257c1cb89e14cfa6e95ebcb91b308eb1dd2b348340ff76a6e6fcfa9969e1/pydantic_core-2.33.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ecb158fb9b9091b515213bed3061eb7deb1d3b4e02327c27a0ea714ff46b0760", size = 2087433 }, - { url = "https://files.pythonhosted.org/packages/0c/62/927df8a39ad78ef7b82c5446e01dec9bb0043e1ad71d8f426062f5f014db/pydantic_core-2.33.0-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:4d9149e7528af8bbd76cc055967e6e04617dcb2a2afdaa3dea899406c5521faa", size = 2260242 }, - { url = "https://files.pythonhosted.org/packages/74/f2/389414f7c77a100954e84d6f52a82bd1788ae69db72364376d8a73b38765/pydantic_core-2.33.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e81a295adccf73477220e15ff79235ca9dcbcee4be459eb9d4ce9a2763b8386c", size = 2258227 }, - { url = "https://files.pythonhosted.org/packages/53/99/94516313e15d906a1264bb40faf24a01a4af4e2ca8a7c10dd173b6513c5a/pydantic_core-2.33.0-cp310-cp310-win32.whl", hash = "sha256:f22dab23cdbce2005f26a8f0c71698457861f97fc6318c75814a50c75e87d025", size = 1925523 }, - { url = "https://files.pythonhosted.org/packages/7d/67/cc789611c6035a0b71305a1ec6ba196256ced76eba8375f316f840a70456/pydantic_core-2.33.0-cp310-cp310-win_amd64.whl", hash = "sha256:9cb2390355ba084c1ad49485d18449b4242da344dea3e0fe10babd1f0db7dcfc", size = 1951872 }, - { url = "https://files.pythonhosted.org/packages/f0/93/9e97af2619b4026596487a79133e425c7d3c374f0a7f100f3d76bcdf9c83/pydantic_core-2.33.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a608a75846804271cf9c83e40bbb4dab2ac614d33c6fd5b0c6187f53f5c593ef", size = 2042784 }, - { url = "https://files.pythonhosted.org/packages/42/b4/0bba8412fd242729feeb80e7152e24f0e1a1c19f4121ca3d4a307f4e6222/pydantic_core-2.33.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e1c69aa459f5609dec2fa0652d495353accf3eda5bdb18782bc5a2ae45c9273a", size = 1858179 }, - { url = "https://files.pythonhosted.org/packages/69/1f/c1c40305d929bd08af863df64b0a26203b70b352a1962d86f3bcd52950fe/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9ec80eb5a5f45a2211793f1c4aeddff0c3761d1c70d684965c1807e923a588b", size = 1909396 }, - { url = "https://files.pythonhosted.org/packages/0f/99/d2e727375c329c1e652b5d450fbb9d56e8c3933a397e4bd46e67c68c2cd5/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e925819a98318d17251776bd3d6aa9f3ff77b965762155bdad15d1a9265c4cfd", size = 1998264 }, - { url = "https://files.pythonhosted.org/packages/9c/2e/3119a33931278d96ecc2e9e1b9d50c240636cfeb0c49951746ae34e4de74/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5bf68bb859799e9cec3d9dd8323c40c00a254aabb56fe08f907e437005932f2b", size = 2140588 }, - { url = "https://files.pythonhosted.org/packages/35/bd/9267bd1ba55f17c80ef6cb7e07b3890b4acbe8eb6014f3102092d53d9300/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b2ea72dea0825949a045fa4071f6d5b3d7620d2a208335207793cf29c5a182d", size = 2746296 }, - { url = "https://files.pythonhosted.org/packages/6f/ed/ef37de6478a412ee627cbebd73e7b72a680f45bfacce9ff1199de6e17e88/pydantic_core-2.33.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1583539533160186ac546b49f5cde9ffc928062c96920f58bd95de32ffd7bffd", size = 2005555 }, - { url = "https://files.pythonhosted.org/packages/dd/84/72c8d1439585d8ee7bc35eb8f88a04a4d302ee4018871f1f85ae1b0c6625/pydantic_core-2.33.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:23c3e77bf8a7317612e5c26a3b084c7edeb9552d645742a54a5867635b4f2453", size = 2124452 }, - { url = "https://files.pythonhosted.org/packages/a7/8f/cb13de30c6a3e303423751a529a3d1271c2effee4b98cf3e397a66ae8498/pydantic_core-2.33.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a7a7f2a3f628d2f7ef11cb6188bcf0b9e1558151d511b974dfea10a49afe192b", size = 2087001 }, - { url = "https://files.pythonhosted.org/packages/83/d0/e93dc8884bf288a63fedeb8040ac8f29cb71ca52e755f48e5170bb63e55b/pydantic_core-2.33.0-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:f1fb026c575e16f673c61c7b86144517705865173f3d0907040ac30c4f9f5915", size = 2261663 }, - { url = "https://files.pythonhosted.org/packages/4c/ba/4b7739c95efa0b542ee45fd872c8f6b1884ab808cf04ce7ac6621b6df76e/pydantic_core-2.33.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:635702b2fed997e0ac256b2cfbdb4dd0bf7c56b5d8fba8ef03489c03b3eb40e2", size = 2257786 }, - { url = "https://files.pythonhosted.org/packages/cc/98/73cbca1d2360c27752cfa2fcdcf14d96230e92d7d48ecd50499865c56bf7/pydantic_core-2.33.0-cp311-cp311-win32.whl", hash = "sha256:07b4ced28fccae3f00626eaa0c4001aa9ec140a29501770a88dbbb0966019a86", size = 1925697 }, - { url = "https://files.pythonhosted.org/packages/9a/26/d85a40edeca5d8830ffc33667d6fef329fd0f4bc0c5181b8b0e206cfe488/pydantic_core-2.33.0-cp311-cp311-win_amd64.whl", hash = "sha256:4927564be53239a87770a5f86bdc272b8d1fbb87ab7783ad70255b4ab01aa25b", size = 1949859 }, - { url = "https://files.pythonhosted.org/packages/7e/0b/5a381605f0b9870465b805f2c86c06b0a7c191668ebe4117777306c2c1e5/pydantic_core-2.33.0-cp311-cp311-win_arm64.whl", hash = "sha256:69297418ad644d521ea3e1aa2e14a2a422726167e9ad22b89e8f1130d68e1e9a", size = 1907978 }, - { url = "https://files.pythonhosted.org/packages/a9/c4/c9381323cbdc1bb26d352bc184422ce77c4bc2f2312b782761093a59fafc/pydantic_core-2.33.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6c32a40712e3662bebe524abe8abb757f2fa2000028d64cc5a1006016c06af43", size = 2025127 }, - { url = "https://files.pythonhosted.org/packages/6f/bd/af35278080716ecab8f57e84515c7dc535ed95d1c7f52c1c6f7b313a9dab/pydantic_core-2.33.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8ec86b5baa36f0a0bfb37db86c7d52652f8e8aa076ab745ef7725784183c3fdd", size = 1851687 }, - { url = "https://files.pythonhosted.org/packages/12/e4/a01461225809c3533c23bd1916b1e8c2e21727f0fea60ab1acbffc4e2fca/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4deac83a8cc1d09e40683be0bc6d1fa4cde8df0a9bf0cda5693f9b0569ac01b6", size = 1892232 }, - { url = "https://files.pythonhosted.org/packages/51/17/3d53d62a328fb0a49911c2962036b9e7a4f781b7d15e9093c26299e5f76d/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:175ab598fb457a9aee63206a1993874badf3ed9a456e0654273e56f00747bbd6", size = 1977896 }, - { url = "https://files.pythonhosted.org/packages/30/98/01f9d86e02ec4a38f4b02086acf067f2c776b845d43f901bd1ee1c21bc4b/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f36afd0d56a6c42cf4e8465b6441cf546ed69d3a4ec92724cc9c8c61bd6ecf4", size = 2127717 }, - { url = "https://files.pythonhosted.org/packages/3c/43/6f381575c61b7c58b0fd0b92134c5a1897deea4cdfc3d47567b3ff460a4e/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a98257451164666afafc7cbf5fb00d613e33f7e7ebb322fbcd99345695a9a61", size = 2680287 }, - { url = "https://files.pythonhosted.org/packages/01/42/c0d10d1451d161a9a0da9bbef023b8005aa26e9993a8cc24dc9e3aa96c93/pydantic_core-2.33.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecc6d02d69b54a2eb83ebcc6f29df04957f734bcf309d346b4f83354d8376862", size = 2008276 }, - { url = "https://files.pythonhosted.org/packages/20/ca/e08df9dba546905c70bae44ced9f3bea25432e34448d95618d41968f40b7/pydantic_core-2.33.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a69b7596c6603afd049ce7f3835bcf57dd3892fc7279f0ddf987bebed8caa5a", size = 2115305 }, - { url = "https://files.pythonhosted.org/packages/03/1f/9b01d990730a98833113581a78e595fd40ed4c20f9693f5a658fb5f91eff/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ea30239c148b6ef41364c6f51d103c2988965b643d62e10b233b5efdca8c0099", size = 2068999 }, - { url = "https://files.pythonhosted.org/packages/20/18/fe752476a709191148e8b1e1139147841ea5d2b22adcde6ee6abb6c8e7cf/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:abfa44cf2f7f7d7a199be6c6ec141c9024063205545aa09304349781b9a125e6", size = 2241488 }, - { url = "https://files.pythonhosted.org/packages/81/22/14738ad0a0bf484b928c9e52004f5e0b81dd8dabbdf23b843717b37a71d1/pydantic_core-2.33.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20d4275f3c4659d92048c70797e5fdc396c6e4446caf517ba5cad2db60cd39d3", size = 2248430 }, - { url = "https://files.pythonhosted.org/packages/e8/27/be7571e215ac8d321712f2433c445b03dbcd645366a18f67b334df8912bc/pydantic_core-2.33.0-cp312-cp312-win32.whl", hash = "sha256:918f2013d7eadea1d88d1a35fd4a1e16aaf90343eb446f91cb091ce7f9b431a2", size = 1908353 }, - { url = "https://files.pythonhosted.org/packages/be/3a/be78f28732f93128bd0e3944bdd4b3970b389a1fbd44907c97291c8dcdec/pydantic_core-2.33.0-cp312-cp312-win_amd64.whl", hash = "sha256:aec79acc183865bad120b0190afac467c20b15289050648b876b07777e67ea48", size = 1955956 }, - { url = "https://files.pythonhosted.org/packages/21/26/b8911ac74faa994694b76ee6a22875cc7a4abea3c381fdba4edc6c6bef84/pydantic_core-2.33.0-cp312-cp312-win_arm64.whl", hash = "sha256:5461934e895968655225dfa8b3be79e7e927e95d4bd6c2d40edd2fa7052e71b6", size = 1903259 }, - { url = "https://files.pythonhosted.org/packages/79/20/de2ad03ce8f5b3accf2196ea9b44f31b0cd16ac6e8cfc6b21976ed45ec35/pydantic_core-2.33.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f00e8b59e1fc8f09d05594aa7d2b726f1b277ca6155fc84c0396db1b373c4555", size = 2032214 }, - { url = "https://files.pythonhosted.org/packages/f9/af/6817dfda9aac4958d8b516cbb94af507eb171c997ea66453d4d162ae8948/pydantic_core-2.33.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a73be93ecef45786d7d95b0c5e9b294faf35629d03d5b145b09b81258c7cd6d", size = 1852338 }, - { url = "https://files.pythonhosted.org/packages/44/f3/49193a312d9c49314f2b953fb55740b7c530710977cabe7183b8ef111b7f/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff48a55be9da6930254565ff5238d71d5e9cd8c5487a191cb85df3bdb8c77365", size = 1896913 }, - { url = "https://files.pythonhosted.org/packages/06/e0/c746677825b2e29a2fa02122a8991c83cdd5b4c5f638f0664d4e35edd4b2/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a4ea04195638dcd8c53dadb545d70badba51735b1594810e9768c2c0b4a5da", size = 1986046 }, - { url = "https://files.pythonhosted.org/packages/11/ec/44914e7ff78cef16afb5e5273d480c136725acd73d894affdbe2a1bbaad5/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41d698dcbe12b60661f0632b543dbb119e6ba088103b364ff65e951610cb7ce0", size = 2128097 }, - { url = "https://files.pythonhosted.org/packages/fe/f5/c6247d424d01f605ed2e3802f338691cae17137cee6484dce9f1ac0b872b/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ae62032ef513fe6281ef0009e30838a01057b832dc265da32c10469622613885", size = 2681062 }, - { url = "https://files.pythonhosted.org/packages/f0/85/114a2113b126fdd7cf9a9443b1b1fe1b572e5bd259d50ba9d5d3e1927fa9/pydantic_core-2.33.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f225f3a3995dbbc26affc191d0443c6c4aa71b83358fd4c2b7d63e2f6f0336f9", size = 2007487 }, - { url = "https://files.pythonhosted.org/packages/e6/40/3c05ed28d225c7a9acd2b34c5c8010c279683a870219b97e9f164a5a8af0/pydantic_core-2.33.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5bdd36b362f419c78d09630cbaebc64913f66f62bda6d42d5fbb08da8cc4f181", size = 2121382 }, - { url = "https://files.pythonhosted.org/packages/8a/22/e70c086f41eebd323e6baa92cc906c3f38ddce7486007eb2bdb3b11c8f64/pydantic_core-2.33.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:2a0147c0bef783fd9abc9f016d66edb6cac466dc54a17ec5f5ada08ff65caf5d", size = 2072473 }, - { url = "https://files.pythonhosted.org/packages/3e/84/d1614dedd8fe5114f6a0e348bcd1535f97d76c038d6102f271433cd1361d/pydantic_core-2.33.0-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:c860773a0f205926172c6644c394e02c25421dc9a456deff16f64c0e299487d3", size = 2249468 }, - { url = "https://files.pythonhosted.org/packages/b0/c0/787061eef44135e00fddb4b56b387a06c303bfd3884a6df9bea5cb730230/pydantic_core-2.33.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:138d31e3f90087f42aa6286fb640f3c7a8eb7bdae829418265e7e7474bd2574b", size = 2254716 }, - { url = "https://files.pythonhosted.org/packages/ae/e2/27262eb04963201e89f9c280f1e10c493a7a37bc877e023f31aa72d2f911/pydantic_core-2.33.0-cp313-cp313-win32.whl", hash = "sha256:d20cbb9d3e95114325780f3cfe990f3ecae24de7a2d75f978783878cce2ad585", size = 1916450 }, - { url = "https://files.pythonhosted.org/packages/13/8d/25ff96f1e89b19e0b70b3cd607c9ea7ca27e1dcb810a9cd4255ed6abf869/pydantic_core-2.33.0-cp313-cp313-win_amd64.whl", hash = "sha256:ca1103d70306489e3d006b0f79db8ca5dd3c977f6f13b2c59ff745249431a606", size = 1956092 }, - { url = "https://files.pythonhosted.org/packages/1b/64/66a2efeff657b04323ffcd7b898cb0354d36dae3a561049e092134a83e9c/pydantic_core-2.33.0-cp313-cp313-win_arm64.whl", hash = "sha256:6291797cad239285275558e0a27872da735b05c75d5237bbade8736f80e4c225", size = 1908367 }, - { url = "https://files.pythonhosted.org/packages/52/54/295e38769133363d7ec4a5863a4d579f331728c71a6644ff1024ee529315/pydantic_core-2.33.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7b79af799630af263eca9ec87db519426d8c9b3be35016eddad1832bac812d87", size = 1813331 }, - { url = "https://files.pythonhosted.org/packages/4c/9c/0c8ea02db8d682aa1ef48938abae833c1d69bdfa6e5ec13b21734b01ae70/pydantic_core-2.33.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eabf946a4739b5237f4f56d77fa6668263bc466d06a8036c055587c130a46f7b", size = 1986653 }, - { url = "https://files.pythonhosted.org/packages/8e/4f/3fb47d6cbc08c7e00f92300e64ba655428c05c56b8ab6723bd290bae6458/pydantic_core-2.33.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8a1d581e8cdbb857b0e0e81df98603376c1a5c34dc5e54039dcc00f043df81e7", size = 1931234 }, - { url = "https://files.pythonhosted.org/packages/32/b1/933e907c395a17c2ffa551112da2e6e725a200f951a91f61ae0b595a437d/pydantic_core-2.33.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7c9c84749f5787781c1c45bb99f433402e484e515b40675a5d121ea14711cf61", size = 2043225 }, - { url = "https://files.pythonhosted.org/packages/05/92/86daeceaa2cf5e054fcc73e0fa17fe210aa004baf3d0530e4e0b4a0f08ce/pydantic_core-2.33.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:64672fa888595a959cfeff957a654e947e65bbe1d7d82f550417cbd6898a1d6b", size = 1877319 }, - { url = "https://files.pythonhosted.org/packages/20/c0/fab069cff6986c596a28af96f720ff84ec3ee5de6487f274e2b2f2d79c55/pydantic_core-2.33.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26bc7367c0961dec292244ef2549afa396e72e28cc24706210bd44d947582c59", size = 1910568 }, - { url = "https://files.pythonhosted.org/packages/6d/b5/c02cba6e0c661eb62eb1588a5775ba3e14d80f04071d684a8bd8ae1ca75b/pydantic_core-2.33.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ce72d46eb201ca43994303025bd54d8a35a3fc2a3495fac653d6eb7205ce04f4", size = 1997899 }, - { url = "https://files.pythonhosted.org/packages/cc/dc/96a4bb1ea6777e0329d609ade93cc3dca9bc71fd9cbe3f044c8ac39e7c24/pydantic_core-2.33.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:14229c1504287533dbf6b1fc56f752ce2b4e9694022ae7509631ce346158de11", size = 2140646 }, - { url = "https://files.pythonhosted.org/packages/88/3d/9c8ce0dc418fa9b10bc994449ca6d251493525a6debc5f73b07a367b3ced/pydantic_core-2.33.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:085d8985b1c1e48ef271e98a658f562f29d89bda98bf120502283efbc87313eb", size = 2753924 }, - { url = "https://files.pythonhosted.org/packages/17/d6/a9cee7d4689d51bfd01107c2ec8de394f56e974ea4ae7e2d624712bed67a/pydantic_core-2.33.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31860fbda80d8f6828e84b4a4d129fd9c4535996b8249cfb8c720dc2a1a00bb8", size = 2008316 }, - { url = "https://files.pythonhosted.org/packages/d5/ea/c2578b67b28f3e51323841632e217a5fdd0a8f3fce852bb16782e637cda7/pydantic_core-2.33.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f200b2f20856b5a6c3a35f0d4e344019f805e363416e609e9b47c552d35fd5ea", size = 2124634 }, - { url = "https://files.pythonhosted.org/packages/1f/ae/236dbc8085a88aec1fd8369c6062fff3b40463918af90d20a2058b967f0e/pydantic_core-2.33.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f72914cfd1d0176e58ddc05c7a47674ef4222c8253bf70322923e73e14a4ac3", size = 2087826 }, - { url = "https://files.pythonhosted.org/packages/12/ad/8292aebcd787b03167a62df5221e613b76b263b5a05c2310217e88772b75/pydantic_core-2.33.0-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:91301a0980a1d4530d4ba7e6a739ca1a6b31341252cb709948e0aca0860ce0ae", size = 2260866 }, - { url = "https://files.pythonhosted.org/packages/83/f9/d89c9e306f69395fb5b0d6e83e99980046c2b3a7cc2839a43b869838bf60/pydantic_core-2.33.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7419241e17c7fbe5074ba79143d5523270e04f86f1b3a0dff8df490f84c8273a", size = 2259118 }, - { url = "https://files.pythonhosted.org/packages/30/f1/4da918dcd75898006a6b4da848f231306a2d8b2fda35c7679df76a4ae3d7/pydantic_core-2.33.0-cp39-cp39-win32.whl", hash = "sha256:7a25493320203005d2a4dac76d1b7d953cb49bce6d459d9ae38e30dd9f29bc9c", size = 1925241 }, - { url = "https://files.pythonhosted.org/packages/4f/53/a31aaa220ac133f05e4e3622f65ad9b02e6cbd89723d8d035f5effac8701/pydantic_core-2.33.0-cp39-cp39-win_amd64.whl", hash = "sha256:82a4eba92b7ca8af1b7d5ef5f3d9647eee94d1f74d21ca7c21e3a2b92e008358", size = 1953427 }, - { url = "https://files.pythonhosted.org/packages/44/77/85e173b715e1a277ce934f28d877d82492df13e564fa68a01c96f36a47ad/pydantic_core-2.33.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e2762c568596332fdab56b07060c8ab8362c56cf2a339ee54e491cd503612c50", size = 2040129 }, - { url = "https://files.pythonhosted.org/packages/33/e7/33da5f8a94bbe2191cfcd15bd6d16ecd113e67da1b8c78d3cc3478112dab/pydantic_core-2.33.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:5bf637300ff35d4f59c006fff201c510b2b5e745b07125458a5389af3c0dff8c", size = 1872656 }, - { url = "https://files.pythonhosted.org/packages/b4/7a/9600f222bea840e5b9ba1f17c0acc79b669b24542a78c42c6a10712c0aae/pydantic_core-2.33.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c151ce3d59ed56ebd7ce9ce5986a409a85db697d25fc232f8e81f195aa39a1", size = 1903731 }, - { url = "https://files.pythonhosted.org/packages/81/d2/94c7ca4e24c5dcfb74df92e0836c189e9eb6814cf62d2f26a75ea0a906db/pydantic_core-2.33.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ee65f0cc652261744fd07f2c6e6901c914aa6c5ff4dcfaf1136bc394d0dd26b", size = 2083966 }, - { url = "https://files.pythonhosted.org/packages/b8/74/a0259989d220e8865ed6866a6d40539e40fa8f507e587e35d2414cc081f8/pydantic_core-2.33.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:024d136ae44d233e6322027bbf356712b3940bee816e6c948ce4b90f18471b3d", size = 2118951 }, - { url = "https://files.pythonhosted.org/packages/13/4c/87405ed04d6d07597920b657f082a8e8e58bf3034178bb9044b4d57a91e2/pydantic_core-2.33.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e37f10f6d4bc67c58fbd727108ae1d8b92b397355e68519f1e4a7babb1473442", size = 2079632 }, - { url = "https://files.pythonhosted.org/packages/5a/4c/bcb02970ef91d4cd6de7c6893101302637da456bc8b52c18ea0d047b55ce/pydantic_core-2.33.0-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:502ed542e0d958bd12e7c3e9a015bce57deaf50eaa8c2e1c439b512cb9db1e3a", size = 2250541 }, - { url = "https://files.pythonhosted.org/packages/a3/2b/dbe5450c4cd904be5da736dcc7f2357b828199e29e38de19fc81f988b288/pydantic_core-2.33.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:715c62af74c236bf386825c0fdfa08d092ab0f191eb5b4580d11c3189af9d330", size = 2255685 }, - { url = "https://files.pythonhosted.org/packages/ca/a6/ca1d35f695d81f639c5617fc9efb44caad21a9463383fa45364b3044175a/pydantic_core-2.33.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bccc06fa0372151f37f6b69834181aa9eb57cf8665ed36405fb45fbf6cac3bae", size = 2082395 }, - { url = "https://files.pythonhosted.org/packages/2b/b2/553e42762e7b08771fca41c0230c1ac276f9e79e78f57628e1b7d328551d/pydantic_core-2.33.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5d8dc9f63a26f7259b57f46a7aab5af86b2ad6fbe48487500bb1f4b27e051e4c", size = 2041207 }, - { url = "https://files.pythonhosted.org/packages/85/81/a91a57bbf3efe53525ab75f65944b8950e6ef84fe3b9a26c1ec173363263/pydantic_core-2.33.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:30369e54d6d0113d2aa5aee7a90d17f225c13d87902ace8fcd7bbf99b19124db", size = 1873736 }, - { url = "https://files.pythonhosted.org/packages/9c/d2/5ab52e9f551cdcbc1ee99a0b3ef595f56d031f66f88e5ca6726c49f9ce65/pydantic_core-2.33.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3eb479354c62067afa62f53bb387827bee2f75c9c79ef25eef6ab84d4b1ae3b", size = 1903794 }, - { url = "https://files.pythonhosted.org/packages/2f/5f/a81742d3f3821b16f1265f057d6e0b68a3ab13a814fe4bffac536a1f26fd/pydantic_core-2.33.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0310524c833d91403c960b8a3cf9f46c282eadd6afd276c8c5edc617bd705dc9", size = 2083457 }, - { url = "https://files.pythonhosted.org/packages/b5/2f/e872005bc0fc47f9c036b67b12349a8522d32e3bda928e82d676e2a594d1/pydantic_core-2.33.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:eddb18a00bbb855325db27b4c2a89a4ba491cd6a0bd6d852b225172a1f54b36c", size = 2119537 }, - { url = "https://files.pythonhosted.org/packages/d3/13/183f13ce647202eaf3dada9e42cdfc59cbb95faedd44d25f22b931115c7f/pydantic_core-2.33.0-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ade5dbcf8d9ef8f4b28e682d0b29f3008df9842bb5ac48ac2c17bc55771cc976", size = 2080069 }, - { url = "https://files.pythonhosted.org/packages/23/8b/b6be91243da44a26558d9c3a9007043b3750334136c6550551e8092d6d96/pydantic_core-2.33.0-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2c0afd34f928383e3fd25740f2050dbac9d077e7ba5adbaa2227f4d4f3c8da5c", size = 2251618 }, - { url = "https://files.pythonhosted.org/packages/aa/c5/fbcf1977035b834f63eb542e74cd6c807177f383386175b468f0865bcac4/pydantic_core-2.33.0-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:7da333f21cd9df51d5731513a6d39319892947604924ddf2e24a4612975fb936", size = 2255374 }, - { url = "https://files.pythonhosted.org/packages/2f/f8/66f328e411f1c9574b13c2c28ab01f308b53688bbbe6ca8fb981e6cabc42/pydantic_core-2.33.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:4b6d77c75a57f041c5ee915ff0b0bb58eabb78728b69ed967bc5b780e8f701b8", size = 2082099 }, - { url = "https://files.pythonhosted.org/packages/a7/b2/7d0182cb46cfa1e003a5a52b6a15d50ad3c191a34ca5e6f5726a56ac016f/pydantic_core-2.33.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba95691cf25f63df53c1d342413b41bd7762d9acb425df8858d7efa616c0870e", size = 2040349 }, - { url = "https://files.pythonhosted.org/packages/58/9f/dc18700d82cd4e053ff02155d40cff89b08d8583668a0b54ca1b223d3132/pydantic_core-2.33.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:4f1ab031feb8676f6bd7c85abec86e2935850bf19b84432c64e3e239bffeb1ec", size = 1873052 }, - { url = "https://files.pythonhosted.org/packages/06/a9/a30a2603121b5841dc2b8dea4e18db74fa83c8c9d4804401dec23bcd3bb0/pydantic_core-2.33.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58c1151827eef98b83d49b6ca6065575876a02d2211f259fb1a6b7757bd24dd8", size = 1904205 }, - { url = "https://files.pythonhosted.org/packages/53/b7/cc7638fd83ad8bb19cab297e3f0a669bd9633830833865c064a74ff5a1c1/pydantic_core-2.33.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a66d931ea2c1464b738ace44b7334ab32a2fd50be023d863935eb00f42be1778", size = 2084567 }, - { url = "https://files.pythonhosted.org/packages/c4/f0/37ba8bdc15d2c233b2a3675160cc1b205e30dd9ef4cd6d3dfe069799e160/pydantic_core-2.33.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0bcf0bab28995d483f6c8d7db25e0d05c3efa5cebfd7f56474359e7137f39856", size = 2119072 }, - { url = "https://files.pythonhosted.org/packages/eb/29/e553e2e9c16e5ad9370e947f15585db4f7438ab4b52c53f93695c99831cd/pydantic_core-2.33.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:89670d7a0045acb52be0566df5bc8b114ac967c662c06cf5e0c606e4aadc964b", size = 2080432 }, - { url = "https://files.pythonhosted.org/packages/65/ca/268cae039ea91366ba88b9a848977b7189cb7675cb2cd9ee273464a20d91/pydantic_core-2.33.0-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:b716294e721d8060908dbebe32639b01bfe61b15f9f57bcc18ca9a0e00d9520b", size = 2251007 }, - { url = "https://files.pythonhosted.org/packages/3c/a4/5ca3a14b5d992e63a766b8883d4ba8b4d353ef6a2d9f59ee5d60e728998a/pydantic_core-2.33.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fc53e05c16697ff0c1c7c2b98e45e131d4bfb78068fffff92a82d169cbb4c7b7", size = 2256435 }, - { url = "https://files.pythonhosted.org/packages/da/a2/2670964d7046025b96f8c6d35c38e5310ec6aa1681e4158ef31ab21a4727/pydantic_core-2.33.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:68504959253303d3ae9406b634997a2123a0b0c1da86459abbd0ffc921695eac", size = 2082790 }, +sdist = { url = "https://files.pythonhosted.org/packages/17/19/ed6a078a5287aea7922de6841ef4c06157931622c89c2a47940837b5eecd/pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df", size = 434395 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/ea/5f572806ab4d4223d11551af814d243b0e3e02cc6913def4d1fe4a5ca41c/pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26", size = 2044021 }, + { url = "https://files.pythonhosted.org/packages/8c/d1/f86cc96d2aa80e3881140d16d12ef2b491223f90b28b9a911346c04ac359/pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927", size = 1861742 }, + { url = "https://files.pythonhosted.org/packages/37/08/fbd2cd1e9fc735a0df0142fac41c114ad9602d1c004aea340169ae90973b/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db", size = 1910414 }, + { url = "https://files.pythonhosted.org/packages/7f/73/3ac217751decbf8d6cb9443cec9b9eb0130eeada6ae56403e11b486e277e/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48", size = 1996848 }, + { url = "https://files.pythonhosted.org/packages/9a/f5/5c26b265cdcff2661e2520d2d1e9db72d117ea00eb41e00a76efe68cb009/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969", size = 2141055 }, + { url = "https://files.pythonhosted.org/packages/5d/14/a9c3cee817ef2f8347c5ce0713e91867a0dceceefcb2973942855c917379/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e", size = 2753806 }, + { url = "https://files.pythonhosted.org/packages/f2/68/866ce83a51dd37e7c604ce0050ff6ad26de65a7799df89f4db87dd93d1d6/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89", size = 2007777 }, + { url = "https://files.pythonhosted.org/packages/b6/a8/36771f4404bb3e49bd6d4344da4dede0bf89cc1e01f3b723c47248a3761c/pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde", size = 2122803 }, + { url = "https://files.pythonhosted.org/packages/18/9c/730a09b2694aa89360d20756369822d98dc2f31b717c21df33b64ffd1f50/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65", size = 2086755 }, + { url = "https://files.pythonhosted.org/packages/54/8e/2dccd89602b5ec31d1c58138d02340ecb2ebb8c2cac3cc66b65ce3edb6ce/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc", size = 2257358 }, + { url = "https://files.pythonhosted.org/packages/d1/9c/126e4ac1bfad8a95a9837acdd0963695d69264179ba4ede8b8c40d741702/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091", size = 2257916 }, + { url = "https://files.pythonhosted.org/packages/7d/ba/91eea2047e681a6853c81c20aeca9dcdaa5402ccb7404a2097c2adf9d038/pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383", size = 1923823 }, + { url = "https://files.pythonhosted.org/packages/94/c0/fcdf739bf60d836a38811476f6ecd50374880b01e3014318b6e809ddfd52/pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504", size = 1952494 }, + { url = "https://files.pythonhosted.org/packages/d6/7f/c6298830cb780c46b4f46bb24298d01019ffa4d21769f39b908cd14bbd50/pydantic_core-2.33.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e966fc3caaf9f1d96b349b0341c70c8d6573bf1bac7261f7b0ba88f96c56c24", size = 2044224 }, + { url = "https://files.pythonhosted.org/packages/a8/65/6ab3a536776cad5343f625245bd38165d6663256ad43f3a200e5936afd6c/pydantic_core-2.33.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bfd0adeee563d59c598ceabddf2c92eec77abcb3f4a391b19aa7366170bd9e30", size = 1858845 }, + { url = "https://files.pythonhosted.org/packages/e9/15/9a22fd26ba5ee8c669d4b8c9c244238e940cd5d818649603ca81d1c69861/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91815221101ad3c6b507804178a7bb5cb7b2ead9ecd600041669c8d805ebd595", size = 1910029 }, + { url = "https://files.pythonhosted.org/packages/d5/33/8cb1a62818974045086f55f604044bf35b9342900318f9a2a029a1bec460/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fea9c1869bb4742d174a57b4700c6dadea951df8b06de40c2fedb4f02931c2e", size = 1997784 }, + { url = "https://files.pythonhosted.org/packages/c0/ca/49958e4df7715c71773e1ea5be1c74544923d10319173264e6db122543f9/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d20eb4861329bb2484c021b9d9a977566ab16d84000a57e28061151c62b349a", size = 2141075 }, + { url = "https://files.pythonhosted.org/packages/7b/a6/0b3a167a9773c79ba834b959b4e18c3ae9216b8319bd8422792abc8a41b1/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb935c5591573ae3201640579f30128ccc10739b45663f93c06796854405505", size = 2745849 }, + { url = "https://files.pythonhosted.org/packages/0b/60/516484135173aa9e5861d7a0663dce82e4746d2e7f803627d8c25dfa5578/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c964fd24e6166420d18fb53996d8c9fd6eac9bf5ae3ec3d03015be4414ce497f", size = 2005794 }, + { url = "https://files.pythonhosted.org/packages/86/70/05b1eb77459ad47de00cf78ee003016da0cedf8b9170260488d7c21e9181/pydantic_core-2.33.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:681d65e9011f7392db5aa002b7423cc442d6a673c635668c227c6c8d0e5a4f77", size = 2123237 }, + { url = "https://files.pythonhosted.org/packages/c7/57/12667a1409c04ae7dc95d3b43158948eb0368e9c790be8b095cb60611459/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e100c52f7355a48413e2999bfb4e139d2977a904495441b374f3d4fb4a170961", size = 2086351 }, + { url = "https://files.pythonhosted.org/packages/57/61/cc6d1d1c1664b58fdd6ecc64c84366c34ec9b606aeb66cafab6f4088974c/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:048831bd363490be79acdd3232f74a0e9951b11b2b4cc058aeb72b22fdc3abe1", size = 2258914 }, + { url = "https://files.pythonhosted.org/packages/d1/0a/edb137176a1f5419b2ddee8bde6a0a548cfa3c74f657f63e56232df8de88/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bdc84017d28459c00db6f918a7272a5190bec3090058334e43a76afb279eac7c", size = 2257385 }, + { url = "https://files.pythonhosted.org/packages/26/3c/48ca982d50e4b0e1d9954919c887bdc1c2b462801bf408613ccc641b3daa/pydantic_core-2.33.1-cp311-cp311-win32.whl", hash = "sha256:32cd11c5914d1179df70406427097c7dcde19fddf1418c787540f4b730289896", size = 1923765 }, + { url = "https://files.pythonhosted.org/packages/33/cd/7ab70b99e5e21559f5de38a0928ea84e6f23fdef2b0d16a6feaf942b003c/pydantic_core-2.33.1-cp311-cp311-win_amd64.whl", hash = "sha256:2ea62419ba8c397e7da28a9170a16219d310d2cf4970dbc65c32faf20d828c83", size = 1950688 }, + { url = "https://files.pythonhosted.org/packages/4b/ae/db1fc237b82e2cacd379f63e3335748ab88b5adde98bf7544a1b1bd10a84/pydantic_core-2.33.1-cp311-cp311-win_arm64.whl", hash = "sha256:fc903512177361e868bc1f5b80ac8c8a6e05fcdd574a5fb5ffeac5a9982b9e89", size = 1908185 }, + { url = "https://files.pythonhosted.org/packages/c8/ce/3cb22b07c29938f97ff5f5bb27521f95e2ebec399b882392deb68d6c440e/pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8", size = 2026640 }, + { url = "https://files.pythonhosted.org/packages/19/78/f381d643b12378fee782a72126ec5d793081ef03791c28a0fd542a5bee64/pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498", size = 1852649 }, + { url = "https://files.pythonhosted.org/packages/9d/2b/98a37b80b15aac9eb2c6cfc6dbd35e5058a352891c5cce3a8472d77665a6/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939", size = 1892472 }, + { url = "https://files.pythonhosted.org/packages/4e/d4/3c59514e0f55a161004792b9ff3039da52448f43f5834f905abef9db6e4a/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d", size = 1977509 }, + { url = "https://files.pythonhosted.org/packages/a9/b6/c2c7946ef70576f79a25db59a576bce088bdc5952d1b93c9789b091df716/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e", size = 2128702 }, + { url = "https://files.pythonhosted.org/packages/88/fe/65a880f81e3f2a974312b61f82a03d85528f89a010ce21ad92f109d94deb/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3", size = 2679428 }, + { url = "https://files.pythonhosted.org/packages/6f/ff/4459e4146afd0462fb483bb98aa2436d69c484737feaceba1341615fb0ac/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d", size = 2008753 }, + { url = "https://files.pythonhosted.org/packages/7c/76/1c42e384e8d78452ededac8b583fe2550c84abfef83a0552e0e7478ccbc3/pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b", size = 2114849 }, + { url = "https://files.pythonhosted.org/packages/00/72/7d0cf05095c15f7ffe0eb78914b166d591c0eed72f294da68378da205101/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39", size = 2069541 }, + { url = "https://files.pythonhosted.org/packages/b3/69/94a514066bb7d8be499aa764926937409d2389c09be0b5107a970286ef81/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a", size = 2239225 }, + { url = "https://files.pythonhosted.org/packages/84/b0/e390071eadb44b41f4f54c3cef64d8bf5f9612c92686c9299eaa09e267e2/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db", size = 2248373 }, + { url = "https://files.pythonhosted.org/packages/d6/b2/288b3579ffc07e92af66e2f1a11be3b056fe1214aab314748461f21a31c3/pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda", size = 1907034 }, + { url = "https://files.pythonhosted.org/packages/02/28/58442ad1c22b5b6742b992ba9518420235adced665513868f99a1c2638a5/pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4", size = 1956848 }, + { url = "https://files.pythonhosted.org/packages/a1/eb/f54809b51c7e2a1d9f439f158b8dd94359321abcc98767e16fc48ae5a77e/pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea", size = 1903986 }, + { url = "https://files.pythonhosted.org/packages/7a/24/eed3466a4308d79155f1cdd5c7432c80ddcc4530ba8623b79d5ced021641/pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a", size = 2033551 }, + { url = "https://files.pythonhosted.org/packages/ab/14/df54b1a0bc9b6ded9b758b73139d2c11b4e8eb43e8ab9c5847c0a2913ada/pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266", size = 1852785 }, + { url = "https://files.pythonhosted.org/packages/fa/96/e275f15ff3d34bb04b0125d9bc8848bf69f25d784d92a63676112451bfb9/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3", size = 1897758 }, + { url = "https://files.pythonhosted.org/packages/b7/d8/96bc536e975b69e3a924b507d2a19aedbf50b24e08c80fb00e35f9baaed8/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a", size = 1986109 }, + { url = "https://files.pythonhosted.org/packages/90/72/ab58e43ce7e900b88cb571ed057b2fcd0e95b708a2e0bed475b10130393e/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516", size = 2129159 }, + { url = "https://files.pythonhosted.org/packages/dc/3f/52d85781406886c6870ac995ec0ba7ccc028b530b0798c9080531b409fdb/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764", size = 2680222 }, + { url = "https://files.pythonhosted.org/packages/f4/56/6e2ef42f363a0eec0fd92f74a91e0ac48cd2e49b695aac1509ad81eee86a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d", size = 2006980 }, + { url = "https://files.pythonhosted.org/packages/4c/c0/604536c4379cc78359f9ee0aa319f4aedf6b652ec2854953f5a14fc38c5a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4", size = 2120840 }, + { url = "https://files.pythonhosted.org/packages/1f/46/9eb764814f508f0edfb291a0f75d10854d78113fa13900ce13729aaec3ae/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde", size = 2072518 }, + { url = "https://files.pythonhosted.org/packages/42/e3/fb6b2a732b82d1666fa6bf53e3627867ea3131c5f39f98ce92141e3e3dc1/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e", size = 2248025 }, + { url = "https://files.pythonhosted.org/packages/5c/9d/fbe8fe9d1aa4dac88723f10a921bc7418bd3378a567cb5e21193a3c48b43/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd", size = 2254991 }, + { url = "https://files.pythonhosted.org/packages/aa/99/07e2237b8a66438d9b26482332cda99a9acccb58d284af7bc7c946a42fd3/pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f", size = 1915262 }, + { url = "https://files.pythonhosted.org/packages/8a/f4/e457a7849beeed1e5defbcf5051c6f7b3c91a0624dd31543a64fc9adcf52/pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40", size = 1956626 }, + { url = "https://files.pythonhosted.org/packages/20/d0/e8d567a7cff7b04e017ae164d98011f1e1894269fe8e90ea187a3cbfb562/pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523", size = 1909590 }, + { url = "https://files.pythonhosted.org/packages/ef/fd/24ea4302d7a527d672c5be06e17df16aabfb4e9fdc6e0b345c21580f3d2a/pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d", size = 1812963 }, + { url = "https://files.pythonhosted.org/packages/5f/95/4fbc2ecdeb5c1c53f1175a32d870250194eb2fdf6291b795ab08c8646d5d/pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c", size = 1986896 }, + { url = "https://files.pythonhosted.org/packages/71/ae/fe31e7f4a62431222d8f65a3bd02e3fa7e6026d154a00818e6d30520ea77/pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18", size = 1931810 }, + { url = "https://files.pythonhosted.org/packages/49/78/b86bad645cc3e8dfa6858c70ec38939bf350e54004837c48de09474b2b9e/pydantic_core-2.33.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5ab77f45d33d264de66e1884fca158bc920cb5e27fd0764a72f72f5756ae8bdb", size = 2044282 }, + { url = "https://files.pythonhosted.org/packages/3b/00/a02531331773b2bf08743d84c6b776bd6a449d23b3ae6b0e3229d568bac4/pydantic_core-2.33.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7aaba1b4b03aaea7bb59e1b5856d734be011d3e6d98f5bcaa98cb30f375f2ad", size = 1877598 }, + { url = "https://files.pythonhosted.org/packages/a1/fa/32cc152b84a1f420f8a7d80161373e8d87d4ffa077e67d6c8aab3ce1a6ab/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb66263e9ba8fea2aa85e1e5578980d127fb37d7f2e292773e7bc3a38fb0c7b", size = 1911021 }, + { url = "https://files.pythonhosted.org/packages/5e/87/ea553e0d98bce6c4876f8c50f65cb45597eff6e0aaa8b15813e9972bb19d/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f2648b9262607a7fb41d782cc263b48032ff7a03a835581abbf7a3bec62bcf5", size = 1997276 }, + { url = "https://files.pythonhosted.org/packages/f7/9b/60cb9f4b52158b3adac0066492bbadd0b8473f4f8da5bcc73972655b76ef/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:723c5630c4259400818b4ad096735a829074601805d07f8cafc366d95786d331", size = 2141348 }, + { url = "https://files.pythonhosted.org/packages/9b/38/374d254e270d4de0add68a8239f4ed0f444fdd7b766ea69244fb9491dccb/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d100e3ae783d2167782391e0c1c7a20a31f55f8015f3293647544df3f9c67824", size = 2753708 }, + { url = "https://files.pythonhosted.org/packages/05/a8/fd79111eb5ab9bc4ef98d8fb0b3a2ffdc80107b2c59859a741ab379c96f8/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177d50460bc976a0369920b6c744d927b0ecb8606fb56858ff542560251b19e5", size = 2008699 }, + { url = "https://files.pythonhosted.org/packages/35/31/2e06619868eb4c18642c5601db420599c1cf9cf50fe868c9ac09cd298e24/pydantic_core-2.33.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3edde68d1a1f9af1273b2fe798997b33f90308fb6d44d8550c89fc6a3647cf6", size = 2123426 }, + { url = "https://files.pythonhosted.org/packages/4a/d0/3531e8783a311802e3db7ee5a1a5ed79e5706e930b1b4e3109ce15eeb681/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a62c3c3ef6a7e2c45f7853b10b5bc4ddefd6ee3cd31024754a1a5842da7d598d", size = 2087330 }, + { url = "https://files.pythonhosted.org/packages/ac/32/5ff252ed73bacd7677a706ab17723e261a76793f98b305aa20cfc10bbd56/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c91dbb0ab683fa0cd64a6e81907c8ff41d6497c346890e26b23de7ee55353f96", size = 2258171 }, + { url = "https://files.pythonhosted.org/packages/c9/f9/e96e00f92b8f5b3e2cddc80c5ee6cf038f8a0f238c44b67b01759943a7b4/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f466e8bf0a62dc43e068c12166281c2eca72121dd2adc1040f3aa1e21ef8599", size = 2258745 }, + { url = "https://files.pythonhosted.org/packages/54/1e/51c86688e809d94797fdf0efc41514f001caec982a05f62d90c180a9639d/pydantic_core-2.33.1-cp39-cp39-win32.whl", hash = "sha256:ab0277cedb698749caada82e5d099dc9fed3f906a30d4c382d1a21725777a1e5", size = 1923626 }, + { url = "https://files.pythonhosted.org/packages/57/18/c2da959fd8d019b70cadafdda2bf845378ada47973e0bad6cc84f56dbe6e/pydantic_core-2.33.1-cp39-cp39-win_amd64.whl", hash = "sha256:5773da0ee2d17136b1f1c6fbde543398d452a6ad2a7b54ea1033e2daa739b8d2", size = 1953703 }, + { url = "https://files.pythonhosted.org/packages/9c/c7/8b311d5adb0fe00a93ee9b4e92a02b0ec08510e9838885ef781ccbb20604/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02", size = 2041659 }, + { url = "https://files.pythonhosted.org/packages/8a/d6/4f58d32066a9e26530daaf9adc6664b01875ae0691570094968aaa7b8fcc/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068", size = 1873294 }, + { url = "https://files.pythonhosted.org/packages/f7/3f/53cc9c45d9229da427909c751f8ed2bf422414f7664ea4dde2d004f596ba/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e", size = 1903771 }, + { url = "https://files.pythonhosted.org/packages/f0/49/bf0783279ce674eb9903fb9ae43f6c614cb2f1c4951370258823f795368b/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe", size = 2083558 }, + { url = "https://files.pythonhosted.org/packages/9c/5b/0d998367687f986c7d8484a2c476d30f07bf5b8b1477649a6092bd4c540e/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1", size = 2118038 }, + { url = "https://files.pythonhosted.org/packages/b3/33/039287d410230ee125daee57373ac01940d3030d18dba1c29cd3089dc3ca/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7", size = 2079315 }, + { url = "https://files.pythonhosted.org/packages/1f/85/6d8b2646d99c062d7da2d0ab2faeb0d6ca9cca4c02da6076376042a20da3/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde", size = 2249063 }, + { url = "https://files.pythonhosted.org/packages/17/d7/c37d208d5738f7b9ad8f22ae8a727d88ebf9c16c04ed2475122cc3f7224a/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add", size = 2254631 }, + { url = "https://files.pythonhosted.org/packages/13/e0/bafa46476d328e4553b85ab9b2f7409e7aaef0ce4c937c894821c542d347/pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c", size = 2080877 }, + { url = "https://files.pythonhosted.org/packages/0b/76/1794e440c1801ed35415238d2c728f26cd12695df9057154ad768b7b991c/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a371dc00282c4b84246509a5ddc808e61b9864aa1eae9ecc92bb1268b82db4a", size = 2042858 }, + { url = "https://files.pythonhosted.org/packages/73/b4/9cd7b081fb0b1b4f8150507cd59d27b275c3e22ad60b35cb19ea0977d9b9/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f59295ecc75a1788af8ba92f2e8c6eeaa5a94c22fc4d151e8d9638814f85c8fc", size = 1873745 }, + { url = "https://files.pythonhosted.org/packages/e1/d7/9ddb7575d4321e40d0363903c2576c8c0c3280ebea137777e5ab58d723e3/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08530b8ac922003033f399128505f513e30ca770527cc8bbacf75a84fcc2c74b", size = 1904188 }, + { url = "https://files.pythonhosted.org/packages/d1/a8/3194ccfe461bb08da19377ebec8cb4f13c9bd82e13baebc53c5c7c39a029/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae370459da6a5466978c0eacf90690cb57ec9d533f8e63e564ef3822bfa04fe", size = 2083479 }, + { url = "https://files.pythonhosted.org/packages/42/c7/84cb569555d7179ca0b3f838cef08f66f7089b54432f5b8599aac6e9533e/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3de2777e3b9f4d603112f78006f4ae0acb936e95f06da6cb1a45fbad6bdb4b5", size = 2118415 }, + { url = "https://files.pythonhosted.org/packages/3b/67/72abb8c73e0837716afbb58a59cc9e3ae43d1aa8677f3b4bc72c16142716/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a64e81e8cba118e108d7126362ea30e021291b7805d47e4896e52c791be2761", size = 2079623 }, + { url = "https://files.pythonhosted.org/packages/0b/cd/c59707e35a47ba4cbbf153c3f7c56420c58653b5801b055dc52cccc8e2dc/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850", size = 2250175 }, + { url = "https://files.pythonhosted.org/packages/84/32/e4325a6676b0bed32d5b084566ec86ed7fd1e9bcbfc49c578b1755bde920/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544", size = 2254674 }, + { url = "https://files.pythonhosted.org/packages/12/6f/5596dc418f2e292ffc661d21931ab34591952e2843e7168ea5a52591f6ff/pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5", size = 2080951 }, + { url = "https://files.pythonhosted.org/packages/2d/a8/c2c8f29bd18f7ef52de32a6deb9e3ee87ba18b7b2122636aa9f4438cf627/pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7edbc454a29fc6aeae1e1eecba4f07b63b8d76e76a748532233c4c167b4cb9ea", size = 2041791 }, + { url = "https://files.pythonhosted.org/packages/08/ad/328081b1c82543ae49d0650048305058583c51f1a9a56a0d6e87bb3a2443/pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ad05b683963f69a1d5d2c2bdab1274a31221ca737dbbceaa32bcb67359453cdd", size = 1873579 }, + { url = "https://files.pythonhosted.org/packages/6e/8a/bc65dbf7e501e88367cdab06a2c1340457c785f0c72288cae737fd80c0fa/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df6a94bf9452c6da9b5d76ed229a5683d0306ccb91cca8e1eea883189780d568", size = 1904189 }, + { url = "https://files.pythonhosted.org/packages/9a/db/30ca6aefda211fb01ef185ca73cb7a0c6e7fe952c524025c8782b5acd771/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7965c13b3967909a09ecc91f21d09cfc4576bf78140b988904e94f130f188396", size = 2084446 }, + { url = "https://files.pythonhosted.org/packages/f2/89/a12b55286e30c9f476eab7c53c9249ec76faf70430596496ab0309f28629/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f1fdb790440a34f6ecf7679e1863b825cb5ffde858a9197f851168ed08371e5", size = 2118215 }, + { url = "https://files.pythonhosted.org/packages/8e/55/12721c4a8d7951584ad3d9848b44442559cf1876e0bb424148d1060636b3/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5277aec8d879f8d05168fdd17ae811dd313b8ff894aeeaf7cd34ad28b4d77e33", size = 2079963 }, + { url = "https://files.pythonhosted.org/packages/bd/0c/3391bd5d6ff62ea998db94732528d9bc32c560b0ed861c39119759461946/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8ab581d3530611897d863d1a649fb0644b860286b4718db919bfd51ece41f10b", size = 2249388 }, + { url = "https://files.pythonhosted.org/packages/d3/5f/3e4feb042998d7886a9b523b372d83955cbc192a07013dcd24276db078ee/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0483847fa9ad5e3412265c1bd72aad35235512d9ce9d27d81a56d935ef489672", size = 2255226 }, + { url = "https://files.pythonhosted.org/packages/25/f2/1647933efaaad61846109a27619f3704929e758a09e6431b8f932a053d40/pydantic_core-2.33.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de9e06abe3cc5ec6a2d5f75bc99b0bdca4f5c719a5b34026f8c57efbdecd2ee3", size = 2081073 }, ] [[package]] From da841493831c86229ce5d5dd4dfbc482bfea3ddb Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 2 Apr 2025 16:49:26 +0200 Subject: [PATCH 002/106] Make sure `__pydantic_private__` exists before setting private attributes (#11666) --- pydantic/main.py | 12 +++++++++++- tests/test_main.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/pydantic/main.py b/pydantic/main.py index b21165c6abf..c38635471f8 100644 --- a/pydantic/main.py +++ b/pydantic/main.py @@ -99,10 +99,20 @@ def _model_field_setattr_handler(model: BaseModel, name: str, val: Any) -> None: model.__pydantic_fields_set__.add(name) +def _private_setattr_handler(model: BaseModel, name: str, val: Any) -> None: + if getattr(model, '__pydantic_private__', None) is None: + # While the attribute should be present at this point, this may not be the case if + # users do unusual stuff with `model_post_init()` (which is where the `__pydantic_private__` + # is initialized, by wrapping the user-defined `model_post_init()`), e.g. if they mock + # the `model_post_init()` call. Ideally we should find a better way to init private attrs. + object.__setattr__(model, '__pydantic_private__', {}) + model.__pydantic_private__[name] = val # pyright: ignore[reportOptionalSubscript] + + _SIMPLE_SETATTR_HANDLERS: Mapping[str, Callable[[BaseModel, str, Any], None]] = { 'model_field': _model_field_setattr_handler, 'validate_assignment': lambda model, name, val: model.__pydantic_validator__.validate_assignment(model, name, val), # pyright: ignore[reportAssignmentType] - 'private': lambda model, name, val: model.__pydantic_private__.__setitem__(name, val), # pyright: ignore[reportOptionalMemberAccess] + 'private': _private_setattr_handler, 'cached_property': lambda model, name, val: model.__dict__.__setitem__(name, val), 'extra_known': lambda model, name, val: _object_setattr(model, name, val), } diff --git a/tests/test_main.py b/tests/test_main.py index d2c7b803d7c..9be802105a3 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -2307,6 +2307,34 @@ class C(A, B): assert calls == ['C.model_post_init'] +def test_model_post_init_mocked_setattr() -> None: + """https://github.com/pydantic/pydantic/issues/11646 + + Fixes a small regression in 2.11. To instantiate private attributes on model instances + (and as such the `__pydantic_private__` instance attribute), Pydantic defines its own + `model_post_init()` (and wraps the user-defined one if it exists). In tests, some users + can mock their `model_post_init()` if they want to avoid unwanted side-effects (meaning + `__pydantic_private__` won't be instantiated). + In 2.11, the `BaseModel.__setattr__` logic was tweaked and required the `__pydantic_private__` + attribute to be present, resulting in attribute errors. + """ + + class Model(BaseModel): + _a: int + + def model_post_init(self, context: Any, /) -> None: + """Do some stuff""" + + # This reproduces `patch.object(Model, 'model_post_init')`: + Model.model_post_init = lambda *args, **kwargs: None + + m = Model() + assert m.__pydantic_private__ is None + + m._a = 2 + assert m._a == 2 + + def test_del_model_attr(): class Model(BaseModel): some_field: str From 86c5703a2d4afe43f2adea9b2c5450b178ce5121 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 2 Apr 2025 16:51:57 +0200 Subject: [PATCH 003/106] Do not override `FieldInfo._complete` when using field from parent class (#11668) --- pydantic/_internal/_fields.py | 25 ++++++++++++------------- tests/test_forward_ref.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/pydantic/_internal/_fields.py b/pydantic/_internal/_fields.py index 4540b8d83f1..65116067f6e 100644 --- a/pydantic/_internal/_fields.py +++ b/pydantic/_internal/_fields.py @@ -202,24 +202,23 @@ def collect_model_fields( # noqa: C901 ) if assigned_value is PydanticUndefined: # no assignment, just a plain annotation - if ann_name in annotations: - # field is present in the current model's annotations (and *not* from parent classes) + if ann_name in annotations or ann_name not in parent_fields_lookup: + # field is either: + # - present in the current model's annotations (and *not* from parent classes) + # - not found on any base classes; this seems to be caused by fields bot getting + # generated due to models not being fully defined while initializing recursive models. + # Nothing stops us from just creating a `FieldInfo` for this type hint, so we do this. field_info = FieldInfo_.from_annotation(ann_type, _source=AnnotationSource.CLASS) - elif ann_name in parent_fields_lookup: + if not evaluated: + field_info._complete = False + # Store the original annotation that should be used to rebuild + # the field info later: + field_info._original_annotation = ann_type + else: # The field was present on one of the (possibly multiple) base classes # copy the field to make sure typevar substitutions don't cause issues with the base classes field_info = copy(parent_fields_lookup[ann_name]) - else: - # The field was not found on any base classes; this seems to be caused by fields not getting - # generated thanks to models not being fully defined while initializing recursive models. - # Nothing stops us from just creating a new FieldInfo for this type hint, so we do this. - field_info = FieldInfo_.from_annotation(ann_type, _source=AnnotationSource.CLASS) - if not evaluated: - field_info._complete = False - # Store the original annotation that should be used to rebuild - # the field info later: - field_info._original_annotation = ann_type else: # An assigned value is present (either the default value, or a `Field()` function) _warn_on_nested_alias_in_annotation(ann_type, ann_name) if isinstance(assigned_value, FieldInfo_) and ismethoddescriptor(assigned_value.default): diff --git a/tests/test_forward_ref.py b/tests/test_forward_ref.py index e400c486f9c..01d81f95d8a 100644 --- a/tests/test_forward_ref.py +++ b/tests/test_forward_ref.py @@ -1196,6 +1196,36 @@ class Foo(BaseModel): module_2.Foo(bar={'f': 1}) +def test_preserve_evaluated_attribute_of_parent_fields(create_module): + """https://github.com/pydantic/pydantic/issues/11663""" + + @create_module + def module_1(): + from pydantic import BaseModel + + class Child(BaseModel): + parent: 'Optional[Parent]' = None + + class Parent(BaseModel): + child: list[Child] = [] + + module_1 = create_module( + f""" +from {module_1.__name__} import Child, Parent + +from typing import Optional + +Child.model_rebuild() + +class SubChild(Child): + pass + +assert SubChild.__pydantic_fields_complete__ +SubChild() + """ + ) + + def test_uses_the_local_namespace_when_generating_schema(): def func(): A = int From 8b0825add81e53daefba83e5a147cd13ca57a63b Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 2 Apr 2025 16:55:47 +0200 Subject: [PATCH 004/106] Provide the available definitions when applying discriminated unions (#11670) --- pydantic/_internal/_generate_schema.py | 3 ++ tests/test_discriminated_union.py | 57 +++++++++++++++++++++++++- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/pydantic/_internal/_generate_schema.py b/pydantic/_internal/_generate_schema.py index c7efbf5b209..a30c5ba0f45 100644 --- a/pydantic/_internal/_generate_schema.py +++ b/pydantic/_internal/_generate_schema.py @@ -644,6 +644,7 @@ def _apply_discriminator_to_union( return _discriminated_union.apply_discriminator( schema, discriminator, + self.defs._definitions, ) except _discriminated_union.MissingDefinitionForUnionRef: # defer until defs are resolved @@ -2766,6 +2767,8 @@ def finalize_schema(self, schema: CoreSchema) -> CoreSchema: remaining_defs: dict[str, CoreSchema] = {} + # Note: this logic doesn't play well when core schemas with deferred discriminator metadata + # and references are encountered. See the `test_deferred_discriminated_union_and_references()` test. for ref, inlinable_def_ref in gather_result['collected_references'].items(): if inlinable_def_ref is not None and (inlining_behavior := _inlining_behavior(inlinable_def_ref)) != 'keep': if inlining_behavior == 'inline': diff --git a/tests/test_discriminated_union.py b/tests/test_discriminated_union.py index 6d9ad5195f7..fe21fabf4fc 100644 --- a/tests/test_discriminated_union.py +++ b/tests/test_discriminated_union.py @@ -10,7 +10,7 @@ import pytest from dirty_equals import HasRepr, IsStr from pydantic_core import SchemaValidator, core_schema -from typing_extensions import TypedDict +from typing_extensions import TypeAliasType, TypedDict from pydantic import ( BaseModel, @@ -23,7 +23,9 @@ ValidationError, field_validator, ) +from pydantic._internal._config import ConfigWrapper from pydantic._internal._discriminated_union import apply_discriminator +from pydantic._internal._generate_schema import GenerateSchema from pydantic.dataclasses import dataclass as pydantic_dataclass from pydantic.errors import PydanticUserError from pydantic.fields import FieldInfo @@ -2199,3 +2201,56 @@ class Reference(BaseModel): # `'pydantic_internal_union_discriminator'` meta key from the schemas. The schema cleaning # logic of `Reference` would then re-apply the deferred discriminator logic for `Base`. assert Base.__pydantic_core_schema__ == base_schema + + +def test_discriminated_union_type_alias_type() -> None: + """https://github.com/pydantic/pydantic/issues/11661 + + This was fixed by making sure we provide the available definitions + when first trying to apply discriminated unions during core schema + generation (which we forgot to do). Our schema cleaning logic is still + not working correctly when deferred discriminated unions are involved + together with referenceable core schemas that should be inlined. In practice, + I don't know if such a scenario can happen (see the test below -- + `test_deferred_discriminated_union_and_references()` for a theoretical example). + """ + + class Foo(BaseModel): + type: Literal['foo'] = 'foo' + + Disc = TypeAliasType('Disc', Annotated[Foo, Field(discriminator='type')]) + + class Main(BaseModel): + f: Disc + + # Use the JSON Schema to avoid making assertions on the core schema, that + # may be less stable: + assert Main.model_json_schema()['$defs']['Disc']['discriminator'] == { + 'mapping': {'foo': '#/$defs/Foo'}, + 'propertyName': 'type', + } + + +@pytest.mark.xfail(reason='deferred discriminated union info is lost on core schemas that are inlined.') +def test_deferred_discriminated_union_and_references() -> None: + class Foo(BaseModel): + type: Literal['foo'] = 'foo' + + class Bar(BaseModel): + type: Literal['bar'] = 'bar' + + gen_schema = GenerateSchema(ConfigWrapper(None)) + + foo_ref = gen_schema.defs.create_definition_reference_schema(Foo.__pydantic_core_schema__) + bar_ref = gen_schema.defs.create_definition_reference_schema(Bar.__pydantic_core_schema__) + + disc_union = core_schema.union_schema( + choices=[foo_ref, bar_ref], + metadata={'pydantic_internal_union_discriminator': 'type'}, + ref='disc_union', + ) + disc_union_ref = gen_schema.defs.create_definition_reference_schema(disc_union) + + final_schema = gen_schema.clean_schema(disc_union_ref) + + assert final_schema['type'] == 'tagged-union' From cbf4202637a56fc5325ab4b18452e3f3ba910a84 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 2 Apr 2025 17:01:28 +0200 Subject: [PATCH 005/106] Do not expand root type in the mypy plugin for variables (#11676) --- pydantic/mypy.py | 10 +++++++--- tests/mypy/modules/root_models.py | 6 +++++- .../outputs/1.10.1/mypy-default_ini/root_models.py | 6 +++++- .../mypy/outputs/1.10.1/mypy-plugin_ini/root_models.py | 6 +++++- .../1.10.1/pyproject-default_toml/root_models.py | 6 +++++- 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/pydantic/mypy.py b/pydantic/mypy.py index 510c165a755..41d587da13d 100644 --- a/pydantic/mypy.py +++ b/pydantic/mypy.py @@ -290,7 +290,7 @@ def to_argument( strict = model_strict if self.strict is None else self.strict if typed or strict: - type_annotation = self.expand_type(current_info, api) + type_annotation = self.expand_type(current_info, api, include_root_type=True) else: type_annotation = AnyType(TypeOfAny.explicit) @@ -304,7 +304,11 @@ def to_argument( ) def expand_type( - self, current_info: TypeInfo, api: SemanticAnalyzerPluginInterface, force_typevars_invariant: bool = False + self, + current_info: TypeInfo, + api: SemanticAnalyzerPluginInterface, + force_typevars_invariant: bool = False, + include_root_type: bool = False, ) -> Type | None: """Based on mypy.plugins.dataclasses.DataclassAttribute.expand_type.""" if force_typevars_invariant: @@ -332,7 +336,7 @@ def expand_type( arg.variance = INVARIANT expanded_type = expand_type(self.type, {self.info.self_type.id: filled_with_typevars}) - if isinstance(expanded_type, Instance) and is_root_model(expanded_type.type): + if include_root_type and isinstance(expanded_type, Instance) and is_root_model(expanded_type.type): # When a root model is used as a field, Pydantic allows both an instance of the root model # as well as instances of the `root` field type: root_type = cast(Type, expanded_type.type['root'].type) diff --git a/tests/mypy/modules/root_models.py b/tests/mypy/modules/root_models.py index bbda2ee012b..804d1d43eeb 100644 --- a/tests/mypy/modules/root_models.py +++ b/tests/mypy/modules/root_models.py @@ -1,5 +1,7 @@ from typing import Generic, TypeVar +from typing_extensions import assert_type + from pydantic import BaseModel, RootModel @@ -40,5 +42,7 @@ class Model(BaseModel, Generic[V]): Model[str](m1=1, m2='dog', m3=[]) -Model[str](m1=Maybe(None), m2=Maybe('dog'), m3=Maybe([])) +m = Model[str](m1=Maybe(None), m2=Maybe('dog'), m3=Maybe([])) Model(m1=None, m2={}, m3=[]) + +assert_type(m.m1, Maybe[int]) diff --git a/tests/mypy/outputs/1.10.1/mypy-default_ini/root_models.py b/tests/mypy/outputs/1.10.1/mypy-default_ini/root_models.py index 98839e2be18..01cf5bbb3b6 100644 --- a/tests/mypy/outputs/1.10.1/mypy-default_ini/root_models.py +++ b/tests/mypy/outputs/1.10.1/mypy-default_ini/root_models.py @@ -1,5 +1,7 @@ from typing import Generic, TypeVar +from typing_extensions import assert_type + from pydantic import BaseModel, RootModel @@ -45,8 +47,10 @@ class Model(BaseModel, Generic[V]): # MYPY: error: Argument "m1" to "Model" has incompatible type "int"; expected "Maybe[int]" [arg-type] # MYPY: error: Argument "m2" to "Model" has incompatible type "str"; expected "Maybe[str]" [arg-type] # MYPY: error: Argument "m3" to "Model" has incompatible type "list[Never]"; expected "Maybe[Any]" [arg-type] -Model[str](m1=Maybe(None), m2=Maybe('dog'), m3=Maybe([])) +m = Model[str](m1=Maybe(None), m2=Maybe('dog'), m3=Maybe([])) Model(m1=None, m2={}, m3=[]) # MYPY: error: Argument "m1" to "Model" has incompatible type "None"; expected "Maybe[int]" [arg-type] # MYPY: error: Argument "m2" to "Model" has incompatible type "dict[Never, Never]"; expected "Maybe[Never]" [arg-type] # MYPY: error: Argument "m3" to "Model" has incompatible type "list[Never]"; expected "Maybe[Any]" [arg-type] + +assert_type(m.m1, Maybe[int]) diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin_ini/root_models.py b/tests/mypy/outputs/1.10.1/mypy-plugin_ini/root_models.py index 3e36027996e..5bb30a044f0 100644 --- a/tests/mypy/outputs/1.10.1/mypy-plugin_ini/root_models.py +++ b/tests/mypy/outputs/1.10.1/mypy-plugin_ini/root_models.py @@ -1,5 +1,7 @@ from typing import Generic, TypeVar +from typing_extensions import assert_type + from pydantic import BaseModel, RootModel @@ -43,5 +45,7 @@ class Model(BaseModel, Generic[V]): Model[str](m1=1, m2='dog', m3=[]) -Model[str](m1=Maybe(None), m2=Maybe('dog'), m3=Maybe([])) +m = Model[str](m1=Maybe(None), m2=Maybe('dog'), m3=Maybe([])) Model(m1=None, m2={}, m3=[]) + +assert_type(m.m1, Maybe[int]) diff --git a/tests/mypy/outputs/1.10.1/pyproject-default_toml/root_models.py b/tests/mypy/outputs/1.10.1/pyproject-default_toml/root_models.py index 98839e2be18..01cf5bbb3b6 100644 --- a/tests/mypy/outputs/1.10.1/pyproject-default_toml/root_models.py +++ b/tests/mypy/outputs/1.10.1/pyproject-default_toml/root_models.py @@ -1,5 +1,7 @@ from typing import Generic, TypeVar +from typing_extensions import assert_type + from pydantic import BaseModel, RootModel @@ -45,8 +47,10 @@ class Model(BaseModel, Generic[V]): # MYPY: error: Argument "m1" to "Model" has incompatible type "int"; expected "Maybe[int]" [arg-type] # MYPY: error: Argument "m2" to "Model" has incompatible type "str"; expected "Maybe[str]" [arg-type] # MYPY: error: Argument "m3" to "Model" has incompatible type "list[Never]"; expected "Maybe[Any]" [arg-type] -Model[str](m1=Maybe(None), m2=Maybe('dog'), m3=Maybe([])) +m = Model[str](m1=Maybe(None), m2=Maybe('dog'), m3=Maybe([])) Model(m1=None, m2={}, m3=[]) # MYPY: error: Argument "m1" to "Model" has incompatible type "None"; expected "Maybe[int]" [arg-type] # MYPY: error: Argument "m2" to "Model" has incompatible type "dict[Never, Never]"; expected "Maybe[Never]" [arg-type] # MYPY: error: Argument "m3" to "Model" has incompatible type "list[Never]"; expected "Maybe[Any]" [arg-type] + +assert_type(m.m1, Maybe[int]) From dfa6c6715df831c2eba3c4c96c231b66e0fc3d4a Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 2 Apr 2025 17:01:46 +0200 Subject: [PATCH 006/106] Mention the attribute name in model fields deprecation message (#11674) --- pydantic/_internal/_utils.py | 4 +++- tests/test_deprecated.py | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pydantic/_internal/_utils.py b/pydantic/_internal/_utils.py index abe89c83449..f33464987bc 100644 --- a/pydantic/_internal/_utils.py +++ b/pydantic/_internal/_utils.py @@ -7,6 +7,7 @@ import dataclasses import keyword +import sys import typing import warnings import weakref @@ -420,8 +421,9 @@ def __get__(self, instance: None, objtype: type[_ModelT]) -> _RT: ... def __get__(self, instance: _ModelT, objtype: type[_ModelT]) -> _RT: ... def __get__(self, instance: _ModelT | None, objtype: type[_ModelT]) -> _RT: if instance is not None: + attr_name = self.fget.__name__ if sys.version_info >= (3, 10) else self.fget.__func__.__name__ warnings.warn( - 'Accessing this attribute on the instance is deprecated, and will be removed in Pydantic V3. ' + f'Accessing the {attr_name!r} attribute on the instance is deprecated. ' 'Instead, you should access this attribute from the model class.', category=PydanticDeprecatedSince211, stacklevel=2, diff --git a/tests/test_deprecated.py b/tests/test_deprecated.py index bb920c46476..99a9391526e 100644 --- a/tests/test_deprecated.py +++ b/tests/test_deprecated.py @@ -330,10 +330,10 @@ def area(self) -> int: m = Model(x=1) assert len(Model.model_fields) == 2 - with pytest.warns(PydanticDeprecatedSince211): + with pytest.warns(PydanticDeprecatedSince211, match="Accessing the 'model_fields' attribute"): assert len(m.model_fields) == 2 - with pytest.warns(PydanticDeprecatedSince211): + with pytest.warns(PydanticDeprecatedSince211, match="Accessing the 'model_computed_fields' attribute"): assert len(m.model_computed_fields) == 1 match = '^The `__fields__` attribute is deprecated, use `model_fields` instead.' From 34095c7523371e04b6b8fd9b55680845dd7dd279 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 2 Apr 2025 22:48:07 +0200 Subject: [PATCH 007/106] Properly validate parameterized mappings (#11658) --- pydantic/_internal/_generate_schema.py | 48 +++++++++++++++----------- tests/test_types.py | 21 ++++++----- 2 files changed, 40 insertions(+), 29 deletions(-) diff --git a/pydantic/_internal/_generate_schema.py b/pydantic/_internal/_generate_schema.py index a30c5ba0f45..92069440ffa 100644 --- a/pydantic/_internal/_generate_schema.py +++ b/pydantic/_internal/_generate_schema.py @@ -566,32 +566,38 @@ def _deque_schema(self, items_type: Any) -> CoreSchema: def _mapping_schema(self, tp: Any, keys_type: Any, values_type: Any) -> CoreSchema: from ._validators import MAPPING_ORIGIN_MAP, defaultdict_validator, get_defaultdict_default_default_factory + mapped_origin = MAPPING_ORIGIN_MAP[tp] keys_schema = self.generate_schema(keys_type) values_schema = self.generate_schema(values_type) + dict_schema = core_schema.dict_schema(keys_schema, values_schema, strict=False) - dict_schema = core_schema.dict_schema(keys_schema, values_schema) - check_instance = core_schema.json_or_python_schema( - json_schema=dict_schema, - python_schema=core_schema.is_instance_schema(tp), - ) - - if tp is collections.defaultdict: - default_default_factory = get_defaultdict_default_default_factory(values_type) - coerce_instance_wrap = partial( - core_schema.no_info_wrap_validator_function, - partial(defaultdict_validator, default_default_factory=default_default_factory), - ) + if mapped_origin is dict: + schema = dict_schema else: - coerce_instance_wrap = partial(core_schema.no_info_after_validator_function, MAPPING_ORIGIN_MAP[tp]) + check_instance = core_schema.json_or_python_schema( + json_schema=dict_schema, + python_schema=core_schema.is_instance_schema(mapped_origin), + ) - lax_schema = coerce_instance_wrap(dict_schema) - schema = core_schema.lax_or_strict_schema( - lax_schema=lax_schema, - strict_schema=core_schema.union_schema([check_instance, lax_schema]), - serialization=core_schema.wrap_serializer_function_ser_schema( - lambda v, h: h(v), schema=dict_schema, info_arg=False - ), - ) + if tp is collections.defaultdict: + default_default_factory = get_defaultdict_default_default_factory(values_type) + coerce_instance_wrap = partial( + core_schema.no_info_wrap_validator_function, + partial(defaultdict_validator, default_default_factory=default_default_factory), + ) + else: + coerce_instance_wrap = partial(core_schema.no_info_after_validator_function, mapped_origin) + + lax_schema = coerce_instance_wrap(dict_schema) + strict_schema = core_schema.chain_schema([check_instance, lax_schema]) + + schema = core_schema.lax_or_strict_schema( + lax_schema=lax_schema, + strict_schema=strict_schema, + serialization=core_schema.wrap_serializer_function_ser_schema( + lambda v, h: h(v), schema=dict_schema, info_arg=False + ), + ) return schema diff --git a/tests/test_types.py b/tests/test_types.py index 25b9cab3e14..1c5952f9cd4 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -9,8 +9,8 @@ import sys import typing import uuid -from collections import Counter, OrderedDict, defaultdict, deque -from collections.abc import Iterable, Sequence +from collections import Counter, OrderedDict, UserDict, defaultdict, deque +from collections.abc import Iterable, Mapping, MutableMapping, Sequence from dataclasses import dataclass from datetime import date, datetime, time, timedelta, timezone from decimal import Decimal @@ -6951,17 +6951,22 @@ class Foo(BaseModel): assert exc_info.value.errors(include_url=False) == errors -def test_mutable_mapping() -> None: +def test_mutable_mapping_userdict_subclass() -> None: """Addresses https://github.com/pydantic/pydantic/issues/9549. - Note - we still don't do a good job of handling subclasses, as we convert the input to a dict - via the MappingValidator annotation's schema. + Note - we still don't do a good job of handling subclasses, as we convert the input to a dict. """ - import collections.abc + adapter = TypeAdapter(MutableMapping, config=ConfigDict(strict=True)) - adapter = TypeAdapter(collections.abc.MutableMapping, config=ConfigDict(strict=True)) + assert isinstance(adapter.validate_python(UserDict()), MutableMapping) - assert isinstance(adapter.validate_python(collections.UserDict()), collections.abc.MutableMapping) + +def test_mapping_parameterized() -> None: + """https://github.com/pydantic/pydantic/issues/11650""" + adapter = TypeAdapter(Mapping[str, int]) + + with pytest.raises(ValidationError): + adapter.validate_python({'valid': 1, 'invalid': {}}) def test_ser_ip_with_union() -> None: From f70f2917913e53adfb82700f348bf8e3fae21357 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 2 Apr 2025 23:49:41 +0200 Subject: [PATCH 008/106] Add integration documentation for llms.txt (#11677) --- docs/integrations/llms.md | 14 ++++++++++++++ mkdocs.yml | 1 + uv.lock | 4 ++-- 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 docs/integrations/llms.md diff --git a/docs/integrations/llms.md b/docs/integrations/llms.md new file mode 100644 index 00000000000..5618b4b1345 --- /dev/null +++ b/docs/integrations/llms.md @@ -0,0 +1,14 @@ +The Pydantic documentation is available in the [llms.txt](https://llmstxt.org/) format. +This format is defined in Markdown and suited for large language models. + +Two formats are available: + +- [llms.txt](https://docs.pydantic.dev/latest/llms.txt): a file containing a brief description + of the project, along with links to the different sections of the documentation. The structure + of this file is described in details [here](https://llmstxt.org/#format). +- [llms-full.txt](https://docs.pydantic.dev/latest/llms-full.txt): Similar to the `llms.txt` file, + but every link content is included. Note that this file may be too large for some LLMs. + +As of today, these files *cannot* be natively leveraged by LLM frameworks or IDEs. Alternatively, +a [MCP server](https://modelcontextprotocol.io/) can be implemented to properly parse the `llms.txt` +file. diff --git a/mkdocs.yml b/mkdocs.yml index 0f86df0029d..c51497bbb84 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -171,6 +171,7 @@ nav: - Usage Errors: errors/usage_errors.md - Integrations: - Pydantic Logfire: integrations/logfire.md + - LLMs: integrations/llms.md - Dev Tools: - Mypy: integrations/mypy.md/. - PyCharm: integrations/pycharm.md diff --git a/uv.lock b/uv.lock index 26c0a259426..e0927d973d2 100644 --- a/uv.lock +++ b/uv.lock @@ -1198,8 +1198,8 @@ wheels = [ [[package]] name = "mkdocs-llmstxt" -version = "0.1.1.dev17+gd873d51" -source = { git = "https://github.com/Viicos/mkdocs-llmstxt?rev=issue-1#d873d51f3c215b02e450847c1a382e3625975aa1" } +version = "0.1.1.dev18+g4955925" +source = { git = "https://github.com/Viicos/mkdocs-llmstxt?rev=issue-1#495592556a94c80e7a0f7184f647f6e6207747d9" } dependencies = [ { name = "beautifulsoup4" }, { name = "markdownify" }, From bd1f8cf44a271e7313026faab318f3c37f23b3f4 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 3 Apr 2025 14:14:34 +0200 Subject: [PATCH 009/106] Prepare release v2.11.2 (#11684) --- CITATION.cff | 4 ++-- HISTORY.md | 16 ++++++++++++++++ pydantic/version.py | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index bd3b574cd5b..926c024d2fc 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -44,5 +44,5 @@ keywords: - hints - typing license: MIT -version: v2.11.1 -date-released: 2025-03-28 +version: v2.11.2 +date-released: 2025-04-03 diff --git a/HISTORY.md b/HISTORY.md index 02cd05498a2..490bba375a4 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,19 @@ +## v2.11.2 (2025-04-03) + +[GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.2) + +### What's Changed + +#### Fixes + +* Bump `pydantic-core` to v2.33.1 by @Viicos in [#11678](https://github.com/pydantic/pydantic/pull/11678) +* Make sure `__pydantic_private__` exists before setting private attributes by @Viicos in [#11666](https://github.com/pydantic/pydantic/pull/11666) +* Do not override `FieldInfo._complete` when using field from parent class by @Viicos in [#11668](https://github.com/pydantic/pydantic/pull/11668) +* Provide the available definitions when applying discriminated unions by @Viicos in [#11670](https://github.com/pydantic/pydantic/pull/11670) +* Do not expand root type in the mypy plugin for variables by @Viicos in [#11676](https://github.com/pydantic/pydantic/pull/11676) +* Mention the attribute name in model fields deprecation message by @Viicos in [#11674](https://github.com/pydantic/pydantic/pull/11674) +* Properly validate parameterized mappings by @Viicos in [#11658](https://github.com/pydantic/pydantic/pull/11658) + ## v2.11.1 (2025-03-28) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.1) diff --git a/pydantic/version.py b/pydantic/version.py index 59e1bb43211..d04d26fbd20 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -6,7 +6,7 @@ __all__ = 'VERSION', 'version_info' -VERSION = '2.11.1' +VERSION = '2.11.2' """The version of Pydantic.""" From 04fd6395c7165232785992a6ad0e817e9db6e590 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:20:32 +0200 Subject: [PATCH 010/106] Update V1 copy to v1.10.21 (#11706) --- HISTORY.md | 22 ++++++++++++++++++++++ pydantic/v1/main.py | 6 ++++++ pydantic/v1/typing.py | 9 ++++++++- pydantic/v1/utils.py | 4 +++- pydantic/v1/version.py | 2 +- 5 files changed, 40 insertions(+), 3 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 490bba375a4..b22dbb2dea5 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1927,6 +1927,28 @@ First pre-release of Pydantic V2! See [this post](https://docs.pydantic.dev/blog/pydantic-v2-alpha/) for more details. +## v1.10.21 (2025-01-10) + +* Fix compatibility with ForwardRef._evaluate and Python < 3.12.4 by @griels in https://github.com/pydantic/pydantic/pull/11232 + +## v1.10.20 (2025-01-07) + +This release provides proper support for Python 3.13, with (Cythonized) wheels published for this version. +As a consequence, Cython was updated from `0.29.x` to `3.0.x`. + +* General maintenance of CI and build ecosystem by @Viicos in https://github.com/pydantic/pydantic/pull/10847 + - Update Cython to `3.0.x`. + - Properly address Python 3.13 deprecation warnings. + - Migrate packaging to `pyproject.toml`, make use of PEP 517 build options. + - Use [`build`](https://pypi.org/project/build/) instead of direct `setup.py` invocations. + - Update various Github Actions versions. +* Replace outdated stpmex link in documentation by @jaredenorris in https://github.com/pydantic/pydantic/pull/10997 + +## v1.10.19 (2024-11-06) + +* Add warning when v2 model is nested in v1 model by @sydney-runkle in https://github.com/pydantic/pydantic/pull/10432 +* Fix deprecation warning in V1 `isinstance` check by @alicederyn in https://github.com/pydantic/pydantic/pull/10645 + ## v1.10.19 (2024-11-06) * Add warning when v2 model is nested in v1 model by @sydney-runkle in https://github.com/pydantic/pydantic/pull/10432 diff --git a/pydantic/v1/main.py b/pydantic/v1/main.py index 68af6f55444..8000967eafc 100644 --- a/pydantic/v1/main.py +++ b/pydantic/v1/main.py @@ -282,6 +282,12 @@ def is_untouched(v: Any) -> bool: cls = super().__new__(mcs, name, bases, new_namespace, **kwargs) # set __signature__ attr only for model class, but not for its instances cls.__signature__ = ClassAttribute('__signature__', generate_model_signature(cls.__init__, fields, config)) + + if not _is_base_model_class_defined: + # Cython does not understand the `if TYPE_CHECKING:` condition in the + # BaseModel's body (where annotations are set), so clear them manually: + getattr(cls, '__annotations__', {}).clear() + if resolve_forward_refs: cls.__try_update_forward_refs__() diff --git a/pydantic/v1/typing.py b/pydantic/v1/typing.py index 7dd341ce0cc..3038ccda4c8 100644 --- a/pydantic/v1/typing.py +++ b/pydantic/v1/typing.py @@ -58,7 +58,7 @@ def evaluate_forwardref(type_: ForwardRef, globalns: Any, localns: Any) -> Any: return type_._evaluate(globalns, localns) -else: +elif sys.version_info < (3, 12, 4): def evaluate_forwardref(type_: ForwardRef, globalns: Any, localns: Any) -> Any: # Even though it is the right signature for python 3.9, mypy complains with @@ -67,6 +67,13 @@ def evaluate_forwardref(type_: ForwardRef, globalns: Any, localns: Any) -> Any: # TypeError: ForwardRef._evaluate() missing 1 required keyword-only argument: 'recursive_guard' return cast(Any, type_)._evaluate(globalns, localns, recursive_guard=set()) +else: + + def evaluate_forwardref(type_: ForwardRef, globalns: Any, localns: Any) -> Any: + # Pydantic 1.x will not support PEP 695 syntax, but provide `type_params` to avoid + # warnings: + return cast(Any, type_)._evaluate(globalns, localns, type_params=(), recursive_guard=set()) + if sys.version_info < (3, 9): # Ensure we always get all the whole `Annotated` hint, not just the annotated type. diff --git a/pydantic/v1/utils.py b/pydantic/v1/utils.py index 0bd238ee44d..02543fd1370 100644 --- a/pydantic/v1/utils.py +++ b/pydantic/v1/utils.py @@ -159,7 +159,7 @@ def sequence_like(v: Any) -> bool: return isinstance(v, (list, tuple, set, frozenset, GeneratorType, deque)) -def validate_field_name(bases: List[Type['BaseModel']], field_name: str) -> None: +def validate_field_name(bases: Iterable[Type[Any]], field_name: str) -> None: """ Ensure that the field's name does not shadow an existing attribute of the model. """ @@ -708,6 +708,8 @@ def is_valid_field(name: str) -> bool: '__orig_bases__', '__orig_class__', '__qualname__', + '__firstlineno__', + '__static_attributes__', } diff --git a/pydantic/v1/version.py b/pydantic/v1/version.py index 47be0b7573a..c77cde126f3 100644 --- a/pydantic/v1/version.py +++ b/pydantic/v1/version.py @@ -1,6 +1,6 @@ __all__ = 'compiled', 'VERSION', 'version_info' -VERSION = '1.10.19' +VERSION = '1.10.21' try: import cython # type: ignore From f14b7da9cf7f5f802ca5b8076ba7d9fcde1352cf Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 8 Apr 2025 14:07:57 +0200 Subject: [PATCH 011/106] Preserve field description when rebuilding model fields (#11698) --- pydantic/_internal/_fields.py | 10 ++++++---- tests/test_fields.py | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/pydantic/_internal/_fields.py b/pydantic/_internal/_fields.py index 65116067f6e..e9a7995c112 100644 --- a/pydantic/_internal/_fields.py +++ b/pydantic/_internal/_fields.py @@ -319,6 +319,7 @@ def rebuild_model_fields( if field_info._complete: rebuilt_fields[f_name] = field_info else: + existing_desc = field_info.description ann = _typing_extra.eval_type( field_info._original_annotation, *ns_resolver.types_namespace, @@ -326,11 +327,12 @@ def rebuild_model_fields( ann = _generics.replace_types(ann, typevars_map) if (assign := field_info._original_assignment) is PydanticUndefined: - rebuilt_fields[f_name] = FieldInfo_.from_annotation(ann, _source=AnnotationSource.CLASS) + new_field = FieldInfo_.from_annotation(ann, _source=AnnotationSource.CLASS) else: - rebuilt_fields[f_name] = FieldInfo_.from_annotated_attribute( - ann, assign, _source=AnnotationSource.CLASS - ) + new_field = FieldInfo_.from_annotated_attribute(ann, assign, _source=AnnotationSource.CLASS) + # The description might come from the docstring if `use_attribute_docstrings` was `True`: + new_field.description = new_field.description if new_field.description is not None else existing_desc + rebuilt_fields[f_name] = new_field return rebuilt_fields diff --git a/tests/test_fields.py b/tests/test_fields.py index 963d091578e..1a50ff2a45d 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -170,3 +170,21 @@ class Model(BaseModel): field: str = Field(coerce_numbers_to_str=True) assert Model(field=number).field == str(number) + + +def test_rebuild_model_fields_preserves_description() -> None: + """https://github.com/pydantic/pydantic/issues/11696""" + + class Model(BaseModel): + model_config = ConfigDict(use_attribute_docstrings=True) + + f: 'Int' + """test doc""" + + assert Model.model_fields['f'].description == 'test doc' + + Int = int + + Model.model_rebuild() + + assert Model.model_fields['f'].description == 'test doc' From a8b8b5f6f34f27ef721d4d1f85a3747847762db9 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 8 Apr 2025 14:56:53 +0200 Subject: [PATCH 012/106] Fix source locations in documentation for external packages (#11710) Co-authored-by: Stephen McDowell --- .github/workflows/ci.yml | 7 ++----- .github/workflows/docs-update.yml | 9 +++------ build-docs.sh | 6 ++++-- mkdocs.yml | 2 +- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f4e6faa8f97..0eedb9d5c0a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,17 +56,14 @@ jobs: - run: uv run python -c 'import docs.plugins.main' - # Adding local symlinks gets nice source locations like - # pydantic_core/core_schema.py - # instead of - # .venv/lib/python3.10/site-packages/pydantic_core/core_schema.py + # Taken from docs-build.sh - name: prepare shortcuts for extra modules run: | ln -s .venv/lib/python*/site-packages/pydantic_core pydantic_core ln -s .venv/lib/python*/site-packages/pydantic_settings pydantic_settings ln -s .venv/lib/python*/site-packages/pydantic_extra_types pydantic_extra_types - - run: uv run mkdocs build + - run: PYTHONPATH="$PWD${PYTHONPATH:+:${PYTHONPATH}}" uv run mkdocs build test-memray: name: Test memray diff --git a/.github/workflows/docs-update.yml b/.github/workflows/docs-update.yml index abfc5d502c3..f90fc99fb40 100644 --- a/.github/workflows/docs-update.yml +++ b/.github/workflows/docs-update.yml @@ -77,10 +77,7 @@ jobs: - run: uv run python -c 'import docs.plugins.main' - # Adding local symlinks gets nice source locations like - # pydantic_core/core_schema.py - # instead of - # .venv/lib/python3.10/site-packages/pydantic_core/core_schema.py + # Taken from docs-build.sh - name: Prepare shortcuts for extra modules run: | ln -s .venv/lib/python*/site-packages/pydantic_core pydantic_core @@ -92,7 +89,7 @@ jobs: git config --global user.name "${{ github.actor }}" git config --global user.email "${{ github.actor }}@users.noreply.github.com" - - run: uv run mike deploy -b docs-site dev --push + - run: PYTHONPATH="$PWD${PYTHONPATH:+:${PYTHONPATH}}" uv run mike deploy -b docs-site dev --push if: github.ref == 'refs/heads/main' - if: github.ref == 'refs/heads/docs-update' || startsWith(github.ref, 'refs/tags/') @@ -102,7 +99,7 @@ jobs: version_file_path: 'pydantic/version.py' skip_env_check: true - - run: uv run mike deploy -b docs-site ${{ steps.check-version.outputs.VERSION_MAJOR_MINOR }} latest --update-aliases --push + - run: PYTHONPATH="$PWD${PYTHONPATH:+:${PYTHONPATH}}" uv run mike deploy -b docs-site ${{ steps.check-version.outputs.VERSION_MAJOR_MINOR }} latest --update-aliases --push if: ${{ (github.ref == 'refs/heads/docs-update' || startsWith(github.ref, 'refs/tags/')) && !fromJSON(steps.check-version.outputs.IS_PRERELEASE) }} env: PYDANTIC_VERSION: v${{ steps.check-version.outputs.VERSION }} diff --git a/build-docs.sh b/build-docs.sh index 85cbba93d38..7b4b2d94dd0 100755 --- a/build-docs.sh +++ b/build-docs.sh @@ -16,8 +16,10 @@ python3 -m uv run python -c 'import docs.plugins.main' # pydantic_core/core_schema.py # instead of # .venv/lib/python3.10/site-packages/pydantic_core/core_schema.py +# See also: mkdocs.yml:mkdocstrings:handlers:python:paths: [.]: ln -s .venv/lib/python*/site-packages/pydantic_core pydantic_core ln -s .venv/lib/python*/site-packages/pydantic_settings pydantic_settings ln -s .venv/lib/python*/site-packages/pydantic_extra_types pydantic_extra_types - -python3 -m uv run --no-sync mkdocs build +# Put these at the front of PYTHONPATH (otherwise, symlinked +# entries will still have "Source code in .venv/lib/.../*.py ": +PYTHONPATH="$PWD${PYTHONPATH:+:${PYTHONPATH}}" python3 -m uv run --no-sync mkdocs build diff --git a/mkdocs.yml b/mkdocs.yml index c51497bbb84..9b4445ad028 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -244,7 +244,7 @@ plugins: - mkdocstrings: handlers: python: - paths: [.] + paths: [.] # see also: build-docs.sh options: members_order: source separate_signature: true From 4a8c9297052534c33411f0268527ab9bcb55bc1b Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 8 Apr 2025 14:58:26 +0200 Subject: [PATCH 013/106] Fix code annotation in `@computed_field` documentation (#11693) --- docs/concepts/fields.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/concepts/fields.md b/docs/concepts/fields.md index dba44f6220b..f43f28b9351 100644 --- a/docs/concepts/fields.md +++ b/docs/concepts/fields.md @@ -937,6 +937,10 @@ print(Box.model_json_schema(mode='serialization')) """ ``` +1. If not specified, [`computed_field`][pydantic.fields.computed_field] will implicitly convert the method + to a [`property`][]. However, it is preferable to explicitly use the [`@property`][property] decorator + for type checking purposes. + Here's an example using the `model_dump` method with a computed field: ```python @@ -949,7 +953,7 @@ class Box(BaseModel): depth: float @computed_field - @property # (1)! + @property def volume(self) -> float: return self.width * self.height * self.depth @@ -959,10 +963,6 @@ print(b.model_dump()) #> {'width': 1.0, 'height': 2.0, 'depth': 3.0, 'volume': 6.0} ``` -1. If not specified, [`computed_field`][pydantic.fields.computed_field] will implicitly convert the method - to a [`property`][]. However, it is preferable to explicitly use the [`@property`][property] decorator - for type checking purposes. - As with regular fields, computed fields can be marked as being deprecated: ```python From 876bf76f34f9ab313923a3428a4d4aaf00144f43 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 8 Apr 2025 15:12:02 +0200 Subject: [PATCH 014/106] Prepare release v2.11.3 (#11716) --- CITATION.cff | 4 ++-- HISTORY.md | 14 ++++++++++++++ pydantic/version.py | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 926c024d2fc..2436b75e8a9 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -44,5 +44,5 @@ keywords: - hints - typing license: MIT -version: v2.11.2 -date-released: 2025-04-03 +version: v2.11.3 +date-released: 2025-04-08 diff --git a/HISTORY.md b/HISTORY.md index b22dbb2dea5..25550b7c5d3 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,17 @@ +## v2.11.3 (2025-04-08) + +[GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.3) + +### What's Changed + +#### Packaging + +* Update V1 copy to v1.10.21 by @Viicos in [#11706](https://github.com/pydantic/pydantic/pull/11706) + +#### Fixes + +* Preserve field description when rebuilding model fields by @Viicos in [#11698](https://github.com/pydantic/pydantic/pull/11698) + ## v2.11.2 (2025-04-03) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.2) diff --git a/pydantic/version.py b/pydantic/version.py index d04d26fbd20..e09d751eca3 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -6,7 +6,7 @@ __all__ = 'VERSION', 'version_info' -VERSION = '2.11.2' +VERSION = '2.11.3' """The version of Pydantic.""" From a43b3467e544c2e94a47636ee0cebdeb9391c80c Mon Sep 17 00:00:00 2001 From: Parth Paradkar Date: Tue, 8 Apr 2025 18:59:16 +0530 Subject: [PATCH 015/106] Fix ImportError message for `email-validator` (#11695) --- pydantic/networks.py | 2 +- tests/test_networks.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pydantic/networks.py b/pydantic/networks.py index 222157873da..4545b793baa 100644 --- a/pydantic/networks.py +++ b/pydantic/networks.py @@ -945,7 +945,7 @@ def import_email_validator() -> None: try: import email_validator except ImportError as e: - raise ImportError('email-validator is not installed, run `pip install pydantic[email]`') from e + raise ImportError("email-validator is not installed, run `pip install 'pydantic[email]'`") from e if not version('email-validator').partition('.')[0] == '2': raise ImportError('email-validator version >= 2.0 required, run pip install -U email-validator') diff --git a/tests/test_networks.py b/tests/test_networks.py index 51ba4e8d460..96a7c545c6c 100644 --- a/tests/test_networks.py +++ b/tests/test_networks.py @@ -990,7 +990,7 @@ def test_email_validator_not_installed(mocker): def test_import_email_validator_not_installed(mocker): mocker.patch.dict('sys.modules', {'email_validator': None}) - with pytest.raises(ImportError, match=r'email-validator is not installed, run `pip install pydantic\[email\]`'): + with pytest.raises(ImportError, match=r'email-validator is not installed, run `pip install \'pydantic\[email\]\'`'): import_email_validator() From 2bf985f3f9efe374433219d28271c3f4763fb211 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 8 Apr 2025 15:29:37 +0200 Subject: [PATCH 016/106] Update project metadata to use PEP 639 (#11694) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d70650c36b5..1f4a6e9c666 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,7 @@ authors = [ {name = 'Victorien Plot', email='contact@vctrn.dev'}, ] license = 'MIT' +license-files = ['LICENSE'] classifiers = [ 'Development Status :: 5 - Production/Stable', 'Programming Language :: Python', @@ -34,7 +35,6 @@ classifiers = [ 'Programming Language :: Python :: 3.13', 'Intended Audience :: Developers', 'Intended Audience :: Information Technology', - 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent', 'Framework :: Hypothesis', 'Framework :: Pydantic', From 8f6508a93222f3a6a7fe25c67118d065a9d707b9 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 9 Apr 2025 11:35:27 +0200 Subject: [PATCH 017/106] Allow config and bases to be specified together in `create_model()` (#11714) The limitation was added back in the early days of Pydantic, when `create_model()` was implemented. It is no longer necessary. --- docs/errors/usage_errors.md | 17 ----------------- pydantic/errors.py | 1 - pydantic/main.py | 14 ++++---------- tests/test_create_model.py | 14 +++++++++++--- 4 files changed, 15 insertions(+), 31 deletions(-) diff --git a/docs/errors/usage_errors.md b/docs/errors/usage_errors.md index 90798ab09df..259e1ddcbb6 100644 --- a/docs/errors/usage_errors.md +++ b/docs/errors/usage_errors.md @@ -631,23 +631,6 @@ except PydanticUserError as exc_info: The fields definition syntax can be found in the [dynamic model creation](../concepts/models.md#dynamic-model-creation) documentation. - -## `create_model` config base {#create-model-config-base} - -This error is raised when you use both `__config__` and `__base__` together in `create_model`. - -```python -from pydantic import BaseModel, ConfigDict, PydanticUserError, create_model - -try: - config = ConfigDict(frozen=True) - model = create_model( - 'FooModel', foo=(int, ...), __config__=config, __base__=BaseModel - ) -except PydanticUserError as exc_info: - assert exc_info.code == 'create-model-config-base' -``` - ## Validator with no fields {#validator-no-fields} This error is raised when you use validator bare (with no fields). diff --git a/pydantic/errors.py b/pydantic/errors.py index 50ac9e2b65e..f22706822f3 100644 --- a/pydantic/errors.py +++ b/pydantic/errors.py @@ -50,7 +50,6 @@ 'schema-for-unknown-type', 'import-error', 'create-model-field-definitions', - 'create-model-config-base', 'validator-no-fields', 'validator-invalid-fields', 'validator-instance-method', diff --git a/pydantic/main.py b/pydantic/main.py index c38635471f8..ba9324bad2a 100644 --- a/pydantic/main.py +++ b/pydantic/main.py @@ -1721,16 +1721,10 @@ def create_model( # noqa: C901 Raises: PydanticUserError: If `__base__` and `__config__` are both passed. """ - if __base__ is not None: - if __config__ is not None: - raise PydanticUserError( - 'to avoid confusion `__config__` and `__base__` cannot be used together', - code='create-model-config-base', - ) - if not isinstance(__base__, tuple): - __base__ = (__base__,) - else: + if __base__ is None: __base__ = (cast('type[ModelT]', BaseModel),) + elif not isinstance(__base__, tuple): + __base__ = (__base__,) __cls_kwargs__ = __cls_kwargs__ or {} @@ -1762,7 +1756,7 @@ def create_model( # noqa: C901 namespace.update(__validators__) namespace.update(fields) if __config__: - namespace['model_config'] = _config.ConfigWrapper(__config__).config_dict + namespace['model_config'] = __config__ resolved_bases = types.resolve_bases(__base__) meta, ns, kwds = types.prepare_class(model_name, resolved_bases, kwds=__cls_kwargs__) if resolved_bases is not __base__: diff --git a/tests/test_create_model.py b/tests/test_create_model.py index 2cc10e00323..90f306f9c92 100644 --- a/tests/test_create_model.py +++ b/tests/test_create_model.py @@ -12,7 +12,6 @@ PydanticUserError, ValidationError, create_model, - errors, field_validator, validator, ) @@ -138,8 +137,17 @@ def test_create_model_must_not_reset_parent_namespace(): def test_config_and_base(): - with pytest.raises(errors.PydanticUserError): - create_model('FooModel', __config__=BaseModel.model_config, __base__=BaseModel) + class Base(BaseModel): + a: str + + model_config = {'str_to_lower': True} + + Model = create_model('Model', __base__=Base, __config__={'str_max_length': 3}) + + assert Model(a='AAA').a == 'aaa' + + with pytest.raises(ValidationError): + Model(a='AAAA') def test_inheritance(): From 2e7cddb6a7600311c4a29763efd55596a826edde Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 9 Apr 2025 11:57:39 +0200 Subject: [PATCH 018/106] Properly fetch plain serializer function when serializing default value in JSON Schema (#11721) --- pydantic/json_schema.py | 59 ++++++++++++++++++++++++--------------- tests/test_json_schema.py | 17 +++++++++++ 2 files changed, 54 insertions(+), 22 deletions(-) diff --git a/pydantic/json_schema.py b/pydantic/json_schema.py index be9595c4ffc..d6dc74aa9fd 100644 --- a/pydantic/json_schema.py +++ b/pydantic/json_schema.py @@ -1115,28 +1115,28 @@ def default_schema(self, schema: core_schema.WithDefaultSchema) -> JsonSchemaVal # we reflect the application of custom plain, no-info serializers to defaults for # JSON Schemas viewed in serialization mode: # TODO: improvements along with https://github.com/pydantic/pydantic/issues/8208 - if ( - self.mode == 'serialization' - and (ser_schema := schema['schema'].get('serialization')) - and (ser_func := ser_schema.get('function')) - and ser_schema.get('type') == 'function-plain' - and not ser_schema.get('info_arg') - and not (default is None and ser_schema.get('when_used') in ('unless-none', 'json-unless-none')) - ): - try: - default = ser_func(default) # type: ignore - except Exception: - # It might be that the provided default needs to be validated (read: parsed) first - # (assuming `validate_default` is enabled). However, we can't perform - # such validation during JSON Schema generation so we don't support - # this pattern for now. - # (One example is when using `foo: ByteSize = '1MB'`, which validates and - # serializes as an int. In this case, `ser_func` is `int` and `int('1MB')` fails). - self.emit_warning( - 'non-serializable-default', - f'Unable to serialize value {default!r} with the plain serializer; excluding default from JSON schema', - ) - return json_schema + if self.mode == 'serialization': + # `_get_ser_schema_for_default_value()` is used to unpack potentially nested validator schemas: + ser_schema = _get_ser_schema_for_default_value(schema['schema']) + if ( + ser_schema is not None + and (ser_func := ser_schema.get('function')) + and not (default is None and ser_schema.get('when_used') in ('unless-none', 'json-unless-none')) + ): + try: + default = ser_func(default) # type: ignore + except Exception: + # It might be that the provided default needs to be validated (read: parsed) first + # (assuming `validate_default` is enabled). However, we can't perform + # such validation during JSON Schema generation so we don't support + # this pattern for now. + # (One example is when using `foo: ByteSize = '1MB'`, which validates and + # serializes as an int. In this case, `ser_func` is `int` and `int('1MB')` fails). + self.emit_warning( + 'non-serializable-default', + f'Unable to serialize value {default!r} with the plain serializer; excluding default from JSON schema', + ) + return json_schema try: encoded_default = self.encode_default(default) @@ -2693,3 +2693,18 @@ def _get_typed_dict_config(cls: type[Any] | None) -> ConfigDict: except AttributeError: pass return {} + + +def _get_ser_schema_for_default_value(schema: CoreSchema) -> core_schema.PlainSerializerFunctionSerSchema | None: + """Get a `'function-plain'` serialization schema that can be used to serialize a default value. + + This takes into account having the serialization schema nested under validation schema(s). + """ + if ( + (ser_schema := schema.get('serialization')) + and ser_schema['type'] == 'function-plain' + and not ser_schema.get('info_arg') + ): + return ser_schema + if _core_utils.is_function_with_inner_schema(schema): + return _get_ser_schema_for_default_value(schema['schema']) diff --git a/tests/test_json_schema.py b/tests/test_json_schema.py index 1a0ff60c5a6..e74edaa052e 100644 --- a/tests/test_json_schema.py +++ b/tests/test_json_schema.py @@ -37,6 +37,7 @@ import pydantic from pydantic import ( + AfterValidator, BaseModel, BeforeValidator, Field, @@ -6375,6 +6376,22 @@ class Model(BaseModel): } +def test_plain_serializer_applies_to_default_when_nested_under_validators() -> None: + class Model(BaseModel): + custom_str: Annotated[ + str, + PlainSerializer(lambda x: f'serialized-{x}', return_type=str), + BeforeValidator(lambda v: v + '_a'), + AfterValidator(lambda v: v + '_b'), + ] = 'foo' + + assert Model.model_json_schema(mode='serialization') == { + 'properties': {'custom_str': {'default': 'serialized-foo', 'title': 'Custom Str', 'type': 'string'}}, + 'title': 'Model', + 'type': 'object', + } + + def test_plain_serializer_does_not_apply_with_unless_none() -> None: """Test plain serializers aren't used to compute the JSON Schema default if mode is 'json-unless-none' and default value is `None`.""" From c79f9e2de210e6aaca00e449e5ff40271f0e1cd1 Mon Sep 17 00:00:00 2001 From: Khanh Duong Date: Mon, 14 Apr 2025 02:23:42 +0900 Subject: [PATCH 019/106] Fix typos in documentation (#11739) --- docs/errors/validation_errors.md | 4 ++-- docs/internals/resolving_annotations.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/errors/validation_errors.md b/docs/errors/validation_errors.md index daa733004c7..f9cc5704117 100644 --- a/docs/errors/validation_errors.md +++ b/docs/errors/validation_errors.md @@ -1602,12 +1602,12 @@ class Model(BaseModel): x: set[object] -class Unhasbable: +class Unhashable: __hash__ = None try: - Model(x=[{'a': 'b'}, Unhasbable()]) + Model(x=[{'a': 'b'}, Unhashable()]) except ValidationError as exc: print(repr(exc.errors()[0]['type'])) #> 'set_item_not_hashable' diff --git a/docs/internals/resolving_annotations.md b/docs/internals/resolving_annotations.md index 6e8a29fb565..6b334ab9045 100644 --- a/docs/internals/resolving_annotations.md +++ b/docs/internals/resolving_annotations.md @@ -125,7 +125,7 @@ The following table lists the resolved type annotations for every field, once th | `f2` | [`str`][] | | `f3` | [`bool`][] | | `f4` | [`bytes`][] | -| `f5` | `'UnkownType'` | +| `f5` | `'UnknownType'` | ### Limitations and backwards compatibility concerns From 121651b22da3a09e82a1c6605eee2475cbcd4948 Mon Sep 17 00:00:00 2001 From: Floyd Date: Sun, 13 Apr 2025 15:36:13 -0400 Subject: [PATCH 020/106] Remove unecessary note in errors documentation (#11722) Co-authored-by: Victorien <65306057+Viicos@users.noreply.github.com> --- docs/errors/validation_errors.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/errors/validation_errors.md b/docs/errors/validation_errors.md index f9cc5704117..048e959e67c 100644 --- a/docs/errors/validation_errors.md +++ b/docs/errors/validation_errors.md @@ -430,9 +430,6 @@ This error is also raised for strict fields when the input value is not an insta ## `datetime_from_date_parsing` -!!! note - Support for this error, along with support for parsing datetimes from `yyyy-MM-DD` dates will be added in `v2.6.0` - This error is raised when the input value is a string that cannot be parsed for a `datetime` field: ```python From 16ce1ef3860b18ba0d2261d2b6c26b79700767b7 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 15 Apr 2025 15:40:25 +0200 Subject: [PATCH 021/106] Remove install path from version info (#11754) --- pydantic/_internal/_git.py | 8 ++++---- pydantic/version.py | 8 +++----- tests/test_version.py | 3 +-- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/pydantic/_internal/_git.py b/pydantic/_internal/_git.py index b367eb9ca55..96dcda28f80 100644 --- a/pydantic/_internal/_git.py +++ b/pydantic/_internal/_git.py @@ -2,13 +2,13 @@ from __future__ import annotations -import os import subprocess +from pathlib import Path -def is_git_repo(dir: str) -> bool: +def is_git_repo(dir: Path) -> bool: """Is the given directory version-controlled with git?""" - return os.path.exists(os.path.join(dir, '.git')) + return dir.joinpath('.git').exists() def have_git() -> bool: # pragma: no cover @@ -22,6 +22,6 @@ def have_git() -> bool: # pragma: no cover return False -def git_revision(dir: str) -> str: +def git_revision(dir: Path) -> str: """Get the SHA-1 of the HEAD of a git repository.""" return subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD'], cwd=dir).decode('utf-8').strip() diff --git a/pydantic/version.py b/pydantic/version.py index e09d751eca3..554a7a00c09 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -20,8 +20,7 @@ def version_short() -> str: def version_info() -> str: """Return complete version information for Pydantic and its dependencies.""" - import importlib.metadata as importlib_metadata - import os + import importlib.metadata import platform import sys from pathlib import Path @@ -42,12 +41,12 @@ def version_info() -> str: } related_packages = [] - for dist in importlib_metadata.distributions(): + for dist in importlib.metadata.distributions(): name = dist.metadata['Name'] if name in package_names: related_packages.append(f'{name}-{dist.version}') - pydantic_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) + pydantic_dir = Path(__file__).parents[1].resolve() most_recent_commit = ( git.git_revision(pydantic_dir) if git.is_git_repo(pydantic_dir) and git.have_git() else 'unknown' ) @@ -56,7 +55,6 @@ def version_info() -> str: 'pydantic version': VERSION, 'pydantic-core version': pdc.__version__, 'pydantic-core build': getattr(pdc, 'build_info', None) or pdc.build_profile, - 'install path': Path(__file__).resolve().parent, 'python version': sys.version, 'platform': platform.platform(), 'related packages': ' '.join(related_packages), diff --git a/tests/test_version.py b/tests/test_version.py index 1c9756faa8f..b7fbd88ebf6 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -12,7 +12,6 @@ def test_version_info(): 'pydantic version', 'pydantic-core version', 'pydantic-core build', - 'install path', 'python version', 'platform', 'related packages', @@ -21,7 +20,7 @@ def test_version_info(): s = version_info() assert all(f'{field}:' in s for field in version_info_fields) - assert s.count('\n') == 7 + assert s.count('\n') == 6 def test_standard_version(): From 72a76efff8e98d0b616394a4444306dabd755d7b Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 15 Apr 2025 15:41:15 +0200 Subject: [PATCH 022/106] Fix race condition in documentation deployment workflow (#11743) --- .github/workflows/docs-update.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/docs-update.yml b/.github/workflows/docs-update.yml index f90fc99fb40..5e9bae7a259 100644 --- a/.github/workflows/docs-update.yml +++ b/.github/workflows/docs-update.yml @@ -7,6 +7,9 @@ on: - docs-update tags: - '**' +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true env: COLUMNS: 150 From 625dd4284b266c17f0b70d282f237dd3ee7ec9f2 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 15 Apr 2025 15:57:24 +0200 Subject: [PATCH 023/106] Remove generics cache workaround (#11755) --- pydantic/main.py | 7 +------ tests/test_forward_ref.py | 22 ++++++++++++++-------- tests/test_generics.py | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 14 deletions(-) diff --git a/pydantic/main.py b/pydantic/main.py index ba9324bad2a..820f34f406d 100644 --- a/pydantic/main.py +++ b/pydantic/main.py @@ -908,12 +908,7 @@ def __class_getitem__( submodel = _generics.create_generic_submodel(model_name, origin, args, params) - # Cache the generated model *only* if not in the process of parametrizing - # another model. In some valid scenarios, we miss the opportunity to cache - # it but in some cases this results in `PydanticRecursiveRef` instances left - # on `FieldInfo` annotations: - if len(_generics.recursively_defined_type_refs()) == 1: - _generics.set_cached_generic_type(cls, typevar_values, submodel, origin, args) + _generics.set_cached_generic_type(cls, typevar_values, submodel, origin, args) return submodel diff --git a/tests/test_forward_ref.py b/tests/test_forward_ref.py index 01d81f95d8a..1187d642b77 100644 --- a/tests/test_forward_ref.py +++ b/tests/test_forward_ref.py @@ -718,15 +718,9 @@ def test_recursive_models_union(create_module): # This test should pass because PydanticRecursiveRef.__or__ is implemented, # not because `eval_type_backport` magically makes `|` work, # since it's installed for tests but otherwise optional. - # When generic models are involved in recursive models, parametrizing a model - # can result in a `PydanticRecursiveRef` instance. This isn't ideal, as in the - # example below, this results in the `FieldInfo.annotation` attribute being changed, - # e.g. for `bar` to something like `PydanticRecursiveRef(...) | None`. - # We currently have a workaround (avoid caching parametrized models where this bad - # annotation mutation can happen). sys.modules['eval_type_backport'] = None # type: ignore try: - create_module( + module = create_module( # language=Python """ from __future__ import annotations @@ -742,14 +736,20 @@ class Foo(BaseModel): class Bar(BaseModel, Generic[T]): foo: Foo + +Foo.model_rebuild() """ ) finally: del sys.modules['eval_type_backport'] + assert module.Foo.model_fields['bar'].annotation == typing.Optional[module.Bar[str]] + assert module.Foo.model_fields['bar2'].annotation == typing.Union[int, module.Bar[float]] + assert module.Bar.model_fields['foo'].annotation == module.Foo + def test_recursive_models_union_backport(create_module): - create_module( + module = create_module( # language=Python """ from __future__ import annotations @@ -768,9 +768,15 @@ class Foo(BaseModel): class Bar(BaseModel, Generic[T]): foo: Foo + +Foo.model_rebuild() """ ) + assert module.Foo.model_fields['bar'].annotation == typing.Optional[module.Bar[str]] + assert module.Foo.model_fields['bar2'].annotation == typing.Union[int, str, module.Bar[float]] + assert module.Bar.model_fields['foo'].annotation == module.Foo + def test_force_rebuild(): class Foobar(BaseModel): diff --git a/tests/test_generics.py b/tests/test_generics.py index 5d015a9e598..c3ef699a19f 100644 --- a/tests/test_generics.py +++ b/tests/test_generics.py @@ -27,6 +27,7 @@ Never, NotRequired, ParamSpec, + TypeAliasType, TypedDict, TypeVarTuple, Unpack, @@ -519,6 +520,37 @@ class M(BaseModel): del generics +def test_generics_reused() -> None: + """https://github.com/pydantic/pydantic/issues/11747 + + To fix an issue with recursive generics, we introduced a change in 2.11 that would + skip caching the parameterized model under specific circumstances. The following setup + is an example of where this would happen. As a result, we ended up with two different `A[int]` + classes, although they were the same in practice. + When serializing, we check that the value instances are matching the type, but we ended up + with warnings as `isinstance(value, A[int])` fails. + The fix was reverted as a refactor (https://github.com/pydantic/pydantic/pull/11388) fixed + the underlying issue. + """ + + T = TypeVar('T') + + class A(BaseModel, Generic[T]): + pass + + class B(BaseModel, Generic[T]): + pass + + AorB = TypeAliasType('AorB', Union[A[T], B[T]], type_params=(T,)) + + class Main(BaseModel, Generic[T]): + ls: list[AorB[T]] = [] + + m = Main[int]() + m.ls.append(A[int]()) + m.model_dump_json(warnings='error') + + def test_generic_config(): data_type = TypeVar('data_type') @@ -1445,7 +1477,9 @@ class InnerModel(OuterModel[T], Generic[T]): with pytest.raises(ValidationError): InnerModel[int](a=['s', {'a': 'wrong'}]) + assert InnerModel[int](a=['s', {'a': 1}]).a[1].a == 1 + assert InnerModel[int].model_fields['a'].annotation == Optional[list[Union[ReferencedModel[int], str]]] def test_deep_generic_with_multiple_typevars(): From a3f42a4d6e1765d03a9ad49f9f2ae83c4c525794 Mon Sep 17 00:00:00 2001 From: gbaian10 <34255899+gbaian10@users.noreply.github.com> Date: Thu, 17 Apr 2025 16:18:06 +0800 Subject: [PATCH 024/106] Fix example in `populate_by_name` documentation (#11766) --- pydantic/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydantic/config.py b/pydantic/config.py index 12fef106e53..04ff0705192 100644 --- a/pydantic/config.py +++ b/pydantic/config.py @@ -194,7 +194,7 @@ class Model(BaseModel): print(m) #> my_field='foo' - m = Model(my_alias='foo') # (3)! + m = Model(my_field='foo') # (3)! print(m) #> my_field='foo' ``` From cc30e6d0e3b24c3c0e9ac6d0e3f020e8d89e1d81 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 17 Apr 2025 18:30:19 +0200 Subject: [PATCH 025/106] Remove coercion of decimal constraints (#11772) --- pydantic/_internal/_known_annotated_metadata.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pydantic/_internal/_known_annotated_metadata.py b/pydantic/_internal/_known_annotated_metadata.py index 463d8a7bc3f..c127e27ac16 100644 --- a/pydantic/_internal/_known_annotated_metadata.py +++ b/pydantic/_internal/_known_annotated_metadata.py @@ -3,7 +3,6 @@ from collections import defaultdict from collections.abc import Iterable from copy import copy -from decimal import Decimal from functools import lru_cache, partial from typing import TYPE_CHECKING, Any @@ -220,10 +219,7 @@ def apply_known_metadata(annotation: Any, schema: CoreSchema) -> CoreSchema | No if constraint == 'union_mode' and schema_type == 'union': schema['mode'] = value # type: ignore # schema is UnionSchema else: - if schema_type == 'decimal' and constraint in {'multiple_of', 'le', 'ge', 'lt', 'gt'}: - schema[constraint] = Decimal(value) - else: - schema[constraint] = value + schema[constraint] = value continue # else, apply a function after validator to the schema to enforce the corresponding constraint From 6821a7a3dba92e64bcc615124d65b5f6555460df Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 17 Apr 2025 18:30:32 +0200 Subject: [PATCH 026/106] Update Pandera third-party tests (#11767) --- .github/workflows/third-party.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/third-party.yml b/.github/workflows/third-party.yml index 50ad35006c8..ab8538e02d4 100644 --- a/.github/workflows/third-party.yml +++ b/.github/workflows/third-party.yml @@ -207,7 +207,7 @@ jobs: TASKIPY: true test-pandera: - name: Test pandera (main branch) on Python ${{ matrix.python-version }} + name: Test Pandera (main branch) on Python ${{ matrix.python-version }} # If 'schedule' was the trigger, don't run it on contributors' forks if: | github.event_name == 'workflow_dispatch' || @@ -218,9 +218,9 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.9', '3.10', '3.11'] + python-version: ['3.9', '3.10', '3.11', '3.12'] steps: - - name: Checkout pandera + - name: Checkout Pandera uses: actions/checkout@v4 with: repository: unionai-oss/pandera @@ -235,20 +235,20 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Install pandera dependencies + - name: Install Pandera dependencies run: | pip install uv - uv pip install --system -r requirements.in + uv sync --extra pandas --extra fastapi --extra pandas --group dev --group testing --group docs uv pip uninstall --system pydantic pydantic-core uv pip install --system -e ./pydantic-latest - name: List installed dependencies run: uv pip list - - name: Run pandera tests + - name: Run Pandera tests # Pandera's CI uses nox sessions which encapsulate the logic to install a specific Pydantic version. - # Instead, manually run pytest (we run core and FastAPI tests): - run: pytest tests/core tests/fastapi + # Instead, manually run pytest (we run core, pandas and FastAPI tests): + run: uv run pytest tests/base tests/pandas tests/fastapi test-odmantic: name: Test ODMantic (main branch) on Python ${{ matrix.python-version }} From c477e46e8d808d20f29d3b610af12e4d435a1420 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 17 Apr 2025 18:31:39 +0200 Subject: [PATCH 027/106] Fix crash when expanding root type in the mypy plugin (#11735) --- pydantic/mypy.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pydantic/mypy.py b/pydantic/mypy.py index 41d587da13d..8fcb54dd934 100644 --- a/pydantic/mypy.py +++ b/pydantic/mypy.py @@ -5,7 +5,7 @@ import sys from collections.abc import Iterator from configparser import ConfigParser -from typing import Any, Callable, cast +from typing import Any, Callable from mypy.errorcodes import ErrorCode from mypy.expandtype import expand_type, expand_type_by_instance @@ -339,7 +339,10 @@ def expand_type( if include_root_type and isinstance(expanded_type, Instance) and is_root_model(expanded_type.type): # When a root model is used as a field, Pydantic allows both an instance of the root model # as well as instances of the `root` field type: - root_type = cast(Type, expanded_type.type['root'].type) + root_type = expanded_type.type['root'].type + if root_type is None: + # Happens if the hint for 'root' has unsolved forward references + return expanded_type expanded_root_type = expand_type_by_instance(root_type, expanded_type) expanded_type = UnionType([expanded_type, expanded_root_type]) return expanded_type From eb295f2a4bd7953787630daba56a782927b1785e Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 17 Apr 2025 18:31:54 +0200 Subject: [PATCH 028/106] Bump `mkdocs-llmstxt` to v0.2.0 (#11725) --- pyproject.toml | 3 --- uv.lock | 12 ++++++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1f4a6e9c666..8458badaaa8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -182,9 +182,6 @@ markers = [ [tool.uv] default-groups = ['dev'] -[tool.uv.sources] -mkdocs-llmstxt = { git = "https://github.com/Viicos/mkdocs-llmstxt", rev = "issue-1" } - # configuring https://github.com/pydantic/hooky [tool.hooky] reviewers = ['sydney-runkle'] diff --git a/uv.lock b/uv.lock index e0927d973d2..2449038341f 100644 --- a/uv.lock +++ b/uv.lock @@ -1198,13 +1198,17 @@ wheels = [ [[package]] name = "mkdocs-llmstxt" -version = "0.1.1.dev18+g4955925" -source = { git = "https://github.com/Viicos/mkdocs-llmstxt?rev=issue-1#495592556a94c80e7a0f7184f647f6e6207747d9" } +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "beautifulsoup4" }, { name = "markdownify" }, { name = "mdformat" }, ] +sdist = { url = "https://files.pythonhosted.org/packages/ee/25/263ea9c16d1f95f30d9eb1b76e63eb50a88a1ec9fad1829281bab7a371eb/mkdocs_llmstxt-0.2.0.tar.gz", hash = "sha256:104f10b8101167d6baf7761942b4743869be3d8f8a8d909f4e9e0b63307f709e", size = 41376 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/24/29/0a33f7d8499a01dd7fd0d90fb163b2d8eefa9c90ac0ecbc1a7770e50614e/mkdocs_llmstxt-0.2.0-py3-none-any.whl", hash = "sha256:907de892e0c8be74002e8b4d553820c2b5bbcf03cc303b95c8bca48fb49c1a29", size = 23244 }, +] [[package]] name = "mkdocs-material" @@ -1801,7 +1805,7 @@ all = [ { name = "mike" }, { name = "mkdocs" }, { name = "mkdocs-exclude" }, - { name = "mkdocs-llmstxt", git = "https://github.com/Viicos/mkdocs-llmstxt?rev=issue-1" }, + { name = "mkdocs-llmstxt" }, { name = "mkdocs-material", extras = ["imaging"] }, { name = "mkdocs-redirects" }, { name = "mkdocstrings-python" }, @@ -1846,7 +1850,7 @@ docs = [ { name = "mike" }, { name = "mkdocs" }, { name = "mkdocs-exclude" }, - { name = "mkdocs-llmstxt", git = "https://github.com/Viicos/mkdocs-llmstxt?rev=issue-1" }, + { name = "mkdocs-llmstxt" }, { name = "mkdocs-material", extras = ["imaging"] }, { name = "mkdocs-redirects" }, { name = "mkdocstrings-python" }, From b77ad7335f146dc60e23987fa35492046cbd473c Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Thu, 17 Apr 2025 14:05:48 -0600 Subject: [PATCH 029/106] Only mark model as complete once all fields are complete (#11759) --- pydantic/_internal/_model_construction.py | 41 ++++++++++++++++++----- pydantic/main.py | 22 +----------- tests/test_edge_cases.py | 28 ++++++++++++++++ 3 files changed, 62 insertions(+), 29 deletions(-) diff --git a/pydantic/_internal/_model_construction.py b/pydantic/_internal/_model_construction.py index fd5d68b37f7..48baa63dfa3 100644 --- a/pydantic/_internal/_model_construction.py +++ b/pydantic/_internal/_model_construction.py @@ -22,7 +22,7 @@ from ..warnings import GenericBeforeBaseModelWarning, PydanticDeprecatedSince20 from ._config import ConfigWrapper from ._decorators import DecoratorInfos, PydanticDescriptorProxy, get_attribute_from_bases, unwrap_wrapped_function -from ._fields import collect_model_fields, is_valid_field_name, is_valid_privateattr_name +from ._fields import collect_model_fields, is_valid_field_name, is_valid_privateattr_name, rebuild_model_fields from ._generate_schema import GenerateSchema, InvalidSchemaError from ._generics import PydanticGenericMetadata, get_model_typevars_map from ._import_utils import import_cached_base_model, import_cached_field_info @@ -227,9 +227,6 @@ def wrapped_model_post_init(self: BaseModel, context: Any, /) -> None: } if config_wrapper.defer_build: - # TODO we can also stop there if `__pydantic_fields_complete__` is False. - # However, `set_model_fields()` is currently lenient and we don't have access to the `NameError`. - # (which is useful as we can provide the name in the error message: `set_model_mock(cls, e.name)`) set_model_mocks(cls) else: # Any operation that requires accessing the field infos instances should be put inside @@ -237,8 +234,8 @@ def wrapped_model_post_init(self: BaseModel, context: Any, /) -> None: complete_model_class( cls, config_wrapper, + ns_resolver, raise_errors=False, - ns_resolver=ns_resolver, create_model_module=_create_model_module, ) @@ -562,9 +559,9 @@ def set_model_fields( def complete_model_class( cls: type[BaseModel], config_wrapper: ConfigWrapper, + ns_resolver: NsResolver, *, raise_errors: bool = True, - ns_resolver: NsResolver | None = None, create_model_module: str | None = None, ) -> bool: """Finish building a model class. @@ -575,8 +572,8 @@ def complete_model_class( Args: cls: BaseModel or dataclass. config_wrapper: The config wrapper instance. - raise_errors: Whether to raise errors. ns_resolver: The namespace resolver instance to use during schema building. + raise_errors: Whether to raise errors. create_model_module: The module of the class to be created, if created by `create_model`. Returns: @@ -587,6 +584,32 @@ def complete_model_class( and `raise_errors=True`. """ typevars_map = get_model_typevars_map(cls) + + if not cls.__pydantic_fields_complete__: + # Note: when coming from `ModelMetaclass.__new__()`, this results in fields being built twice. + # We do so a second time here so that we can get the `NameError` for the specific undefined annotation. + # Alternatively, we could let `GenerateSchema()` raise the error, but there are cases where incomplete + # fields are inherited in `collect_model_fields()` and can actually have their annotation resolved in the + # generate schema process. As we want to avoid having `__pydantic_fields_complete__` set to `False` + # when `__pydantic_complete__` is `True`, we rebuild here: + try: + cls.__pydantic_fields__ = rebuild_model_fields( + cls, + ns_resolver=ns_resolver, + typevars_map=typevars_map, + ) + except NameError as e: + exc = PydanticUndefinedAnnotation.from_name_error(e) + set_model_mocks(cls, f'`{exc.name}`') + if raise_errors: + raise exc from e + + if not raise_errors and not cls.__pydantic_fields_complete__: + # No need to continue with schema gen, it is guaranteed to fail + return False + + assert cls.__pydantic_fields_complete__ + gen_schema = GenerateSchema( config_wrapper, ns_resolver, @@ -627,7 +650,6 @@ def complete_model_class( config_wrapper.plugin_settings, ) cls.__pydantic_serializer__ = SchemaSerializer(schema, core_config) - cls.__pydantic_complete__ = True # set __signature__ attr only for model class, but not for its instances # (because instances can define `__call__`, and `inspect.signature` shouldn't @@ -642,6 +664,9 @@ def complete_model_class( extra=config_wrapper.extra, ), ) + + cls.__pydantic_complete__ = True + return True diff --git a/pydantic/main.py b/pydantic/main.py index 820f34f406d..05f22757f3f 100644 --- a/pydantic/main.py +++ b/pydantic/main.py @@ -637,31 +637,11 @@ def model_rebuild( parent_namespace={**rebuild_ns, **parent_ns}, ) - if not cls.__pydantic_fields_complete__: - typevars_map = _generics.get_model_typevars_map(cls) - try: - cls.__pydantic_fields__ = _fields.rebuild_model_fields( - cls, - ns_resolver=ns_resolver, - typevars_map=typevars_map, - ) - except NameError as e: - exc = PydanticUndefinedAnnotation.from_name_error(e) - _mock_val_ser.set_model_mocks(cls, f'`{exc.name}`') - if raise_errors: - raise exc from e - - if not raise_errors and not cls.__pydantic_fields_complete__: - # No need to continue with schema gen, it is guaranteed to fail - return False - - assert cls.__pydantic_fields_complete__ - return _model_construction.complete_model_class( cls, _config.ConfigWrapper(cls.model_config, check=False), + ns_resolver, raise_errors=raise_errors, - ns_resolver=ns_resolver, ) @classmethod diff --git a/tests/test_edge_cases.py b/tests/test_edge_cases.py index 9101165ac18..393180c2ccd 100644 --- a/tests/test_edge_cases.py +++ b/tests/test_edge_cases.py @@ -39,6 +39,7 @@ PrivateAttr, PydanticDeprecatedSince20, PydanticSchemaGenerationError, + PydanticUndefinedAnnotation, PydanticUserError, RootModel, TypeAdapter, @@ -2637,6 +2638,33 @@ class C(BaseModel): ] +def test_incomplete_superclass() -> None: + class MyModel(BaseModel): + sub_model: 'SubModel' + + assert not MyModel.__pydantic_fields_complete__ + assert not MyModel.__pydantic_complete__ + + with pytest.raises(PydanticUndefinedAnnotation, match="name 'SubModel' is not defined"): + MyModel.model_rebuild() + + class SubModel(MyModel): + pass + + # SubModel is complete because it reinterprets the superclass's fields and finds 'SubModel' to match itself + assert SubModel.__pydantic_fields_complete__ + assert SubModel.__pydantic_complete__ + + # MyModel is still incomplete until it's rebuilt + assert not MyModel.__pydantic_fields_complete__ + assert not MyModel.__pydantic_complete__ + + MyModel.model_rebuild() + + assert MyModel.__pydantic_fields_complete__ + assert MyModel.__pydantic_complete__ + + @pytest.mark.parametrize( ('sequence_type', 'input_data', 'expected_error_type', 'expected_error_msg', 'expected_error_ctx'), [ From 07b33c3f3c099e682bb97752fbeb89718242b32f Mon Sep 17 00:00:00 2001 From: Bowen Liang Date: Fri, 18 Apr 2025 21:01:00 +0800 Subject: [PATCH 030/106] Add Dify third-party tests (#11719) --- .github/workflows/third-party.yml | 48 ++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/.github/workflows/third-party.yml b/.github/workflows/third-party.yml index ab8538e02d4..585610f9fa7 100644 --- a/.github/workflows/third-party.yml +++ b/.github/workflows/third-party.yml @@ -564,6 +564,50 @@ jobs: working-directory: ./libs/langchain run: make test + test-dify: + name: Test Dify (main branch) on Python ${{ matrix.python-version }} + # If 'schedule' was the trigger, don't run it on contributors' forks + if: | + github.event_name == 'workflow_dispatch' || + (github.event_name == 'schedule' && github.repository == 'pydantic/pydantic') || + (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'third-party-tests')) + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.12'] + + steps: + - name: Checkout Dify + uses: actions/checkout@v4 + with: + repository: langgenius/dify + + - name: Checkout Pydantic + uses: actions/checkout@v4 + with: + path: pydantic-latest + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install uv + shell: bash + run: pip install uv~=0.6.14 + + - name: Install Dify dependencies + run: | + uv sync --directory api --dev + uv pip --directory api uninstall pydantic + uv pip --directory api install -e ../pydantic-latest + + - name: List installed dependencies + run: uv pip --directory api list + + - name: Run Dify unit tests + run: uv run --project api bash dev/pytest/pytest_unit_tests.sh + create-issue-on-failure: name: Create an issue if tests failed runs-on: ubuntu-latest @@ -578,6 +622,7 @@ jobs: - test-bentoml - test-semantic-kernel - test-langchain + - test-dify # Issue report disabled for now due to flakiness: if: | always() && @@ -594,7 +639,8 @@ jobs: needs.test-polar.result == 'failure' || needs.test-semantic-kernel.result == 'failure' || needs.test-bentoml.result == 'failure' || - needs.test-langchain.result == 'failure' + needs.test-langchain.result == 'failure' || + needs.test-dify.result == 'failure' ) permissions: issues: write From bce81efdeac1cbefd0196b478a32aa2586bd595a Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Fri, 18 Apr 2025 08:51:21 -0600 Subject: [PATCH 031/106] Do not provide `field_name` in validator core schemas (#11761) Instead, the `field_name` is provided during validation by `pydantic-core` (hence the version bump). --- docs/concepts/types.md | 2 +- pydantic/_internal/_generate_schema.py | 45 +++--- pydantic/functional_validators.py | 5 +- pydantic/version.py | 2 +- pyproject.toml | 2 +- tests/test_validators.py | 27 +++- uv.lock | 204 ++++++++++++------------- 7 files changed, 148 insertions(+), 139 deletions(-) diff --git a/docs/concepts/types.md b/docs/concepts/types.md index d7cc290b81c..4b6ccfbaffd 100644 --- a/docs/concepts/types.md +++ b/docs/concepts/types.md @@ -979,7 +979,7 @@ class CustomType: cls, source_type: Any, handler: GetCoreSchemaHandler ) -> core_schema.CoreSchema: return core_schema.with_info_after_validator_function( - cls.validate, handler(int), field_name=handler.field_name + cls.validate, handler(int) ) diff --git a/pydantic/_internal/_generate_schema.py b/pydantic/_internal/_generate_schema.py index 92069440ffa..afd623cd5c6 100644 --- a/pydantic/_internal/_generate_schema.py +++ b/pydantic/_internal/_generate_schema.py @@ -218,7 +218,6 @@ def filter_field_decorator_info_by_field( def apply_each_item_validators( schema: core_schema.CoreSchema, each_item_validators: list[Decorator[ValidatorDecoratorInfo]], - field_name: str | None, ) -> core_schema.CoreSchema: # This V1 compatibility shim should eventually be removed @@ -230,21 +229,20 @@ def apply_each_item_validators( # note that this won't work for any Annotated types that get wrapped by a function validator # but that's okay because that didn't exist in V1 if schema['type'] == 'nullable': - schema['schema'] = apply_each_item_validators(schema['schema'], each_item_validators, field_name) + schema['schema'] = apply_each_item_validators(schema['schema'], each_item_validators) return schema elif schema['type'] == 'tuple': if (variadic_item_index := schema.get('variadic_item_index')) is not None: schema['items_schema'][variadic_item_index] = apply_validators( schema['items_schema'][variadic_item_index], each_item_validators, - field_name, ) elif is_list_like_schema_with_items_schema(schema): inner_schema = schema.get('items_schema', core_schema.any_schema()) - schema['items_schema'] = apply_validators(inner_schema, each_item_validators, field_name) + schema['items_schema'] = apply_validators(inner_schema, each_item_validators) elif schema['type'] == 'dict': inner_schema = schema.get('values_schema', core_schema.any_schema()) - schema['values_schema'] = apply_validators(inner_schema, each_item_validators, field_name) + schema['values_schema'] = apply_validators(inner_schema, each_item_validators) else: raise TypeError( f'`@validator(..., each_item=True)` cannot be applied to fields with a schema of {schema["type"]}' @@ -823,7 +821,7 @@ def _model_schema(self, cls: type[BaseModel]) -> core_schema.CoreSchema: extras_keys_schema=extras_keys_schema, model_name=cls.__name__, ) - inner_schema = apply_validators(fields_schema, decorators.root_validators.values(), None) + inner_schema = apply_validators(fields_schema, decorators.root_validators.values()) inner_schema = apply_model_validators(inner_schema, model_validators, 'inner') model_schema = core_schema.model_schema( @@ -1363,9 +1361,9 @@ def set_discriminator(schema: CoreSchema) -> CoreSchema: field_info.validate_default = True each_item_validators = [v for v in this_field_validators if v.info.each_item is True] this_field_validators = [v for v in this_field_validators if v not in each_item_validators] - schema = apply_each_item_validators(schema, each_item_validators, name) + schema = apply_each_item_validators(schema, each_item_validators) - schema = apply_validators(schema, this_field_validators, name) + schema = apply_validators(schema, this_field_validators) # the default validator needs to go outside of any other validators # so that it is the topmost validator for the field validator @@ -1942,7 +1940,7 @@ def _dataclass_schema( collect_init_only=has_post_init, ) - inner_schema = apply_validators(args_schema, decorators.root_validators.values(), None) + inner_schema = apply_validators(args_schema, decorators.root_validators.values()) model_validators = decorators.model_validators.values() inner_schema = apply_model_validators(inner_schema, model_validators, 'inner') @@ -2454,24 +2452,16 @@ def _apply_model_serializers( _VALIDATOR_F_MATCH: Mapping[ tuple[FieldValidatorModes, Literal['no-info', 'with-info']], - Callable[[Callable[..., Any], core_schema.CoreSchema, str | None], core_schema.CoreSchema], + Callable[[Callable[..., Any], core_schema.CoreSchema], core_schema.CoreSchema], ] = { - ('before', 'no-info'): lambda f, schema, _: core_schema.no_info_before_validator_function(f, schema), - ('after', 'no-info'): lambda f, schema, _: core_schema.no_info_after_validator_function(f, schema), - ('plain', 'no-info'): lambda f, _1, _2: core_schema.no_info_plain_validator_function(f), - ('wrap', 'no-info'): lambda f, schema, _: core_schema.no_info_wrap_validator_function(f, schema), - ('before', 'with-info'): lambda f, schema, field_name: core_schema.with_info_before_validator_function( - f, schema, field_name=field_name - ), - ('after', 'with-info'): lambda f, schema, field_name: core_schema.with_info_after_validator_function( - f, schema, field_name=field_name - ), - ('plain', 'with-info'): lambda f, _, field_name: core_schema.with_info_plain_validator_function( - f, field_name=field_name - ), - ('wrap', 'with-info'): lambda f, schema, field_name: core_schema.with_info_wrap_validator_function( - f, schema, field_name=field_name - ), + ('before', 'no-info'): lambda f, schema: core_schema.no_info_before_validator_function(f, schema), + ('after', 'no-info'): lambda f, schema: core_schema.no_info_after_validator_function(f, schema), + ('plain', 'no-info'): lambda f, _: core_schema.no_info_plain_validator_function(f), + ('wrap', 'no-info'): lambda f, schema: core_schema.no_info_wrap_validator_function(f, schema), + ('before', 'with-info'): lambda f, schema: core_schema.with_info_before_validator_function(f, schema), + ('after', 'with-info'): lambda f, schema: core_schema.with_info_after_validator_function(f, schema), + ('plain', 'with-info'): lambda f, _: core_schema.with_info_plain_validator_function(f), + ('wrap', 'with-info'): lambda f, schema: core_schema.with_info_wrap_validator_function(f, schema), } @@ -2482,7 +2472,6 @@ def apply_validators( validators: Iterable[Decorator[RootValidatorDecoratorInfo]] | Iterable[Decorator[ValidatorDecoratorInfo]] | Iterable[Decorator[FieldValidatorDecoratorInfo]], - field_name: str | None, ) -> core_schema.CoreSchema: """Apply validators to a schema. @@ -2498,7 +2487,7 @@ def apply_validators( info_arg = inspect_validator(validator.func, validator.info.mode) val_type = 'with-info' if info_arg else 'no-info' - schema = _VALIDATOR_F_MATCH[(validator.info.mode, val_type)](validator.func, schema, field_name) + schema = _VALIDATOR_F_MATCH[(validator.info.mode, val_type)](validator.func, schema) return schema diff --git a/pydantic/functional_validators.py b/pydantic/functional_validators.py index 2eed4ef8fc5..8b0ea318287 100644 --- a/pydantic/functional_validators.py +++ b/pydantic/functional_validators.py @@ -75,7 +75,7 @@ def __get_pydantic_core_schema__(self, source_type: Any, handler: GetCoreSchemaH info_arg = _inspect_validator(self.func, 'after') if info_arg: func = cast(core_schema.WithInfoValidatorFunction, self.func) - return core_schema.with_info_after_validator_function(func, schema=schema, field_name=handler.field_name) + return core_schema.with_info_after_validator_function(func, schema=schema) else: func = cast(core_schema.NoInfoValidatorFunction, self.func) return core_schema.no_info_after_validator_function(func, schema=schema) @@ -136,7 +136,6 @@ def __get_pydantic_core_schema__(self, source_type: Any, handler: GetCoreSchemaH return core_schema.with_info_before_validator_function( func, schema=schema, - field_name=handler.field_name, json_schema_input_schema=input_schema, ) else: @@ -230,7 +229,6 @@ def __get_pydantic_core_schema__(self, source_type: Any, handler: GetCoreSchemaH func = cast(core_schema.WithInfoValidatorFunction, self.func) return core_schema.with_info_plain_validator_function( func, - field_name=handler.field_name, serialization=serialization, # pyright: ignore[reportArgumentType] json_schema_input_schema=input_schema, ) @@ -307,7 +305,6 @@ def __get_pydantic_core_schema__(self, source_type: Any, handler: GetCoreSchemaH return core_schema.with_info_wrap_validator_function( func, schema=schema, - field_name=handler.field_name, json_schema_input_schema=input_schema, ) else: diff --git a/pydantic/version.py b/pydantic/version.py index 554a7a00c09..c50e241b76d 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -66,7 +66,7 @@ def version_info() -> str: def check_pydantic_core_version() -> bool: """Check that the installed `pydantic-core` dependency is compatible.""" # Keep this in sync with the version constraint in the `pyproject.toml` dependencies: - return __pydantic_core_version__ == '2.33.1' + return __pydantic_core_version__ == '2.34.1' def parse_mypy_version(version: str) -> tuple[int, int, int]: diff --git a/pyproject.toml b/pyproject.toml index 8458badaaa8..d4cce4aef85 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,7 +46,7 @@ dependencies = [ 'typing-extensions>=4.12.2', 'annotated-types>=0.6.0', # Keep this in sync with the version in the `check_pydantic_core_version()` function: - 'pydantic-core==2.33.1', + 'pydantic-core==2.34.1', 'typing-inspection>=0.4.0', ] dynamic = ['version', 'readme'] diff --git a/tests/test_validators.py b/tests/test_validators.py index fe7b6c45c9f..3b16a68d8d5 100644 --- a/tests/test_validators.py +++ b/tests/test_validators.py @@ -21,7 +21,7 @@ import pytest from dirty_equals import HasRepr, IsInstance from pydantic_core import core_schema -from typing_extensions import TypedDict +from typing_extensions import TypeAliasType, TypedDict from pydantic import ( BaseModel, @@ -2684,7 +2684,7 @@ def foobar_validate(value: Any, info: core_schema.ValidationInfo): class Foobar: @classmethod def __get_pydantic_core_schema__(cls, source_type: Any, handler: GetCoreSchemaHandler) -> core_schema.CoreSchema: - return core_schema.with_info_plain_validator_function(foobar_validate, field_name=handler.field_name) + return core_schema.with_info_plain_validator_function(foobar_validate) def test_custom_type_field_name_model(): @@ -2779,6 +2779,29 @@ class MyModel(BaseModel): assert m.foobar == {'value': '1', 'field_name': 'foobar', 'data': {'x': 123}} +def test_validator_field_name_with_reused_type_alias(): + calls = [] + + def validate_my_field(value: str, info: ValidationInfo): + calls.append((info.field_name, value)) + return value + + MyField = TypeAliasType('MyField', Annotated[str, AfterValidator(validate_my_field)]) + + class MyModel(BaseModel): + field1: MyField + field2: MyField + + MyModel.model_validate( + { + 'field1': 'value1', + 'field2': 'value2', + } + ) + + assert calls == [('field1', 'value1'), ('field2', 'value2')] + + def validate_wrap(value: Any, handler: core_schema.ValidatorFunctionWrapHandler, info: core_schema.ValidationInfo): data = info.data if isinstance(data, dict): diff --git a/uv.lock b/uv.lock index 2449038341f..59c572e4f9a 100644 --- a/uv.lock +++ b/uv.lock @@ -1784,7 +1784,7 @@ typechecking = [ requires-dist = [ { name = "annotated-types", specifier = ">=0.6.0" }, { name = "email-validator", marker = "extra == 'email'", specifier = ">=2.0.0" }, - { name = "pydantic-core", specifier = "==2.33.1" }, + { name = "pydantic-core", specifier = "==2.34.1" }, { name = "typing-extensions", specifier = ">=4.12.2" }, { name = "typing-inspection", specifier = ">=0.4.0" }, { name = "tzdata", marker = "python_full_version >= '3.9' and sys_platform == 'win32' and extra == 'timezone'" }, @@ -1881,111 +1881,111 @@ typechecking = [ [[package]] name = "pydantic-core" -version = "2.33.1" +version = "2.34.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/17/19/ed6a078a5287aea7922de6841ef4c06157931622c89c2a47940837b5eecd/pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df", size = 434395 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/ea/5f572806ab4d4223d11551af814d243b0e3e02cc6913def4d1fe4a5ca41c/pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26", size = 2044021 }, - { url = "https://files.pythonhosted.org/packages/8c/d1/f86cc96d2aa80e3881140d16d12ef2b491223f90b28b9a911346c04ac359/pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927", size = 1861742 }, - { url = "https://files.pythonhosted.org/packages/37/08/fbd2cd1e9fc735a0df0142fac41c114ad9602d1c004aea340169ae90973b/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db", size = 1910414 }, - { url = "https://files.pythonhosted.org/packages/7f/73/3ac217751decbf8d6cb9443cec9b9eb0130eeada6ae56403e11b486e277e/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48", size = 1996848 }, - { url = "https://files.pythonhosted.org/packages/9a/f5/5c26b265cdcff2661e2520d2d1e9db72d117ea00eb41e00a76efe68cb009/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969", size = 2141055 }, - { url = "https://files.pythonhosted.org/packages/5d/14/a9c3cee817ef2f8347c5ce0713e91867a0dceceefcb2973942855c917379/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e", size = 2753806 }, - { url = "https://files.pythonhosted.org/packages/f2/68/866ce83a51dd37e7c604ce0050ff6ad26de65a7799df89f4db87dd93d1d6/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89", size = 2007777 }, - { url = "https://files.pythonhosted.org/packages/b6/a8/36771f4404bb3e49bd6d4344da4dede0bf89cc1e01f3b723c47248a3761c/pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde", size = 2122803 }, - { url = "https://files.pythonhosted.org/packages/18/9c/730a09b2694aa89360d20756369822d98dc2f31b717c21df33b64ffd1f50/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65", size = 2086755 }, - { url = "https://files.pythonhosted.org/packages/54/8e/2dccd89602b5ec31d1c58138d02340ecb2ebb8c2cac3cc66b65ce3edb6ce/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc", size = 2257358 }, - { url = "https://files.pythonhosted.org/packages/d1/9c/126e4ac1bfad8a95a9837acdd0963695d69264179ba4ede8b8c40d741702/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091", size = 2257916 }, - { url = "https://files.pythonhosted.org/packages/7d/ba/91eea2047e681a6853c81c20aeca9dcdaa5402ccb7404a2097c2adf9d038/pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383", size = 1923823 }, - { url = "https://files.pythonhosted.org/packages/94/c0/fcdf739bf60d836a38811476f6ecd50374880b01e3014318b6e809ddfd52/pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504", size = 1952494 }, - { url = "https://files.pythonhosted.org/packages/d6/7f/c6298830cb780c46b4f46bb24298d01019ffa4d21769f39b908cd14bbd50/pydantic_core-2.33.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e966fc3caaf9f1d96b349b0341c70c8d6573bf1bac7261f7b0ba88f96c56c24", size = 2044224 }, - { url = "https://files.pythonhosted.org/packages/a8/65/6ab3a536776cad5343f625245bd38165d6663256ad43f3a200e5936afd6c/pydantic_core-2.33.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bfd0adeee563d59c598ceabddf2c92eec77abcb3f4a391b19aa7366170bd9e30", size = 1858845 }, - { url = "https://files.pythonhosted.org/packages/e9/15/9a22fd26ba5ee8c669d4b8c9c244238e940cd5d818649603ca81d1c69861/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91815221101ad3c6b507804178a7bb5cb7b2ead9ecd600041669c8d805ebd595", size = 1910029 }, - { url = "https://files.pythonhosted.org/packages/d5/33/8cb1a62818974045086f55f604044bf35b9342900318f9a2a029a1bec460/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fea9c1869bb4742d174a57b4700c6dadea951df8b06de40c2fedb4f02931c2e", size = 1997784 }, - { url = "https://files.pythonhosted.org/packages/c0/ca/49958e4df7715c71773e1ea5be1c74544923d10319173264e6db122543f9/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d20eb4861329bb2484c021b9d9a977566ab16d84000a57e28061151c62b349a", size = 2141075 }, - { url = "https://files.pythonhosted.org/packages/7b/a6/0b3a167a9773c79ba834b959b4e18c3ae9216b8319bd8422792abc8a41b1/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb935c5591573ae3201640579f30128ccc10739b45663f93c06796854405505", size = 2745849 }, - { url = "https://files.pythonhosted.org/packages/0b/60/516484135173aa9e5861d7a0663dce82e4746d2e7f803627d8c25dfa5578/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c964fd24e6166420d18fb53996d8c9fd6eac9bf5ae3ec3d03015be4414ce497f", size = 2005794 }, - { url = "https://files.pythonhosted.org/packages/86/70/05b1eb77459ad47de00cf78ee003016da0cedf8b9170260488d7c21e9181/pydantic_core-2.33.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:681d65e9011f7392db5aa002b7423cc442d6a673c635668c227c6c8d0e5a4f77", size = 2123237 }, - { url = "https://files.pythonhosted.org/packages/c7/57/12667a1409c04ae7dc95d3b43158948eb0368e9c790be8b095cb60611459/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e100c52f7355a48413e2999bfb4e139d2977a904495441b374f3d4fb4a170961", size = 2086351 }, - { url = "https://files.pythonhosted.org/packages/57/61/cc6d1d1c1664b58fdd6ecc64c84366c34ec9b606aeb66cafab6f4088974c/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:048831bd363490be79acdd3232f74a0e9951b11b2b4cc058aeb72b22fdc3abe1", size = 2258914 }, - { url = "https://files.pythonhosted.org/packages/d1/0a/edb137176a1f5419b2ddee8bde6a0a548cfa3c74f657f63e56232df8de88/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bdc84017d28459c00db6f918a7272a5190bec3090058334e43a76afb279eac7c", size = 2257385 }, - { url = "https://files.pythonhosted.org/packages/26/3c/48ca982d50e4b0e1d9954919c887bdc1c2b462801bf408613ccc641b3daa/pydantic_core-2.33.1-cp311-cp311-win32.whl", hash = "sha256:32cd11c5914d1179df70406427097c7dcde19fddf1418c787540f4b730289896", size = 1923765 }, - { url = "https://files.pythonhosted.org/packages/33/cd/7ab70b99e5e21559f5de38a0928ea84e6f23fdef2b0d16a6feaf942b003c/pydantic_core-2.33.1-cp311-cp311-win_amd64.whl", hash = "sha256:2ea62419ba8c397e7da28a9170a16219d310d2cf4970dbc65c32faf20d828c83", size = 1950688 }, - { url = "https://files.pythonhosted.org/packages/4b/ae/db1fc237b82e2cacd379f63e3335748ab88b5adde98bf7544a1b1bd10a84/pydantic_core-2.33.1-cp311-cp311-win_arm64.whl", hash = "sha256:fc903512177361e868bc1f5b80ac8c8a6e05fcdd574a5fb5ffeac5a9982b9e89", size = 1908185 }, - { url = "https://files.pythonhosted.org/packages/c8/ce/3cb22b07c29938f97ff5f5bb27521f95e2ebec399b882392deb68d6c440e/pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8", size = 2026640 }, - { url = "https://files.pythonhosted.org/packages/19/78/f381d643b12378fee782a72126ec5d793081ef03791c28a0fd542a5bee64/pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498", size = 1852649 }, - { url = "https://files.pythonhosted.org/packages/9d/2b/98a37b80b15aac9eb2c6cfc6dbd35e5058a352891c5cce3a8472d77665a6/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939", size = 1892472 }, - { url = "https://files.pythonhosted.org/packages/4e/d4/3c59514e0f55a161004792b9ff3039da52448f43f5834f905abef9db6e4a/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d", size = 1977509 }, - { url = "https://files.pythonhosted.org/packages/a9/b6/c2c7946ef70576f79a25db59a576bce088bdc5952d1b93c9789b091df716/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e", size = 2128702 }, - { url = "https://files.pythonhosted.org/packages/88/fe/65a880f81e3f2a974312b61f82a03d85528f89a010ce21ad92f109d94deb/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3", size = 2679428 }, - { url = "https://files.pythonhosted.org/packages/6f/ff/4459e4146afd0462fb483bb98aa2436d69c484737feaceba1341615fb0ac/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d", size = 2008753 }, - { url = "https://files.pythonhosted.org/packages/7c/76/1c42e384e8d78452ededac8b583fe2550c84abfef83a0552e0e7478ccbc3/pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b", size = 2114849 }, - { url = "https://files.pythonhosted.org/packages/00/72/7d0cf05095c15f7ffe0eb78914b166d591c0eed72f294da68378da205101/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39", size = 2069541 }, - { url = "https://files.pythonhosted.org/packages/b3/69/94a514066bb7d8be499aa764926937409d2389c09be0b5107a970286ef81/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a", size = 2239225 }, - { url = "https://files.pythonhosted.org/packages/84/b0/e390071eadb44b41f4f54c3cef64d8bf5f9612c92686c9299eaa09e267e2/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db", size = 2248373 }, - { url = "https://files.pythonhosted.org/packages/d6/b2/288b3579ffc07e92af66e2f1a11be3b056fe1214aab314748461f21a31c3/pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda", size = 1907034 }, - { url = "https://files.pythonhosted.org/packages/02/28/58442ad1c22b5b6742b992ba9518420235adced665513868f99a1c2638a5/pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4", size = 1956848 }, - { url = "https://files.pythonhosted.org/packages/a1/eb/f54809b51c7e2a1d9f439f158b8dd94359321abcc98767e16fc48ae5a77e/pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea", size = 1903986 }, - { url = "https://files.pythonhosted.org/packages/7a/24/eed3466a4308d79155f1cdd5c7432c80ddcc4530ba8623b79d5ced021641/pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a", size = 2033551 }, - { url = "https://files.pythonhosted.org/packages/ab/14/df54b1a0bc9b6ded9b758b73139d2c11b4e8eb43e8ab9c5847c0a2913ada/pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266", size = 1852785 }, - { url = "https://files.pythonhosted.org/packages/fa/96/e275f15ff3d34bb04b0125d9bc8848bf69f25d784d92a63676112451bfb9/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3", size = 1897758 }, - { url = "https://files.pythonhosted.org/packages/b7/d8/96bc536e975b69e3a924b507d2a19aedbf50b24e08c80fb00e35f9baaed8/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a", size = 1986109 }, - { url = "https://files.pythonhosted.org/packages/90/72/ab58e43ce7e900b88cb571ed057b2fcd0e95b708a2e0bed475b10130393e/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516", size = 2129159 }, - { url = "https://files.pythonhosted.org/packages/dc/3f/52d85781406886c6870ac995ec0ba7ccc028b530b0798c9080531b409fdb/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764", size = 2680222 }, - { url = "https://files.pythonhosted.org/packages/f4/56/6e2ef42f363a0eec0fd92f74a91e0ac48cd2e49b695aac1509ad81eee86a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d", size = 2006980 }, - { url = "https://files.pythonhosted.org/packages/4c/c0/604536c4379cc78359f9ee0aa319f4aedf6b652ec2854953f5a14fc38c5a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4", size = 2120840 }, - { url = "https://files.pythonhosted.org/packages/1f/46/9eb764814f508f0edfb291a0f75d10854d78113fa13900ce13729aaec3ae/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde", size = 2072518 }, - { url = "https://files.pythonhosted.org/packages/42/e3/fb6b2a732b82d1666fa6bf53e3627867ea3131c5f39f98ce92141e3e3dc1/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e", size = 2248025 }, - { url = "https://files.pythonhosted.org/packages/5c/9d/fbe8fe9d1aa4dac88723f10a921bc7418bd3378a567cb5e21193a3c48b43/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd", size = 2254991 }, - { url = "https://files.pythonhosted.org/packages/aa/99/07e2237b8a66438d9b26482332cda99a9acccb58d284af7bc7c946a42fd3/pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f", size = 1915262 }, - { url = "https://files.pythonhosted.org/packages/8a/f4/e457a7849beeed1e5defbcf5051c6f7b3c91a0624dd31543a64fc9adcf52/pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40", size = 1956626 }, - { url = "https://files.pythonhosted.org/packages/20/d0/e8d567a7cff7b04e017ae164d98011f1e1894269fe8e90ea187a3cbfb562/pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523", size = 1909590 }, - { url = "https://files.pythonhosted.org/packages/ef/fd/24ea4302d7a527d672c5be06e17df16aabfb4e9fdc6e0b345c21580f3d2a/pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d", size = 1812963 }, - { url = "https://files.pythonhosted.org/packages/5f/95/4fbc2ecdeb5c1c53f1175a32d870250194eb2fdf6291b795ab08c8646d5d/pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c", size = 1986896 }, - { url = "https://files.pythonhosted.org/packages/71/ae/fe31e7f4a62431222d8f65a3bd02e3fa7e6026d154a00818e6d30520ea77/pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18", size = 1931810 }, - { url = "https://files.pythonhosted.org/packages/49/78/b86bad645cc3e8dfa6858c70ec38939bf350e54004837c48de09474b2b9e/pydantic_core-2.33.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5ab77f45d33d264de66e1884fca158bc920cb5e27fd0764a72f72f5756ae8bdb", size = 2044282 }, - { url = "https://files.pythonhosted.org/packages/3b/00/a02531331773b2bf08743d84c6b776bd6a449d23b3ae6b0e3229d568bac4/pydantic_core-2.33.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7aaba1b4b03aaea7bb59e1b5856d734be011d3e6d98f5bcaa98cb30f375f2ad", size = 1877598 }, - { url = "https://files.pythonhosted.org/packages/a1/fa/32cc152b84a1f420f8a7d80161373e8d87d4ffa077e67d6c8aab3ce1a6ab/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb66263e9ba8fea2aa85e1e5578980d127fb37d7f2e292773e7bc3a38fb0c7b", size = 1911021 }, - { url = "https://files.pythonhosted.org/packages/5e/87/ea553e0d98bce6c4876f8c50f65cb45597eff6e0aaa8b15813e9972bb19d/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f2648b9262607a7fb41d782cc263b48032ff7a03a835581abbf7a3bec62bcf5", size = 1997276 }, - { url = "https://files.pythonhosted.org/packages/f7/9b/60cb9f4b52158b3adac0066492bbadd0b8473f4f8da5bcc73972655b76ef/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:723c5630c4259400818b4ad096735a829074601805d07f8cafc366d95786d331", size = 2141348 }, - { url = "https://files.pythonhosted.org/packages/9b/38/374d254e270d4de0add68a8239f4ed0f444fdd7b766ea69244fb9491dccb/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d100e3ae783d2167782391e0c1c7a20a31f55f8015f3293647544df3f9c67824", size = 2753708 }, - { url = "https://files.pythonhosted.org/packages/05/a8/fd79111eb5ab9bc4ef98d8fb0b3a2ffdc80107b2c59859a741ab379c96f8/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177d50460bc976a0369920b6c744d927b0ecb8606fb56858ff542560251b19e5", size = 2008699 }, - { url = "https://files.pythonhosted.org/packages/35/31/2e06619868eb4c18642c5601db420599c1cf9cf50fe868c9ac09cd298e24/pydantic_core-2.33.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3edde68d1a1f9af1273b2fe798997b33f90308fb6d44d8550c89fc6a3647cf6", size = 2123426 }, - { url = "https://files.pythonhosted.org/packages/4a/d0/3531e8783a311802e3db7ee5a1a5ed79e5706e930b1b4e3109ce15eeb681/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a62c3c3ef6a7e2c45f7853b10b5bc4ddefd6ee3cd31024754a1a5842da7d598d", size = 2087330 }, - { url = "https://files.pythonhosted.org/packages/ac/32/5ff252ed73bacd7677a706ab17723e261a76793f98b305aa20cfc10bbd56/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c91dbb0ab683fa0cd64a6e81907c8ff41d6497c346890e26b23de7ee55353f96", size = 2258171 }, - { url = "https://files.pythonhosted.org/packages/c9/f9/e96e00f92b8f5b3e2cddc80c5ee6cf038f8a0f238c44b67b01759943a7b4/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f466e8bf0a62dc43e068c12166281c2eca72121dd2adc1040f3aa1e21ef8599", size = 2258745 }, - { url = "https://files.pythonhosted.org/packages/54/1e/51c86688e809d94797fdf0efc41514f001caec982a05f62d90c180a9639d/pydantic_core-2.33.1-cp39-cp39-win32.whl", hash = "sha256:ab0277cedb698749caada82e5d099dc9fed3f906a30d4c382d1a21725777a1e5", size = 1923626 }, - { url = "https://files.pythonhosted.org/packages/57/18/c2da959fd8d019b70cadafdda2bf845378ada47973e0bad6cc84f56dbe6e/pydantic_core-2.33.1-cp39-cp39-win_amd64.whl", hash = "sha256:5773da0ee2d17136b1f1c6fbde543398d452a6ad2a7b54ea1033e2daa739b8d2", size = 1953703 }, - { url = "https://files.pythonhosted.org/packages/9c/c7/8b311d5adb0fe00a93ee9b4e92a02b0ec08510e9838885ef781ccbb20604/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02", size = 2041659 }, - { url = "https://files.pythonhosted.org/packages/8a/d6/4f58d32066a9e26530daaf9adc6664b01875ae0691570094968aaa7b8fcc/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068", size = 1873294 }, - { url = "https://files.pythonhosted.org/packages/f7/3f/53cc9c45d9229da427909c751f8ed2bf422414f7664ea4dde2d004f596ba/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e", size = 1903771 }, - { url = "https://files.pythonhosted.org/packages/f0/49/bf0783279ce674eb9903fb9ae43f6c614cb2f1c4951370258823f795368b/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe", size = 2083558 }, - { url = "https://files.pythonhosted.org/packages/9c/5b/0d998367687f986c7d8484a2c476d30f07bf5b8b1477649a6092bd4c540e/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1", size = 2118038 }, - { url = "https://files.pythonhosted.org/packages/b3/33/039287d410230ee125daee57373ac01940d3030d18dba1c29cd3089dc3ca/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7", size = 2079315 }, - { url = "https://files.pythonhosted.org/packages/1f/85/6d8b2646d99c062d7da2d0ab2faeb0d6ca9cca4c02da6076376042a20da3/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde", size = 2249063 }, - { url = "https://files.pythonhosted.org/packages/17/d7/c37d208d5738f7b9ad8f22ae8a727d88ebf9c16c04ed2475122cc3f7224a/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add", size = 2254631 }, - { url = "https://files.pythonhosted.org/packages/13/e0/bafa46476d328e4553b85ab9b2f7409e7aaef0ce4c937c894821c542d347/pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c", size = 2080877 }, - { url = "https://files.pythonhosted.org/packages/0b/76/1794e440c1801ed35415238d2c728f26cd12695df9057154ad768b7b991c/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a371dc00282c4b84246509a5ddc808e61b9864aa1eae9ecc92bb1268b82db4a", size = 2042858 }, - { url = "https://files.pythonhosted.org/packages/73/b4/9cd7b081fb0b1b4f8150507cd59d27b275c3e22ad60b35cb19ea0977d9b9/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f59295ecc75a1788af8ba92f2e8c6eeaa5a94c22fc4d151e8d9638814f85c8fc", size = 1873745 }, - { url = "https://files.pythonhosted.org/packages/e1/d7/9ddb7575d4321e40d0363903c2576c8c0c3280ebea137777e5ab58d723e3/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08530b8ac922003033f399128505f513e30ca770527cc8bbacf75a84fcc2c74b", size = 1904188 }, - { url = "https://files.pythonhosted.org/packages/d1/a8/3194ccfe461bb08da19377ebec8cb4f13c9bd82e13baebc53c5c7c39a029/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae370459da6a5466978c0eacf90690cb57ec9d533f8e63e564ef3822bfa04fe", size = 2083479 }, - { url = "https://files.pythonhosted.org/packages/42/c7/84cb569555d7179ca0b3f838cef08f66f7089b54432f5b8599aac6e9533e/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3de2777e3b9f4d603112f78006f4ae0acb936e95f06da6cb1a45fbad6bdb4b5", size = 2118415 }, - { url = "https://files.pythonhosted.org/packages/3b/67/72abb8c73e0837716afbb58a59cc9e3ae43d1aa8677f3b4bc72c16142716/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a64e81e8cba118e108d7126362ea30e021291b7805d47e4896e52c791be2761", size = 2079623 }, - { url = "https://files.pythonhosted.org/packages/0b/cd/c59707e35a47ba4cbbf153c3f7c56420c58653b5801b055dc52cccc8e2dc/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850", size = 2250175 }, - { url = "https://files.pythonhosted.org/packages/84/32/e4325a6676b0bed32d5b084566ec86ed7fd1e9bcbfc49c578b1755bde920/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544", size = 2254674 }, - { url = "https://files.pythonhosted.org/packages/12/6f/5596dc418f2e292ffc661d21931ab34591952e2843e7168ea5a52591f6ff/pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5", size = 2080951 }, - { url = "https://files.pythonhosted.org/packages/2d/a8/c2c8f29bd18f7ef52de32a6deb9e3ee87ba18b7b2122636aa9f4438cf627/pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7edbc454a29fc6aeae1e1eecba4f07b63b8d76e76a748532233c4c167b4cb9ea", size = 2041791 }, - { url = "https://files.pythonhosted.org/packages/08/ad/328081b1c82543ae49d0650048305058583c51f1a9a56a0d6e87bb3a2443/pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ad05b683963f69a1d5d2c2bdab1274a31221ca737dbbceaa32bcb67359453cdd", size = 1873579 }, - { url = "https://files.pythonhosted.org/packages/6e/8a/bc65dbf7e501e88367cdab06a2c1340457c785f0c72288cae737fd80c0fa/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df6a94bf9452c6da9b5d76ed229a5683d0306ccb91cca8e1eea883189780d568", size = 1904189 }, - { url = "https://files.pythonhosted.org/packages/9a/db/30ca6aefda211fb01ef185ca73cb7a0c6e7fe952c524025c8782b5acd771/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7965c13b3967909a09ecc91f21d09cfc4576bf78140b988904e94f130f188396", size = 2084446 }, - { url = "https://files.pythonhosted.org/packages/f2/89/a12b55286e30c9f476eab7c53c9249ec76faf70430596496ab0309f28629/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f1fdb790440a34f6ecf7679e1863b825cb5ffde858a9197f851168ed08371e5", size = 2118215 }, - { url = "https://files.pythonhosted.org/packages/8e/55/12721c4a8d7951584ad3d9848b44442559cf1876e0bb424148d1060636b3/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5277aec8d879f8d05168fdd17ae811dd313b8ff894aeeaf7cd34ad28b4d77e33", size = 2079963 }, - { url = "https://files.pythonhosted.org/packages/bd/0c/3391bd5d6ff62ea998db94732528d9bc32c560b0ed861c39119759461946/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8ab581d3530611897d863d1a649fb0644b860286b4718db919bfd51ece41f10b", size = 2249388 }, - { url = "https://files.pythonhosted.org/packages/d3/5f/3e4feb042998d7886a9b523b372d83955cbc192a07013dcd24276db078ee/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0483847fa9ad5e3412265c1bd72aad35235512d9ce9d27d81a56d935ef489672", size = 2255226 }, - { url = "https://files.pythonhosted.org/packages/25/f2/1647933efaaad61846109a27619f3704929e758a09e6431b8f932a053d40/pydantic_core-2.33.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de9e06abe3cc5ec6a2d5f75bc99b0bdca4f5c719a5b34026f8c57efbdecd2ee3", size = 2081073 }, +sdist = { url = "https://files.pythonhosted.org/packages/42/fa/5f682f3db14e14f7b5b7f5008ac24594b93943d1da4facbacff5876624cf/pydantic_core-2.34.1.tar.gz", hash = "sha256:6bf31628ab6d0e7c7c0372419898c52ef0a447b33ab47c7f62053bd013cc5b09", size = 435281 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/10/d950f249c9e50048890a515a4bad7e98c44ec4cde78ff4d6e37bfa022a19/pydantic_core-2.34.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:54f6bd146247c62b243fae34b535069614b255453fb1405c17b7d01d00976af7", size = 2038087 }, + { url = "https://files.pythonhosted.org/packages/f5/6c/9177d1b5f9aac2775979b5d0a7f03589919dba05caf4d11d4ba9292ce105/pydantic_core-2.34.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9db4dab51a6515d7eb0763f200f4784075952b2a0afe84ce7048da3da70a51cb", size = 1864646 }, + { url = "https://files.pythonhosted.org/packages/0a/36/8428d9848cfec707247d7d082deda2d20c8a6be8939c70adb228d9f9251d/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1444714e5c04dc20ad8246f8fd32b7ef4aef34f2fc7b349f71ae365ceb51e66", size = 1906297 }, + { url = "https://files.pythonhosted.org/packages/74/53/d0c33441434a3c2ea79ad5b0c8063f5c55a1173ecf38a0a5632c18205df3/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fffe3dd67708719a59e82ae36d6b431e2fb4e11b14f36f173c93e448ba963825", size = 1991861 }, + { url = "https://files.pythonhosted.org/packages/35/9b/e19d326eeb1bf83f1f9d5f98a1e244da3441258824ae410b0dfb06c1ab5b/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91f64f2f538d8da4a61d1d7dd515dfa535375bddfa1de0b543af650f2a9ae0a8", size = 2142095 }, + { url = "https://files.pythonhosted.org/packages/de/25/b68f48ff4b3a7e3b3fb23cc1cd0dd12c024eabfa3641116dc984ff92222f/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d17f447fffbef877aab4bca91c65d0ccdb3ef776c3db24f88c499565568a489", size = 2745180 }, + { url = "https://files.pythonhosted.org/packages/76/07/671c2c3876bd5f8a446d8264bc4832d23d2589786c6bd132b29181a1aa4a/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a44cd4d7651a586344cdd474e0740a8d2ee9dba9d1169f980b479b14a8b4891", size = 2015014 }, + { url = "https://files.pythonhosted.org/packages/0b/33/47970d638c0db6b1087fc8ecaae0abc1cb67c7010e316560d1ef6ab4c664/pydantic_core-2.34.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:564b56ce0e64a48ec338b06205b8753cc648133ec3f9c9af9dcfd403fc7af040", size = 2120837 }, + { url = "https://files.pythonhosted.org/packages/76/0b/7ce9448cfe087d5a4a084d067c317b92a631e10c6ed4a11687bb841f6296/pydantic_core-2.34.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:def02d3a0296a171d6723f97cc135ae827bdaca24c9f0665d23ad6f8096334d1", size = 2083217 }, + { url = "https://files.pythonhosted.org/packages/47/ca/13426f6593baff1dd544f6f884ce03f43133ef3787640e816fdc8ac5ec1f/pydantic_core-2.34.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:b72c63ed0399fdb7f45b7985025aa851d6c964801b1ad7c58f3ce8f75bc4e070", size = 2254441 }, + { url = "https://files.pythonhosted.org/packages/7c/7d/ecd2d9661000981f511ec996548024abdd3fcdd37a3582d4f30572f94651/pydantic_core-2.34.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eae6a05d4612d15ba5e22879b710d770d310dbdac6edc53126b86a3be4fe78b5", size = 2252748 }, + { url = "https://files.pythonhosted.org/packages/17/2f/baeda4059c46361a917973fb938e6564c0b9970113dba4f126c2dcc32595/pydantic_core-2.34.1-cp310-cp310-win32.whl", hash = "sha256:51aae06a854be524f7a33fd2ccc54a37577a7b37c77813794483cbb00829d646", size = 1918465 }, + { url = "https://files.pythonhosted.org/packages/e3/93/156001796df52ed6738fe1cd394a6741737260fec318ab4b97085edd9909/pydantic_core-2.34.1-cp310-cp310-win_amd64.whl", hash = "sha256:4f3044c1626b46d5c21e67d9fd16fd854e2847b23e7ebda75689733050959023", size = 1960435 }, + { url = "https://files.pythonhosted.org/packages/c7/48/79d53d1822736d8304adb7bf12842c880a576fa53e670a4e0bcc9ebc7458/pydantic_core-2.34.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:922d7931884fbd5f46785d3e6998c58d1ee3a381b4714d1b5a95da5f41795b7c", size = 2037938 }, + { url = "https://files.pythonhosted.org/packages/57/33/bd9ee10002c5dacc954624443f2b6ec0d90f1a72ea24479fd70f1c00bba2/pydantic_core-2.34.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ca84244021b9d88bd979cb062c58fe7bd00689371b538284f00582781fd1047e", size = 1865764 }, + { url = "https://files.pythonhosted.org/packages/86/1f/b01bf845616c590895a1edb3daf6749d641209374e65712e2b6174a98fa2/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61f5536849eac65c638e47b7ed69ca9b8f353247936feea3862ff773d0f3e349", size = 1906063 }, + { url = "https://files.pythonhosted.org/packages/56/a6/fb1f3495dadf291be196e2907b084519e982dd5c762898dcfc05a8bdb80e/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8dbb8babb10c418ca18a149ee27a4df06db5ee4acc30c0576e8c35d9d3a9e9d3", size = 1993222 }, + { url = "https://files.pythonhosted.org/packages/b1/53/766c15b82e67a8e5f6a26e30c80f9cb18f68145021ecb337e8124b7b7b4c/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec8ce161786818229e96774f4d9159df80589d89b7bc64f3251c57c3fb133289", size = 2142103 }, + { url = "https://files.pythonhosted.org/packages/04/80/fdb17009b0b78c4cdbd7ce33fc434f45c34f5edd95fed9b3f76b01dc93e1/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8d59fcb88752869183b0685e3e6a9d46cb3109280fa452ede7994b9ccff734e", size = 2738738 }, + { url = "https://files.pythonhosted.org/packages/17/2d/499578ff0d40d411d094fbc35a3d8709dbe7a3e48bc99e6caf9fbbf5ded7/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff39a5611d098fcd821dacdfb01dabb434054867d3df646e7b11981a6770a195", size = 2012075 }, + { url = "https://files.pythonhosted.org/packages/03/ff/8528ba1261d0d548d88200b9b887633a8599c2baf4326872e7a2d838bdd2/pydantic_core-2.34.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6194d491d34ee7667a71cb51f107c9c9266608f86d7fef1e9644acfc7f3e189a", size = 2121560 }, + { url = "https://files.pythonhosted.org/packages/13/23/7314c1a12db9d3bc7036d94d5c78c81701d9149299f1db0fecbe9a3ed71c/pydantic_core-2.34.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c59c3cadc8a0ae1ac9bed2d7e78f93e71e5d99bba5f9f121c5d7bd41f1faa89a", size = 2083123 }, + { url = "https://files.pythonhosted.org/packages/90/75/40f499b653bd745a23e5e7deda21171b559014b41d676ec14f2acc1418fd/pydantic_core-2.34.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:e331d7ec5ec582c5078db948eca25d637c0a7f88a037b5016c48cb7c63f7da2c", size = 2255737 }, + { url = "https://files.pythonhosted.org/packages/64/b0/6440bbaea7b5bb53dd40e1b725cf06356d01820feb0cb9ffb0b0fd2db125/pydantic_core-2.34.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:71c2d7cb5c9087301f5d2a488ce51e090bd682849b5a59cf4f75a9ce08044f64", size = 2252186 }, + { url = "https://files.pythonhosted.org/packages/bf/43/6fe3ed2bfbf2068c42d0de892ba5f9b7bdadd494268f56b13bebd592d384/pydantic_core-2.34.1-cp311-cp311-win32.whl", hash = "sha256:dbec17f32828541af5bcebe0ea124235fc620bb5e5d56bf76e38b5b0ad37299d", size = 1917814 }, + { url = "https://files.pythonhosted.org/packages/c2/57/b39a659a2b5a9c76e239720db257bb1c930349d5094dce93d1b022d2e17b/pydantic_core-2.34.1-cp311-cp311-win_amd64.whl", hash = "sha256:91175524a4cb485333d4119454645c7adefeda34845e66ade277cae670ad8b58", size = 1957753 }, + { url = "https://files.pythonhosted.org/packages/e5/1d/da4c39b0ee8033f783df8bd7b41e662fadfa8d1be629d74b8e5ff5bfe97e/pydantic_core-2.34.1-cp311-cp311-win_arm64.whl", hash = "sha256:d9cb67f2d7d1f129af7e05dbf4fe209f4df043ea1245086bce2a5ee00ca2f5cc", size = 1905663 }, + { url = "https://files.pythonhosted.org/packages/ee/44/be71fcdaabc51210171ad47ba58667f5389b55029f2c04a8e009b0cd3bd6/pydantic_core-2.34.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:406f85849878788a3fd4b73410955dbbb038a70a8c0d7bb9201084242b035bb5", size = 2019724 }, + { url = "https://files.pythonhosted.org/packages/3f/dd/c8d5dafae46eacd3a619fe7476794acbbfc5ec170993bce4aed1e6e5773c/pydantic_core-2.34.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a953737ad0ce8a6b0130fa77851ab639c576e2c11e16a417392e04f8ec1d40dd", size = 1851663 }, + { url = "https://files.pythonhosted.org/packages/e6/3a/5f64080cba0002600b7254ecb61a54fbff3ef74023322e3625d95ae8a44a/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e12b71b0ed28cc751e59653d0415aded476f255984dbf0f99d6880342d1911db", size = 1889055 }, + { url = "https://files.pythonhosted.org/packages/2b/86/6ef6b3820fd52cba959e1b1b109734de99339fcbe78de6f22cb84a1ba568/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c6fe9cb158200d9a83a38fed3c2cb6766a98adc5f61940ccdd41a75231762e89", size = 1976847 }, + { url = "https://files.pythonhosted.org/packages/7c/93/e4d8c3ce244a528e226e4276c973f1b222ca3bc09e3660506f0b707896aa/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:448a11df0edc8a1a4072a13d34ad7e048e7c7941635432ffc39036e8bf4454a3", size = 2128118 }, + { url = "https://files.pythonhosted.org/packages/5e/91/a05cfdaebc9b0e72848dd20b0461a2f3d70cf7578763db8bf077031a83b1/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:642ca6940d2bc027d8ac8ddd4c1c7e7ae3dbb0277e26ab2c42a562cc96f9f048", size = 2686857 }, + { url = "https://files.pythonhosted.org/packages/37/c7/aa7eb3c22a12fbac158835c5fbd62d2059405838c977a61ba90fb3d9214a/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7126ea9858f9c23a3ec7cd9ecc18be93d1546fe76bc7b331389caf29c4d411f", size = 2013073 }, + { url = "https://files.pythonhosted.org/packages/0a/14/98d941d9af7d0860884223919c513d2b3b87eec121f3fc9d8864e984ea01/pydantic_core-2.34.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d74a8e53545bcfd0515754ece2b018fabfb81c0e49d825f8cc1dba09c911f404", size = 2107513 }, + { url = "https://files.pythonhosted.org/packages/e9/97/84d36d0c8f92c84ca515e634838f4db29db336d14a65350274ec39927609/pydantic_core-2.34.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:edc0c6d41431849c6f2f6301f713af730884136c06613a41fd6778446b5bc7c5", size = 2066685 }, + { url = "https://files.pythonhosted.org/packages/2c/5a/1a8d8e3690b595787ab041c0ebab2af6a47dda4df3e087c58ea92cef134c/pydantic_core-2.34.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:f5ee164fb0be1a56c7639794b400815ce36eeb14cdf0a914527c80481b43b43c", size = 2239959 }, + { url = "https://files.pythonhosted.org/packages/68/72/559845386d05391b5f180711e23efe03811d0b3f9b5a75295da8b2dd8dd4/pydantic_core-2.34.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b5beed6e1f3ee3d20a93b02bdb28dcc94bd192c09f433cd114efcf8ad13829f0", size = 2241120 }, + { url = "https://files.pythonhosted.org/packages/57/8b/3ff432a0d84037df43cdca3cb16ba416cb622b619755fe2bbea6b48dd101/pydantic_core-2.34.1-cp312-cp312-win32.whl", hash = "sha256:00d7e7b6a0b2d2294e3dc2d2b170fa860577fc0e286460d7cfd0e90c1a2a1267", size = 1900094 }, + { url = "https://files.pythonhosted.org/packages/4b/a8/5560b14afe572e6bdc5e7f0067717a7269e45225d9762dd7b57be0babdc0/pydantic_core-2.34.1-cp312-cp312-win_amd64.whl", hash = "sha256:4122151c1f4eb883556adc9e624564731872eb1647f5408028649d69b8565879", size = 1972744 }, + { url = "https://files.pythonhosted.org/packages/65/ec/64cc90d57bc109f1147f1b3d64439420948a1a0cbee83aeedda6af0d06d0/pydantic_core-2.34.1-cp312-cp312-win_arm64.whl", hash = "sha256:59054ba986777afb760c3283fcf0bfe27a6a1be970f6c7b3bcfde33985a69823", size = 1896488 }, + { url = "https://files.pythonhosted.org/packages/84/c2/60c310e7d471d590adce553bb0788256ad749bbf4f95f8c1e780e83b4ac6/pydantic_core-2.34.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:a7385b01cb068b87b35a95799b4e2b1c6456269d7b9a5e8b4dcfe2547bdaccaf", size = 2026574 }, + { url = "https://files.pythonhosted.org/packages/e0/51/8f8af7364febb498856bee3f1cc4c4cba45fcaf00622ade3839cb93e8023/pydantic_core-2.34.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d26e1ba192c3207fa2a3d1e049ad7710ace1f09e67ae70e52495db70292cc12d", size = 1851446 }, + { url = "https://files.pythonhosted.org/packages/54/26/93f8fb98f73043e22aa35a3384044694f7fcf2ef7d3031e9ddb47941c4ef/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abdefd076e7857f23caa4cfeacdae831d5e948ac227125b4d35b92b5fb77976c", size = 1893875 }, + { url = "https://files.pythonhosted.org/packages/35/d3/ae4b5b05b25768252a39f5835a3a4906ca4778a922a2e227a0775ce39c46/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6beb001b3dfc3a6705fd0bec935cf77e99ad37e43f4e82b15495c2c2e678d005", size = 1985569 }, + { url = "https://files.pythonhosted.org/packages/24/3c/361f8a0edc2b40a746fb19b97d13847e843b474fbcb2654e4df25d1a19a9/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:502c81a0e3db1010aabdb309456c7217151e94bb20abdbeb766b2df25be84320", size = 2128538 }, + { url = "https://files.pythonhosted.org/packages/1f/06/edc987266114e25550845c9602f28234721475a7efa84aa9b3cfaafa3d0c/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df50a223e1a8e8a066a806267b11ffc47fd797736ffafa70734629305b1b6fe6", size = 2687776 }, + { url = "https://files.pythonhosted.org/packages/c4/a6/a339a95abd8f65ece666147d3457c81abb7c35621c855f02703185b1fa7a/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54e31294764110fc266111f49d5ddd9356773b13fdf848cc261ef07a18de2568", size = 2010400 }, + { url = "https://files.pythonhosted.org/packages/86/7d/4c4c0e072829588d931162c8371de2cad68f067e9564c8fad49b0516e813/pydantic_core-2.34.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3bb7a0d84fea2629d10adcf46470ef48ac786976f6c3130a441a260beb4dbad", size = 2115352 }, + { url = "https://files.pythonhosted.org/packages/89/7b/c899ecad0773d1de65e531bb7432886d5d83eeed56e2ccebe0b0434eddeb/pydantic_core-2.34.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:596ea8427dde3721b829ce37e9166efb65c01e25e1977008702b5b081124cec5", size = 2070414 }, + { url = "https://files.pythonhosted.org/packages/ed/6c/b866f1568d436b5f74289225d9e0a5904c9d56ac4fb1929893e7a05253e4/pydantic_core-2.34.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:b50cd1cd02c525c44d0b4127833436b491f71a6a2ef93d503e29b0b672fe5acb", size = 2248628 }, + { url = "https://files.pythonhosted.org/packages/09/5b/bd0efb630476c01f46fc9de8af59a1261bd2e17a8d6e70be2166ce68bd42/pydantic_core-2.34.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a4a44c73e5e58113c1b6a4fe2ab7a151a9d6a0ab612a8e107a6d557c980853f1", size = 2248738 }, + { url = "https://files.pythonhosted.org/packages/7b/c2/3542e28e1238cef011f0058d156c4473e921f6ea08cd2c4f9bf77bec1492/pydantic_core-2.34.1-cp313-cp313-win32.whl", hash = "sha256:6d908cdc6ee50c463f64792892b7980bad8eea0c231fd09a7db7d8375aeb350e", size = 1906826 }, + { url = "https://files.pythonhosted.org/packages/2b/ac/713daff8e6df9ac565a44ea066dd37c3a3ae7171ef93329f7c782cff9bae/pydantic_core-2.34.1-cp313-cp313-win_amd64.whl", hash = "sha256:83343e0a9b0e929231bde8d2d7d5dd93dd3af22556bc9a538d729a9ba6824cf4", size = 1971800 }, + { url = "https://files.pythonhosted.org/packages/99/7d/7df9b739c42e499acc832e6a06fd27b97cc6f374224e9053140c2245edc0/pydantic_core-2.34.1-cp313-cp313-win_arm64.whl", hash = "sha256:92757e71447ff68fa63091c5c4a5f595225fba3f427e987516db56f39568b38e", size = 1903059 }, + { url = "https://files.pythonhosted.org/packages/c1/ee/9db88f26f7f284550dfa7467533e37392ed007b641d95e34bc259ad00895/pydantic_core-2.34.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:32ff9e9e07f80815115466a586f5b437679802cdc79ff58935fc0a4b4b6de77f", size = 1811340 }, + { url = "https://files.pythonhosted.org/packages/bd/83/8c64954765295648af41130f04fb7f490c11e89cdfe1f06a9767fa8bf485/pydantic_core-2.34.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00643ebd798a05111218e9fe17f8b0f782e7cb94cd427b3118938563a81872a5", size = 1986955 }, + { url = "https://files.pythonhosted.org/packages/ac/41/eaa43c0b1a506aba0fae4dae8095cb363caf5b79e9aad284f09aafd2b0eb/pydantic_core-2.34.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b1f5392e6a615a93f8ba2f71454c096798dd4d944ca27bbca793cfb0e3faaf1d", size = 1942120 }, + { url = "https://files.pythonhosted.org/packages/2d/4a/0500862bd02a0c0f6517a266dddd587e299a4ac9cf6715b1a10565fa3078/pydantic_core-2.34.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8a7b34f16772a7b02944c1910125fb0b0c89d34c5045e6ea0746044722b592d3", size = 2038228 }, + { url = "https://files.pythonhosted.org/packages/60/1a/3cbff2c0ad96f78b38118dc6a347c0e12a7aede8dd9ad67d52651b5fc9f4/pydantic_core-2.34.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6e1af10b5c6b91732bc8385b472b8b68c120dab52564a0f195409a7020ad3f58", size = 1872870 }, + { url = "https://files.pythonhosted.org/packages/e1/cd/7a6bb217ad3b7f730dff4abd36f1e7cf6032025408d15dcef01e0d3d9a97/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03c1722c3755b7fbaafcf7e8d331803c6109f96b4df52eb91ea9e1e5f24ee96a", size = 1906430 }, + { url = "https://files.pythonhosted.org/packages/d6/b2/54ab389304567b841d6f366e6da2ca53e9b0c923da4029da351c9a545dc3/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:967a7dc51597a1cc6a0782abf069e549e183101cb3c129a5a37a8e12a956306f", size = 1992407 }, + { url = "https://files.pythonhosted.org/packages/3c/8f/50e4985198fd00af37c697d4d8b98eaf8a2abf5e28a9e4c8945d964c3e97/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b20ff6e14af8c5e3073304c4ec818a9f20bd92ce9d6d5716982803a5bb0851b6", size = 2142490 }, + { url = "https://files.pythonhosted.org/packages/8d/51/ba611f3d687e58fa85246edaa806a916e1694afaeba7bce540504e2b23ad/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c21506d9761d51972d3408c45e38ab44e7bdd244cc7e1e2fcd4af0cd6322cb33", size = 2744301 }, + { url = "https://files.pythonhosted.org/packages/f9/09/39e701ce1a5ae6548ac41922ed42da1511827a835a21ed1d5a461e49fb0a/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57e914ce885275b5c9d9641aabc30f2e70945eec65e0e1a915b0242c58a0a5fe", size = 2016408 }, + { url = "https://files.pythonhosted.org/packages/c1/03/ce681227b9d4ad410936b2a6c0cb20cf201a2d0332c337828440b31338f9/pydantic_core-2.34.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:390c1c17c3eb47ccb0180af002881294d87203fd01ab617902a6eb740713c017", size = 2121256 }, + { url = "https://files.pythonhosted.org/packages/cf/55/8a9cc2104acb11b76de2765c7969bfc79bd7d86b89cb07d783ed14d68f3b/pydantic_core-2.34.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d38504ecbf67b7fe60ae2db028e1b1a54df92a2b899628c82b3edfe885a88059", size = 2083871 }, + { url = "https://files.pythonhosted.org/packages/4b/89/07b245b60c3add551d20338bd6cda7005be98f5c8ec1062834726fe89f66/pydantic_core-2.34.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:b010fd1d65b536552fc07633b84538300847dc0544ebfea06986017909b4b65e", size = 2254926 }, + { url = "https://files.pythonhosted.org/packages/77/cc/6cef2ec380e57e20bae11c92495267cb46cff1df28a7a6e278b92532ed0c/pydantic_core-2.34.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8da35468c5b54142f503b2a7edb0a2252cb6e21206371ab56cb709f064215500", size = 2253401 }, + { url = "https://files.pythonhosted.org/packages/81/60/10f517468900879f6dc0afae282d278d0b793e623858210e25933ae1d01c/pydantic_core-2.34.1-cp39-cp39-win32.whl", hash = "sha256:4b667f9285c0ffccd17d1ac668da776c5da4c3957391c98a0c4c8ff5f378f040", size = 1918322 }, + { url = "https://files.pythonhosted.org/packages/5f/58/1e0cfd39b72a52fed5220b5ed5bbba1924d1c0c3cce5e0836a693bb6e26d/pydantic_core-2.34.1-cp39-cp39-win_amd64.whl", hash = "sha256:648a65762994cab52b14c40058290fe0dbbd2ce907b42d7ab7b565fffcfc8617", size = 1962585 }, + { url = "https://files.pythonhosted.org/packages/bf/f8/50803d0099af8f490bb6bcdecbe220df24c6472f19bc6adbc4af4ca5103a/pydantic_core-2.34.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:66406c996569bfaa9d6938ccbc43695bc19ee3185dd7ba3e08615e04ca3a0fbe", size = 2035023 }, + { url = "https://files.pythonhosted.org/packages/33/1a/6073fd39aa6460d6890a3a84e277393b45765f2c872fd633374b3c6d08f7/pydantic_core-2.34.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a1215a14a145630ce00135d9ea696b5c587f0d166579cef541e8743530dbe134", size = 1867929 }, + { url = "https://files.pythonhosted.org/packages/b0/4b/4f96ef0786bc7176f26e67f809e7350ea887598a2372b9e69bb9fec00f48/pydantic_core-2.34.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb5882ad329cec0b58f006840be4b981938303de5ec72e61160b66f86515bd58", size = 1900902 }, + { url = "https://files.pythonhosted.org/packages/5d/ca/c9e790808f0b217234f79c8a379c5783a6cc5350504e614f24f01b0d66aa/pydantic_core-2.34.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:215e185af1ace9682dcaf3bde93d2c78256016ebcfb736b47ed4f58defcfd7bf", size = 2077429 }, + { url = "https://files.pythonhosted.org/packages/6b/b8/f1cb581892dc96820967a894a0205ebf405f3aff73a08dea6312d223c5a7/pydantic_core-2.34.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:911024e92269e0da607eeee32ab5f6e460e8afe74e0859a353d8f77a09440ab2", size = 2116895 }, + { url = "https://files.pythonhosted.org/packages/e4/37/555f5cbe5d62457260e85cf91525bd1186f697303db0056d9ae664292cdc/pydantic_core-2.34.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b1073b3688aa0b1834e54a2e4f1aaa72306bbe72138983a0bd4bf3c8ac9751d5", size = 2077587 }, + { url = "https://files.pythonhosted.org/packages/b5/a0/b0a359ee9b3bb9d0a838b9891bd3f5d2ff3afe993500860c4b29111c6812/pydantic_core-2.34.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:16c73d64c4ff64a8c107bd779dfc957f6d5add4f14d348441a836ec23d620cf4", size = 2247416 }, + { url = "https://files.pythonhosted.org/packages/33/cf/b03a86dbc7f00fdac44ac11045ceb80db04fa91a477fa23562ea1a1bc142/pydantic_core-2.34.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ca7d1b95b1bca481fb6a8c0ae684a053eef0d6da9e819f6361fd1da7bc1c54ad", size = 2248907 }, + { url = "https://files.pythonhosted.org/packages/a4/88/7031a9395b20093e128676bf697b6dc96c07b21ae2c5611ef4e70fad8631/pydantic_core-2.34.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:286981cc3a187e128d5223f37b5660dcf7021f16f4164dee28c4ff78e0fcd040", size = 2075820 }, + { url = "https://files.pythonhosted.org/packages/04/b2/27724854768e29f8f6c9975dc94851cbf579ef4ca6063e046b7a91ffb79f/pydantic_core-2.34.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7c848c98ceaf3d1d6369814565da0b2f4aa1cd8b3bf28767261f54a13b8b387d", size = 2036183 }, + { url = "https://files.pythonhosted.org/packages/c6/18/ff9d9e91d333ba93ea55477196b28f9cbc712668a84817c1ae5da10bb69f/pydantic_core-2.34.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:c80e6d594122345b41659e5d5ad9cb5d732d81a1da83c336e1b13f55794abafe", size = 1868773 }, + { url = "https://files.pythonhosted.org/packages/10/49/5ec5bb4c7c530853e54ec4f1fde0ec216c44abb3b7b70c8e2e63e21b60c3/pydantic_core-2.34.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64b8fa876a63cf806ad0d13dc7205b47512c90f192df2c1ad6a7f49a90015003", size = 1900859 }, + { url = "https://files.pythonhosted.org/packages/93/84/9ee32d2468d0f7df469d7f927d63950ebbf4493898c4f8e88f363c505828/pydantic_core-2.34.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2d8176efe66d54a5f7d3052b394ede8c0d2bb80144d1bf6c9b30a9d1fdfaea", size = 2077388 }, + { url = "https://files.pythonhosted.org/packages/01/56/b43444372fb9fd88ae867d907b184b8776e353dacf6d4c1f80a350bc4f82/pydantic_core-2.34.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:69eb11a0bcbdb49c04494980206e9449d361b78b35ad64478d9ab15db837bec9", size = 2117737 }, + { url = "https://files.pythonhosted.org/packages/a0/37/1b5da00af59ed09eafebda1d8bc3c816b2777b64d054f9203d05c6445630/pydantic_core-2.34.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b30d9d48390deb789c84205fc76ad6c27b00819d60dc955186e9387c55370413", size = 2077383 }, + { url = "https://files.pythonhosted.org/packages/2e/ac/de6883ac0617243370cfed67ba785aaae27bea5e3369ed329ddadbba360b/pydantic_core-2.34.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e3da84e67845c83e88c7e96df3e487a16752753f19241d17e887f1f39b7a851c", size = 2248548 }, + { url = "https://files.pythonhosted.org/packages/c3/9e/3b4f95aca1742eaa064e402f2388a2f1013f2214f7fb0f4f6155eff3dec3/pydantic_core-2.34.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:9b3946e2fb4a7821b59a70193530f463dd532fd6d25f13e9c6521df736906777", size = 2248760 }, + { url = "https://files.pythonhosted.org/packages/f8/4d/06e5db4b171a708c35149b475aa8823a3553c9d4b8b3d6afc1736d5665bc/pydantic_core-2.34.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:46b2ae1824bb07939f77d4a390a1a0a5b0838e34ac9427cf21c89a7a925f1ad7", size = 2075955 }, + { url = "https://files.pythonhosted.org/packages/01/a7/3d3347ef8685efd48f0f9044e2ab44a33865ba2bd48e9c297aab9990a636/pydantic_core-2.34.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9fd3ae017ad680b744ffe257627c3503889d2a6ef2b7d1493483e9faccf7abc7", size = 2035248 }, + { url = "https://files.pythonhosted.org/packages/7c/00/3f8e0632c27ce1d969b5e9caf8d5d609719c2951df786ad5616f7e8c1b34/pydantic_core-2.34.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:18ff148029c246e3ca36164ca07fa3d0d7c99d2feab98e12bce97da63e67bcdb", size = 1868441 }, + { url = "https://files.pythonhosted.org/packages/0d/0a/2f02f1e1aed3d3aebbabe560a6e0ca5de7ea080aeebded29a4c5cf05c99d/pydantic_core-2.34.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7c7ac737d1544615403e8a98956fc02b7505f713c531eab7c4b265618e82af3", size = 1901157 }, + { url = "https://files.pythonhosted.org/packages/0e/cd/f601db334adf27808b6179415538cc3581f542daacd3eb931a3b32d1a100/pydantic_core-2.34.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d8f64e49175f98416b7193c818741916dc29783256f684324cee262a1b35d57", size = 2078186 }, + { url = "https://files.pythonhosted.org/packages/b2/35/7c5bf738ce45ad9943aca8d6fde04db9e43c5cb17b7248e2d07cb1546458/pydantic_core-2.34.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e19bb6d38d5259b20de62618928fe33d60c4b15975f891503e0703776d23e9f7", size = 2117064 }, + { url = "https://files.pythonhosted.org/packages/bb/5d/ff9d24da5991f22ce44e6b101c672a439f97be1f3f0f433334d945ae7aa2/pydantic_core-2.34.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ee4491ebcee7f58054585fedeaca653e9822b97445e9b1700ed29846a963f210", size = 2078212 }, + { url = "https://files.pythonhosted.org/packages/0b/b7/71cda0671a13529f9d5d2b2c92113e40eb759cdcc661abd921393344ed47/pydantic_core-2.34.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:08a5b5da50a28a5bae06120aaae7ff086b19a870c74f6ab110326893252822f8", size = 2247591 }, + { url = "https://files.pythonhosted.org/packages/c0/20/2a2199fd7b2b3b238df64bf42198450a45d7891a1115e539a99d6b4ed5d8/pydantic_core-2.34.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:a85f3126af1cf983f252738209713f625982ede1557e1991feb6e817c1116b23", size = 2249304 }, + { url = "https://files.pythonhosted.org/packages/ea/09/3404f068c7b4884e6c9c557dac52a04e575b1bf25911e99a70b34ac2daf7/pydantic_core-2.34.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:6074b7d2bc969caf9669303e815f52a448ed8f107f17e2905474e7b956a64481", size = 2076010 }, ] [[package]] From 248fba664397dd1e04bcfa8743f213106f5951a1 Mon Sep 17 00:00:00 2001 From: Samuel Rigaud <46346622+s-rigaud@users.noreply.github.com> Date: Tue, 22 Apr 2025 02:35:12 -0400 Subject: [PATCH 032/106] Fix typos (#11784) Co-authored-by: Samuel Rigaud --- HISTORY.md | 2 +- docs/concepts/experimental.md | 2 +- docs/concepts/models.md | 2 +- pydantic/_internal/_namespace_utils.py | 2 +- pydantic/v1/types.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 25550b7c5d3..ef28a70d60c 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2584,7 +2584,7 @@ for their kind support. Thank you to pydantic's sponsors: @matin, @tiangolo, @chdsbd, @jorgecarleitao, and 1 anonymous sponsor for their kind support. * Modify validators for `conlist` and `conset` to not have `always=True`, [#1682](https://github.com/pydantic/pydantic/pull/1682) by @samuelcolvin -* add port check to `AnyUrl` (can't exceed 65536) ports are 16 insigned bits: `0 <= port <= 2**16-1` src: [rfc793 header format](https://tools.ietf.org/html/rfc793#section-3.1), [#1654](https://github.com/pydantic/pydantic/pull/1654) by @flapili +* add port check to `AnyUrl` (can't exceed 65536) ports are 16 unsigned bits: `0 <= port <= 2**16-1` src: [rfc793 header format](https://tools.ietf.org/html/rfc793#section-3.1), [#1654](https://github.com/pydantic/pydantic/pull/1654) by @flapili * Document default `regex` anchoring semantics, [#1648](https://github.com/pydantic/pydantic/pull/1648) by @yurikhan * Use `chain.from_iterable` in class_validators.py. This is a faster and more idiomatic way of using `itertools.chain`. Instead of computing all the items in the iterable and storing them in memory, they are computed one-by-one and never diff --git a/docs/concepts/experimental.md b/docs/concepts/experimental.md index 0bf891b875c..290c593b710 100644 --- a/docs/concepts/experimental.md +++ b/docs/concepts/experimental.md @@ -40,7 +40,7 @@ Each step in the pipeline can be: -Note that the following example attempts to be exhaustive at the cost of complexity: if you find yourself writing this many transformations in type annotations you may want to consider having a `UserIn` and `UserOut` model (example below) or similar where you make the transformations via idomatic plain Python code. +Note that the following example attempts to be exhaustive at the cost of complexity: if you find yourself writing this many transformations in type annotations you may want to consider having a `UserIn` and `UserOut` model (example below) or similar where you make the transformations via idiomatic plain Python code. These APIs are meant for situations where the code savings are significant and the added complexity is relatively small. ```python diff --git a/docs/concepts/models.md b/docs/concepts/models.md index 771d050d6e6..bbdfdac1201 100644 --- a/docs/concepts/models.md +++ b/docs/concepts/models.md @@ -691,7 +691,7 @@ Here are some additional notes on the behavior of [`model_construct()`][pydantic the `__pydantic_extra__` dictionary and saved to the model's `__dict__` attribute. * For models with [`extra`][pydantic.ConfigDict.extra] set to `'ignore'`, data not corresponding to fields will be ignored — that is, not stored in `__pydantic_extra__` or `__dict__` on the instance. - * Unlike when instiating the model with validation, a call to [`model_construct()`][pydantic.main.BaseModel.model_construct] with [`extra`][pydantic.ConfigDict.extra] set to `'forbid'` doesn't raise an error in the presence of data not corresponding to fields. Rather, said input data is simply ignored. + * Unlike when instantiating the model with validation, a call to [`model_construct()`][pydantic.main.BaseModel.model_construct] with [`extra`][pydantic.ConfigDict.extra] set to `'forbid'` doesn't raise an error in the presence of data not corresponding to fields. Rather, said input data is simply ignored. ## Generic models diff --git a/pydantic/_internal/_namespace_utils.py b/pydantic/_internal/_namespace_utils.py index 781dfa2d7c4..af0cddb03d6 100644 --- a/pydantic/_internal/_namespace_utils.py +++ b/pydantic/_internal/_namespace_utils.py @@ -134,7 +134,7 @@ def ns_for_function(obj: Callable[..., Any], parent_namespace: MappingNamespace locals_list.append({t.__name__: t for t in type_params}) - # What about short-cirtuiting to `obj.__globals__`? + # What about short-circuiting to `obj.__globals__`? globalns = get_module_ns_of(obj) return NamespacesTuple(globalns, LazyLocalNamespace(*locals_list)) diff --git a/pydantic/v1/types.py b/pydantic/v1/types.py index 0cd789a4456..e1840d99f79 100644 --- a/pydantic/v1/types.py +++ b/pydantic/v1/types.py @@ -829,7 +829,7 @@ class JsonWrapper: class JsonMeta(type): def __getitem__(self, t: Type[Any]) -> Type[JsonWrapper]: if t is Any: - return Json # allow Json[Any] to replecate plain Json + return Json # allow Json[Any] to replicate plain Json return _registered(type('JsonWrapperValue', (JsonWrapper,), {'inner_type': t})) From bf068661cf3fdadb93881762abe6fdc8a2592966 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 24 Apr 2025 13:25:54 +0200 Subject: [PATCH 033/106] Update information about maintainers (#11790) --- .github/actions/people/people.py | 1 - docs/concepts/experimental.md | 2 +- pyproject.toml | 7 ++++--- release/README.md | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/people/people.py b/.github/actions/people/people.py index e9c1795df75..98008755372 100644 --- a/.github/actions/people/people.py +++ b/.github/actions/people/people.py @@ -531,7 +531,6 @@ def get_top_users( 'hramezani', 'Kludex', 'davidhewitt', - 'sydney-runkle', 'alexmojaki', 'Viicos', } diff --git a/docs/concepts/experimental.md b/docs/concepts/experimental.md index 290c593b710..084728c3cdc 100644 --- a/docs/concepts/experimental.md +++ b/docs/concepts/experimental.md @@ -38,7 +38,7 @@ Each step in the pipeline can be: * A constraint step that checks the data against a condition * A predicate step that checks the data against a condition and raises an error if it returns `False` - + Note that the following example attempts to be exhaustive at the cost of complexity: if you find yourself writing this many transformations in type annotations you may want to consider having a `UserIn` and `UserOut` model (example below) or similar where you make the transformations via idiomatic plain Python code. These APIs are meant for situations where the code savings are significant and the added complexity is relatively small. diff --git a/pyproject.toml b/pyproject.toml index d4cce4aef85..fc22ada4b48 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,8 +16,9 @@ authors = [ {name = 'Marcelo Trylesinski', email = 'marcelotryle@gmail.com'}, {name = 'Sydney Runkle', email = 'sydneymarierunkle@gmail.com'}, {name = 'David Hewitt', email = 'mail@davidhewitt.io'}, - {name = 'Alex Hall', email='alex.mojaki@gmail.com'}, - {name = 'Victorien Plot', email='contact@vctrn.dev'}, + {name = 'Alex Hall', email = 'alex.mojaki@gmail.com'}, + {name = 'Victorien Plot', email = 'contact@vctrn.dev'}, + {name = 'Douwe Maan', email = 'hi@douwe.me'}, ] license = 'MIT' license-files = ['LICENSE'] @@ -184,7 +185,7 @@ default-groups = ['dev'] # configuring https://github.com/pydantic/hooky [tool.hooky] -reviewers = ['sydney-runkle'] +reviewers = ['Viicos', 'DouweM'] require_change_file = false unconfirmed_label = 'pending' diff --git a/release/README.md b/release/README.md index b75aba5a788..7768722e1cc 100644 --- a/release/README.md +++ b/release/README.md @@ -46,4 +46,4 @@ To create a new release: - the body should contain: - a copy-paste of the `HISTORY.md` section you prepared previously, plus - a full changelog link in the form `Full Changelog: https://github.com/pydantic/pydantic/compare/v{PREV_VERSION}...v{VERSION}/` -7. Ask @sydney-runkle, @samuelcolvin, or @dmontagu to approve the release once CI has run. +7. Ask @samuelcolvin or @dmontagu to approve the release once CI has run. From 7df0816017c20a7714507f61e83572cd77259ea4 Mon Sep 17 00:00:00 2001 From: Kalyan R Date: Mon, 28 Apr 2025 13:10:51 +0530 Subject: [PATCH 034/106] Update monthly download count in documentation (#11799) Signed-off-by: kalyanr --- docs/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.md b/docs/index.md index d3609d842dc..71bd51c1d83 100644 --- a/docs/index.md +++ b/docs/index.md @@ -59,7 +59,7 @@ Fast and extensible, Pydantic plays nicely with your linters/IDE/brain. Define h ## Why use Pydantic? -- **Powered by type hints** — with Pydantic, schema validation and serialization are controlled by type annotations; less to learn, less code to write, and integration with your IDE and static analysis tools. [Learn more…](why.md#type-hints) +- **Powered by type hints** — with Pydantic, schema validation and serialization are controlled by type annotations; less to learn, less code to write, and seamless integration with your IDE and static analysis tools. [Learn more…](why.md#type-hints) - **Speed** — Pydantic's core validation logic is written in Rust. As a result, Pydantic is among the fastest data validation libraries for Python. [Learn more…](why.md#performance) - **JSON Schema** — Pydantic models can emit JSON Schema, allowing for easy integration with other tools. [Learn more…](why.md#json-schema) - **Strict** and **Lax** mode — Pydantic can run in either strict mode (where data is not converted) or lax mode where Pydantic tries to coerce data to the correct type where appropriate. [Learn more…](why.md#strict-lax) @@ -67,7 +67,7 @@ Fast and extensible, Pydantic plays nicely with your linters/IDE/brain. Define h - **Customisation** — Pydantic allows custom validators and serializers to alter how data is processed in many powerful ways. [Learn more…](why.md#customisation) - **Ecosystem** — around 8,000 packages on PyPI use Pydantic, including massively popular libraries like _FastAPI_, _huggingface_, _Django Ninja_, _SQLModel_, & _LangChain_. [Learn more…](why.md#ecosystem) -- **Battle tested** — Pydantic is downloaded over 70M times/month and is used by all FAANG companies and 20 of the 25 largest companies on NASDAQ. If you're trying to do something with Pydantic, someone else has probably already done it. [Learn more…](why.md#using-pydantic) +- **Battle tested** — Pydantic is downloaded over 360M times/month and is used by all FAANG companies and 20 of the 25 largest companies on NASDAQ. If you're trying to do something with Pydantic, someone else has probably already done it. [Learn more…](why.md#using-pydantic) [Installing Pydantic](install.md) is as simple as: `pip install pydantic` From 455b43680c7c8b5ac21abee94d8095fe92fe4720 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Mon, 28 Apr 2025 20:53:50 +0200 Subject: [PATCH 035/106] Fix issue with recursive generic models (#11775) --- pydantic/_internal/_generate_schema.py | 15 +++++++++++++++ tests/test_generics.py | 20 ++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/pydantic/_internal/_generate_schema.py b/pydantic/_internal/_generate_schema.py index afd623cd5c6..61c8bb13efd 100644 --- a/pydantic/_internal/_generate_schema.py +++ b/pydantic/_internal/_generate_schema.py @@ -739,6 +739,21 @@ def _model_schema(self, cls: type[BaseModel]) -> core_schema.CoreSchema: if cls.__pydantic_fields_complete__ or cls is BaseModel_: fields = getattr(cls, '__pydantic_fields__', {}) else: + if not hasattr(cls, '__pydantic_fields__'): + # This happens when we have a loop in the schema generation: + # class Base[T](BaseModel): + # t: T + # + # class Other(BaseModel): + # b: 'Base[Other]' + # When we build fields for `Other`, we evaluate the forward annotation. + # At this point, `Other` doesn't have the model fields set. We create + # `Base[Other]`; model fields are successfully built, and we try to generate + # a schema for `t: Other`. As `Other.__pydantic_fields__` aren't set, we abort. + raise PydanticUndefinedAnnotation( + name=cls.__name__, + message=f'Class {cls.__name__!r} is not defined', + ) try: fields = rebuild_model_fields( cls, diff --git a/tests/test_generics.py b/tests/test_generics.py index c3ef699a19f..42992660f60 100644 --- a/tests/test_generics.py +++ b/tests/test_generics.py @@ -1704,6 +1704,26 @@ class Model2(BaseModel, Generic[S]): Model2[str].model_rebuild() +def test_generic_recursive_models_parametrized_with_model() -> None: + """https://github.com/pydantic/pydantic/issues/11748""" + + T = TypeVar('T') + + class Base(BaseModel, Generic[T]): + t: T + + class Other(BaseModel): + child: 'Optional[Base[Other]]' + + with pytest.raises(ValidationError): + # In v2.0-2.10, this unexpectedly validated fine (The core schema of Base[Other].t was an empty model). + # Since v2.11, building `Other` raised an unhandled exception. + # Now, it works as expected. + Base[Other].model_validate({'t': {}}) + + Base[Other].model_validate({'t': {'child': {'t': {'child': None}}}}) + + @pytest.mark.xfail(reason='Core schema generation is missing the M1 definition') def test_generic_recursive_models_inheritance() -> None: """https://github.com/pydantic/pydantic/issues/9969""" From 14a239cac9a6bd9593f8a9411366f132e6302915 Mon Sep 17 00:00:00 2001 From: Bartosz Karwacki <44468031+karta9821@users.noreply.github.com> Date: Mon, 28 Apr 2025 21:22:04 +0200 Subject: [PATCH 036/106] Fix qualified name comparison of private attributes during namespace inspection (#11803) Co-authored-by: Victorien <65306057+Viicos@users.noreply.github.com> --- pydantic/_internal/_model_construction.py | 2 +- tests/test_private_attributes.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/pydantic/_internal/_model_construction.py b/pydantic/_internal/_model_construction.py index 48baa63dfa3..124a495dde0 100644 --- a/pydantic/_internal/_model_construction.py +++ b/pydantic/_internal/_model_construction.py @@ -406,7 +406,7 @@ def inspect_namespace( # noqa C901 isinstance(value, type) and value.__module__ == namespace['__module__'] and '__qualname__' in namespace - and value.__qualname__.startswith(namespace['__qualname__']) + and value.__qualname__.startswith(f'{namespace["__qualname__"]}.') ): # `value` is a nested type defined in this namespace; don't error continue diff --git a/tests/test_private_attributes.py b/tests/test_private_attributes.py index 69b56f8d9ca..681af7ad528 100644 --- a/tests/test_private_attributes.py +++ b/tests/test_private_attributes.py @@ -1,4 +1,5 @@ import functools +from enum import Enum from typing import ClassVar, Generic, Optional, TypeVar import pytest @@ -577,3 +578,16 @@ class Model(BaseModel): # Checks below are just to ensure that everything is the same as in `test_private_attr_set_name` # The main check is that model class definition above doesn't crash assert Model()._private_attr == 2 + + +def test_private_attribute_not_skipped_during_ns_inspection() -> None: + # It is important for the enum name to start with the class name + # (it previously caused issues as we were comparing qualnames without + # taking this into account): + class Fullname(str, Enum): + pass + + class Full(BaseModel): + _priv: object = Fullname + + assert isinstance(Full._priv, ModelPrivateAttr) From 34bba45a676f4b68e533caac31c26100500a7562 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Mon, 28 Apr 2025 14:00:59 -0600 Subject: [PATCH 037/106] Add `__pydantic_on_complete__()` hook that is called once model is fully ready to be used (#11762) --- pydantic/_internal/_model_construction.py | 5 +++ pydantic/main.py | 34 ++++++++++++---- tests/test_main.py | 48 ++++++++++++++++++++++- 3 files changed, 78 insertions(+), 9 deletions(-) diff --git a/pydantic/_internal/_model_construction.py b/pydantic/_internal/_model_construction.py index 124a495dde0..b82b1719482 100644 --- a/pydantic/_internal/_model_construction.py +++ b/pydantic/_internal/_model_construction.py @@ -562,6 +562,7 @@ def complete_model_class( ns_resolver: NsResolver, *, raise_errors: bool = True, + call_on_complete_hook: bool = True, create_model_module: str | None = None, ) -> bool: """Finish building a model class. @@ -574,6 +575,7 @@ def complete_model_class( config_wrapper: The config wrapper instance. ns_resolver: The namespace resolver instance to use during schema building. raise_errors: Whether to raise errors. + call_on_complete_hook: Whether to call the `__pydantic_on_complete__` hook. create_model_module: The module of the class to be created, if created by `create_model`. Returns: @@ -667,6 +669,9 @@ def complete_model_class( cls.__pydantic_complete__ = True + if call_on_complete_hook: + cls.__pydantic_on_complete__() + return True diff --git a/pydantic/main.py b/pydantic/main.py index 05f22757f3f..e0c2bcdad48 100644 --- a/pydantic/main.py +++ b/pydantic/main.py @@ -613,17 +613,18 @@ def model_rebuild( Returns `None` if the schema is already "complete" and rebuilding was not required. If rebuilding _was_ required, returns `True` if rebuilding was successful, otherwise `False`. """ - if not force and cls.__pydantic_complete__: + already_complete = cls.__pydantic_complete__ + if already_complete and not force: return None + cls.__pydantic_complete__ = False + for attr in ('__pydantic_core_schema__', '__pydantic_validator__', '__pydantic_serializer__'): if attr in cls.__dict__: # Deleting the validator/serializer is necessary as otherwise they can get reused in # pydantic-core. Same applies for the core schema that can be reused in schema generation. delattr(cls, attr) - cls.__pydantic_complete__ = False - if _types_namespace is not None: rebuild_ns = _types_namespace elif _parent_namespace_depth > 0: @@ -642,6 +643,8 @@ def model_rebuild( _config.ConfigWrapper(cls.model_config, check=False), ns_resolver, raise_errors=raise_errors, + # If the model was already complete, we don't need to call the hook again. + call_on_complete_hook=not already_complete, ) @classmethod @@ -809,19 +812,36 @@ def __get_pydantic_json_schema__( @classmethod def __pydantic_init_subclass__(cls, **kwargs: Any) -> None: """This is intended to behave just like `__init_subclass__`, but is called by `ModelMetaclass` - only after the class is actually fully initialized. In particular, attributes like `model_fields` will - be present when this is called. + only after basic class initialization is complete. In particular, attributes like `model_fields` will + be present when this is called, but forward annotations are not guaranteed to be resolved yet, + meaning that creating an instance of the class may fail. This is necessary because `__init_subclass__` will always be called by `type.__new__`, and it would require a prohibitively large refactor to the `ModelMetaclass` to ensure that `type.__new__` was called in such a manner that the class would already be sufficiently initialized. This will receive the same `kwargs` that would be passed to the standard `__init_subclass__`, namely, - any kwargs passed to the class definition that aren't used internally by pydantic. + any kwargs passed to the class definition that aren't used internally by Pydantic. Args: **kwargs: Any keyword arguments passed to the class definition that aren't used internally - by pydantic. + by Pydantic. + + Note: + You may want to override [`__pydantic_on_complete__()`][pydantic.main.BaseModel.__pydantic_on_complete__] + instead, which is called once the class and its fields are fully initialized and ready for validation. + """ + pass + + @classmethod + def __pydantic_on_complete__(cls) -> None: + """This is called once the class and its fields are fully initialized and ready to be used. + + This typically happens when the class is created (just before + [`__pydantic_init_subclass__()`][pydantic.main.BaseModel.__pydantic_init_subclass__] is called on the superclass), + except when forward annotations are used that could not immediately be resolved. + In that case, it will be called later, when the model is rebuilt automatically or explicitly using + [`model_rebuild()`][pydantic.main.BaseModel.model_rebuild]. """ pass diff --git a/tests/test_main.py b/tests/test_main.py index 9be802105a3..001eefaf694 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -2737,7 +2737,7 @@ def val_x(cls, v: int, info: ValidationInfo) -> int: assert contexts == [] -def test_pydantic_init_subclass() -> None: +def test_pydantic_hooks() -> None: calls = [] class MyModel(BaseModel): @@ -2750,13 +2750,57 @@ def __pydantic_init_subclass__(cls, **kwargs): super().__pydantic_init_subclass__(**kwargs) calls.append((cls.__name__, '__pydantic_init_subclass__', kwargs)) + @classmethod + def __pydantic_on_complete__(cls): + calls.append((cls.__name__, '__pydantic_on_complete__', 'MyModel')) + + assert MyModel.__pydantic_complete__ + assert MyModel.__pydantic_fields_complete__ + assert calls == [ + ('MyModel', '__pydantic_on_complete__', 'MyModel'), + ] + calls = [] + class MySubModel(MyModel, a=1): - pass + sub: 'MySubSubModel' + + @classmethod + def __pydantic_on_complete__(cls): + calls.append((cls.__name__, '__pydantic_on_complete__', 'MySubModel')) + assert not MySubModel.__pydantic_complete__ + assert not MySubModel.__pydantic_fields_complete__ assert calls == [ ('MySubModel', '__init_subclass__', {'a': 1}), ('MySubModel', '__pydantic_init_subclass__', {'a': 1}), ] + calls = [] + + class MySubSubModel(MySubModel, b=1): + @classmethod + def __pydantic_on_complete__(cls): + calls.append((cls.__name__, '__pydantic_on_complete__', 'MySubSubModel')) + + assert MySubSubModel.__pydantic_complete__ + assert MySubSubModel.__pydantic_fields_complete__ + assert calls == [ + ('MySubSubModel', '__init_subclass__', {'b': 1}), + ('MySubSubModel', '__pydantic_on_complete__', 'MySubSubModel'), + ('MySubSubModel', '__pydantic_init_subclass__', {'b': 1}), + ] + calls = [] + + MySubModel.model_rebuild() + + assert MySubModel.__pydantic_complete__ + assert MySubModel.__pydantic_fields_complete__ + assert calls == [ + ('MySubModel', '__pydantic_on_complete__', 'MySubModel'), + ] + calls = [] + + MyModel.model_rebuild(force=True) + assert calls == [] def test_model_validate_with_context(): From d912c412adf7bc22c9b178245e8385c5ddfb74e9 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 29 Apr 2025 09:12:33 +0200 Subject: [PATCH 038/106] Make sure Pydantic dataclasses with slots and `validate_assignment` can be unpickled (#11769) --- pydantic/_internal/_dataclasses.py | 14 ++------------ pydantic/dataclasses.py | 30 ++++++++++++++++++++++++++++++ tests/test_dataclasses.py | 17 +++++++++++++++++ 3 files changed, 49 insertions(+), 12 deletions(-) diff --git a/pydantic/_internal/_dataclasses.py b/pydantic/_internal/_dataclasses.py index 954ab32f234..656ef781226 100644 --- a/pydantic/_internal/_dataclasses.py +++ b/pydantic/_internal/_dataclasses.py @@ -5,7 +5,7 @@ import dataclasses import typing import warnings -from functools import partial, wraps +from functools import partial from typing import Any, ClassVar from pydantic_core import ( @@ -178,22 +178,12 @@ def __init__(__dataclass_self__: PydanticDataclass, *args: Any, **kwargs: Any) - # We are about to set all the remaining required properties expected for this cast; # __pydantic_decorators__ and __pydantic_fields__ should already be set cls = typing.cast('type[PydanticDataclass]', cls) - # debug(schema) cls.__pydantic_core_schema__ = schema - cls.__pydantic_validator__ = validator = create_schema_validator( + cls.__pydantic_validator__ = create_schema_validator( schema, cls, cls.__module__, cls.__qualname__, 'dataclass', core_config, config_wrapper.plugin_settings ) cls.__pydantic_serializer__ = SchemaSerializer(schema, core_config) - - if config_wrapper.validate_assignment: - - @wraps(cls.__setattr__) - def validated_setattr(instance: Any, field: str, value: str, /) -> None: - validator.validate_assignment(instance, field, value) - - cls.__setattr__ = validated_setattr.__get__(None, cls) # type: ignore - cls.__pydantic_complete__ = True return True diff --git a/pydantic/dataclasses.py b/pydantic/dataclasses.py index f1ac051dab2..57008b7915b 100644 --- a/pydantic/dataclasses.py +++ b/pydantic/dataclasses.py @@ -3,6 +3,7 @@ from __future__ import annotations as _annotations import dataclasses +import functools import sys import types from typing import TYPE_CHECKING, Any, Callable, Generic, Literal, NoReturn, TypeVar, overload @@ -264,6 +265,35 @@ def create_dataclass(cls: type[Any]) -> type[PydanticDataclass]: **kwargs, ) + if config_wrapper.validate_assignment: + + @functools.wraps(cls.__setattr__) + def validated_setattr(instance: Any, field: str, value: str, /) -> None: + type(instance).__pydantic_validator__.validate_assignment(instance, field, value) + + cls.__setattr__ = validated_setattr.__get__(None, cls) # type: ignore + + if slots and not hasattr(cls, '__setstate__'): + # If slots is set, `pickle` (relied on by `copy.copy()`) will use + # `__setattr__()` to reconstruct the dataclass. However, the custom + # `__setattr__()` set above relies on `validate_assignment()`, which + # in turn expects all the field values to be already present on the + # instance, resulting in attribute errors. + # As such, we make use of `object.__setattr__()` instead. + # Note that we do so only if `__setstate__()` isn't already set (this is the + # case if on top of `slots`, `frozen` is used). + + # Taken from `dataclasses._dataclass_get/setstate()`: + def _dataclass_getstate(self: Any) -> list[Any]: + return [getattr(self, f.name) for f in dataclasses.fields(self)] + + def _dataclass_setstate(self: Any, state: list[Any]) -> None: + for field, value in zip(dataclasses.fields(self), state): + object.__setattr__(self, field.name, value) + + cls.__getstate__ = _dataclass_getstate # pyright: ignore[reportAttributeAccessIssue] + cls.__setstate__ = _dataclass_setstate # pyright: ignore[reportAttributeAccessIssue] + # This is an undocumented attribute to distinguish stdlib/Pydantic dataclasses. # It should be set as early as possible: cls.__is_pydantic_dataclass__ = True diff --git a/tests/test_dataclasses.py b/tests/test_dataclasses.py index f0a6960f652..c963ba733c5 100644 --- a/tests/test_dataclasses.py +++ b/tests/test_dataclasses.py @@ -2430,6 +2430,23 @@ class Model: assert dc.b == 'bar' +# Must be defined at the module level to be picklable: +@pydantic.dataclasses.dataclass(slots=True, config={'validate_assignment': True}) +class DataclassSlotsValidateAssignment: + a: int + + +@pytest.mark.skipif(sys.version_info < (3, 10), reason='slots are only supported for dataclasses in Python >= 3.10') +def test_dataclass_slots_validate_assignment(): + """https://github.com/pydantic/pydantic/issues/11768""" + + m = DataclassSlotsValidateAssignment(1) + m_pickle = pickle.loads(pickle.dumps(m)) + assert m_pickle.a == 1 + with pytest.raises(ValidationError): + m.a = 'not_an_int' + + @pytest.mark.parametrize( 'dataclass_decorator', [ From 5e300c333fd3b2edb989b8a6d116073fe737cc15 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 29 Apr 2025 13:33:16 +0200 Subject: [PATCH 039/106] Traverse `function-before` schemas during schema gathering (#11801) --- pydantic/_internal/_schema_gather.py | 5 +++++ tests/test_json_schema.py | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/pydantic/_internal/_schema_gather.py b/pydantic/_internal/_schema_gather.py index 3fb77bd4c70..fc2d806ead6 100644 --- a/pydantic/_internal/_schema_gather.py +++ b/pydantic/_internal/_schema_gather.py @@ -161,6 +161,11 @@ def traverse_schema(schema: AllSchemas, context: GatherContext) -> None: traverse_schema(schema['return_schema'], context) elif schema_type == 'computed-field': traverse_schema(schema['return_schema'], context) + elif schema_type == 'function-before': + if 'schema' in schema: + traverse_schema(schema['schema'], context) + if 'json_schema_input_schema' in schema: + traverse_schema(schema['json_schema_input_schema'], context) elif schema_type == 'function-plain': # TODO duplicate schema types for serializers and validators, needs to be deduplicated. if 'return_schema' in schema: diff --git a/tests/test_json_schema.py b/tests/test_json_schema.py index e74edaa052e..aef227260ac 100644 --- a/tests/test_json_schema.py +++ b/tests/test_json_schema.py @@ -6606,6 +6606,19 @@ class Model(BaseModel): } +def test_json_schema_input_type_inlined() -> None: + class Sub(BaseModel): + pass + + class Model(BaseModel): + sub: Annotated[object, BeforeValidator(lambda v: v, json_schema_input_type=Sub)] + + json_schema = Model.model_json_schema() + + assert 'Sub' in json_schema['$defs'] + assert json_schema['properties']['sub'] == {'$ref': '#/$defs/Sub'} + + @pytest.mark.parametrize( 'validator', [ From 5d9203db01de7fcfaab443ea28d2027a2881dc75 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 29 Apr 2025 22:04:16 +0200 Subject: [PATCH 040/106] Add documentation note about common pitfall with the annotated pattern (#11811) --- docs/concepts/fields.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/concepts/fields.md b/docs/concepts/fields.md index f43f28b9351..55723c41eaf 100644 --- a/docs/concepts/fields.md +++ b/docs/concepts/fields.md @@ -76,6 +76,24 @@ assignment form instead. # Invalid: [-1, 2] ``` + Be careful not mixing *field* and *type* metadata: + + ```python {test="skip" lint="skip"} + class Model(BaseModel): + field_bad: Annotated[int, Field(deprecated=True)] | None = None # (1)! + field_ok: Annotated[int | None, Field(deprecated=True)] = None # (2)! + ``` + + 1. The [`Field()`][pydantic.fields.Field] function is applied to `int` type, hence the + `deprecated` flag won't have any effect. While this may be confusing given that the name of + the [`Field()`][pydantic.fields.Field] function would imply it should apply to the field, + the API was designed when this function was the only way to provide metadata. You can + alternatively make use of the [`annotated_types`](https://github.com/annotated-types/annotated-types) + library which is now supported by Pydantic. + + 2. The [`Field()`][pydantic.fields.Field] function is applied to the "top-level" union type, + hence the `deprecated` flag will be applied to the field. + ## Default values Default values for fields can be provided using the normal assignment syntax or by providing a value From e039cbd954bccc45f8a941882f71b36ecd2a25ea Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 29 Apr 2025 22:20:15 +0200 Subject: [PATCH 041/106] Prepare release v2.11.4 (#11810) --- CITATION.cff | 4 ++-- HISTORY.md | 25 +++++++++++++++++++++++++ pydantic/version.py | 2 +- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 2436b75e8a9..3c2d2e4e71c 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -44,5 +44,5 @@ keywords: - hints - typing license: MIT -version: v2.11.3 -date-released: 2025-04-08 +version: v2.11.4 +date-released: 2025-04-29 diff --git a/HISTORY.md b/HISTORY.md index ef28a70d60c..4c22d6fdd11 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,28 @@ +## v2.11.4 (2025-04-29) + +[GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.4) + +### What's Changed + +#### Packaging + +* Bump `mkdocs-llmstxt` to v0.2.0 by @Viicos in [#11725](https://github.com/pydantic/pydantic/pull/11725) + +#### Changes + +* Allow config and bases to be specified together in `create_model()` by @Viicos in [#11714](https://github.com/pydantic/pydantic/pull/11714). + This change was backported as it was previously possible (although not meant to be supported) + to provide `model_config` as a field, which would make it possible to provide both configuration + and bases. + +#### Fixes + +* Remove generics cache workaround by @Viicos in [#11755](https://github.com/pydantic/pydantic/pull/11755) +* Remove coercion of decimal constraints by @Viicos in [#11772](https://github.com/pydantic/pydantic/pull/11772) +* Fix crash when expanding root type in the mypy plugin by @Viicos in [#11735](https://github.com/pydantic/pydantic/pull/11735) +* Fix issue with recursive generic models by @Viicos in [#11775](https://github.com/pydantic/pydantic/pull/11775) +* Traverse `function-before` schemas during schema gathering by @Viicos in [#11801](https://github.com/pydantic/pydantic/pull/11801) + ## v2.11.3 (2025-04-08) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.3) diff --git a/pydantic/version.py b/pydantic/version.py index c50e241b76d..847284cee28 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -6,7 +6,7 @@ __all__ = 'VERSION', 'version_info' -VERSION = '2.11.3' +VERSION = '2.11.4' """The version of Pydantic.""" From d992117243b3d44047ef37f9d7d75243bb98dbca Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 30 Apr 2025 12:28:28 +0200 Subject: [PATCH 042/106] Move some field logic out of the `GenerateSchema` class (#11733) Two reasons to move the field-related logic out: - Alleviate the `GenerateSchema` class, which is currently a big monster. More generally, `GenerateSchema` should only deal with core schema related logic, that is its main role should be to convert type hints -> core schemas. - Apply these updates as early as possible, when models are being created. This way (assuming annotations where resolved), users can safely inspect `FieldInfo.alias/title` even if `defer_build=True`. The same is applied for computed fields. Additionally, the protected namespaces logic was improved a bit. --- pydantic/_internal/_dataclasses.py | 6 +- pydantic/_internal/_decorators.py | 6 + pydantic/_internal/_fields.py | 178 +++++++++++++++++----- pydantic/_internal/_generate_schema.py | 172 +++------------------ pydantic/_internal/_model_construction.py | 2 + pydantic/_internal/_utils.py | 5 + pydantic/config.py | 16 +- pydantic/dataclasses.py | 1 + pydantic/fields.py | 50 +++++- tests/test_aliases.py | 11 ++ tests/test_computed_fields.py | 12 ++ tests/test_create_model.py | 6 +- tests/test_main.py | 15 +- 13 files changed, 268 insertions(+), 212 deletions(-) diff --git a/pydantic/_internal/_dataclasses.py b/pydantic/_internal/_dataclasses.py index 656ef781226..8518f9f84e8 100644 --- a/pydantic/_internal/_dataclasses.py +++ b/pydantic/_internal/_dataclasses.py @@ -63,15 +63,15 @@ class PydanticDataclass(StandardDataclass, typing.Protocol): def set_dataclass_fields( cls: type[StandardDataclass], + config_wrapper: _config.ConfigWrapper, ns_resolver: NsResolver | None = None, - config_wrapper: _config.ConfigWrapper | None = None, ) -> None: """Collect and set `cls.__pydantic_fields__`. Args: cls: The class. + config_wrapper: The config wrapper instance. ns_resolver: Namespace resolver to use when getting dataclass annotations. - config_wrapper: The config wrapper instance, defaults to `None`. """ typevars_map = get_standard_typevars_map(cls) fields = collect_dataclass_fields( @@ -124,7 +124,7 @@ def __init__(__dataclass_self__: PydanticDataclass, *args: Any, **kwargs: Any) - cls.__init__ = __init__ # type: ignore cls.__pydantic_config__ = config_wrapper.config_dict # type: ignore - set_dataclass_fields(cls, ns_resolver, config_wrapper=config_wrapper) + set_dataclass_fields(cls, config_wrapper=config_wrapper, ns_resolver=ns_resolver) if not _force_build and config_wrapper.defer_build: set_dataclass_mocks(cls) diff --git a/pydantic/_internal/_decorators.py b/pydantic/_internal/_decorators.py index 92880a49fcc..3a26e32f302 100644 --- a/pydantic/_internal/_decorators.py +++ b/pydantic/_internal/_decorators.py @@ -24,6 +24,7 @@ if TYPE_CHECKING: from ..fields import ComputedFieldInfo from ..functional_validators import FieldValidatorModes + from ._config import ConfigWrapper @dataclass(**slots_true) @@ -514,6 +515,11 @@ def build(model_dc: type[Any]) -> DecoratorInfos: # noqa: C901 (ignore complexi setattr(model_dc, name, value) return res + def update_from_config(self, config_wrapper: ConfigWrapper) -> None: + """Update the decorator infos from the configuration of the class they are attached to.""" + for name, computed_field_dec in self.computed_fields.items(): + computed_field_dec.info._update_from_config(config_wrapper, name) + def inspect_validator(validator: Callable[..., Any], mode: FieldValidatorModes) -> bool: """Look at a field or model validator function and determine whether it takes an info argument. diff --git a/pydantic/_internal/_fields.py b/pydantic/_internal/_fields.py index e9a7995c112..072e395604a 100644 --- a/pydantic/_internal/_fields.py +++ b/pydantic/_internal/_fields.py @@ -19,13 +19,14 @@ from pydantic import PydanticDeprecatedSince211 from pydantic.errors import PydanticUserError +from ..aliases import AliasGenerator from . import _generics, _typing_extra from ._config import ConfigWrapper from ._docs_extraction import extract_docstrings_from_cls from ._import_utils import import_cached_base_model, import_cached_field_info from ._namespace_utils import NsResolver from ._repr import Representation -from ._utils import can_be_positional +from ._utils import can_be_positional, get_first_not_none if TYPE_CHECKING: from annotated_types import BaseMetadata @@ -68,6 +69,49 @@ def __init__(self, metadata: Any): return _PydanticGeneralMetadata # type: ignore +def _check_protected_namespaces( + protected_namespaces: tuple[str | Pattern[str], ...], + ann_name: str, + bases: tuple[type[Any], ...], + cls_name: str, +) -> None: + BaseModel = import_cached_base_model() + + for protected_namespace in protected_namespaces: + ns_violation = False + if isinstance(protected_namespace, Pattern): + ns_violation = protected_namespace.match(ann_name) is not None + elif isinstance(protected_namespace, str): + ns_violation = ann_name.startswith(protected_namespace) + + if ns_violation: + for b in bases: + if hasattr(b, ann_name): + if not (issubclass(b, BaseModel) and ann_name in getattr(b, '__pydantic_fields__', {})): + raise ValueError( + f'Field {ann_name!r} conflicts with member {getattr(b, ann_name)}' + f' of protected namespace {protected_namespace!r}.' + ) + else: + valid_namespaces: list[str] = [] + for pn in protected_namespaces: + if isinstance(pn, Pattern): + if not pn.match(ann_name): + valid_namespaces.append(f're.compile({pn.pattern!r})') + else: + if not ann_name.startswith(pn): + valid_namespaces.append(f"'{pn}'") + + valid_namespaces_str = f'({", ".join(valid_namespaces)}{",)" if len(valid_namespaces) == 1 else ")"}' + + warnings.warn( + f'Field {ann_name!r} in {cls_name!r} conflicts with protected namespace {protected_namespace!r}.\n\n' + f"You may be able to solve this by setting the 'protected_namespaces' configuration to {valid_namespaces_str}.", + UserWarning, + stacklevel=5, + ) + + def _update_fields_from_docstrings(cls: type[Any], fields: dict[str, FieldInfo], use_inspect: bool = False) -> None: fields_docs = extract_docstrings_from_cls(cls, use_inspect=use_inspect) for ann_name, field_info in fields.items(): @@ -75,6 +119,86 @@ def _update_fields_from_docstrings(cls: type[Any], fields: dict[str, FieldInfo], field_info.description = fields_docs[ann_name] +def _apply_field_title_generator_to_field_info( + title_generator: Callable[[str, FieldInfo], str], + field_name: str, + field_info: FieldInfo, +): + if field_info.title is None: + title = title_generator(field_name, field_info) + if not isinstance(title, str): + raise TypeError(f'field_title_generator {title_generator} must return str, not {title.__class__}') + + field_info.title = title + + +def _apply_alias_generator_to_field_info( + alias_generator: Callable[[str], str] | AliasGenerator, field_name: str, field_info: FieldInfo +): + """Apply an alias generator to aliases on a `FieldInfo` instance if appropriate. + + Args: + alias_generator: A callable that takes a string and returns a string, or an `AliasGenerator` instance. + field_name: The name of the field from which to generate the alias. + field_info: The `FieldInfo` instance to which the alias generator is (maybe) applied. + """ + # Apply an alias_generator if + # 1. An alias is not specified + # 2. An alias is specified, but the priority is <= 1 + if ( + field_info.alias_priority is None + or field_info.alias_priority <= 1 + or field_info.alias is None + or field_info.validation_alias is None + or field_info.serialization_alias is None + ): + alias, validation_alias, serialization_alias = None, None, None + + if isinstance(alias_generator, AliasGenerator): + alias, validation_alias, serialization_alias = alias_generator.generate_aliases(field_name) + elif callable(alias_generator): + alias = alias_generator(field_name) + if not isinstance(alias, str): + raise TypeError(f'alias_generator {alias_generator} must return str, not {alias.__class__}') + + # if priority is not set, we set to 1 + # which supports the case where the alias_generator from a child class is used + # to generate an alias for a field in a parent class + if field_info.alias_priority is None or field_info.alias_priority <= 1: + field_info.alias_priority = 1 + + # if the priority is 1, then we set the aliases to the generated alias + if field_info.alias_priority == 1: + field_info.serialization_alias = get_first_not_none(serialization_alias, alias) + field_info.validation_alias = get_first_not_none(validation_alias, alias) + field_info.alias = alias + + # if any of the aliases are not set, then we set them to the corresponding generated alias + if field_info.alias is None: + field_info.alias = alias + if field_info.serialization_alias is None: + field_info.serialization_alias = get_first_not_none(serialization_alias, alias) + if field_info.validation_alias is None: + field_info.validation_alias = get_first_not_none(validation_alias, alias) + + +def update_field_from_config(config_wrapper: ConfigWrapper, field_name: str, field_info: FieldInfo) -> None: + """Update the `FieldInfo` instance from the configuration set on the model it belongs to. + + This will apply the title and alias generators from the configuration. + + Args: + config_wrapper: The configuration from the model. + field_name: The field name the `FieldInfo` instance is attached to. + field_info: The `FieldInfo` instance to update. + """ + field_title_generator = field_info.field_title_generator or config_wrapper.field_title_generator + if field_title_generator is not None: + _apply_field_title_generator_to_field_info(field_title_generator, field_name, field_info) + if config_wrapper.alias_generator is not None: + _apply_alias_generator_to_field_info(config_wrapper.alias_generator, field_name, field_info) + + def collect_model_fields( # noqa: C901 cls: type[BaseModel], config_wrapper: ConfigWrapper, @@ -106,7 +230,6 @@ def collect_model_fields( # noqa: C901 - If there is a field other than `root` in `RootModel`. - If a field shadows an attribute in the parent model. """ - BaseModel = import_cached_base_model() FieldInfo_ = import_cached_field_info() bases = cls.__bases__ @@ -130,37 +253,13 @@ def collect_model_fields( # noqa: C901 # protected namespaces (where `model_config` might be allowed as a field name) continue - for protected_namespace in config_wrapper.protected_namespaces: - ns_violation: bool = False - if isinstance(protected_namespace, Pattern): - ns_violation = protected_namespace.match(ann_name) is not None - elif isinstance(protected_namespace, str): - ns_violation = ann_name.startswith(protected_namespace) - - if ns_violation: - for b in bases: - if hasattr(b, ann_name): - if not (issubclass(b, BaseModel) and ann_name in getattr(b, '__pydantic_fields__', {})): - raise NameError( - f'Field "{ann_name}" conflicts with member {getattr(b, ann_name)}' - f' of protected namespace "{protected_namespace}".' - ) - else: - valid_namespaces = () - for pn in config_wrapper.protected_namespaces: - if isinstance(pn, Pattern): - if not pn.match(ann_name): - valid_namespaces += (f're.compile({pn.pattern})',) - else: - if not ann_name.startswith(pn): - valid_namespaces += (pn,) - - warnings.warn( - f'Field "{ann_name}" in {cls.__name__} has conflict with protected namespace "{protected_namespace}".' - '\n\nYou may be able to resolve this warning by setting' - f" `model_config['protected_namespaces'] = {valid_namespaces}`.", - UserWarning, - ) + _check_protected_namespaces( + protected_namespaces=config_wrapper.protected_namespaces, + ann_name=ann_name, + bases=bases, + cls_name=cls.__name__, + ) + if _typing_extra.is_classvar_annotation(ann_type): class_vars.add(ann_name) continue @@ -271,6 +370,10 @@ def collect_model_fields( # noqa: C901 ) fields[ann_name] = field_info + if field_info._complete: + # If not complete, this will be called in `rebuild_model_fields()`: + update_field_from_config(config_wrapper, ann_name, field_info) + if typevars_map: for field in fields.values(): if field._complete: @@ -300,6 +403,7 @@ def _warn_on_nested_alias_in_annotation(ann_type: type[Any], ann_name: str) -> N def rebuild_model_fields( cls: type[BaseModel], *, + config_wrapper: ConfigWrapper, ns_resolver: NsResolver, typevars_map: Mapping[TypeVar, Any], ) -> dict[str, FieldInfo]: @@ -332,6 +436,7 @@ def rebuild_model_fields( new_field = FieldInfo_.from_annotated_attribute(ann, assign, _source=AnnotationSource.CLASS) # The description might come from the docstring if `use_attribute_docstrings` was `True`: new_field.description = new_field.description if new_field.description is not None else existing_desc + update_field_from_config(config_wrapper, f_name, new_field) rebuilt_fields[f_name] = new_field return rebuilt_fields @@ -340,18 +445,18 @@ def rebuild_model_fields( def collect_dataclass_fields( cls: type[StandardDataclass], *, + config_wrapper: ConfigWrapper, ns_resolver: NsResolver | None = None, typevars_map: dict[Any, Any] | None = None, - config_wrapper: ConfigWrapper | None = None, ) -> dict[str, FieldInfo]: """Collect the fields of a dataclass. Args: cls: dataclass. + config_wrapper: The config wrapper instance. ns_resolver: Namespace resolver to use when getting dataclass annotations. Defaults to an empty instance. typevars_map: A dictionary mapping type variables to their concrete types. - config_wrapper: The config wrapper instance. Returns: The dataclass fields. @@ -410,6 +515,7 @@ def collect_dataclass_fields( ) fields[ann_name] = field_info + update_field_from_config(config_wrapper, ann_name, field_info) if field_info.default is not PydanticUndefined and isinstance( getattr(cls, ann_name, field_info), FieldInfo_ @@ -424,7 +530,7 @@ def collect_dataclass_fields( # Can't we juste use `_generics.replace_types`? field.apply_typevars_map(typevars_map) - if config_wrapper is not None and config_wrapper.use_attribute_docstrings: + if config_wrapper.use_attribute_docstrings: _update_fields_from_docstrings( cls, fields, diff --git a/pydantic/_internal/_generate_schema.py b/pydantic/_internal/_generate_schema.py index 61c8bb13efd..9bac622c97e 100644 --- a/pydantic/_internal/_generate_schema.py +++ b/pydantic/_internal/_generate_schema.py @@ -55,7 +55,7 @@ from typing_inspection import typing_objects from typing_inspection.introspection import AnnotationSource, get_literal_values, is_union_origin -from ..aliases import AliasChoices, AliasGenerator, AliasPath +from ..aliases import AliasChoices, AliasPath from ..annotated_handlers import GetCoreSchemaHandler, GetJsonSchemaHandler from ..config import ConfigDict, JsonDict, JsonEncoder, JsonSchemaExtraCallable from ..errors import PydanticSchemaGenerationError, PydanticUndefinedAnnotation, PydanticUserError @@ -87,7 +87,12 @@ inspect_validator, ) from ._docs_extraction import extract_docstrings_from_cls -from ._fields import collect_dataclass_fields, rebuild_model_fields, takes_validated_data_argument +from ._fields import ( + collect_dataclass_fields, + rebuild_model_fields, + takes_validated_data_argument, + update_field_from_config, +) from ._forward_ref import PydanticRecursiveRef from ._generics import get_standard_typevars_map, replace_types from ._import_utils import import_cached_base_model, import_cached_field_info @@ -300,15 +305,6 @@ def _add_custom_serialization_from_json_encoders( return schema -def _get_first_non_null(a: Any, b: Any) -> Any: - """Return the first argument if it is not None, otherwise return the second argument. - - Use case: serialization_alias (argument a) and alias (argument b) are both defined, and serialization_alias is ''. - This function will return serialization_alias, which is the first argument, even though it is an empty string. - """ - return a if a is not None else b - - class InvalidSchemaError(Exception): """The core schema is invalid.""" @@ -757,6 +753,7 @@ def _model_schema(self, cls: type[BaseModel]) -> core_schema.CoreSchema: try: fields = rebuild_model_fields( cls, + config_wrapper=self._config_wrapper, ns_resolver=self._ns_resolver, typevars_map=self._typevars_map or {}, ) @@ -1227,121 +1224,6 @@ def _generate_dc_field_schema( metadata=common_field['metadata'], ) - @staticmethod - def _apply_alias_generator_to_field_info( - alias_generator: Callable[[str], str] | AliasGenerator, field_info: FieldInfo, field_name: str - ) -> None: - """Apply an alias_generator to aliases on a FieldInfo instance if appropriate. - - Args: - alias_generator: A callable that takes a string and returns a string, or an AliasGenerator instance. - field_info: The FieldInfo instance to which the alias_generator is (maybe) applied. - field_name: The name of the field from which to generate the alias. - """ - # Apply an alias_generator if - # 1. An alias is not specified - # 2. An alias is specified, but the priority is <= 1 - if ( - field_info.alias_priority is None - or field_info.alias_priority <= 1 - or field_info.alias is None - or field_info.validation_alias is None - or field_info.serialization_alias is None - ): - alias, validation_alias, serialization_alias = None, None, None - - if isinstance(alias_generator, AliasGenerator): - alias, validation_alias, serialization_alias = alias_generator.generate_aliases(field_name) - elif isinstance(alias_generator, Callable): - alias = alias_generator(field_name) - if not isinstance(alias, str): - raise TypeError(f'alias_generator {alias_generator} must return str, not {alias.__class__}') - - # if priority is not set, we set to 1 - # which supports the case where the alias_generator from a child class is used - # to generate an alias for a field in a parent class - if field_info.alias_priority is None or field_info.alias_priority <= 1: - field_info.alias_priority = 1 - - # if the priority is 1, then we set the aliases to the generated alias - if field_info.alias_priority == 1: - field_info.serialization_alias = _get_first_non_null(serialization_alias, alias) - field_info.validation_alias = _get_first_non_null(validation_alias, alias) - field_info.alias = alias - - # if any of the aliases are not set, then we set them to the corresponding generated alias - if field_info.alias is None: - field_info.alias = alias - if field_info.serialization_alias is None: - field_info.serialization_alias = _get_first_non_null(serialization_alias, alias) - if field_info.validation_alias is None: - field_info.validation_alias = _get_first_non_null(validation_alias, alias) - - @staticmethod - def _apply_alias_generator_to_computed_field_info( - alias_generator: Callable[[str], str] | AliasGenerator, - computed_field_info: ComputedFieldInfo, - computed_field_name: str, - ): - """Apply an alias_generator to alias on a ComputedFieldInfo instance if appropriate. - - Args: - alias_generator: A callable that takes a string and returns a string, or an AliasGenerator instance. - computed_field_info: The ComputedFieldInfo instance to which the alias_generator is (maybe) applied. - computed_field_name: The name of the computed field from which to generate the alias. - """ - # Apply an alias_generator if - # 1. An alias is not specified - # 2. An alias is specified, but the priority is <= 1 - - if ( - computed_field_info.alias_priority is None - or computed_field_info.alias_priority <= 1 - or computed_field_info.alias is None - ): - alias, validation_alias, serialization_alias = None, None, None - - if isinstance(alias_generator, AliasGenerator): - alias, validation_alias, serialization_alias = alias_generator.generate_aliases(computed_field_name) - elif isinstance(alias_generator, Callable): - alias = alias_generator(computed_field_name) - if not isinstance(alias, str): - raise TypeError(f'alias_generator {alias_generator} must return str, not {alias.__class__}') - - # if priority is not set, we set to 1 - # which supports the case where the alias_generator from a child class is used - # to generate an alias for a field in a parent class - if computed_field_info.alias_priority is None or computed_field_info.alias_priority <= 1: - computed_field_info.alias_priority = 1 - - # if the priority is 1, then we set the aliases to the generated alias - # note that we use the serialization_alias with priority over alias, as computed_field - # aliases are used for serialization only (not validation) - if computed_field_info.alias_priority == 1: - computed_field_info.alias = _get_first_non_null(serialization_alias, alias) - - @staticmethod - def _apply_field_title_generator_to_field_info( - config_wrapper: ConfigWrapper, field_info: FieldInfo | ComputedFieldInfo, field_name: str - ) -> None: - """Apply a field_title_generator on a FieldInfo or ComputedFieldInfo instance if appropriate - Args: - config_wrapper: The config of the model - field_info: The FieldInfo or ComputedField instance to which the title_generator is (maybe) applied. - field_name: The name of the field from which to generate the title. - """ - field_title_generator = field_info.field_title_generator or config_wrapper.field_title_generator - - if field_title_generator is None: - return - - if field_info.title is None: - title = field_title_generator(field_name, field_info) # type: ignore - if not isinstance(title, str): - raise TypeError(f'field_title_generator {field_title_generator} must return str, not {title.__class__}') - - field_info.title = title - def _common_field_schema( # C901 self, name: str, field_info: FieldInfo, decorators: DecoratorInfos ) -> _CommonField: @@ -1389,7 +1271,6 @@ def set_discriminator(schema: CoreSchema) -> CoreSchema: schema = self._apply_field_serializers( schema, filter_field_decorator_info_by_field(decorators.field_serializers.values(), name) ) - self._apply_field_title_generator_to_field_info(self._config_wrapper, field_info, name) pydantic_js_updates, pydantic_js_extra = _extract_json_schema_info_from_field_info(field_info) core_metadata: dict[str, Any] = {} @@ -1397,10 +1278,6 @@ def set_discriminator(schema: CoreSchema) -> CoreSchema: core_metadata, pydantic_js_updates=pydantic_js_updates, pydantic_js_extra=pydantic_js_extra ) - alias_generator = self._config_wrapper.alias_generator - if alias_generator is not None: - self._apply_alias_generator_to_field_info(alias_generator, field_info, name) - if isinstance(field_info.validation_alias, (AliasChoices, AliasPath)): validation_alias = field_info.validation_alias.convert_to_aliases() else: @@ -1521,6 +1398,7 @@ def _typed_dict_schema(self, typed_dict_cls: Any, origin: Any) -> core_schema.Co fields: dict[str, core_schema.TypedDictField] = {} decorators = DecoratorInfos.build(typed_dict_cls) + decorators.update_from_config(self._config_wrapper) if self._config_wrapper.use_attribute_docstrings: field_docstrings = extract_docstrings_from_cls(typed_dict_cls, use_inspect=True) @@ -1550,7 +1428,8 @@ def _typed_dict_schema(self, typed_dict_cls: Any, origin: Any) -> core_schema.Co and field_name in field_docstrings ): field_info.description = field_docstrings[field_name] - self._apply_field_title_generator_to_field_info(self._config_wrapper, field_info, field_name) + update_field_from_config(self._config_wrapper, field_name, field_info) + fields[field_name] = self._generate_td_field_schema( field_name, field_info, decorators, required=required ) @@ -1643,7 +1522,10 @@ def _generate_parameter_schema( field = FieldInfo.from_annotation(annotation, _source=source) else: field = FieldInfo.from_annotated_attribute(annotation, default, _source=source) + assert field.annotation is not None, 'field.annotation should not be None when generating a schema' + update_field_from_config(self._config_wrapper, name, field) + with self.field_name_stack.push(name): schema = self._apply_annotations(field.annotation, [field]) @@ -1655,12 +1537,7 @@ def _generate_parameter_schema( parameter_schema['mode'] = mode if field.alias is not None: parameter_schema['alias'] = field.alias - else: - alias_generator = self._config_wrapper.alias_generator - if isinstance(alias_generator, AliasGenerator) and alias_generator.alias is not None: - parameter_schema['alias'] = alias_generator.alias(name) - elif callable(alias_generator): - parameter_schema['alias'] = alias_generator(name) + return parameter_schema def _generate_parameter_v3_schema( @@ -1689,6 +1566,7 @@ def _generate_parameter_v3_schema( field = FieldInfo.from_annotation(annotation, _source=source) else: field = FieldInfo.from_annotated_attribute(annotation, default, _source=source) + update_field_from_config(self._config_wrapper, name, field) with self.field_name_stack.push(name): schema = self._apply_annotations(field.annotation, [field]) @@ -1703,12 +1581,6 @@ def _generate_parameter_v3_schema( ) if field.alias is not None: parameter_schema['alias'] = field.alias - else: - alias_generator = self._config_wrapper.alias_generator - if isinstance(alias_generator, AliasGenerator) and alias_generator.alias is not None: - parameter_schema['alias'] = alias_generator.alias(name) - elif callable(alias_generator): - parameter_schema['alias'] = alias_generator(name) return parameter_schema @@ -1935,7 +1807,10 @@ def _dataclass_schema( code='dataclass-init-false-extra-allow', ) - decorators = dataclass.__dict__.get('__pydantic_decorators__') or DecoratorInfos.build(dataclass) + decorators = dataclass.__dict__.get('__pydantic_decorators__') + if decorators is None: + decorators = DecoratorInfos.build(dataclass) + decorators.update_from_config(self._config_wrapper) # Move kw_only=False args to the start of the list, as this is how vanilla dataclasses work. # Note that when kw_only is missing or None, it is treated as equivalent to kw_only=True args = sorted( @@ -2203,13 +2078,6 @@ def _computed_field_schema( filter_field_decorator_info_by_field(field_serializers.values(), d.cls_var_name), ) - alias_generator = self._config_wrapper.alias_generator - if alias_generator is not None: - self._apply_alias_generator_to_computed_field_info( - alias_generator=alias_generator, computed_field_info=d.info, computed_field_name=d.cls_var_name - ) - self._apply_field_title_generator_to_field_info(self._config_wrapper, d.info, d.cls_var_name) - pydantic_js_updates, pydantic_js_extra = _extract_json_schema_info_from_field_info(d.info) core_metadata: dict[str, Any] = {} update_core_metadata( diff --git a/pydantic/_internal/_model_construction.py b/pydantic/_internal/_model_construction.py index b82b1719482..533f178862a 100644 --- a/pydantic/_internal/_model_construction.py +++ b/pydantic/_internal/_model_construction.py @@ -153,6 +153,7 @@ def wrapped_model_post_init(self: BaseModel, context: Any, /) -> None: cls.__pydantic_setattr_handlers__ = {} cls.__pydantic_decorators__ = DecoratorInfos.build(cls) + cls.__pydantic_decorators__.update_from_config(config_wrapper) # Use the getattr below to grab the __parameters__ from the `typing.Generic` parent class if __pydantic_generic_metadata__: @@ -597,6 +598,7 @@ def complete_model_class( try: cls.__pydantic_fields__ = rebuild_model_fields( cls, + config_wrapper=config_wrapper, ns_resolver=ns_resolver, typevars_map=typevars_map, ) diff --git a/pydantic/_internal/_utils.py b/pydantic/_internal/_utils.py index f33464987bc..cf8528bc3ca 100644 --- a/pydantic/_internal/_utils.py +++ b/pydantic/_internal/_utils.py @@ -368,6 +368,11 @@ def all_identical(left: typing.Iterable[Any], right: typing.Iterable[Any]) -> bo return True +def get_first_not_none(a: Any, b: Any) -> Any: + """Return the first argument if it is not `None`, otherwise return the second argument.""" + return a if a is not None else b + + @dataclasses.dataclass(frozen=True) class SafeGetItemProxy: """Wrapper redirecting `__getitem__` to `get` with a sentinel value as default diff --git a/pydantic/config.py b/pydantic/config.py index 04ff0705192..ac8020e664d 100644 --- a/pydantic/config.py +++ b/pydantic/config.py @@ -666,9 +666,9 @@ class Model(BaseModel): except UserWarning as e: print(e) ''' - Field "model_dump_something" in Model has conflict with protected namespace "model_dump". + Field 'model_dump_something' in 'Model' conflicts with protected namespace 'model_dump'. - You may be able to resolve this warning by setting `model_config['protected_namespaces'] = ('model_validate',)`. + You may be able to solve this by setting the 'protected_namespaces' configuration to ('model_validate',). ''' ``` @@ -699,11 +699,11 @@ class Model(BaseModel): for warning in caught_warnings: print(f'{warning.message}') ''' - Field "also_protect_field" in Model has conflict with protected namespace "also_protect_". - You may be able to resolve this warning by setting `model_config['protected_namespaces'] = ('protect_me_', re.compile('^protect_this$'))`. + Field 'also_protect_field' in 'Model' conflicts with protected namespace 'also_protect_'. + You may be able to solve this by setting the 'protected_namespaces' configuration to ('protect_me_', re.compile('^protect_this$'))`. - Field "protect_this" in Model has conflict with protected namespace "re.compile('^protect_this$')". - You may be able to resolve this warning by setting `model_config['protected_namespaces'] = ('protect_me_', 'also_protect_')`. + Field 'protect_this' in 'Model' conflicts with protected namespace 're.compile('^protect_this$')'. + You may be able to solve this by setting the 'protected_namespaces' configuration to ('protect_me_', 'also_protect_')`. ''' ``` @@ -720,10 +720,10 @@ class Model(BaseModel): model_config = ConfigDict(protected_namespaces=('model_',)) - except NameError as e: + except ValueError as e: print(e) ''' - Field "model_validate" conflicts with member > of protected namespace "model_". + Field 'model_validate' conflicts with member > of protected namespace 'model_'. ''' ``` """ diff --git a/pydantic/dataclasses.py b/pydantic/dataclasses.py index 57008b7915b..cd130666e8f 100644 --- a/pydantic/dataclasses.py +++ b/pydantic/dataclasses.py @@ -217,6 +217,7 @@ def create_dataclass(cls: type[Any]) -> type[PydanticDataclass]: config_dict = config if config is not None else getattr(cls, '__pydantic_config__', None) config_wrapper = _config.ConfigWrapper(config_dict) decorators = _decorators.DecoratorInfos.build(cls) + decorators.update_from_config(config_wrapper) # Keep track of the original __doc__ so that we can restore it after applying the dataclasses decorator # Otherwise, classes with no __doc__ will have their signature added into the JSON schema description, diff --git a/pydantic/fields.py b/pydantic/fields.py index 3e9f9f5d9fb..7de98ba0f72 100644 --- a/pydantic/fields.py +++ b/pydantic/fields.py @@ -6,11 +6,11 @@ import inspect import sys import typing -from collections.abc import Mapping +from collections.abc import Callable, Mapping from copy import copy from dataclasses import Field as DataclassField from functools import cached_property -from typing import Annotated, Any, Callable, ClassVar, Literal, TypeVar, cast, overload +from typing import Annotated, Any, ClassVar, Literal, TypeVar, cast, overload from warnings import warn import annotated_types @@ -23,13 +23,14 @@ from . import types from ._internal import _decorators, _fields, _generics, _internal_dataclass, _repr, _typing_extra, _utils from ._internal._namespace_utils import GlobalsNamespace, MappingNamespace -from .aliases import AliasChoices, AliasPath +from .aliases import AliasChoices, AliasGenerator, AliasPath from .config import JsonDict from .errors import PydanticForbiddenQualifier, PydanticUserError from .json_schema import PydanticJsonSchemaWarning from .warnings import PydanticDeprecatedSince20 if typing.TYPE_CHECKING: + from ._internal._config import ConfigWrapper from ._internal._repr import ReprArgs else: # See PyCharm issues https://youtrack.jetbrains.com/issue/PY-21915 @@ -1288,11 +1289,11 @@ class ComputedFieldInfo: alias: str | None alias_priority: int | None title: str | None - field_title_generator: typing.Callable[[str, ComputedFieldInfo], str] | None + field_title_generator: Callable[[str, ComputedFieldInfo], str] | None description: str | None deprecated: Deprecated | str | bool | None examples: list[Any] | None - json_schema_extra: JsonDict | typing.Callable[[JsonDict], None] | None + json_schema_extra: JsonDict | Callable[[JsonDict], None] | None repr: bool @property @@ -1304,6 +1305,45 @@ def deprecation_message(self) -> str | None: return 'deprecated' if self.deprecated else None return self.deprecated if isinstance(self.deprecated, str) else self.deprecated.message + def _update_from_config(self, config_wrapper: ConfigWrapper, name: str) -> None: + """Update the instance from the configuration set on the class this computed field belongs to.""" + title_generator = self.field_title_generator or config_wrapper.field_title_generator + if title_generator is not None and self.title is None: + self.title = title_generator(name, self) + if config_wrapper.alias_generator is not None: + self._apply_alias_generator(config_wrapper.alias_generator, name) + + def _apply_alias_generator(self, alias_generator: Callable[[str], str] | AliasGenerator, name: str) -> None: + """Apply an alias generator to aliases if appropriate. + + Args: + alias_generator: A callable that takes a string and returns a string, or an `AliasGenerator` instance. + name: The name of the computed field from which to generate the alias. + """ + # Apply an alias_generator if + # 1. An alias is not specified + # 2. An alias is specified, but the priority is <= 1 + + if self.alias_priority is None or self.alias_priority <= 1 or self.alias is None: + alias, _, serialization_alias = None, None, None + + if isinstance(alias_generator, AliasGenerator): + alias, _, serialization_alias = alias_generator.generate_aliases(name) + elif callable(alias_generator): + alias = alias_generator(name) + + # if priority is not set, we set to 1 + # which supports the case where the alias_generator from a child class is used + # to generate an alias for a field in a parent class + if self.alias_priority is None or self.alias_priority <= 1: + self.alias_priority = 1 + + # if the priority is 1, then we set the aliases to the generated alias + # note that we use the serialization_alias with priority over alias, as computed_field + # aliases are used for serialization only (not validation) + if self.alias_priority == 1: + self.alias = _utils.get_first_not_none(serialization_alias, alias) + def _wrapped_property_is_private(property_: cached_property | property) -> bool: # type: ignore """Returns true if provided property is private, False otherwise.""" diff --git a/tests/test_aliases.py b/tests/test_aliases.py index 1d1c8dc224e..80ac2909d6f 100644 --- a/tests/test_aliases.py +++ b/tests/test_aliases.py @@ -36,6 +36,17 @@ class MyModel(BaseModel): assert v.model_dump(by_alias=True) == data +def test_alias_generator_defer_build() -> None: + def to_camel(string: str): + return ''.join(x.capitalize() for x in string.split('_')) + + class Model(BaseModel): + model_config = ConfigDict(alias_generator=to_camel, defer_build=True) + foo_bar: str + + assert Model.model_fields['foo_bar'].alias == 'FooBar' + + def test_alias_generator_wrong_type_error(): def return_bytes(string): return b'not a string' diff --git a/tests/test_computed_fields.py b/tests/test_computed_fields.py index 769bc254b2e..d9c7099b866 100644 --- a/tests/test_computed_fields.py +++ b/tests/test_computed_fields.py @@ -656,6 +656,18 @@ class MySubModel(MyModel): } +def test_alias_generator_defer_build() -> None: + class Model(BaseModel): + model_config = {'alias_generator': to_camel, 'defer_build': True} + + @computed_field + @property + def my_prop(self) -> int: + return 1 + + assert Model.__pydantic_decorators__.computed_fields['my_prop'].info.alias == 'myProp' + + def make_base_model() -> Any: class CompModel(BaseModel): pass diff --git a/tests/test_create_model.py b/tests/test_create_model.py index 90f306f9c92..98d661b9e67 100644 --- a/tests/test_create_model.py +++ b/tests/test_create_model.py @@ -328,13 +328,13 @@ def test_create_model_with_doc(): def test_create_model_protected_namespace_default(): with pytest.warns( - UserWarning, match='Field "model_dump_something" in Model has conflict with protected namespace "model_dump"' + UserWarning, match="Field 'model_dump_something' in 'Model' conflicts with protected namespace 'model_dump'" ): create_model('Model', model_dump_something=(str, ...)) def test_create_model_custom_protected_namespace(): - with pytest.warns(UserWarning, match='Field "test_field" in Model has conflict with protected namespace "test_"'): + with pytest.warns(UserWarning, match="Field 'test_field' in 'Model' conflicts with protected namespace 'test_'"): create_model( 'Model', __config__=ConfigDict(protected_namespaces=('test_',)), @@ -345,7 +345,7 @@ def test_create_model_custom_protected_namespace(): def test_create_model_multiple_protected_namespace(): with pytest.warns( - UserWarning, match='Field "also_protect_field" in Model has conflict with protected namespace "also_protect_"' + UserWarning, match="Field 'also_protect_field' in 'Model' conflicts with protected namespace 'also_protect_'" ): create_model( 'Model', diff --git a/tests/test_main.py b/tests/test_main.py index 001eefaf694..faeb30b5797 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -2851,7 +2851,7 @@ class Model(BaseModel): def test_protected_namespace_default(): with pytest.warns( - UserWarning, match='Field "model_dump_something" in Model has conflict with protected namespace "model_dump"' + UserWarning, match="Field 'model_dump_something' in 'Model' conflicts with protected namespace 'model_dump'" ): class Model(BaseModel): @@ -2859,7 +2859,7 @@ class Model(BaseModel): def test_custom_protected_namespace(): - with pytest.warns(UserWarning, match='Field "test_field" in Model has conflict with protected namespace "test_"'): + with pytest.warns(UserWarning, match="Field 'test_field' in 'Model' conflicts with protected namespace 'test_'"): class Model(BaseModel): # this field won't raise error because we changed the default value for the @@ -2872,17 +2872,22 @@ class Model(BaseModel): def test_multiple_protected_namespace(): with pytest.warns( - UserWarning, match='Field "also_protect_field" in Model has conflict with protected namespace "also_protect_"' + UserWarning, + match=( + r"Field 'also_protect_field' in 'Model' conflicts with protected namespace 'also_protect_'\.\n\n" + "You may be able to solve this by setting the 'protected_namespaces' configuration to " + r"\('protect_me_', re.compile\('re_protect'\)\)\." + ), ): class Model(BaseModel): also_protect_field: str - model_config = ConfigDict(protected_namespaces=('protect_me_', 'also_protect_')) + model_config = ConfigDict(protected_namespaces=('protect_me_', 'also_protect_', re.compile('re_protect'))) def test_protected_namespace_pattern() -> None: - with pytest.warns(UserWarning, match=r'Field "perfect_match" in Model has conflict with protected namespace .*'): + with pytest.warns(UserWarning, match=r"Field 'perfect_match' in 'Model' conflicts with protected namespace .*"): class Model(BaseModel): perfect_match: str From 477e67c06c468d3f88f003ad2af76c5c93ab1b1a Mon Sep 17 00:00:00 2001 From: David Montague <35119617+dmontagu@users.noreply.github.com> Date: Wed, 30 Apr 2025 08:10:55 -0600 Subject: [PATCH 043/106] Fix typo in documentation (#11815) --- docs/concepts/experimental.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/docs/concepts/experimental.md b/docs/concepts/experimental.md index 084728c3cdc..3d22636897a 100644 --- a/docs/concepts/experimental.md +++ b/docs/concepts/experimental.md @@ -470,13 +470,10 @@ print(args, kwargs) # (1)! ``` !!! note - Unlike [`@validate_call`][pydantic.validate_call], this core schema will only validated the provided arguments, + Unlike [`@validate_call`][pydantic.validate_call], this core schema will only validate the provided arguments; the underlying callable will *not* be called. -This new core schema will become the default one to be used by [`@validate_call`][pydantic.validate_call] -in Pydantic V3. - -Additionally, you can ignore specific parameters by providing a callback, called for every parameter: +Additionally, you can ignore specific parameters by providing a callback, which is called for every parameter: ```python from typing import Any From 0d33ece12cd7c03af997c2ecde6dd7718d1bd044 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 1 May 2025 22:23:14 +0200 Subject: [PATCH 044/106] Fix check for stdlib dataclasses (#11822) - Rename function to `is_stdlib_dataclass()` - Instead of hacking around with annotations, check the cls' `__dict__` - Update docstring, return type - Add and update existing tests - Improve some parts of the documentation. Thanks @karta9821 for initially investigating. --- docs/concepts/dataclasses.md | 73 +++++++++++++----------------- pydantic/_internal/_dataclasses.py | 35 +++----------- pydantic/dataclasses.py | 6 +-- pydantic/json_schema.py | 4 +- tests/test_dataclasses.py | 42 +++++++++++++---- 5 files changed, 77 insertions(+), 83 deletions(-) diff --git a/docs/concepts/dataclasses.md b/docs/concepts/dataclasses.md index 6c9e39c1fdd..57c8aab8147 100644 --- a/docs/concepts/dataclasses.md +++ b/docs/concepts/dataclasses.md @@ -1,5 +1,5 @@ ??? api "API Documentation" - [`pydantic.dataclasses.dataclass`][pydantic.dataclasses.dataclass]
+ [`@pydantic.dataclasses.dataclass`][pydantic.dataclasses.dataclass]
If you don't want to use Pydantic's [`BaseModel`][pydantic.BaseModel] you can instead get the same data validation on standard [dataclasses][dataclasses]. @@ -56,7 +56,7 @@ You can use both the Pydantic's [`Field()`][pydantic.Field] and the stdlib's [`f import dataclasses from typing import Optional -from pydantic import Field, TypeAdapter +from pydantic import Field from pydantic.dataclasses import dataclass @@ -69,45 +69,18 @@ class User: default=None, metadata={'title': 'The age of the user', 'description': 'do not lie!'}, ) - height: Optional[int] = Field(None, title='The height in cm', ge=50, le=300) + height: Optional[int] = Field( + default=None, title='The height in cm', ge=50, le=300 + ) -user = User(id='42') -print(TypeAdapter(User).json_schema()) -""" -{ - 'properties': { - 'id': {'title': 'Id', 'type': 'integer'}, - 'name': {'default': 'John Doe', 'title': 'Name', 'type': 'string'}, - 'friends': { - 'items': {'type': 'integer'}, - 'title': 'Friends', - 'type': 'array', - }, - 'age': { - 'anyOf': [{'type': 'integer'}, {'type': 'null'}], - 'default': None, - 'description': 'do not lie!', - 'title': 'The age of the user', - }, - 'height': { - 'anyOf': [ - {'maximum': 300, 'minimum': 50, 'type': 'integer'}, - {'type': 'null'}, - ], - 'default': None, - 'title': 'The height in cm', - }, - }, - 'required': ['id'], - 'title': 'User', - 'type': 'object', -} -""" +user = User(id='42', height='250') +print(user) +#> User(id=42, name='John Doe', friends=[0], age=None, height=250) ``` -The Pydantic `@dataclass` decorator accepts the same arguments as the standard decorator, with the addition -of a `config` parameter. +The Pydantic [`@dataclass`][pydantic.dataclasses.dataclass] decorator accepts the same arguments as the standard decorator, +with the addition of a `config` parameter. ## Dataclass config @@ -145,7 +118,7 @@ class MyDataclass2: ## Rebuilding dataclass schema -The [`rebuild_dataclass()`][pydantic.dataclasses.rebuild_dataclass] can be used to rebuild the core schema of the dataclass. +The [`rebuild_dataclass()`][pydantic.dataclasses.rebuild_dataclass] function can be used to rebuild the core schema of the dataclass. See the [rebuilding model schema](./models.md#rebuilding-model-schema) section for more details. ## Stdlib dataclasses and Pydantic dataclasses @@ -191,6 +164,24 @@ except pydantic.ValidationError as e: """ ``` +The decorator can also be applied directly on a stdlib dataclass, in which case a new subclass will be created: + +```python +import dataclasses + +import pydantic + + +@dataclasses.dataclass +class A: + a: int + + +PydanticA = pydantic.dataclasses.dataclass(A) +print(PydanticA(a='1')) +#> A(a=1) +``` + ### Usage of stdlib dataclasses with `BaseModel` When a standard library dataclass is used within a Pydantic model, a Pydantic dataclass or a [`TypeAdapter`][pydantic.TypeAdapter], @@ -304,9 +295,9 @@ print(repr(m)) ### Checking if a dataclass is a Pydantic dataclass -Pydantic dataclasses are still considered dataclasses, so using [`dataclasses.is_dataclass`][] will return `True`. To check -if a type is specifically a pydantic dataclass you can use the [`is_pydantic_dataclass`][pydantic.dataclasses.is_pydantic_dataclass] -function. +Pydantic dataclasses are still considered dataclasses, so using [`dataclasses.is_dataclass()`][dataclasses.is_dataclass] +will return `True`. To check if a type is specifically a Pydantic dataclass you can use the +[`is_pydantic_dataclass()`][pydantic.dataclasses.is_pydantic_dataclass] function. ```python import dataclasses diff --git a/pydantic/_internal/_dataclasses.py b/pydantic/_internal/_dataclasses.py index 8518f9f84e8..c3e4cc93618 100644 --- a/pydantic/_internal/_dataclasses.py +++ b/pydantic/_internal/_dataclasses.py @@ -2,7 +2,6 @@ from __future__ import annotations as _annotations -import dataclasses import typing import warnings from functools import partial @@ -14,7 +13,7 @@ SchemaValidator, core_schema, ) -from typing_extensions import TypeGuard +from typing_extensions import TypeIs from ..errors import PydanticUndefinedAnnotation from ..plugin._schema_validator import PluggableSchemaValidator, create_schema_validator @@ -188,29 +187,11 @@ def __init__(__dataclass_self__: PydanticDataclass, *args: Any, **kwargs: Any) - return True -def is_builtin_dataclass(_cls: type[Any]) -> TypeGuard[type[StandardDataclass]]: - """Returns True if a class is a stdlib dataclass and *not* a pydantic dataclass. +def is_stdlib_dataclass(cls: type[Any], /) -> TypeIs[type[StandardDataclass]]: + """Returns `True` if the class is a stdlib dataclass and *not* a Pydantic dataclass. - We check that - - `_cls` is a dataclass - - `_cls` does not inherit from a processed pydantic dataclass (and thus have a `__pydantic_validator__`) - - `_cls` does not have any annotations that are not dataclass fields - e.g. - ```python - import dataclasses - - import pydantic.dataclasses - - @dataclasses.dataclass - class A: - x: int - - @pydantic.dataclasses.dataclass - class B(A): - y: int - ``` - In this case, when we first check `B`, we make an extra check and look at the annotations ('y'), - which won't be a superset of all the dataclass fields (only the stdlib fields i.e. 'x') + Unlike the stdlib `dataclasses.is_dataclass()` function, this does *not* include subclasses + of a dataclass that are themselves not dataclasses. Args: cls: The class. @@ -218,8 +199,4 @@ class B(A): Returns: `True` if the class is a stdlib dataclass, `False` otherwise. """ - return ( - dataclasses.is_dataclass(_cls) - and not hasattr(_cls, '__pydantic_validator__') - and set(_cls.__dataclass_fields__).issuperset(set(getattr(_cls, '__annotations__', {}))) - ) + return '__dataclass_fields__' in cls.__dict__ and not hasattr(cls, '__pydantic_validator__') diff --git a/pydantic/dataclasses.py b/pydantic/dataclasses.py index cd130666e8f..6c5fdd45eb5 100644 --- a/pydantic/dataclasses.py +++ b/pydantic/dataclasses.py @@ -224,9 +224,9 @@ def create_dataclass(cls: type[Any]) -> type[PydanticDataclass]: # since dataclasses.dataclass will set this as the __doc__ original_doc = cls.__doc__ - if _pydantic_dataclasses.is_builtin_dataclass(cls): - # Don't preserve the docstring for vanilla dataclasses, as it may include the signature - # This matches v1 behavior, and there was an explicit test for it + if _pydantic_dataclasses.is_stdlib_dataclass(cls): + # Vanilla dataclasses include a default docstring (representing the class signature), + # which we don't want to preserve. original_doc = None # We don't want to add validation to the existing std lib dataclass, so we will subclass it diff --git a/pydantic/json_schema.py b/pydantic/json_schema.py index d6dc74aa9fd..d50510d376d 100644 --- a/pydantic/json_schema.py +++ b/pydantic/json_schema.py @@ -1675,7 +1675,7 @@ def dataclass_schema(self, schema: core_schema.DataclassSchema) -> JsonSchemaVal Returns: The generated JSON schema. """ - from ._internal._dataclasses import is_builtin_dataclass + from ._internal._dataclasses import is_stdlib_dataclass cls = schema['cls'] config: ConfigDict = getattr(cls, '__pydantic_config__', cast('ConfigDict', {})) @@ -1686,7 +1686,7 @@ def dataclass_schema(self, schema: core_schema.DataclassSchema) -> JsonSchemaVal self._update_class_schema(json_schema, cls, config) # Dataclass-specific handling of description - if is_builtin_dataclass(cls): + if is_stdlib_dataclass(cls): # vanilla dataclass; don't use cls.__doc__ as it will contain the class signature by default description = None else: diff --git a/tests/test_dataclasses.py b/tests/test_dataclasses.py index c963ba733c5..c5456003ef3 100644 --- a/tests/test_dataclasses.py +++ b/tests/test_dataclasses.py @@ -1093,7 +1093,9 @@ def test_dataclass_equality_for_field_values(foo_bar_getter): assert foo == bar.c -def test_issue_2383(): +def test_hash_method_preserved() -> None: + """https://github.com/pydantic/pydantic/issues/2383""" + @dataclasses.dataclass class A: s: str @@ -1111,7 +1113,9 @@ class B(pydantic.BaseModel): assert hash(b.a) == 123 -def test_issue_2398(): +def test_order_preserved() -> None: + """https://github.com/pydantic/pydantic/issues/2398""" + @dataclasses.dataclass(order=True) class DC: num: int = 42 @@ -1128,7 +1132,9 @@ class Model(pydantic.BaseModel): assert real_dc <= model.dc -def test_issue_2424(): +def test_default_factory_works_on_subclasses() -> None: + """https://github.com/pydantic/pydantic/issues/2424""" + @dataclasses.dataclass class Base: x: str @@ -1147,7 +1153,23 @@ class ValidatedThing(Base): assert ValidatedThing(x='hi').y == '' -def test_issue_2541(): +def test_override_default_stdlib_dataclass() -> None: + """https://github.com/pydantic/pydantic/issues/11816""" + + @dataclasses.dataclass + class Test: + value: int = 1 + + @pydantic.dataclasses.dataclass + class Sub(Test): + value: int = 2 + + assert Sub().value == 2 + + +def test_frozen_preserved_on_model_field() -> None: + """https://github.com/pydantic/pydantic/issues/2541""" + @dataclasses.dataclass(frozen=True) class Infos: id: int @@ -1272,7 +1294,9 @@ class Model(BaseModel): } -def test_issue_2594(): +def test_supports_stdlib_dataclass_without_annotations() -> None: + """https://github.com/pydantic/pydantic/issues/2594""" + @dataclasses.dataclass class Empty: pass @@ -1318,8 +1342,8 @@ class B: assert model_json_schema(A)['description'] == 'my description' -def test_issue_3011(): - """Validation of a subclass of a dataclass""" +def test_subclass_of_a_dataclass_supported() -> None: + """https://github.com/pydantic/pydantic/issues/3011""" @dataclasses.dataclass class A: @@ -1337,7 +1361,9 @@ class C: assert c.thing.thing_a == 'Thing A' -def test_issue_3162(): +def test_dataclass_referenced_twice() -> None: + """https://github.com/pydantic/pydantic/issues/3162""" + @dataclasses.dataclass class User: id: int From accb281469b7037d940cd9ff131a6aeed92b3806 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 May 2025 10:30:32 +0200 Subject: [PATCH 045/106] Bump astral-sh/setup-uv from 5 to 6 (#11826) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Viicos <65306057+Viicos@users.noreply.github.com> --- .github/workflows/ci.yml | 16 ++++++++-------- .github/workflows/codspeed.yml | 2 +- .github/workflows/docs-update.yml | 6 +++--- .github/workflows/third-party.yml | 17 ++++++----------- 4 files changed, 18 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0eedb9d5c0a..70cbd2e054a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,7 +24,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: ${{ matrix.python-version }} @@ -44,7 +44,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: '3.12' @@ -71,7 +71,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: '3.12' @@ -119,7 +119,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: ${{ matrix.python-version }} @@ -165,7 +165,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: '3.12' @@ -203,7 +203,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: ${{ matrix.python-version }} @@ -235,7 +235,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: '3.12' @@ -325,7 +325,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: ${{ matrix.python-version }} diff --git a/.github/workflows/codspeed.yml b/.github/workflows/codspeed.yml index 64846f2c594..417b633ac63 100644 --- a/.github/workflows/codspeed.yml +++ b/.github/workflows/codspeed.yml @@ -19,7 +19,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 # Using this action is still necessary for CodSpeed to work: - uses: actions/setup-python@v5 diff --git a/.github/workflows/docs-update.yml b/.github/workflows/docs-update.yml index 5e9bae7a259..747ebef6e05 100644 --- a/.github/workflows/docs-update.yml +++ b/.github/workflows/docs-update.yml @@ -21,7 +21,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: '3.12' @@ -42,7 +42,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: '3.12' @@ -68,7 +68,7 @@ jobs: - name: Checkout current branch uses: actions/checkout@v4 - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: '3.12' diff --git a/.github/workflows/third-party.yml b/.github/workflows/third-party.yml index 585610f9fa7..a90bb951c92 100644 --- a/.github/workflows/third-party.yml +++ b/.github/workflows/third-party.yml @@ -59,7 +59,7 @@ jobs: with: path: pydantic-latest - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: ${{ matrix.python-version }} @@ -100,7 +100,7 @@ jobs: with: path: pydantic-latest - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v6 with: python-version: ${{ matrix.python-version }} @@ -390,7 +390,7 @@ jobs: path: pydantic-latest - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@v6 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 @@ -492,16 +492,11 @@ jobs: with: path: pydantic-latest - # TODO: specifying a python-version to the action creates a venv, - # and there's currently no way to have the venv created in a subdir - # (see https://github.com/astral-sh/setup-uv/issues/251). - name: Install UV - uses: astral-sh/setup-uv@v5 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: astral-sh/setup-uv@v6 with: python-version: ${{ matrix.python-version }} + working-directory: python - name: Install Semantic Kernel dependencies working-directory: ./python @@ -543,7 +538,7 @@ jobs: path: pydantic-latest - name: Install UV - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@v6 with: python-version: ${{ matrix.python-version }} From 15a4faa673c90a232886b08c2a5423653dd3820b Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Fri, 2 May 2025 10:20:39 +0100 Subject: [PATCH 046/106] Reduce documentation images size and remove some unused images (#11825) --- docs/img/vs_code_01.png | Bin 22703 -> 8228 bytes docs/img/vs_code_02.png | Bin 24981 -> 9235 bytes docs/img/vs_code_03.png | Bin 27477 -> 9408 bytes docs/img/vs_code_04.png | Bin 33602 -> 11272 bytes docs/img/vs_code_05.png | Bin 19852 -> 7504 bytes docs/img/vs_code_06.png | Bin 38451 -> 13002 bytes docs/img/vs_code_07.png | Bin 42534 -> 13908 bytes docs/img/vs_code_08.png | Bin 33393 -> 11118 bytes docs/logos/adobe_logo.png | Bin 11913 -> 5339 bytes docs/logos/amazon_logo.png | Bin 16623 -> 4494 bytes docs/logos/anthropic_logo.png | Bin 35818 -> 16524 bytes docs/logos/apple_logo.png | Bin 31135 -> 6273 bytes docs/logos/asml_logo.png | Bin 31826 -> 6775 bytes docs/logos/astrazeneca_logo.png | Bin 63863 -> 11867 bytes docs/logos/cisco_logo.png | Bin 35604 -> 7251 bytes docs/logos/comcast_logo.png | Bin 37834 -> 11456 bytes docs/logos/facebook_logo.png | Bin 61670 -> 16097 bytes docs/logos/github_logo.png | Bin 21984 -> 6840 bytes docs/logos/google_logo.png | Bin 55647 -> 10037 bytes docs/logos/hsbc_logo.png | Bin 6320 -> 1642 bytes docs/logos/ibm_logo.png | Bin 19630 -> 3206 bytes docs/logos/intuit_logo.png | Bin 12659 -> 2295 bytes docs/logos/ipcc_logo.png | Bin 68474 -> 17221 bytes docs/logos/jpmorgan_logo.png | Bin 20352 -> 8055 bytes docs/logos/jupyter_logo.png | Bin 62802 -> 10671 bytes docs/logos/microsoft_logo.png | Bin 22237 -> 5146 bytes docs/logos/molssi_logo.png | Bin 17583 -> 5454 bytes docs/logos/nasa_logo.png | Bin 80221 -> 21462 bytes docs/logos/netflix_logo.png | Bin 15427 -> 5931 bytes docs/logos/nsa_logo.png | Bin 199964 -> 52269 bytes docs/logos/nvidia_logo.png | Bin 21160 -> 6490 bytes docs/logos/openai_logo.png | Bin 4895 -> 2958 bytes docs/logos/oracle_logo.png | Bin 4795 -> 1062 bytes docs/logos/qualcomm_logo.png | Bin 34541 -> 7316 bytes docs/logos/redhat_logo.png | Bin 21426 -> 7556 bytes docs/logos/revolut_logo.png | Bin 12366 -> 4214 bytes docs/logos/salesforce_logo.png | Bin 21472 -> 7016 bytes docs/logos/starbucks_logo.png | Bin 119079 -> 32650 bytes docs/logos/ti_logo.png | Bin 13026 -> 5295 bytes docs/logos/twilio_logo.png | Bin 24583 -> 4560 bytes docs/logos/twitter_logo.png | Bin 13717 -> 4863 bytes docs/logos/ukhomeoffice_logo.png | Bin 24854 -> 8963 bytes docs/sponsor_logos/aws.png | Bin 73765 -> 0 bytes docs/sponsor_logos/exoflare.png | Bin 19190 -> 0 bytes docs/sponsor_logos/explosion_ai.png | Bin 33109 -> 0 bytes docs/sponsor_logos/fastapi.png | Bin 14381 -> 0 bytes docs/sponsor_logos/jina-ai.png | Bin 10412 -> 0 bytes docs/sponsor_logos/robusta.png | Bin 23227 -> 0 bytes docs/sponsor_logos/salesforce.png | Bin 21472 -> 0 bytes docs/sponsor_logos/sendcloud.png | Bin 17042 -> 0 bytes docs/sponsor_logos/tutorcruncher.png | Bin 12614 -> 0 bytes 51 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/sponsor_logos/aws.png delete mode 100644 docs/sponsor_logos/exoflare.png delete mode 100644 docs/sponsor_logos/explosion_ai.png delete mode 100644 docs/sponsor_logos/fastapi.png delete mode 100644 docs/sponsor_logos/jina-ai.png delete mode 100644 docs/sponsor_logos/robusta.png delete mode 100644 docs/sponsor_logos/salesforce.png delete mode 100644 docs/sponsor_logos/sendcloud.png delete mode 100644 docs/sponsor_logos/tutorcruncher.png diff --git a/docs/img/vs_code_01.png b/docs/img/vs_code_01.png index 24920c79381a7ac4f95cfd333f29e86eaaf90894..752f2b80cd3e1ce8560aa2e2ecb6e1ed28c63159 100644 GIT binary patch literal 8228 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 diff --git a/docs/img/vs_code_02.png b/docs/img/vs_code_02.png index c78536be6b983a07819751110d5ca152b3e97e77..20b25020f69c8efa7434548d8b28235c5dcf4916 100644 GIT binary patch literal 9235 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 literal 24981 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 diff --git a/docs/img/vs_code_03.png b/docs/img/vs_code_03.png index 85a7eb9b2d88752e8906578699c479b1057b37fc..42d6ac36265c636011a9d2aadc55485948b7c01f 100644 GIT binary patch literal 9408 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 literal 27477 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 a(_Nf*nMoY(9(bPr&6VWUI literal 33602 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 diff --git a/docs/img/vs_code_05.png b/docs/img/vs_code_05.png index b5feb9fef027fedac2293cbca431cc2f42c1ee23..a4202a6b0389aa44226b74d11e5c9567e8ede5f0 100644 GIT binary patch literal 7504 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

uI8`d;96GAncA+EFLM1v|z;~p270I^3kyO_FH}S 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 T+T^o=|Djh^(p0Qgunze@u{IO( literal 19852 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 R-~FS4qoJasTm!d__+OQg9qRx9 literal 38451 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 bN36GA5>cxG90f@K9jVr1UG<8GuRs0=>lWIB diff --git a/docs/img/vs_code_07.png b/docs/img/vs_code_07.png index eec492586d9f7b8e065dcb0d8cf5f69ba8a31e1a..5f83cfd1c8450fe70ce6715e492ff04906d8aa6f 100644 GIT binary patch literal 13908 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 literal 42534 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�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 literal 33393 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%0AfU} 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 C9|yJo literal 11913 zcmd6Nc|4Ts8}~gkjS*rhF~x+e$udrU#o!Q?CbAsK7RD5jZ3;(8j1)QwO<7t*nJBvm zDVh`7j-(+eL|T|co9)=wDeLX$L#&WfE&75JJls zJGTCT5FY--BXKeKXY5GFH2kw9%#yKN9R71dBR}xzw&k~f`?XLs<>#qeC@$S+qyC0pQU?Of`klUbt~WBY~``GyWCt&RcxKW>yqJA=OSg70|{B$!{i~I34-!5c;Oe>VKh`qZg=A9mAB$r zNJL~j?Up2T0U3`<5!MC5BS|m3ee{~b^VI&*y1fl&5#n{B>Meaq+vE7SG+lT>SX7d5 z*)Z9nZ#CDeS{i420?+AT&nShA*k-`0uaFhJ&&Df544liSU> zrFU9!XOi)py{4M2o{jn`OV*jd3t8Kegu26IJ~?yebasR|QxUE)^LWjjDjXk6+u>%8 z_HR}=3+d8j2ECzFd{@E^ZmrF!AlR3XAnNx@5(XF)oH*lv`g=jC3TfP#Bp-|Y@p$wt zV|=oVFnTI0Mq4Ni*3;5L--F_#j=he%!j?yFxrkp`WNDk~nus2SXMnk+V2jm_u}|z` z&G|dw`D*z6>YJJ;gk)BmOvkYpVn2kAm+px9Ug8tGB;oIjmvjjzu}xv$1B zsVGa5h}L?_v7&mw#rBzus1Ep73a%Nt5&wHQOUoo)*Av=K8r{8lq^dR*l`r( zY(B1%ujBymc&Gj`;Ea2$gahy|50Fic(Bz{`R-(A9>7sCI$a#Q#No|4<3#b!s;W|$!2=)yZ!$|6IdI%5#f z>B?P8K_djZ8C(i*P7+3d7@Bi)sHHjg5L`OlE#fo(X^KIHXYic-9tx}OANrDh$0VUK zqo^b-*8|=pQDYQ$7fgQkI?7%8!iL@l54a_*XH1`pkPe4j+U2^MHSlW}v%6N3^T+`? z)SP8a$xvPybG^!?<3a%VLSBQZ0f?U9W^ip_%`cC>E78_Y5OSBxq7GpILmqs1cm*rU zLg3tK+!g~D1CAyIlthRtTS*bF{|Uc+<9X`fGTS)^ffeWiFxm0x3wh-OK4&SI0|QsR z*`N5&2QKn9mssW2YoVKsAGmro(zuU0O=I_6bIz`DL=K5JRPx7R7da+{eCHZszU{Pe zKS;&<$CKM%sP`VsCX8&w@vA(Sv!YtSx9b4BbhS{{CNQaxZe4%&5`VWNqV1BgnLZaG zp1TX&veO-ca>NS9H`Ep8c#F|I3vN!bb(sfYRmPnGZQ@Nx@hxCDr|q!sUQqBE?8}lO zunMs!oS-b|MyB&fAh8)-NSIOg1S9!Z&PP9AH>~I{BZ2bYcaYn+Ls*e?)5RZPr-qF~vR@hqw_SS~2^g(7Z2;%hcXJV*Xw`O$sWOgH7#ak?ogdi~_erRCn`%67wRgIE&{nvK3fSPhn4=WC)HH0uh}b zm@sE*HI0??Hk5=Zd&9DU6bR=|6-1LtdJ3jlS~`zYicu5dhRIJ>648gKU4qqccgLJH zyHW|Q1dH!IkeG#)HD=|fFWJvXYZ}F@Wz{{WFX5EH z#uc!!bb<&aPB)uEkb7w%%Bz0{HmUZnj>OUAB+&MV?F%uD65Mr9zv`i^CZaqDKekR& z)po%j!-`KJK=W$XH;n}jlTo!$7TlqF9WiD1&Jk7v^sEy~z%!s-_sVCT1MIFDUCQUx40$jr%^(41pecb8+#s+Zw>VEvX2q-*9_TdgmnWk5pbJ%9aPjB| zJ(K`)r3G5r%0SlALI)X9o%AKqaE%P!lpBgY^Ed`cL4*d`@2GQ$+v66{y{ToDnC96rmNDYoJRfct@&{I7vN z+dve+@5`pz!bDJ~!|w*vh1FW9Yd<3?0D=aMiyPFd32lcJzXLil+%+-WM|bv7$d?_F zG9xn~>nfmSu9r%Fw|Xyh3BNnQ)dF`CYNJdLELISafbfO79N)HVu&8EKfohH856mxD zLDaTBnerw&>8m5E8_{KK0OR}j++vwq3}P1^l2;a4#-%{7WT!Lt#ZT59H>+nuqs6(K&V??Zd<$H8rIIfX zFDPHdigNo(8q$%l*bMtIS0><0{=&DJMJ8k&kuyS!KcFe#hE%o2K^t0^SQLvYE7Z%O z1MU5T;qD7Nnhe@RL0fQX8*V5g%+j_DszbjGKvkDao3Sh>#JHJ`P!0SrkmZa{LH6%~ zpo^9;Fw+pOfQ*(V=9*CE3FW#{gg?cJxe8wA!ZW~<4X3h7)5B9Eqz&W2NYJ_*>Cxmk zvgLDC;l=##N*u>*jR`_Ho|roqGHNcAMAf%qcTY(TE8bLsOOVJkJ-CgCxxI@`OLXBg z*0Eu!@9Uew3wSxMgBE~?BY!S7FzjK`Zr>jv!(?{yJ)~=m^WWS$zc05?=TC04^K zN`8r?x*2FXehpQNx9#-J~sqlSJ zeRP`OercDwPr(&yi1CPW%040^*;5Ugm{t+2 zcKcRbj>-{*N&-Lt38W64IFnmLank*5;|8XDF@1OqCI6< zSRVDbYX!`#zuzj&wY&0gI5(Rj)=wy9o-yid9yp=9Oa^HGa$lQMtpO$&g(snbTk%zZa zD6>qjn?b+z=(Y7bP)drZtiN||pWcVkx$LIM!rS7@?#ukPl2x}wP*xJg3V zmfr#^bH|>Fy*n7m5OwlrlWq-q?+FP-NCdKtpfD=aF4 zDERRw!`g5vL+R$Tfqt<*nTvqg8l$`Y;_+#T-U(SDKoM#h)P>Y#4>X~0N+}WcpTMV) zuq4(96@~shRj4zu@rbvPJgd&bw9r&i7Ks*HQY=0ns~_*`FEL(`beFA0BfzcJFR`U! zQmjMc51zhsb~BuNN%+Y=&3jy8#e~jGM44~2aCZBuB4js;f7@MezjkZ>^bBrlNMJ0% z39SJl2Yp#h3b!ixP{R4b+cyIz(a-9wUrFq<_Rwe-`7XxIE+fjL;yTqVCi z&C@@d(CCO}qZop_Sf(B5n0fq~P`!jjNx)I_(9|96rm;GR)`$}koYm5|o(pvFN5#*d%+iLQX^`Kkh2~B5h0z!&C37b#qz#%F zb0_dEk77{bl+XA9-=u)EAlRq(Lw&SZZDG!$TnnTyPS+7dztI98Y=z9v6m6UgTG~XD zBG9dH-#^un+e5MZ`tVV7U?L2X39zCz{1)$Vu~q-%ebH~iHL%XXSdsSmRjSp;WitXzX~Y2p`Zxdv$bKZ ziqA@U(NJ{K9c_{ zQ0>M>_4**{^Lp*TFUN=4)9nNvQ873VJp%a31WiU+AQg_m{7F#p0clM7fFl)PIn zyxeJ=|FH>B1!fsyJh_l??Aj7SdAdm&l|J~fckYs|%c0p^W z%E8;`-yW)3?j*;mV+ck%jq4KdZTFj1G}gw%l|Uu37%|@{>IHRfgF0O+x@Zy>m7P1> zeK71=Cwx(C)e)r6@CJy?Y`rkXjY!hFh75;KklVvR$~`V2sT-jwJelPMtYXbJoWI;+ zgx9N64`%17D3v@L_<(66(-eadx=Ue^NkTF3VBj_0NQsqU(xN(jJL?|NtzF=L<12Hq zFXoye*I~tFGguXa79VUJ1U=5`&>a|4?xF9lAN&;gH09toLMqKX(*_0vTjgPC1-)tP zI=J&y`uhiOQp%oPFL`0gKMAdZqJ+i9DZfVmB(oQJ@g-rDH%@}h;4SqDf*}X*@W2ED z4@=?4HttO7LvkahYiE+s4dbj;RAO$-f{jPM<-tOen-Av5S!aFtmmJZT@k_jon9s|0 zMnM#jj?l=}D_GMPdEV}W{u?DM>R}L751cT>fY=uXb^IGK zco#k!m;;AGry8GCbcqhPf9(1TirEx_k?1kV4l!Y9VglKymsCi<1Z{*-TLed8L8l|v z=u35QpD^bF+61LhbAn*IipZ?9lQgJ@0a1v-?B+|o>Qwks&p^s(8!QA)K^QOS7Cod} zZ?}VvJl4{dApM&RTQdJEk; zp=(9bmR2CA`6uu+>Wdw9PcZwW@TetL`-dcc$~8^$IHIyJ2?!45*##g=mR)-#p~ z>y59RfgrL}@sgwKi=`by)Fk9%||P zpGrOualY==+0EwPE{p|3xSv*y`?VF9WxfcsvDe>GQOk>`&TcvYA(5pQ#>yj-t~jF4 zgG(8iSf)!hzvwdjs{fa)pYR*Wb$_<%f!V{Ca(q?tBfygOfYdwbopkHua&>aN&iSTx z7fsl^M{GR93B^ad362$8RXtI0c2i_7NOl!6Q)4?kkPeIvlPf`#9~gJUlqR;1!nTy< zJpIuVD+Q(5d&l&dh!i>cZSCY0|Z_ z(Iebdp~MW5<^1qm!-|4ls%Ky#b`JBE+^tBuB+%+Jsqf7(skU%|Ra3veDb$e$X6QYg zy8pp5y0x7a`f$`i@ITl~&PDY6{SIX@9|~Iv_JdJi#fcRjP`9(W4FTDCRw*~1v1Gsn zgWBVI9W=ZIf9Tx`D-Fu1_;|{#YpX+7rn*1UnQM2`@mE+*WQNNF0|m&bsh#V)A6tfz zA2R#E-7Xp03Rt+9wzJth8Mncq+~XbHcTrGhpA0)CB1O>wZ4V1g5(0~6Cl|$1ac zBBXHev^9(Q`i+at@~IQTLY?1(7W@*DJ{C5t2;*GW6D4s3P zRM0}*e|jaIK480V14K$%`27g!Aq8i*`&fz_y9i+LXqtzD6s&jBY}W^v50l&UxG4ZK z-q0a+b^k_^;P;G58T9UlEXjts>Se3~OM}5$*R#y|4zirPFi?fWJyOQAg3htBUi~-> z)d6VC)PTDi-@lHeTo#yWi0*}^RR#J`wa5v$#9Sm52?NSi&|wyc#*Eim4ZqMVx;>Qy z`4W@LkwVo_V!&TpUmp-7)!E-P^72!NBF+(=uEn_Wo&X4Al!57X(`N zD(<^->G#WsOxmKUptm6pD^d<>I=0blL~eRtNm-}x<#$}vvVl!v{d8P}c#H5JBroVT zN|Q2@Br*dR$Mhgm>a&-f#^t+?F{Yu5n*u~W#oM3VxKe`O2}c1w4cY2&OL6rLgQhw7u;@wf&`eSuYMfJ-J_po!|1y@%!9s? zy3XLgAJZ>uG=xa8C2;`Vfn1|1JmkY zGorN)C?>Vpobnl%Cs4}Mir(qXP^SB(8#&ie&|#}2;R2~HdJ;Wy%PWrHSLZGO$Srn6 zQHuc>y<5-+eDOY8jqJfRw~!&`Myh?pF9e=wmbyEgsA)v=7@Qj$~P}!-X6Mh%zNE(ztsK!Fwuwo>_Fiw{u)+7gko8dlK-u4P#zD2MC zf5xH@-K3S0>~ta$*QY?w8K6o?2kVgT#33K4_6=SNe5S#AgY&7!$CcB*{oOvkff2p@oDtah@e+HshT+8)2B zog4`kRe}KNh?_&6>k;%hS!G2v>e9XAc8>UpJ5H}m=XUeU=V^NdyfpEx*iofetT-iR|dMO0Sl{d zzVrOJ=io7%kvR;~!6@xY)6*Fd(zS>=k`PAN>|{-mPuhRfY8J?;4mMDX@DIcF4=G{Ex{^B&$+}m9+W_=xwCd+R zPPH88wR#COxDbwwd+iFLIeegC5JzsOa$^o=?|b`pdRI(HY>8?)kk@zW!ax{fzHQ)2 zLnVlGuTd{ASqSxC!Hjz#<}r{dNPfq`SE`@7T~P=$B3LAj<&6Ca0KNZxB@|wNDn6#_ zkhz6|Bmx%tIqZwsk7X1{JzDqrgD+z^)vGwKI|LurWJ#pV`zQjb`un<85X6qH;092O z8^Of>7C6uZe?qB`RTJjGjC{jAtmH5033yIpc1xfdkwHrZ7YIn)*V$vva@}Am@MNHR z@4oDPYu@fgAxjrdbmqrm;iV9e&F4ilC5&6aVNbs`oaU|WH2z$qOJpvd`CwsmT%F3wCcJ@Bv)?~4 z<`y0jC^?qaa_HcTN#n24c@SHR5_xkjdQQNX1Jl^I0F3F=5h?%rH|jr9u(FMWf@cnZ zp|9Z#PJ`B`hY0JmZ*qqD9~phjgMf!=RnWy?R^P;8u?${};Cvqx|4S z!x3HK224JfnZk*Vu}1na9Go7xV~iST>J~;$b!%MbzgHoc!U}oNIBA>%{;%~h&X<@ipIJM1L1b}WeDzN>M=5rP;8J}V}S0oX1mHz>DC;h&5 z^5kOjDB09?(;wF!)ZY`uuuLb)y2>Mp%=FSj^JW|NICk=;125`m&B~K5U>D|UAyXE zh~hNh1mn%^HDWCl=sPrQVLV<9xbHx8m3FfIqAcDvb$`0CH)YjwfOKiK2&Ii6;T)tPk#_;N2e=~!rCT)P|vr!o85 zfjHX81zOxi#O`v^35d)70CEAy?0pI)&u$?-!p=m=9Kh*(U2m7eOdz+feAe$1aaWdO zt>y`3`#+?HW58cnz>Oy2!qy`owhB<4Zdj>}Krf#i3A82$R5phxtf+&ylClt;&Kwcdg|pd8jq?|{T2(f)Y|H4^gOr6)$JzaBvw84Ueq=DeFg z2~I=&-dF+O!h%hx#}Gl1kzWv*XL+mOlAQf~ybCl(n=-BOX7U_KE87?Ug|@yhtkamI zB3=A!0C2ef**5HJ34?CwPTc1Oj2ri1WV$B~rOE7k+ehE(*Ptn+gGwq*Ri)a=&D{C2 zh>VMJ_b2YA9-TciH%eZ4xfhY9FUxtxBnZ327&E7^@W3lU1yyB0&vUBgbt*ENCK)Zq zW`WdBZ(Q+T-%NMyb z@-VVlVRiSz8&AQxMQvl%dVRC^txUx{%)dx(zs!~M7<|$e3x$^t-aiy3&-cL9sy2mJ z!s!D+ms`~enn*9!wc9)GCJ0A1fFE#nAnp0^YY{0@KbXoG)a|nS++zwbsFn@%iGPJ6 zrr0MB5%mJwvqFjQgfqJLz<4RgNhLpLCmi5e`z_WqK>NAv(raZu-9ofk(#N=a=z~e! zVkO(~xsl@~!7owKDAneeUQrdU9wuKrn#jw8dX#RXW)`xVZ-eXqqV!}djM0o%7@aWz7K)=HoQqBv7vtqt)-w~a8f7$}HU>7mW1vPKPC5feXG@aKFF=m0O& zg%i7VPe1l;8ODGvZSyGp%(t5mc@U&7wri#KyCJW%@T>1<2w4waVW4;JqOy(XfoPvt3X{`cx0%)z;ym>&*+5^dPB zu^qYFa7XqCwuya{%+&x-*wnoNMhy-9MZI%luJHYrBg&X0C88?HNZg}Hm^>Z>Ad-RU z;X(HAr9ynUqt0^N+b_`!z^5lIrCd1}!EUhWXp7h&wrr)k{(i=BfK5i%?Jdh?We@>2IB3qX0=$*ZDhJ$D1gDVMI(G7ku?79 zJkv%QW(vJpLYIgK_UDPrfTRG=_-`b>SR?1d%x*YC!ImC;AlbGX*QFc~VD*j2cSsU$ zVweNHRRLtkhxy^&K?Or+R0`iYy=^;&D}U_C`Ek5bJK1bOCZ`*hCJAsGj@;@#S^jUz z;(SJzo8Szk4TZNbvKxr9u72kuno<27ULfP}>uedLWeHjUmp#?iH?)I9E+Lo3(?!R#T`mthky*A#e257Dh(gXZI5O z0lLrs?*R!tnE!`vk?^}?db2g8b|QU}(BX**MF&UT<0%w_S7D--ug=YH*jm<#|DMYW zJQ#f(9qr%IKh*$y%L^p75-q(vXg?D%tb^d>F%bMW$q!^Z(PPUw#fRjX(cUG`SfLA` z8J@#4I{W(4pE#p3k(&~dI(&j2SATRV8Ry`TrR_Y7wxsro!Ebc+`hpnN*C#3-_zwAKJ76urHF5Q9(dKy zePPQF1A6?ahP^;JFxMmr4{&3Qg|F@NP!Ei2BP7ZQxgMnsp}|JmYZk|Z>8Is`cjY1W zxC}FBPBl&x43YNVkg&(dX5}a;D-?IcS@7mp^fJ_YXRiR-$lodxd8$~rzybZL^U)*G zlKj;w8Zk$3wrWjdw|VUt7O2K$1zev)zjV=+ITFoVbYs2lW?>ou^eJBO%XA5^=(M9f+SP-S8oEe- zr@Ptv*LZ%A`GqkLz~wh~0>(lp?tbnn|M|Qer`^gn)OP9)!pQ0NLu%|5k9Yen2bs_M zay!pVXKLzVRV1r=)fcMnqaon3n3W+~_Uwb<01x$$S#`%wlo2@B;2?dcdjOVwE(;Z^ zhjP@MueKms#Cu4B#nJ>z>)Zsvd9%HTB>7=nJw=n{=uB?x)qi2|@mo`dMT?=plLNQ@ zBDX&wh#?v-Wl74nU(l^$2YOdZ-UZYfpLN2>v*{s4M0x&-J9-C@nmDjSd3w5Ftop7J z^9r5~=gad?RdM|4@zf>rnNT#Sp6Sgdm`=f?BuW8dkI7g#*_|J|9g);>-%9Xu!5$~( zti$HA9T(X1#mIGtvL*JPp{*P2Oj0lpwfgYk)@^e8+w~`L9LKpD-ZIR+IXr!caRry1 zQAfIB6>p%Rw5t8?0q|uCU~I<>G2sUc3c1zwO3Vv*wsTTI@iHq!Qy0AeB$0+DA3?tE z8;apLNy{>-^Ag+>ZN100;vRI4 z25bu3V*zlFFY`gn-9>8k`=Rn|5g06nvmE0=*4$v&D$Y1JqccMsZ6~t|J7yGDelUjf zNrp>9-tp=>N!shpk72m^I8cg!@}?W0IF|yyz-H%A#!p?0rMY04%aK&c2afCq&J9|6 zlJ^{j1uteReTe-k<8p@)M_zF$)ULvX+SStqBd&6MIZuRehz(~r**tG(TgcXU6$T)z zmauS_DAobzTI5!<6!A}ss-)AdsY3hF2u*XBsg%)8v{#W8Rrfay(F!*j2Bt0Tt}5c4 z!XjGc)l60_6GxfuVWRR5rTqg(eokSZGr*j%{I%#v?76B4T&=wz;w)yUW`5Ph=PJ%wt31}aTGoy2W z%PNC+KFmmN3i)_K32{o_8^8Sj^AqO(`nw=T|0MP2{Xcz+k zWW>ML6^aYy^om5w1>iTjZ>o6#`6a;rAN)M`zq!fZ@U zt@-lD!;3cA!;B400N`LpiNeld!D+q3n)D^~uT$%NKO?!vI2IB0Tct`ISDNYj>uEM} zT<~FQ(TEs}?Jp+UJTlV12A3G1HP} zxzy?qhA7Az)WX&(ql9D6 zNh_?0lPP>Ut*+HA<>#S@ye)U{6DHPn=a!9K8`vZV&E~M(9md-3>&bShmp{i#VSHDH z>;`m_aZu%?SHj;N5PoJe<)H}1wU1#K1-|4I4CKlN;uDXz#=FKm)^w^ z#ecTV+E!%}+N{6lL$-%$;w-0rOXM+~`9D4slaZW9UHx`o9edN{x{QZWj>VKbyH?Of zceVcOy3^)oh;X*VXrK8vC#^wM4TO}TTpzOy!Su_AT)3@dOH+Z{@B2l}Vpc0SJ5!yv zL4&z&X`Tbk-ot1;#Ex^{i$iq=!M4WI-RF#1!SBW!EM3=3%7$W7pCO#Tb4ID5)srAr zv}yjo&9lPyEM32rgb-M)sFOctcoo}QRqM8kD#kv2bAxtjkp`?XZm&~w+F$LuCzjq8 z;?xR{dc;qoe5;ZbH|!YhZHt5qyDidOEp7wDbEAUwWk^Zg+ipzFtW##a_&7CTPO8v^ z?lqk^U07;+Ag~`AUdHYeT-0X{=KRe=VlRj@k;)l~Te*_G0C!aj;V<;3+VmbTP{3t3N z%F??s;!xm*>=e`@F$3r68Ux_#W>z&8+RZmxjl8Nk8#eLW3sxc8&K@p~oqe6-)fwR>kd&6L1*>!|r7ZDIg?QKf!rwU@qIve7qNQ9q zF>ez+Xy(Acv|NT;wSMO1N`W3HLQy%2g{s66MmJo!{ho-}Ez_b3>2E$o)~fK{>`YKYqv-`yEXmn<0wWdx&8g+qWCsdpGRs)dPO)Zjq}JD z%6uDdAqtNhY-OV!5NTS7ygRJi$-j`mj$^#pPgqu>5U?mJ!%vG2bQPH+qQ^O%5!%hY zu*#gtRPg%@b9&4u9@Qp8A=4QgUzG08uQl5Ls##6<7lc|#*l>_?KJ(C_FTtktOFf6{ z-3VXHNc1`$XqM>!8}h-4PuuNaYb^n2ivaVM=K-kn5lyLF_YTCl|0m?mQPbCo5o#Vd z2W?fiASTeeo-cMHxzGh~?Zo@Is6RtGcyYBZ=ET`fN*Nd_d$esOriQwaCLb+muF7axD z-YutaNz%bX^t!?lK7`YN3^=wI0pIT=?8Io$c|IAoXnj~>jte2OAbcx+KU;f?=D@uR z(&0)b&Yd&idZp8Ud@6nQAw+xEa(uDy3vhxCvOv&e3DB(`Qp-Fi>^-UJpMBOTVv~RI zr7t=Ad{v;^LUWrDQhga3>3ttk@~jSgvULrKl-D>{DD*2SB$*LA6Hjkht9%!;F(Azt zMWgjyao62Qszeo1q}0r3b9lN8-3=VSXJHxP?w%PCi&xpZYNl{xH%a;sdk(+{(y+#8 z9iet2M+F~i`P7xEFHs+Cg~E`n+~A8N>_XkY$-%GM8@b4$lf^Eyrj0k9P$3|fK0ZQm@xUP~siVK4n9+TU@ej)c@dTFQjJ2YyUSveU zDIr&w%4LsNlw&1&(8|fcixzWaHJPN$MS}vNO%5>f7ROEwI0;*86qibm+Fk03&Wq+4 z)G3L!8{t~~xjou%fQR(>_@oSs)$LM$a zrKk7zpgP^OTYf`P@Q2HBPlUN!nz@DG`c8aV@5N zne?zM%buVhgo(&CqGlz368g=HE^to6Q*K^(w_{CJuuHC*7v8(U=8fg|qT@2^G4uPB z@Xe?vC~jVo{N{+Le85fW?$V(c28JtaI!3(3uWi|-;%WCxYhTo#L+4L?EBVfn3al$` zMoJdKF``P>Q3o5|%;}*&o$LO~Ihm-%I0Jt^ zVnJCfpJm=l)1YgCono}lH5g|#u;#rHN@gahM?WHOlC$e$vvktc^?oy(a&XLFQ z_iBZh`z-J5%XmL&D>Jw4_|k5r0QPmxjr8o(tgOqzCRpZwNk4qGJ8!lW;}$?xTu*e^ z*!W7w4LwQ-%n}zcY7eEt-vg5&>5((MLjjQN*`;hDw zGV6AP)E9*#`NT^iAwZJYLHqV3^g*;QQ{O&DQQUd~Mz3f!>it$soJT-inVMip{diT# zbN#G6-W)Pv?O-!;Z#(pBr{cFCeXrg=Yj2_F=@YiM@3QZtLy_tzX5w8jpEI%kZ~e#< z8IoLd=e&W`>ov5)b0a^#()amgpG+SBZ>Z;FiohM%tASc=KiFL*xyZ}w%6GJ`hEF#) zvZd(3rOi%X%5srKphidP)zt&hpgqi49(tO#5zd4Nxu%ZP0M(@*}s zK=zbSzHnpvsNk%4rZf9Wr!v5bfI@aq%oq}imo>l#oPvi>>;oiMBn!h_Lz<+cPn~x7OOoXBmeY#CSY|I2NN9VvPMISIC0h)<^uIagKmU zxaM!jr7M`6*hm(o3AL~1B89NQ39;y=u{8C7FctteFVg8QjU7?BKv&Qmz0jW0_6(bl!JdIaOCzi?1Q=j{%g%)5u7!?UvvwjB|io~%3+mNOp{W(|+R zI`eXKAaNFKDQY89cghE?#Is6DAECN4qva@9f28%M4sR0*S;2qw7WMk(vI`XiODbp5 zJnDrX?si|kBjnrovGQiW@7ATe&Py~+M+sbIGtR08W1Hab&hN~wfe=>SG9Bb7^MBd)_V!_>-J$SMKZv;l*rIO=*76Z^8GhC zwNnC$qsh>obOXWWIP=ED>mq`zohU@dSFOc>m^Q@3il6o^x=glNo zsv;mh3>i0==uQ~3PJ|j4mLtPq#XZBQpcdjm z$(*D^dp{=pl6=JZOmhs=rPo3<7;n8*kC*X}UX;5RE&e&8N5$mJN{!5Zlt11L8#!Ac zrN2l%6CGXm^X$%kNVNR$fR|yPaSmNfY6(l`UAcc z;RSgatGrcOM|kNP>iH6#Um;4TtMo$tA4X+~|NT7tPqVUFiHgFFzhrK#`ke7F|4Xn2 X0H)lKm9J2-{R`@98fsLlJ4F8n3T8$Y literal 16623 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%0Am&KkqEmYB$}S4}QmIAxV-nvKxX zBAsn#D<96G-7qmQFtGxzPcEqCT>0QN4c)~4@$1VkedJJw3LCX=ZiOkELSIIW8rTeM zI7lMZ1;oINf455zxpaVO>i#XxDn^EeW?OUJWqRY|I5p`)v$IO^^gMLwuA zXsZP9}&(?dx%rZ zgmLX00fB-SpO;&Wmj@6P9{+SLRLxRV!}5rd;&2JRkm>wWWqZ|j%qF4^h>KSTO)I0T zVb8zz90~jls|?hWgo=LM>*>j%(_$cw8b}@<)Fjf0l9R$f3dnyc^L*u%=Xew8`yQsJ zf3oPKeSz!$2d4P}L8nbloE~A%%O&V{wsKW|o2Z^OI?h#TwL9UJBSlI$zn*=tWUjub zYf9_*2p$I>Nuh(PUmC|%4=)t^O*#GvO&rPQ0(4$%fuT$=g|z3T^Xag(Ts_zOU$VGy zcH4*VS8yQCu7hh99gu|pV0PuA*@l!Lg#iPilri}D{EeQ;Mmyoerjif1p^m9PpjvWr z6p@@J(<#bFaO$9lT(GieyT3etOXphu!6T5Fv^BOjuzx%fMlBH#Mu%~tA%&k!edpi^ zk=eW>W^&n}x-+0~Y9aYCik$pFQT``q@v~(EK@k#JfP-{+WO0K|tG#^SxHSD@1S?<0 zJ5*ff=17NZJ+>`xI0+6f;lVHLO?*7Iw>P$L(%Z#8paN=*F$h8L3{kC*tWKz@<-er9 zUrb_>Jw`}zCzfh%9(FtegBP>!5*sl?42&_o?>QjSl_&{O`@+pS@-9lEjej4F#4^tv zt|pUO#<2CS3O_Tr0t5<4G9=i(@{clP3iaKSS0W<39|Smwkd^Yd$=!?!2+!c|;4%`z zQq>4X594Hvm^ouFRM>UmHsucxvFS-@K73f*WbN=Y?_|^NJ-ob(li6kpTBl@+bm@A% zk5#g)VC3hU&KK>?H?Un?`sZQ2n$CM?eJrVpl^|!lJ-{BervVYVx@_v$hg3eCOY8&0 zUY!5#kKp-KVCP)5uCFH{8z>FRIf#PZa-M8ORw?|m%8T(B2=+j4Dh>9PR!diA3!Tz( ze*S+~-D^|;C_$F94?e=)fhk2hV@(%~XJW-?qaVzWh||X2#YN)rPDx9j3~xaXZ|j{! zui`L0Nxt_*$YI-W=W9jpJ{-Ph%n`YEUdRy2*X&U7<{?&ad807;6VKWK{qnFr-!Zk%SM&NNsl%x<5H3BB~ zqMw?oKI-01+H_I>D7{yS3b5w8kwoLdI3_%r6%W9ls!kN zzH5o!JEb5&ITtkqlCBk}FdG8X8mtao*!fLlAE2ECcHGif`9htCcZp$9_Zz%5KI#gQ zV;}_=$I(w?<&PNj{=xLK4sH{@D#4$E#cJ+pNkx+@?Cchn?a;~0k?s*_WU*1FnE|fx zETs-7q^pMS;=?JS!L}UOp6gNX6-+mb=?7laIip9pIHpYp0&5;`UJ-Ehe2gd0H9tht z0w%gNXuyVxLM4s5vQILqc&owhq0}-V21P_y!~KI9 z2xyEhZ)wKV*$qf3AhqJoM4|E=-!D^g9=5Mv_-On3;UV#g3^K_H_~_n+9Go$+;}y#s zUO+9BL8CY-cM2uZl-I+@?p!|ccrm^uWP~7n8JSN6q;nGoe{Pg|F@E?5%Q!|;yNZi# zmW-N2ej%a5;?Dzjqa!KE*(#Wf7QaMmmziJ&-9R2BnL1`x(TTApHAvvm2nbkifnr!m zvcFuPJBVE|>%LHmd?!akXBS$Z|8XOAhKU7Ue&(7M5Oc2)yFFn~9IhWEK*gUzo5 zWMr%$qx#BhFqH6}amYV%F4NPexS^B~HG)GD!HfYQrUsg}I$fBruU>dS`8N2Mzpy<% zSjN+`n(D$TKrC@|OB`9jsgqs)3^>G&GJgGRyW*BT9={S3{aExg)+7iED1OjYJ{L% zFPJL`Jf7y|92d&xayC{yU6du?sS;;yca(ymMv=)Q2Q2h%1_;V-*GvyQ)ddc23f;J$53Jwp20IiM=YnJCPY2+u9XLMxB0`<7_rC;|_}>9K z%y?YY)6iWb(m8o0kiSz`csGT|h^!W)dpO;<;Iau!rjmdh4ub8R@5=a&)#y_HkZG=x z_S%~LmETcy_i;`q=2I-naG$3T(klgF;c*JfkbAz#%6l;6_y>a#Il{eV~NZ-*md?1vfA{?s!z*@1(DzZ1W#GPBhG%+n7H%T@6(WpemB<$iBOwo6hF;PmC6(kx3jMk6qHMq7mC(?H>QS}8CwuXhmJw|P<{Vh0W zM@INKrfHXX{Q|uY)WhWyD8CO4$=GD>;1@|%4-aZcB}k|x{vf5IVgFN0h(Y3iLHkHE*EXl>=+;q9j=P3I*9t{WYO$Er$xuQ#r^4GIaR*9&lkq9DJ1b@qiR*#N zb>~gYivH@X&R3YQn}tME_v7N#vAQNVZ@r3ek4xZs;s4n@%|ciEqDeM*;qA$eiB3ZU z50G6-0Ez)1h<$Xqr${5Bxu+RW0MuGi8IuVbUD~|e`Mqty_LtRq!}(~mu73IYs-=)^ zNtW+HCz=I4do`swh4j>B8Ta9@u;k0#&i##xXaDbxoUG1`JcQG)-M}P_Kn7g0n$m{y zlL16`Gghn+d73FCl4O7kL#~3+)J#GPCF!7GPsR624%XV& zzbxjEc0d zDUeLYT*oFsr5suq;KMu=?JmuHJm+^Jg>@6Q3uR1vLEvJL{I2?*B<7nWaytA`p4SL% z#aS~FgPSphMHaHreZA5^J^1eGFu%5l03vMsVRL>qE~~~lH@vHQCwIouL4ID zQyw{1X2L~z%PUZO=k0FHD<;o=_@sl$vJ-#{6~bk^{OpsttBilb{`sqk@!wQ2z;HFA zX#LJ^FaDOg^p1h|ymmn!N8;K_E`lj=k@+FT5^I^k$3b#VK(kG^GB5y&(*FsfQ>`wd z%RQV}m1YER{JBF`%f}>S=!)sVT4=jp8l~9EXA=Z$F9!#dCgCu}pqT^b@-44Ia^}Vkm5+%BuX{<+(pllhS8Dv}i!sn^_QY z`J+hHpvx~yBOEni-|!0CNd7}}RV6n>VnUNAvrXV+IuXyZvX~}GQO4Ty+kDW)DN;`b z>h$(E%RpqDrsa$^TiOj~4T>QZ`wAnDVIe@MN@O0jy)Wsn-M59I$1l|&o(jg2H{s=J zKJuh9$wM5B#c@k?b$C&UfVk=O`a7MgQ%s~{xYS75@T1#Y){n9q>WaBB4MB)AZ%Sv` z-O$=3G>;0m&6d$QhQm=JIuF1|)9ZTZba>U4-qz}1U0Yq9D(vAy7^$2KT*Dg-+@y<5 zssTWpmm4ZM8pO(=7gY>$g!%Q=+U|8;u1A+KwQR??F)py3MYydck-1=%sgM>fV?YQ20uv5@5?=Ma``h@TjQo8$6$GFj?!$f~-{4+t=N&_=;^%y`;fZ?!cE?NiYqHZU1actu|M(TYk4 zLeqSmmU6hnHIrU#E|7>3%Zy3ps>AwmRGVFN{#*JK|vwLwiv_)wY8qNSDmDB7xEpGEc~Y)#WfQP zkO5w)lG4u@Fti}Zep^vz9D^}?bOcY7{>Dz?THtX1!M$F;o;O|@FaRLv-IXh#O#jWU zojM53OD^94h_>HV_5`R_Xyr#d5mvT0@P7TGc7@1>hmHbOd0@^jPy)pLVx;l--Tv$2 zx_U|}hxd0XNf`)(asLEhJA1S1D%5SbjCquvISgA;fdo>m9WK8#Gddsa9ikl7QZjGw zp2@7d)c$x+9Vg1dcAincS21VtU^{3`!G2V;AB|)<=o2I`$u|EcgGiK(O}+e7_so@H zwh-uI{&_moedEE}Xy+hcAJw3;td-R%LSi7LSG;(|>I)2kfa^(W^r=V;RWmZq2o9tp zQnxFLdSP%KaZk9Gz|bxpLqZ_(AOw?Hy=Z;ns?WvC(OiG!ZAUhwNM%3{srjs5=eD4? z=DJ&LFY}wq&tU;5bSns}mv|`x74g}A^id=43)0Ueb&?aGiaB~_OSI)?h4=JxRAhHH z**l}vvrtlUN8F=YeB0VwWQ|DX{s=xwWV}pVNjM2FrD28vf^Bt%k}7&2_R*rE*G=9* zSZhX!ghBTklFjW8Gv$mR7L(da6PR|RkJac}j3qsBW)Xl?F#6O1OpY5d6+>BL&|4>8 zT!YZx6oKOdk-*6fLyO}d!MI*K$eb_&!-3eLaWIa^IA+8G!#?fsLWq4IL7s~Rk0fA) zT4H2BNf4gZT4Jhg?OwmfnOHnC(n#KhoynUD?1ks*ojb4*OQxPQR?76WVG#5;F{1tm z>`H?DViodykTshaBcSi>n#cMHtg}rc2vUXTdV^fd2{uxdONZJ$y)s;4Fz-b2-9sLn zlhT7z{K6w5Y8UGENPpWddhAC`&;ArtDh80sVTgH%hhgvMD-_=x^+ha1rg3Rep3~qnk)&^#3!gBRJH4Kxc{97*)HJ=rJvCQFPlj|G|uJy z@wQ$#Z*N!jjCSPc3IFLhxT)RYDxeOCmF2KuKrwA?U3)bgZkHSE+&R6h44vR^%ICCIXo!VSt3ft?CiTk{NnvU7+>MpjvW zkW0Ito|FAOhx?XH&H#)gq;Wzt*)Jgp@pC*-5^9Ftyw#N z@~Ma$r>U1AfvJWQ8uvFbx3!L?%te}Syq(Z*epSNG#|`Q}FJje9ar<_iTHQ`pr% zS4m!k^4PQG1GcYIe~t|+4^1hT^HSDuwb$n8q3w7#dSboK_Wi6ak9iCota7& zpK<`(%J3J6+SS4mZ9SbE+tUgC$2G!qyj~jkAASlEr2@vcXHSi>c4b`Nx1-pLPI6=D z8@fS>SI8#-7uU2whPN@@F8ax0=)-cg6id3U%E<5X z;-~`KfXAiU%k`feg}Z-_>gsVtS~_C-tI)g(9bUr@;*{+1A2k&vS|@>1(o$J3GVAeO zX+?ZcRfRB!GBvJAFiBn%OK0<`rjFR;Mq8T@$)9%a)mVbw9JgB?EiPyJtT+bBVk?EA zC%<3sqyCd$kD*hgjWzEgX+U&OA?^>ayM!bAQ~Hn>`PNwBU>rk@n~%l(G|by6a=4+E z5DLqy#Du5@=&0rn2OP-NLkYTG0FHY0v^6e#@S6Dv6lvt!pfx)Az}Eqz@fQ*8aGPJ? zVn89oHN%G~5eRMGm?n+@k|$fHmxn#KPr z&HCD$JZvM-A^ZE$SCpf~_p<-Ds(el}l=pU<4O$9tew}tCIUk!`puEP&G%MjTFOzSD zC8VE7{ko?^Q*#dK69AFuJ3YnjFUIv?D<0H2P~R;{WVb8Kw8ZFQcdNY-77-g8E2O8F zOAK|`{LYRv%J#KfX*@aKBG&zwHcC8E%&zpak@m>9YKip-xDBkjZRehGY?HqQ_x3@cJ$o)|qEDC`#`M;cN`LGx@K+>?a9Wxko0H zJdz`LI=!+(X?K?-3e&e$qJa+?AVPv#N4gcJ9|y?m3~Q?l%#|3=Xsm^BX*zEW2ZCws zIs?M>jS=OSQ#mCly8FLK#vG|M*-7GNuohbdQvVpc&(=Fd!}+9e_*MNdd#qeZ<98oB z90n{0Dv-7PwmI4M&5%eMWa>bBi|K$U;?g7Hn`be}OPLh7=;6bFe~{Bgf0mQXWtpu% zyM^j@KRC!Y)4ui0lz*#qEf)!m%lOJ*8nS1eBht{%_>IRW5E2^|Ba^{zC7mk&9)~s= z3Zs>M*N43Pg>O-jfDwc1Yao3UYM?2_lwZ4_TrC9TR&%9*4l$$&JF{@FPmY7F`CdYR z@~IK?odu%2Zo6vUb{7Z4#wf}5{6eO_m+)ykXzbV|CCQZ}gH4YjYaXF0K6{8r*fF>B znwI|eLDWthLs3}j{Ek3!T9|vxD)(=~L&{ zxAWc}L-&dQ3M|W*MU#wTVef{+t?soWHeQ7rgS>2G4vsT}=;eY%$%J&2c*KT~B)77gN-~5?)Vb<}=YzXfbyn+oh z(qO9$)52AO)NtOfKVx40Jk4v{aWsf$AIks5gt)NU$AmBPr~Vn)hs6D8a|j{&u8V>y z81=iR{32_5>=hl7`S_*fxX2%SKr&Aa^3dM@Ub{@#8=IgvK#D>8oOk&#{^&UBjI|~X z3E^X_eDR8_xdc4&48~meXQIxK<6NI(YWZSl#8*x23AYMp)Na@Ls&{y{z7yIyRf`{p zOT@x|CNH8n*~5W?feV!?B>(YZwCOc4tmi&OWM}^QS=oqzJvIP`&;@4L(Z8+NHWA2P zi2qgKgh%*CuJ0*9eyfI}*L3oLr}QxytRnz7k~%}99UY|0dClR=B?+J~+pgYinTy>_ zF{5v)C!7{_BZs=_$j%m&!8{7%W_Bt+5I?J9zd+GK8dkT9Ol?+(xwpSDQp_Z`-#N%- z8-|-&P??4R_*ezndDVk|NR`6gA3b_erXRm7gLGaV_`hfPaAs}zRLN@9*9$XcGoko> zMd4+eSdDcfzh!s$n7VrzDeQXEh34>M|~u406(!0=)BVpw8}6 z)E#~JYfQZj?5m1R_kH({==~hyL}cT7a7w10&H!CVE&=2*JKIY{CqLBp!~vnRyZ83M zY@|-abXeA*DNUXlMRI2T^KP3t&P#d1SJuGQ&E5x@*0YOJt+L3h8ehe~Etf$-a?^H( z@Fs+u4~}#99K>YHv zZj`uh3)c#79oI^L-T=SR)%7QSz(;=ha-gstI8t``Qd`R@u|pALpNr9>%s{h3YjeVs z8ohk?MS6(L1Fk@gGFw4%965W&`~c(t_Q{>?y{NLy zpQ$OTI9$5ghZ+hY#K03w`8g4iw@dxYu?Cr#+L%uKT*8P4;}5yrd@=Xeig8=aM71PU5UIdIbxX;}etQ(t%c)=Tk6U<^qhmr*?w zX|-@#>QFl3K->cJPIOrrw^){o7A^*uKDtBI3cG!u=?CHlm&lH8uQctCo+%~?B$nT{ z=9E&fR4v`qE+v<$a?|$PCS;k2nf}=kLOk+{F5$c?R{ZsL*-XKv>gqMz%l=1RdzF2@ zUgYKozGgLFu_WpJajP%MmYH}UATX4|pq}ek;$QPgoXw{@Ej<0&dcxznyX!$6Sum&D zI6Q9a7s>LQqTkLlXky=jqjI>=txuy58IahYtqADV_irpRI!tcN{@KZBf3oF{fu|8w@$ir^t z&>YC7IlxzdZ(JS4G~xMjZ`bM;PO^l}S)^iV6;gu^Az#$lU$kMyco@VLXg7#>FwDLD zWn?zp_8}egcG`Z+iyrniHT8IO#(5d~eUylm%mk%!iPHDw;VRDk?L|8Q)BVloOJ5YE zy~QT1CNm1>!nD`(gi;an!yVQJ=Z6bx5{$$MqVG!KStDln@lhhgf+%-|iH!zYL^kVp z8s-!>74o+=qzH%9N;)I0c74fpIFWHV5Yf9CqZ3YUAyy+|mQmw1s66%1vIky-(qQSC zKn%J4G)ACiJ-oOGST`!&C_ zzzu?uJ=ATu9A|&(HV^T#fpQ_RI4~4eAF0KYZcJlmC>BJ#LyEa|LG<=gZ3}SrCFC~O zsG~y_htNOyN3A9_?wS0jMBYY?#^>ywKaZ|ykwP6EjBRW1F_k!tPnT+`4I>u9L%Leq z|3;oDMgma@VENyO)#vSBrNH6CH#Zq6Vx5c8-_rgzn0gbdJ$1U53UE6}V%U@Fj3nMTWfJYhA-2f|tEw|>a zv^tsP#-NeXaG>70KjpKcB=LQ?rvyA{LkM+~fAteEv>F<@V(5X1Sg6C9iE2ekZI}O+ zb}CrpX3)jR#k+iFI@SFsy(bvHGt?~laHo_nVm6}H!?9vQg0sO773LI#nEy2hCZ7zX zxA74c?q^woE^Z!S`ZKcJK6>;K>|PQx<;0X{FLF3{QNQ%m=Higr!P|u5&$w62yas<1 zU^12K{ec_mS+@SrSA9CZA+g5QR0GEflahj6?UOUs~yVpGF87&kYQa-%9l z8-@Igf5o(cDi==v?RMn+rmnK-#Q$}62(JOL7+B~ZX>IYtfk+Oc@ls=c=DqCVFqq%t z#IL^_ZOST%pO__xBcy&y|MnNMbg;;94{U>5DU<{@yhl93vWdqVHb6Kfvw>RZ@u+&v0M1Sw&u13yL8)=G9WeZT^ zOZ^3q3K9LcH_&@K{&~CQwipsaC3`sV+VCah>f^vWz@vYOQkI}|heR+*4?Ndb3LHko zE{pq3us2!dmO6C?EkKTo^qs zlkae6d01gX2~#ZbxUMc2Y<}ovE|Zonr>(^<#-YEkb!0CG2ofziGWKq|Pc2YD5*B{h z>h-|u)h3x}nw`KDIaAh4KSS39xHIqssj_KjkIe-yrmr6?cOQv7d;(t66gNDoOgjau zC@{M=#@C@5v?yy)gyi>y;&R8m#5jyk7+|Lfr=@jpe}o#-8{^%gA2Y@#TkLMpj;@>V z3E%#>8<<-`T0+7&X*AsQvf}y?dykRV9%dMSS}uRKZV6UK#UUGi?usk9ndxfXDgW`` z!REsF+cN8;>zkA}85F7~`$JfST8DaM^mA#zXdxOwuZ#$<^xD+X`xi5z$DZb*PVk|F zyZguHe-v+*eKonp$oWvDF%MyU*pHbgCO&pqBkkyTZKPz9|4B(_N!5y#gTDN@LCH`2 zj*j`cG7SoUg8e6FhQyRZab+GxK2YB^wa(|N_wYx8tnHa{?7#x|$x(L?#+0H@otiKmmgTal=JM!@GalElLMPI2aDE?gvE~ybHi(%{RHv zCME?^1w3?&j1g$s^>l({qQqCw|8N6X0jZ)eU(CS641Af&7Za}Q#f4?)6;|E&ljG(_ zIwd`vAp=Xz2(l@Of)&0+9TyR=&%G;pOUyG;;GD3yLk5UB$1&KIRD z7HrjuD)k-w&f{SElF=@BIVj)11kUTARj$QA{02GEen7m&(aGzX0!xoMu zO5(*0UkGyn=)Z1!?Qb^bT8#bHgRTVDg-z9VhSd~wsaE}sFv zkx&@Lwi_DygwZt^Pfka$aK&MfP~$%wG=5c(G2=j|RDC&>~88PV%mg(Y1Q6(9U$+~I21&>L03=PcoY-9GsQiw`^$ z*!kItKmEf!SCCW~?EFw4jXKuFe=Eq+_#3h{eh}g$X=X|;DH904$Y}PmOx2E214Y@+ zsU%c$j?E?UDB;WFs3%+P3y{yV!w-Dw7Xzm2Z`MjTqm8DBRdzj5H~W0DzgdT zMXWWME+X^WQ^w4g==qle*&y(Z9KQ)4jqa^z>`ptE2jB6qx?^?RH>Vp zuR!aayGNmd@FrLKfZg|r+>Rh{Z0$YSJ8IRWRH|2onf`8Kg7f&OyeD>uB`fAYx% z7RJvS{AD$VlBr=(_S6{{o_yh6i< zsKm^3Kr7&FqIPOc%!sTEo7xIF5BEQ=OOHMt9ZfR}L;c(qe>D*P6@gmV*m$p-m~Y?i z3te9PuuWu~1z#{QKY_?zpKxphepXo zuovS!B**j2S!^suGTHT*P!sxXM@|Af?H!*gq3VBO9DIAPj1_Wa)^{%-(HYrHf3n8P z;A!~WmmK*m%yC~WXPioG|L5YthxSc=H;MK?GiS%mf@{3>vHM!)BEl1he;IIo!aHqE zHKfcEjQAuLLxzfMPz$7Tt!8LJq2qlI669Htd_P&RWOGW&87yE1+xhxA`W^R`@!%gy z6tdyBV*|TCW2@Z&5=Xw|%%(Tq%q9axkxxJ7A-Qtk{^o|#EK+Uq-8XcPAJiorJv=#b=BF@OrC zMW8suQV~;p9~xzI0eZ|}SAdS- z{V8-|plbI& zVhH?*Q%_!nmbQ*P9moRcy*9LR^xr)1ztJto!;|JO#QwN;o+ z-i6)Fc!pa-md9*TSuvvAj7XCap}tayaxqc~a$CJ@M&SP*z^81`4&V99;389NNqqZg z!;hZUaiOMsuVb|jl>><70-5>kMYaht>!X<4S=(8kN3XlRuZbP(B`K&{EoWYLPL@kw zt6~I=|FhcxuFS0>@6AkE$45pm0N}U7E3u!BemqaT#ZvX6L9b)pbyBe&S{ z|Fe{1i~<_ZnjJP?h!MK}gyLWr0b%@m?XD@->xw>-feMHr;oF*>FN>`CVM;7!xLuOX zU(P}&m$0br)c|*l%zUkXo&_3u?0SIoUv+!xf53id37L-?H2m&rNb(wn6mY4O@rdx+ zoD`UT>Tha5egR=RhFSjm!5`s0n%fbYH8<4dpVl<7!D&@n4O{q68NA|r?uq$N-`4%l zI|?ae?d(rB21DN8lqdoiD>Qtg^|)ghfA8DJnBC^r?~~yH-3uRR-9^T_bmR$VQuLW5 z53T;QRX%2Ffk-cL{+PlAE+N0GFu5>4oVC)pybgPw2*W)sZoHYV(z4$555i#vZ|h%o zG|lr9NKz=j?9u*gEu_-~gazZlNB}8NnwkCE%Y_#q((9?xkoq;yGHUzn5CQ*58`-VPosgjO#_!Yn*LGJ}c!l-x z`d{mY$h0K>mqf+aJbQgQWX1lbbZtgC>yKwp+UhTR^#xOfz%cnR;+>q0jp~}4yZPR8 zg{J=;Ary0!8QR}j&bPVEVWz$P$NHtEE-~U$q(TDWh;G}7o+n)%C$spohdve$|E;95 z%r7tbdTG-@tT@Ugk1HmIyVDJL#6!?`Iq zpLX5z9SThc5ief{M=>=gea0HL|)Q^r!K`kzfXXY@eQ z-{iGRrzZ~J4q?6i6!VuRO$I34e$C*PD3eYkCbdcQz|yMR zRzF&J_d?97kxRBDD*wG!TjyDKW~`WzefP@frZd2|CKsr;m(fhiEa1je1zeZPid-*! z%V7N&ic<~#$LRa08Tc+gSqxE*8Rf{@f}6GQ&+|dt>P2S*`S-tXDTohHPkvm?$3q0P zJh7t1S!v);SM3_Fnq=V2$BlV!v)f${gOScNBb#W0@Qx1bX@X4=_So&H@8J?#9}C(4 zjjXEF99`0WW?5ORRHWV;Nh_Eg^u^E|TCMj++xm+>9CvdzK`DU0mn$1PQ}G8T_`y$G z$B}hfQzF#m9t}bx5v{wk?`mXyS~Al?4D4w}O)0NN7%ELLe>vo={NK#8Fs>qnB%?P> z#JwP2G$yG&kLl9Gm$W841UFU{vDvfpyHM1UCSv;kgczRIRJ*hOqBFL6jsj-#%jzz5 z&<`Tkc1hkGV1@KA)Zi$3g8G+wHWfS{{Ap1RzK*N)TjFo#-`}kq3*b04>;1w>fOWPzIWD%q?DNx@Xi&yHp#2)y zy@;C&_f(a`Q)7}vzf}I*Uk&{Cbc%T%0lPr+*7lgZ4UA|AuA8$_S7Tm3XO6BnMlk{BjX3^Di>f!tdKm2M#bW0j`%oRXU9C>5C3fiM7WHzxJwESaC z-K1_Ku)?ia00Q8Kc#krjXdH;@Y~@F@l>C}|sLVV_Xj^%FUp2slP0zIO z=}wHOr;iIaCG$+4ZeIih;TJZP=p@@T{b7Kw136L9`3qEgsNbbK6jQXyw7-5*TbTXQNAxu4BZ#gO)rT}*7{Cj^nDe9nt-KxUVc22fzxCUH@ugNK}S&A+ZbD zW&8^A-1PM=jYl?l+95x|rCvIvf><1-g-#i7zrIA|JpTF+6zRs0> z3Bv)|+1r~+q=`GJT2~M#QrGkLc8CXtwGrf z{l+9IDBQ5KUhr>pPD&y@MJ!uPVZ>~1u7%J_)d@B4Xd~2Te~-j}o$|6YgBzRMw?Eo{ zP6VMkM*{657zpmGgy;(>yje0>`=cN9;p!+aHhnYI{{J5FZhk6W);T}VQnQ{AqtMoq z+9UvY<**K#NP`rc=&eqeFuR=(md?-5u=Spuq9Hu^(6wzFYQ3GjIEJOB4I_c#Tu36G zj7IpVxULnNdh^)bqIB5|uMPFkHv4700G!g|Yxsr#BmMc>o7&dhgL0}415a>sb1G?k z4A7Dd)o9>gg+Pmz9FWb;&F!=)TspUGBJqi0q?U^tmcW)J=xXA#lx^ia3h^iB@U_(8JjJU?{VVFbb8Q)udd$YV|xS*@-uj!a4) z6ykuxXlkl8(GbcC>9iV8qWXLQ<14^A>toJIonazzg;=2}B6T>P;Mb;e%+Ko9YM0^Q zkud;Y+oFu}Y*X-K7JFBm@YPPjXDdGZqxEGI5=2+Sx1)j2-d1164k_bT0}scV`KwL8 z3UJgJ6#){CEKLVEUj&Ew%-WR$3zt*9`p{)XB)J=Ee>v67A@2)mWcR8X1#94-wGbH}&F6);v1Yt!GOkIhxTjZ()T8Rmmg%-`!7=*hIKS>QqVk zE_Z(hF9K4s2y?o=7K&8?488Gv?s<`7B(33S^^NS>{1@Sd8+KRD#HzsbRlnZ?;mvE} z)JqQ36UAoLtW7iK^xY2MzKT+zMPH6b;WA!ECqJJY&mRf@E8Uh_TEzh=ioP^H(fdDK zb|`g^PSkm8Mo|EprK^H+-$<})YO-XyJq{rD9ipaCE{FnD{K%A*M9CVcoi zxDTzPY@=mlIUEj0d1(2mC*a*!X}R9u%l?nndc)n{ z&&U5JBLi*v@*pE)lY-~Zo?-sgn?IyqSLJXuzHM9dg*`s?347xO^M$Q(Er%xAn^^&~ z*6{O7pYOGI(JRR%wdmWdr+~+Dyyxg-gBpFKM+YlWiKpj#KC`Q7Q)aUc%`+4lWx(4@ z$WoB=$_;)8(T7Q>g&mcRgtPPHM^Agld}3xjl~2?t4~=`h7tRZjJyHtfnW&ztCz>r0 z!G{s;U*A?X+y{pxICaj>Ls6G#!8K91B)F{(#;zY!o*5xh3&Q^lcUnnA0gItOT`GQt z`Z~>)U`9KfnEucV<5x0N1ymY<;VABCXl(-M(Nk7u7!gXv4cP0ff(tm2Rf92@EWfhc zv71PcYr6xBaMK2l*Gh!Ov$ssBA@G`RXF7Ij@wo*$W88V2b3Q&idFp;Y35HMlu~n>_Jeg-oUG z`)0-A7IOR-m<;5>nHbvG*r28+`1|Tnly6X}{h4hO0LtjbfBt)sLI~*g3;>;QK~OGm zp^XRL?rzsHsSJ(3k&%&ixqeYmb>>l<|HtZl8L3k|?9fgI{3i$ZCO+folB^Be*^Xwu`@ zKOXPmpy~>~?kje&h7`t71$b8S0G)rJGqz68^L3ZNBaTSpIC0tKPuQ3E?Dxmxk%@SQ zA{TcVCf?6JpXATWH>yIX1bBveYk#aC9J?w;9{<}xq?(ewfAR#MyZ`%&bLkW4pPjv} za(!{(n(%3=`nc3*eE2h?ZOpT4**&FYm;JY*f6tZKGoEiAU$$0)m6KxrA{d)xW#6$E%)QXX(2Ka_#LWE5Y*(uc?-W&*l1!ct5YDX9-R&xiJM;s5z&G z$f_r+9oDlKe)DffWF%#`uIv>C{?}gs-RYoT=dXT_}71l<(_5xz%)nK>CmWR>Wbe#2kizFhNj5$iM*Mp!vyMW7bh|)BgxZmsD`xh$C ze0f3Xhx^yYn5Q((f3d`WR{ccqCMj$OA{GhXSFca-r%S*|9B)iYk(i==sJ~NGnd;DW z8uKBwqrp=rYvdoErqOLgzddyI%cYkp3*$TF2~gCnY*;R6oX<#HJt|z_=(t*!$@Y%s zIg0x!O=UV>3;T|QowNkYHl1wM!j42?AJkjzYRS`$)FQH7c0HJF^q;EIcU$p}6~1|Y zmxQR4>2^L zAL3hmS?t9IMUtBzV|hqExW2@UBdOmwulvL|?!0f#j_N3zHYLNDvq&7;=epJDz%tN( zjC}dW{pgEwdoKFIjA-@C;JgkaV!FKjXf{W^)+&MhFE2;c#AVg|UYSfXz8!CQ$~+)* zjCh&(;_}#n|Fi8)nFP<{HG6Wq%lVp;##%EatWG7;UGem)8$I%c2GowON5S)wRhuNd zP>8JG(0DBl8w%OGnzh!{Qir9*KltoSv&dbaNQ@C5qD0TXk=}MIOZTmW;jxfzF?|8M zx-@SQ@FcgOAYfJ2j9!h~9yiXm-M&8yr(fJc7t`H+AkSV<$&J9+($z=TQ>l4d`=RJf zRu@+&c$UO%YT{qb)|i~^k(GY>cP*Sx&ART6b)tWCRNtHmhGk5j5B+Hu@bMx{+?Hgy zDoYa&biG_bOezU9H~6N|vrU8o4i^P$qT+|27sc`ER*GaddthkpSX+@u_N7i;O zjf*2Q&S}@&^xT;wV|LY(c|-TRbxt|<(9;(D-viH z%!;tSwd=X8t}fYsM*dr@JLYs7+yd*B&ZKN!t+=8iPnH2p&)={^mw%WhwXKXuX{Hj# zjbK(1#rY4@!8H&DrqRfOR$o@mzOm{3P2!r%m|{wwJb@M$SQQ4AwhuDkn_w&^vqmmX z`87?*rdtmYA0McXr%{>n@1CrWeEtpEhhI~M|Dv_%rb43Ol<82ew864Cz@S<6IHJlw zx&U{6k~Qz9dCc8qkzl&0o6ka8nP;H*O&v&HGElBb+u+bl@H!|rzZ^hxP6!iAWTvUn zmlI=3vj;inwstF?fiMLg(sG)ex^J6J;g91()6ZHV*@+nRg`!~BH2^I1(@B9PcrsKwi=%o3 z{6lMu;Z6Bf7T=gM2`(4YI+HGW(0!kygO&Nl1}TW{wzS7KH53o!5#d83F_X!=ER;cX zc7r)Dn}yzJ9BcN^PT$TBHG-ujoXJT(sjIV2Sv`g8cS5J+bW#RBSf>GG%3}1#LXe7} zG7+xUge79@)gxOCdgdb)L>n@ENtoa*V@GHDM?70qvaG{u17!+D62>6vIc0nftfYCV zlWz98ns81W2CqNsy^RLFE-}5~u@Mlg&p**N-M=13xGC&zVQ6V71j1|JIT<5U9uo{t zR7l@G#8_oZ&Nr#O;}w|qVW|1gC^Wu*R{n(6*;jq&LWi0)xCR*l#prmABY60s8p-yd z_*0wYrP8;AVma6!d2{0dxZo>t!r#5^(}mOyu&jYmA(sfcxODkRj`Or@j6DKU7jIgY z=kgG~OYsQt1qYFjzdenCpK6W;da*fVEKWojD>_u<4 zAu>-dJGSvFp1IbGjRaB!DqV>kVjm*55795DoX2KqonwNz72EV|ltcyL=z${4CWmL1f~m-6I-?WwUUHLJ*;_7srvd8^Rv}yfleiDZb*r+nza5A*O_uQ` zQv&1P-%HxBE!-#zo|%|n%8EKcP2y zzq4Y_AO@o&l4EtsMHoT^GQ++LJ@?a3y=%Wgb&Ik;dW62>X=7k+6vTuJ$@RoU2dbY0 zrBD&fx8ybWDOk3^5kl3NrVVVtWK{c=w3a=CxW;TG9lC5zj2`XS2?iSNc!WoFe)hq} zuv2dd1v+p9cLO=MhMm@Y`A(yPjuv0~XD}F8q};@ta&?OP!)58P$H5amJWpHz9T)ba zT@ez&Smt!}9XmE^mwyO6iKKQuRhKX2yT#L7+!cUqtaZWa3NZ3b_#@u%_Q^ zguVYNnl?4*$$|?yxJ`{9&g-783O4AU(@-XLTudevRo``-SfD2(4^HS0PIc(~Rsm)} z2T1G_^AIUxQCu02%BzMb*%KJGXJqB;FyhcB=Kxo<1U#KG9W}|Uzm03{nffQ&vJ;To zI_Pl*qW7-uM6^*cpCE#mZ`7?8|19NH8EmZhzfWxjntBZp*-25QswCcS2l@yGA*dPs z-m`rHQ+E!1)m!`%^^da8D{6sBbuHEL{mZOzZaRZEcE@_!V5v~I>~ZQOdV^>SIayyY zxwMUg3muiH2aN@9F=G-!h`W;ihPensDo9jH*4Rsq`e`{oxGHFZeT6m{V}W{!Jmq%2 z2dT~4mP7W9*v5dj(LWP?@sCBpoP(3>zr{DsdZ{3X8NcV=Cu*U_m?a%N#SA_)@CA~M z-7#=BG%4h89Y%3+j0km$%Ng9H9U-KDdiu*K9ZsKQ(DgcCBbvSkax_o7kJ7)KfH31lr_V?{iS{>)&R=y-dNu zZkYW&l$8O3UfNh{ULT10o}a+mQ})v@YW<-Wy^{eP_Td+b)xUp1(GCiYkVry^GFuo> z&39rmKf{#yX$Pb5$;W!Gel6+jNX}*)xZ@~2$j#PK%iY`M>0%2i$NmaH>-XkGnE_FV z*6}u;<2q3RUA%3OQsvO@_OSS6V5UW_1+moj2?Oz6WJv#d41`KQ_d(oqcDuVxZ2yQ0&bN6Z0?MN{8;ia5 zaQYelAn{UrP!kT5sVKhSdQ13C`ZZl?xu18w@$>q7neo7w!uMkdc*qtZABbjGK}`AC z$@9&0|N7Kh!e60ihqLoL-BkoEJ9J0ZjT4Y{y^`JE8R$nD=c+|KVa0`va7L%$#Y#Hw6d+Opp+%keLosF)~tW6gL^c#xrCoqiyFoCnL2I%mBQ zGj%Z9lFXa9QZ&>A9oE3M_)9?aWOET${+nXQcqK;#MTH)PJOig?{qhjT$K`cOgAs^- z7>~sQA175+#(|V?e{Pw$-6;; zoei`QZMCr9Xpiy0*X>!3i%rpzc((Op&*AKcI)q^{3?K6B=x3O>9^ajFO6+7IX3gO4 zJ)I0fA9XJ3bC457^c^}$FD{pvf_%N@1+6?z&wwX443v;7r4KB(;N+#XHCih75ad~J z^vN3!;;olQQB5=%gK)(-E79P(gB5gzTSA>@c$*If znHF~oPlESz0Rw)1vLE^|XBa*+eqV0DntbS2(@KGEJ8yF*a>zaoyAJFKOwy+!eJACw zhYM~q)#@A>6$a`q&4w|Co0b)6bjDri?EV~2*%7}^nR46GNefruR;e4?$rXZ>W)!f0yjDuBf`-*nKMCch7|jzAkeD+MX+2KLJG|a@Ea^i+H$8$Q)HG>2)Zd&H#ZbAvU8`gayomk=+lZ z-WrtP7NmQvj?TtO$9sTTsrDiH<|ZzfUF|x3s@?1T!?nFqxvz-IsS|uamIM2h*+6rU z)pZ5{FbMv;fPnN&@as(!7da&12zuzZ_ z2iFZI1)-YIFd%Gx-SA>RX4Du{WZ<>+V&-LUNbU^mjF`U%@xX}_tbWeVSI^nE`~Y#Q zK!bZf%%#Ec_FLMC8F|V9*r{;PQqHD`LOu|JOGJvdPj%+=t=sqB@P)*IV(5-m)CY}X z$g#)i|29Ztjub=x%aE`QIa2&D^Qq?bOaHI=Uzq!zo0ipr%o$Epi>+yl=YDB#Xq7#TJt^fx~eLd5%b*Y-6Q6#JX%(K6jB} zhej4WtF{^mb`b@lvY5_GN`uHCsA+qS5b@#Na|mt*It+m(4jz*oj;R_?7(mV9M-9OZ zWlErTF(6!l=rjm^_|2tgVW^_gMmZ(0 zoUnPp&%ALEvN&L=SZxg;O!TJ{NK(|+IjVN!yxCTtdq2~HfY7UN@mKf&znyawo`iiS zfv%sQZK8fy<0OMlKm;KiYK|qgzSNKH(>YC4NL=IoKv%A zx~%Oo@~f;H5Y4fa*V6RE1V$0UoIUX80XecldZA@S@obG)=`bs%L2nFrM@9yqkn&2udGDM0C3F{UX z|8IItS;g!fYlP*s&ntecD@Ti!AS0Wlj}VGQ&Y1u%Y=IcafV9Eop8(YnKFFE=fkB%? zQ*(_-bN-e?+7KKvk-p9nOga zkmCDsafo<#{JXvTYnpw@L}QUO+hp4PZm5~bhm{Oq<%q`V{XF1%o65==`h~EJZV?qT znWldU$$hAbkLdv!BrQ0$-TN`C$Y;xR8ulUPssm8{7%K~3Iu%1kdh%|2!yddB= zvcL%9N6>sLssa0zq@Ku%9ZOl+>3Mb3y^fSADj8N%1`DBFa_Vt{5yWJ|m&V7V;O&^m zP|;TRhxxtx^n$mls;H<*^aOas+IHGBfd~l`#GX^Cf$>0KNisbS$Pc%M``fei#c1P7 zcGgF1T-gf>eVe94p|XKI2>=2F)8eD>)6ZN){aC};`Uo;aCLP<;C=oGtpCo_k^!OA_ zHc0J!deK6@4C@%{m_lghJp~{_94{UojtWR(J;%w#NZ}0(hW<#{F8-Y<6%_V%sBd?7 zx5<{&zdHa%*pMmCw4^Si9~9DE&lnSv%fWzicAIP@N_f25G=61RwSIg4JkfQAquOoB zA<>`1I&`>wj|wZXb++7Czp$8k-7Aw|8W}FGpO#kGt?7$t=*SUfqG3_#w55K2%MLBx z`+JpLcSmDRrDLw&Z$(1uP7@kvU>jJeK#j7jZ2TMx1*R0M1+R)_z|h$66x09hoR*g zr5#FWjsEphS|Y@n#snmw52PWLmOcMlyV+qt(C2%q$HbzAE$Td=$^!%D0nQn2K4P!U?K*Ar?T5DgizA08QsB{tHa zU@T4q0T^Lhm&oQG34i2b0nfo>Eku?;h}mkg;zoL~PGbmwdiIHZBx;MQdiBnJ67%|GNn^ovvK6e`o;>D= zF?J`FL?#U5s3oGYevJcGhXeOv_Ye3tJcA&$R=X(P8Y5gYu}LtI_+T10tYVbv`QMZ> zU@RhZPMC(i8X;UgrO4KPwM}E;YJPq`le@yI1&s(e4B021o&FuEka}~zG9(+-k6QoT zmw^})&2+Ftl{qAeS_2nT2a9Kr7y;_lMBe?puFtCS3QsRmDB{!)dOm3l-hHGC!(y$M ztYIPG2d2j*r;{yzp6npDm3<(_uG-lgbl7>(Sw5>>{91_&2$n*S%@@r=UaaC$tNHMS zu|io%mQWNc!(1QEkZWCY?sGC-`RBkk5lEs|7l-k`GO&mn?ME|I=Rf3FV+>Z zN@JGJlqiNP3D6tX56G+?ZJAaD074YwSig{nlNIhQ8vQB8V9f6LpR_0e}jGuzpDAHhO?A={OC4RWhr=-eaY)=FL!nA5& znV^%&ETQA$%`9V$<+*m&7U)jtT@_8nDGil`Zce@*xR(hr#)XZ~D|GhHM4 z!ufqo^JfGs`Gj$z^0(W0j_=;@THy}d2Iit@rOX+t_OyihY1f}iYTZj4#K>c;<>V_8 z^poIdrJn6c!5^;KsH5Nmx2)^#Q6GgyOh)M) zQ|>>WjchaUERdq&%hv0)t2^7>`obL4-%3iR@WPSKB0S|^L>5Pyv@=RZC5hXo+vU!# zJOSMx|I5cif+6g43tL8EOIf_Oh8pF9bx)V%6Pd}oYG1kSWJZ+~N)bCn_K;a?WohIJ z!UiE>2`CQ|?gA@G1w8N6l)m@XLE?a`G!68;yjsZHoQOPLjpAm z1iuj-p@MKouB+Y6+0;2h0x7Ia9L9pi2K7hPY&V_0jC)lsG^VPCfdP49D^0QhmiS?( zkDd3G^X{EN)!U3ZF#xPA+SK&x&hxMQeNKI7{>Cc(W2q4?&3?gf51>wr80%{D zXZ^mm{l=R@Md}EqTy8Q~b~`r_gIj{Sl9?ka8hK`*pMPA@=Wd1U@9%yTBR5pVZf3CH z5X?QG1wRdJq>7h&dRgrrmNycI9e*??@@rMdfl5I&4^M;)IXQGD=|&NAG$Tw2HAM-B z5UN8a=Gt!-r1R-QF1-qJH>;2b+p}Y}cxY%)_-*DqF(RWEZv@WmF!ghc0FwPtsBdjA zKcg2jUK7UknAHr>xgZ&|_q1(jaMSRpiDTqgD1ZBQx%v6zQS_+;{#J(IZ+f88opJ%CM+G7*x$6L8hDqOF-n7Xq^cguu*D^PPi4g15DoH>m+dwu^FPl>I3e&b{v$Hvucdm&w1W>`rB>&_kRemSFh87W&9 zZ{#NnRZXPM$R*8TURH)SzP=cB;JhwhNLf23r~m?PN`FixZ=N5VcvpHW4NV% zMh(PeIz4OPAAxu^uC3~QUbAbQC@Yf$X)KT=>3C<{ z?5o=xj{1kF-q?k%@bkj0t-V~c+}n4m81sJWho;gCuR{>e7I4UF#L_!QxK|!%rWE7>G#yOZZ$jGxg763cA*Z z#c3sZwi~x@v#UP6F&|JpZa~F@stHle`^_yxV$7p(=*%n0GmTBDMiTSqW9h3ct(DImuFd@Td$TM|N9P;Y1q~JH zmsKoX-(|r$V!bU{mk$}u{Gsw#aKXW_oP-sP zY>KDL-;T4ybiBIC`C`@ckF*OtZmrq%pL`Jq=pcR>JC{$V?IVy3GF3UgB{>IvlkA%R zd{|#cXVekkqNiqwnp;IB?A6rJHtL#H2SY-R>GG<*=X0pnFK|0v&}j{Jc3aIXo2WLQwJ-buKgE^Ri&h z1R?<7c@X}h*Mm%dW4-EVy#aYR=l2jZY0Uybo00c{fRQ^BiLD-LmS)vPOXEih7DrZm zQ#wiMdjrbwHyM`JorIi@bwOh(MY(VY>#ybcKP%@|W{s+Ig=kMI!`VNTA%^bTs(=uP zpPa&!xH=S%8F;Ir;_dW!5dRCG3`^Y_^{-N@!}Ea&7>>NG>s~V1!n6tbW#0dF66! z9mT#VGZ$Z3PuWvS!mm#=-btE?BK&wTZT}cq2OW7AbTmTzIHa$V-RG}%zLN_DOeg*f zu(>qn)x!^?U9YFaR*F$X$o=y@++#rjU0L}j5M552al zu;l8yq%poSK~sO+Fwe?(JN`1csZC%Rmbu|ezH!;h-C1AptQYA6ZN*UwQ?-m&EiCej z)rS)qUz69kZi9iru7CkBcb*t8TQ}k(Gw5)$eMjMTQG_aiD!tfr`r!5~xQ}a+xcv9) zxAW(J%ge|-Pdd^*sS6*E|K6~%HQ0Kc91JnW`Xa!Lcn+@ko7-(G3=50>HTcwJ3gyG(JHHse@QGk_S`!dck|%M;LWNMnnac3P#JXj2p3A$jtXXw zB1_YGyv#=e2Fnm=k=ndo*7JvA@fO1>kB#Q&74ZPeX5HN;rR*3ekamOKJ^*HMQ10ohGy9{{^FFWR|bzkR$Zkq(6nb_T1Ol1IS7o zAW(ipMC)ajr@hL?=n2)i@yxpPTy#Q-W8p`11n|*&&8zap%J#AH6(v^mh#9(yDv1xB z@X#v^IVJLN_C`Y=pSwTL-Zr|0Xa#&r_L@v}vi4Vl_k{uGIUymEU`*hsEVN>u3czfxS8>ELf2Ek@ppX|4t#cxWY~5jRv7AH5pwMCI5b zgK))B^KwG&o}AGnDpoQMi4kf*&0#=Z-tF55H;SiVZU%-JYfB2u-WnzM6iS;IvcR0MfJDJ@ z0H3|K3jsBk(gY*bn--TdMG(Exj6)i=(ww}-l*SnPa4qI7%b_VclWg^T^XpHyXVpQ_ z{Ae_(#jn9B{}Vidj2Nt?SJ8hgFY4)eXGX;#YCzEG>*b&lsOQEY`cf`uV%Drb%QiPu zAHF?%D#Z~6oL-}gSzUvP@u2cJii=wlx(TrNqCF<@zb zy*!t>TlI|F6bkzt{QT(AdGeDKo|XEFzK#uap?PRyqb0g_p@ab{!O=KvAT|{hh6;2N zP3(sZ#ZY{7Jz@GCB8o^2NHbw=MU9Y6UlWgFmMaBWuhhb+>k-U1lZRB!D?fr_KHa3h z<*jFEu6dn(n^8K?vLorjk=v(JFT#g>Ell@QkFAD1yKC|fK)gtYv?ZZ&Msa@0-z+o^ zqv@c}_I95;JRWxM-)nngs<|+#jKZeIxJ0=D{9~oCcQqCc_qXw3fE1|$m(8*=bbz`% z-@ax>m8@kO7{p9qkD2j+lg%&9j7S4Fj{5%YDB#LCA6>d4M075&c*=fVe;$`y4T&9bXwE^I!{Fz^?yi zF^VRb2N&ry&^LU1Z5Q_(-(tEh>;u|0{YqgITk1r<4s|5q1IwP;`&4jAkkYuK@#;o>CL>?)~E3FsIoMMAWhbRZSn`In|@%@(8jetiG9u@{+Dv|oW@0ARy zT@&U7jfC;d<79WXG(G~vF>94|CocY5flG2xkgVwC?Oh~!^O@tEeI0dZf@`<|>!sX0 z{UkxdnO-A=xY4sY0ICgaaGpqzPt;S>=zrb&vDuxfh}g+AEN-S}7H(+aNO55_D2ZmJ z!Zq$&7m?X`C9)G;rmhY@&8U9F6YGM#>U3uX1iwHdNDN3^EQ6;9MD^t^xHGA79KMV z3%um@@$~eP{T$|O>X_z)Y0T^G?&ovMA!$Vw^!K#&3zKHSxF&ZDmU`N?wkxr*6df*i zCI&KN>PLMFC)s-kI>GWqAn6=Gp;G+*RWmebW2fNb+34KF7A_{1aL8-kW}K+0d39J% z!fDts$|4KI_1|EMeBkfXEBbD9D71Qfg&f$^+uPgz-d8e`8z8#URH!UuZksNRNBPmC zt+NxJnBs8tZBK4wpRdp957<V=iZU-b~_J06dOv?@Tej0{U$xPllf5MImt#gpjT76<#WZ;rfL zW~VKNXZ=7e;ywC&0yBWc;XiT*Gk{lL8Y&NREU&FC82xOxEb>V8vJyGur8F_8a}%>H z?Dc@sYgs?9R$?VIZX<>(JvLf|7=RkC6mE(gY3ur@=k3$X+CFEaMc|YEj$>DET$78% zEl5#c`~_0gaIwTWtfVemDpQKm2YXWG#B4J3ZK}T6{VM^=kT6(4B0~gY<{VBu_U25h zt46Zbj()N@F)yK0Sg!DFfxp!cDc0{hKl`XR_4J7nJdk^K&H;MnJ^F1+BTGbLR@PG&Gu< z?HZ-xwNe>L9EvgM{7TJl%7=zGxWmmuYa(B|?Y_s-WJ@mI()FXEwbd3zt(o8&W6-;e z*423b)98GCfH(X5(VQz04Rsj{3aChMq5CWsoP~>m$1P!oAD^5&_jZ>-?(en)sy`_} zwVf~CiZ;}Q%DWY(HzP-HsDS^_}>0+hQ#V}hIk?$r+O{T8gdy5VF!oxEicCghK>VCG4gkC5x zPr=Q$CQQ5TkU$UY(8>Dfx;?$#0mO`irG-DCr(zMgc>?iih+krv8g%W~+FwrQJj+>V zrin0JTNzOGz??1(AQdQe25377#HiZEaamQeAINvKK4Pe6w_SG6blm^^>Xv z-#N54NHC)e_6A3VLeS}ccnGmzM+V#1?TpS;A=6(H4GRttPxtNVGS}z_OBGDq@1J*m zSTQ-z+yeor_f@CQbp?m;S0jo9njlX%47{K=HeWu3oCIDeKp<}CkFT9WqJl#a zalpOstFNh~D;Ve-XtN{Db(&jKVd@rbz0pHl6+?CY8$ zbS5YWNivHHk`?vD=>a9EtiAO^v03k2P@TRAmYSPq*aPD_jOkbi&CNhsNCgol_Pc*0 z+i|GK@SP5v9L3O1Q8>2Flqah6ICOlOY@Fip0E*&{*c#ioAcx(bGvxwj=(s^`BQP+K zl-Y$IlJ#w|x>dgt9S<~J{ZZ)QZ!TiWas;Zg^Vix=m$TnF$bM175lQMX{ayc<(-~qi z;4}aphZc|X^U-rhvp8V4Fc%f-a`~3n1qc%Kc z?}H#FFiYGhlSJE!>-}?k8|(}Qa#aWo0BHgwh^u&nYxTYz&pUP+=@`ez`1I0Bd>|`S ziw-V_85Fh@)j~<%(R_dKHYU9l z9EY>nA+Lw1qG6EqX-l{>rsE?0X!{Rw^H&8Nnhcy52z5`T(mBAI87Cf^<^Ns=y+Nd# z!+i4F_;i0V-3v*;^Pk{moQi+nE7XbLC&(`_yt-Xrd;eUjRJ3 zr28zrT_CeT5H#*orugyccfLyO8}me;wJ+%*XtIO*u~c`LJALVcfN5B18Oxu{u@j{% zRe-EuD2tt~eW*?|sU3UekM-3_9VO?p;=*9&!tBF(2`zGeKq2V~V1}oH;i`c7?|Iz*BPwdsUPfuK<4PuG>+5I(P-_jJP+~Wj8*(*N;z^lje;0LAmAp1zmL1+}!v$JE&f8Nr zK;=)4%=aFT!^UqP_=%%C;^%Ydg98|v^9!`V+dCx3&8b@C^kN7ml9<$hbOftr8NsY} z;6eJU*F5X%fR=@K=}UlFns{~KuypR~4?aHbSGti`e3m?N;e2WDlG}wV>y+LOt#(KS zU1U=T*V(JhH07yQ7js7-ln%~*fB)@ZyEwb32nhhAOBb%(3f0cZbiiZyt(8>fL+kcR zigQ#*JM*)%Y0pc=CRqu_8`D zNHJ4G8t>M&U-xL`w&8LyP#WzW%JMjCDK|Zz%t{wNg%s_nkWAe$`J2xk zy(<54um(?DB@F;7%t9sWgXckx+;?}hxYNlD2`R+4yWvh^sW5YPO$D56c45y1!Z3-9 znb{ASQQyB~qSqN}H@)V#Po2hW%ii(MlOaaKgk_DDr$S>mp(8=o>4TO=#fQ690vFZL zxWJD4`WZ&+0H2A`cZ8&*;Lr%f{ST0jUfcbLJB+y8`)2hP5r}bTY_2P|L^O4;GVfc_ zn3cZ2hE<>6V25%KmWt@GFezwUQw2vxoBGWwQ4=DFS*izGTH=dBicLeYvp#xcZis~n zueH9(StK2cn3n?cPS0qQyQgRk+G0cBh$ER357JTDx-ZeTer`4DI47AUbUQk9V+c=C zs>K!8YIpbD9T;1PE^%b*sA3?+Z2y9MT1jWq=OJ(XviGl0A`-Dl(FU1oo=tYxERWv_ zsis)ucCWnJs{>sWYkf`=%+4eCJK9fhd{E(LZN7 zOY?D2&jpLU)I0B!+&|srY1?;Fw84Dnqvqgki)#$K>opTMDOwBj0vfD@;!(9O70u0+ zMprHE81qz^-p)$kUQ53JD4BW7*@6#i$ZX0ePe0_$`DEOtvO6DXAhODW7W7cWunJMz zl|fOEWgZD(iC|pCvY8Nhw5tKd;_k zqW|-36E}e7@;*5)1a}%DS@tgTy{q-h^V7vQ-~)Wq$inzkkGmp7<@*PZ=cBp7>y)y9 zt;wPuj%;tTN2hh_N0FzMm*whSA-W!*|0phAhM&YBwFF{`T;RX;Tn@G_@YDIrP1lAj zz9+OUB?_xVvxj=I>hG{wcf`!g7f^2^KJJONtAY-gNG?3XthNk|EzMz>((>Z&Q04i- z_X299S%wdd(2Upe_*4oRd>b0|30iA76S*HtDeU`;jDMAvEjZ?uC*M99POjN2fC`8jECB^D0E+w&EGej>`${owD96yqx* z)TN}f5XYrQDzxaRaf$O^_0BoHIQ(MC*^L<`2?xEK)_wWMq)P+@HU!<2n;F zz-9q(YF<=-V2(+0?Y|?6=GQ#EXl}MRk~>0AtJUXeaDKi?`KyIJ<=(ah(U(G!^5CA$ z^6IXGNo3zY%i0*V^>*OH-y=KFO|Tm&>f)|`S}uG^$l9Wlf3?&5Mpt`iWa&a$B`>DjRk=e58-*~ng@O9*Q#oeTqqZN8D}#uM^7y1E~{(XJlQ zK?DqOb;REe@@{hEV$6F{_0gz$?u;e?)k^9P=dTY&Zx)s_B}$^!cU2LgQgxa78d3z} zi(S6wsi~YVX65FZFb2NF{+^FQUVHh7DBD$CHlh&)A=bC^kEr)V$6VnCU9Qfi4bjwe z@hsQ4@!Thp^Nil5m(`?;cmG6@B% zs%@Vyvb!c=A#@@1rLK9pcF;t2JblUW}d?a#MW4#{cCV7yWd5r3wiJ4hxo>t=J7=`zr;hPha#XMdyOj`a8zSakkMe3K@tr zZ{VTcF)*;8)r7|6LiKgM|NUNK?U^q6A#~VaNqqM8<~62zm21bf17@nsBqc_X`-+~P z2TvV|ccvpE0w&_o^xS^>{+6cU)$)hOO&_s*yV^BR`lRQ5_V&81jjAD2UlhwGNIv~z zmqQa(g^N6Qh9(L%0-o{Ldc^~69i5_;ouA1W0*U^30&t(Bk(7*?p^qQk9~1q$jlvRxlpx)x{WCt8?aON8rXqaI z=H0JNWwD<-`q#Uec(l`~nf~-sv87+ZD#v3{Wte3N4+mRPe%yIK-H(^55I?ACD4-U> zi+~kW1#6RAL^L#NmWfOu^9Re7?Z^2c$NpkVlxp2)J9V%5zz}Z5$f^cA2S^9EptidM zrM&uWQ!p()EeasV{g*^XeK4jbT_ePn^Ur>ERyit*Xa2>xW+h-w(Ig6B&5$tk1SY0= zTGKYv9FH$S%>YL@B5NL4yS0I5st>$qjlkQHSJC#>YqI_F)D8pP6^UTt64wlm0$C9f z1r}4Gu+fu&y3_6y&hLV*mM`m~T1fc+{i%eC!g^B1u%JXR=-uS~=1636=#(Be{9TPD zfs%~&f90k;CPp!uj+r02vF(?y=UY3*3DTNzartKTg6WwrN%HtyK>sU~RiOieckX%_ z#v+f?rdbt28dV56;S6IQx!5TyWBXIr!zK%BrSC%clr&f(Ya(N&j)`b$Xlxnp#wPSL zc4nC(@R;)OGVn@rS&qy=6H~(3GjhT7_n#4<6{mk+`JLtFMT}3}ei87+3|iaG=>Fy< zrlm5%H1Rd`3alYkmG8FE2}U)B`!?@6bY28cSSM<=i<72N3iZCYFW2Q$4^T@PT8;@7a~djp!}nPR4vj%mZ$tA{aq5Ca ze0@#JmGT`muI|SjKTs~XW~rxZX}k{SoYN%TSwXTey149$m^cGd;GDxYDiP9{XCf;p z*;UuGLO!F5o1>&e1efb-dnA=#!2nzG@Yv|3t-yhrZZ#DOKUre(>kdiwr!Wz$h0u)z z_shyq`x+!;yNg1?Cz`=h8VP0%g31eLoVHPVjT{3$zbaca=GV|4#twOn>{Pye`#s#_ z9YhQdH^OHe9k~OjiEtZiY&~!%n$hBX5P;y2Od)@U<+uOnEr0i13RCkQ? zaj?HD#h{w-hk5@WA9rKdl?;d90Na(It>l(8Ev1edAL#o-$i2}9IJ3nt_-6h(h(4@C6Uz|>M$6 z=eq+e&z8n5N!e1#+0o@4Gf&q?`wDl7Sk|24h$<$Q{Q4LEn_&(eMN!lsW;Ca;TAwSY z)1&B&0HC-cvgq(Q1DaxQdzhn3A_1=0?jQfBRF2HhOigu3(J_EQ!MCCQ?y999#scyl zo?y`Chv$FWtsQ~#>5iCmH1rFli?Bk0tty?x6XMstXMS7aJmk&M=nVZG=^AIXNZ&He z-hD1F5iwLtJbpilm)|>_90tfgKO1xqb)*lH@7Fpw_vy4X=er2U_q_(?cGiXXKw!Eq zDm1Z0s{qAO9+ABWs(IP-zN_Pg`I5oIv(}(R3AFO?YpA zqr1C1q+3cxhje#45D<{jIeK&|-O^nG0)ljRr*wx>((k^%bKd;{+s?iB+~;{db=d^+ zx?FF&UpiG22aC+95thCQ<^NLmV|k;Dh%(2HoXn7qPbNQ>M94a07q*&BJ)5Z} z8Vs+kgAi@y`|yzeEUb&eX=Kg|L|c6zlMJp6ynq7*-vdW1#kL#?=uJG~hLMrIiR8KDn4Ih;1MJo7{KK|`lO)=a6p5PH;{j8M6lfBwF zWssD-7dG1zVFqt$^Tz}C2dFZP=CG`?XXZ~9BX&xh-mdfob9t^&VQUJN4l#);JHQ*- zm!qTEnGfonjF>A;*4m@XL~Y-i85z3FH(LXrf21QM!nCjeOy-$z&NG zo6y!pefu;hp71*P>W)l`+d`o!T88`u4VrH>k1+YeO78?E<+~*b3fBOO4PAvt$K?0d z%1Movw6u52gFBub==9&`dsuJ^jYK>teobMu8;X)6_2>5)-*RAU0+B&cK6Q2f{tc%b zOy(wJvFK`Hhlglt#>(hsLgXFaP;&GwZzSp=N@q=@32`p?eQzQ73-yb!<2Idg(kd9i zLwXxVWltGyH#Y>XYZaR446G&C@@(Q+Dry&L5i!Sfw1x{RDg?-)7v$zxa_Yt2%*s>- zr*j~EWdVVa`ln>(FD+d!Q)Cr2P~!RG{Ct`eTTChfv|7V&-dSjIe?ru49zGg~qwF+y z5v1t6$`jyvkOv5oVWE_2>WxaM*jD#!hF7Co9CTe2L5Or_XP9AHWz( zs!hq*bOVNNMKF6oiuF!EF9;;dM$ncKyr12;{}t?2t_t~M4sp)7@7@R~RnL)WfC3zf zEyx%sLMq(6MfghGzEV;B~A3M4XeHU6TUx3_8f6{?yUX_ zw~gyWfns6d;2|n}t%h(sZI$;NxaT}Pn1-JlR9IyMirO4{(Z|Q!Ca}KSP4*N|PTX0` zg@T66lyLAxW450952XGT$eEb*KECIuh3meRvHQln(9P;LyjH5Z^|FxJp6*vK6pHF$ zu2_JJ5(<61dAy7B=ulDX7FHg~Pv0$*+2ula@ zU+Ot;KVJ`7eNna4v*hKI1(VcCTwvc9!$ z6$Cz<_Q$QZutlVXX9THM+tXkohma8;Y+zJCA9cxPp>6vEc?5mE`P3F3CYF@-ZFd!28wdL-Tpw2t+k_~ zNZgj4fd)B+(GXayrI<#IM_0{2?-{hUcC+36TrexYWaiYpFtjcmn%#>ne)~S0J8@Fuu zo_{ty_d$Mg#$~qAytpMvRiK1MO{2V|ff`p#9#IOyy^Q)zKiUD++Rxm(0 zKd|(0RS_T~+Wc{q3cR?1Op5Z&|MY!vT3^k~bs$w~xkGNFOHfyp-zBqY{~KJ@?|FM2 zHK{?3i{ykT<-qagW(UXiLXv?LNCF1mf~t1&xN1A@>ypMOhC%auL`Kul9UaudipId(Kq>l|f`Y4|{vVSy!KR5m|Bsr8EF1tO6s*K1ZWG zEyiFLqKA>L$7AQ5=41B>GNJfXTb=Jr=oidxsG#jHuz=UB@mlnmHzt2>O>NZ zXvKD-O^C!QIYa2Zdi~zzlJ3dGn$SYn*J7(gnJv$QZ2WTUKV%LYi3X=<>p+94PQ9clej@i0p>%#V!?^w}F< z8Sv!UV*^bPwrwG-uP!3&T;Iy1VhxFwMAyr^`hSN!ERE^zE%7hsM#?hox%$?bM) zcZr+*S=Nve_3-~XK9nimTEeurTWs?+`1U&nx*HEh#6rqm+C@vda#8>uC2P-{s->+# zMI9u@p~jqrc}Sj@LdouLv{HznzNyS@GxS4Gyy{}^l@{bE$!pBHEb8Dof=Hjb~!em)&z zZRC<^*vimArT2Uzszt}3Fl*Q%Y4-HgSV=l5%F8S7P^JwYP}=c0#+s_wO*eL?EUNhI zUH|udx>4RL53A3$%3Ok?6-kS5#u_|J(mRiNph2DYIkOtJiAXl&eeo);a}?pd=g;-< zZ+W}@X56-Y)W(Gx!nQ0yPT2i03jCTutkba_W56`fa(wOo@k1r$w2u(TZBLF1MQjrv zJC_;>4*bTFxV4W;Cp%M*bSnqU;aECRBH#V*c#Ko((Fu|}U<*(r z$8D*@rq+aUkdP?7sNAaU4LP1(D%;n^?2u*gn(My`vd`q-Ob-!BbI!9SjIXu2XXq}^ zi5qZ};Y8@S_YhlS^nt1rhMmrO2cBm8kxXSOdg^#E_wmH*S)oGYLAQPQUziWGDK~uh zuC9s=YV|i2^xU}QwdDy11CWZ%?y5iMJD?f9 zYto&UTcuZ8kIb&IXm>x}WzA(jhy{cdKSkKcVd%nhB&MA%C{a8^;$x9dH)_qr_4e+3GH7WHpAk{cVLJ!z_R7roK;K=i@A3RM9L~Vh zf7oceN8LQ?UI*)T^Ru{ti{()uReIaQHjN@Krdc_;eB*%VrKO|pw-P+^0M0$(rr-)m zW*{gp*jM@G-+U)q^7v3f;73gdL*BY@BrbA$OAOnziJa%BYxeQsCc`5tV=m=jtYy50 z^!gpVulnXvCdO~*`p4oV8Mc|2vjGdQE=E?OT#$)k!0X?=(R)^nhV-w;Z~wT)_1xj% zD54PId)g;Y_g!C#QN&CH9vuroCB?_?)Nb8z)90vb-O)&n;8sj_MS>QISXlC&ITKm zU|rF^ZLg0@!U6(Jh3VQVe{a_P)}2KTOc5#@z!+g_-zWdKq(nOJ*E@-R+r++q|K9QB z*_16BZ+6x7B~7$oFLEU&Coocz$OjgZ78?523NOh2@Gj)DOk?S6;n=mO~L zFMO&3_7k&jWY%$)Wzv`DCaf!7(q4Bg7Cf0K$q5)j*fa6iR;DV$DQtWI{FJ@>mGXFQ zE-SvTS5nVjcBNI+E%D8KH(uTKA%wQFwkekN)#9I)wPXg;`POWGAo@(K2YhQnY#!F*)84QL%+|&r&toR9)KX$avS6=h)Db+rECMyILS z1(-j#LXdzgpZw$JPYRrifC0-jw(tUaG-(z~N5M1f&vaofw$aH5!H6G_gg~1WaqTh` zTl=-IH~{qG!mt&AGl(mGUCA4*FT;c&%}*cAK2o!*3a>Nuh=In-Y&rbWL+n8)9#TGk z8LZJnKMKQRa9%FAdJ~={-Cd3TUkea;%%pOCe}8qBv9oJJCPPBxj=(vDQPcgE0rM>~ zPj``|60)As7geQ5TvzXh)6&v+l2KT{hrRr3&ne>0UZ2j;V(`jMO?Rs<7DdcCxdb48 z{JHq6+2;Yjmos*!7eq2)c=!}et7lmv`{2?NiP^+@msZ8&YpC+$%O8imn~|)Rh^mUh z2w0fm-Q!-T5cTPlZC}dsTVR!Jd8x2|AaeCc02O5z9^NvPA5?3>BjNYsiV^K5;AA`> zv-(8DrP&VrrK3$>W6l)snmi|;(4AaXCa*qvS0Mf$ot`%R`)?V#ngSoeF=Tcc6Q(}` zMWtJ7dm#lC07zW(ihNdQuH;1}0PuiG3ZfD%Im9=?3 zB9^wTr4rS>?`$d=a7>7*kQu`~xPg%+gPw!u$>ZLPo}kEsUDII_P~X91?@(3|HqnkT zA8jvrR{oQ+=UWQA>Y~=@VGAI^GjufdEkl2YkW;wv^LuhQI>x-`xk`8q>R6S^M~PnJHl zBwE^bKm0ra2w;|3uyZ@T+in9#F@)s8GXiX^9Wr;if!|FhgU?SG^65vgg5Wg~ zVO;c9V@%be%e{sHJDvEwWHgbN{5kF)9GBAg$**5U+B>nze#^x!qZ$a^5({6qqev&B zTdDz0@*`gpg~BiZwj(H2eHhO`_5 z6R&nnDo;-C4oDLv+oq=0s6xPkRt}b64JH1vh6@dmQK!UmMow*u{1Ae!^mb3T?>a^( ztF*#KS_SrWPD6>%5^Z5OjBGqo1O2b&oyrP_vZ|u}u_&hg3z?z@h`dM{L_4fdk0~N7 z%9>IJwl@fMK#p|KgacLCvD5WVV;WD(W5B;Z%40gZn{R{u8rBJalt0!&L{zcG`+g`? z&-`6AaXE}GWmpNfv|HudZdeBbhcC0RTL@P^;JWs8-^G7KXUO!f*KoX-xuiQ_N>9vS z2+c;D*>2bC`03_ZQG7iYmzW^NmS1PsvdvAkr1!VI#sQrmQP5hbem;PX!H6K3uVBFY zr7>lZ$AABu$PzNP3~}Ov@EJ)Euf$Wq&Cc2?E^RJ1*9TeJ6{tC}CO-C3Y84+u4@r82 zkl+ca4(FYGzujD2qF?I!#1Fe>;)vy#ljhZ&o#txbAmFd>0*zavjt8Ogc0#fW;~PLF z>rpJ3#Ox0ta+=Pp9&>0hUq(a63Q&?k+lCqQRuLrsC=Ynd9!{N@k9BVU@J6K>#V&Ca zSbpTXj^VM8^nd6eVIE`%$;VP?|4bYZ^y{z@4onKWkCFTS;2A9b7eq1 zS?5uy@js7Ir(7PU12 zOB<*2MIC8^P!_QS0tvC+zG7z<#nI(?Xm*5|Ou zf5!9}3S5)WW^1n0=`*IItP|!l%#P=}Kh9^8iSH#=XdI*W)XsH$^QOB;4hV&0G)#y7XXrX*4dn^LdYU zhYaP38```Y{-iHbmf8S3`EP~B3CM)gfVw8uZP>c{FsFCk!;MpEz}eruBmEDV=y<5b z&s$&OlgSx0oH2slTIQ(!%F}V>Lz2})qWOk?Dzixk47zcBIa~157DO6}TxQg7ou;j? ze|?sE?aEQ-@cvGwR&1Y9lA3+Bz*GlNc*|y&Fvi@VX-$Z<)a%HMJOVy6Q8{0ajGG@n z+m-w=ot4s6sVWQjQHrAB7a!exwo!EO{$L{KWPTd)?Ew=jK7fIjlL>_vAu-wZgL|mU zCkxS><(O~jVSwQ=LC=u(&qqB+gdC0+i@{4idAieM0CbGpDJwxrYt`j;*SlX&n}MJG z9(u@Kb|vgbutTliqACajE72{f1(Ec$=L%weFyJLJ;E4lP)bH;$*EWw?|Ner;n2sb6 zpJV{LX-U7}1r!`SMNn3kV?xB2>s4@!{aHEhhqmTW60tl+$=?{QJ7L!8eZJp3 z+V#BdyRbW4njV$oaL?KrQ>*~R07Z`!1)ADg%c1g^ceZt1UJn#wDnEX)>y~IGgh~z{ zCbR~!Ks^KjqY>ot=!SD>nr(UV9VY&r58G!Z(kutcMvjfNRtk40M#E~w@Sqg5D708W zaH|&2$8Bil9vcvYHx2C*%wXUX<*87f!TMVU`)8Jpyh%D*cF|$H zYHIG|b<)F*$Sz|9V{UZn87|R`kFNM0BPh1^5}hiKPd1D-C7K5r@mO~|uXWz^mw2`R zWP_+W#Si45Sh>4*jCFPd?{+5CYZQ0{1#Z#4j&HU|b1*Xe4vrz9pu?k%cG*L!gO_q- z00DRXmyj<6=pW{DQsGM6rKsd6_6$X;N&S<_unGcO_WWcK2Fr=5e`Mm;DPeU9BF|he zyLqUF*}G{023`;!fg`v-QJ3yGo~eO&-u0tQp@uDO$lHB=N`ME z8d@(yp-OhG`T}ktUi&cBNWwbOPe6cNTqk26Cjph%f%UpTF$d{HF5Jepu%MtWM2;82 zs!NQ}T`(wg44jc2F@lV+uISWmRK3d%dRVkDRb#;kj#de$r%U`olnStII102EX4SbY zW#HsIdkYXdWfMfgvHE1Q^QX~npellogFKvecA-4UQawo!pQ56I2|p>dQBDUq%!bcg zXgg(_soGE;dyB_UKLj9G1rbN&On=pFOrit#Ghr=!-l6s0G^qV$#;1)um8)&>aclYS zWA!IDVAAj(kcNZdHT$;lCQ2%>6o|J>Nr1;X&DM6!%DyABrpMi5fRFsPEN_d zU`N?Wc_hC5Zf#S$g|s8K(>n0+r8lKChE&5JKb@=_>&i=VHSp_ejU5+&7ovL1p(s~^ z0>BzlRps@%840~t%vz@rKQBHE5qLawh5~d4F&f5VhY20V>KXjo{`&5XI~+W*JMeo^ zmoy1_a@;fZWX5*NlTak0e3~p-Sw7_jLrpIGxL6SFMeq^S!`eT&_J*EoN}?Xnu_u%Am{a5p{65V zc9tHZyDQ}gTkD^(ERT4{1f7`pTTWQ|a{EwxA71JxKCF?mraTfn9>$eI+{vZMfndjo zxS;yw;W^jE*3H zPp>?llsi}aoxn+U3K4ZO*0&5?^;mv+5JkmA#W6h3Vf(Lk<-D?T^oVDUb=jKSVE}?* zWHJGU09<;@d|)#o*YvXW+}VET<(b)?n?WqC7t9j;Qh-Q;@EMIhY9r|K@T}eAuX>i- zqw{bMXn25aS!iY;FUS*oJ|L6;vbXH|MuZ$Lnt^5-lV? zL{E0+Nt|EZECykO-C|3Z@p?%3^)LkrvYF7x1oPUTK$(LOdOT5H?cQNG@$00NO!5Xu zfiL{*_gu;EB+j{mzEf$+VrvevMLWi$sn~bjpICUT{3Lt^fZ=Erlpyjv4>jU%gdL#66C=_%WkMVTRjTEHri-9(mAKA?KNM0J0Kip zd>VxwoUQK55g3+giv7q(-j3ycw^ejzu2FSF?Vvl4orwY_d!Esb8)F)XA^ook;V}F1 zr>eFe4=*Vh#2wu#L8~e-Q2NH4lrE&40t4=79#j$=g0J2Uz)HeWs$AjoPL(vY?1KQK zyMp?!PXES-?LA6agu;ClWj$=OORfjHp9?-3^ves6sY zV@5?oIV3R7H|wWWi}fRKXVJ0pgg97_W`w({i?OVNT>bv{MZBT5^xc;t*2NHqpA(?v zPq)tl>xu~inkYnw2UKNA>d_eg?XTu=^>1R%^59Bg&xb3GG=4fFJwRV!nx?U>9BbN4 zq~vRPUu`s7=C8h`7nz-ufHLtG&8E@zJ)q~(D?nt}GHJ9v! z1DGX~3=bco50=WPmsLm4a3cc88+EtkF2S)%)GLj|%JkS_QnjDi0-_=jJ056U_#f|~ z1d_+3kVUW4(69ZCh&-dmp)yepeB%hf1D2g ziblsPsv&1o7{4LPsa=(huZqw+ynHlD`p#}N-#S@O06!cL0J7fZ(+Ol={V+xWrDN{L zU4NN5X%1Vf?uVs6_2K)%j}|pM^Q}2B`1$y;8WmH+&*+QisGfbaYyx>!c4DN&R4P9H zG+rUaTLU|v%iW`xy~W=$1dZFea_YLD+-b7e$oS|p!FHb3C6I%Go9?kVl)?;hffVWJ zfWaa}65$zHO6sY0D3G?7n8!wQ2a0yTjO%VvO1xp0~0d;k*DQ6cYDz zYe|g5=Lk38G20;!<7r68No`bG7RqyPOF4 zj73A$K=_HtL`@I!aGhcUF{p(`@2kp{fsLs6=tFj=MGSW+;__wNxaHY6<8H>!98Z~F?^ub}TjRFxab z%C}Y?aVK-T@Q`InQ81t|eqWvfvP>%yk1<Tgc`>1D}67mI? zAqqCtJ%$#nD3uh=C}KG)D(9zyJrtkq_jvxi=yh>p?LIO3O~)Gkn^c`YZa2Do+8^BZ znt^zaOc?>q8g|YEhR^oBa-DZ*6gHeIDE%QZ%U#}otk0emCNh>0`4|`ye&)tyW5VoN zSfXKkx257bA}$-J?qc!+@AYB=L+^HG^>0TG*$@yA86GQYP6n?utYcy618y_#jG04< z?(6a0hp>p4kSA0Q{p;s3Y`-37J509DzX(RXoKJ7-O9}89XR=JRi5rHab%&@SMk4%y zQDieU)02xKq7DII;4p>ErEhYdBH|F+>E)^dwFQ>Hj}JVc#Axa5{G2!S1AbxGo14kv zf0JQiQf;n+#;fL3k#7mg5L;EvDt`=;vXBhiTd8_)>N4g#pL4d7M|N~?=Qt!;ehV;hTMSruV<|l_r8oRR4yvp-GuK2=u(i*V?Ealjy=|T>YfC#h@B?Z7Y zG!!-@%U#ZwZ!DTnR2<1~{SKa%A6As~lY~@qB7Zb%t9*e>=1INQdDuA!BZ22tCunW4 zEwwm=d7;Zk8Ci?9TveSHu1a9K=y#gwa60Y>NtKoU`hA`>BBp&c9$`Duh~t*4r7 zGUPDOYOvMrL({Ay%ZCwf=6`Ur&br>34=RNQF1&QL6mDs{Em>M>Cs9MIt=^ zLs14gAf22>+ssHW%KLtAlvN`)=XIQVvgEZV+1Yv;w9oT_B>d7(I2a< zt2Z3H``H)cBQ6-*9ELOor7B_{OeM*cgfrmpBn9T(z+e;waEJ;T3JUG}0OFuVW$Y6+ z|KGtW0$A9j065{GOHiQq>oa<@Za*(MmxRUI#u1_qGQ)w53e4ZIlGy}4CkYV(U^xbcimEEskO#f(j8Ytk8@qbw`swCEPFVinophb+$l;%c-t2kO(k<#u)rxw=yULV z;&nlqX7RxWktn=Ea{cU12JMzh1&5?@emW-@U&RFtiVgt65U{gJq6u-(t@*Ikr0Oa3 zmsQ2O1E@~5b)@B>f4eZ^3I>K|ZQ`OU1H+8a(&afW%sWiY1KZplM-IwKA{npJQ$b}+ zO-N|EGNy>aIUifPIz;a-mt)Ll@DTDdDBDCLPsNA0qvezGk^w-1cBjknqWjIKecD9o zjEsT|D1d>00dRi9(ZqO)8{qC}h|+Y>r+?v3Er1q^1_KC)rOBPYOSgEOBHm?61ajOO z`Ej{7hOZmEXq8vBIq(0CG-ZIRsu0 z%P{$V?7KewOD&D&X$_7ZnW6qxvMGwPH&Mh%2xU-cxirv%j;i+BIW$iEX;AJPi;)_P zhFikt&#^(;gg-;RMB(A#6m8kRbnUJ8!Aa~fx$oXR_BV4>I%Yj*C$s+<;%2n>8{xLM zL|gdRRDqC^hBY!ZNe+6sqW$^P=RuuV#!`V(Aq8d$X6E{qjE-|s2Ol@kVh4T@xNDNJ z4W{nH>~r}l*{xlx$Is5}YR!2%jWaSu7uJt};&Pj{C!X!pC+2ii3Wm14-_=74?C>;9 z3%naZLumb4>ln#G%>xSGpGr%5Bx2Qu0CmzFh$UXUNl!s(4Mb9(!QR-YXPygKt19Z0uddxp$l8jG|{A( z8&vO&nwTXz_Gq`>Ui)eizAwApS;kplw9MJW%m^3@!sjP{nmbo!c(4lN$3h@3C;4~xx)}7d(-{ff zl~sf`8k5*3#J1SBmSPFMbvY)g)aSVUzFMs>bptn%zla1~Eq3 z7bhJ0f^Ze-;y{Se7*aV(vq>6{ndIaB>LX_Lg1g4wva2qy;6vv+GyvX`@)+9JMz{GD z<&3eHy{^EU&8M9%VnhUiM!am;H_lyqvidC=_~>bU2ZrCtXu6-$IN)Vv1m)Q|fqE}{ zxjl9Mt%R9x{X^hr9T{vkFSa1_p$A54C91MlMQ9x4;ds7n$7;eBtO^-0>*TW02^(WU z^XWiIrFEH`qj7#>NkP_kU1i^F^$!f(`lF7*r-pI(<^WIIr74vhiUG!+qy(@nIABCD zbp!t0KJUk*aX=Pp3p}IBEcIiPU@u6L)WosTIugch)S3ud(BFyOY+>SyHSfG1tb0`^ z8R9y&Z#mIr>;7`Aj(fbv;VO%8b=m4C4QdX!Uprb_#egv+Yg-?D(%5RYB%x7$w~$n0 z^`*AU|4+rr$Ci^ocfIyBcHnx@!}hv9_8jnODX~T=d@6VQi%>g>0@nyXFe<>;?RNCU zAihQN_CcC>*-bq>P(B~6hXnJF_>=?$|xqp{hh?~m&e=bBw2)bN>-L#aXivH9O zNm`TwC)La)?%ZyuMKQS9j>%{+dnpz+(ubg`F>`gKYN!4!HF-SM9h*lvbVH(~V{go) z!6g-APXSPEnmIwr#6*hV@_*Vnr(PP9WAGvPVRziv6=z_^vCeFkmuyHlb#39cI|Bg} zcDdVMxhir{0tJqPav;gXnHZGVIP#2aBT4Y)q@|6Z&PjC!~ zIG$W-AcQei z@?H?|-#R!H5o91F3OCKWkvc^gxhigxPOuhgX1rx&o`$}NF?7-hS-q61v^^9QJ&a(moq>+=W)Er$U>TSwdQ&+=#*kKcuk%7!09G~bJ5 z-#Ra@infbk6JIw7GLgYpWD^=+>pZ!h9n>}xgNo~bl0JWZa+sg!0IgV3Pd>=wemSci zJxFNDh8TszVpRJ#VyK&n%DRN<<8eHL$vY5m^#A~h*5%>hsr_j}cxCBV zS%m?DO3`ts*kpU1MZ?p?cF{^!fIq}b2#je0mQ<3b8PfBUrBQ4E`cA_dRreXCfJAJ3 zxp4|@%FK|qkq^BlEe9{XK`)M}H8nSZ zO39B@_wV%nDy?>ZV#3_PC-3;3XlMh$T?^g}{Br3}pi#q><+2MPV+#j^v?gjAzs|VO za-Na_#6OJg-|Z!b3UPJUp^i_b(j$OaBK6;n7(ZxY!KseccposBrT?cg!ze2lEG$*^ zdeZn(o3O(-@jM=grXzXE3-KzYl({T(i$1B-l{WqIs~kb0_#2b8p2E-sfB@u%!VQG#=v`>sK^E{Hp2st$ zx+Lcxz3k3{0v4GM8k3WCzA>Qy=-JMiPZt?VccwwUe{3-_Dyq*N@y)>MX(R#oNpGSLPb_@}t2?B_$^FXTXYOJm z&THuzxnEObxIOD@EWw1qvK3Iut^Iv)aOdv(B%B zG6Wx?&78XH;o;n~U}9M`62@Q+mSPkL z+3F+~e3n%^{8k})kS)My+U0qFU9Pc2#C-NKya4EA<>NnhD86wx=o`58IY*lxqh=E!w=3rlw+nYWxCeE@!JyahgEU12=8At@V}1 z$OIZzJt4URY&4b19U8q@#<%g7VM3gG!hI1vlU0ovKZ*@1M_o3^@ak=DZGd0Td5*SS zj~L5TtRurBk|notvP2T7#r2z7REE1idR7F_rUOv_+Q(ylxlCli_Z4s%$D~=?ly#*N zV5m+aVg-?wM@C{P%gE>Pd@oDyT6(y&3a~r$dCNo^!o^#Mb-$7J#&ou4!`gEN_$c8{6SrAo7K3zw;UF0SC_m0fwdgIP!1mLo;!6Olr z6x=}6p1-bKQdE)RFXw1ztI~cqVyQ&5;z;|QmWP|&M_R?`{rnLW@?$kIIPQ|T9I6oM zd;bJCBtCqj`aRK>eN`8_YnMtu;uYJF=IVMdFPDlGkM~P+w>8 zXyWq;3v7~V8uQNo)+wMpMh|t0P*l(wnMU&fOWJeZ@27|m$DrP?a<@c4clrNN&I?^9 zQ9i5k5n_(I3pC=v#4&whK2Lgfgm4#{ck$#%*$8RxkEJ)N-I=UT*h<254`tp8rYTAr za7Y*#2e$wG0tJ}y#ZvUb(lQ+m2fOS*iqMib%kG-l5b1!$%}q3&65i*JNMfXj;E;l&0V zj+7bRuAcyPF*=HTLt@82!@h+Ae<&LKTxe+oyLA-GWF5e|3K z1alU#7h-octV4e^4JN$H!$M{0Ak2dxIS5B?!&Y&hsh5oXt{pYFNx#5tGv9|Q$dF=B%R*& zEA4<+(f&$A9^AD^Y0YRI7?sT7xl{9$I&I$1fStnKL+X#}xjDg2A(TX?x7G{)7>iH+ z=SjW)Ieq?k!_~Y3tqQS)6>~=Q3;#^)KZ2Ao!*Qj2qGid4ocG%er^5`--_@;6yUxnlw{$dS->yX0}IQ7wxFi2z) zorcV#;N`!@<*o<{pm5_0_$x%qHjQe!OF;Io)xcLHfq?# zT)!|N5JEG-G@%QZXVLBW0HjHR6g&R$u7|(+;;mn0)t>Vn{m*~M2ojZAld5=-$PP|W z(lyHJMScD;|8SGDI$I6RRMNS`VIp-cdZxPWVW+m)Y2*Vo;_mm3JUkA@yhpDm(L-Y7 zGUg8T$McT8V!NfH2z|OqvrzSTGnlUZ#+|FTGhMu9q>DvHNI*c>8hNq$s6a+UdxOEi+cR+ z8+TlEJ2k*jp5^&qep7_S7W0O$LBkq6FqT}j>+N@bT*{hYRH3ImN*@xe%pOS_O^6j8 zZ8%oa7trf>r6JrdNga)e`&U|!ZLDgVk?y7}@q{Cd$GqJidA?)kLfK|ei%&StH2qaB z8tpXpd0+jmvi2ec6NQaoL+?3#{`PJkPGF{G5Kv?mK!JP=6f+}P^LqvyP^?3F>0e{r zsuGOU=C%4-;##9!58E*|jk7pNYR^2M9wNuLV5ivVuoQdkkKRxDrRr4e{#zZ4Amy+D z`?Bv@TFbdrQ}(eqM5s7%4TdO87o--o9o{!^@3U1nZVwHYr>%r9*)F*>L$F?MR|jNO z^mb#h^9A_crJYjy%M=K^o-73aQDu&1e6qId)e<}uraGjKpSX@x7r4b}cT?~I1*|Xu zC#(H%Y1|*D6OmMbIhcU_iuh@qT4HlK88p^}yjG7B_+y9}YBM}B|5_5LbbYts4>5e! z0fXdhXIDjPY4b9`f}`Zs?l(f&p)UQDjJ1;to`=~2-B?SNJMiyqD916*xl3jrV2ds) z-$yD*-VVov4@Z)ItvTqipb`gi0Ff$Il9|4D`%7S8;5%g&H&MsR`D7>GYh#QA8q4w~ zV=f^=e1?|#=9}H&6gSzbh<;mSd^IA#&ojl>Qr5YjtGmgt^uxxsZ54W$eqvPM$VA0!tVPxUb zVK`(IRtE*yK_ZO@+t)U9UwLXb-<{?yx#=vIA?@nl;dPsqmf8mDE7~4XFUF;+CH`s& zmo4x^RhoF9FAi$Gxy#eAdZ-iY*KG4VJ)V4~bd^OUr3Awy_V7Fwl$>8!!v4C%UxARAPwE=YJ#AmcKOZfMUK*W(YvoYc z(ir_T|MytxWnFE_cNI9^S>vd7Bll3f5CM9xD4s%~7M0Gbz8*(j^D@8IRvYw~w~*pK z9(=*XD3G#->y-1`dcAV}Pf~8sZ1XfUyAYT~CoRk$w4Jm6`Vdj$;<+CmAUt2;b&RXC z!C8%{_TSMr>x=$$(Q-`fRIgwZ_%rcGR%UDfG+1HHG6sz-_BbmaWe6v!F#`rGN0im% zhYwPH6$4&t?1u#T`QwU(Gb;LW#+w&MdG_B)YRbYYt+|9x>ba?Nq-m0`5>Ax}u*%|=S4R(y<^()9GVf249xb z;!H#}qHIn{k_9vrLB&dvAsJ&IR{na#I#_EiaiS?5p7Br*wkR%Y`7H;j{9E?0SDgjl zA_6z-AyxU{?h&(GdXh1UqU(69icH-hMm#%^8<)rYb9n!vBjw1KWDRl{ENNtZ#C}qP zJ0?oWQg}RZCqn~#P-8Ar&2>YKmI*^^M0NWZYocECmkqPwS`1xAP;0y8LTb(L+HgGP zK6SX8w)qCK%TTqJsfH0 z-e+cYktat?SS=HSYiexhb4^_Q(zqZw9bLirL{m_}!NRfBE9s!Lj?2=zwzE;B=FMxf z7teb)szqSLq-ci65xk!Oee+HNDd(#y>#`Aj?FEM!Y%E({JiYZL?o8&^eXBI=3i`$s zm59iMX3x8B_9f%MTWcNB^`Nkc{^2#`B$x3rT%Pv_!YFPFWj3EwjZs}^Lm zkL66tYdC^}VmP;Jl>2078=Gy$AAfQfoQco|{e9HPTWfpP-c+_pJjQfUIp{x~-g~;j z4QyGQo-s6)b(`%)4x!l;9!1?)(XpTJa}=1iCD7_SX#C}DVfyqBb@M_{%%iqA!@ZaH zOUbbMMWV@PuP6uYpzCwEmT4<8@7brFL+|n2duK{^<`1V$rC5z$@8Y1@c}07R(X}g@ z#m9H=pZ2=~?~1%OXq&;#?|KaSnAvB5?#Ej@?d?@=&Rx zjU!K~AWcjo&Jfc&I;3HWL=oaBAwe7)SBmv^_dnSF_W9}a7krP@?Kek-W6No1@3&%E z_#eMqE9q!--R}LBbom59T{c8Wc&yE!h0v8C*1>2pdyDj54n{IB(3Ch-cTXuHnpa`k zl_VD8WJqD^VoT68&{bpxarZJ5)V|!jWQGqs+AFk*fa%3dIhHp&dT`EZ%B8}StwA!m z^h!j|6PcuNG4@u)uA16{nd^9pe7k=+M=D51nAF0Fz70>?h&qSNL)qVoAZ`HY%62sN zb)A^lSQ~M)#7>Wu)=-|RuQm-0c4v4<^{SUss-(gm&6d^pE)a!*%-|r!Ab`&MbPP76|$y;{Sb(VVT)^GuN~Tq>&-NIhhvjHe>*CGv1AW@( zgF#iwFtszw;-Z&giD2p3URdc*$33dYSm|uH#jG5E%SKoIRUX*(aO_vllT9xaIY24w z(;;?hXo;6!J@y?wDOJi)aU2~w5A`KuxN8H;ui7QpL?f&)W0BV;6+k(w#W~79QSg6C zEUN<7b;+(w#$-U())03BQ)PqOk8)1&J1dG$$M%lyBpUD-;N%AC4gX3AOdGn-Bu{Ug z4wTrW?QcpfMuxL*lW<4Ipqw@bB&5qD$?1#CtjjtcBNrOOWf>`?z!yFZeGjYY`Xk>a?f*fi?^eK=!wL{ zDe9waO<$9!dg#X~<-IC-_++1{`=AX1k5~!rPUK9PXMs4tD)L-vbgNts&`9$-HhRUPP0w<(54umRBU`=^S*1D-Sjk2=|J@aiNc*#=?)wWpzQo@;%Hf+iW1i z^tmT$ss8wLq@7JeW~?Yd@pVSck)_#WNy?<%_q6(PN&ai_?$SdTE3SuZn7Cp4uk^@H zRw~1YYeb3SJoe(KVxqN3o@>rEu@=p7%^dbWkK80f6XZqomvn>~Q9zLDf2_tLJCn)RwC0 zp&M~U4y7Wy9K<#7=z9`}kpyzZiut*vgMA{?O=U?ITifV4)oG?J$_tLEJ57d9M*0O2 za(=!Xsx=AY(+$TNKlTy%9ZW0C*i95DkW78aN&C7a$&x(xsY*>{v3+`dSDt>aq?qZ> z4V!fmJC-eF=SMwy9Mzs%PFF0QT;8W-9A{Rni&oPT_>uYE@h-FD#|+);;O#6Oy$^1^ z@Tc&nx|RJes>a<-I`SJdx)8c4RzCcnag|8`0g=o1gMQ9tbDuc677K8 zu*D3prJaP>*Tela;GgSZedA;EAFnnUG*#l`l#LK0b@|yHLm$hdd4Hx?zOzmp1_mMh z>`vQ;xLdf2H`U_sdu3kTCeV5Pn3YjcocjKK6G3 z_iwZ}KsL^|fB^HxTrxfh|k1^ zx$qHGUbl#Bu z5*~i_KjD{!H-Az1ukee)KSItZ{73kI!W?z=L?JQ7j%ROt33+;ItpJ61IMD4w9{w93 Ck`@{O diff --git a/docs/logos/apple_logo.png b/docs/logos/apple_logo.png index 9a9095f70d4dcffa0122d637f18b6d114af2f39b..41d52b38814026e0bfc822771f2841d019941c52 100644 GIT binary patch literal 6273 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 E1H|u11ONa4 literal 31135 zcmeIZd011|_CI_;6a|GU4iy9(ZlyQ?G6V<^6jbT}C?td_3}uorKoXE3gQ8Nkfwm5y zOd>MnFe3uN0BRem%;EuLwg`d4q+&pVz`GB2;P&2Lzwh(>{**qH<34Mzz4m7fd+oLN zxpczJWQ~NZ1O!2Aj(l^_0)j-7u-}y{K#Mc-i~#=>-eN~)Yso%P(oc8qx)DWa^c-r6D#oLX(^;^ikj*_bTT#l-`#wD|7%Yg-NNm!nf=!RX~YnJH&qKa z8kG^~;s(ff{5KJ3^g}^lO20$&e_(Vd$jy)bUs<`j{K?0k5$LlBw5yA%n~$3>=t2W1 z?E9~C@jpeSQ)#ED{{Y~hum2H7x~Ka;V1d2)$8K(?J^!H__U2=^MVtDlYJFhHc;i4f zXF4^INTvD^KAP)^KcwGkY>b(w_SUaWon1Wruqi3)tNy*yU#9aHKevO@uSh5{aoCR93+6bt9W|4;x(Oha9X%;UH57^Yq;#y)N<3&j&e|2Q*2d`^Fg~bz*jQ7`Xy3j=8V7J{ z>c(p7xPv&2gGR{|Dy(!eWUKfEyU*8&4YWppYfwWAnzstEF4OzqkJJ!pHOfsF*+11A-df*#!&S z1e!BYuD30z=>E@R1fO#A`!{$0o2!0gwMg~POlVYh zda!e#+W`;Y5&ySX^pWqscl_r8TuwRrdAPX}RR6&4kA}Z@(O1Qk=i~YBy8GDr?<)Pn z4FA&v^j%%>?$khEXF9>t*V)5O)!)xUU-hrXzsA)6b3MQtQ+=p`Af~wyH1t*fTl11$ z*h+v|H~`Ce(Jc1qtNusZ-|4L}|My`m(rc@$fgja<*#Cd;y7cwmyW0Hku1jD4z3X2+ zNq(Mmg8J{H{jGUPFKoH`2!v z$>+~-eG;Oj1fStripD3OKg0D&h?Ww3hHEJrpM3rd*C!!bO7I!3rD%Ne`7>OfglH+j zXSkN4@yX}UaD5V@r39bhT8hRepFhL(Nr;vbe1>Z&8lQar4A&B!DqOZqVdV+&v1PbqNN0%;aZBuC!asV^+|}95`2bhDH@-A{tVYAAzDiC8Lp*h zeDe7-T%Uw!DZyvBmZI^==l=_l}X2pAAyfDx4L{|VG2RauOKKg z3W8=9z~5mAVyHn7>I6afcnI1={mJo{!w_W1ICAg+@pQ*%ckqKj4+?*w&DH(c?z<yZ*R<#&Bqsth!avrncq==#1W8Yu8` zVWgnnqw|&pXHE(Flzoy<$ZKDycgft($?l-cQA#L>4h)G!Mo8VdDg%rAfgTSL8Mevs zmv7Iq@&?x;gUa8J*FIsHWi_n=Go~r1YZGg*sp-wpAgX`j(^YyZ1i*TACMYfIPm;A=CK?*#Pr=TVt@y;98GZ4W< z$DgISxI{IXYjP5z8=ojHWbg`)V8cpWte5rHuF9Ml_EQNm{W#4#XD16#W!Cs0Sv#d> zD0_UFSkfzW9-G~i}ZP8QNGBF zlVSf#_zpnTN85{kKWC^Fa|mxnlKQm-5x*`1WF9B@`{m913a;vI9Cos|4J+z8CnIB&}8)xbMp15w>>D+4ReNy6%Fi6tEv+QM3U6gDKv%c%Spth(^ft68r=jdWj#Gm zaaUNNj-gFSYSp2N^}|JqgofMe+)O(3cH9IsN*_lyB5epT zbRd>fo++iFA69(AOC1PexES#L7F&Ck@sk;ey|-A#wPSPT7gmDFo-LLYuU|3%MpJoZ9X$J<9% zn2dfyvI#0B=I8lYVmcet^(SNrU!o%HqU{ZE&&fqd>hkN6h^*x7^}D|{5eU(vixQ3R zK?4c7!dT=bASF<^c^%p70WNiLi)_sf1ER83T>>0?Bb$LSZMle!qPj;5zs<{baPTE9 z4utfxC)hC-mp4o{@J=4#Bo?gjwGfT0D0P1PP%%X}cR-&lY(!j$j9K~%XbQ(C83SESLxB!?>(%t^qgMI`wE*g9FMK)3(Nzh!;A$E?qCI=&<0He3WX( zm5f%!YbBuf4kX2@Q*03yVDbsyS#P$34HM5PVX8^DgsFKkL;$&vCqJUcSe(#q&^6^p zy;kzGbYy}^-n|?%4m2K3VE149_RwgSgEhC@M*;Z0Q@BA9^M-m(d@wP>-j}?n#0Jfh z%2XkWuHIm?mQ1d?Ig4O(?60iF@n@(u`^t5&CPbFsYg=>B@y_;IKfAQYGa2f+Qow;73CqoIG>)U`h$1mq z0`tj1L(A})9$W~SM+^XYnRMRT8nvJ>qGwzJbm-i&- zv3qkJzViR*iYD3_t=id7i>$L8EVx@oFxB*>ggFRKxmn|=+2Pq7vp!%0k&R3X!541U z8#fUR$zk>w{(Z$bvZK8(@p4p2VB1-lf()6yo+PWJ?A5cr&L{iy&D*h*A(i&k zgIr-HdL|v3QsYYbPbjpva~mqh@*Jvk{Lw(s&>^~LS4Hs|haOlSfnmjb!Zsh#(3WAb zvgyVrCc7RJeBt>A!UJbz%9JY0mvu#X@`Z!wHg-U)AM9{q?l6ND2v)M{v$`etLz~B2 zwUB&Lm18&iF&3f3$M2zHZtu4!=7*z!$7E}^g?&Au4LCaeLfBz`tHp5k0&7xxp^THA(+j|eyk1m@4{w;SvxBv@ zI0;lZXk`Le0}9@zP7-KuJt$c!+4HxBE$HQE-550@kyO+0FlBNIRb=@dA%ASOwTj;fZ#h)Rf@MyZJfumBPnp)Qg)^pgFqk(uf+p$CjH{xO*-a z8GE!7Osl}&FTaO8XCruva*9qaraB6p>`B-#-@%GvHMS9lsdu1&8*rtm*Ge^)@YUkP zJLn!Ip}cv+-k!4EbLq%#S#8O&^%$ws7$;mJ*}L0_;Ub9Ptrr?%wfx-DS#U7J>G zL{EqHm5^gDaWf>AhK6dcpY6MKY8ZeKQ-jK<6&&U7e@$0t(a{Ni^W)Lr<7a6mDct%~ z7apoz-4Qd79-Wg|Mstpm)`uXg4(Fp_gZKM>37X~|-X2LRaDKevkPc*b-zU3y z>kEBuOgt}dhpZe2XH_%x;_C8^o!vSUbZ6mQ604Y8s*MZvO_|q?9?y4~%F9V@JYcvQ zN}c>7`f0}2@^X9;z68(ZI5NHkdzx2hC8BKkYZvW2!aF4Lj`sF&iLXRrCoISAlofy5 z+oki&%cTD_te06;$q@4Mytnw4gh{aV;Oa19 z@-2#YC0o4TOaz-wB=}mYaT!7Z4}FXN#Ctg3Mr<>ya^TN>Mc+=BNXjWW5Y)eZXKcc` zR{<@Np@$hAnoSC&Ln$w0^kW^3hPpaDGG(YK;oS7*lJY=VP1WQTPwiwWiMcC|TWxbn zZWIQiy>4ZnWHCx7?Y1eEbI7!5N9Cw}^IxNor4t-7f(kB>)*Xfj%Ppp+~Qw`4ukngX_ z*w0}wZTfj<^%t&GIVCw56f#`}Lug@Gkk^OTjCUrz-5&Y6+#=y=!INP|&pU+*UkSLf zZ&i|!l97_QezijD(Ee}-7q8dONSbU?;;d$dcr2A3(E5u1MssUVQ@qND(}Et)>JRVN zn+2~-?W&!1YI)~|HY5G8$MJ~^EwYq`klELE@s$rK8q1rf$rCVPA2;7G@e%urT>!zA zNnQO=XuIYQgskTB5Q~&C_n!QHrey&<@mdPYZ|E1~0uss&*2doduU{e+ zK56P)a6r)UZST&Z%UEVZp>mWayO!lianp}@ho|T3&|0>Vxg*Cc;p+6mz>e;r^9}@V zW)CSzFRZyjdE~$avs9T>THcB_mrVbeYv@g|llEkl#7~Y-p={o@mv%5f9#<-Pd*m(G z|HFEfl#^jcT!w#D*5!xjcE4!vn|_I|LG;*@a>pDWWCBG3UP){6w1V0QmCRPnYQmku z&5wvL4LW<;AI`o(ODv(eQw;cQU`DT`5{@HuvbZ{h4=5Giv17n2%55=?E8YhoNR`ez$EaTwfjf@;y)ZD&H%o z`Anb-zB}|~Q)Q+KJfF=x_{t9vl#gHy;6L564b8FJbVuL6BKFpLaUyGCF7d+sLpn(^Ve$vl*rIgMQJF*nKt zo*XhH-u^g4L{JMC%hgnLkr`4q?PTTty3_7Dt1O=I({dz|XTAj(6II z6)-&oPkA$(jGm9G+92L0+j22Br_z~eP$XbTKF#Sw%BqB2D8i~=7q?k0ZjM_}9w6CD z2L2;ie9hIMq1Q#I&D(aIzs$P)?aA`_yyFI}t3UDiL>+^%!{)E1+K%P50o zDkD`(C{v}>Xf<4)yF47`@1D`fAE@oR-V!>jnlb%sDkMVji7v(?Q2JiY@u<-%-yBOl zgJ@D?S9{Y?cx5I?Ww`;?_oIrYCkzS-1LQ}F<+|sTv^clw_@Tp>mCsZb1T5!wT{PD< z0V=l1J3E!dd!y3ZJcM?cxV2swV-*`Nq%s5gM;jB4P1ExE5ylLQ{^Rx3TcZ5O&${`= zQ|B8Ey}H8h(RzA}17m<{0}GjmTLJD}{*Ztkjb&7O#2{Z&2oI5dAv{Pj80? z0-FvtU6$uP)9ym<_j#nPnbB)_qPuA|m09?DT8&3VWer=(Jia6swbzgosEV$p=d}z%_g_uXZ4nVZ646P0JC7jpM>6A-| z?dfTce0LUoE7g4SLg?~(aVv8_9|`7Bm+nD#Lv^XbTDaHO2WPuUj`dNBiL>tu&_YC7 z(@#b{{nx#5xy^#a zVN>R!7)8_9!#v1_&&qaCQms8pwK+NyzVri))Ep6R>b^A*)!XPNf9-m%qc@o|EQxHw z<(=Y2^sm_4sOyb~NpYmc{CQU@)Lh?yoJ+jbxdw*4+vj4EIz5+GC9}8lQqp$QM+;<7qfFV zrDgWpL80_gEqWVY!(XAb{otDxge;pQ;@)r{&4(RxRpKx7Df2;G;Gelr&vt>q zrYVPcK2yZWeJro1#acmdqxJn7r$tN~$bAnS`@ggicw_Odz_1-T-3 zjNMw-@Nsr+9(`x_3oMafO->S27uU@S?Tol5d~LfjIk2JQr7iBpZhyiZp#U|MOoV7j zyDN(VzWcCgT+6KQWn|QpDw|JQVB_s|p}~%es134^Tbb3d^|VDs8@aT7c z#08H=ZCl9tRTv^o=37Zdf6Jyc*yz#mx=qy~)`CQIS`1XK9$uAYT~c+>3|GsfBLMfnT43gb$W)!fsL0xoMrgUq1)m{=S%L=W70c5-(nHBVFtn(aS=s1jrC zHIui}9~rD@FsN9ULQYEG1?_oA*37GWUJ!2yL@I9Az;i3J9)m1cSzz+sQ`GUc7Oscz-T^n)+Xh|12OcHV0a3)01kG#ovalveGhd-!w>y7Eb^=#4VT`#QXW>G^@ zf|z;gRe`*YG+fD$NHT#XAb2z$6^A`kWfQ)@+jyKU<_T^XCOu|~=+G6qbadv|o&!sh z@LfD_`*`%O++j93!IBDI`cTr@^XNpcLm3udh*efmX( z;e#V`Z4}XJTmLfxW5jY3%La&hs;{f5UFTi*i)^Xt4p0HEk<|!XY|bfkA5>z?kd{Yk zp>-L?{R};i-ko2?ACvaV=|59u0Trz1w&&hq9uSBOe1X5YFH{~{aN8wXEn8e6^cQ?U zCt$g_S(TvkW>!l6t?ioc#>#(N7g^%wE%*stAo9r-Vjv}cAt>W??&w8YNoh5T8533 zim9O9Xf@Y~dXvN=jeYD~f`yHwlyx`&SDcbnFIhf!J+#G0Tf5b7-j7iNK*^D@jGKIq zR$0ZKSPMy|*0NLb=O1t^qk&jq%Nt}ZQODl)aw!P*O%14MY9!{@IZqg6uFE+lomW|k zKcEch9PF{0J17|UDy_cMR33xX2Nl_wSu3IFUtv%lc^Npr(}>Sp4b1w)T#Z*T8!C7j zWTl!U%0KjI=N0)3v5}_%NH9tIqy!{&pzlKqIE%P)Es8r#&r@}zge9p%{wqcKlJLSw zie<+0wfMGlPp`RqsGh9$7b4YO<+%a#gZZR3iG-C&BYOT;Va9@AfVOsVxXk(WI@Gl~ zFE)AO+oGd!IBEIx^-#`Fxd>Gvab*(C2@UkisVrxn1G+dGL{!b1Co`@D78oASZ>%&S z^*YF>0_t-H2^Z&s@rirRn(@EC#Ys$H7t^Zn5G<#&5XxYI+3FfLu;)qmRwySXu5`%y zU)B=NZY%b3#^2hpqv4eh+^2=alF7sVfm`W#4-J1S1CB5QY*)c~AQcWT;+#pM7)fnMKnzCrUt8)q6py2mlEhJNsc( zs}-QB0gZ*LvVs<+I(5so*WRF%c^d#J+C!Y{MRDm)={ojjaQbD!xbnB_A_sy41Xb)~ zbRC-`_$2T4J8KR$vK3OdLwkyWGD!Sg%Z-$jtQw!}I|A*=zW@r1DI`6*?pk~ZJ?4n0 z(@a>IkcBeS_YWnyfEipwcf+$l*xI31-aVoC(>LF&O!~eXZERSv9lFtW4Bn)j(e6xY z=T@%R+p+(hDjS<^?a(>26qaM?*no2-@3xn$Y=O)*(MY$V5@8fNcl2!269wtKx9t?)>>m3dcnAHh zjdV`sR?87+Pi!nP!lHYd|8{y&dkZ`I>t#@_lbzrZng&KVB4`}Zjb&G6;jIA26%$$W zI}@V6z`v;7j96Y50fCz)$VA*QLPi{AB$lmk7r+yxZIz$B5re|U$FjepR_3~BWE4G2 z5Qi`@p?l04O5(t>Y$Hds0mn8{O6eCV_m+>0nr=mX(`zp^J?RcT6LVCwuMebID|=!X z=gr2wIu73Rlt}X1Cfet8<~F_*ld3#)Iyd={-IYitnPXkRFWb8NP-PFZOhg3O;0LE7UB~dS5=?Y zE9F>k2AIa}$Y>g_WI$3s3lKRu5Bj;LCk7mIfs-552T@Lds&wuSdJ$DRSK-cTXiH=_ z(#eLeiKbqyC;`>tWpZRE(Q1qC6I^abDuzU*kB@zrrvW$u{Oug7?*@eE*+Ma3cjT;x z_B7}5_8n>a8kq0&V0;c=tgpJuf(vsjF&wlriAuWx4t;mf$8K$SKr((DRJ)eZ!v&iG z7uN{=GW>zfko6s3L_Bb-zLCF(@ zV4w#pky7$8$tS^a6X-V#)|wHhV0|YXOX_4`6ed^lsvb~XF3UqVe!JCW1Tb2se-Cek zjRwnl;|~nER(XXV?w36dSzo@ww!1EpdUY;$X4p%*dfiwS;cKwxE~<*DGd&3H>AsI% zMf?)J1E?x05i@~ekI{`8>FQen#rO_zPzR~_<_wF0{(<)W{-*&yZ#ZF*AL9(;ygF1M zCdo?sDF}mTcI0QTVyq>}0xt*Kb z{}VQFLPk^hNoC0ToLteRm8n<1x@e}?CSuL@W+z+&lBb_J`gaj<@Bo(s4)A1^+ zwte@N?t_lot3j?e1vEm5j4;EV_K3MSyVt$)*!U!$Iv$5 z+v*-b0AhvQbUrvO`SXs5e=JTef9>KJ9hZ=kPb0th*B(8WGHK6+?r3Na@*|SHIIXT!F<`$u zJ?0{PUo-$x*l7n3U7T{^PQ21(8a*<(sA;JTfLb9;4+=6e->O|fEo)43b zLe(NV>A;eKq8v-DDu5=w;!qh6fQ5)cyNB=c)`zw-fIS&*yaq)s^C!B9>j5Rj*}>gU zq3U(=CzF13xeB_Pcead)ISotYD_HniNdViZ0Y^mDA~9{!Y@9M?JpF@*OJ$%Npd72S z=slyq{s1DFk$Q^KKahIF7ztbR9|-wEqsCgD$ap=1_=YE(Jd4)z5DinQAs zd@GRx^kc3~E>#BZ>0~VU)n}*CkgK7OH(gJpZ+};QfHWpzOU&{7W&V9;xeXQ|6phz6 zpc}FHk#xd`^#xMyN4j9AZRUfVD%RTl1H^ zPHY7z&jD8p0H3R{hm{;i6s}g#xEQCIJLp5qgbelgiL|K?Q&YTcZy^5yh32v=-Rt$R zwWO8DF@tohm57bGF(eF`pks_e;Q7ZZvkJ4psrmSC;1q#p76fQKh>o_tn!m(g%N`@C zjaUH^d^i8o0xe`27W}xB=6HAU$br}IQ5!d7;Jv{NPevNXDkirw4}Sy%TANWX5LVr$ z4(SqBfet>tK08Gt2LhP_7Sg=9vIi66h!tSrbbCiaWR8`}q+V^j*kEp@hc(d;3rdi+ zfJ~RaQ9glw2wYQwtPdx!safE38E7Mbgp&~|_@H2wM3HyCET4LnUCXWo%k_pYd#fs$ z$87*mM<`@U_G&06GMdzD3o=ZgRU1m8Ub~3(&3)jmiBg=Ok`ezw=gF`;9T^~@jMQL9 zkmWN0*`#kOr+`BNaV<4q-W&F~ff3r<(tVz3A@v}GmC)r1Rgr8=xZb=x6$_AdH5JRr zH?H9T6Q3O6@ajPnvj8|03qPpW$295Y2jLn}y0{*2yCYx^7(T&()3 zUJ(q-*dH!a>lZ@6i0 zMF#l~{3;6#ElvPk$L&cJU`{!AqOA-a3=U!)Yg$obL?s<^+F(#2Jd1w0IBWqIUj>W= zvI2`kCro2M7BfHJ!0>5yzjKT&2T}-9PztKV_P8d%K@Jw!&c0T z*{BaTK+)2Cg&?Rk*##T|hZ8YMML$0fz4n7g*I&A9xZFj%ikdoJV%HD$C~(e*nA73W z;nVYH7(exah6;jB*a?sh^go=O&Fl+#dSkC$m;L!B-D4Skd{fq%LlppNtE~6iw@H}2>SdKsb8dRJs{PKE;;93*p-jsokz=m0ssU8114fetNS~v|C zP-9*Es>l~5sZ1k5C(G`8v$gtQ!<#Y5o&*lNIk*aqAXeEJgxB8Ko6!kg#E)e54F_$9 z+`F4uQLh&62!oN6SOKD=u!2c*2~&dVIBO6WS+d9cQGr?o=pj|;N%25T*jGS^V!XP` zvq@I<>2jx^?*oPGA&M>61mNj`BbmeV1!&?y(e4`>w**Et^`IPL}#B!vZHnEhs`PsNPd)i>>v4x+w7 z9GO~w;0;tz3Y_ulsHP_eZe_FwTTyfJEZ0J1S0rI+WzhIGq?8&6`EQbBeRV2s*9Fi} zp33xfaajwgWwiF%gIiFkSKZW13sp78)3`>5pxf*#?CITDN4>@bNof8>s4U+GY!>S7 z<1*SOz-D-`YcK06<-Rgt^;D;na}c0L+oX+KyNzCyIMub+F06=o^)jT!@39GU&)>HW za9^F=36sg%Af(aIjKj+YrLba;8&}CANK~zgK;n`&gGy2lg21xc8$_!0Uy!)z0f#g} zTIbe$Gbz7u&1$GF1#AX##x+Y+=tX#f1@{=HDn3c^#ER6bNO3OHhLK_G|hNdK2#LGcV~euJH61K@b^gNq>C4RYdjcMJvMqiu&=S)7dKu`W=+sVkUF@at;9 zCgL*1iJg-H3+wkC4%{M+k@9)7*87rjAYwaN)f9r%gRTq0!u@WfcOb?Va;L2h4eLJx z@}*Yxq285^`3{-ep}KfjwwMu&8Iq4!qdemHszVKOueD1Ux6uaLQP%^v^+4`b_gw=CYCNxlqVV!AgbQHgl$oY^(?y^!h<%;eA>KXk9@8x7SoK=<6!Uq=}P2 z8}UiV6H27%gKbhK7;!*pTAoSdLF~wVZWYehDI4G!O-p93e z*k^%_ep)bDbt6!x^@nZ#4uVZA`HLXq^`ma7555VMQqbN2D!kLXmqWFEdy(Bo<7mk~ z7Uz)S0=0^fy9-m)g(*v9f*i|^nQ9RO6$tWN&kJygek>=JwTES44e;U-5x!X`Q|rUU?y`g{zPQuZ@(p6eMI) z^IL}?|6qc{Tu=!KloVe@j+SH(#lmB3(dzBNR#lc^)>uX!(^n1$sLtAfh4N5C?mP$F z`ve<`!15enJ-RC$x*b64UhwU56$h6&sQC$(=Q+(YVou?Ei4h3B3e-W3lxlsw`yHkt zEF>b!gTnj61-_zKqgQkE)8(LEsGTiQZO`HE%bni`HaxEB+@gS;o#!l|x+F4DRk;NP z#`OcZSMAX#URTfZ<3|&hJLTD1&oLQSEWn1!mY})3G2yzXlgj8RQ16cz28E|0i45sm z-7MvxmQiT(WeK>wDT$2;kMYnMaI0C=i84zUzzAcp5s1++!_o`Roe;53xldZiXT|}( zfnP`Q$9XEes)TUqYT;WUdI3?PfaoDrk|67GpKGoRwO&8Qc7#EM294Q=dYOjAxfGO1 z60zQNzx0$XB@S#%O4jLbVw1_LPrFBdU}2TWjtiWyt;M z1(s>5_DWFw&hflLxT}&E&J}(Sl7jPg@B)Qv0(5t?q;F;rU5;1*xh5T+>6~>f#S~J! zQ6E^E1vew$?mEc3C0aJ_Oxd$9Q?K4+m(Ygkz{2d(AHC0ycpHE?^H{ANPN%IBAl3wPf%zN@mCI zT3*fO_zIsb1YxE`v3r**3}a2|QHdKONt4geMz(xwz;?R2>O)$v;5Ss2ox~O`_>FJ^ z7!wx=sZM=3*~%;NrV`giZeaNO$%9p^fkK=M6a=J0)@wWEYIc+}K*eh2-cZ!U7}#3v z1>Hv-9D&Cf1NU+5iQ?yh$g#;iOsP7Mb6e<$cz|86%)`mN5xw4=?NIG+89e1}6ZY?H zB#o4ao2;rd!!*SEs>j&io@WBjb6df#u5W&xH~3mkYHVPCi|-*hHZ`R(DdknBXo0IF zGQyt7C4_ygm-x2kL-Vlf&OMxzuww!fL<;D(C|1jzMaTu)(1MA+kWfK{Y)xqVM$z_& zHm!#KdoePpGE*(r5ml=Rl0@WO5f>Z=Q{isR{JX9kQoN?f4o~F}NzfFC`wW2|Vglx1Ld6=v z@r0FXP7qr{O*{_{PiI~SCqAoSIeltYc!&@RGSMqY_RURpoI6y4>GM1i?CCN+D0f}d zI&<8oD|@~Z8N)EkDLSP1ASEX}%abKjjV~&0?*1@A0?Tu1Tt7w~eau1#> zKoew3PoJqwQJ?-c*rn!m-f){ioYd%0kLp&PoDQOI7S627FsDO*&Y-=GHr;`muq9h9 z+pig(H;cd0R8D^V;Tc-WHW40aEV-b3qNlmc!oP8Z$J_iJxN*SYfJ==xhI=b219sF^ zZXtCCGkeSu9coCRkWN-ItxC2}vg-DbxGOhjJ=l?VIC`?iF4|jXKsr@sa3@_wA{oTP z8N_Ao9)G7(k3B_qd968V6Sx?OpYtd^4hn)vyS3WQ8~ZZQ_rr`w>x~rclSl?W!nthA ztp<-`sVbv6^F@Vk-e`>M^~bL2)lr7*HHWBK$@T{M%!?`SImNlnNe}J{_cOu;!^4bU z*6-QW`mDNgNV1uCIPTp6Z!%>gth=G4d?4!5MIV5qvx%%oN-ylIpp_d8b5_ z_OYK9<|uzpI3tl+7gGy6`r5w;?PT_*szj_zQfo`4HSZ4(6kJ87i6)_AQ7z>I0;2p5v2A;M!F~pRU8>88~45GjQ^IYI)lilA!dmGRd3Tmxs>~ z_VC6OGfzvjelO2jv!9yZqdCWPF5%kxhrgsGzpO{**s5^lU8Xx@0riho_qI%KK21(qioj*?XvcLSAglH3EJ$;UTJ22{VJZ-^9Fc=b^hne5`hA`>pHROd1 zVY7Ww`MRh#1Bf9p-)D4xRbj_opS<@pZed}_I5^JLZjDI(DSLV#$OWX3Qv3^Az4D`SVww?;3STUMw$^wTK8@mS;ZAaAgokIU#$ zOmK;l`WZp4$ck4+Jkn4Bcjva!6^5$MoOapuR$MOO`xxTQunvt2^Fki8K3Fp-UGBTK zagEBtfVyWiIVD~FbdGsO&qV!w-iopX@|=rHCTER5xJ(G}JFw=dR)f)pX(X5^t+6#C zCYPoBu8pkfZEx=RMKbvG!`P*pZ<+CWW`Je)!*OoJ_$D|O=eL1*vj6ZNNA`J;B%Ngg%GoI>&;dJt#v5!GHF-4^IPOJ85#3|&QzJX16*c$mo93J%V;(-nRbnGs<|6U&uzkCcB%ww15oB`dbD1h>g5yj-nxJ1^ z^t8wOMOX`#x9tB=z-#DB%Z%hCj=bCmKIjcP9yPWBT%=A1pYcj-O9fQzO4wmN!;g6U z&TV9#)xf{WlKWx2&H6^*QARJ%J-xnVcA#J!f2hj2In*_^Ik(Ft*k#Szaj(#RqjTPw z`$OCq57(>ZCnkqx?!_V-DCUO0_LbEEVaML!9`i&${!ugzZ>(e%H4(syY35a|x?7Ri z7K7eDJpHy6z2UhZIO^dsjh5=rne{rQrcuR{%XOb`qxZkV2T3F;nK#bwv)pgs&NTG7 zl`N=7hFNxx?wdKrPnA_RbE`s_hW2eb_vSdmDc!?2H-V$7wfHsFJ5DGx#|J)`Sbtct zX-Gm|YYnePb$(CEiWhcr9_|iEdq73zmEw|pNvHXm?dXsiJaMHyEJz~!@tvxk$qU}G z@`y@fInekjs2U#}4-N^jvpDSck1r;$zkhxU4!(Z*pI?~&NeIrF{v^aY{ZFn-iPdHn c#GzeV)VezNT$ThM>qAElnH|hCays|_0U>@%KL7v# diff --git a/docs/logos/asml_logo.png b/docs/logos/asml_logo.png index 23233014cc31f757ac2d4520029845d0b7c6f142..a225b887c685555ad745d9245a4197b70f08ed44 100644 GIT binary patch literal 6775 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 TbWI5F{oU$m8Ee+6J4gKwp_NBy literal 31826 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 literal 63863 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 diff --git a/docs/logos/cisco_logo.png b/docs/logos/cisco_logo.png index 46185a22b0f35e6ebf19f2e40355e97bd5d28896..b05d7839d3d943a606cadf723b388b8da88a403c 100644 GIT binary patch literal 7251 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

TB{cT4S{_*}xlfLX!a1 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 Rr_wWlvA%`g3mvzZ{{q@O!gK%t literal 35604 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 diff --git a/docs/logos/comcast_logo.png b/docs/logos/comcast_logo.png index 20e9c2913f0619fb1a75f13f52664491d7fbf99c..906f5b08ebec0690822f9f2aeca8ebd00ab03968 100644 GIT binary patch literal 11456 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 DmBuzo diff --git a/docs/logos/facebook_logo.png b/docs/logos/facebook_logo.png index ac84fb718b77c67f73597326a2bbf455de40031c..cb1c4c8b23c5541fded1e246b8d7a53eb6d9d8b7 100644 GIT binary patch literal 16097 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 diff --git a/docs/logos/github_logo.png b/docs/logos/github_logo.png index ab3f057bba58e462253f07faeee48b000d46ec83..99a8e2b98121d663833cac0083edf0a5d8b2d485 100644 GIT binary patch literal 6840 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 diff --git a/docs/logos/google_logo.png b/docs/logos/google_logo.png index b3e2a4472d5ea3457e03844141ba7022c02ad616..a5c0f2c75a7484ccd42ec3f3f2c1fbd141d25a8d 100644 GIT binary patch literal 10037 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 LNkvXXu0mjf=e`jJ literal 55647 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

yH>dLH?5E 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 diff --git a/docs/logos/hsbc_logo.png b/docs/logos/hsbc_logo.png index 575e58ec2f73f8ee91205700e033cb50e83a5506..660b151e0c812c87a576ef7d6d95159e54265ea0 100644 GIT binary patch delta 1626 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 F{tf@)!IA&~ literal 19630 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 diff --git a/docs/logos/intuit_logo.png b/docs/logos/intuit_logo.png index c9e9688399d30566f3df8ec899d75f068aa9a782..0321ea63d3c471049ffebd8cb4ccb45a1aca5cbd 100644 GIT binary patch literal 2295 zcmbVNdpuP87N5$iymFNH&B0ed5!X%ge%>0qGrNr zM8fDsoJt|3vFV{SDAD%F;n>Jy+IL3h-ut=tk3Q#f)@SX#)?UBw_q*2q{j;(TxH>3q z(At1NAQZ`tgo6mg8c6cUtrJ&P zUVYPGy)cQCguV*XJuJz;jVG4U@`CjO;H}}XPAH5DhjoKtBn4J;gtx`RTVrA46bV2) zj7jDyMJy|Jn&daPM#J0UU?Ub>l8Y3HufTGUtD0LT;vTpU?iQWdlyC8p{hC z63V8mM_)WUWB4wH9(Kc_yW{m2Ac&-k~K4^qWl5GhwhH`H&em85^og64QZFz_S|eh`;L2) zRtX3S`hSfR%&V_VtBZ_k@oEu$gbvYSu*poj*Hg^N(6MTgexyk^p#G&2Inv^V+hV_dhVL|k|$wYq1ej&D|c5; zqyZ;qK4;iv)Y+S zIe?H8<(Ek^9;g)fv313q*I-v|AN`F7**ee;8^oY;l~EfqE>-)+NsjI)7=&E7Su6d- zg1fAhXh6bX3e#qt{IUSa?+R9Hg7BiGV*>lvb^9ys8b~^m@_vQ@M54oIY9aADM+0?^+U7Xey7Wwz+I9- zZwSMNYa?$Cced2n&8cyhHAU7^Q|}kH zBT7>Yv%jp}{HWy!pG<$gvuOZs#*SI4Dk;?DQ%-+XuW7nObsc>g8gABIrto@iF@d@f za*L*?frL_hW)Vo(z8A=HWpGrlfMW!zMn_uzLQ(U(hXD*x-sHhUEXWCT3KhYl581nK&2LQ1yL~- z5|_56u>#a1JbCrL=VD)Wj~QS^w80wtDJp$_%qbM82tA)6e>Thn;)Qi9uDNKlHpD+{^-Us?|$b z-~flKlhgB$xyqc9Q%f$4?F^hcgw)s1uFs;2c5%WN@Qm%ymx+Dd?rah-ytdWiY%Tj) zq^ghx*=u?nPhKzJow3rq^aPtZm2Ns~8xgyUsimt!#C!3GM*s-j+aiqWX&jZ63!3o*JxG}$CBx}qT)4xM@nw9Zvjn@ z;I@vLr_;FJ7V^A0Y-%>wlfbEvLVhZ6oVP##+ifvjDoCFKeEwt#IA-fW2@^EnA?!8o zQTDUK&wM<@xHjB$#l>n+2Ix)CZK8w;H(BB#=o(j8dO4sI0rX}no$5uWXIrU*miFBmK6f&=f^g z&qs`L_WsIwLFa~QT8x5A0RNCj9e2VkGK?m?y)(S~?;A*WYQ2aFs^f1C6|_dogxwva zQpRpg7Uhn2wU!EHG(y;BZ5qq%x;k>JJ81D&3l{Ht_V7<5zo)|E)yvAR?o8H7mAb~Y bZ|gID4T1ms`jTnYX~`^PqAQ`=E{OFn!)#Kt literal 12659 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 diff --git a/docs/logos/ipcc_logo.png b/docs/logos/ipcc_logo.png index ea51b2de81452f437587cbb7c3211044534783fd..8b2460f388901b7c93e691791e876b88f313479f 100644 GIT binary patch literal 17221 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 literal 68474 zcmbrlWl)^Y6F-Oq_YmAdaCdhP79dz~2=4A0oL~vg;_mM55M*(8UEF1HZu$Q1e|0af z>R#+VRgcW{bbnf>Cqns~3>q>aG87aPn(SA}?@&43 zaWEs%4p)pZvCO4c!*7jnBmBX<%rmcZvij&HK8@<@u(x?*w&{TcaT~Jf6;nr z(@{mB=x0pC4=}&}|6l&arxGN)e|#UR`c-8e=^%t><6&=Pi7<<}uBPOp0$@fmPlaW4 zH$xTJFW#4;(>q}m4-$Tx&{v%h0KU)vgY45X=Gog~-dyYT3T9h~8_EmqqQ+!GY9icc z+yE^O5`-svCokLy4)=|#qdYzuk$1w61H=h?t^J~{ zyP>vz5f(~SYvr4>KGngWMS@;Xw4JWA9ww!7!tmdhUHNGov-6NbNxf(l>|T6QIkAqm6+n0}y1qhl;Wd^j;0CUGHL+FX`1t;@tJoHGxm%X|S+Mm&q=m(qw?O{Frt$mV5Ic7YoJb_>h>^)xSTiEO3RxB(=EIY=3O!EKK z%jE^sLl`nW>y2yK5KG5MfE&*?-GgFH@X8Xl8}_cd6FL6{7vwGE^PDiw=klglg=if5 z{wWmlBt`pKW0l5k1JU8ySMTm*v2o1rgZA zMg-v?;xv5u^VY28Ib%kvhpZbjaHbrto8gEtS#J6o_a=&;0Vovz(wL8=gJu86Wr=W~ z^<64()S43a^DCW)yNe+nL>Athq>D$#RCdaAe#vg$fB}$$XLR|TCTH=##ppxx%C_UF z)4VawcOcGVv=H`Q)+}=_hVsG_I^HIFxT6$Onj;bedF+=L1Gr6U(A2VT>l5e zd>tDiD?!wQI*FdnxqnOQo2g!0)H=Bui^00fi*Ur>>3%RC&%(n!Lx0x`yHLYv>$)BW z)<&bL-)sb8f}o;&fgfR~rQQkL+6CdNEr(bF{kJEIFp|h5 z<5LxkF&kh5nNZ)SOMOPoQGq?Gs5E@*x$?E1E*lpGw$F{Z4}O7%uwrwJd`K&=F<>cI zOHkN60^9i>`d074(0On=x8~Cz0z?#>sMI`N**&t8P zE&@Z}_%!n8@l}j(h_8ev7U?k>6Xl2FV`twsgs}=)qN&ojp?_lO@be}_{r9#W#03u&|Wx~;)7XL_ISICvE={f_fnAjyYLM8-zy z4oYvd>EFm>A4Vfh9_4wW8=}!*CSVQRI7tazGvBAG_WQSnx$ZsM36Oi`i+`cv@Wx+) z8AhE3Oc*p?r?Hlk57f#pr+2YzrrPJJpg*L+CZ0k{)@FPDb4rg-L z?G(ENE^iNe3*Wa^Ct1AfoJM|iD67%L7|q(~VB>c_>+&PH0=h76BD;?chAB(AhWZY< zDy0*dwdeEaU5CF}asTr-?~wZs5dR-9=DZ;o#TZfHsRTnDZAK+9E3X3WH{PrqJ82ux zKGsV0g~y|B=yp#H)nCQ_rlvZkUh#Y9sArNr+YW7XGHU0)CMr=qDrZWWnhmND1=)9f zd3^qD-`Dk!Tw#9Qw%3C?K;==IByA`)f%QJBNGR| zH+*OI45Kv$rMGxcd7TRxuO||^mS`B1M$hr>Syfg(?wj3(UNIs*iQHA|Txe7pC)Sq# zRMQ zNg}b=7mC`O=)$P~q$SuO=h4^Ee;@eM=kPB*ihsP_bFSN}8)mURLd(Iq7ewf4hWEU< zn&o@Z>$UDF7~gyp6O<@dB6uh?W5&H@2($WWF@ZpRzxYReiXTCr)Jmd?Oew>1zSqpVoPYdt5^vFi$I3R+;__Nk02_DJc1$=k0sUJF(@HJrH0l&csi)8J?@ z@~yqI3TdLtG#xrm2%|#{JREyOcfeydTZ zflPsxhRDT%iDEGpZ_*aF*9SXU{MCru<_;fu(TNAHdH#_&j>mWz&l_KhRO4B1*fY*z zypHS&TOyYSejQ==Lf>8+ znWdiq^aMg|8|9#5bywd_`fjGoYcQBQ(t3fa;v$Z4i&%$B|l;7NTB;*VBcOL^j0)IlD-3J2lO*T_5+ zizT0S_1uMzjzA2CJD{~s7H#Pnu{VS!$woF5+-|mA08ZW3_!H5h6AiB^qcZvQ{+ooH zFgBqtGc)qz-}tYu*$vwEU+}`rIi$`)FIrc~G7?U{({#kn`UN@u`Vu?vZ-P0yz>LyOSlw z;;C79C4(?qEUrkvZ!gk+yG%}9Byd8}j+i&)ru_k@H|2a(7@mA>D<4PFcM&ABP5vx#^KZ->L z-$pU>#it%WM(^BQN3nKo`u!mTVTCh);%zPE!y=0>q=4pSpcLz~{ zVHT4wqhZGh!_a*`M^S<75bc|<|5{G&b%(LJWt*<@mr;-&YrlnFlqwNdw!(GgF}hQ1 zpBnB5Qp>I~^hzaa2WqoiV&^yOm|wy!+Q=fCgl0&`dwvnP#3xnZ`O(h{8hib>D^hoG z@~=j5Z$M@P+l(IO6ghr@747~JFAGl1*-qKCkcvT{aia8z-r zZ&;L%6gMnyd!{6-Sf#;ZuL0O2d>yuLTBmcZ-g&qQh#kVmGZBpSn4E+@zwI~gbU%Mi zCH(!ji@g1KlCyc#^s(AVAiqDc$Yv+>Ud&Ddro$S_{)Y*oR#xZ*pbb5#r%^z}tpHm@ zkyE2Sv3NSTkb&yutEqMUS-Jj9sc4(9hbzGlsyFIBDeGYmzo7T|6SFoiP?m?2XVue! zn0F#=eLLSBYX76+Pq{&#)&%n;mBdO@#-E`Uwb7R_ixS~1U%eK$Vn~_~b2%C{9Zyd; ziZ`FRX;x@ZjGWTBGBosX;#z-tYTNmEThkuOYk5&l;D46h zh39c}mc}f+Gg9m0HC!yKH1k!vgKcV2^@Lj)1Ui(Nc_B9-YqtWCg1g#X_D%W-lL3xF zhAh=2DcM{xn}CjvdvLA~eJ8PFUJh4~LovWikuYmRyFvv)P2mJe@#jh0gJ$wp=kb}> z4Fh=f=Ezv0BoJe6UoD2h2|5um}<4PWcrvWa-z^eF7!mw zEV*eZIGf~r*-gQyEUSNKEuhLF(x($eJlkSfiw*~%3`Vs4t-PqFks>TF({9`Yx~ws^ zo9$3nYDLEEB`cate2Gf@RlONS8L|xycXYiXNPlmuv+SJrra-mR?*@gec{l3tbl(oK z?V&%>?~AN&)<;SD#kc+SCpRH$V2^<~mS*ow$#BnYH3(lw6s!)6lWbiO^@9YgUn}p2=O>6BwCp z{BC)oRQ0sDkkz>lTa{sO+MtcG3t1&$Vg0!v;p*q3M2pWruM;eN_aO?^Y@v_#9L*n_ zF}HG4v-Ad4R+#hut{#`1tsrt$NSp6wS_<7yCBrk@MSO!!hFMX3W>xpS8(AUsd%h-X zH)-r*sQ2@D(%Wz|Us}bzz=P2=@?ub#ATKG3TMDW%r*K76^*3KSZZ`uY^o|W=HPW|= zG^H)wJx*^YuRA_bD6N5C7i@kkfG5^nt7{iGVK$k*E_@!>+|7vqgsbqZ&^f9@TjtFY z&XNn8k%U^S5f%)lFwsrqhgoPy=~8ks-D5eQbspRK?_Nru&R%+pxEzMstwL7%D*;S} z9%3=yGBuNW!>r9i;A{CaR~F$oTgGFJB&-lK8Tk~ioxn!tCc3*J%CK?U%K7gfPRRyt zz$`3o%lyw|*Fvdfmt>d|sF(6#H}#RkHAi$1h@OQS+$2;CLc zOU+8lfc#mmV>dMKmhrp=+WG#(;=VChbwjd2ZX*_=_}9_fCK1Prne#3~$MEDD%=S}b zjAZLhpB&;YL|vmr4JnlGP=|vXPL%5ji7wW85kR9dMv4Z66{Kg1e7)W?I`zR$L}INi z$>YqQ_`S_od5bA@LNdIstAw@T^jn==3~)ub!6am_!QQS9>e$&$h#fME!jrreaz*Nv zaX0gEM0~a{mJN^dU*mP(=5xxae>l`KTBkL9J|38GGx37MU-*7G_CNO>#oU$BSqETy}isv0H;j(jd}d z`GT-*@X}`BtihtrwqkV9)O`oDlkHU3!Q{%ucX>Ti9@7i{otvRrn#9z$V^V zb;0N4*k8HC`mVdmc1-kHC7Aw3Dy)p%y8S!T^z5Y==W)P7<}EgkEn%BJ{R@iJS)XG! z-6OdWL9u1b>^x{xc4k&~Nq+s+eH)qkl>(g>rBTkUt=gIiz}Irtvc03k8zE~%2J_m` z^N>wXYw5{TB_py>Z22Y zt4nA*{wSmcB)xDVs8MEMw6^Tth~-N0b5laXJ}BKw9RtVn`--mgE4vwc#J0ID7R=Jg zn>1U&FUgI6ep19Xrrj9D+jX8*%DC-kbj~^4p1w7FFX3_1JT9_>edV+Gju`?s%x#!D zn8aEtl{Xk&U$=Yz;&^V?{u(nh?+WL&lM&XKK(uEqfAEa}4?4wmx3zAm)=@J0q9V?3 z$$t9$yzBH>0K9Q``_toN*w?d=rHZ~J)a}Bs)S02DxlgG=99b^r(TWQ8rJ1+#hHq&- z2|U{+3rX}@H~^1h?RZ)sQX$Es`IXl>S`%4k_Pzl#K2^r@nZ+}5AyJP{Bk|0q3dYc! zh@oG=^wh>*zKa(;`cE}7O?MYVC_@eIq^sLo(mhqMZCHDt@9y;i10PgK- zf_1~h=_;K9&N=2E=buJvd4`@pcL+)|pnlc==qD4-g@BykDd|$Vt^6%Kh zQ*mb7W5)jJ#dhRrwS8=NSmm|QpVMV(D7P(#9l5aP+3Ys~^v*gWXA9YEUFp0`JX>QGNl}YzB;UtEpf7Q}$b3T)N zD#3$Vsy$ZByHR34qvSIT+mth3ZGIbUMV`>kr{EfnDL~-676d5y`O`-xY=|cuUv`;lX!6hdGk9^NLq^|qlU~Qte-CF!Hbvc{m)ss? z6NDqVoZ9@CbC{BaYT=7E<~Du5>B5GigWk=R<`)R(T;HgYCIMtX#_JZUQ$1tM#Edt=cW{kNW<3DtMd%H~g>E^O3X$vN+3!R7`--dH3OcXwJjup#{^hDEBNq!i|}S zg{%G0SRr9_w}>9Ja3L3x4Ml%_2)XtElOB}ZV|M16iQyOQ*~LpG5l3F|V-X1tcca8K zi(G2}i23t;D}!p~+5A)UYfW^8tfEIulgEy@1kY#p!v-?%{A#p0ecJixl;4V0zG^Gx zj|(oDUwBqO>L|SK|IxFpZn6B(My+65wT7>2oPYjC`PCqG=Wsu-$k}y;u}Vp?)E!?v zvl{O*^6A{i<#|wmjA=~h2~ru~RB+3zev_DzZk=mpsDHjc!>m+l8yw3eTOI+nCYu&2 z$o$E4`)+51unco&He8vZWA&+2v-xcYgLi+m;Wu@#P0V1~jAK<&E1&9l{N8?OKHD#& zDeEWiNZi67-#C8X)RV=!by^HUbwRJPd_D0TvJFGNwz-o(LptYQO(5M@1@F9Aec2L~ zB_`zn>1Gi9VhI1~{4AGf#v<+A007~9U)hJAn494`lg-=hVW3cye>CqV`oy%a{;8Du z4dp9dP@xN;+sZI}!Q9vKI|@RA*h_Ho zMWRxLQEkCtLZHGYEfBwO*%{Ns4?4!JKq9pCQCm+MQWi5oWk?xk(s{Tmv-kDdKGJ!k zU+_ApX!4zzv)Z?@XHBC-Ca@hW2@wD5pU4i+2D zB^N!UjOOQY^O)yD;6CVTQqT8T0=@XB&%a!P+)L+#@zLUu+3A=V+BcO{uWCXE7#rOB z05y&=qf*2{v^02Isoz1*K;ypx#9RDeD*_FGK)4zFC^J(ua0Af?`JZiD)}@oJ_O{b* zWjIZYVRD@xy2tE`tW?Q&0OQLzzir*oH+;cgkz71U_HCty$3kl!yFJr zMXUnA@wWsD(YqTz(k!gLF5-ziz1}vln4X2Q_Q9hUi>!c{*-t9EaV_Aq7;eu;()Eo` z0UBn$*K;W{g4PG4y`4G=y_f5e*T;>br^?GYa9ggyJ zUab8sKdbdN!5At0>#{({rXjA1JiRomc_uOy_voVOq7u~82Z29QIndPhRu~WXjKERL z+@S_fr6e}K#QUKXA-9*)u*}z+rv*QQkz+gW;_Yg^e|oUoM#FVWQ<<{Q!Amqv28zkP z{JyiHe`7Pn^jYg93^$-Md9GzbbP~Sewz;LK3n~OQA~%ih7_d10G920V7&4*Q1T`2) z0op95lWF+Luv7Gud*1{(IJ%nFy+R?O&PnT{Tt_`}zWRp}@goWBTYRSEfXAi{SJvf% zH4lvHcv|U7p$A*k3L3b-Sn04a_;>l6L@Al<9_T0eKE^$%27(vAT+&3`OtLM{(v!^K6S&V-(EN7`@7BbND7wm$5WuhZ7;2bg=cK=th& z#R}@umDEdo6ET;&s+vhKKN_90Y|p()=kmbyfVr=NS3-&5y{1W4(<)AsYk2ZI47Bll z9qqGoDl1D$K5^)~{A>nJb;(qy5>LlC>D|86q>}GNqXHJq=pvq!?ZiS4X+ARKi6)M4 z9(>7t5&qkNGJT#rY|;h5{d3+ll<8mcVfTSZYJ*qmxv-KPn(Y?U*ehN1VA!dq4u5~D7=uyfdBOZ z)c-2({osLH7uNkcJsA&j+3m8eU6R?TyV8)s@bj>56^wn?cO{h)V*24zx51Eb9+>0+ zTgy92<1*HwFfGlgYBd zIE=s3C_v-8>K@o`W6%r7{11M&2?T?tpA+|yWIkz-I`ssjgUQ=Du}`lz7}E?d#e-z3 zzxFzys>dnrb@{x{vt|v*3e?92~w#`EC2LrLA%$a;cteI@|A0z-PXruN-z^>aam%` zkM5l+g;R@PJcNcpt+r?Vepe0Y)Gy@Yb;&AC#Z3-Sbu3(jw?$n%UA!U(tr?dwJ2D#{ zPp~xlr4dE)g*16rvkif#xGht8Tfu5!cC@CYpg`0ZiZ|s%m_BUD zNbVB~0C4$)&-Lyiv9(TB#(VP5YFkBb1FJj)GXwI9J)Y_K0T>8@P_HwHjcEW0~ zR@A7>VuDvQWDj+Cug{wPW{QJJy1tggmUst0y9wkP|NO=&8`qrfQt*$_dArLectby2 z_g;SkVE2v87_`4Ba&6wf#tJ>-R84b8TS8yfb!+_Od9A)moX=-Yg*}Dxj+dQSy`QQQ zCgEwFhgu0ayzMW8mWpOxUd5CxzzX9lSjG0W)Rx2sM6qzmJ@a4mns+&OknMJ?;MP2~+*aIfGfHu<5?$e5nJz1(0%8vSjPMIg4p)$Nnmb2wjLDLOkU{Ogit_F*B*cVnI6{qK>MI?3lwlQ~mw zc3M-k%hUn0 zAe+kAw*vz@Y{F|?Wy-uKm+ zMLe2OSUCc=nRG+#qR~wH>wfO<%K1BhnW`SvSbQ#`Y2K_rdU@__z_I%Y5igrdwTw55 z>5gs`n6Yh-K5_~`^aT5$olfm_6@b7u;N`Z7G@WzDCnvJU=o^Kn8^G?_B6p_l-^Sx% z8u<0;$=+)K5Q4k`})oNMa0T^xd6ca0>@xjmrE*NGSqrRJQDdw>)bzz0Yb;YO&IK8igmo>JSgyNGXjL6G>iD#IQ&=wFrPyqZ5j=#>QGeAA%UEL4i-!gE}wvjivZx7)g)@J@_1 zpLaQec?VnYSGMz(ylLF{Ow99}_DakZiFeVJ(pIxrn3*e=b}Knq_@8Pwue&dc-L1;T zG~E@;Z^YH(y_x9kjY0Uw3X*qnF9YL=f*_Hd!BjT{lD(GTGTj zZtkV+O7olvaO_N!&d~r*OeJgF0*HsboPo?O%hSY9P*2mGsc@ZN?yn+?^v6tPz%u$i zKS}E*j07bOVZYt=265Pr?>z`!TEDf~dw4T4kH$x+L=HZL#=FxYIe)L0%&^1*xpnf^bjYyC z`9X@g9F!CC&(*GINk#s^+7N*+ZkcsIq-jg$q z0=Cak2t^#0bstPm(@*^F(FmGqoyk8H*NFfV&9d`Y-qjo{#e2E;R*UdF?_{+;%(V>8 z0>@uADQgh|D5RZ#-Bm8n?FtQ2Q2*7}U`|94u`GlNtzJvy%Vq0z+d^F0ea^=gz)Xvm z)jkZ)kFN#j?T~9BN8)v(`<-p!;f5wfKs#D7Vn#CvLC?0u1{LVHCCIP<61bLOp8M6a zJWNd3YN+H?f3Lc!=h9t}pt2Y+LdEjzVys<{Rskz`QXC-8HWgd&*X0LF6cKYR+x5A} zaU&bJNYt(HL0>92*t9fk6VBGPb+k;eyZcCfN1Hh$11gO1_F?a5V|XQc?O5D{o0V?* z>vewpzl+*V^v~#bkk~)ES)wD#lH&<$J7D+Z=b*$gR%haxXOOwv!LY})TqW^+Hx=m; z+h$sKd#WeJL#&41&zF&&g;DE|cvP$*i-+Hq4pvzPIR`mq10Dh_&zKB|2ky<#{7o)C zU=Y|(z$$%=Woi(SDjV@$!N+E$TJ!>*VxV@}0a6{k{SHUbFP)}UpP2l%r;WXVU?6#T zCg-1Ea0-p~rx!;BnfLaU)hxw;2_Nw5PKuD+$D>b*HUx6(Z5H(SE23#&|LvAlTcF%0 z21g>w?DgCb2OgTx<|n$jyX7otrlx~B_*mj*)AJM22oj{d`0S$YZ=84?!<@=qw81l$ z+N99tW;2yWZ3v2|awkt+7>SBDY&LZnXP#P8ou6W9QZMU!IKUhAEa3IeP!JPrm8pg8 zZ+w}%NP?o;x9N#T$rA<@A#3usSw5|WE#ZDWF?LV3=JRbJib>LL%7$=u&$kQuHi`3L zEGVP@K8c6OQ_y~5Y|JBnNKsJHS^D_T6)9OPnPQkjI1qoP(SZ@HKBfVwN;OZx9I>Q5 z)M9fp)$q9iTkVSUd_{dZ?3Ge^SIyaFMj`<}x^Dyv&Hw0{)Xy*_Kpdu$X@P~n7fTq; zGj`H8IWx1>1g?>P+$hu^m`5g@h7Y&wEAu08B|JW!eBH1l!9iF*EHjUu81@j8=JZau zTk0-nKQ9@$rhsj*MQSpw{!le0@AuC(aS=vMmCIXads|xLr1yZQSkTT-Ab$sR17n)? z^hXMQE*8o^gl*;0rjq_#FY8hkJ3hK*8c>eUN&60`!KFke^=Y$7m(^Ypq{|NXkN3xe z)G<*Y#vn&XOX!8XHsE&qvY$`r1asX6r_d2WAnbmh!pzLawMH9Waf_2}IW$3(KjL11 zVBk;;3Ss?e1duN9d!{Z=I9V#vK#46Ei9_S3fJL3M>Eb|YZ3yYGXWc%byqDiyKL(x^ zUMQXs^o`*3H8oN6Xrn6|HC5qmSr2Aqe<*TsR;pt`gcS}a5;uC0mQ}ed3q|t$9tlmj z#w)ExBsQ%#aQH+gWe&~xbbSiQd^j2H2?I5 zkRsK>K>_rQcSQ}g$pX-tHL$V)BUH{hvwtfKQ?DaaD4K^9VaeG@q!B&N3&_6O&6xaK zTi1eMuCE_{DF$U`mj0&i+|smjSuMrj+o!FNJ@8?Dyry7alkhb4mQ?wziKUN83#Se# zoQLo9(8u>NQQQAIKfh(7!@SBM@|NHUl5!_3Ig4K>kxG2+kgVVDz)(DPhBKBg;pVx) zk(FyMjiTFTD;QVVSM$=yU@;To1`An*th5%ADvta%6E=fK(oA)iUzZVa96SFoCHzZb z$g^>zSaL^;uIT_XaAanbW<)fmYe1`pu!Mu-)t*S?JI_RUYQ|^F@+$W8Q^0IP@fXEn zUD5~k@G^4nh_eLT?3*ERw$0*F(ir|JW<@6tIp8cRo;{L!c$Y+EF*Hv_f*+k&NgX3K z`Rt~$MuX9az@`;d!oaFxS4~Wgkh`+23bLnFn=cr>6WHSA+U^iKnJ1O2-_Q7EuFt?U z)$CZ!T;=OzzJdsQu!+0jb{G>W*;qdYIzzUw>sU1f@2DwNYNCgkSy6IIBCi-n|FA|D z7(II1Ts7W_-bL9LQWKK6YA;_1cvR{b-BE*9m%Z~k;WfDH&W65~41LK@#j$!O-|9xt z-xrHqq=l_XJ11t{8qo;hLBIV(%>%6fwTGqDSPDz?;Tq$4I#Zm>3hIbzP7weXBPCyP zdvtdme?S;Z#COT<$3ZpRSve%2#meO$? ze5yl^B#l!P`A5p+J#Q*4Z*Tr4Dr!V?KjD*_DQK^R_La$B*8=!|qN_Cj#@nuj+ z#^7iE)bhG4m|4a&(;sB4%$4Hxq&I=?syj@NZQ4_x{qa^iP7;+ZTOZTDg*&#%lPRXS zry99)h_W+>e-J~I)YXeWv?fJVcNsmU+r|Z@1mhPZLWV~zX2EWe%0n}0yFrA5MVKX0 zTsaa$*+kZI6yLq#;LYp=0iP+e+HPvS=4dnHFo)F#Ic^*gQx$2E@|B2D%f4Q-6DrNp zzjg8;@8c?BG6rVUo0aQc^TO^6*^)C&{X>dQ#_i&ny%OYl#UTFe4YrI-kFsod?nu44 zDX{eQZ_gRr2D{WcgkBIS)CHFjFvczWc+Pp+FVq)f+6ybIK{`kYxFtn9=>Hyv%+#Af zTtOIh>6>++l=&40N9T{d#r}4qw>pY2iIriYIesY3Ts5OY`KXoBYR6nIR&OPxSU@9x zA1sQi{q1npn+y4JhKUEK2I5#SzpO=K+l2dq zX#3)TypA^Qrk3>w_q*_vkxcg4E zq|>!Nql8fQ|Ge`?=Xv3JhDTiwYwqG!{Ww)5X1S_!!jw{+adhayJ9WI^r|}K-tsJH* zlkWiS4Fg+$ndJ1&fa-ffXDrktK1lKD?t3|{(q*p*Y{^-JBH~#* zx7^Q~Bl-}gQElK>#~jlURt#=m2_IWY%5G*e8jkXYT*R@$lBIukBf$fn|tzSO^V{X4_#I`g>D8Ed9d23!=(j+PGhGV`+9MSURn&yMuop!Jzi12?wK(QQL(dr_XJO}U z9&XBh-M4-kov;7vz0IvADkQ1chjadBbW8nPiF0*^@3q>A{HBWSz_N1C(4}oi^X22K9*NlIek*Y42bEHm>G|t3oWJzr8r`U;$bATQFXOL6Vy$b$jML{Lsok!@ zt+Z?qSCn>vkzQw2@rem+@^7~xouOcV0*6wWtxTLfY$pOPamQmNcMN4;SP3(diH5&z8>>fY`sz$EorV>*kk6 zEn7eu-FUc6+)Yj`Er|GTlX_xDGKa0B{#Ik&MKGCJc(pj%-`|MR+eX?5d#OJk)%*AW z3NZEr(Mk-c9gAlfN8yFhD& zWhV*PF`_^&w(nG-oxK%53w7v&o0XBY3r#H4y!n%~eta9)D40Ad$})T^qnfaO)%{@Q zJ_jcq(enppu+1{g`IB#}!e>Q@oBXdeTyS^|)2=<>F{RMD9uNG_iVM!Q=Z4da=L4{q z#ueSA*N+p9sSEA5#hgGMa%QbaZ7ir!)@AUF#L1F3$)D zP(OG9%?{DXfi={X-@;NFMJMw0GW#%!S+4S@M2R2~Bc`%Qu^GuEo0fDv$$@wmVAhJV z#S;pCBKdP&s*53-#kWd15`jLLBUr6>>kf#o*hc2uar>u%AF`U$xkJ20-)sY;Q6u4d zsfFE_|2NBQSF?*Y-gg{R;gm?von>pzk}=_!KllI1(;A3lWLxC;Z5RKz6&ql<$hydQ zx(;iK02*i~(P{SSXI8fc43b0I{8YlC3D?nYQ_24-S00B#Twmx)j<6P0zAbCVz!BtA zO_wOF=@BK3xR(ZDP67_~@PNm4u73R+T^iSnUq3jY)&V$;#9cT2ke^M_dk zb_jppPa9$Wi~sK}b3{O3t0Cm8SU_OX2E0`L1h@V9xakmBLiA;j=DjK4!z@NIT`?pH zn9b6N&(y~HVLZ(|fvM~-4e42hOdVu34^5u^T2CkjnbP`w`e?|&p&*m8W*A^I2_p3E zaWsSwBB|69=TJ-t<4+-5`i*VuGMv)QNquZ|nzD$+_5!o7%Txw07W28H0_o{x3eI78 z{(87)k5mwfmmwGm4S0l%acS*q!EQzmx##u1l=lZ_knv$Hva5}MztaFH#;Cz%suvYU zEXJt+A9cNEv3TSD9g&capx?m@xz1Qkt1`e?D=hC3z#L6jKww0k?WYXnhme$| zK>?x1TJe4Q_Z^$bbQ>JaY=S0O$QvD45JK|)!_t2;`fu+66h4T!;KWP4M~?)3Ya6y~ z(6(Df2Gss!5f<;9XnA(AT{YUP*Y!@Zz<<~#gE(68Q^{ZgJwWzQq$f6wvM`vx387)*ZNnhup0%}WA?VTj+gn^!k4IDw_*^$ zd)Jwm6L8z>GQJ)@SLk!5t~fKDDauDx@@GZcWg$$JBTVCb8%pk|2cRt1>bnAz@|NC) zVFZ(j{xV~9&A#xSYS=?5RtFu21`0VW{hnb=O~p}SKTk=WOOrlDkXF17o_}D?x5=Yg z?&OlHLmmB-xr9<;QY2T9XDSq6R>3mFI=w12v)e7OFz)RrjfEr5aK`J$b-c}N`dKk~ z25uf2BA_usdL|k_c0Rtx)r$24`M%|igwa;GiUz^e+SVD%d0ExEHUIn=9)@Q*GC(@Z zkfb94yx|DEc&qI8$QhdCk$d^f!R z8IbI~CNWENEN+99HfPAuD~RTUAi$|-CWBzA>wm`M1(Orfw?X**EZqkeq7yd%105_x z^2T!Kg?ETYrW&PhZBNXNf*z12~pnwar|D+rQaMMW?72p0H!}e zA@e2|LhJ$=mJ0cQ7~gBhHvD02xU_A#Yo_93_}$W_jOTH(pGI4Uy(c=ACAUU?04o8Q z4T*M-^GjNipl|s!_|4@+U*^b!c0VM3Us7jNTD`LY+$F-mYfN(b5NS&n)e(U(I`OXTI76RX|B3gXA9 zPjuOSlRh~0h%>w;^fg3_uvUb{`Au2T`-=W8fzlQHpV@e)#4>C=Na1lq6JIsF>E?Lt zymY4F;^i#50EH+;i#r7Nk83g`1pr%|bQZQL8~l9x@u=%u*LKb5Phi{p_)vdbUiP># zR7hfF1V&fUu`W+*R#K!Swwl)bf?T|C#bu0GEV6cfmt)B_bPd@zrfbzi{u7c&o4ke_ zWB?^Rd80vDzi*v-w`R%3ObBA--L1HB?yd_eY8H?kVrsFS7V3BDEmu;U7j`-4!U;)c zE}<{tp?HD+>0Ni4S-os0JjKSxy0l~11^W!m!4Z?1+S~F9*$;d__h`7uR))pbF1R_( zQK!?FT|tf{&+{XBic?nij|#q8hpv8K>bg0;tL>HXtW}CZ)JcjDoxAGfyzj&~e59@oJVx2NcU z`UV-fRyA~owWD#D)Fz@fI{P zZ{OLC*aaM&@P&HS{%Jc_NlHSDjx$<3TM+s&ZX4k=#t$+;Gv+EFF|^93rQe4y4|&DdR1VTg<1VTI_0#Fqmrc=%WEQQS=jd2WbW^!>S7 zFHtGGRl8_q{ZEzHom(Ml%V078?pj!Ztw_ZNpg|Jab1M=%xlp|eJ}0>(Q9sap~r!NVZE$DFjdr$ulk4Uz>k6Awx{dnt&u-GN6_0 zToW4!L2mnVFv*e81M1CxW2Po@|L5mVLM6fY-7~M-mYuB2%awU-lv97?T$VL({#uI3 zwEp58=HrJqokuDg_HHxt#TTOu_7gp!nU( zDKkvEkQH)7oSo~qVfK*hYrxW@gKm77&%UFPRZjR#C9=vvlWd!hDc}ucP)l^R+}Mrvx+mVs zVO^JU6wYy57AbwDI;}dAk=IWapq$3+Uz8E>V$yyljS-_c>h3|~z z{YMAC6bz7K3(cW7GcJs4^?%*sLooc}RNBURi`Z?igAr|hU+W{KRhQ&sqV2O@_1L~S zk!Vj8#$`CF#QDAewQ|a7=hO<*%JfgWSl0=?&qF33AZLd9YLi`5K<*_}Psmmk>>Gi= zmcdmd{4Cb(k%Yb9H=DWkwd#{tUdEeWw^NQ#UR06a=#K6R7pzV&g5!1FMC$| zRMT_G@BT=vCi-&Y!n$}>@I)Z;EHrceMJJL#U*gxJ>aIF;Q>{lm@&~}QD5sL4xK2`A z9TUOZtKzvDWRojH`;5*@AQxcndJ5kxvnvTXInDhGqaF(cTLoD=FBGL%@!@7E&32bn zX5G?svtvPSLYBUQvh#c%bMk@pfaQc*54^I!a7k(^M|eM&=Sq8~^knMo!Dpf~%K9*D zqditdxD0j0*PYE(6rlu)JlaZe89HlXC)R^RGa2b?6G27V1yjl#0iWP3LS3&%%`eid-kC;&8;^gBYm-bmI zmi8%t1PXmVQiZIcHD9^|P5sc25Yd}ww<0>ijRV@S`d7CopiK>VlF(R(5bQ{My zn2K32S%Ozfa5!7Bl)hY^C-7eeuqoIxl4_B{nl;7+X5YROvR4OVww^BqYfYlw_JEQ( zL=Tzy9cgCtS-pK#M>_a0u9b3C&|66v;VEi`aMH2z4I%ZA{@ttZuD2ao^6awt3$6fm z+xJ!jc9QNKsp4#2R_3td{siTHnMv3h7FwS_%E}Oor+_4Of5Fepl`s(f2bA9~Q(kzy zN%NKie7;!_))8BdxzZoEuiWObjd&bafMAn(?#8$!-x$-|KW@832DOq?nn$oPlfK9k zyM-&v*CxV|Jy~Wq`YlmPNL$FNYQjfB$+DUxES)Iz^R&)2^6!&yPOwv-C*UZ!X6KZH z^zjI^p=c8+?Z5`N^cmj~J$PF(|<}I)gf7E{Tu;zwC6q}+<e`>?_Nit}TJ%Y_Pn2kdfM|AUZ(91gXj8QYANpK)*-uSxBo~jV^;;~GiZ0)C;_4~z z%;g+I7WPG=@v_t08BepCO(0^_ymV;urx*|)#OP@_=e2Lw<}c#jIYgtKL8(<$8jw$x9=P)oByr%FzJBeN$E~`lc^57bBSC!xCEwS!7ap>@gI92#&T(vwTMLL~Sj<{>gM~cm& znu^V)eci<)g_x{D@@u`6kLRDD>sXoZXP3cezq*%bd%XrO>~+ebMeYF8mvp=s@1ViR zNTbwO;aoH~EhLpoX<&D0S_=-kMrX_XAmR3RTrW~Ofg9SZ`5yO2~MLVt%; zaGYX89Dlked8edan`PEX9^!o+f%*IAx3z3H`D8) zHL9N(v~t%z#nB7U!4^dZq2;ZCoTyfUVL@G(q$OQEw2H>Z5{xX8c2RNfc}Zk>nb{ei z$u1dB8FW8NH~Mj{YbhYq-JNy$2rv;qQ$$kUIU=#$lwl+1nrcm>*(XG(`PGA((sM6O z2chE3U7DYztQ>B~T>x_*5jq4rEQg)8J9A^Xc%H(lmis5ICmVqs-Y1R+-}V)IQTFc- zKK>ijD12>)WOvW?U`{hCf@|%wjm~s7 zhcvR*!S9fx2u@upMiJ-n18RUAu-eO7zRC2I&?L5>$S$NyiW=b+dRfBQ46?b2V(|k! zIP0m#w3pnwW6sswR9yNsDdc^2c6Nir5mgr$^=gZZ+;8!2kx@ON!P13V5!>!wPut$3RS2>275j*~CSnWdR)vU2oe9J85 zz=ZBYM}M%EBxufC%%bk`zJg$6t_5s0z5#EE-=(dQIFe_)E zvrto8^0JEGXR2m-DuGj&Qn;NHwQF(=}@>jirS$I-_{Zz z)|pq&Y+g*2f}@nR{vusK!?^Jr`kyduE`pm)$^`qWPhj1MF%*0l=#o0~jeVJVZZ#Y* zJ}6GtX>fx{PR?hueu9J#?M~1@*uDY*NQIZ&hSiOg3E9nF57S7T$9=(GuaCQE5d<2s z1aptUPD}Fu=l2MMSv6*zg^qQ+nWl?_1)dzAP*|0~$|9EzlTdw|ghTG(8-TRc;UM)h zq7NN8&_cwEqitp;=Ioe9+AiO*qQhZ>j;c%lG#~P-qBNN#tt>X;=gqxuk~!3S-1kg0 zR1L)sol7ldZz+3^s=BxcbtOP*1dOD^gP@%hHUqA*Uo;w^_{TP_L8x%2p=#ypZl#AX zGDb3k7D2=OQ`eW!dR~p~c=eb$nMP&(+!XUjf`tV1iYn^Rj6(MbR=eOT$0;LA`&cA` zGI5~sAW_wNs$6Iap^B0S85Hv$Hv(aCHEmP6`WkBoR7RxWm@irx&`d{gmoRK!Y_gw`Eb$A z5o%OI6$Go?Rr6~4Zq0b9N*DdqvaOII?-)(fJ273&KIeZS66+Hk_uK z&}O@XC$0y4B32+E?c2u(pWmm zUH(4UFVa1?6(IA*Wd_)QZXlNN`Ssc9?sndE;A{5X~un{!5oJh1x2^R+Vvg2$Jcxk+!1|w zy^ezv>AU6X9Jr{x*?Y(~5KAu;>BFz!v7x;MaDC{*(Q(tUJTPW;LLA3({%J7$pftU* zj~#Z32p5(TODNL?VdrT>SfD0uI3wKP4`UIMa*@(B*{FVlG(-6ik-Q`0` zdX5lBa>R0&qZt!Hw_G_Wd1`xsZ1fZ-;S|bwHg9%HAkc8$@FhCf zfa_8Ei`&Z@V8`cMcKWc_rk?BS!u_0X|6trkqy-4P^Y<&ah4QO-a3i;EmXNh}3fE&8 zX~(g{#yOAoZ%36H_XO1iH%82o5O{U;HPh1@OY+?>H)n_II_Xw2XfL zX};6$bUFvcDIUq{$Eyfo`$yOL+RaaQ?e5!^$0%z7hGfS}!FSNjUkG!SK!${C@7@LS z=WI=>*HFX;f~ao2#4L7zK{CMdB3%B=Jucb;PGrq+2r(3cm6>Ag!2-En!N(KYAitn? z_KjW)AZ-TQg`9)HRk87rAilbF{c@@+#E&R$aIf#hB<=Eo?~@Sji$tbIyF$N#z~Zn~(zbe{)k{96somZilZb|ECLhSm*?Hp@8H%_9?+Ca?KxCb$6bcPJ zK8Dvm*+1DWX_dNbg#6^tFB5zMmA7@!aQp2~DEbw@JKE*nIv zt!;}t*YF{FtChXY(E1j{pd2ThqMYtGJBDXLjGcb236gn=@l3*i!A+mxJk3g_SsRWS zP0e}a+^MUs6Br}DQpI**+K6vmkU84Z)E{W2&v_ zcx8RYg*3FFuzrA1ow~uCBn5nEhPP*g$4TmRdPPMaBwEJ354LM9ebiuLS@?sVevkl za=WjyvKs=rB#&%BP17l=ib=znj!A!ETW^Hxt3~YZHIhjtrm8;aLf%QZj7%e9EtAx2 z4QND%NQ9np2ILby5!3{sn&EN=%<|^IK33AdYK-&q%fjgOrPqp^hZIO^%AZUwIc1|h zod0-;m#?}a3OE6k%8i%m2|n}Fc)o-Ulxq`3{p-8 z?z7Fu`F&M_)Uh#}!eN5kQk+m*4G1X+6I%5~Rss8GG`jz0a+&*WpGI#26uGEyD0Pvw zgl{XS%NR6I>39^%CaM*u(FvW56l2#luEm8V>6kP9;yl*P15JK`X(9r#HWy(qrO+qg z=-WyXn9Q+AV#G1aZr;eF?aHif{_a9{VS`5|6$!Ar?x-5@>fS9k@-G)il5`P(YE1!3Psb+sd;R;Ypat6yP^JDZNLuWsw zqM8W5p)fVK?&(tHzs{+2E&k-41xpHDcAC_&6t$GEwo)riQQ~?U*59K9pkp%P^yA(t_mV%XS8;tIb9pfu$4$ug zj8t`48hl0;@?)v-$#P18ww%=_C?Ch%QQ3mC>Dj0rST9}MmMJdAPI!`9KkeTwB_fnx z?}|0HC0+*M!rpOUPrf6Nd!?NhmmWF(G_>q9EFQE^S_$hGM{-3Kn}Okuf#@y5M@rk3q|vepz~;rPZV)c)4#>oV%;;hEcFU3oD4;L!*<|%!SN_ z40VrlqzivPlHSeP##D+Wl2b^PW|v%Z3$O{$H8|ywWI6U{mMtN|-IY{M`<*};O7|f( z$|;E|x1SxqCq%J?WzPMBEvg{$r_`MMA^x}YP!zShV(FK9{b!uKsp$8XYg$KB;My_CI% ziP-O<5B=HT%*;SMOhEm6?d2;i+oOEzE}-L1eA~C??T^W;Hge%J3~^)XaVd3~mx0$s z1x@aJ1jN@vx?Gd}iv~z3`!<`nhDCbS5)$=JP=XQE4(da$fs;qPV{iI;cNCh3X_q$o z3haqm>wd;Y%d}p-%ep3roM|%Jszmm@i(4;E z2@m}PyTPB3;rbM_e3p1L)`F<;*qr=(|Zi4c;8#2w9eh`#^X= z^m>=u7!61MKkxHvJ@l9w$?|zlKEGm$i!UDbJXM{_%Qyq#_SOVP>bMGHMJ##w2RMdv zWRiR}kS79D^ARs%V#U6@hG(NY^Ri5pBr7@8O5s}S^R&2MN$G{)hF_6rB&U-aQGzS3 zX)4*7Y98hk6x6>rt-EY$8tq1O?!9;Li>gw(;m?;ppNL!Z#b&b!4Lzt+^%}nl@VL|~E#?F=}CdD+nWrO#Zhs<3TwbrK|=laD3zl5}8 zK!i1->h1-I1#&<3a*u5v>oA2VW$kx=g~=vbM#YuARhlr+m1`J*UACrMP0KF)Z)S(Gzsm+BuJ1l; z`Lml_R;0HmS3s-6LG%g(KNB>iDNZfE$tk7fDJd^^md8x?+H89Rg>Zg8FAh5{$w-cS zH%OqJP{GE3DaOd+Wed^T0jZ$$D9%K?jj>m7n<$V|pyi;WiNux@;(DHd=#Ou}mn*vo z9T@B-GD^8fvON|gt}5UOZ_TZ0KIX*|M03XSb?6n$i|2~H`tz=pYQh5i+m>d1-7VN7 zr_U!k3WelZ1@dop=_k`?%Fp5W48aBSvG{$s^@aE|d`F3cE?6s1w~0Emwy8@o<5`A2 z_S}yN5#=6e^r*N;pwwc(&qd>_jNuQ`rl(#gTTOQ*m|h2PL-qCqpPmRNoR1hoK-l7d zZ%IHIcIYf;ka>b5c;@RrjD_N$W3IS4mjt<~fJvMAVR<`4N z^u#vf%xBTkoP7GsUv~WT45u`5rZk67+X>sA&*J+Cc+m-U>N|>cH~3_Fb%P11ByE_g zd?@rokR8Oq8zDG^W!a)X(P1%YqRH~p1@t4j(wgGndaxFq9^F&55^&c%*@=e z<^0Wx-LFc$_F8nC)_7j?4yTT;B|6jgYxTJ^&BPOQy~)t$lsXgN(M_=hX~(6`{ANq8 zZGsSqwx!>%44+5ypqU(MT3|c29zX0hJsK(a=!*HI78(sA?H4SPu42=nr%_+3@e_a9 zJ6=ZF!55Sj#*vJM({?gHy(y>dzrz%tJlmfT4`4Ci(21PNDYT(i{j=z><>bUe zvG`#3HCX!0Pd`mw3AO5-#)_E;m?*bM>BYh^{~q&?$d16=b85oeqZ!3xI-WmZ(TBBu z@5I>*8z#pHW7fp9FZ5SljcCK-HdvnPaW(nxzSkArIusq>?Y+5rzj-gIyY$u3 z%O)0TRjvBf(9CMCEzq0hSjvD#LwVL56o|33i%Q5YNYzJ#B%2qFsMK~?|2*@*vjF@* zm};hKs1Ur0r}6{{y2>rrtkq>!BI$?FzKl)ictIlS5@shJHWyGKF?U|l z)z_o6L|b>+dVHbxJ&$+!+})Q(CIPBEwJRaExk6MriG);{)IIw_iH+Q3lyF5Pc($rx zIW}L5B)Dc9gJPVC5pRQ<-AGT_HD%Y1XN)w5itgvQw=YiEY0Gz>AeW0dKtXbVV-j&fjQGqw5vyuJB6#a0c>l(i-^*YTwcw!Uh`eEo|C58%MJS(%pR+{%+@|M zgv)mxh&#b`L>yM1WPo)g=z#St9|g{Wv4TZ|EG|mi@)W@U`tQCMCc5f;C|maju0}3) zyJ@2W@^-AXUj`IPOMUB6DWusgd$jwT3&{~_4MYz8AVmqQp;HIdMs#2iEY{sG{<`G7 zrvhC_p_?NB8;5a~>u#FkrV=c|mo+;Q6`!n-{lQjJ+E%43yBrx@m!4D%$lP`lpl(So*}KY6(hHb0ZnO%`fCn&9GO2OV1v=ia4gY6vf=}@|kh-qM!d;P2b{4sIdC(PLZK8&5QnDxd3_1vFwqp8ow zK^M2&U6^WYSM)m_wh4C1w~$yba8q@WfKX|^yfyHH@%soBA}Sb@FZ96S8S=j5_G(p$ z!0L|q?>FR&`h-WU+~4@gc2WLzZQ$wYMkY~m=Gn+UD!bCBGS`0&HBMlCv-B+&#wm6GK6}MjZD@{KIUA2J?^Heb zAdj@w^k#5Lq*?1H)!h@!;|#7&*)A?>9nB5!}bIr zyS8mEd!4@7YIm-iFWm#C3uZA9ZTgaBWXdj(!8=4p1-)Y9!N9#w%yO)gVGA%+4BM}Yt zV7CqX0t1Ro&?plYJ%}lYq=M|VQQ{*dc|=`Af7#h`CV5(O`he83MUC#0HDgB8XX6sD zNA}AtT>gBVkYI)WC(4v&tDHkCLAgV^>tcq|t^C}{?|R|AL+~M5wDJ80bmOWJ-dvGA zJ662PZBB+#Ht{7hP5eGzgI>%~UDF59l9dH;zST8ezUDnf*+u)gkBYE)Qhc)ndXW}N z`^Y4yPxv5*kP8;`GOa*qq$y$kS$^7I^LLg;z)c2<%Tq-AH5D7Z+OHEw*sUIj|V zRVf~g4W<5jH&~jDDMIis@(jBwJ6@5%s~kQ4Ow?}SMabVA)%~VU)H!gmP+NH5b9wjK zItdTE;08PTg4-q67aOTQhxp`{J$iGp?6{n0DHNrWc0WjtDkp1@GwA+^+6H6YN!|IL zUWIv|NA#!I2GtNi=>C`o8*5L?Y3@8%ZQ5g$es#nyz}yk*2}`%>A90G@E#!H)N80RQ z_n+m}I}G_OY8B{tpi@{RCW{4OC2y5SBuhx{FSScR9=$j1%+U+jWG;zZ^l_Nc=6tyo z`@6%DjQ(0}rfTD;Zf)JfkPd^?;#(1SzeSIX3u_#nX~+02dGE-bNd-L^D28G8#%OHw4W`9-C;oSCHJVdykNzADIa=)voKLoahk!3BJn6Z1~ZMG~>3gQI`G zM&RXoVD9%N7zWU3lnSuvl!UoixDBc1v8aDarTk|;Br!(d*N{Z)UxvtkNVH1SQ9-+f zlDhf-zGYD>@V6ti>ys-Xnz;YZ&+>4;Fi@})IsQAH678S-2~kwD|B0DunE!(!9c=kR zMe}3N75pcn9PSrL-d85F_}`GE-#@WtzZmcr9=Bx7mvV*E6te#bLj|KG{9oA3SqX?8 zF%sDl`Pi?4c+h`~eC6H$Nnk(w|6r5;U+jP{Z1DeKTl~Wo`5!h!-zZ~GI{G`zeZZa$ z=|F`EeN7D`@Rm;L)AQa;{T4K^{6F zy6BSQiKck}qZw_OujITLw3Yxr1V0&jpFsf&k5s3j?#N?A)qnqo|NJZe(c(Yd{r^4; zY9mm|N<9$mdGB=fauFxv@tWD(gGJpF;k^WR$ zEWzKuLE>tR@gN#VU(A{}G;=?Gm}22a>d5}Y5;95`GUahN*zP8*kJ=^7g3wLjFOf0r-gm~-&o(Ki7tVI4SJrmGmx$|? ze85oX_fmaWov~CLu0CVQ&e9dgMUco$Rv?CfpxSIY5 z`nQ#SOl^~`ml5DY!@8dLvF;W@Ko*>yxpn0SzpmgP_$@}K>EXrMXLr}br1e5k#3sBC z(_yFb(8C=K;yHMJKq|qV;sGGXxSzmGUFS9T^TP`JDTgM)lJQ|P&r|=-Nq%ak%5SRW zWAgwxh0MP8_6+$<-)F5ZOC&u+ah-3DUaxeSwZ&Jdoh-18VD)pm^6&yjV-xRktrq@G z2hACpi4655)Fks~sEhACzy0lVz==oy)&;a5j@Sq5s0ULsS&}8-PFdPRn*Gsc>RY&s zmVy1m<5yqI>!VCFwTF#W0_UCuQ$aeZQiYsZ5TeRQ2_Dr6$4nZfJAX8A~Jm zjG2#N!P<&ETU)JWV|OcWoP%^`M+s_4mU~D!kak}$q)&@a=W<7;_Lf}NV4iNJAENZ< z?i^)nufSrgq!Y(?feB5XgYAZq0x&$mMkll5+}4ctg9fAtgo2>&qO%W(Do^_BnIonB zCa;_y57$Y*;UCMoy}NRoh8Pl30#G9c%#q=ch_CyH0BNf(&+(2yo#3A?o*FhO zGZ=cTvQpFbj_x)eUIiaCqIrqN8Ss>Lx(qiSC``3{^P$YzxjY>J($9}e6&|^xsrsQa zrxTZ6ca2n9R4O?{RFnd_g2=aiLPK+1FMd!>6`vA?;>jc5|G1Srd$~Xj}3S+m-dS_xDX~VjGI|6OFkY;KVyjkhF zW(mOrN&R@A1)mPJ8ZVs7w%LSFBsfcjdMW9Jz}}Qh`P1W0R_&$8^l8`McGx7~c{@fD zzaw-vsJmjm8Vg5W1(h^XA>2aW2X}9Drdnb<&n348tC9)i+N^ghqWO4a?Ig0T_lqDF zxhtdGI*WK!->Ubzd|69MPC1=fV&Lb%V+ZLz%t%*GpTI9mObF9-Me zd!0S#DSh3Zl~pBUouWy6_#qaB^M0ZxNn*ohC7?h8t-hb-vR(aMhsL~Mx+-`-Q&V28 zSB}){IkQ0-dUD)>@@NM(do3_>W3q2Go6PD8JObnG{oyTv?89sdReC(%a<;eJ3o>N zbpxQ`pl`ZeU|HGhcZz#>>ER#l?`G<0n|W~M4Dk^E2_{}?7!TZ_w!(>lU}j@Ff-%-| z;bPx%o)cJmk;~Ph8Nalx@wUduMhqLR&P+1^L(ew2Ic#p zCZl$jA(2lfpan;e<}(RB38eYC3Q3S+n|mD#`g9>qnGbI7Kpc?HCo`xU%I)eagP zOE`skxf9Ob1>wqDAwEzv*zvb(qi3?#+P|&n5u#*ZqD9fN$d4m~SEci~z9ndXJBAu< zH&BoNLMB`s-(|muliZ|+r>_hV?+ULxBTIbZy8>BX77N28mOlV08IDZk^|`^v_WsCX zrm;8xZ}7z-$?(FbuAaMUu8aCnCzN4*!AexyYGKZM> z+OjslEQ5O@T^lVD5U?w#l%P$6p9%9v+%-@{yc=yt*Vqky1w6{myWKa~oEztE)ZsqB zckB9uyS1+#rh)~2hkh%?Vh_eNE!#5wNx=9L9rsSijFyjchDYhKtPoOAK5_iG>&t_+ zeybu$auX|la0~+ICG8b4n@`+&ZR_4V5h>>7nG~G|tmF!Yzd#h;%GL4a@<>D)O!*4H zSczDPynRzO{_c>&CNU&JH8e-biF1YybUK1OJo^pz7D2bvsWjsfmr>9rMqT^uPOpGx z>D}4U=XC_XZmX9asU*Ha>oufD$Dpeqh_ZWrZb_vwlA;@W4s|-UMS|l?4DwdxtlM%c%t(21qEudz%QzLRrr5^IZ=o(PwAk#Ki5vkUFXPUX9D_04^gL)|*Jv$BDDE{<4wcJSzRg0M7;D)|? ztT{ZUoWrE7V#C8`KzJOIA^LzH10XfS6IOUJ!!1C*4I97oM)!@VlQA#GLvlsCsqk zVCW23-2Od5aRf>iWaPE5^d%M)I!|(m0VRe5ovYDl-RE%_B_C==Q?@Qyv1fGp% z60<%=MO&Y}I3J+Y>G`yJ=}|_g(h^RCErm`a#}T0p60b+gSFhueG)mfk8W;nfQg2cx zU|M9#bg6iTABKP8{r8}}%v?sQK`?)O8;YBAQ12e(fvqN5TFY-m+BRLUIUYo7Gx3y@ z$96>=b;+0>{G9U)h0W#fE+bJO4h~z;M6By8sADHs_CKNlxWyu_f;eF&t|Csfp_o*tZUr>ERICs25)eC$RXZ zcDY8EQj6&IPCS${YaByoMC#42B5d+QmUXSE-v1;z+j1GjIfgC!jKMWE|W5TvjK)+n$<@h}xUdWr5LHLM<5bLhT+e zJiZ-me;MP7Bg@cRxc&2?D@kW4qyrP|Q4(Ii2}%K6<4xv6qiE4{_!=1omp{uG9mpsp zC@X`8$QMxVal9oe_GMOwhn){;p6T&Zf#A;Mw_XrKi2a0N6RR1e&6IY!OrC$&g?FE} zGCA87?J$u^5s6t@8TB$f0NNbt_OsrpA9*Fyy!H!4ge>GFY%-7~<27cT&ym69uBPFB z(b6wDfLA$qc~%2ChL5*7n+KeGXE7JVBjgww=t@oXw|>sY`AekBCI-uW$O0tY){8`I z`SrJ|FiR;Yb0m+>M!zmNciM+Q!dp3R;SjddG8fq!pEtFds`kgh2z1>*H~qe)JLKhE z%-4ryh&jT3B6SI?1>K4ZeEcH$o6*iWFzX<2<70bx%TY}BX8SjLxT{UvpmrK) z5#JojGZr^tQqW283GUtb)DUWBOWPy}Oy3EPvvfcIkGg$_&Ch#`L07_&;aa|V+)Nj@ z*H|pFWdRwx@0y39HZmdU-nfl#F1eNU*ZMG|e|WJiuFQ$}X2aIQ+n`ra^A|rOKLnOjQyxgG6{Mow0CQ7 z{F*V&NM>H|`)*#XRou@?{RFS`Y4)Ic@Nt=p%ZV&wUt%kuY5yv>Roq~>EIXY0cRIh; z`|5>x<;7}IVo+X`5aw5dN@t(@HfN?Ln~vuU|8T8ulNIi|h~wTY?zegApuc3O$1Sykay=2D?PiU6!#27=8zV(EWoL zVH3KK(^pJ=wK5R%4L%uPkU7dZ<(td}%zbNykQx|8$MW|(>@x@#BTwXdKw}pb-@wiC z^dlX-7KsS)34xLEnNe#+P19eocc7I|Ye+!8Ng-xF>E>q@##6^7rjws|@UMx$U>aVwj@S@D5KPP=6RJVyza%M! zAd|>bavmIjAJhm*Qu`e|k*Q==rW*hT3q8 zxwGgjIE~tSqgmXUH-E)ubH#L3u*QJ1i}x5B;4NE)bOVQzfFX6fhzvCqcT3bQlW5}R zBdrR6a{ENm+k`h45T?$>Lv3l;m6zzJd_xbq+3@ep1rTyJ!V5PP;wPYMkWFwJ$jCsd z065RvQ5nfQY3Mk)79;Uljz*9-%tbtW{?&gC*gebXbsQ|U=t18*@fE< z;rhd1Apy;`(#xPB*@=>iFnrbTZ}oB|FtvT#$e8#Me;_prDI(Q;7h2}(1$N3jvT~Z4 zD2;JG`Pg6Xvo$&C$*$b8`0lB6T&E@@fKx0fh-dNh1c6|r;0vE3)5djPJy3r895+++ zCR1JHA4RJi0fKjZkN)29^eij*jy6Ml8&F!_v7VY{b>rUwq1jRy7C-tGoN1b%pwVo^ zAN2dwKTlYQNgYTo;giIWHa~13wSz*{&LI@(U$dq$;*#L9x^Jqz9a`Qtd55;;hdLvd z+n9+K!Mfp0fM-~yP2)U|guPI;2K%!5FN(JT&HCIepJSk7w9fvuY`4EXNrnKvzV3&A zMEZ45Qw7`v$7#UmF}Mf6rjZ7y1pq|Gt8|);m(aMF2>g*sM(*2tx_$424T;$1*s#0| ze@3fPlZswd&*~eFc-`6R!@jcKUo2%xR%mcmg>(8mcm?QGz9;QHNus14V0VGoV{^AW zPtiV)qjBkD=yo?f6Ne6NfdjwZAl7MP;N;xPg-fa@ya=OnFd)9P-srkEOLloc;S!;p zDi2P%L`t7$!jG`91F;o7k2fm7_!DY2DEGHnmadP~AG15}Bjahxc=^!rMfg-(_zK&_ zyBxzszP_zg9yWesNCo|Oqr|rcQal_#J1O&oaaE+tu9ZN$0xGv}Z1+t<%}%yZC(_G!+WujqD8vTe?4+X&0I2E0EIF zovaXglZ4oAvNZ_7?3X>~FvQ1hk4(P{;IC+Bhn8ZogQ>*`pbrbk?aQJsM~4gGu;+?G z4<>tPXITwO$B?K`3VQ8d_&hv_(LfMUmvWLi6TL%EEHW&MXGXN0tB=jTkFq-eYVJg& z+D>(N6^R`bF}?rp(V<5?@`pIge>dRs1^lo(XjrwlALJ|lgy~n4pzv^QX;sU4xQ{fo zA+%GFYwsUmcw&q5ZdXwHH`yHh&G-!HX`m_lv^6{Md#xh&cXU^hQqHPg2hVZe(y zMf|x6TuE)7%E$z~0_OsT+7?=qH?}Rqc1=C$`&3&eNSM(Si%oRf+qG=+QJMpsM@PnV z$QD4I@g+|}z#X7s5e+(sO2+s16xnU|1yNEw!|lYVp)n(t>vz+?X^M{(g0lTDdqM<08-9^yDuLvUBj zgAN>-N`fQoPv-&?5d~S3c|(fp2_7@kIwMy%v*W0lzTYG3Hw6syvwa9&z%34WHHKt8 zosH${eszY70Y0$x{_iZnImemiz)!#ZnbOaP*D8bSC~ybH2p})06;jPS(9{(wmDi(K z9Ov+GK1JJfQt14pVuMdyLND*dT^=6lN4@%;VfC&IhGGG0~<{D9qGxKeooX_l!SF1{FP?f0ci}JV!*oTZy>F0$$rC8aD(k znssd*i{E9A98wud!mUwS*BwP$Y2mUE4ndvsw@)|Mh{jf4ix%pJEy-yRs!As5f2?Bw zKJ|lmve#RZW$t*!f5@{Aw4J)`z?*U_Us?o<%!N6%>xN|B zkEx+?DIRSK2tm(Jw$Ag%B74(gxh@~at*YZ1qC0y?*z}$4)zRUN&0|>b>YsCPQe1|H z)F)PUEPMO&+KwomYueGC2E!Rbw*mJvI$8E(zS z+7&36-fB+@{0Dj8SjA9+wKYo?=(?Ame-`ysfh&?c*$;=(wgn4=sKK{|=Q0lSv=DJ|7S zt4{{x1~tUvqt5$kHL5ueWzBS1h<82Q)LYRg^9U8_0-{Rx0CXzoQ8)#?M5AL!zHNF~ zWi+Vt)F+rNl)w^J)IikHYUY=8(luX5ab!GvPJiUK94>NpZ$#bTkpPXGZusDi^4Aj-C+jLtl%3cfLPTyS+Lia5gi> zpmr`XI8cFkb;J?L9t$4_C&ud;j<1H~I(1yM^$kIfGRxv2yxDC5$LBzUgo0zZyEvH% zLCCh&vh9+j>CU4m-ROEf4;I)i_YFEHNY-ku(r< zcp2HQpU9+7(b#4{A6{fzwZSavFK$}5^CmS9?e^S&>Yu!!%n!XUT5ic1!05iOeLe`y zxNOLON3C0m{7-oRJ%Fm{d^Wviy*2l2b!?W-4~;E%s}r>IQz(hP@)n znr@mN_ps)Q3AbK((I|^O=lCkaS|3m!sbSJF{ONEmsU`FXvY2+s{=O=&ys(w zQ<8nd zdo%9NuF>Nh7{KUd%^2jGl4fig8u+CNw-QbuB)x20Sb%7DX>7M3(_}FO#Ssa#ee;K( zH!*jFu~osrB`{M^45TS%fQQ@nY(2~pe~~IfZ{*W=BXthc!jJ6Cj0hw4Z!?%=8sBhyoyc1;P?Qw%h{1c%E@jIFAj1thXfsV@X4~(LyqEmr*JI18 zmp>rP0G6S=#O;i^!{QFH6kjp_i%PX;Xc{7+J~nG(@r64<&->5Sb>U=wQ5Q_){!(46 zx|?-9Vb^6@rqbd=^!plCskvJje|({5bX;X)5jwsImMT2Lw-6a$tHCdiO%k23>EkwH zBNk{Vj`3kEnevTEkM62*q_Wc_aT5U(gW9M1|MM^adT|s(L<@qI+iC(H`VR zcaALcEW*Dgk|#8Bx2Q)D7g!hB+nrT42{(CYvt*Gtg^i-O=B}e7aUGAfXTOYNR-q~t z?lTZ*jsw=%@K8sb;>Ss(kWdX-f{$A5o-DOr04DGV^82`>PCVm1=A@>n_#DNNFoJZM zXDis7;_pz;V8RCZxYAEnfAm|Ml%?^8Lm zR%oQ7uerO+*T|}7e)9tpGW z3FKj#UFTqOi*l3|yPbDXLNLmR#D%SIy5ua(f0K0`Rjb~IF>l;i=Wg6FL>d~zh2C4L zN_5V-iujF}2Vo;hlhA_)x~XML)A^8OSPa&9;cL(1Gj0d!1tp@~BV45V^2TZ!-{Z^_ z(|bB;m@T&;5K33-hTRT+#jv%?ck8Q=5S9oWJDh@f4wU=f09HZH#AU)Tot?owZIV+9 zjoVt)S=WIA$FWe@WD**u=e&3u?+^=H-`|ImKHr<64y;&QzfPTh8-Xm8V#i6HT*+`z z`<||f3K9O!7qy2hXRo0#2sT1u;4tR;p>JLXa>U}6o&%~09G^@=yGm(ZPLKfr{rmN(Lbasjk>27k1 zU@i?!{(?6oTMVwW%O|XMM+m!1O_xC2VJKF6l*GeqI-RQ?YrCw{i>_WfCDZ zwVymmVUgMo%|nbM%5B$y#mj%T4qKWv8R>Lcf_M)be2l4ynoETpQqVGcHB-e`fjLaD z05{0S($}Sx4x^_P4~?FHZTRht-qSRL?WES>zUN>OonqI&(x7vpA87i7>%uJvlrX?AV~;h!HWyO4 zk!W>P1_+U-kr!MX8B{K)++0?yeUFBoJc24Chysb9TVE8Gg@D3xyUE6&l%~EIhw**= zTtsOJa-xD2Ar*>c{5}7q6l;JnJlM~1rt!;0Bt4-7Hnw*+PtOes4f4zg7oi7$R%CJ9 zh#pGFsN2E3Yo=I!T-{(9xkbOV%I`ibR|Ud~VtVAnVneDRtR>6tZ$L#PpkdmH|Ie_o z?K$wHx!G!o2;g-#N&--xHqS#AcMD{K0z~cgL#O2WX<+G4|1$r@&BOt`pUz?D(rv5< z&>a0Z+xET4#70B3u+-+vFpth0i^-bl)P9Q%;*2)0Z+*E0z5WVttC@H1d%-SMUPE`K zlnH)yO=3ic-~|=FGHa1UACT(R2v_dkWP1qfBMI;j@)oOw75vmi##FN9zRW`7<<^ff z;Z?i(6L9MjE;v3ZKsv5U7Xobhoa;1R178L_nA^zbC^Q}ha>M5h*j>qU`3kq{JIgLt z$>I&r`&gQ(v%bG+nXMBUv_q`ZvW(yIdsCI~G_iMXzMUqv^9$Hw@mJAXu~pe;>lcv2 z`8nE!5n5D@nKUK9&VZQBpDbJ4kP1XkPtLAsBTu>xjS)(*TUK^B=cY<-k~m^a;}DrZ z>e+isQ#34yhwv~iA#EdmqAf{bUGl_3VlE)M|5TZwTnrgnBY%J-U&@NsOn zye4r0Gwz9*+!Ff>{R;2*-f^MsCd`1t@$%gqf2>?#^qyAa33>?fp=q0e;6dD^$K8lJ z;ci=y>F-fmVJ7ecG3R>-9~GDgmAE()r!3IK;*kIRF2}|$UYIGiv#iiT+*WkwB5*}= zN@QLG#J!gAYrW{YB@cm@3--$o)2imShe~F+mjrP90^M7=jSi_Kx4jD>!b6(QM^sG4 zP=-i;pKscCe%G4moxO;GW=At~HS<0#d`FJj-Zk?5LP7_SBXA3tm2uMHpMj~VIt>>H z6bM33k_41rAljTfXX=B?G0wR+xaqe_i$alze&T27%YEzc&Lc)`4?~&m7E9nd_rV;- z95|%`+k{TK(p`J!*;|&ONJFP~gzMzB8{G=)~R zSM(EEl1HH|*11pt+Loyd*0W`v;tGUEhEsSyvA7467W6I7_VN$>K~LkrHr|~CeR8{Y z#8r)Z7v$C7_m?~*YP)S0NB2}ouHRQ6j3E3_R?V+Sik0gG%=RvdQrUDrKwuFC@|+jA zaU9i9;ulLb-YfzW8!WCxx@)|v$%TiO2Afq2VeGGm18+$r7~rj1|Km0SLIv|V_u~P} zLgj+d=z46?ta}1MNPfY;;xmckqbuFq3onAA2W8yN_{*rF8W)5U5rUE;mA3})#79qP zbt>HF8G%4FzDLa=IrjbHJaNmFU%0NulU&iHdd*Ic!pYm;k&-$^$9qh~ZqUWA%*`J> z`{B^y(-K@=W`xkIa=fp}!Uc>@7!~F9cqfy5mIq+O)G(n)D+VRg=-2Z$*9J{)hcIKDD}AKB4C{-@WE)S}tJ z+(vv{1}($M$R6tv1w&lIsUtwOq_~%a=6#OMjQD-lG466K)|HoCM&uXE9y~Aj*U10E z>yffGlmLNWNwfQhW)#UH{&M{)M~HP2H!Z!asVjp2Cf1%1HD&NTUC!sCaE{p} zZjj`1Foh}eJHso{tA^89q>TBE4uLnHJQjoSuY%JTYa z(!T?@F=RG5>Hpc(y#>|^6lQ-7gbx}G9QX{0QA9k~Q0<27qrviC=r3mM6 zHJamw8e7}tr-M*~V9SM4hS#ja&mV$2%U^^$EfH+XW#%VVw-K+&HL79Fv-O9uHn^o~ zGm%;82B-(onY3O5Z5HXDtvhh?eog->U=MB4pgxq@OC>C_??c{G4-Dv2aun$gZf|TI z>;w>eV=5k*{vk88R?;qYTyDD@CRr~r*}nwFr&ay!el&6eU)6iB)xA;K|LT&fH~PhM zg(0`Sr2nyl>Uf`C{h^He%cVR|NYBAj{mqIY|8c|l-;Wshz~G9Bju%k6Oy#nWSBB)I z+aY9a!-FJ2Z_WJ)l(5qL$8V*Tk4sOIu}>!|DQ24?Z5d)6=VSKow;s+g)adp$#tx06 z7Sv9YcfR^V6(N;E_m!#A?M2Cx&(eb=Fi&cQ#T)-YEBKy`u7d;7le;9CBW-o-?Pa_% z6O*L>h|e=$z`qEVbjhJ~Z<{%s5^Pjcrkmz+R}!8tL>5p&fk$1?_}7RCm)F_m=TdC! zyC-82EPf2z)*67)NQ5KnYs$Mz+UGdScinu}d%P6!t2SjoQ@LZUD#ExoMV%6HI>*=F z`C{GQV8A~&oDEMOjm&dJ?h1t;^FO>qM5QQbKZNF-yzAZYJoIVi-`Q%)_100HG&zr8eIK$F(V~kO+$m z;aTcSLuz``|Et~DI@uBB%gQ~Y&U&8>qK$n;R?mW@ZdW{j+uQP7K}Q}mSk+q*%DexW z0a8mAybw!#P$DIw%5LgH(}0k&oM=wX~9ixsd8GwX`*0;m5O-K-G}PJ0eBYulT4W4F@pP+U{~(9hb=#IHV2 z(IQEX8djI6Pn+F@bhna_xB|{igG*lBT^1=Oi;G`JWcOyd8OF)dhZ4AK5x;0s_hQ%j z_A&9<*CY!CK#o9tgE#;6VBn$8Ne-5sV8Dgf;jpC0WzOU|33Z8gZ~h+l$@N$CS}Ksl z;5X4x2-dNJ3`gyTQ_wq_BP1fjrHdX*7~%w&B5m?sZ>SqO@k-K;1(T1nV=LN%qpYs& z?Wd;@qS@LnDJ0sJjY^6g-6tx;op(Sm>AsW|DVf!xzBTiULp+GtwgnE8mYGrkA zXF7!ar4*;GiDpV)gRixkQW^1Lvd->~&`FOWkGAF?L~|sO@*xGWv$y@WU#9cwzWMH# zxwq>W=x`sZ5H=d(Zu|D0<#6Vn22Qg4UVb&G0pZ5Jjxsq4R4}}#--@`D&B3xdtQ#ro z-ui5?jLikSBHJ0gfDt!av0%2sNWyUqZzUk6*RPatxk8)Jg=gYxI?t(E&20QTZ5_@F zGXPiW(NFzcxIG6A%rhS%JiL5^#%9o;AB*wYg;p2Jw|e8>VqzyYF4q!WO~xmTfNhW^ zM>gJQ+G}~OEP(xw09(+W@o?!D`u`$ykd8m{g!8_&p6JXQjKPB19%J$%a1P#4{ zznj0l1qaaMw7p!mkUnT0SLrogj#DEK>K`12N{xYg+%J;Yir#wNHhDObIr(sD7pxmb z`UI?S9?>Tr(a>gJ`ry-~(ht`4TiB+aW_fn2#v|A*#lDC-+STyf)O<#K$TXapRXrB1 z(S9i$q&z%hTwpwz6Qo4c2h=Q(-f%Oz~542Y@6T=Q9{o z;4v9Ko%M@wtL;+YGIXacZ5EgCaL|YBD@csjVuSTQD(OarNX%NpvJs z=9J@P^Jc50dml%2xI)EYh8~4QT%UqBpVDk%VeI{C{Q|w!WAo`95xHTB=VHPemkW_= zLLcW_+8K*(VQ1m$O28vLvoCP;wKrM=qqNIZyZt?KmXC*Yz+zxa)JtNt3VA_2v}Ke0 zVzaBI$6XUAbfA`pP!FTVuyvnkz?f`{9nOGyjX(IQ{X%Oc|Fc78D+4F)3=|WmD_jE~ zJ1)U8*_}C2V^P^tWn8(K*~x%$9$)VlAR!DBrHy0WeJMA`1uERq+tT9-E^lg!Zv_*l z89^Rw22-j_ucIY?!9pF#$4!QMxBsyqauZRb4g1d|0Gf>4z*(@& z3*-Dl^$H6C+qI$p?Q~Uq2yhICOaMBA4xxWdtTT{!>vflDg~<=7I9Yw>(HYSO+|fAR zaIRaS@$tJOB!Uo%M9xop%r)wMhyk0m)Z4fBH)|k@yIiUqzB$)zL)TH_-!co@<8U`Q zw!533*6eoemlB&0{j`+s=VSK~dZL^uEQj9r!C8-EUH^4eQ;8dQ=GkmH7)MmI>&j>d z^9m^kbxf|^8CeGRMZ|rZYqEoS-l~%4d@ReVC&yN*3TKL^3W4aCAt@b7*A>RB3kZIi zSPRe4eIagS7WS4(FO(NBRSKD?8ot|8-FDT)c=|fAoqHRF5ms))d6+uH`0Inx4u3Z1 zV7D?uzz1;0c~!IY`KEH$8nA~qn13;3*P$EN;bx&xCiQ68j7Cxm)KSF?$r_!ML{f!0I#|~kJ(=@c zdv?pcQE+z89Rn3$_;lE7Gmyy#9~s8=JkLI1ySlf2LT2xF>Jc0o1Jk|1j89zEj?bwc zYi7%x@g3=eL-a)(RwwCRSn_Ae^UOC(6LT@ys06pH1&IO`h?f!iGh&_#1XN4&1Bb6I zUvxN1XR$8UD7+6hIK+7p4$g@PZD4T%zHp*fVgAA+`2x9_%-GiIw&_u`>H3yUT{kw% ze(XuQXIFs8!Galll-Xu6f3QKr`o_RolLnl{$O{3c9yZ9gE3-v}z9EVo-O{=c?%%!D z4^*1E@E)croprP*eqOLawofgyQk1$Hbd3U-mJmwp)d>qLh)uti%G^J6vpNOi1D39byg{6==DcbsFSCAJETlv4yX zaK8ylQ+IeT(X`IsIpJt`2mfC#00kCV_faVgF8i3s?meP0vv!1znl#H8vNN6|q#tiK zpr_GobHDkRG&frDOFt48Y~3HKaZ`>ls|1Taa!E+v{wr9?FO%`w5LG(8x4wd;I4!!f zFviNTE_eH8=}pN?%9o({NkyN@VV>=eGp3$fuhyUYaX`ZdtuSHg3Bl?8zXg?S8z&Pp35L8@_FtQ&bE_yZCrACyZq#@Q_@0+k4XEIOfN+MeF5QTMUkQ z@J=JU58;-seAtmNRaOPf`1fAHn_+>^LpbfOhaF%mbuIhVOoQe^d%hFyx&>@9>#ZrI z2=WHi)lY@48;ALe%4JYir}LY7(ZfZSN;6Yx(^m1Vn38DdBKj#j(X_7OCH0WZj~XB6 zt*F;QH;ci&$EM$vJWX$iM~*N)+4um;-@6-Bf%K-Dmua@zU&Oax z6}{YCt^w=*u=*A@UBuT>aiRegdDzu|T|~)4GEa z!+_Bk_)J|L$;2z0lqqZ@HwUVRdqgZ~Uu0N-apZ0zx(f5g$j4YVDIHUkawH;%3Ay}f zU+1>jsAMSfj$wzHz*dF58VBT2qUS%qz+=GRGsa(i*B7)Gk$ZSbAA(iK73jzMOiRjP zBT)EZ@`q1EA9Q!@OE?M^g1$1lZ^Ju~)Sl0qIYF%2ZTVZDP!`_)W^yKnZ()s#4uJ9P z+IkETD@A7J05%kp{(~m@BKT7qa-T8j_l9CfJJQ|CCpV5@;iy8zPb7sjBQ{<*tx1gR z7s6e^PA4UD91kRe>{P#FVxwcoHj3+ybT{BAshjM=RTcaZVguX--g;jihV!A7hNaHV z&9`4Od9&;#9-cZ7G`Xj^!OOu%3D)!BtoFC7$?TJ4op^U?k{k#2Vg7bCg~+_Th99I# zpQk{b6*)4)=1=oV3NQuHOGJz%ws=HOiL3HYh> z6xekD>`lB`=IC?YEAKzm?ckJn{-O7kLQBQG^;v~p-ZzYy_6q&FDfnDRR2&Q#+}bgb z*Rf9|KnlX^42DD^w0@X(fpNTBI*H}}yISdJ;9JBPiesLsT?JdOR82tP>_1s1dBuR4 z3|CvWWs*k7{Qis7;D2%u(6&&yaT`$nsA3s}o=Oz>0GTNUxf+t$UJ5^wqKLg5p2x18 z8JIF8K+<(w>KW<#>vHq)y=FR>uOhZWogedqKSL?=FTQ>iOdVs)NQjP|1{J}U{;8-( z-yJ}zlaA}U@+iat>$}J|HWPj!Q_K9}RSJEW2cpOyPb7sX^Uqi=x{jMmo&PF^Q{Tjg ze^b{r21#XzCk?)Tpn)qw29KDc?{XrgcZeb_3tfU7*%Uq7$J-fywPZ4BI8(QvUt3@s zId822zLZb5^DJxAWg zRBEoE=5Lm5aEE`lK(ytd^G^eH(mspq7u{3iR?sVpJ*>hO6j>;6S$3DGG`DRZ!KB`N-d zzdC;!zMb)~pUgkjIv~BY$y|HlqQZW(6N~PD-H)H-QqQ8~=?<_-bPmn&-RdrS{!@xU zT%N;>NupjG&9RwXW5jxzmp3F%PY~^flqcpe+P#uHhx`l36o1b()bCK&9$^F5m6Ddl#Cr^Ic=g@9|#{VAfxj-11=iGKeP0l{9;v8 z_|=$&=38E=ki;LLLH&< z%RtIzLSs*I|bVEo6?!%X)WEEHpM1| zB424@D@G9}WAqhuhbS@a-wYJ^A_`bRcnlu^uO$1f48gl+JjLRvfi9mJca~YnoVaNo z)Ct>D?aA-DKYaf!(KWxdG`e&Hh`J-RQm0*J*cA8AU>K2J!~9qzV5%W4LqZ@>A`DGZ zIklnX6AP-}@R#?42xTV->EnuB{!t`G8hDPyIc*xxxs7 zf5)b>r@tV}Tg{I&x`EPHj+IrS6d%t%;o{Zsi!BW4YwUvzk&rbw3dZ!~TkMFU-Vg~C z_;y$^_3so4Eg7L3W6o4;!&*#VPg@O59qvTtCp?;2OM1oc)jrW#j2mX4TFut>r@B(5wwE*jy^^b=i6a$5QSt$aq=b`IRf_6lz9krrB5Zr5Gvy$$ zMx$?$1A5u{XE=?7;HYgH^;=r&rmgB97o!;h6?KeoS%EZ1e58Q7#&Q#fp@eoz;`S#T|;F%MG8L@I7-@A-x$Cp*xZ4hGbn-{J^FFaDoKJHg;12Ryt zQTZv5gJOTrOh9;-jj2TaJ0l@1x~Akc<#^edjvIzz7L_YGqe`p>&`DKJHHn`}m4$dd%SVO< zdmY}_vGKq02hJ;EJ9Ya67-{L_2Ie11YeP|Qix|CcpV_GY)@z|q$wc2g5+~?%J9tcY zuF82v1!__&rwl!~CUcmLP~l?2NVThPXV!9tSA_)Ay2dcVcx@R`6J!8()Sq=Ol3+T-JF_%e_NQncX4*H$Zz zetVv?#Aq(_`h<>esi$f{Rs5J7tRd`3iPYAXU+FMDSt4W?1CzCz5@?Zjo|n=%^8zp& zm{%3QQB)0f@dxEpoSBKeiGQNKVaR9iKVw`TN=otAsaD3FGn7Yw-%|;9A@eIsLg_c}j!DQw5j`Z|k`-()cC(h`Eg!j|WoMrHprJMaVIM@K`_0)!~GG>1ku77exH>2}kR2nA= zyf???oQ@mFO8-qr^2>R0MtY9Tl9Ab^+ceO_oOgFS)Ky1r_OnZ;G=ZQm`s3o3kql0F;-lh1!KBtIe<)Ca&!Z%fJ zIOh2>>PBt}HVS82VZ0T6%yP4D-FuS3$HxL~dMLd9=1Y%3#7X@!!vc-I;j-B zoB(a14=k)YaAzDh2}5*rW274;{|}~wWt*;2n|G)=)a5=Zi{rFlw}TW~GmtNxyGAkj zAr!6Txg>Biu)CFM!PK}#3GBGMR#e;-=jevch>QqysI&5QuJdIcH@P{Af>s0${fO@< zotp;-2rm4kk0T%{+AbJOGW+5tl`95$haH8=;^$nY={v$qlkY*(lVCR7&u3Rbio^1c zgz%?=Uq7cgX{{ip8+e4&$U2D^{<^FLib4Y3Tu@6lVM-zg>Hw=h5hX4bF9+9(fEX#B zr{N}jv#ZjzVCw@_Q&)FfUng$jK+It4yk>Pc|9Vg~dQYb7|Ys?f2l``r3vZ%Mb^2 zyH3_=9T2Cv$Lq022~>@WXJ})n$#ELL%er6Gyed1m-;>0Eu@B1S_76A!Ocf|zF=v3#79IV*Y0;8y)YR{*24(~F;0 zuFzhW5s*{YHuK0PMk!243;3h9yaDn@LX{9guo-{4)&E?RlFL4Ew(`>`(`Grr24R!& z$`+78r{Vg%-SI2p&HVY7jd;+#FcU9_*Aw@%x7Kr*mdF(8Q zFBXOyRewvevU5n-6@B><-WY%yTjxDYX5?tBjHgPC5F8B?pslNMhcV0pxqgOAFYTg4 ze=oU|dKj=62hekPk+y~vk!WiKjLGsU8a+PQ&s46G@E#Mw8A zo>S9+#0M$CNQoSSTx}FRV$j1cHPuF!_2QpCi?crkvd2zat#-{CJfix7+P+q?qQxM zUI(XNjitqSh1#RVup00F8NJ?U+0WbxsvK%5%Zj3MQ`*KAoWCRq=9AEF^|o-|4o{$N z+dE`^X%6J0W6XjT`Xqfm#!{Qd!}=?}9R zzhW0#nI9oQ+;};9I%;c_=kH!Qo%lI*J*4~zr){^-{q1IbU5*;16*j%~6-NJ3949Uf zXdL`xqFaM(YNVbQ-L1X{v8VYSw}7y)kZGVhN}` zRVtXrF+8t zte0EIN5dLpOA)5j6R`zA26wlY{1L85j^~MrEka$`H};d-yL4;GiPT!1CiiT;r)!q* zr0%bGD`7QI)tFi7nJGf07D_(}l=w>PSEaBvlkS5KVHPl5LR1%+yPbUIBE~~enIab0 zvX!w=+P3TR`gvhz2SCA54 z;oIvg#jrjzHor~ckYLg^t?9Bl5%2d$UQu>ei9&)AL(14ot}NueKcjB=Li;#qQOhrdue8Kf9!X7=bp~<}ErmRdlj8l0Ha?t# z7#>`ik6B4(jpW2$3LCHN&VyCFzME;-u+pDzm;E~5rIz{s0WrRPU_PhM2nB!Aq9YH2Ws=ROJ&j35=reoGZw`Jae9)Qk+gi*K~cikcCcApJc4k@vxp!#JH7G)aX7i6*eVN~Y?TQgd_vupWWGN{$x zn9-CR?i0qduOg9OPR@oY*Ohft(Y*A3?Cak=x8VSt@xROA6F-+(Lx#hC=eUT|b$!&bTn}sKWb#$WuCvipbDUFr_LyUp6il z<*LAk&CzRGjvG#-k>RIw;DVRxo-Jq3!p+7#`tdx!nsmc3^>g}w`=DLJ7%>T_`)qLnZEf~U_m zeChx61NSvfKf9ce^hp=cb(ft=rnC(3#Bcu4y?Fhu^uIDX47mT22l!Hu(#a&3#veC;Nt&J z4Vnr*{$O+p9YteXB{X?L&s*NSP|F6lE-gvaHra`=?&}H9XCm{@l3QR7i;0qt`$kG4 z-wety>n(0e`ypeTJD6VqsvEIrysI|99jec^a@Ml&EwT|yXRvhNK8*^WMR2bm^YSh) zJaC{^fDR39&l`)CUVwMPOsE_h;=FKk zDtmZ_lo|#GEQML?1nt=BzS)aRT?i$CS{mj2jAH67Y?N}{M{GQ31bqcgL7*lqeBKXR z{f)MCZip_zsR|SBg-saBJMaJ)q3BG)PTfFlfoc)NH()^D{+zzG%q_0A_E`=?GA5Pw zoh#^G%#%)%8b^`CH<9W`iwU4?k!h(B+RqS{Kq!~axIx+>1o?EsgY_K!Poop#`Kh`Q zd10;TG8?=_;R9vNKp^;z)*i?4h{%4bIN}$SM+*h&H03F@k(=S4vAYaL&l0_0fPi~2 z0W9C3zp3@dL6F@L?uYrRoBhmK+oUS;YP{0gBV!qw7gCQ;vr)H`O!}1H<_;g$Xug3k z(L~u(sz^%jRerC!T}~3vCMkW6@|r?bDX*Jduf{-MySv`LGil@ZOJ5p9BWC72Q~|N) zqT)6^#%1RRIMI(S2fjvUZ`*xxT6yOqEE0RF9nWRzDHEuTsOg3mEYSa<+Q0*S3(Hgz z*|`wY9V`PI@3Vi!Q$y0ryzc~hnWnE=tGmUInSl^VIA<(ww@mwb`iaO1!am5(p$m6k zfLoWVdv^u;gzRR^hD=Hx8H~!8a-hrnhdBCrQ>zXNAD1PF`&}N_INnb01;C>5I~O6c zxI4U5K#^gS65Dvk9@{vRv5Vwlw`)Mjn=eS2b3Q;%!SGlBPC-M*K_Mx#cZFlf)z>f zq+rFZlEW}@%`8%y=V5i%W~=#Z+7|PvMVg|8lD*|4Ju2YfeFJ$+kS8WQe&FCd2DWe| zaQ}O(<+oX+1UC>>U`4*cR3ha%S2t+rKO|{m8vghmh(gmItZ0xN4NRnFd?wy<>HC(V z0kP7|(`%g3S^?JV6kXcd_qfY}4tZKH zMow7ol;V}N_HIH?*h)D7}N z%gm8KHX9xTZ)Lpu@*n|yi{{f1+tIKWiBjR+QbLc0y{{J0J{^Z094}hc+s(LDlSBJE zr4;%7RS{)`uG)WY^Uh{237avTR?X1yS~l^w|&P*2w5l%VdCLjj9)Ev%E`XZT^ zrDrn_>HZD&Mi><hDcXXD~M|OBaLFxzB8Li_Be?B}xAf+mY!>Mm(n~vlwF@ssz zd3Ka2%xwEE1MITImcEqC;Le_h_mUzO%E0KG^+7rZ);kk8XfR>JTnJ0fRFQs3dZ zel>(dbTeZ9tnz)5;BM$GuVf1my!i#ZZn(y2aJ)u$^GQK*UXC*<{~t_?>NCSc|Bo;S zhp!^{Y32RI7f7$Ab#*2!=p1E+Pb}L?zyF(*y!>yi-`{*!0P7MQmL^k^N>N#H?tb6@ zvp8bIufePjsQ4UQS!_bA*wob!$rn{BM{)nNI*YUnqYbhGNlE-sahB9E@yLtwe^`~Ucr$&(@- zRQ;SD3vy^4`Aw%(B@ru zYFCZ%8{b>OQ7SB~coAb+V(~`S=U@+bR;DfK?L(GYi4tvi~iXbJ7z$ zF~!E!D0*2g<1&4y_vx(dBIzL{EL=!4%2?kV0y)#{ZDKkh2qy;}Y@Ol`cMNcl{bL%D z%4o?kEkL>SH0)7(nRDvG_}?yje!fAU$8hK}@ge@p*G3vX+>nmwKR(ZHENMME1X+l1 z&UM}&6I7A*Qa@S;qO6Sxqpajt8@ufyQPre9J8D9ZTgJYTW1w1hJjtDBRFSZKk?Vm0oWtwR( znQL@dOPnTlblwi&{jfouDIIC8NL;o>!5uT9dm!)sMmu~ddm30Y3lj*4kjx*3+#gka z<=>q4^Fr5AVN$Saz#Es4IRL~F59jo7B8CKY;Wm+chSjy7B*9TfzioV#dkn(ZU+>69 zYQvXyZ|S(gR;VMTA{%P4o-o?b=ddKuKl|i&?)$tUrr!E!0_T*ng>helSFZ0r9<#3A z0xElNH>Mpo2))6|Rt>F_5B2MXbDq=FGM_taoGs6VWLI;=@ssvE;2-CXzIpS0e=#Y1 z_bULwg>-Q z+@RlMlVm8tAxb#_YSb_I#ru7ThQRfwCWVJ z4kM=5C|7giCDp-jh{o&>qn zpC5;@*$vgTc*y)8qP{UmvaV~kZBDzVZQHhO+qP}n*0gQg#Rac$G(%jm;(J%?UA3l@-HQUxHhQ{@e#^vrSch;YK5x0nYBm=DPHM-9 z^C*&@<5w#e0Jf9#TasRmj&g_nm~W+ShelVoy=FR(BaPWU7i#tXY$Hzy3+0v{F)(JM z6C|aM+JlOL3-9S2_JQGwb!sHaqhK;#LXd%Dl_UPOH`;vub}_knO{>c9CTYJT-kbyN zfyQk7y1O>s?dm!if&F0}X13wu;&e5+Ss4W{8-7^#_)eG&hP3BoJea2i&^uD1=aj_PEKE?DkzDvr(}ppi)<@rW6~_|MToB z&-i-cf52UMb625tZUg1nu;7sQkGo1z15daeCC45R8!}u9cZUmS(I-+tT-hJq7sz^y+4j2XtN@hk?56*w zz{5$u@Q0C%L_$~H70T25sd3kfe8Ik-llw#LPx9}ml1ipY?8n9x@+ruNqqR@p zGd$A)lCOUWVSj)_I(#Z`=0jYQGm(|U(!-I7xF9~0BOOxY;2LBi3;F)S7}2rsJqWw9 zUIXmf`uei@ip3b=uH|iFJzOa~^#FpBOsWPh1(PjgMWFf+OiM}ODf5scnJRgZKw}|l zn0-B5vkssJ7iN1A8QUhe`#J5tA|@mm8m$3Jj$Epkv*T-mcleioi69p2vPsMqFQF31 zSAcN7#zoV#x+oPir>cjgpFxj@+hM4kZ_EaEE%9cE<5g^o&q|+v=JKLQGBeMYB){^$ zq#NWL@dV=)UCb}*&^Lb%c2g3;n#aQCcUxH5mHQ9u3&KLd^E;D7k`9a(C7>J>1MHJJ zX#<(pXwaAQQbs0U2Hy#73puOuaXPoa`G`##QgCPxS5SI|@CdltRM2lG^@Q$ht2>mJ z-;am!Dl)E+Gy_f$1GFb2!UMYga1oK8BP)#au64%zJ9uuG7C;!`bCj$h>AsKIsv{Yb zp7iyYEG7pb)70joxABH}vzxg?KP;#^N6 zhO$|u(QH1ig$+?g&Qo2h=5>Ah`wIg1tOHIZ(#3}}Oi({eW~cWTt+JHR`_I-Z-&=>F z*|pvbM~g@Ys!Zy?f7lO!Iz>i61;F5;5rL9h5w!pd-E1K(cHTG5Wq5{a$=Pk+w|JRP z=qjE=G!RRl-e%0(^ndoR!i7bPgPc`#ipwwu>3ghwyFZKLW!5hTXhi*3-J05aX=Iir z4+QdT+Z{KLY;UyG)t&&H%K0Z}5pzH6H@+?fPdO&&fzZIs`X|`|tw4V##w!yeUs^{R z_<_K$&MN1Tl|(t`)fcT@`yPkA{Lo77r-UW?D*6xx14~!9^=-E#LU@SBY$jMncQMDd z2>m}P&oQ0 zq6xE4TzD28$50n1&|ZYu zNi=a#oz=yZ2KY@&4Ry%JysUWLo2aI^%}8`HE5@V2b9IWwJcR7pSHbUSksK#TJreZ* z4N4WIe|rc`%tbx?ehK^Ui+MnF$P8~8^1;u4HxkUB;l9zDnSm!n18*eZkKfmKmwVeB z8B-?R)ipN(r02gK zTu~C*`F(FFqy~?LD+6Pv{TGc_UvbHCY0BfIL&X*tnh8> zQ(^2%{<^$Hi{X6Jjs_otiH;~oO(R#hx%Bd1Tflx8-kHSQwqH9jO}yg94>vk)-2i@! zw){~2RX3`IErZ`qHHI1yfuIJ-h-ZDd;W0F%pPA!jbg?oT%HP4!%jAxq`&^T@8~3SZ zKyKFdk96I=j}eGRdGWss?ZjNFayl#33p$9~d!Qfz%(9LI;y3fDKh=5tozd8uViI2G z)sGgwC5uo*>PVsogTUsqfCOvzb%|PLAnKQK%GOzjPZ2 z^dko&-M}miuQ>LX;em5e){^D>8}Bc(!$Nqk5~v?&1Fn&*QeUB5BAiO9i+ar6;c$Id zW{bA|Pp&$DG4PJZHaj}XVst=splX3&ff&b_8DK%4YEIE5R7mYH($W(yTYy7Oy9kAkV>3ax*9b(i1ev!Avl8<)Cwy{ z0qo^N*zvoPE-TQu*8V(r`--~;SBl1FXub;z*IMAM*<{OK2g&;VWAb8r?E(?1FJ=hT zri5CChujTw7g6mUAQ?oKN)7(be1cLjl!3Av&q-scz=2sAfvOCz;#catl})1&+B3Sy zjw4V?w#0IY>ILRe&dl6&F^l*)$xIiXx7*&rz7%uxB_g9*}is*;b5%i}2$YDV1Ak20v0km$2asr#LXXV3 z#{@6HzZ#V@{ieZgMfZ~B9{=s-_4sEacfWS>*UjYbcG2xwhtw9G@-0AuJ(l!^!>u98 z3^WWLaXo*aGD7jK-m*#m5GAK|zlT9q`mgS{Y1c$%oM+)`^Yy342Yo zn8(@r-q4$3%vGtIYtzJvAMk;kZF!c#>-ufa3Kpe}18jl86lh~IoN1<5QGiJ=zc|SP zAD!lQ3#-02@>S!nyqss% zSF$6p6@O?RnA_AtJO>W1^O^XOhq4^^pZ0R*uxQUEyxpuN*%d9IDhP{ea~_7g{{l)V z!Ofg98Mihw5vhh#JJN{?(Ipk1u6+TYODGOLuRA+2A&gS!web?!=rX>=OnH{8 zXpt~1(Qb4{D%G|>+mx&SC9qO4Y#Tv|_6Fyy*y8F@*?ArR+p}IbnH8#J?+qCNB?GEn z!vWl^K=`Cep51S0%uU7kcqBt#*k)J?HrSU4BnL39zMG$8!`EI=*Crq6Pke`ds|2Ju z08)Y^!$R|`o3f!4z5FE_wWc~R56LTWMHCC?Cj1eFLqD1YZbIO|N@_nAa8F6eL6z$i z=ODKtK(0%~1lWt2C5DpfAXR~oxt{hBp7@-EN6q?wof+2tCKa%ZavlPy>-G_g>dD05 z;-1OOS{|=o{yI}YqW2x#QFYz@Yso9T9P3+GC4AX-P()&pdi2LlgK}&5+x!=G^l|Sf z(g5)utWb*__v2Ta_O9y+#R3Y4yzbSC|Gb^)cJ(4aF%lWW>_AycYuCA5TwgT9mBy+_ z<8qtxZhc7GJaUt|yZwdKLQsm*q;g;z@etsB)9&`Qltu%XP3xXr>;pNMD3l0S+&|Eq z&hs~OId%Ajzp>Fyu=9T1RMyW8e^|P<#ea_nEQBm*LV9bBG}m!X%$>gjYR4kfl`Tu~ zRCH@4#DREnSfE#c4MGUZJQpc+3qY117mhP_+~hwp7gy|8xaIt*l<$~W+eN* zZ|I}8n{k=PGX7l8aQC!fUV((stPsTl$qvXs<)A?IJ=&bmO2;StsX-8Bl5|nze$v^i z33~|OO;#4?dvGzP|Ecq?imM*90eO%67yK^be!J$4Vsl=`yFi$s42g6j+zqop|FsCFkZ&`D zqoGlq!3FZ1#X~`R~ldBO5keXNu(Hy?wUg+(~G~JnR3#x%(W)7M! zDLnq%BIaLpZ-4bhA8y}x%TA5_vL?^)TUTee5Jh=C0w^T%)*_2$&ch4l!D+CjY~#ZQ zMGnId+#rfY*hi+zT5}(4x-SN{#y_MN2|FasECebZaZSb%85Gp$x^y`p)Xl{C?9GUH!OA|Jp>pk)MKa2NFhTw|IjivxR&XtqD5zOhByAC=a-VzOn9a4N;dn9eDrvlKXpOPU&T$?$!!`TWl5P7&>X6O;Y+d(D z>U!8k?*dFYUzjlf@01U_Yq@cfX~omT~mnc={w!8c7fM73eT zNInDl=bF}=3fE5g3rXFTS0R{&u)&ahy8_BVRMEMS8|}Q5%tqE&%U?z)r$99tBtMs+ zxDcyEwG*|`^N^2P*U79l&Rz@0lAv@hg*8HYcPhf|6?Yx;xf9;TNimRb&jD&gVMSjR z)yk3S038q*ysh{3n%Un>6zV@Z|7HWwd5)#|m6z;p3Z@_oQ+yCPl5Y^21R>IS67jIZ zo&Tp7?cBo-l92v&H{i1AeSuT4q7tb(VI8}%Ry;@@?>lyfiTO8HjimB2GYdOk3m~p< zFz{V~58nMToQpG_K2;cNS(@l1#b$H)qTzgYG)rg z@-aLj0eIw?O|Lm72Hw;IM<#_#@qE;LAxdMjYNR$c{rBCW&Fr_a@ZrLI^;f{aq-CM@ z#1f_v>+vbs`VZ<5vx>JE!mrBC)_l zBmjZ^$6th70Gzjb9Vh07t4rVo;tAjY`^+kgI&6lqH(m=l&)In|84ehBfGX6_W0o05 zt{%=o_(bZ6LNl8RKCqY=OUo7*{WdC`KXl8HDh zbpq!JyO(mjXgx4Vr5=xEUcHgc>QCX=yZB>E1U2MT9JvS5P(ClQw_jvB6%} z*7GAe|CcpS-~RmBNA&qtNuPh1Pk=<7(PBJ{NJMbhlHeDW)bXFD&gmNRYvZMp=MZuP z-b9E{(|!WRIP7a;=v;2LI(z$W!;iOu;DQEoX8r%FV}E?WGxFKS-%_8MF&5-A&;XAK zK$z5n!BImeFDf^xjHnE%9JEY4#Q)6%qBr~pESPeGJ7G5I< zK}GS^xpLb)HKoLYf&@|8IEyas`5TOkC=0=Z_x9JGv^+O@8qkTs3I+%?(qsa8148gv zB0?|%^?TPsjqY!|t%i$M_ZnWjx~}uiJ_OCR4h5ssd6-*zf_KJXs@mOp2Y!WIRYRA6 zohg2=A9#Q}w}tQNR_qMjtS|_4n?xe{;$nV}E2;aU@Ax$9pgqblH4@TkahRX;}+xJc55q$aAQQ8e=uHI2YzYC6U7?c zfcS$xI1NPv(G7NzANe1ifR9#1{(?PY*;6#qWQx5fC7Y03Fz8Ay zhoAa>#d24gc*2B`90kL43Z1S3Cnyh%T}{eWamN{HbD~HP4&_VT{u;X?Cg| zCcB+Hv@7tPMw!+*eehzWCz#`&6bg^JXviMXS_#tv4B6zMqMn2_YgN%f9eKv?sYxsq zB5|Jf`%QaBn1+3^X+y(FIa0=s=H+`WCb|7S#sS+9d{^b%N_~06gS#8IGU%A*L&Igx z8%Cms8hk1m`O7%;M2zveR>c@$3_e5uODc0|9himwCwL5ms}tb?Vh_iGf-PV6*Ycf7 z@%q=>nl)dd42-@hZGQYWm!p0Hgp%Hi=Sq_F;6eKj{Urs#sL?`;8}RS)!?&$cD<1Ub(*|7(VJ-C@g#&YB&bu>Id8cPP^7 z<{Y7y?dgI+kqOs;y~K=puuIi1e8qnwUN9Y=mUC5m%W3U@BpXGaXv%zWOeBS%@m6s0$)d~;H@M8?@ z^cJz-^pjSSI~Y)z5}QD>T$W+yo?|m2@1|4sPPadTTtJ=D$JT@9<63`ReavEa0Xr76 z-9Af(n+=LlSE(%o7F9y*`32p5rk2(DEzh3lHId<$3RbF-eK!7R&S2MSI-}dHG9SPM zG?#H(cr&`$-(5NyY6vCo5O22=Z$*gcFp_Cifp`O<% zO_CFeKh9~5WSC@l@7`vn!E{$fOXWnj(U45~{R^C|Z{ z3L`!zdC!NO$vKrkJA9M(D$7bh1fNMqSkhLMF3T*FFmKZ!rhTYJoL(@FDjtr6u`7_I ze7*r@lb@R6Jxy~ZRwfwmArKT)QqMr24;l34me5YvuYIi=E`+k2+HVVIl1p!fS!Ymo zqXKwtB9~5*O5_qNb1>!E8n$AXzWs$d}Z^ zu0=1mdUWiq#$qUWun&l$A34oWE_I2E3nQ!NOm2Nu%J52R)dAVjcf$kEbnpfHk#s@cXVj8`#wHR@@^o>%)f6G&JG zMhB9zb;)kMH)SyYS;nqk@oY?H`N`O05}di!Oe25-dU$lA*$- z#t{Kn^B=aoA#ZS@X15xF76G9_(aMgAm%W&WYq^qLJoiS8jM109cPl=iPO<~% zTWH562dU{uHEYIU#2Pz{Zi1-ufZ87m6DtVy?Pug8m1YC0`BjZZLvs*&S4VoSKHbJy z^9?&s55t_yqj(PWpU#V2MuUF1<;{o)6-$V&sbivoVMiQBY{2Yk$qduLF z1|bkm5hc3XUo~Jp0b{~RU!5-}AsogcvJbtoCz+WzW_R3!$~dk^AdHR9rOZHKZe!&` z$3X&XtEGX`rrYJ#ndAmiDhJn+5Wds>YjsA7p2(sjipjdC-?+bLH(S|r<2%6L-X!6K z^3`di+sv_VA9%i`L@&x{mA>!Qxa)!(q3grf++^?rtgBy??bt@(1NBnRs z-pslFl%UOw_W&P_aK6D|@3I~L$pss-H}xbpm>h3xWYxba3}7H5F(ZPoeVFu$NvL75 z{f?suJ6>ti*C3nvPoiRx%Osq}vzPnzWv~z`V0#NwAhuBbg7L2%`haLNLP1t?gJL_M z`ptKU+_pDnT@YD+!}3)vL``CFunE1#Lc-JHw;Sd&CIVq;{?WPwFtQmlrE)Z%f;0t8 zP0b%ihJ1D=B($(x>-;WDlzv4}i7yJURH*vPEgH=oh_uT$ZL`BO? zRzX}N&AIK(UPa=k5{ix|0x531JLli!$s&i`h3u9uXp9E$0jSnoT(4d%3fb|1cr^K~J^k=iAOUw`lK3r${av;19+({vj+ETQ?iok9LvdU{hM5$5c>~?Z z;*q+vkwr5_?&Ml(2k3uVH(mV^ok1WLdCArg{yew2bc{Njal!(%n=9^`ef11U8;E|igE>$Vdr~6Xhsb}sve-Dq>-<%ke&z{D0>xk$Oi}cva<+ekL z*KVdro`~t&3*UuiEDp^yY2Ao6ADga?n_Y3`#ly*gxEcS4D}NpPDk-yL&SOxHEh=sf zjELj``^qZua?;_x+xb@Ah^G8M^(h5wkX%bLrANmD$(ea&TL9Gx)@eU$7z-v44&h%^ zbY-D=fEY2KKi(2dgXla1Vay!Z^RC~_R90J`yDsy@rgsvDvwG#VLd%ja9Z%@}9G3r< zL))ETfius)Vhg%#v?LfjrR=$3o}ILz2#J+Pit7uuDYN)D zD2^aR?e7xYF_beMZCC8?%;~#c9~L+7#jhkca79=^yybj0h*r!Qlq|@qG?k1hZBwfKIOgd%o{&4XiWEz}|4n8L5AV@$AgQA_btG z!Xeo=9;@r}lv%bXO{OOi6nKge(INgzw--WJn2#TYYQv`gYr7!>xI%tU?klaJSqYvE zM{O|n1D%3RUqG=zSE(HO$m3fBHfOc;kXb2sy+?u6GMlON^Qgn-!B7P*OylN@+E=W4r%2Y+i#qQo;wYvU@M}dZ9JF6=Pa!Gf z4$rCzrI|>qZG(9mdLp=qaR#XQ%0XT1d6VLkC`2E{1nhcq(ZhkH>>A6D71GoQ7-*e$AY9w2X zY=rkhgrA3|0fw)v#W8Axa1gw3C$HVmV}4TYb@+tu*Df`l9xC-d9n z;ztpbT(gN?&7!+kO*)o)Ss<^-^Kj1hWsbg%`&;a0n%!qHWEkDg+R#&GX0f4HB^F9o zF{ZYf51dOftfCieH>3|@>Djml-a0V$$LFzY?j~LzuUlict#v}VSwPFOlxgl2@FDV{ zg)_qjXk@Z=0)3kf^QUOuxj9kxt0N0fmf;PAKWh6XQjEHW9+b=<#V?Hy$|R*)r0UMg zQe4&mfVqiFDjReS4tIbyqaSv>{DVgIRHy5$*L{`MRMzR~#Ndn>%8*&4 zBH2hW(Og=mq|MCH=N>v@bQFplMuTA78|525lRw$HY@u%V%)elExiVwk!oKzD&}q2W zGGrMOyw}sje#1;ECJ-F7e?XH1ey}MBaL~ZG1H!eOlk=sY4_o`*e)q$|L&ow;CPFpC zDyOGTYL)U_f{ub$p?bQyjz-7F_WjFhI-p(6VGaB=AH_%i#Hx=k64@l&yC}RZh@Dg|!^O*}3Z#GgN zO$+nt&u{+jt9o;uj)%Ief{f90Q&uqTiUK(WT%Fjs@KC-#LU8U# zWy-loTJCmwsXfo5;e)2D{99Er!eH=VJc24S2Q5KyHI-3j&Av&*r#J?gg<{?Iyzo_v|=YcSo&?MRO`vFv;-UQ=Bw z`0)eVJ~Qj#dj4O*?tdg*`HvN+qXQ|U0j*3I)nzXJ<4jj|C0mk;JO#8K8X>ssedaT# zk(;`HLtn1Rbs)NA3*;ZanWs&hE98iO>MUY6^WZ!%AEio)!#?~r^kVgLjv?Vtc) zpJj6x8;{ff-CSVyAtV`UNI6*p4?H)tLtYW}$Oh$}%@Fl4A~AHXcolEn)xRl zU+y5tAG&&|Q@$PJEML)LA83Ve6r4NOp47{liTCA1iwJP7yz=#hwK@sZBYS15AA9vX z^cBdpV$Yb&6|$!A;_a0oK~(hc8|(0W;9TmDqvm^@;U!s*0I?*(_3FI&9Q0mwt8I5Y z5gu-rce^;YUgf=V3!Ee{gTH5**Q4H9{pk*@H1D)EaA{5c>gboI2>Hlw|I#(*zv}%@ z1($>1mlV%U9z?_U;{Zpef>tN=1J|Hp0V~<-%JGIJ?3OpGnbEHPjAkrVwBQ&AB{S;E z`N0SY?dBud)eY;6*GqqGwq}kHyW@bie)76_8+5b4aLe(mPB1VGZ z&kB+dlpxchBTo4KbY@Tf+?R2_ATo=kT4JQHp7o4Y4!(CjZ?@)#cki5E-p#7~)T8tz zCD9B)tw3i?}p+~*#b1Re(PoQE@BzqN1Ze{eiC3^#KqtUyK2RB;VsBMGwJbW zCFtgW{}$1H(Omw{C^(>G9jB8^#ycMEC!E zUqh1OZ-VED!pvQ-4fdg>l7c zMjnfqc86H#W>upWyG&z-M)hXF+CH9RDmyB4)Nz7&#mmEV)6w+M;(xngOgBz#e^~|c zkmHDNYP^RluvCPx1Y4;*+qn&~FLj%@S;u)%0te`Td+S=JBJRPpn~8;S4(1$k+Fqc| z#D~6$JvC^C6wfN=zIgJY7qy0fQ4XwSvak{n34UhaSdPGiNZ&I1I=cY-Jr zKN6is(4Z2MKNu{Wuj%8^Aq;DkySfZ_P({PZ2zSd_a23&g6xDJQEv`;T~(4pD1(Do%nPof_})B{TSJz~atDt_SGMcChki5` z-n<}jab+y>q6bF{*hW0;XJ%1O8qf@xvG+rL&9-iKY4G2DPC4%uHyO&Vn||Ad7u_3f-aO1+l|TrY1uoi zA`L8Hnwo)biV^E)K)#qzlZNXZYOc&Se`U#j27kq$17(Hnw*DB{_wSVaAS28O$wV`u z;8%7?+?tCD^YP?O=XFjBG?^rmp-j5~$8}VTFLQutgnPh=v1?0qADbW~xG=hQ#10JH zsDNx-OM#Rs%$nUuLEUHWe@f(^J*H%LVU+(aEQ_`VlxvRbj_U@kf;7b* z8L@ott3eY0~HeC{m@O#j& z*v%u_B0^e>Mj`wP1uS zRBc_7tloNJ;PqWeLHi7uA{GgF%Ey8^4bPbLZO*$Q#{ z`$U?wi_{rrR{XMiR1OprIk-k^3nu^4oVqwL;0VApnrZVX*M~Hg8Q1t?5*GxwA~NiJ zQ-;hKhq_^yom#JcO-lYOCXh(p3!!i!^?oI5H&Q0EsQ)ASU}jjNq#lw%aS6UCxPx_I z5fNN6U48Zq@@>siT3@j&*^aKOvZ*LjcF2LvqRR+7EuDUCbX%UuapFBdVgTZ^;0Smt zH1JkfYrf8EBG+jPN%db;H*GY-oQqD>+&dF03#c4L#)R+#+aYbxpOG6Tl1!56Aom{ho{rK;8w428@>0j9B#!t$#}UZk)~6%57oWe^oz+cNa_kVAxpOI|*@;g1p+)I_%AGGU`j(7d<*6Eji9WVOd>*8Ii(9((?Rn_*pz30{3 z`W42qNhF+#WIhC+ZC-Qac+-Q{r7n=oqxF!Vp--zcJe3iTQLMhI1_<{j(c{>gzuixE ze{VSsLHbp~l`cdSER?(dj%$lRws+o@|Xr}7V zy5}v#F&F(JU+?rRW`5K@{1-jBfXJIK7>>>`6Ays7K`xFa6DI@+!!QlD_BkHc>$p zjpt+iRoT=BeVfPcSHkV0I-Bkx-6b%PFu#-mCDY0Q$TAV*w$>K!>=a|u;WQugBa}=! zS|)b||M5%!$6+}r;El=)d{fQDy9^BSvG}xIn6~i5njPZGEA%sx5jE8}ki~J`NiNR~!%y5=^~-@LyIc?N^KBqwojY z6*WmZiMe@33fCI_2*^z7fhxmt1KqUgjrJ5SzrEAq^U|Da0#(*;c*r7=90b!8_johM zuK`j1GYO|2fu{N_W$3UiKFQ}wZNG(DROwoh*?LjBhKSQ{{KP3A--vEu~&aF45N_F#RYrbZhGG$4!nJ~Mn5TI z@9lnh%v<%Jv%t1^A(X{>eIN7Z1et+d9lk7 zb342a%zQeNr&=0_XvL!vd->XSwYLTK`R6`|<#i+L`vC_U!F5_Oeph%Ch_lu_5O8dP=F{#SH|_uHvTsX{9c@;f1jkLb(@{7L8AJRTxoitj6T znsIilSLuFv6u&1toh_#6p3C4A9O5zcFTt zuR>f+o&RHcJREbF!c;L9#4`xDfOJ9{q^ddH>mxg8Kce`@6n05bp8{sBYAFt@jO94; zj9dIz`*me#P2Ka4??tcqPc0fNph+j7dE4Rywhh)rL?OEIUB21ktK7+=gq*)6U+6^% zT||Sx(v36(8vyoo3DAkiR1`s#5zzsbYb_D(N^W}MAr<{^{q{i@Nyi}B6RdD7!f7w9 z+|-|PngkpAu(c)>dIT|w?UkiGRPD7Ymbcp0Si z9BKZUH8PL91A-~TW_X9{@SSD^@F|Ec)o-dD?}dE3jZMv}Ra9~Q5DxtEbPRWKk#3)> zv;bb+Q;6X@VA)K+X!1Z%w(X#$0p<|8)_(h{6&ZBXMteL%5euzDyBF&oIcN2% z!=5mA=T_pT2#%NRe{ST-_zlcHp^nGyG*a}g*x)onk~?Vvnv*JqlCrbJoN$Nc`>FyuEMs)yRFc&9{0wd z0optlYNVLTgO(8(+4=(3f#9={0?5D}hW@%m1uLr{tlw9-Fd#qEpejdhjciJeE;{V4fGW`~3tD{wZP zoL1ZTl&gqEY#rpOMrWtjeLeRKq*fHXfTkBu^5L&Pa|jn73d&mT_|2?Cj_G@S;M-zl zZJ7q?)WkgYS+t%d8qW-H*Y~O*J%bxfF}TcCIwJxa?3{kdl*b?i6yQearZh3105t^~ zG}IB;Xt{qS86I}UK$4ol90T_hd~x`EoGla}~3A&JI zMlBqT3a^0*Ajybps`nJ9|7^VOBtEp>sbQU1Y zH~jd=ia`Zp7n$}9m!PycH$Br|t!>3W!Ox3ba%$i=X5x|_OaZLK_lKLG;UcmXJOd0F zvw!)I%cJqo!GuQQ1`Lzl*Em}rNAIf9Zo3^;hA=^rNjWSibVy-x@3DBS*dSJ;%Z-QK z?@>s3U=g=~XwLPuYlU4Vo-?6r|G!(f^1jdMad5-2$prXQFBmI58LVk`JUu%hX znHi?>Lu$VbYieGX!Y@R7tPujE0{}Z5hQv_bZ*+VI zptJAV3mpZUU63LoygJ%{ET%lDk-Yl(+4!tD+E$Ru!9YZ~0%qM3x}2ZDJz3;2uZ1^= zUGk=NAom??#9j}aKZM+M+Z@_|iB#t^^_4rVJd8aSZA%EuG0p)>g6>5!9ReNq>oPIq_K>kcbf8f|`B@Zm+8m8_!y_muu@!IZhQUxbmK3S>yuFdll;! zhi8)qho`y~|Nq;QH*XmtKA!k6zhhyHdbz=&+HK`YuWras`JpiN(W6Dmdt$G?a%HJy z_`-PV*DPz^?=HVv(#_i5C%DC=ow|JQ+fDX9p8WmqjsHt51KxxqU3c&sUy@AK!)*&E zv3D@8DAj6PHLw5Xc^+PV@g4j-ybTmCR^MTs(4=@nru^@*Q_}LQo1Q7|7p^orU^Ff8 zq=V9w&5^hNXZH$!UkYl>E;s%7PLS#Bjaza2SKl6xaqN4^UGe$H>$&{z<$Ap1zkfgQ zb3tCh?hDI)+n0Tt$m4NvM}zWbH$j7A-~RON_$%D2%zgi~Du>*D1@?x6>GNgh1+BNe zG%@s_IM;Q?%?I|Yu8hx+2oAPCO;c3##&oV}bAo0X zZFsco_&0H_M>A&ID(#U>I{mHhhLrWIimtHLQ7c0Uwi?^5i(bD<1 zcHEzPb^XE*-9qB~EiSCx@zZ*y;AtjXC#(9IxjQ&5K4YiZm z95!BC*Es9uE1`Aq-_rljx%+c>zQw|)FM&C+ZW8BoL8d$9Zz~T!SRXu%@pe{4#oblU zcdM+4{=RQU`aKRC#(Sxok6!fe*?%uX<5_Z-m~xxrnGI{hp4iJizdWb8y}@zGLLo8L{2J@e@4-fv)|9tr8g~GCb@89)Z<^Fd3 z!Fewkff&US)kif4gPwG+{c*daRFRumKgVOwpUM2;%(LV!1YMAE-+R&UOU#dxbKUpx z+^s!)>Cc6T=j#sbI+_-~v}0q?9)--}HK%9k&d`)NsB`e2X#(quy~p)&qC*VjkgC~xvR=)EgB;o-8=)$;q} z`kpJ^Q`obosZHq*!;c@o`gLx7e3YwJ8diP6BwS6rM(Gx$;t22HAY~5T{E3rS6%FAvbE%i{wuHB<+kSw^S_O5pwAMer4|B}2Xh_ppB|2e%s&uZ1VXPy@eW?bGpJ6PRT zxZy{{&83f2_kJ~(1%MHpZ)LtGrw=| V4OV)x@hJlkc)I$ztaD0e0st|w5zYVr diff --git a/docs/logos/jpmorgan_logo.png b/docs/logos/jpmorgan_logo.png index b55f0b2c5a7d8e4b306717d6f574fc44389c9640..4175cac8a7fc8b25793bb332288ca2b91bbf19f0 100644 GIT binary patch literal 8055 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≥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 B4{`ti diff --git a/docs/logos/jupyter_logo.png b/docs/logos/jupyter_logo.png index 146d9fd242f8830ad2992b57fb38e74557d1d96f..02930286df3065dac48a38fc4f47ba4bc9279b65 100644 GIT binary patch literal 10671 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 ZfBa$M&)LP*pnp7rQIJuUu9Y+g{vSC7f@lB$ literal 62802 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 z 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�gb%?q`0@|9-c)rL0PN)iejFRI9-UrV9uhuTh5a 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 E11~m;b^rhX diff --git a/docs/logos/microsoft_logo.png b/docs/logos/microsoft_logo.png index 4593a40ca4b675e4387316239ee39734ab741f1e..100b126dff8651ae2271f4b348bc283bc15a5421 100644 GIT binary patch literal 5146 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 AF#rGn diff --git a/docs/logos/molssi_logo.png b/docs/logos/molssi_logo.png index c231d6e835815ff2c8bbbd1bd5e7cbe0d554ff14..ac4b6004a8b458eac76ed78b6a5bfcd57331336c 100644 GIT binary patch literal 5454 zcmZ{oXEdB^*T)Ibjou{~Bl=N?C{YH{`{;dy!6*@(=)IQ=A)@ydGtr4|B6=s$2??SG ziSBXU^FHT2&$HHht$knXxBvTp?|ZN7!~Nlk)zMNWC1NDP!ong|RZ-N#!oueJ^C7^w zQ?!bLl@isEu_$3{b8bB4d-KlT6a^H=qs1N_r}$9JW_``o2}$DQ~W@BUl7Q~u_^ZU2OS zR{xKgL4SG5ICxMX9*KXS-kss@(-NX$T0$c04?ymGf~6chDO~&$ERWXwEl_u7?d++i zrH_>=eH~wh@4qa<2Ai>m^lhyhe%W$fS zjzee*pz*5(>R4D*+^UN5P~Z98c};C5A#%J`Mr`Imb&o!H3B-Io1#|R4TVTamWOJCy``j5TsqZq6L zsVcXC=l+}%CP^STpOt%-&Bt@JWXeV$K42nid=dTV)qG)XN$U7wK?YF;qr% zD2+lzt9pT>mBTx#r)r^ddS2O)$>RyUR}dD#NNhU28K01x4Y zN}-d+m0DQ%$p}M?4Kq!2$r37|!`#ThHDSYqHb_hd_SPVNwV~dJZNNqORmC`@;Ng`+ zPO;x+{~+~X-C9~KqedwCyIWspOBpg@gRbeXH3}p9LCwb=MDR*HB4KJX?`D}cbvZkC+)DKF zkomacc9mK+I(voq4@Q;!2(bXUo~u=LEm22i0+;EwIQib;ig9}dFu1&O&xP2f{(6BN zAX#Z!Fe1ZvuNVGwSKw??P)^9!Ez-$!YAyPgSJU;;O)79D*8%? zU$~x?-lsYlu*2s_bkxt}$uF=8vA;U-e!qnMR-JqLu<`RB49DdIu5U<3aEgQ+ae2q->lS=M!DaA4MI%vTFiSozFDT@f1;@SALEchuKq2CBa0Vd_$pIhV$~s9&jGx$oULOISXU$t*#~W8amt6^UoAio z>h?@Wi00Z7cQtoB@M1oD-XEs;lKJugi==#`u54pP&A@ve2X+xj8W;9))5GZ(SE4d+ zE5Ag12Ci>_g)BK&O!zDyjU)`q|C}@vt*Xyq)Rre6q8g#|5{~tq0=U=@B$LA;w7X3V zy_KSxJWyz74Y2_-%e}|DIT)sNJUpcrewho$Ja~wbD_(o8fgLQ23t`kAfg$7Gwf)gP zY^Fn*%rv_nv`^rU7aS8X2^LE0n00qbL1oe;FAr5iCw>@tMd_wL<}`q&gq(5ck@184 zC|1UxCDrwi3{HtpG=ymyVf0w77i`55lqwXe$VE$|T%8_U+Su>oDyqywzey#kBU3q@ zQY0I1M7J%stjn*O!8!YHSc0v)8M7Y4RB31ZXp^~$ku7@z-QCg~Ix^MC*21}L69s$5VYCHey;2rDo1Bi{i*WUnKs56j^KlW9|L~+bdrsGe5l;Sc z;C%~+jWF;jBlsSho_1MFwz0?BAyC00pHZYEIzo&yXYtD<@MD#Gn;C_S=c)N(j}=ox zYgRK$p7-+&_jS#T;2pkTi|qRhnmq=kQ4?#%Vv^jdO==i6`7cuQu&_1QsEW2#U^c_I z73=QU()GkOkiL7p7tkobd^7XK1Q4xMt8O(v@a0qBiP|H6y<_|MP}4-?n8WDLpkq~c zk|Td%mk*4<9&hg$j%R6M4dMPl_MEzr*TS&|Ts$m-x5`7=Lk7;ZmXq=FHRecvPfK>#N z!n_WP5jkb7PI z!bb98la0i10Mp{sO^m?4(N!_@Alr=46{RirE5pwBwLP{O5?;O}G*G+bF%Jg_fb zAF#nmb&bSD#&jl9DZ4lPQj>KNajwt%E-yq>z7fWLg0XSMGxiMz-Fw5b_Yos$*+8lh z>?4KVXT>NgqCq$#F`JrdKh7z*0Cmkt)@a(`3AVUbHM{}-9#xrO0p{>eRy5Ke^@7vc zM}6y&I5^Vm0VE)JvpahEE8`dO%l?H0mV=J$kKj=^4#Ppn%M7Z*0TubGaCn}yRQw;b zr!jU2X!JQF0iYDUEB|#o>Eu^xBjzyO@bd7%Y|i0KxLH;(0|7;F$`Tj5tJw#S-ldKK zs3@91{B}`DJugYpOgfO@aljShcFIr+yq&Hg4f7#Gvy44wCU!3O+{qzZYO;s`$YU-g zDJrsp&&b~INh#Ue-RF$kuBb=kC?_)g7W<=HRr8U(@6H#@*Offy9Vkd;!$Fv?vG;R>gMFfpeev;4VsQfXk>$qO1Hu(dqJtt&Uw{2`%Z6ckw~BShTf=K5)>r>Yap1&thP zTKNbTjXlLv4?iS5e9kXhXT>xk%bmgPbYJK({Ozq;iY#rDKw(xePitd%+pa{gAHY@1 zdD}C`webtdE8{Xe+g8n)YAXE^BJi!;98S-$>=8LRFj$*mem$XNq|=nmy}Teym#?RM zXw}XGfuGG(DfYmnb8@aL(7SbADc^YN{o6niY35Jw%AQ<{Epme^!HyKT>FDaG-MU*p zSIL4`e^3yKXlJm;xbbio>6>Eq;Ho}3ZN)w=ewM$^IRfI*=z%^M?p!sddf1_EAxLd- z{fk@gh^z<|jl}gsgEiZss~s&aU}=UiJ?dFfX&P8@v$Pi}Nv={JjOW%A?lhy9;h0hN z@iUxMl>$UN#je9wQmo1+e-?961dt&Rz&ELqqdlyW{br~8z3jq|yWo#PHIKN5V4EA& z+iT9v8dOcCalYn`y+c&xqVnpRxXI^5k`m*!dM#(K6A(pp88h%$%g@t+&YwQ+Eqox; zV3V#Sety}GO>+9Gt#7jTmeBW%K|QH(!^B>VxFxIaRnQ}b#Pxlzl@{5?56|TBlQm(w zENEwgx~@nC?rbAIjtm#3zE)Ts@la217SUm?ChQBO+Ckc~G2b3rRPFbaS2+V>@Ct#S zVC9^+Ki?R6Ve);xN%C+TralVvDei4?W5bviD>~DwOVf*s#T$Bq%cC*cwM%Bg*4#5a1inzCW7aBQE(68 z09(U=(Lg~f;jCaU+C(B9wQ8|wn&!2jA?t~^wvh|2otd*jhkV0Vb=eeE^#D8II7Q7< zVGiF3!=m%(#p61tQK^NtYZp(&_c^gF$;^??@R@n$5JZl1`;#FaSrWKx)No<9CRibb zLga)s_R(zS;jhYK64i>PHg@DVtif^2L!pyu2O0LH-#ojh&T8e}^JAL>m7RAz0cXgf ztrGV*CT-U{aL>lBZ9OW4M=B2WH)-`Lm{bHMm$*Awrf~FW)Uk8G~%5n#?7FBFY4$mgqIo23{=B*~xH;}tig-c4Qw?VwfNk%qCQc-OL;H*=qg$4w z+=$%ik~ns0rr_?MflDYrXTWDxvc~^yI+F72yjDP~rL;DgDUYC*=%GI^Ep;Q;43pR7 zONBM49Q$<1l^FFedS^Q{XR#~#dAafXv`ob8vGhiY?5$+Z==@`;cK1LZCQ(Q>l1GJ4 z=M5w!G+%b81dHVY-vM|m?YTITaCrbvdd#^SZJ8=g|tC6Cw#}@^_&Ha zqMXb1G!(B7h<7|DUo2haM#vo{PxZm70URyg;V{vrNH~CO3rU?e#S?lPN#HNUuwMPh zGqhH~kb!%)On zg&)ObvsLc`0kL#Ngm5J5fX)ZpmjqH7rpE#|riFr&?M@?|XKhLfSyPA`8alaz=*g?1 zEHt{|$efMTR3s_g0Cr<{uoSs~cWn2_bMAIo2)qYaS0JW6(+~TKCuTwO=O&Bv7 zd9&npxwNKi&Gwj5U)YffD~p*(bBwjSdVdso<*Ahu?D*Pf0eiH>N(Su zkp4hsnLMVI*)Z=|M4|R$Rc(g}OMCFoSDh8dZzajuUnrMUrjeB9iEc|ZC$j$aMrWZuj^_bjooEz-1fqJqFU|sz&F@aCbuOqJfkzCjSqggutaRU z8-I={5}bf`o|Vzh74Q0%Xg#2kq@^;$!)1;&_TgfRCwLR2a^eE!Jyyh0)ORfV`yrmJ`N{l320L!4lpS<c6hpr}mfU^Hya}Ut^vLy973w%GxFfeY`@D0dVi`;;?Yf&B$Kd|C9b+i@3``Z%fW^ R)cJo(s!Cdl?;zG;{{o^T16Ke5 literal 17583 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%0D}>SO6l0&_3+>#yNwD2?V}Hq%Uozmyfb7g;ayyl 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 BAf^BS literal 80221 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

-rN-L5(la4qmGpZ=`}cy{RYM-%+VIP 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

90XUYS4l?K&mlCM|&^(pZRAF+j}$adF)N*ywyp1 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 B2PFUi diff --git a/docs/logos/netflix_logo.png b/docs/logos/netflix_logo.png index 9e98ea42319f992c009fd562c52e16fbac9b71d0..bae1608184d10461e79dfffe5a92909ea11e8cd8 100644 GIT binary patch literal 5931 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�Dw0ho1YDK6(Rb_59A>=;z%_^~ zD4?8l-Lckn-7>w>t*u^g0qn`>2cawgnSrJ7{mJUSFIhUPCFUx5`G(qru4`s5y(R$l zDUr5(Tp7o~y{O77RN4b+@JmY>t4_k#PMxwVQ9x~e)619-PhX__*7L4dEY+phP8gP( zY>5UZnGW#r6e=2b8;b4NqC%#FB)xTLdB7LQzA9=$QaLJ0BH#$C&@5|sdu9#TShn=0Hz>(J7pznkhlE zztQ_&@x_&BS&|fx;l-FKUO)zfrzCG2>Lh=cNVMa2Cxw*+0vW~rvNA{-hlQMZD;``V zKqAz$pdaz7>J7j~Q05_BZOvdXF~Kmt(_?QO8pJTsO=$qpBmnwBb$J6IP0@Op3rm}q zgW;~h!UfW+-|E#=AL5{;)Qe4kOok0mlu zBI7VMnsTfG_9(wp&F(Wgnhku9Zt`5<=p~{s&ebBalQw@0FJtjc{m%FebS%pR-`GR- zI#U(rFIWB)$Su#%L9%Xsd+~e7T@{npsLL{c)hfufhg zsV6C=ed&C65sfSEHhp|+d7|DZHmn-Ot-UXSwzF3{M_W%?Bc_*-b;0&>Du1omsd$+K>P zPj}{YO+XwAvdhd7o&JK0i_2`>!GGWoX#o;XlHmJO%sVJsp<Z)e znzVB6hsc9}f+;BXIXs_Hb@|&-8nn?^hv5YtVKLuZM zEMswmuScb5>qMw?~W3(~&Vb;g}vz{sde#pb4GMg1I* zLptvNe#cY_gj4<~-1-LhD^XEf8>B1n?(er(b==ExGu*Y^kGHZb&rwk!C9t39{o`sZ zEiKvK{{2Ze@jUC-C!r=J(#_(u*Y=GYWqCo%6sf}cK_IOA@xWcuP*aCvs|vf-)piQ8 zX2pXz!fBqzs973;Tl=Qjkx;W#`3DFDdr)I6S|UhMV|FVhb;EBR8t?zek!^Y*tGqUM zZ7)*XUoNjHTJ-$l6=Qm$J+n*a7`A`pGJ|A@_1r0LiORW-e((#7?0nt>^Ew5YGaR!6 zGL0AQv8xs~KZfHD?M0ILNnSi&wsbdrYl5m4fX-9t4tn@gS9>GX|jlIVEv@@R#x zwQ#xPEf-)a&C}fLQ}jMtql3jXJ6dj1!6R?I+0CIwx)M2`lv1~XIUE5UUO@U~nIv+l zmlkQ;VeBF;wcO;e;I~4Z^3GmHMyB7hN1mJZLh$WhOYWMT5%CG(Gv)qDAKshzs6Ent5?AP%)lufmPvMUGtmCgvzCV_rp|vbEY*5k)<@0_m->2tKZUwCKyY zra4`a3bw!3G6meE3O4t{srZ{M|EQtN5_``3-VSf=(!5##@AuHc9lBfm$xHA4nueGX+x5Zo!!Mc>vjoHx)?A0;M3+n5;Jf&d@?v2{LIe-};9UlOcCQX}kdp02^ z$F1yt&_eFkj|p_4)~QFpceuEZilk`pw#q#$bU!vNEv#X;tdMeiz}y5QueiGbaI@-r z!y=dc6OeEm{x&%iVWL8a`LN|K<-=;nFf(>>zKW}!zIx=tNzbw@eg`3VmYyx)5?(I( z>*$nN39jvJku?v7{TFj4xQMTRa4Zf)r*Ai8kH1{i+ep_EuVuROlPKr#*38wlyZ-2n znc6Lqa*Gd92-{s#B_-glvxA$TkzuQ{aQtB?e0;_hBa^ohCw$w zUTP@?2IX6J%gBs1R zl@_*>&MV_i54j{V(k8P6@23ttN@?l2mI<+^j->&Y-HAN%`fmmkA4PJ|7~VwzdNFi* zdRle`%=KbwHI!+r(y7@3DHp6HoE$J5r|_Vl?%=vvm>R~;5s_UZfZ`LhIW zsW2EAvR&VEzoAS{c*fJuZwiVH3?!nuij%V_uhp{)Pk$N|P^gIYRI2Eu`KJh7qHEl) zg{bMPX88wmcpvJm2VSk|xH%k;12}X8mI}9-B~>DN@>!sR+jo{0cK^%67^HBGaOv}VKrI0Jkp^t)0+a5bf3m)JKM?T^F}!dtPlw1S*t+jE zbfb7l0HXPsD0FNJL@6jC8}x8H)#73TMFfBg@C9lw@qV+3`v@%nJbVX`la1h~!2U}S zbU}=I$BLCB>-p+8>Ip_lng(b;GCGeyOl3Ah0fnk$+;dJXLc@rI@MxV8p0**$9&T7{W;-jrnE>;JX@z#cf z>ZJ+{1YIBGXDBM}5Q{In5qDtr(p!+AvjdE0<9FwzD-A7ez0*oF5|iypiwnJ&SohS! zZ?nEA8KcXF^70tO=XmU9y%90AP@-T2il%}e&+=jhG$4I{e)P2h7k?!vcYCp5vNwQl z;;2!>f)#joxdWt9yLl3{zI*^`aBy%UoF+y_3O;@MBw=c1XU7PoE8E%x58nd(9WNL; zcH|9wMRd%oJ>URjM}H(mm3{P!BX<5$Fy$RT&~P)PnQ!HP{c)vNhQ$J}>Xg}chjZ}rS` zqpIwxjG|dm>?^W(wxUnZ#tP!DY0 zgbgZHsu9(7GHQ*A(?+?_pMIcA;kcI2GVp9FeaRbzPOP)%TvJ|ddUtsQ2-R)x_KNcI z{KCSp4?;c--beaiLt@wC@kVgBv330EMH-SzBw4Zr2WJp2j|XcyI&y*fm6;^=m<>{< z&)!GNetV9qUsBG`&*}0^7HW-J0bK;Wpi83%FhM*%n>AQ~!_`*otnY{sI?l1NvBf1N zQ-EWE5}{_%q=Weq;Sl9m2Uft1)N!R-Sy@#Zv?PLc1l1Mg)z#993WkOx;D8HIfM;4< zHt_7ag8>}DTsKO%3q7rO+bq~K>7i~l+c%7r8$s?AgDfaviK(b(UVR4_Xa2tD_GQ!8VvL)7Oy9O z2`u^Pulbh`ai_ap|M#;*09s)fAQJh@q4rbc8H$_Med!71EvOjz?au)t!5Jm2tdSId z<+u9no1$~ascdb>-*18X2qjJOuV24-h1o6y4J}Yrr|6d)a1H(3V@TxoMRG}r1aF0H z#z~-F6F~CopJ}RkZJu`h+ILE9ojB_EG$c)tCf=$W9_?%LjP-iVi;m6KMs+;$Dk@N2 z<<9e6=|Qg?s1 zEzoCH8?|QwA`Yrec6R9)m~Va!?EskV=ic7geo+#y?MA)Dv$?rB^svE1!2^bB9fu;G zrl-4&r@sePb+Rl1D;gt<`uar&Zw&To+mFpbW{HE3{~2UIL60{!c&vtc_$6c&1WFrS zfk2g4EuxbAp2@Ne&{+x42@{MhZqI*VI#lEVZieM`**(bPiKiaeA~wOT?57Btq!m9K zb_EE$6umb6jPA#RVl>{H8H6B&zY*ng2iJHV5Mlqay`{Er3wymPrLc@{uA8aN7;86` z$!EQ62i!>k#h}5&nnVA^?S6qwcx*!^ELR&G^{9ru@`J71ragh(OhQHX2 z7~%W(?=7vZ;bt??SeTf$0KHWN>JSvruPqV<=n9!OL0JZ=I(&Y`{$=LwMX?+*Y1bwA&OmynGCZZKuB)x5esokB3k$3FlAOa_dUoL$Fl*2>0fct5i-Wm)kZ^U} z9#rK5dJZJkpQpAcISQ%y__9Dc#?OSZT&k0kqBsjJn85Vdohwr$3FMSE(X@ts<=De4GmEbG=|H%8ynnem$3HR82FYQ zla)2!WuvRy-q)-ODsnR2Pj?0SL#-5`>2Hhm7QfcoeX91pwIDNcc;Qd~p-O<6MvLeo zepGvKU`(-2Sd6K@VUc0Bu-LM=B97#Ud^ zGhXM_;X;}CUZe${CPA^I#u=(oa@jthI*`{t0E(gvzWhZx~G6ONdfHwB{$e zE7QHgoIjZXNq8HS#fnQ`5!padIHND3#LLZ0ogC?RvUXB=YS9!L6xB$zVT}vQk!O+9 z*&Mp;;jCz?9KhPCJoc%PYpnb$04a|&A#!EdPqGa}@MxfkRVxIZg-5zdSYp#D+crKO zlVAV(^$YN7QBZ*ZxX?u7PCuUHwbccAu9zPyxVL{#de3#u5tumOtq8i@M@?x#(H>#B zERnHt-%D#4P)Arw#<|HElP)W-Trfz>P8vFGk=yM-K?Ugo8IQsxS3qo$LN)B&5DD;3j0T8$PfbTr$cnvaT z&&3QsO}WmR{BC9r2V9;9Vk!=G~u-jit#fim;I30@Q!Wk&)Y)=<%V~H5NhlJ z2!W`LQCOkt=doH(9$K49j6l17f-%56Ug1*iv~Zho*bqv16(?i$GBTkc_O(2>yOt;R zC1(uOFEfoDF#iE`BYTaj8{keYfcL5Si0Vb5*XifgIRuzO%(*VWHND+V;2RztwFJy! zjmB9URAFS#0c?OlB%^z zl-7rgwPsuCv8Sdgr#DaS=@jAFe)+q7dSTpBd@!8F5Us1v+>(4~lKHl;ag>DPXkiNm zik4H=Ntg7t{!Zq;1(F#kn$-^=tMu9^)}^DPo9+${24UF5CPGO`=}m_(2YJ9BSciq$ zlFG`s{(i9riSCEXm6*Y1z$K~ZY&*mOt&Yw74iFzRm9KUIjl%n_Gjny-5SlF8-WgMC zaYl=TvXrp3XRgI_3zsM6{<%A#%s7}~&p3(XR@L!ar`^`xryc85tS53WA7=ed37=fM5}J5X?yF zOUntpP>|dgj=)p};u0{RlZRGbAXM?@`!^T0H)E79#~iZ^qG_4mz5*4vlD7H!7`v*3qW(Fe(zBW+c}}51S|Ffa!^ki%t>rKH zuZm~0SchoZ`sbPb;|wh4;*r!WED5LELtH`kz5pqQn-1H2d`q`=!;<0m0n}IiUZ_i2 z+yf-I(-eWf2EZ=$!zvDS<5x5lLy?Obe(HbM=0K`q7F)NbSpL+Wg@rRJQ995zo0IKH z71ipP_xey(aWub$w^UlM$xTNlz>=r|(}7AH0{xCEx%}>*y-##U#3Frw$IF6}xFCU$ zy%Pr9b8hhC&H3?~f8MB>i|g72@AEI@mxXi12)thy_Sw9bP*dz=pV=Y8HFDgHsN z)`}N=bCCR_)=+M;iLlQg?8hr9NKk}*-BQ(y)-SmJOqIj$e2uhI%6p|T3-WL&)gz^~ z#c{D@P(*a38UAP>KmLJ3K|x+TGj3>Bby6$Eq3B76`@Gw3hKk0>PLtgvmQ!#!IYCrT zR9Fu&m@Z!uU5q_u>}~Ntnf^nG^Quw=cOWwgFDsg*l|D0qRZr8;Oz9xhR%WhGq{ReG zY8s-MeSH2QiwfcIku>_2w$QbD3pweG-b`I<2O=N_|4sZLGjgT7&1f7$TOc*8)M(R@ zoKApekoo=CuoB^7M&d)~1pO5~we_R{HVW2w8st*;C>#kH(e4`5)hp}^zkg?@dhBsC z4-i7gKa4<5!$9{*+u)@K6eS2i`g4V8rf3p$(T3o2;YK*7MHXim-#mcbSW z!k)^6>sLY4YV}BK?WBFWsMF$8TNuE#FM|T?1VtOLeG28dWz5ybCVd9_3nQCt!Xyxr zYPX(Oez|87H5$OyDt}@7<$z6Kxe# zT0H4>9YWL65Lh%9jpaE3w^k*)=RMPM{{3Qpf#SM;lG_^Bi;_*%a zIl>75iYO=^0fiU(3qe2*Z)Uh~1+tx2i6e0lqtE^Nq*ld7XKN@xri@@J{69}$HC}uF zB)bz83hs!k^l||=lmZ1vhgHw*s5~_(vaNbEkZ(@Zct)&Mxnv2zJ^{`r3uryUf|2R}Xd01!9~oV-Du=T9K)3_!WdE%}`_lp4+~ ztnzEp;3ZVJ42P*s+Tr}?1p>d(zR=bhC7jki-5O}cYV-W=a;%J1qYcehEKx0*E>qua z`t;qRq~FS_Y(=*IyJE$PV&sG*c(v*ltvU>py+S~j_^O6HOQ7NXl-eFB7j;#pgsETh z97XYgEglO}CBswCfYm-gGk{4mKt|KL>t9JN58;xRH4HiD7ZX5%oz8{DsupBSqj4Ba5|@etk2yTbQwz;mo;UQ|lNf>04nkWs^IVPO~lV?LJX$&${iWbOc zX}goa_*L!ki<=sa9{OSCB&z5bCJkSYoK9HYy)^kzYJjKw<+SL4QX7{zgjzmKB*u>E z+Flqn$f(DKVU{1;J0}ZMv74(SJCrHHUe3ePT;VVd9Li{(?E_`Ic1?arQ1+nH|0=Pv zG=Lv$t8Ky1+(Es1^8sW0pRxT?FGX-Te1ex6tk4K1J#T+QiG67KKz^4*^b682Kca}g z0N@TS`|&fL%UQSC+cL1PY_{UFpT$KCfHiKm{k8*1ueWz#p=p+Mp)6(Z!G4N*Q}VHF zIjkV}Oazmu&4xIRC$^f}WbplpFUvt-BoOPMnEUU~k%UVW1UN&_DVc!tDY-j0>mTYk zksyzkv6@U0I_7^od3vlH5!_1w68kA$aJ0`*5;%Z?dG0uLo)rz(!5nLwh~~Y)oylpb z^&vC4YPt5kZDsMQMM1xng@02*Q~TC+pp9_OH&VwMcQrk`vgxuPFKsc@q-52(FnMZS zWaPJ)k>XV3)?V_II=H|b)NK_JFRVHxtr2T2{hZP3e)Yl=7Y!B2k!lt+ege#~-Cq4Oxf2VoR|>%Gd#IaeU>Q=#~5B1x^fOvGz(;9DiT~gt9gnZ;52$ zrQ%(pMVw%oIllloH^J2LiCQ zsBl?ohy+rXD*zt6-}C7`Au+UFqyx|Epy$H|TAt_3TNA)l4O&&27XuiGb&wYjxg-g^ z8X_`m_JJdgfJFU40)a;)sPL^;SQ{aGV4Cj_B=#bTRY;?ATXh?fVOBl`yeXIer6VZk zpMBt~myN+G`1s+&*!Ai5&2N*ZwgvLx(726L$0sD0Qy&B-og#llaR|V^;3VW6#Bf0u z3spM)GZ8;GcJ#nk7X}=iWyZ?Hy{iwW)eNsUuRgdrGJ9xjHT<}Az?c;0kg9q!)?cW2 zI1Xcf-}BI;{hKjg$H43*N8j?-wu6wtzgyCoE-EN*Nvn~(b6$IQq3vzVJbzzUSYO3alK+9onPjs$+Pc>xZc z!1*tS3@QaRa{`fp_LWX`%wid1!TU^%k)3s*JjGOGL#bpyG@IxR$OEQP2H&WkXTcC# z9bXLV@*U+*@+;UCe8Y&~1vYTLY`*dSbRD0EuQrO2PH`Z&2-%H_Gqb9zrQh(_|HvKR zyZBm*YACAvFZsoH()WGCV4^D@zP2~S$Hf6IM5;4zPXw@-=790MGt#qC1+qLfs125t zkwJ_rOa>=j@B}=fx~x~-+Ji_GD+LTe7K-Zmse`2Bwk321 z4Ufm@K~giGU-my(I_s#cwyujSCEeZKDGkz+3ew%6G)Q-sfCAFe-Q68h(k0!Eba#CF zx$pPiy$>uz1N!SH|Lh^!4thD%yoWSo)UKO6>*+Q-x~kS^OZXgMInka&=2;D zOCVhJ&D8g67Eoh1B6W1?aH09$$szmlhg(WlgKbM&{KUBR>~S?rqYDfF$R?{`uB1gJB*NX#Z%HoJC&}`_?`55 z@dtmQGS^JU5Fo;!1AS+l;r(P(%LWkR#s;4dvxj$&c|#N4f{NHg;Vj&_t?Gesh7C#7 z^G?>uVN99l;JM)9(N;CG|HA1-C|$;hnk9O>7OqD(T0Fb$+i&h|8F<#(EH_@_|Efet zCQ%hFbXS$5R1a2qOMQ~5TQZzVrc<%-QtK2h{=QFdKj}GKkv)e6M`yvPXZr^g>&xx3 zrRRwdD3Ubi)NEP67hp1)$`7b(4liLc00RNel-&9OQcr=SVBmK!667^^=R4#V6gUD2 z93n(dfUnh?2SCG#Pl4wK88%#HHoWyR0~{gK&A?QW16EDS=W&bBH74>$sYb=<<~PeV zX>r}Qlw~hvBgqj)_z<@l7#>EarY=>}&A>pWAC=vx5pxh+|HsNxgJkY{zs@I4(tb<&8(;bd`~Dmu+M_gVD}b#_EkH{QOLC>Yx^SmM#V2Kfh%U zG`Dx>tCm_DCX?13oomCby#tEkEtpgP0?ir?4ax^!Hh`+;L<(5iWw^w~B_vD&ZJLph z@pt{FRKA~aaoGCq+wpKVKz!46o>tSf@5M3w{Q0PcKP1Qa>f%uQ8ckJ4Ae=kPK8JO_ ze6iHzJT|ekuI#HH6L?g><(k90m*&?bdRwWKMIJc4*RBU97@=GGBSX79$bkR@{*N#P zDzzg}1{{FmWLS6H@*9tL*$K?q&))Y4L&lK}%Pxz;DH2xbPBvY7ryR#+8S88YKP+w) zt)Lbye+DTJDwBvY7n>Fg4NhiL<66soe%?`4PoUno3ZiT|j3h@L`9^Tc6CSt5i~WvU zA1g(oz(5^Gx}MFdxr)B5fs zNd(=1W^l+!t&$68(b*TQ`j6E;t)uX(NtMoB7Q(0 z#Ccj=eeMGi*gnY#5DOtAQ!tD9r!Uly&yF0ZkR~v#GQ0o?9L)w>y&5Drhz$jqOt^JI zd#lX9!HojgY|gAxfVGG;JgA=b1!GRVhAv&(B=bX?I{5G|w(p(VS7Uw;ZoqiyGZoSz zM3N^|CO>d22sASko@nK;=uS4hRwbk;#1RmJG zdWDh1sr*!7R=#iToB9vc;vNBA=eCy>3hB53RU#E}P|VxgXuo+27FzaxN4>dUh$ zWE8-Y#rb+|;cW`ZssU0s&U88{kA@y2;^fg{yp3Bwe?9KY@1A1tctnRYd5y-!oFx8K z_@BO26Gu_|z!_+Y;u~^{`Xlkc`a8gqM6xGUU!I>JLunn|1rB1!xeK;IuO4BDNf0n1 zk@v}`qpS-| z(YckX2TKdxCkhm{5Vl&&hCCGV_9xk%h8LvboV$`aAo@>%=AFxC^)sx<#W1I?>$0=_ zwId&~E|`l!{$*>YK0VIXYJHw3aU)p6|F05>7RvYLXiPn&u4DQkt>**HettoXO0@8P z5=JlqHw|2Q-33MNRr^g5`1M7_0mTi>WHlO&U`3FCUCw;c+2ya2v^{9tzix!l9Z&Q9 zum|XJXc=T9bReP{8iH1hkm>w*J35QN>=2 z6Ekxkn$4DzwOd<3P)HdVDXIhR}_x|*_oWNVApwF^RE`)N_{|hRHD=R z`*`)iU$j4ATl@~oECoE7O*kR6EhxfeP7RJ$K~Z=IsTVxy>y?tY*N_iHzphdy)$4o! zGVqbd)eTDk6E*>-J-?xC%i2#44sQY459ZUYOFLi{4TCYiC@^NXZJP9bUk8H*tLpC- zCNPXXIhNfmjYz^`u6WtNwCrgsT1HW!_apIvt9>~A-wbTNJxQ5 z@*$Os98ZLd(_8ZQuqjVtEzbG%4(=;~sAG|Ct&$e>*U^_>_M)`D_-Vchst}@A1-f@3 zA-~B==g(z_Zf$*iQfKrLpkm&E549f*IHdq{pnWI@7Acrdfr|Z5>fzQ)7!e7HA5>ij zB#Fx4|ES^X2>0yTl?PEOuk8{a#6S3@h0MDpL8*SjelS7gTfwbPkfoTjDTS&|nx&41 zZuDj2D;>tvk54pFzFx~eq&tp&SC3dUB8$oCzA6~`wjJ6psz$Al;y+ccvR-p~k)Zme zbo5JCf~rfijVayjzvP`h3+}TS)e;p|9T~P2-EXYS8+{r8>W-d{pcu3dEa&uR2C)cav$@cz-5lH9;WWuI)!v4V%2qg;g#AA!M0 zV}15>+=Q<9diTjQs%)I7d^|QcE<%(m#;iQsGeQZQXx>D>|0jQ~+D_G%5kik^WD!#p zUAOh%|Gwt@Ebd-VQ)^WkiuDKs5MevXL|g}HD3NU!s1era!*3uiPza6wrQqn+<@x8SuR!oG%bE+>h$w&lAtC zT8TP$5rSQnCWKdacXxlVP%n$q(h6_RLLRIimA&A%gbi7=o7}-=W6Br`zEpWG* zWHA8xSRAYz%HwTUU;zeRqw`V0lOVN}h^VODjF(3`2=G(WcYUn+5x7|F?VgZ}JQdUU zv!)x7r{!F4}GU-79g?D4k#uHwap; z+OgegHU!m2sR<1;qg$r&4F@WMD{gW2IaO2V;mpu)O-l#5$C$8=q{=~wQY9Qa@IRKS zRH_O>HN0&QAhtMluDkUACU%#TA5>LU#|u7@VPavWIQxL@1K?D~j32eM2p}_C;0IR^ ztOpg$&-ofNUMBM~gZh~246@9_-8b-YWgyTaSXt9@Kb%g}*&){34T|vOF{Z!F;Ce0W zPVcUconYEH2Aiz2{K@^r&!iTWXM}pR$V5(4FX{I~iTLrYU)H41vV03RTM|?Tt0;Y8 zJ$8_Bx4}JU`A7}CYPqDNX;$x1O8gm6QwD%Wj#o7X8mQIW@}4d~%dyU%f`qdPXdF*@ zg`Ul;FXVci2+Hdn_~8uj(c?lp4lgP-R%*E0BF>T@kbO$wFLH$}WkcqKUfCX|JRI73 zfq~@}Ba!pTN}BC*^BJHyxE{36&dwm%fi7SYFql|_b3mP2s^8Z9FOvKJC)*C-?2-0X z$aElyx6;q^xL_U@m6SoOc9B$|A7|lS8LM}AGo`+B-Z$p{SWSb2Ei2wimcq#KvUReI z{{SZ`+KH~(WNnD(v8(ZQ#ZP?nupv$1A1R{{?qC}Q2Bp$Lc*TU+x0A1k18wD<$x9{E zJ2g)Kl!1+$xGHMupDFNVfy{*Zg~m68zVmY7?ZQ|^o>Vic(mz*|#cWiqgGo8};>u*r zX3^U67h;}vL)wtA5%Vjsb7g1tUe<>#w75J~E{_%y!SRR#UnGEoi+c{9r6ce-bN{nN zk_JRW!-@wJFb#1R6Y5PDk@@Q{GeK%628tN=JPJw+x(6j zH9d2Bq}_L2F(#JmU+KPI_bu~2OSPD8EB%@&;Yo$RL7p-^VVii5|4_v8ocK^-JSfb+ zQz!K{w}Jl1W12J{ra}>fEhRN4rYgNGAH2KR`3mHV*^-P$u%$tcY3M9tB;b8{1?K7_ z?Y0o|1&qpaRt#DIW_x$j@v?003Fqy7&pGT1cQh3CdwH=k5wwlPP;I)zJ3~=9Q8k${%(*)9=Az}& z`GBb6Yx2pZ&ESfOFT9W2rax|Z&qx&J*&HFX1T@?uhBYtPmprynLGXzizzrZB0_6;s z-S^kfa9=?g!wG28Z%?541RHN$d_1>#3*h%|`$e8Hu9DJ^E*K2%uvcPE6ia0(#PB=g zFbjIAnI@!v4Gj_vUAWsTdCuVG`?1K#d69qlV^T|S&2>oPP}1n6_!^J2Dt-x@O|ay! z5lUMRN0?JFa-FR|og*l&-ItD4VHK}B_hbJ`3>KRk|(tPz3RnQhJkMCkI_3X4%?t+|4QVy zG{T2+%gDt^`3`xuS5Jat!;~wrPrGmTkjPeCx1Sa;wOh%85W>Z^^F3eUW|g-e=IDp4 ziP`OhlYt3oGN8+Nb%VLvn3{&%hA@BOS#K3dVqA27j9AYgeY7dk3j+h9_EnJ8+3Q!a;vIXLIF-vgn zF&%uh7Jm3AX$elsTnaq(d zR?!pM$N6zEN3-Ah>HB^%ikQDzwkr|1aeqO2vWou4A%o}t{MvxzJRkv(k|4m`uCh<4 z*5}*(&T*nZsSk!cO1q?-G`akN)CbmoU!*2*5gZXG~`O!eAuS=HRO+it~ z26`=MrFV(X7;Cfn`1iKP{C0gv+-Oke{|r%P$kf}FDPco`Jp1+#&yD+TT7NhW)1T4N zFMvvTsBLx7$@@>a@IZrTUd9x<>@`_1rpdpA$yuYHBNU-zo{4{+_$JfekT{}stB@v^ z@?TDeDCGR~12a$RtH$W>Sy9|GpF74uQwItj#ZJS=3^$J;%#$eSZfs^u*% zG*c058S)7o2N8sa_0);{EX80u+@0q(1rOBxpH&m|oZi8@-N4`IZw-cVS~f^qm%iN?Wp6WMn@$G*&#dXUN_oZCQ#NezCkbT0VoTL0XFHBOkr%Al{2Pp701Cf;8%LME0UvV+f4;ro^vvJEv|2s_ zGeXYIiXLnJ!~PGI)4ZU zk7Nl!3UA!5--LkS47>Ne6C}l?*)=L#x6DHE@@n2Kd^gm`Y<+S*7pnN#zr0ByKFNGC zAfPYn9)X(Y*=%)Jos6CO8w{`Jh-Wb63BsauA^x$A`PtDQAzPkgA*%hM4Cfgw;3@b4 zQL*s!&6m~M;$j{jA3gYYLB>=**vJ8D$Z5avz8!F_&Gn$f;Q;Xj4i1FJw9H!7L6F#r z?9xL(u|m?d(gZ^*a9il6iOdx1H^Ba$VimAbnv~yDoV-PIH>bV6c4jAdwh={waL*ls z>1{4&o$;(3^mnuXUBv3Kbi` zIiEqE4)CVelt=bL@LAwQs+zZ!Pq%|Bp5xi&0@B6!#sW9%yFfQxjVE5SHxBmu7MVd4 zB>XVw2kCm zZXuHkkQ)IU8}g$Apb%_6)Gy}wC^4}i-h9Aaaz4x_qCT>9wC(=rsE;>e_n|L+jc%p5 zzc{1!RwV~MjIMB_s5&-LZRF+0N~dICJtYmc#^N)2-dUmv%pfGz;2-o!Nth&mEj>Ui zfkv?j@T(0-q7q({!4TMI-GOA8!^nkG%4)cn=-Y*?4w}vGioY0p;V-{i4WF%CgrHAn zbEk;4Gd}#*i+0J}9p8r;+F;O`KsB0uKp1%>kSs=d#|&(y>L&M0e+V9MN0&I13_7Zm z3-p?ujKDj%3Nq6E4PxT>!1!>V6r_TXBo3+BO+z3;2+}I$J@Wgv_%U#c=zCwOy@JgA zDudO3udm$m=XJdMm}$(N(CDQoUgFU5B|3J`Y-E)0_}5~Z#n8DJr^)dZK8Fj{R!Cx8 zvkkf;|8^ziF-b$hYxnp#)%i1+>1ZN-LYU=XFe{6hdEwa*O!qLPTag>i5Xk^epA-OR z^D)*90aQH^2+W+tRu3-BUlujYGR?0me{;SH8JC@&3SAg!>{XY~rr(Hu_$ol1vvh?> z2b*yjrGXW|#4eeH!r;#((X>O*oeq+k??#&2f&Cx+EC{9vNbVZ_6fjQy!MkDzvLIO8 z5nt^!E7;oF269-suLt8bf&%zvf5EQ(jy3|9Wdj_ycGVSJfpILp-v+rW0u-%|10+h$ zOWj10Ezdjhjv60Ijt}X7P*F^T%5$0|A8;54iNV7Y1{BK)%E}5K6Skz6gxH8-#2l&l zmd>CUFif8QoI834d@^C#{AibdQ%1lB-3QUEfVcD(vY#midYkPnmR{v&^WwipRx`_f8BR{96FL_u5k6@g<#|F;S1@aQ=A zvLyWl=YS-BYtn}d%nLPb zF@+FY-mkZxxR2iV#{ zlo1v%r4t?{CMOftOTA~gySuZVuZESJZwcU`5z+l{bzcP1Nkih(;xL)R@3VV5R6$E6VWv8RXWordFuuh(#+RVRABu~ukXkD$hOa;2E*Io=|9F_J-RjBngc_xz2^ zOaSsAfGOK{ZtueU^x+8vW&MS%-rn7dYm*B*pN^Q9U<$HDuR27OC^O=s8ja9r6A-*6qSA|xIDQGM)MOW{)*xpA|VxV zJ)qtZ{h$6rg#fSy1u7f|6y{>M_n z*ve3UpK?L%Jn9AJgK?sIMjxQUM}YPdw0ctE`i_k)>So20ZJ%({^X=zBY{;(N-2Vcq z^v122587O_eekMfX1i#-Ys+U6GTKU-?0M8(`LU!YyBDjRO*=X5rEGH4!ULgtoW_0c zq`s?*V#N4mDXOiLi%j)m(UtFff0m4EDO0^==8k`Z;-vAqzV;cUabS8{c037xN*wBi ze5R1o0~pfI?!10nAN|iivsGF%3Xu26SL9%n6cZCu`J|$v0*;pNjGMHW%`MTt$3FES zHxovA;VH{y)ERjB%vTJA+E~o_pi|B~nGO4=OGIGgL)H5!#=K*Kv0M%5(+w&vaCeR7 z+>zfnk3w?&rEYY#(F@$L{G~(xAg2WI-&tI9n~fx^ecCw#Bz|ck2oGxH88hDftF1Qm;itd9M+uK!?l1A28P}(0BUW6rm);B)voPo z=9?Bj2xhV4g_!(*WBoCUWJagKbU&Jxs>HM-lR~9k;nFSxP|;yMHm<; z_3xSI#pB;2e!Ii~x4%4~uM*>g*Gm%WXa!x5O+muQ)qc`!HLsm!RKJ9ai%VK7Q|JD4 ziH_QHm38lCT!j}D;Qoz2NF>7*Q(7b*Za0u1=w29+wQHyS;9mKZ&61!2Ld)CVV_>=} z_Ue4z{c|knZuFZGb*#)(Cpa*Z0zF(iwnkq}?xaLUaO2qfZ4{7RP9d=m-uIUR>xq33 z^8!B@_3(qDd=CKff!Dwe1Hw1X+};_DHE5TCdMY+%@>|@2zGBn0FKEE9W`ZJ(0=JMm zLWFWWJdAfq%=)(DDVRsl)~r5!i)oTSc+>DXDEijB{^H8-UfX1YqpSFe+9_3L=1=1F z!4hlp9_2ImYPk7)fY^2cJ|`X~&ExN!qlVy=c8*F(@m<0HQkhH=VVmnQ*X^_>n`gf-kTON-W_7^%-u>25SC6Yqf}QA zVN8FJi;i;Cq&U7TsktE-E%IEWjuH@&0NlFYfYT?Z>kN4LAfYwf+F~}J0OQgJvU}8S zAm+D#fPgRC7RR!gmLxQ*`jH)%c+6pGuVHg&8{7 zIZwdZfe&&z!H-m1uFAKp0ofTKzZ68u|F{NCAQ1>4^yI#gk)i6WXH)1icxKY}dVo8x zR1Sznlobj`jYT!ddrw?@Z!gY@?+AXnt4uI(kyZ}YD2uMb?dZ}c`OD=VQ=QzRRgw6u z{nQ2_B>$xotts#_F+~7nSsI5K+*%_4<;$10S8?D4I4oEc98IUblU!9iUsePEb?xo7 z41<`Q0QJM%akWG5p^sPXJGLF;D2yDGOn87}td~@Cman=zJMPN~i&hdcGR7d?G@wx>eSCx=F@ccu8@&gR^570^!N1cz zU!HD&pZ13x62vbHUz zmN$V>HvK>Av11YNFtj8*l8M)43sgtvhvg@4(Rtohk;gNfT$$O3y$xfiS~|z)SU}85 zbuOfLofK{fpQU~JJy+gB&*-|ri;XSWb$SFc%VK?cgg{U(WAOp2cI`KnPeOGQe=aB_ zLcW6GHss6z&aAe2NT&qya8{k8*qXL5!9sued$4)sF)%usUtC-~!T$*KrUzY}?z(O0 za6H{`z|6N=xfykyW_}A~iMK@&q4Vpo1#u1zCvl)G0Pp2vrR|;2ywD`c8ZZW}fw{KL%sV;X_6+bzi&oKQ3RJVpV--x3 zi}ZF24qfnFPaBo8$WgK^2TFz!TtI%aasVT_(1=7=xtqf63Hx(RAyw0WKBkQr^3;2v z#x6|F*KNJbHEq3QHy?u(jJZa86X-wz2xJ9tXh=i~q}YS&BVGf}+tS3Q3y1_fCC@v3 z0QR`C_gp)h{ZXrI;#y}Uw9!ish)%AX0;J(_c=SnTq@|Q6#@pX#BH~tdWukwRkM7IV zBR;5iN1vhioPnmxx*s?@AF+ggG}qrfn~t?CXhUjEK;E0BiIv@gL zhM4N+@$IuE<7|5v$Qu{0F~N_iZG0u`lIGd5-{);`2{S@XH5z3f?O|)&bIX|tFI&_f zerdJjbg4}$Y=p9sIf$BwqlO~e2Uo%i5m2!^T13Kt0ly;GbK84uUquA0qy>L;U>-UdML2!39NKfC~OM*H(af1F0`l%gG^W& z=ynqfg-)4>uVO(+Jn?)EsC^NOg>nY0)Ya9G)ey`XXdv*p$m6NRaupCel=SsSCGmpC zXhRf#{RNd``TS;GkmxocV#h6#cp?2v51fS{6uT0xoP6ZRW2Km?&b3=#^>pQ8C$0;cPCjnCY&2eH`5}U0NeswgD`{yB) zig>>%+hVcJ$6r2ttB=X@Ug3D2rQ+J4PQh`GUmQ$B{?{DaFn0fo)xwr1kzXt*yDo5= zsEYQ6(rox3E1Tv49z>o;Q%FF}%gY=Qz2fZn)|aW~lgrnzYD6oa`)_6q!%kiqT@QX% zlvKJRTF7X>EP4`d!X>Zw{d-+Mw zgnr7}p&08KVGa}>Yx=l@N5GJULlc+CKQQFPv3Z!mS8YN7yKSFTO$)VBhco?Cax{te zTA+-DaBye{k~j^_J9gD}AWsBBY73`)0B82IKrv5yAa@p)LsX%w1)?I##s!l{UhKK& z$OJU|&<+Kn$h!@&!V#&J8S(R*W#ss|tizKluzM3eJ|kpEvXn#eEUQ6&AaE^!U+FB> zG(*mtZ(b_`;Va$G2j~t+51L8Uj+?+CT|d_Gs=EP;g_X=gPPI2zuQ=3hrhxPA$Ujb< zPe%TXa;xi9{Rg<;hdL-4{K;3oz*f(hvD8U3LGY4cP++s@_tI_XwV~#7ULvR*_k>gW z>unYx4vAa9JW^gm^5;NG_k!7lIU?s?_UQ%I`0}C>3Bi@hJdBKmapQ*12wLrlRV*qW zyz+ccg4P?cJJr|9#SJoX(!YyCQv{kDk`5;-B+I7S3lu--?8K=ktOJgcMo6fc23WOl`P;Mg&qx*zY?-sCiI z0UD}yHJec<0^(i-(Qdp9cn1v634pQ*w8#{A%OMZYYI4Dee#ceUt&^Gue?}9UPbQB8 z7)jwF6tK+<@c8FZjKk;)zA<0^6wV%2$$_hjDvJy$G;{c7uAf8pDc7JG(K1?-b^1%q z%<51yL`w$LR$=oMX1?KtSAdC<*QO`xIB&v-!j@38%JpR*c z58hwix0qo))Ds^C-pP+W!`eyYtR{??Ue|l}Q^4RicSg6e5OVAQw_tsoa4yM;6De=d zclSoantBM*x@<0>!;+ruj_vEoKz{Juy;Y5lYGn-Cz;$!0Z>ZYPo%rrSca)cX;pB_gg11+vmwlR4yIl0oN2FIZvxa0f+N&!3wo`F*2?H5PsRm=Nckzm9E4FqmR_g+6rpj@R{dH&Y23|B^AK zpxSK6(ZhTGHX;PF5B*a#f?_~<3nzll7=;H5ynqvPZ7aMWL%Jr5}8O$oesvD-2|_sV7?xRcV)jNB|E5 z;JAT=?L(5iH=5G3D;V^@B8X2YS{EhdQxA|*Pvko;)3v$#=xd}R_@vGxaYWhgQAW#T zt-mdUdGv9J)4Oyzrd(X78e6AQLWw?(<71&TtyDt_QH7srT>31O=-GxeOERVEFA=M0 z`pQ7m%qBRvNwE5MV3nX`L^gH9MrEEdJlZXg@t9FiC30!_LqR#EA-s!wX<>LLFa;CZ zf}BffaVGpLkb@CJWY=0XaeaI12KFc^V`JlpzM|q{V=zYtpcOWly3z!LI8j`^8n0=` zxaY^H$|CPcZ20NU1ig6;#>a(x-M1|iJ}EwH;R#$JakRM8;c9h0bR0y3IKY^z@|~uL z=&s*a7i)O@9Y~Q#;<8W{q6qSkfX86eoP-C+2Dm)|0}oH*#t{rK6bfQNCTny3@?x3- zok9UtXt)2=zaGmvAsk)kCm{~1&kJ=j24)w~4o%gF1=U&~`q zYoQ=_B)a$7w`xqL$+3h|TcMXh#vXot<%)V1yQLJctseJ?PL8}eq=lV-+f2!>pzKHJ z_p9kZVgpG3rO9SoT1oJBX<3G(2!dF_a8Rp-foK_S_C1h;lH+-E42hv629qjC(xDwX z!#vNfs#lATRK(CS)xKUp5&ET8V#*%0YVUjc>=B!S2m`ZP$w1bs;)PzG>3cbe9AHZz z>o$;EX}qayAb%2{b!G(_`QT!QA8CoExM@6+yd%4 zdc6TyKaCy3MRp)ZLx%hLBDMi5nJOKo7tda)QUn9aNkUO;-Ebqbtd++eR{8hn^7rPy z-k_1?-~X5;)C8jY4)W%X!}2Y#adCO9Xxe<9JOJj618Jf`+*6J)8wfN9!}2shP9;A- z<=}m~NUShk#48}L<-;D4?Y@Z=HPppJCLG)I_%k(?fUdJ5cn$_Dq*-l@zbLV5L@9}E zzas^UZVMlyIYGH|e7R~t>{72dI7dt6AD6f>$eLcY0C1C;s9=4?6{Se274#lyIIV8I7zF0*Q!;c9+FzZ(| zXgSWuc03)~ErDr-Jfi*dkG69Lm#4?E=#MT*DPr>A5|+0$IVEzoc9j3jJE-dA?L6U@ z$1fZ5)(+u*fc_{hlg24`86jf^hOHJ7wQdG-KW?9%J^C-s&jD!-Crvu<;`8abI^O!_ zp84Z)=>DI=Mb4-OLftDP1O2CREQBx)6CZMf&!vb<%|Ap%gEQH->ai3*4M>M8j+bWp z_d0Q-mLc2Um5u$UU zpP0*E*NKwf&m)kwN{6Z5SThyoNI%&p8`T$=``@@6GVvBb`5m zs;75BrnoXB<{bpc5!OPIEmMKIQ6~Jw5kcL?bWtOg-8-*vRQKZ)L=Lt_a~SFOzP$-x z?V)q8DgsY9QxQfL?hr-@&K*JUU!q#C-yvemp_r;<_HBXZ6u7_vD_w z@UK~?#5#A43QdFxc5DkAi^b!O`aNHv+@;IFgsEeVoU&V~ysa60Ft+c*qVuxZaMj=S zsc`x_vj+7nXbUy&Dp&K z=Y>z+A)lbuHo7>w?^r~>@_otWeMw&pzNKCjGaQCh{+8^NIo@9xM(FV2Wda(urVocC zrVjfL4;x8C-NoZJp{DmQ!=>_X4N4H`@gV@GFxucOo~qjCfD_7zF!rbBLYrW=~u zyALwt(lJR}+snO2RTgkB{5CWpz*k{a7|D!0##28g7zLRyhgp%GdAPK+4UlgL9-C{^ zLF9j95Z^T7BRsOcU{#UV+S*!PYh^Mw^(N-;rZ}UzNEA(#APS5bb&{CA8235Np2L{P zK6Fswt=$%$RfnPIxJ7?#j7tmh9vaV*xhnfp9(dC&vF%cIk_~v1n5->_)s+uIkc`_DA>L?AYpJx&Ds^(JvjrlCf>IgjVLDmv#%=? zRqB;mQXyjDWM>E(l82sQVq_~#55P2LE6F4hq2!DM0PH}y#yWchbM%(pGdWNbfz;kobtaIb8W$JGwQ%GA zhSdC=wi{W!<|@`6zg-WdZpA7(35_AVRRUpIgY;`q>p#&?ui*nK^t@*3SD@=HeGHP` zu>b)YdYf1)N(MHk50Zu$9=y<={H59pVZ@&0fMcLt|ETYXL()rVYDk#QSaH!MN z^Ir_rK7tD3bpWj@EVizg|Cs6-A?{!xPxzyK9NbY{a+upk!QaOHMFg6Xr+!4PD)g#x zjIADhQMz2FbOQyY-ACNF*Q=ouZEb;;pPZcI^MWFqP}A>MDW5qwBR0y2D(5K+*mx4b zQRnc4b#mI3$P_j-)Mcc^zL=zhC*#yBl_&jnsXiv6*}9)#H}`J=W_`W{(R-+3%0HF& zNga~wtBY@p!#?zd70BP>1ii{AUn{S5JUHtBw`q5%=vwp_l)y`(moE5GJL5h;&>6VFx4Wo*o_o5Rnc9)tYSm`3Wp(z^WFM zZ_&7H3#5!YkiCBkP&_wqoeW`|J#gH=Ean;}f}45j$5Jo{<v*Os(1?eY*C^ScGJz&6{N`lTW?{5wJjNe+#%z zZ{bj&zh+vF_*PLnOJi#H)_rikc)Uq#ynpJhf(ErCEjwKTqz&M#G&L(z-N?+yPX^PLc`#-n4Z{Yj2v4x<(4z@FA8X~?P? zG5MU*KPvDEljx}^j&Oipo#-q%QW6gBPrrBGs%%A&Jaflq?wkt!e%F#E>|xT6KKVc7 z7rhHd;Q3t_)N&aH1pY}MH|{EtHs0)bzuna#br0)*=FJFdwJx<>oS!J<+_4?t82zj} z=ZzPF`zbzyr;QP1}v}x@K|zK zOj2)b=BU6gH`-G{Bv*h+d#k9?aw3dz4lrZq~X^0oj`)`fKuH$*2k)I z#+NsA+@JgxB`Ey;B*$|1_wA-s4rlV>UcStQ!>lLyc*bu3e--(G^?~~K+m{NZlp>>_ z!sRzAwN6tIU#oOQBQ_7{m%#@UQ4Ue29%l(sg=BY+JR5E!tk|;SI^D$d( z^@MQovzo#&(G6#TtG;~42cCf%^4|S-OHR*2{zE`nqo~H|*F(NcVooC8-#|BZZsi>jZmC9~y z?sw(#(TKxYAf;4&GU|SD&9Ar1h}cfCRGy<~S^jO#;sQe?7WJK+j|XJ|qm-)_`)TdLIWa@wzPY zGcNdOm9E{*pz5?8ye#a$(4mF86YHHnSYgfKrWa#0U>P^==@W#6KL%lXP+he})>0h{ zvpbe%0Zo&0lrON!ahJ!uWjjG9InHdEsF-&o^LBBls;5q((B&gS+T_ykV)Q6N1xgp0 zs!Wu~SG6f@YM)-Qx;NDfYqh2F#OXT}1LelWJnuYY)Kz$ImIdCc!Jtm}WWm{c20p6W z?k-k;OlZ8|ux7|L_lbLoenT8bI6W9BtvTwT-8Oj+S0^riYTmDIl<7`!BQ5|O|N2+2+1Fox~G*YYoVKzKp(*lCfF zJLQ8>;OsF_PpDRnq?*MLGF2uCkLHpjkzsJ#4Zlkj&Q2IXA;qSMR*z9N=e&!3Q83)Y z5sGvMAxDr*Yo{T?o31xxU%~Y6%F?z2FlbGnyYhU}YW^?F7Lr!=d@n6>j{#DiJDPKMu%;(FdYlvw$kY>#?h)88$q&gv33I4trW$yTyw{+^~;GDNQRb zT^K7baf9iB2;!-HdE6BdZ1V+B@%iKjwkw(G1)ZLQovN$Ylk7cVY%|(?hJP72CTeYo zn;CrJ&6yA6`@cQ}DVlQ#X;zWbeJ))u^>N-ZYlJ66#mqnQC)@jFQB0mmq*=rlaX`|l zvlzu)^ty3bp_Q`PAOhAT0h)%uvP=ExE+}rs234 zy}k9>!#tAAj9#AUw?7mZ9-%x!SJ6lvg1u%MBcF{s$WxNv z6&82O1+$x6VUOLSrN>}3lSs=AfcSX=0Vngs{#0P_Y6Xboa-@p7dLOWvSB|Nqv^b8A zrSMiPj(60?sCKx%lX62UF32?5(_4_z!&@>(d^!o4vLDYrF}`Y%CJ8DDFxECNYWy&9 zY1ymnAn5JGAREG?>^9tSigwuEUnTfHM+w}1Hdp-_X~G;^Zf&=j{@^OeS6`C`S7ja-Rd0GOwaJcI?p0lf?;v8K zDUI@mK#r+G|B?mm#Y_k{|#vRZOi$w)0?a)BYMaA$tl_!9jk#A$4xm&~w;* z{G`YmB`ot#+ExUjo7;nu>Fu()da4A)C2A&pOvo4B?Iw&b&tF-e-WsdESuQLNAgGXl z4~~glZJ6@&{Fab_3&QdRaf*+^A%ZtJYoY+xD%7sv3PDvNmf=@mAON|2beWW_+#@4d zD>3KczJMi~Q&s2?IW(NJ-UiJ+S|;`V*7Gp5uNt(nFq%BgXJ5sS7xkkxnE2}~jYv`X zx3?Pi@4OrxIU#~JAA0U)F1Cak2 z=3EQwPoU0(TwI{Qm-T>Str7htfQ2kgA=`qcxkDu3^UrOC^~sM4zP6MZ74(#XyK8?s z5UFK*CFv;%PBeSfo=O-79h5V^8YYLTBmIO~Y9?3tQB^&&F|ePd8s=}xukt_xL&i;P z`mgMr!$zX24T8hMUnpHv|M~jpS#E!c8Us3I7pwJ10?o-|$+3~YXM8vtvJs|om}u%X zjb~pY+c)G!$mEiy)sFxag7?P&QUpOcUmD zAYv`&x>Lpd>4a=Oqhgq<#r&lqI6v?ep*-5A=D=8p9ql$e`X`cR7H3arH4M`tqvxh( zKdm!_twvOm71v56B_g7>kA#z*bQ+@)@P$!x)(%p+gv%m+J_W6-CW1N|Zb0{ikToq! zko#sXKpOO>)3u&kNrNT`@57=!WJZKs#ljCR1Z)v9d%#P?T0Tce?kH7(En5G&VOQ+Q z?mN;{+o_D_ z9>At8*c{W6KmvO|C+hWq0-XVWe)(&ay}TnJTR`SlOsZeVY6&LLb{hyA zQxV;N2_(dEg?`lThOnu6no+M}UsZAR^QW_Ol7=Z2Pr~h@v+;O}3_Ss{s0v;|9 zTzN1juxtY%DUk43w*cw5^+x3OwSGn7`MJZAEibTj0cp@-kf8t)2Xvj}=zI0V#`iM& z>F2M+PzUtqd|JYF&D4W%+_!BVxs3Fc%whdSByZh!ykQwA)?&C|a~_SB@wN5xZqc&F z1?Rr^u>8;;6{(JS(QgduD+G%@i#|a00Iv13nWEDnrze+-21}RWludd1UXm1(P}ihB;4W-kM1=O*_kavBpz;wjIs**-g;D#s0N2 zv22>d=W!P0-IKoFVkyqs4^iu(Q^z#_GCB$9%qrbh&Qk6B2!=uCKH1A{KP1VRK74Xi z_ZIvZaE+_Eg@xD@7dST1#iL_mrw%rn!gAikkbK49W`4Ke&&$m5FZ1K#;Gbc94yMlL zGUv;os|`o1P^q&g;UIMMkMwb-mZ`s5!U_%?IlKkJryH56pxwME!LL}c~^iL=4+0fSBbg~vMpjS=R<5-RmQMj zw10f=CT)oCFP1o2y<@QVELJHf86BO=ylsb{+Co;aOoRO|fp`vunKvhok~K#KRg+xB zNL2$>D@Sm*u;n*^7zcqzzw*o!MZ*L&0qdVk;wm%be2(B zb?p`wgqIF!=`QK+ln&{TZjc5k>F(}_Qlvq;JEgm%OX)^R>a6EGKltg8!QOkVJLbIR zdH3sV_hlOZ7-$@H&eszyw7C%8U-u(F4%?imAgE$`x64b0KDec{Ju~*&aSXm*9z(t& z(KZ^-W%nx|b6WcTiwa6&Pys(nHL+jiTdh9xL5`26jnX%rL6}&5Y7xaaF$HqEiP7nz zwwwE8EPra6KIwF_M^z%_BPC~|=rupH61{bvmUzA~$1S65-mVuqZF45a*till1o&mo z?XJAdQBm0NN~hy`1|LwQL(OwgzZ6v52803-2n3ioIsa!W1Xno}*Rt{!_3G+scy#ng zoyJE_oD{5HBEr!nHlYc|>jd_rsJBjZP_f4zU_iRQ-f1u5D784)MMcRg1^WXK&a*7gmn(VCjH2 z6W ziw-LwniZ(O{L>Lg`IVbu*y;XmYwD!F(!G|0J&Aa*bJ&0p)-;UVfu7G*voja}_ser_ z;z||cp8~47q0yOPq(z2uQtlw4BTx2aCO4-~(*a&J%ZSeJfa!;fSXV zgV0#sFCoQlmeNXPekaVdTpek>Nfdy}xYbt|th zaB%uQJCXCw&e16_Ovus^JJLX$%~5Gx@3=c4kHF&4Y!q`}3H1)%0g>D4k(nqEr~`@P z@XzbR%HY)8W-)s3#naBQ#x6jU$ z>G~Jy`AC8lymr6Xpo$xM`pqi;r*{A-1P9Da7Qn{ttsl}N7E6tdgJh7QJq?iTcv*t^AVljL*o9&1@e3!X3p~Hz*Dr z96~ji#cSF+I(H6mL2HTPwa~Mu0S1& zgnvo?H|@-p9u~5L{8X#2uU{V*-ej5Z_usUIY1L0nb{Gt|QoBx1e-^WUnX5kH{-<6J z@BIDzP^^fP$GP`#*b7$WYRi()YB|p+LJ;+iprT_20frwgys|+e1606#ntVn{@)MmI-h}cELj5mQ$|<&CCwWL8LnDtg zfzH0@W+J(Px;5fYFV|Dc36W2)SPW<^PB*N~N0R7ScnA09YYWOU3aDJG&IWzaz!T#% zvs+E;X>g3&ja9(k_8<(wCWI7cc=o{(;;o9WCw92{fi7h*&J_s4S#fHmf3YG1f zVP)Gv1J=Z3_L4or<A9p;3Xtq=F#t3uNkS*vHd|6&#WTm6J(bE%P?zi*<@ltmR>BHNY2| zn@jVbQ;J|oI%CEW_|R2nV~=8U5jl*#V8nO{78I}_Y!2lkzLOxjqZY_L_MQIngW)}; z^SU94Wd}#3!hicdKK`_$iw)l9)>tb3;7>t7*p`?4tJuPFXu3| z{j9L!+nZAtMI4QX{~>M&^5@Z!=1gSb`}L>}W)DS4t!ZzbqAAY4*VGJ4!`-^&mm|bl zgu%h7M{5n#*0zoGrxWd_Blpt$zV+w z#+l;I8VS<)vxK@j_Vx8O$+{lU@-=;K5ZoklBK<*>OE=w2JfAaJ>CZ|*9hNI3^f-R! z3QKvVgmV?}$j_ZwB<|-g-n(|7{e)!`GED5Og#Y6e$wkMRZ&lwBRC_4;bnpQO7q?J& z{pgy*a*P1T>ifU|O-4Zh1#15UMVF{fvy(~Ho<9I16x*vRgy(+TP}`C}#DBz-niMNR zXBssX(~7xW#Bq9{>vQr<=F>RpP98)|HP+uExOJHznUXL6Gr-sXW$cy^)>JMTwJWQ% zCDuo8T2}t|X@mA}_bjGg^pP~hwe$j+lc(iYisCHkA3p8!ihiP4o*CjK<8dB0`mXO$ z6kKyDfgE?Ak#fP)B;t%-jBeC>{lXhqKEbp(pLyLbP#1VuL_N7Gn7FFm`TJkqGem~; zSfs0|xTLCzj+Hk&DTvtRwPD#uwdVTQD~jdD`Q-^5Csyy-lBi8|gg@DzDd?oVe-rfX z1Hn&T+fO!e)GD}vEo7GmSmy%VYGG287N#w0#Od0Dy;0IhlthCRyM-$SN?6*`L887Q z8At=-EChA2<4UABQj*S=)6M(J*)7;kaIL%(K-t}Y@Ht8L_%X)sCHK1i42{QeeYJF; zrD^pNQG7Szs3g;uTegmBDW=+%{bQro*#*t$x<)8U|Fh%#RLX0aE6*|<%Giq7?wI+l z5m99Sm)v(xc_5D=jY)Ur`5%bJJE@5<@c_vYP~8Uf=Wo zcvI5l<1shc2G6-3uzM12A&2ZM$HVib`E-0*r-;1Idoy|y2SzC@`q^$X35GiZlKy^s zlgO3g#=bmPUH#WGCS|4z8=oFqK~bVqsSwBQ4Apf6!MhzQHm9T=o1cH1b=Cy}jM_DO z4aj(%m)@Z1dplsG=`~$Gud*@!$jZPJ47IWHQ@&xfx_ro*{N2Y7RFBu#_v;=Cd=9Q5 zN_wWhe|z&?BZm5md}i%>IT`=`=j3gliH8bK=rs`!o6j9$So&U#*9z@9+|9jPYj9|g z%~I<8s}%@kff{WTCPF<%2RFoARxUtX>TQ3LWuC_6m)8tErSHri491MKWkynBm_`e@ zE!de>%q5<*I^};SeJA@Q@^6B&#Z&DMonySExnBeYziMMcs|qnp%n;Av-c!&vw&9VM z12-pUGGGTrfmw4y7k)h1uWgxqop}+bO)+2zU!=RhcRVO4 zaeZInuDNRNzQnk-R(-=2y$BcH&(-CF}PT+s4?rG-Ixc| zbT9xCqniQn&D-tKz+-LRjJ|`8i?u6$zj1O}Xh7Cx%ax!c>UY?!w5sM29UYaQO4O!l zvlHE6OT9T&rXl{f-#xhf30OE%o300qV*Mij*!Lk4loqx5wV6zL(J;AMOs;23JJbOx z(^4b3ZCpd{14F~f)H(N$J4bI~9!BX6e{lsy%KR;+Ii}TUi)uLYNoNoC5xU6BtkA47 znW4GLd>Ge~A6ZotW<<#jiu!@KIk5Fh)X)_eC5{$XJ_Sk2Uzv#R#d?GXQAY+FW39FZ zNotqc#LW;YENL_&xUfiIet;099XGJ2&sh3jwc2f`er_szrQa%Vl13C>blHo4qX)<3=f?658!$pUKM`{^xD{DW&m0Tg z%jx;|1wr(2{#`#|8IsI*eb*y-Jgt)UtM!!_63$OmyNe_sVc~t(qav2tUc)5b_T?A! zU&7?7vTyNrIvP+%wC*hJUypB5Q;pUVs3eFpd2J$Te`yP-FX-Q!ndVNlk5#>db;xQi z`JuLcG&6k8=fuy|dx5i2QTpfL1L*DDn5{^3C!BYpY|v>i#b(s@_mouL;@EK@pVNn< zPbKu`x%2?Mx!bX;6q zpS|=MQl!!%R-2bDaZ=7=0Sei3a#dk?9Y>@ zU`vj>5K2F5<#md?R}J~Q^w&aiK0hD^&4KF zn1?=H_Hl~S&K(X38I}}_A$m_lZ!o%UL7glH`$Oh?tp9pslMcfWM|pWK?q`0q^Vw1v z{iyiHpKWaSLR=~6ixc}J@+Kw7B5<*En@f_(dP3USQ-zPq<`M@+tu6z6$VgJ+w5k8u z#2wI=#c?I~AMPcxZwiG#45|9|u4+JP3xF0QiMhFPcij!J3aAj>!Y9fWOiH)V`3A2` zxb9(>d7??Vc|>ucP|G!W#B>#&zM-)QjCz_{!^pBcd8hP;g*;)9D)X0Dcz4A7Hj7Y^ z41-8Dx1Fu6ElgI<2^i+}h~&Nd<(2aP(1^e2E&mLlvDCd=PI(7NMEEa(@2_0`#)!)* zB%LU$5jkJZddMWoGyeV$-KT_v8foiiruAm_C3Ewt1ECp$sAHuqvRvQx!G}eTYPR4@ zSW%^iie;Uz<;bx=*vp8%qcTkN(=bUOSkqX@IYm&nyp`Kd%WC5J@aKor=+gcZZ&$|w z-79^!0V(KDf#MWKfXgh2!kxdxG62DQBfuk0PAcZTZjvsJN->!va2*T4Sbq;uDvKG8sLGGx&gBzc-6b$lJ*qQo4Y~#q>yWpWIdi-BI|D1NQ~$udOqnwEm_(?do`*oc9<4T_WJV)7rf7yt(5% zVbF({*lf$fdzwrF1&e)rBT!p4iNpn!@UjUybXY6?f zrZ|(L8_#FS$^tfB&(pAhub_p0dPhW$aYCU&`i;%leq&~Rg>SEeYBH8m17b6p-@^f$ zmbPUQHsASg_E!@0Av;MsuvrAjj?>vH7_IE-SS}pdKDD0j!fc#RY^da@fB2>?XyULb zMyJUpsmyhk$`eOLdIfa7kc0`-VM;L*|2)AM-(CA~vQSSlmx0im@fsRI^|&u1+Ix1J z95d+LrjMZYq#&=cChj&SsX#rPU@G{zrI12V$^fxzk9=7B1Xk}D0hSa&YKim{#7yXM z0{PU}%ejsH%&9%aCbnhc$JOZ7&*Uw4%oysG*n4z>qW2!n8ENX#5LDBMU^=T6Y$k@G zi@~LK;b1)x!ZDtlnDoe!R1x&_FfTn#^ZS(mQyRf z&6s073ETTIfBS+D>gswpdfjuKm6|#L%&T)2vcOo$-9b7kFJ-OcL=?3vRiey<^aRUp zsQ+;c+jaB;ejA}MTaz3~f%o2phz_3{v#;YNv*!I|sCz4;bu6uJb!XhD6{?xow>)F6 z#2XhFi-Zl9+&gCl?jaPi3;z}cvX$i*GiShbfBxMHeH857JwieXxu^~k_ z#9rXi`NnX!CeT{;*~{otS@+2lJ!11PN;9Y_F7Lu^@8&sO?@jNO6B92Vb5|-aIoDR* zx8O!DALroB=xtmGC4TuH?6_>lINMX16N^a%2nXWay=FK3s4}7+Ezf}5Z@2e;T7~#6 z7gPId&h>_We}XYYem$Q78?)cjkHO?P-c6#kMNJhOcYW&372o!AB|vUOH*ilUe3w$?19`#OP6> z3cMKd-cdM&k)A<2b>;Nv*6x}Qe(kw5G%Vp^E7KjsMfvm^3t{|z`bczS>+#FGI&`d- z;Y}%9&MLFSG{hgiT~ltotHFOYf8B_1Jco-38~yaKk1#9)21cAC^#`f6WrLt)h6SBubQpJK~ZZ!_>r(viIXhAp^0@S&yuO z&7NBhI&Qio4eO@#Sy<=%x6%+(2A=u)d|Tvu7+xt|QWsAB-k>b3)LiPKg*gV8Jz6mtn6SEVcjfZ8;vbmMhSaUsO#e~BIf6P0iLGM zT;qGewb?dG3;9)LI_x^agy9nAU!Nm@s()OPR}t@LG4J5?R>Goo<4!#MH(OoKsx*TFzdi&ymP zHY+XW%-b2SG^2S9Ra5c$??ek(;M=OfR1dgyzqRP$vu=P05o}*iEpznW*%N)?hpG)g z`5+m7>w&X(9ilU?4Yw#fOZv&91dnuWvoU@UXfo;O=vjaQ z@5L=0kM6b5(0ILNNwagH#8GnTPY}wF{2Qt)*GJ8}nJ=^J2!hpwCcdp}46K5pdt`=_@Gpxz^XPiAh&rHnEmG@I+ z(G3Uk$$NLwuQe`gfgl`X!tCcStajztB9;7LUZz6omA&6}GOFmhW06$a=59BN%{5*cj=6Wz9Iw~?{2<`{ zB!xDAP7e9D%;Z93)UW6MF@5q8&@XZT60xO2>=dX>52^WZBH!NutpqedefdOR1VqA~ zcD+2;BWFAio%WV`A{Sx)$O_(NDVSB)_&6vpMN&*ZQTRZ`RDLb$x8V(w#$cT(y3L!m zC1#yNww(5c#_YWC?*iS&EvW8&UoN$gpBi=sl(fh%QU0XJm%D7%%0X33B4qF}gd z-AGQnDBMg2|BW1h!8%MCWkm59*H2;&Uu9y*2sYUd%Y$87zl$~J=A4gBJ0}5>+BWEe zx~;>frbCwp{Yv7i8Y0%!GXW!#6xIscSQhV1U*9VH2x*rVkMU%tMX3?2#MQLa& z!FH>p<|9KAhe7OMYGNO4pWwl}TSkdEaNH}Jr$=Y;t2E9U8QGVucXnuRnsPPVfsv#- z_KUP-%xxO(RsYnN$~^s^U1`>+{O|iBgm~+5ZN|t^xt$qzU?*mJZmd_soGK3`$&h;e zegh1IA3;urI*9pfHGC5QvkG`8V2P&3hg>5XDyeXlcd=2p~NhdZCW^!?&mw0Lo6es1ow=M$hBT>(zL`x)J`0<>*- zJhl=&>NZbFoDQ{HXR$W)>oS-pC5W<+a}ko`0q^H{ai3U&(2d2)4#&dl*vA|LJ0)PUw5B3I@@Im5MHENQoHRM3 zL5cTLaAy;Ul2*)O%Rb3U<1pE#{tuPFsk_oZPj3{ot8xRo-4ssH zdcUcLTDAkT&`?4wIyM|4-s010{w|uA8{8cOXA6-uvm2apeZAipq1UP<^TtnGBS*`% z1@a~#;rK3nUmSiv{Mc`N5{Mi^=vrFbbuEnzlXai1k@plyyLDx5WDv8amEQy{$R?>; zETNvI4?_T(wCihB&1)CgdS=D8$GP6;@p*VNR5z=}F4n}a0tCs^{n}e>Y3E;uI;a|! zH>PkSx4G_~_9QbzsuQ0B2^!wel?mpVI|(Z(yvUxu@t5^J1r~KEkiYr77iDFm4QjUC z3`BsY2ITDmi?JN-Z4RnE5N$v)2KNBh1(nJQ(0@8b{{RLyE*Nyv?a1?~3J85HaKlQXlMs?593;5!aka+kW4#XS!Ek!v|J;fiGVrjEg=Fk^WT(nR!4Mh>O}F z$q@GD(bUvTNd>b6Uq@BovIis-XpsEM#t}n&o}Ho86~sUPi~Mqg6w{+}a9+D$R2d`~ z{}X~3JvDH)z&ENVd{b+R_HfW`+&{%S4{VKV*S(e z8C@6O*L05-eW-jA3IjvbEav0Ij#>ATe83X;k0P-LqVnHtvMMe5@ZKzqUSvO7nl_K? zj0uea;pf1d$~UkR0%fAu|Lt9D^?nl3Q5j&(gN&ZB=E!!JV=H9vxurU4Ef$azzblC{ zJ}jYB7S5098F-RB#T^tY;@N-myTU>cO@T$(UgyL^n0^Jv?Gdss&qRP#A&rqJLG zxnD#mFTwcP?6hpWEf;KD@0vA^Ze13nu6@C$2^Vy|5(GL%!91o$b?Vk4^1?Nan?vm^ zP>4DGjgUZ{#Vckjv`eirKfi6Ogybzw8gE$aTRCXs|pa!32jxHMnF`M<9WHLg0vL zLTCr|)oPqC8Tv79LFBGe4Q=-LLJ_TWs)ZWl=zA;0SdtRj7{N-1VIyWxh)K;4cKPm| z&9dY$*T-h8PD4#edp7AX8M;kZ6-(6YZeK+0v2y8mbTZwb%2MkxV^AoC;aDZfE=8w> zPz+yN$K3K(*A(Jp2L5UFrN^|E&-5QqJK*NKmFVCEIbC z@?TG3iX7xg0QTzxGORw3bl8B;c`BSek<&f`pb~n)>#bW-lzO6liR_3B%&;uMtr5W+ z{vvSH&2Cp;z4jy!^O1(BjY$5$$f-j{Zc-RP;l1huPzhJ7K87!roDIzEEP3oHNyMyM z8RMFjWxa;>j5m0Zg(bF;H8r$D+i0;&t2*)XT8zR4eBEeP@mr&~D_#eqvHj|_{=U8p z*x`0&?{)DCTSR;uIt(JHi0im(79CM)TU#@WR0c!$-X@PsX^79T!2~Y+yj@G>$cFQA zh;>|?ZyGg;V;To*7LESL63AaT7<-F@3_#Q?kKyK#)fOq;&!DN`{ zt^9m$FR)FYRNjo6`bPhZk%*1#yDW7;tSc(ZgzVD8R0VtD8@37uJ>{tgN%7@Uj_&>5 zJ_xpnq?RjCbm7o{+!@6^X*ncOfy?&&`^trLm0F$FAza?CD11hr^{pX7O@X)p+kX)( zU76-11>~cB^)&oQ<50d%gZCK zlfsMTM^BpwqMJa$i@mhuoh|`}n(1C3pf8i()iQk$(Du*4&EcV-{!WAL8D?*~`ur9w z-LpIj(Pq?CvgN8Il?+bUNHC&&=`kxT{v5j&HRlymsV7L|jHibCZ-&|cXuN@3qTin2 zhRHw_uJ@D7F`E1QSdNevN1)gj8b;0~iL1-5e16wg@PX8WS-;aT!s_xVvnr1Fdr%r) z|3}z5J+hTK{*}KbCNAE7smPmDuE1$u+0X6S)9)oO)Tg5?>{>4vI@F|+uS<}XV9#2v z6(RUuN%Qk&mmas_oBNq5!h}$5_8GA-W}e>OU%5XOYlP-5-Y>P7FQ;)G4Rgz z{5VG~+?-APeo%&7ok72b(C=UQ(OVuLvZ9`U0Z`waccYRWXGJ?=#qZAa)+2cLkhR4y zPCi;vlg9w!^+!w2#E_n%6N;iZmg9x5XWelR0%=?k)N0M2Q)_)ht9%*~TWpVB36@b8 z_Sc&WVy_JhqUU$g#4*rBrpO7|sBM@MT^85`!lg_0RaZ<13rS$c74m(u7C9UHK@MTd z0Ojr(DQAML(7Xi~Lm~$Q>$w>u$pSZ4kw|lHA{A2^X@r9*tnDZxd4x)D#e;P1IVdIJ zM4{HpHbB&$KOubbqnxdNliQiWeSO89;PYjj%9=qjOCA7YgkTB*0;B;c&_@|V)8CZ& z|D*`#+JbfL3s6aT9oG!%0Jvb)L<<G2#kgYu_nc{AFa1XuN-hO?F3k>x$q{dr zuho;Nt<&N9?oA0_b%zfm5~&2Ao$$1UiTZap^Q_ngKL=RCuGn6>=KhgIA0a>+FX&5^+)K=%^jRs zo6AbasEn*^)sTM`-mgFwcjXh0+ZeFNC;j>4$YQ0g^ls9x5#2yj1!sEL=`8LU-Va*7 zfJ)&_4E3)C0*Xy%r@ke#yA>h@UDfHit-BNxw@ZloX2}+OHd|+iXjf|rRrv1C6(1tE zl+yvD1R`E#m6cc^nUdym`%RqFK630gxOa>vw&+Y_#>TnPlkdJt{c|4m)fSu8rdC8T zpuRuA-DBU4@Gbu^g%79-NL?Er_^rrk(w(d4VlQC}21~?> z4LoyK`*-TnxKqjMW*@PtMt6l?dDmDI;Jsuv1mbu7TH@x+=SuEF*t-}jwuSMuRffm@ z?~hvA9vy+4d&CW*Nix=aWB<@K3Kw$+tTC5^O7@A#NQ8ulZfz)Qn&VCg(v#Evr}W#V zr+xa`8U**y z{|=UicLWe*M+@YVTZN?E@Hd$SW7Fp2zu!H0oX_CmFjYJ^{7d7+`Q7#~LT&w|#k%yM z%9K#{)nPLsOK~l*cICC^M+ThvNdKwa2221yYZ&!~5)gq}pdDyU0g2#b`c8NY43(k5 z6tAoy3x#Y7`8EtaZj+7I*}>{{UE$uAXq0%)3CXxpr0>s&za_{Q5hTycrfGi{nZ78c zUlN}%@hEsFF+~uSeB$bI1RoCl<7Ux;PDz> z&`Amy9A@q0jCGr}9p3V?(T{K^{Sv~uJ z_X04fwxCziD}dqJ10I{>1(wg@0M&W{mZwkzxO;iU681B&!(4%=Gk5P8@NerK?pS9O z$x|l&4is$`g-mU%?Z_Sf$DB6ncJEtdB3D2er86xp6XD*y%bJZd zf*e`QRKv!-)s^kiXJt;LM*DH|TJe~}kPSjUyR%7W6}!7oyr+sE^No?GqX^U8%||yk ze)_47-_DrjK9ltD<97RlJ4Lz~Zx_ppS=9jt-=k--{Eq`xzNzYV)#;f& z1~7dJM&gk{nIaZ&!YmJ$q@X47CTK*R?HPcAu`g50`M(@~{xAJ^t+6DP;b0(s+Z4NX z?+2;5K^&@y1T4V;O|qCbu|(EUVIbctm@kHBQq76oI#ORDYhqu#0G{^tOa060I!xB&vB`VKc5=6vS3{{#j!V;~c zcEZv7aC*5s$_?wgwvcb#|JDC+>s ze6!frsD2zJd;Rdf(J$Z%leDgH#0WIdsehE@{3jhAWy#f`b7T zjY7`i21>Z;f*iXK)F;)`zhL;m=utwa6Tg(vWYP z;*1Nv&=nVPw4tQ9a(3FsAB3@vdcRNW|L}>t7^9qOFu8!g=(|@`g#Am>)UNh9#{QDX zs+ZN`-x>o70@O<=*$#Nn+p%}7jo1N0{_^rt;8*a&SyvvA6Q8Z+?vZ)IB$nNZLr4lV zJv1ctDZOIfx<2a{-S~-DMVJS5Y$QeH%0J5%9E?{d{osS8I!`+`;JW|-0jb3{ZGCy# zQQIc- zq(2J8pUu#bEjfmrj5z(8q#<0c55%)?rIc!-eH*!#I(}>C@WmMUSP?H~b0pQpA5NOQ zc1;j7U{mHYArBcJX>_nnXf;ONbEq{jES7fj%}9%QQXv#258o!nfX{S*3o@pbGqcTp zKhnQ5r?Y;evYtrCs~D-S&F`-G20|%YB!EwU5>Q4DD&S9g$LGr#&-^%+B^4+FHi>@q z!Lkd9Y>KN(BDC=&U#51aMAF{}snGXB7g4XIF<4-}A4ya`p@p+8K`zy?gB}B-^X*vG zmf_70-YdC>ntaSi`wdZ-*>rXDb4b~}=QC5||1nLS27gh|vy}YMv{AfKQEB4lh60oK zz0Yy6nwsB_u9Z=zxh61RF!82|Ib^(v%|VPuYUw7(dUwX&I%;3bOoW)1K$I;!#iXXT ztR*K5j~s%P@{d{C>kz3J{W{=5Sr#cXmpYZ(@ASp;6^uvOiJ*!~b|zPqC+6rrNvgYJ zjn|c>1IX9-8Amb-tV~_nKYaj>LkRerptN~t(LmyI17&?NGc&K{o-sh;IIWm0Ii8#? zXD)n=#LGFofAie9s|%H-cdYn$YE0_Fs;)8=)4*Bgzja))L9{>9x(5i_RreM94uKnh zO5FuEf<355(6y!yor{;(6<9`9bz73hipx`Vj#{lEd6~rB{!lQ>b+Yzs|A2Ys?m`V0 z91ffiD+&&b3TF%Mc%$~&uN%q48y8d@c{r^_GdS{?N(APf#C%+-VJg|6*w}Rn+I52M zt9O4_o6Obtb9yG^t)^!6k7=H2zoy_vMT}Vc9ipOnKRV#~Osv&WH7V!*^WSO#DvE-9 zmg8zrijCW-X)$AvETxo14v7nydajaCuDLqX>r%dh4&{|j8KzuQSvj5^X;MC|=F0QB zyr-DJ*9hCzw$s@>euz=(Q}CG^e&Om3B_HmW2p5K&kdQgn#Lj{kBoKoV;RcorJN>t- z(H}IVoW@J3oDLZ;3OerWVhi_;Hm!d0wSAYC_q<(^|Ey`EtwhlFy5IP*TYtgc{#zr> zCzQtmP^KgvxN_KQym^JfJ6C6-_s%c=`{<-`241Ei9Sy%>nl{(g+Q3%@2G!39*s!sD zV{Dd??Bj39@J{zhLLFaI_%)Ys{$aZt#Bzq4Uoi&Rl5Wr~g1|r+DAW-OK?gJX{Iar7 z@ju^4H~}I51xT2gMsd%iCqL*}Wc0i`ECGz@)~5V90oRV66gF@1TU`63%%y8k z+%PP9jzuk7LTn_#uA&Ad^zIVzRU_%+D@w9$e(Iz!&MMAQ);R!d z?u7r5S0kk==T2edt?=ZdEG$AR1*W{ZK3`HLf*6)bX>Cmr-S$*F|1T$=6vymzXrqHC zb8O7R6}T(Q5$UZE&X64jP(_1=U)s#J!k`E3c)R(HuJeC~ZXsx~k~!v<2<|vTQoYL0 z|K?wD4d9i*wh^{lj3*OJce3A}L_zJKt`q#>k=S&Xz^71--Dd5Wn3FS(#=F`Lf{Q$% zv@v;t4W~Xd5<^jtz@Q^6i}vs@59lc+2y^@u!2Ha~ZTMy0S0Jrp4JZB7Jf1fkrMM^^ ziLb_WpcGV@+boc{T=wQkBRc_LRUvZxt1njbj*y7x9@yN5nw@u`ASv)Wh=Tk&cEDEy z9%JC4{_*1nG~5M*s6hY&ITgx54sKnB=Byimcjl{QUMkW_5a{1k*NL0pq{j~kdZJQkf=zGZlXKCMnU7rx!vAbk$iQG+fwg1q$7$hMLcy!p-ULGMqklPQat^GvW;u-*I(cGdO$% zG{wFM<+A8u$Lza*TojHztU*CBfJE9LJ>Sf~QbR&(@=GvHZR?Q`Z!kr@fm3am=zmw1 z55~~cN+>dr^KY0z1tv8OvC$n|lhM;kqCZl2oPqQf2*(9*(eCvH=F#39u6!H>1{{$XL$TGQ*S zi{TqT%!bx|St!Vfm1bB6M>C$6>?)8{b;(Y*MZy=Xqu%bw58bTTgoEcdrl+mo9#$tA zE5`=;y`KmVo~m}|^4xA=ah~KzHJ@d{Q%nRkYUf8y$*{rcKc)(%8@H13uy$o=-%hcv z@WobL*hI=xVW-6uNgs!ljW%Z#*>Isp0i_&nyhC99ln`hdeG)aA^9R|X`4~XkJTR0< z)v^n*%@Fl}Hk>T4sE7f@;vNp(O{MH3AUUXpFZw^MY_)MJdZ$xJWS>x6Dw8k3%UV^LU|0{{ccvg#*dcpqR5*MT;cE4Scqg>}Nm>SZQ_ki>J+lca^`oIHisIP-<4u`!~o|WZVIh=?;apA|V^!i#xI;rg6aM9dnTPx_fW5 zaRy6n^RTxZ{})O$Xf@;t70ZYutlJ2#BVcGmh6x;nr_DDsF)?Tha6qGeZ|O_=Vqo}Q zT$)$`Ib^p%mq+{g`ye}1R|So}K6CaXwkzGdn%vOUeF1BBPTPeF!#w{5U8}^rF7*kI zt=`ZRrf7p612%Z8QCa8afPv>K8%av~MN%Q)#P#_>Fk$ZHhE6axv$fF8xU z6w~y(pnm-C1FW{bGdz_22EghM7Czy9J>Y-`Ou>W9Hnnf#^$w4$-~=fMm1&Bg<|fUU zB`fGICDCV?FnH6XaY`FAT*>|rs!M2W?j@M#i=ge#w%rY}LfI+dugtAPi6 zx@2Jy|8i0J`ZTsGT)+B%qboYwKmShJOhy+6TLe}qAqwPjK_^zLsM=M-SejB45Lwk( zJMaC_Ocugk+7)a=;(tA(dEpYy|1d^&evS%6S0hq*f<3@nc2hX$FYmGHi~uc}pr&JHbNdB^wXxxBrByfN0I|%K=TJ!`g^?{0quw z-XGH;_U|#cLZaAAaRkf?nBc=JIm(#I`?fzA@67=bm)XLleMTA(8XflQWN|S?xgMX{ zYieSr9W(tikEcVFPKI6(tEgGNwPh^*V-_pJ!@n}$;lmP2Iv2$nA6)wbH%!P2Lw6Zy+wV1#m%HPO0%8NiS?^+P>V2obo{r! zl;`F?Zs?p(x2`agzufk%X6`^_`1Mgzzmz-x2h_E;!Z)cG(vQye=yaVTiAhIoaGxN!V3~7R)M; zT1!*C_@t6va-?~j_!P?;tyEG-EPf{Z_c32UVxE2HT9z}e>F*rNBnkLSoV8z}Ly;x( z4elYcd0!40SUUdBxZ7hE&kloB_!X3*#VVu8!gRxBTe|6;i_e(xx=juwfJb_kW(~&V zfD6;NtE(a)Z9NteMuq9Rr)2c6)_Y1zD7f*~Oa0}n?T=2;@}5$VcH*|2aTBmC1EUs$ zP>~*Yj&JDLm}2K`#~Hh6KO&FAs;ts@uC{#8TGBbNZGixS^*`*TPVi_~j*@Pclp#@z zCP`cxmEImW4L?{oRvBj0vxz-*N(y4AXF1F1Cqpu(olCb|O6+W7lGqeSuAZo8xJta& z2RuI(=?SEzE4&t zLFLb!SBt7-_$%Vsb(Wy0yWcu&JszSn2|GHToS5_h|`gz1%nW2oz!REJl zvvWP}htn@dG^pUVadFyb1bbNy52YNXH$r?>Kc4&gOG~MfX!BT>yi!+e!mrS z@Q)DJq-Iw)F^dkrl9}Ih&Y(sO%>N?G#X7ih_S+$+XKZYY)JB_5F{As;?^ZC^=TZ(> zgT$q!tx_jJa5A*;ZRm=V{w^FpL0vZ6*oHEZ*C6eGS!+m?GyZJ0p|)>uuFXPYp`0hDl&1xpi++&~J_%Qh<#K%H>l zR_i1wocKP(_P>8j&Xt|QC5$uOkQ#M_XQgDv_Q@e$GfJtB0 z%#2C_pVhQ?f9vn)6}DhE|7Qk`vG-9monJWgk6Ye^p>+=0}D+ZXmZQFbw^r(KSjP21B2r8yc~oDSe$%MCS6B`ICEmeJ2<|h*fAi zgT^a>`G+~Ecc9jULvr5^K_F7@uD6+8HUf&}x{jMiO-&1szzCe3&{=z}@52qL+YF44 zg%u@p@ESaO2xVeXKHVYbr1G3)a>>C%(I3(^4{2^GM93~$8=qEQ;NdaBm()^vKw8T6 zGkBMD5(UCO(eow;L6pFF%U*8V;0V8<)3g*m&`aXi07ACN-R5gN7X6{#P?XZjN?Ou* zGhIC3#0T-W&|eHJ4f*!6U1x4Gii6*jQP8c{3|PRGoEG^lPrR~w`<$D;9XJT&~O?S<(pFnj8B zDNf|9cICXOP(bX7bCZwT0F5*jFRozt7fc~Sm;wpae`v$KJ4^ov?n@&mAtl`<-Hmi3-5@O;mriMr zZ{P37`NLo^xc8j1_g-tw`Aq+h{tZYQ9uzSWs)2Mg2HVw%c`j*TimE;@7}?Ej^fpZG zT_bTZS#yjklLtig`xK6ikoDg8<7AQj&;}hedMu*xjp_&TRt*L;u%L7q2;$GC&TjPq$o~j8(1qsDH(x~ z`Fo02gPKVBm0}9eS(8Tpv`7s<(2>y5j(MfSd#qn%2kc^zhbHBt+BlVc# zEtkS=6${EoEX}1TY8_LXO_gxJvR99z7Vul@afqwPaxEy>V`?S-Z-gQH=6YKA83=LT zv^iK=t%DIM6d**5ffWXpxY|yTaf%|E9UT{kGdv7nO`}KLH))tM<=-cF1t$L>Ld<>A zJ^odJMMeR$Y1j-a2Dw@d?+uNW_ke!GuS&xz>+p@=co{8e5O>Z%b9?-K+L70-SO1A{ zWH#F#fFa%RrC&aTyFtaEKqzCqOal_tyS;(vsqbCn4+$-t#E#6f71oQ#>zm{GyqPz< zm)0}UDU6w1IYktHGsxqh{%fhiTR3vATi^93k|{c+<{*6$d7V+eDjkmB$=hc@;YCIg z)?5W8Sb-ecT!l`bhf11+q4O@BwSoEz-hw~q?^y(!o5Est4*Vi$8ceEe!%Vc}va|To z%2ddJvg~^y%kPGt9AC!P`K!6!F{N$R6)X>qJ3)qh&|WCVzEGDTP>XAKJ-=F8B>mQp zA)+!yuz-yn$w2fmq5JoT;86qh5g@2Edk_v?l|08oKz&pqv1t^kD7CRT@As~4E%t0= zPGtvLD;(ys8E)qi9yVHu@6!?z5M@o*VhQ{Jhl|@D|KBeRZZirE&QCb#)UGgPnp#F& z{X~sI{m%do`8YNpqR^V0S6FFg8%$)avj_IkeCZi!Kg!-`xlspythmG`@LNeBV3jj! zu&7JbWc99Lkt$-$GY^_V=sm+zJ`@?^-K#7%0Twh^Is(iKhN~(P3yf(A{r&wNzLpPU zIZ>RSq#CH)DAgo7IEVDg&~(~_NIS*+zj;9+RdsrF%x;Wwy5tWNi2M97;d`1NRy=-k$b0<)0|Nsjb2O@cVgZZS4p0&At?vgIka=v!#@|BoqI0ZC zWWTfZed})_GGBW~6}B!OG3zQnB=cw}5NozJqKHrZtzVrt6o-tPF1sz@X>smnfp-_C zJt`gW+w5Ex=vkxo&D6Hjs}YDM_Y=#W{GD#(lkqeiXK;Dska}=5#E#5wa!MNuzxyR? zTg|pON79U&RIj%Oaq33^rxw(lZfOw*E7$S#y3E&f@;c;{Y#gBq8h$BK!}*^B#q9t6fkI&AvYbd?fP`3q zmtpSt-xpl}Rm9Q_M6sJ3>`A0a3O|dM(r}?iq>k9ZXM?SEigRApEV+hm-F+V%H75D+ zqZRE(T$f!l+j}@Z4o$c<{=_&YDDC+UUtGGk-j`A+9kSg0qX+%qt1}KWTCz>fHv~@0 zbY8kuB|=LwAJ6E46Zx9G_M25jD(t;@aWPP5ReT=}ngvJ3g5RiE31 z?2VfKOY1>_9W4UjKR-M;PL!FAC0W!id(R+Ze`jPKzHl1<@U*y!x6^*7k?FaL2rQ|@ z23dVgfe@eH7vT&^b~bjG(=&bo4MivJ)?f_jp4?eQ-@QLcyzeN^koW9r;_;sW9B;fO zLECFyVtWz?f?g=8c330d!g9MsFxW4Dgj=eZK8|>UV|@ zcz=$kJfOfovoAm|j?9pnBB`#4DtYa%9_Jiv=*W#fqNXD0=1`ZUiJH@Vo^;Le#~)D9 zuI_|Ei?$7@4Ph38NHU=~qsL7`Sii@Q!crBx((|j?p*NoFf6O_P$=hGu?|gq!zsx>; zKa#l&D12~lgJrov7oaUUU?8W)!4?gOrV1N*$jg6We&(=M7fR>i!YZmPWPcaGAfxx; zMJbDum5q;kYeK`1;o(vOO)UWgr@wf{24LW>UiM`d{b5qYVe82!|8D;*p*%5YRbT zKOLvd^77_?e!l|5zU1M4-d}+XE(7pc`=cq>4qYpOKzw&Ra|C#p(jdz6RyKhgaQaX7WawR>1vG-THc5?IXVQtaoQ{&*ER32s2zv3-LehmG6b0C(Az) zS?(c7(rua`m`9w{vSG!kh8CFZw03wdTm5p3A+D`*M!*e4!x4Ra6Vvho#W$X znCNmu3>!vZ%`7cOooWg!6!yGMEz)TycMTl^%+KcIhUMFF4?B#YRidA;H$de1@zU>8 zOABCLg9ITIWo(dtpz()}F)Z1^wmWwx2(5 z_3u?AS9UY2R;GIz?c1TSX65l8<_0)ny;=U*AR_G;ahv4euafH8jX%wyHN)esZptPz z*P0X$PWWYI=|Vm(pMgc14zd-jN{X9Je*pyDhtRj1-+sb>o(QQ+R2n_eqw7bbrvoi=L$IN&0IARE0P!iQCu(%JLb5C&JoQ)}Zio<n-%WVU6&Gm5}}VI1VaB+jdX)YD1Ry30}@$; zJjs`cMYxn$sw2vX8@j!`ddD$A2A;kBT^SttuOD`Fj?rE!e*kp32ELQu*!<`ZIbqek zF|keE`8jtmb7lzMOE9v@bQy%VvZAFpZ+2TXn)`)F%RY|DMnfhaCxR_wfLuPO$suG7 zUs@WIYy?J$B9s3nONxt)*Si8?IdUSCg>Fdvrhk9|4i=@yNZ$n@Jn66t=r9ZE>tPBF zB2iyK*lY@xPsQ1BOOtHq%?uM&{0IC`a>?uhf$suftk7fj{33E5xVP&{dLqq??_Wrr zVPg&m3Ug(%h6>Z zaalMySZkx2{}X1(zaoN&fhAY?eWgs^2cTNJeiB;Ycm?d_utlYh)4v-C%vO(URyT?5 zO>V|JSy3e9yh1F#ER860tGZ2<9e*U8svUKei%+YLMD{jDu56=yc-$Bn9&Q5GRN(Sq zxP(qXzYCx2X+|_O!U*@#qW4T7?RFieSpz?pBi%eg2}_#&Wz!+$zC#sj)~wD}Hnd(b zi@2Bdn>w$!K^Q$}BiZEM3zw*MdlsbqgcTK6V)5j%u^uBV9Zr|nAU8rM2CgRY zE&bxeChh8J*~E^cn#0tSWc8B{G*JYBEV?F0TrlaN_TsI13Mh}g)RAia^;q?KNs=+q zTs4iUbL76HIGxT%deb??B%bbUsxu(K(i%Ph^YPwPo)7^25^)*-2NF|28&h=O?F0lt zcf&jt`shk7o67eTKgeoMlLcKt^IK~xWUF^8UDdEBFSq~|J>etj<<7X$bd0o zxe-Ct~6mL*Pw+y3^3Zi7KsL`BpqQN7v% zbz9xx`pJ(|ITKG~j{NbwY-E1hi%}$~Pi@Q>SJ)_r*yWSQh-}PG_i=5V{Mm?luZPa* z;KFu?=`{tCJ$ri`Ce{o(*Fg}p1JrtL4Wtw!0+1gW>}>;+6>~7kegxp2;}6w+sXTD9 zyU67q(`dA*Cu_#%OySvcuN}(#EUg@&8SEcz(+;@b{47fiV|YZEkS#V)Ke|GaC3AiO zyI}8ew(kWBP~m>|0@L#1va;neXF@PA$d!(0x*Qi4I%(Q!+RKd)1WHY27M6qaKTdt5 z+F=B|pNZwd)>1dG5`%epeFn$>blQvfAV{)o7o)U=2L^s6|IC}M=jbR&YLKvT*A&Bk#zVQ<~Mh#exXRxE}@j znICe*o+ALfyE8 zxHudvf3@-H8Zs^l70z(`%|yWVgk0Oc?+)<^c=rjJu{-F8lEZfRMN}k5Kw$!5Z~YtT za6gVr^Yrwl)3JgKVJ|913QY+?ix@d#Yr^D0^9{%W5L%2~7g`lP{g;M)jDH5;fUkv2 zKMAc>R%~_F2{=9Uh32ui$rUX=?aCt&SU3%Dn78pY=K8IT7&(|JJ=-a`wDAUSrW8Km z`vG=}rY8ILm=Hc0-{`L4Ld~}Z*Gm+j-ZTHxMV91XW2SBo>?aP;pmX})yaV3kZ&h_- zc6f*8dw=U5JjbahzPu%4h*G97)cG*DUE2`ToJ$>ryb&(ov;$e8cA3@CItQol2FaGI zP_aj9*WJ-Y=w&(BNfv9(eSwOBO}G9VK+PAvbpQ?Bj{wN`d?GB4{3lrb+x+L{)W|V- z+5+YAw>FZoJi>oiMRlc(r^}SNqooHUSE8B|7$jUbPRvie9I1lV^W#-E!CU|7?qUaa z6EXm(-zWdLO&C!4hG4!}V6|^PsvYq>tY~b}ztS7h1V;iHXQX!u!0F;XId)iv`l`iC z?%6_(;YB?i#mcAo@4U&C0EHNP;Y&#oI%nwIiU7KS%n4SGxanMigxSlnSy1x8Qe>cU z>fQKyX{V#n%g_lnaP6j!z&`tkP$2ea8b8Nboc&KxnB;6H{1{;5W70Pcev1|{Qa}d9E4!R+^)&`*pFklwwe-i-TA0E)nzJY}=tb$lD6`b#_Tj8vg z>tH7K|F5W@)X@xlMeVP5g`L3kwc4dm;nN0Ha+Wh26N9`fR%A1FP(kRNT;!I1M6>zA z8yUR4-;4%CnwF-R*z!bVd?J+6Od?N1Bv}u3?5~>e!}R+<~t~TVobjxTCC>7w9H&zPrxFJ~59j$@9m{rHcHUB0(RieON@S z55fhoi`~6fh=2;Tde=~!IpFsaU48R6J_E)|N$yR*Ksw5RT2to!P}X#JJymbThutvK z!pP?#kvH|TC{1c@KMMn{q9_37F<;8r0(bGA*&_FlfIoVm7f>=07b4czz%1hra8Ep# z83G}vFBl{|o_KVc-v8Z)oz(zZD;>O|`HH5P{PJT!0Wo#Fkd?d7)KcZTU=Z-0-J_i0 z@^)_Q?ytoRy6S!Z_4gPn=CzWZ>Db&Y1g$h~HzT2w$DwwjqSL{N2`KFA2A46QYPUUI zFT+q`Y}(bvRsHs$iw*t{0axhwv6=y6?T(~c_m$PEzZ{)V7TyF0hsn-0I{fN3^=LX9 zmpXI!ACpIisKWfW>Y;`2SFjm~kX7B~C^onPT-a|qas1A<8p?k38wB8j<5GVA=H(3(66L>&t7w}Kv4wU;^^ zpXLY*v)W@>RmoIx=|jxrKcRd@E5!WN9fBmPuRR8|Ikb$u(o9JQlRGuGtQH1b{a|$0 z zC|Vto#(RkdSw2^@T3~{Ix5N3lc^+{dW{d=jA}lWnFt$CTTZ_R^>!->uzSf>Z4?*vK zDiB;Gu`g(ulNwa&s+y?w;Nh5L75=Gd&zZ-7g=t_!#q70lf4cLIl9l8BQZ^A#hc*6j zK?7$<%j=`XM}YIS0Ec%UzFpX%n4Z^%aRHaFlOB6;t%FaZ`N=aPg;Lug z^%X;!1PXB9duFgOOD+jby>(J}0ZGf@uH3lv2DRl|vE#;XCgpkbX*5<|F`p(PBJ*?K z@&4K=Qh}eHxh}F%6}02!kAM8aNxZurEd{tcK9zx&}oM} zFjY=HkrOeE)tzj-dfBc1(^WNdiebxg{=Rfd7H!NY2o!Jw2Y z%}hgs2bjF$l!)b+&wa>#^U8Wvj0qFMgC*>w-t(;KXs#KQC>dNGlpCHljaGqlBZp>B z4OEH(9=uYC?$iKU(I|3pqHyBlO8nW&9)&&D?4{RGhXhp^UC!)ZC(oMo-JJ9$me15r z6;UrtnI)1)ORNHp)c*Z30@MsFP0ayIna!I#L%$}?4tiqZ!{Nf7Gf7rpER z08*5&p0>IVGpmT%nXyC5K0{iXone5{iVIqpR2==Kh3il%57koC{6c?P5}rfaCJVg` z;yfYe`u)Z-^Pt;Q%47}bV=Q2ukn3sf4%E|~Ck*WjVD&A_++VEekcKfvVZM+MHkJqG zujM|KS|0s+nfSk)e|g+LnmnYO`s)SLVpxi^nK)g4;13-AZ0Sgs^xAnZ^R$edoFJJ@ zASj@5OX7GadVU%^GJd}<${U!<r!RN3){qa3(gT@a3#yOWy^UBFKo#(;N&pdx<-Dw@TH5AyxsVXCWm6^7+1yOl2S)s zRv|d+P#rHAsF>V*(BH|+ z%UAXM1A8U1blt2Dg7Vj~)`wCNdXe^vOt{p0DjDjC+m-8#W>z(ywp?im+LBvD_5Ab43?g%b~ zXsIJ+v#+2AsH+nTQ!!RRSqmzBL~Z*ZrKCLoOC`@{oy!CdtTF&!jBRsy@RAUb=zWSf z)6$eMmM1wl8R=fUHi$gVUZGHX>9bgD%hJN&c^}W0xr_RK8OK%(`Zvrxl4&fTzShI7 zOJV^DtaO`Bw?fS#!>>-NQna>q4~<`?M}A^knco%vdxFH(DByI?#~72Ei6#@73X)V@ zC&VVW)r&S~5L<0&mfv@MyBrFogb8wH@Z>MnjZW=pC-#nWwW;wPKn{t+dba9YtS*ds zLk#V=<4?sy@j_2Qrb6C5L_pwfIvnzSGbL=R>HOZ-^B@uH-A^kAEAiQxS#D&dk)HIW zUnRupfF%{4^rbIfw=U8DVyD7WR!iC00QNzbHBv42Tr5QDt#=TpWNoIsIAq1gJby3u#uAd3;HqjAOHL z`;*W1<0^bR%vfPC=($3L5&aTCuw+Q6GcUf>OgGu9C*80z4k8EM*iJO}q6%4F#%ywDs7`$qNj1{fpCbXFO% zc)bGBgLsm6^S`fI|8ul1IYDZ)n8tRwxITbaA^DReK**Bxib4O1qOwhX1#1$qzS&lKrb@AQdO`IjT|05=n(+A%Ny;;8?nVhtIg!^POtjYL+{x{#`sU zGt1G2Oumt!qsIw75b2vvOns{%Y-59kg-qRrbKtyxojODS>YSfTCLcM8V28-5nPuk(OY-V0HhW$`(AfO{bw=S zMW*2D$6LT%D2zJ0nyLlk3IeGoaHE1FAw4N+>Q7%w@!k38*?Oj+9ZgVP zwgn9F3|X&*M_;1c!4aO0mYJCs94BHPCd=Eqmd8(VjNG_R)qD;6bz|^b3b{+JmV39L z=IB#MG(>HI#6&tG`9~|6@{IVkoi_cKk0J^x&)seJvn-{hrJh%b0>r}pBnX8@gJ?#M zU2?cTUEXB;o^ycCCa*D`ep44JH)6iSo!DN>X7A?m8IM5i+Hk6cjM<3l&J5<)aWD!C zhl&pv^;~9i^eGLX|3t&1W)i-ZcraBv7aa5?hbbKwbuqn{F{ts)>QqJAvumL+vrT-c@_h^I@Kd{3?; z)j0NxlnEgL{0?i&SP&?J54cgK5E-zE(vVNF4J_TZ~yW-8oCeg z`<@t zW-fZ%reK@dzAE5D=9QC#r-?0AKw&g^e%U6RW!iMj$@!z0 zWxDnj@&Jj04EaS{9##+#{<+2m2NmBB#59&?AIG1rN`BAJI`znJVdvWF>QcX8-k{1* zi&5J=7^-Z7r?Z)hf4n6Tu^^lNCM^FWhi^Pp_L?z?*K?;#nXSyqOiD*HbT7J+837gTFs)Wd60R5<1LI_z5^uscEdp}XG2yQ}oMx6@%i7kLwq{oq z`m|!H>xR7UQ`p!ygUb&qeQ<`}*iCAcYm2*IsTeFD9oc~{^Crc_G9gGH0e?6OcJ1z3 zta@%?!1UZ8J>ZQpcF8|%X8RKxIHJP!_McwHOjg5zTKfm2FG>=`V>zV?^>X@N7$`LG zNfYZN1=AnjHP$(sTo!B1$}Z{6);@6nBHk3qX`APV7foa&RetTMy+}JQx9j?)2ehEM zbn&O?u=vkTAO!51O=P78Q>>8T;z~f(0%J6Pmt8CLk#WM4l<3lhyQ|POgQ@Wg_w$;s z&Q_=hXixfXM^qFKli!;_55}TrT|ccitiE4gK~L6Cmes&0%ygG z2OK^uFE!1$jtx2eEV&eCO3MY>TJ>nA9nh)#55U)Gw;rJDuEI-#I1m>CaLQn&0?{!i`fWXYFNrBmnvv)Dg_FKx&mwt58&6RyxFId zi6jclbz8%M=^$>j>23fPI`zw!FAmX*?Z-o2SuZXCRe9O60a5lTic$v*-s~I}K_H^R$px@QN2@~7El3~CV zY?6;F)YI1Hx%rDBM@-Etc&#-o2qfvDxqYQoKU`ogx(;B6)CW3o>Z405M?D zRx9)uy?^xhh>^YB4JrfXSe;(qmzwcl8&N_~G}QR(#rSY!OSv-10|$Fz;#eEErKRY8 zeV93!C|xq>wqr_hQxx^PW>?TIp8}yOyl#*1Wil{Ont7!FkDHh6@#HfQHCsfo=ZF#k zniBDcwBUgfU>F9c;`;VeH&iFJO;_QCRkEBKzHT6|i+hf4zxf`2$Tsn>bHa7_@3Hif z#%Y`en_|PC)+qb5?!q(*33xB+ck39PF)!db>GJ=h#&+84;~z72>RXXXYNa1J7%N>q z{3~>P_vBo7GCo?#nzVU%sZ(vClD@(N^*?#&I5{k(HV}RV?<7Km8)elJQv2JP^|!Og zJEoWO-!}Nh#1EGZ>jJ2PD1W~k;K}H0i7@MDh-EK9IJje(+VWA9_?W4@5!VnHP?O)c za|m@=o1^GgConA`>-69IkJA5GKEDo9bDZ&$EG@0K?XZX5_j1?%kJGc^ziW0|c{2tv zgnT^ozPi!usjg5Cqwz+EMMK|-E4=4_=|wuN)fkfTzh($t-sASY0~rpst=7n-WaJ7p z#ul{CXV>m_f2IcFACMMZ?IO$h?pE6mMiKSf8qyKkoyq3&xS7HZ_{GP1H8j|`qj{JR zb7IC2Ug|9@5t@!g3QAhzvMcmSfu8 z*`OUe|HfWd|A`zCIdC`)YTZ2)gdrfHU^Z7E=XcO0@&WE}XL$TDC+VAP3)HZD+az+3 zZEcKo-Dxe507<5|p11A&;z;sKH6{`_Qmnu-5j?KXGNTh8ha1%2@mjgq3HG(CCckc0 zCu}rrjt_RtPk5mmmA%@Syi=F1!(SA(;fbj(-{B)0R#e?o7VBY9oib%ssg3a-RreEI z)~eXAaoW7cJM)pLpkG(Mj;;k%I9zg;lb2_$ z4R>iHrE0~KhFc2Vz0RQ?^Hh(4ST`p8{t+ z9IW<$$?~CDJ{+*?`1qLbCKVOtxjb*XPmG2s9wtuLB^W1LLXOVV2T|ZwpjS;$K}@v| zt$%4`AKXfxBL7Cmhum`A+-*_@^iK)j< zXF0qwOPo+<>vg*b#G4aIKL__h%`KE&gx78$?eK|ql4DNlDs~2&Ob-JuZsp9wLDemUqfa^E4w(4 zpHDWvzQ7ooJ}H#vIl20g(CLZ7+i-5f``OD_F4?&v>MyTiU$`2U5wotF!_GwdCOwlHGwK3}BBGRke zXj?2=Mm-PGoTk1FvthIZ=h3O%M!L;k3RML!(~-PRnW5OpDvBmpnf#CAO>?@_ zJJz)Fm^DTm-fu$k@tN>|UNQ(Dtpc6zt=CZpto{`;jZn8#h?<$pH;oo-s6) zgXiHOs^DW<%`&8hTunyE{34H z9uHpKo0pV8BOxtXPfCJ6n%sW7BnwGbA~^N0X04>ENuO=q+}Ca@#U!>8`6NG%_X_yt z=C(PYQPIPEen+(cVbQH7FDTX1uuT(D6rgJ{e3ESt5Ky}+Du|6S$=LeH%;^b%=V`#M zbG9)}4tu)9@<01JaT?!&E_d@MI`c%@Mmzy0NICl9y74sy7B;`3$cKz%oQ62?gvIP` zvWTUmx17FO!RFt$Lg%idS9)W4x#e?xM%lTj8{6&1AI!yzp>d7qLsImSR&%^ShkT1N&Z%RWemCu_wbMF8mf7>Zk5oA)Hud`?|*MSswOUyxs`TFU}_b2c(ObqM2q|&*lV|+h!H4Kn9dv8QPkuRJev6z~xuzmjh z$4Q(#Vw1;bR`Iv02Z>0AkQk*?Kh6=p$K$ns#|b=#FgJhBq?rWNHSkq>=wcJmM5#>gZV3UUB^?19Id*s{-v#r$UQ)!~6>O}lrlxjY zkd*V^+oiqHr>l}4wm}X3RFckOBm8bdIe~PSmi#XJOF9dcio8}AnduEYF@zpEf^~tg zT{cIm;mgm;gj{-pb;g?`>O}XZ-7kH-LCW5;GjbctCJh21&BtN1M}nI-qQdFD`V9`4 zlIKIY)H~1hcF8XrZ!S6_lCdYWkx>(oyQLXDaM6hA>gHTOH6qB(_oLLCl12r+^;uHm zsM@@fWFZ{+##Kr3t=MyHt-0rh&MFLPaDhWWq&ga`^w0UnExI(|hSFrZPUfp-utj%f zLG_k8p4y~gAMK;z!p_Uj3qy|{*}H4PUY1=_ONFg`J5wLsFRab#tfC1kUx}y-oklGHgCAoZ`YWovLykCz(J`J|d>=ZSo?VfPW&f2NV~kY0$*urfsTj%{#EY!-b>+m1 zf>gkv-1C_8-zH~_TCKy%8-BZmE--fO1^I%8%Z4ZBU((4(726yBnHsgZB7jxLN1 z1)(3mqGs9VNRv)Va3|=s|Gi={)R)`&G{U9%10$71S7@JqIH(6JwDPtkc!8 zwKi)$oe_4N@sLfONpoj zpG72X+1@Fpb}RR%W%=YCd;gL^O2hl5PLP`MwG!p1?N3?R3-Nv9;iX?aTd$^K#&$c1 z(tSt;Emx5dhW^v74n8^~$k;adyQfGfwhBtLc|RkCA)w}8Aw2dCoSXfD=t~|rq>&_@ zRLH3zafGLlWmfCBZ^Q6Zu0M9x)@LcVBhNi0`o3ANF3|XJNZoJ&M8pX~ju!Ig-%f17 z3~}jej|`4J%gX?ZBMJk2P(CaSzyfCkJ^`0Fn zcb<@x0J459FI3n*avR^ zWwze-V5nYXcls1saA6UVKr1f@zl*DHEjWe8N+rdVXuS|(_LaG#x3#SCRRO*@S;&>^ z1Fo!78KrHUYL8} zGOmCUr+~Hf^G)ko=Jeua_P_n?!h%ClgBQA*d8uPw>s}PF#s604p}i_TKjD#al@MWNOX!uot4r~>Y|B`69+nkqcv z>}(X-x(-z`NAAj6_8cN6X9+e~JD0v}dH;nv%wN z%-RTM^oSo9O8mm7Fg1t02~KV2qunMnaG9=J<5XD<5%fLR{alT2{Zkl+BbitIS7}5h zPVrTI8}15xyNO3Es;?GfHxF;@k2m-ZEoN3oOz2|SDU9OduKTe|GR7PQ-YQzUru;-( zu0Fa)<1Ogorjb+rs)hSE88Hj`DM;c4O_Zls)VH4EElJ^r+o88Ug@O_&TIJcjM-5Ev zwANojWax@7N4sBf7?R2it9g<5MranSw-d5&P=3Dmj4i&4_wlG}Dhu?=wNdy-+(J_&OG8rle$G(uzaP`}!&U z;Ct0uBXkUm^Qmb6`V;;LLeAaO=YOY0zb{E@yojPA1~DAR)4wK)GX>F3(BR)vXpo7~ zE4;s>?Z*Al_H$OH@QBW01~rKPs^WFcXHkQu$`Kf3x8v#9(G>_u>dc04U||~nuj2s( zHx_&=&pTO|B8<`&x6JhcoeGZVZ;r?!FQimyyIFW{t3KYM-=J5(g-%7vzP1G?Gu+c= zD-@%_$H@_u?Wu5n81-_}UEb35+pbl>_d+h^SMjnQHNj~v$h?kkxbA2>-BkeG$N;Wv7 zh4v)t8vL0Z^jzAkSwR5n5$w0^($jnT3H;HIqdsm~{iMYj#!%ynjD5+9Wsk)6AW11x@cRpSsUa~JN_H~GbN+Q{s0W7wLtrA>py=66CT909`CZBg+M2pewOlS zPnPrEOB}~acLSG{u_xZR$<|syQqp2Nx_(S>M@-WgeOd137k$2cV}-y;WZq2P9eRz! zY%wFIf`xi(T-X6o%gB!p=rO90&p;)Ybx-9UL+(q)=!~2b{Qh?5dLWvgI{}$OUbKle$M>rAX) zQu_1`TW7mESSDCao~p9=-V}c?#NM)wuytG$7qPDazfmP@@8F*=_X>5-lc}=ZPxgbW zFaduPXhB65xw<2i9D8dwjAR=%Wblj-4TDW&{Zh;)~Ek6SoE=t{_UvyUN!1j zqm%j`jM;Ksz~z$pGjL+#{awXJ4y))ZCj0Ay&&kKT6GIoyuAFcIIw%V+#wl+H3K{uG zG4~#`=PT%pt?-W^^T0>tESwIx<|doCE4ZnB3Od73HS|~_OB%Cb>F{@B>ccu&l4i5p z^&RjUT6kye8%y;pG1+U zBEQ*zRT`VO@aZwJ<;=K$)`D=C=kR7dJ-P2=lxR1T?IKZ2KDXV)iZG<6vFPs)|A*!X zD@W8RfwkUP~~o3ARkwUKP={^j+>5UW-^dByMB2D0RD z(|2`>$>+_7Sxhc(D3+!M9>(RQn7)OWasnA!jO@E2id@R zj0B#>Mn1ONPnqhn-;-!BCg2|_T1rVCS^cGlDQWG|AMmH8mP*MC)WeP6P223AO%v>G z2AK??{D+7|X-#80($>%_k=&n-f)dY#~5_eoV7l~G|w6`=<$OHl2;tQI~5mUWnk zaonS$7Y1D^)hL5W>hI1%#YTbhYH+pPr{;L6;PR+zYp_kjhIie`iEb2kfMg0`Kox@7 zq3WVE@{0c_nES!0p}rOhwHqJe)Ghrygg+^kw98jCx;w3Iq3kv8HrMU^I8|>TJ8-*+ zq3SY`lowgVreZWVBx}?eSAHBbs4K?|jz`W9@v=>>uJWT6S8W8aj!e$^XuT9wKAzWZ zN8epp>)oKOYR_b;B`sK&U*`#pdJd<#*%>)#LeJX~$cPmPGJ#smhPoNLXhrM zI+jqnmz3^?Z}vNf`;Ws}_TD=)?~~CYJ~p=KTFh;F!@E(=BPdBOGZHP1oGSa|1vShX zY%r0EzP_cO5t^sEGxNNoPIR(*(%;&|V4`VT!EUcM_^HbW))`eKf9i&cN8cLBMYtY> zS8EYpUDj6Y^6lyzvHfwb+&0AET|Zi{lDWW<^@Do8=FJ$u6%RNu%)HoU5 zZas(;FDC;r*r2OVM#pL(7Do;cm3aFN?{wAM1KIYf=@+ABH)fDMR@wZ6 zXgM-zChX6B;G5rWvkSy#kJhPjD_*98SgKUCJ2^I{6M6bWR`qle9}I_X2<~jcqc-q) z6e547v702j2~-=)ASpJJN509tzjt1a;dgv5T*=!T?_e}^PhTm9F@Ju7M=5Eg{#Di! zPlIb+Ng5_b%-&PqmdA8nEB@n%n5!g8Nib)cf%Bu?>*(QLv|73n`-(MO#M=VdmOMjkHICq!*%A%8kLECGkINEJv=8mpyh zjN@{B7I>H0xg~h1RCKo0jsS?e=D6&_v-$-U(ZT1+__hf-y{A3+dAG7?B!4{&h1wt1 z8?6uYw(bo=z*Or!-LiBZ2-U>v{%Xp{)?E{yu#_NW+_c2(EYkOz+93NKjEF|LLUwK#%BWD*roYD&IYBwGxfLur}4&`ub`o z6L+o8fP7gPrjaqPhtecP^u@f&bs_uv&c<*6{|oIxX&bA<-yaazuc$ zzx!3aE3xzS&8!!s+gXf^jxpmB=Qzp8aaGkn5a}KRYKk)|A1sg3KK~iq|mHPlV6&NP=#_Z)uCTpMDap~pYmB$ z85w<1`>gU1U$7caG@>$gW4e&MY9cp4Cy;_{PI68iP=9hs7@-@WJj)q=?MQyj8_>Q_6Nk&Gzz zRWz$Phjdr#?GwLycG7>l=(ElLsunZ1_W9_HVwN|)ZobN(f`OPG$&pwY z@)=PQ9i@JK+)SzUGSRF(EY)(Qz_%Y)R5{0D^JD#;>$#ABI~RG%m(;tX z$%0Oowgg`K)R#6%5=VtG1$VO2qo}2C>_f)hA&#g&TLZzFy4?Oi^-`=dX9?8R`kk_Ima4P@e*?nq*cWn8~f%F0~FE{htNAbH>yw?=a zV}7g0)^Cszd%WIGTY&F(Q_4SlSbir0M%&iTdPBVEOgz73EQPy;-+Q8JdD}u>26J=)=L=>-qD- zXI9%`>Z0aEqQy-J?{Loyb|F4TCPj3ag8!LRgn;L&e^*Om*z53+a!b~8Kko%uju2T6 zt=-ttcFIA=WthR;L0nLeJ$W}HtEE7~pl0QXcZA<-P6Jnu^pDOJ#b1#XNN;{ShLs^d z9qGa!#mIT~0Rth&+iu6+oW_P=LhLmSU(nuI0_XNj_Vuuppi@r$E78sm?I%Rf*|b$X zGfIBC?`k~&j5Qiqb1M!!0*VswCo&VquYBl-c@nE$d*ZlN-T{k(>KAQ{1aeM=CUmjD zan)ZAb=c3gpdTtBx|$A4t=_{K0s=(Fz~v>HH2(>`v%CWRD4bt1Q@%JrkEuGVux_-JP*N%!N1}b2g#y6Mb(Yyx@KxsK?89J5m=VB9 z|DNjI&o1)dTuZ&^{(uyu-EVyRAbD|SA(-Fv6za>L(~*fzMn;d3k?km|eeBc!XU7^> zb3tMwDFd(*@f9+ohTK7D4c9t1$wiiw6}&WW8?O@U*&Mu{?ZSz+E>Uzu07alI$>tg%m)j8!S~PJIJ{!pg_ z?({19M^`}OWxh?|^3cI6WTnf~Q?Yw(&*+zRow@NGC-sS)${5wj*9bmmGA?B&7Gx%kuxZ^D8o8qjF%Dv+7&h>u+Jp2KmC3Od{fNFB{@nQM#HZ%6q+4g(5 zLkhk?gN)67xZ_$J;PjUn4+# zc_0D<779W(XWODt{d>$3oxiV7x4H#6jln|D!$!3N0{HEg+p|OtTN8fhHJpG(KP4f0 zbbNGVZO{q*_tGVQ{`8-diNC&*=j_CMrxVX>^{XqEhM-3#UW;>@f`MwPX2voeN35|^ z2^%G}!P)7Qj3uePk!@pwu1{_}oJF@@U7kA%yr`?gxJV(3hKjR5ujb z20otNB)ti`VQ?2ZsyVctS>Le=8!yNyr9OVY)S#}ADol44o$r}0+ zP(NlX-CeTJU$-=5t0j7~zeXn^fjZ4L&rx5b|QHv9XH7FI~SuV4-@q+U)B*GK2|B_Xo=TW#Ga7H|DH5i`E0 zDym4*bkJmD(SXh4i@aLn1Sz=)3AI3c&9HA` zBGFINLioy3Du&*VI!(LZqollivN@dg3nU+nPPbq1AApEFU|a43DK3Ld64&w^jVp+V z0so`~ShdQ(?*wF!U!Y(F|M^61TH=*g{L~Idr_l2_A`~ATdK^xtsdcRuu_kR_ifu5- z0PYxFrL4h^El7$d1YwIg zq*!6YL!~5dGIjZ5px2<~>M*KdO+}&;_KWH}%SnXv{G{aX$F&l39_O=IGk(TjMY4r? z!q0KrhyQ7_^kuhMlCo~qYqX}+ET+?EVOhQ6sifDsd(e1mIPgC4==hU-*JLb1O9{ujOS%2)@sINWd2_NUJh9aJjEi7VsL#Mp5pYH z2~yw0QTckB0LN)O-Jw@ah>w{>ejUJeaj`~C>6P~$wmt5SbF)yGFRGB4H+dfC>M%L+#II;Tj02wUr53kPS3PDt3L(|Pf~HPa<0x; z?`cEIU~;||zicu>ER!{4-A33m@QB?S(_8FLOo*iZO`b?}fM_0;2Qjl=Z0!7IfuqRq ziVBYA=4P+OT|>0al@%J0entJ!atj1ZMmtE8eeQT++HAKUS!K&5wJm7Y5XAZ6qw%vp z`mGp*=mDKBqVc2|PO7rg=8L4ZN|-#?1fGI9W`B%(=3~MLkGiJWwhsMIW)i2bE?kL^ zZ*WdYD2Cp#cn4*BkJw?HW+*{<(rX1hHHpoxjSXKb@^xMwEcB>C0{pK_T&-={FhD_3 zVKL|aN{ypLNVde!N~z9X4>78RsiB~G9~<-xurnWv#^y_xto`~R;1>MH%N_rIBeZe` zFbM85F|v==p)VGr8ERg=v_?uMZ5ySOd=k$8jKs;88xku%2erT&w zCpLFz&Dwm_!v;MKuDQAfV8h9BgTq#Kg-&dVt+qvkJr5_2NdAjqfXM`M>Oa02p)u%` z6YaC6Qv}P@y9%GAKF%h^z>OD|nTq@^|2}?G8%z8UnUR>w8o+pm{mEy}wU4^HXaus# zbt~I#mntSRHw6lAZQYn4S#QWD=`}k*j`oihCr5kx4T$dn!U`zN-2y=goAvV!W@$?wjjJ>tSH>{QPlXOX5IH(F3d!;o=nCi z&*O6& zWEC^M$H?ja=-rKm%qaXUS^7Pby4pjql-PISLhU$-%ir{b6}3z4s*laZqL*%$S+!Y5 z5;ZIqROyTZy0|;9eGgVH-844bszD59{DX*}f;)FC>y{w?9Tt;chD^9pug*Bq}(s zNDT8cTch71h{e^h&KzT+{|iiYfNkh=*-~r^hSHj_*&Mk!B5gsbM=!^b1k=P_=%M)k zM9l`x{C4%0*FbJqNsAI_%{982NP+XHMT8m5vaYVY#D-q90E=A#g@a}T@h|x2yU&e( zZ_-D-^y27OGbUD}Es%v8lqCz<)DVs(eYomIP-8E<7&~5|@cI6XeL-vk1>QObzn=JA z)MQ&YIsJUV^{3OOpLeREC#h8-_gCw9Ki8$1cGVTM{g#CJYw^; z@THvj-Eu&Q?RK-4F9J=DKi{uil~WvUhtGQ}1y+|Cqp8pq4(;LbT!wmHq13WFbd|9` zR}DrIa1~o-eQgjuc%SPL7NM#BewPPp$40*YDAMT|KjkNF+)6D_#%yu94@Ar=x$%W; zQ!2YIeo{~A6-8;IXHLWy)C%_^&6<_W;ns3PV$D?gNWdD$;9NdMY>2;m&>8iXX%8zs zH-R!TVUN62+=&x8Ks$JQ7&me2CgZyw4I!e^^gs-g+}ZR4gnwj53NO_Q@?imwHlm~E zD$X!7Q`2>&!`VT=hl?wm;XA4DPS^X1U-_DsL~0XUR*XJ0-xs#HWzR2j-trGEQgu5uUbdt z4<}I;LX0hs-&fnaA6%v)l-oTfd3(O#a-|QNXt-9hJ>JU;NkSKymG%D^Fm1>Rn|Zgu z-po~a*|k9E@cFE{t5>w~zqRZB!9Zpv6pSyvC3_NpoXB_NlCPaFQiQ$T*4E~Cl8~Kw zBI7A*wr zt8KY3`8OMlc2uv5u$!HZxk~WK@r^||lJ^N-6(8WR-i0B5$-Ndk6F#QsI|r%|ufrb2 znPphDL@_ac->-;9c6VjajR_h(va-E#$ZG4-MKVcgjx=- zUUz1Ti)9>z=J{N(k*Oz7g!R~Y%_+;q#FX|ouU?k;OjA_-wq_zc9lBl&lE!0?H5G@q zj;TjIWRcIrY`C+gTT9NcGM#Aerx)Lxq-AYKKf9!4^7uDUYji(XI$J>ycs7-F=6~H0 zmrEn1ph3%pbTA`0er{{+JHK0IqxvKQ^7ufd1$|Qe`c(oVEdxtOW9oH4gNX+;)9=AA z!hcUhg2A&KkDZ{xYo3a{aAWP%x_y12^wwvVLTvd_e5%uFqg}xyw$G+zO)7nKQMJ`U zg{)vMgB0MdTuFtJLnom)r!(H>SZ2(TvK}~28#|{!gt=yu;T}2HX;b@ zXu39EO#uJtJUW`&gb*5B`0a7rzGsJd+~iq7|D4CGUgEup2`12|JrDQ$`@jY{DHaQS zMlrqDdS`3!Le`J!HQRbNZyJP+BR`lSaT-B$o5^x@(QQ_YB$v~MfKQaC{*5(bQo z(!EiYYK&w=b$zm-vmIAay0-%(n%Y(_ph6;~UECPcPHp>T5(RU5ptzH$;Ls44uJltu z57=*fYZ6^TsFjr0KgRFI?r5gt%S4M@zjci_c-Qs#&%M3i33L5vmPDpV$#X6D}OK|rNaD)$>_QweS*v45l#4g*14f>yUpGWSgKb=XU z){9AUX*A`;T3ytb{4%xtQC3$uRD`z#?XR#x4^CI)WPMBL`?ZEcUw&)OJE_H-&hPvK zRXuEtkqvB~RvWF)>nSN#W0>$<59E0k`5!hMHDb z>s!$}|E~eu*^b9R+z4=$#Od-Z&G$akQC2fQ%Y(3{+?f)TV;v!;1FQVcm4Zws%U$>$KMD$}K|!QL72Z zDfQsflS(riTNkV$Bm*Bgp*UstH5%*YJ#t)EH__kK7s#aZZ?>P7S7o_hl9Q0EwBH{1 zj&9k4lM+Y{*eb6XT?0wJCLo4pa$?CpcZ_~9hq3Pkef$geT8r_k_V{;IF@}s&Ydf0S zj+nurPqXg6h#0O~q5@s|)8<2Fia%l(cwsw=sOZ$P9wi%2`sg;#X@leu^e`poPKN4o zzi4@$A1*^m*>V)ImC90)Dp3s-fUvg954Fa_L}cWBg6-iY;AZ=g;`kZFWA!iJsyXCeDPDpKT8A>Vo?5MteIf?B^By*W zIMixg;=H!}wetm&46pCv0ai0a=F+^!>Eus+EQT0-XG%Ld)ELM!24pOAbTe3&TwH~a z1IMGJU85Hf;+5FJufE@ZCewgxMamoaXHap^D^x=rYc|z?e`7jPWR0s7Wjphy%A+;` zdv+}qCte>Xy$-2 z#xrcr)TM5T>U0srH&*ss<-m-6V;Wpg2#+Ry~87{x0R@vl>b7X?EZB zIvKbbbQ!l!Oi&gMhg+|~oaO|=81b=Djn1IlL{T%MetmU=g=r@Y6K=`r2zv3J>IoH) zUVb$%-6BeDK5zCdUX|$W)|9P(MyTt(9xIk;Pbc0mqmyyWqnb7fQSJ*S__24M>yw$s z{A6}!^b6uw`Zk=<5m;oHf{zAbm19DiT z8t*6U_PE?Rn9mQjkrixr2p`@>THGiEtKlc&rl&3(P8A;YefsjVPRb4*! zM+Bk2Jbj$IzUFMi2A3$jF7n>Bx$PXQ#qIo zA~gOOp9yoiz7fLit68``o$Lm zKl#TMZ)5SvGn>fr4GoP%LSs2%Z$#k=BGoJQebR_;ReWwc9}dKC65TMpB#AQ-Pb zJq18=Y{oTQpa77~*(x(MquaUZMo`VTy}kY2H!1~7#{Buj*W6Z?edAmwd$X!63{$H> zIi6?h96rgq+Vk0Xd3*s zQTx`9cBY#1IkW;pzW3yIf2HiV5}F#iOH7AK=NK2CJdat;_p&(cnU!41Pol0)!6>|@ z6niR1=gVThMq;TY9K@Hh0-^_b^hZ=}9 z9!@t-F3LiNhzie~F; zK^=y|!(4oEGe7VxPqCl)UbV!;IQOZ`+Sp=qL#nm8`#5tS@4D{S?TC3*_*l_@(F8+x z#uP74C{?Id!R)(ZhpXhXCsaXa>su>;yhA;76us=o>Ht?EW+~;$v%h5i-aj@e)Ue&F zg#{@_Pu+0c#$Dp$b?ZAtN5jE3;DJEOpKtjD{yfNqakbG?W#c1+A?1H=;rpI4The>^ zckvJ~kDFlIg>?oXEqKAA?|O{xP{14KFT`;zB#q^s6C$j7ux=G!&3_g;eAmBcLRS+O zNB@gT`ktyODxH%FTA2^-(@&gzA)bZD#IJoYchab-E5m|=8V96iS^vTH*>Nrem>14A zA_8)OVx7M35ZZ?$#e;JmH)a%}`4<`4+3f!4Q$dM=?_N=lxrZkPmhVr@;jh=ecrZQc za9kW+?P35>?@5V3!vTKu9U3V z%fm{@qn(s-3l)IE$Ns#;maTh*e05J>$YWzG{S8aYom;o?&=4OlZT>0jhm~7`@^4Z~ z%8aS4&qSOYy}dHddlczfm~N1*4@N*7wqR;~(-U+nIFn8DoQKhBsZfn7*65+|8NJ{=vl-~{iO9*_xV?C;Ghecu-=Z*P%@VlI zh@q4v2X>yY-oUdLh{z|H*;06>(T9~Hx6?B-{h;PD)~5X=?5yrJmTpen$Jd@UjJfq! zcT<1SYz#i(8wh+-`#Sc!^&@HXiHmiB)^hJYQIr^P-T=1A85S)NKeW+!y_r$wuw@zM zG|`7YL4AT}O@$`Y4eSWreYxwbiQfri#ER?uUgM$t8&2G67?~@?UObdnzW)*@^=XjKnq1 z%+Lh=-HCzy(9%g%9eY#Z8nS(FW&<|Qvt);G)S2mLTfIuq=a>Hb0Emo0-5#jPC^L8j zo8)wPcHd@@8O1)i>G4`g7K%|%WF(U(#aaM+n0KE=F;}|F$(ndO=~zUocvpT4TK_DE zM5C=h_NRH>>f|Bd&d~RNH2mCltdou5__4=V8-1Hx$#tiBc5jDttNn-A7nSDQIVI@P zPT3S!K655sH*R0(q-b+XHq(XH=mlryZ2zD)`|qK_eUz7P4L{cfzZ)&lTRlmHzGv?A z5S>VtR(JD3WJo9E3q^`za4~03N!H%U6Q%jij5x!fvVy(%Ey8Qc_|PfUeNh}L)BnVw zh+4!Q8TP`O2oD?E>1ag~mqPG0z?n-lFo&u^hrw@CZqSz{2Ubz0EWWzGS7$V1(v+Ht z2R?j?C#v(U>yjOHC1KGtQZIvTM$SunkWhTQERzHtYJb{ifZ&2mc-R*_1_^$(JE1y( zwDKtiF70C^Z|P*jUyBw{)jv$X)6`oU+Tu+H2c%*@JC3ndJ1QAS|Bb6iygqTy4Rf%b zbhVA=F_v*nyFff9P3-MD%> z9ye`bl58x&_tlwgP#txQcrAMsnfk4Sn+rmlR=4vp+E|FHh-189rTFrInWdYEa6^Wm z&T6VFyVwyMZQJ1w2^m$^jdVu@F{Ljq#cI91^O9RGUCxkchz#>jij<*g=xUW%5Ky-| zdj*R?M7zlahF@6!%dBcmh@QV~bUl5) zc{R+z`#!+LM`ZbW!)sRvYpeiDl;%b44PjBJdj4%#*q!J}(ucI%`L`-(CH^W3M2J4} z5ALRxoWW8lhD{{P7-&i_HI%ImoeJJWC7?Pu{I+WDkV9yztc+cLxBxkNL+qlU6nK*0 zogT15?@m{4m6lboG>3{CZLd}c`%4QI=k&ici}d|EeE1A=Q%Q^Dw2{|}}!CmP6T z>xO5oFM$9`zz&hYMcVC0A)HQ+_m{*$LjR*ZRKMgYyGEkv3f^aKi3yS+exUNlwM9W+ zwqY+4dCT*Dhdp3Fv30~7N13aLqkO0hb= ziz}eRZ$CRNo^iFytViu=ot>qyJbj=Q_gs8N)a56mnA+ieN@j%2pr`ZEQ?#e+0eL@U zsZb5T{!QRpu1^Y|Z#_Qq2EMK8sXt^$Y6?7Q6m3Y-lUIK#*Lq~W@?p+2=Eo*m=VYpEq3i8`tZ|ZU-vU$V#E)3!O)2!);i#bS@&dv^d%l?*0iFR zvVRT!N9FgZ_2?b+*TvY|u@Vo0k3h3M0HZPqWWd|n z;CxYZMlwP|L4_CS(Ru+z;B(_t%wN^8jt%PgUNgkwW-!&D%x=DoLNfWHNB;evAGjpC z?{#ZbImGPcMXY|j)bs&p#dY_&%28cL{YfO+#c^G$!iT2%o2X5$?4}!YaI&Kh*FO%} zV16q-V?3YxG#G!_8u!+ceDz6R=)@h5L^m=Q@TqyTTJebf9Tpbvps^LQ6G_i+D7Mng zzSV4P6m&HSesTnuq4;4TA~q)#$&Tv<^N;)9`X?dJM0%sGISEPDB0fw14qPr8-?-$oT1-O_qHg#D<&Znhgu{0IT`tg2n?m#NH@p^Ax?L4MA^6RkvoN>knc8aP{O`B-%F z=Jm&CTE$>@DbEc*!Q-SP2>(Bx+W&sqe+0~kg8Q|TS0JEZl+tsdYi4GqHfDU$z!$;v z1s+{3O%4}dY+O`VZWaE7sQB&HH&5MXxCkQ|Z@$ENPiTwUKjm|;B^$NbczM>nDpb9& zfA>9umX(U5qF8Q=LfmN}9@EHXS{*LU$)FPImlnBUiD@vlL;^bzGl0%X$)L}vT@pvEregsFf z>hD{S;hBU3+i1Vnm1^E%aXI8vVSQ3?rwaR{=TzWKco6h9)d;kUG=bn+A)mADNVg>M zgXUchI7Y1`uy~evF)3v)C#DvkR}uV;ad86K0I%sws%93x75#`MUkxPY4^|%ti||^H zlZ78bW?Q{^!*JVvCTWVj_X7rnIBFeU{+`!7E4&O$9F{TkUSDVl(~nf&T}XNA#~vpt z@qN!9nrq%eAWnEsd4pLEh^GBZd6H^8;ofUFIn-0c{}-X0t>=RDy#E5EoGxuLAfV;`T_gR zL|93Pq=(}MNDFn>BsFF~OJTuKTSI3jgIF_JT<4{^>xI^R($6(JPk?s~X>#mmR{XT* zs7IsSA_dhFzv{aD!twf3WxYAzXA-#{DY63W!Q)98yT0oK-KhQnHGNz?zLc?b{L(nV z>dAcyTOqGX1ky53qZPx5%Hd+d2j8HsW4pzkAG^$fp@z9T5IH^f4qJtiR)Tzn4C=o_ zo6%N9NC-XHVvs6UK0ZRa?A+`|1!ok1k-Q!(5O`{=od4)alpdZS9C%_E?B{T?2$#HF z4Fa{Bnm)^u0rPl)wjCvX|NHY+80BH=l=y@l@GTy@6DCqg>xaxg12Xe8A z@+FHQMZq&OhTc#c#|Wo~(u&psTh0%e!eL8KvsW0uc+FWlf1n39Ht6;=>U`uj%xiN6 zy_n4ow!g)(-Us~4arIZD_99-^vebud*33%p6UsMC$>Nz#u`fb+$-y&_X=;n<_ak)G zD>;MebG=~oD*~vpnR6Kn$-jZ}pj{vD{27*$N^euW&OZ^$0pX|X=PN!Da%29<(Z!5s zW5*a~p=U>ob!sYX)>3h`Zn!ZaLY{^Y5qj)}1rmp5JTYP4xxSmq$D7I&zSI;LTs#Ug zH{d1^b%!z(y*L?q2TNnMu0DS3?&B(*t}5i}p>)MR(e5IqF0VBqA$;UUiC>l`Cx3DJ zUn`1Vb>UTm5@irh=qLVo4Lt>YFRk09`W1R&f+9PHqD=2Gx6}Koyzr+dQZ4CjB7%!M zzd@kZSx1IV4c=paPQ=b``dIO{Cz+eDkYje^TrvN-kf|weUMkQ6(={-^xeDj$yH6o* z)~Zw#iMCsP(O6n7rC4Nt>hS4~%hO(b@UIp0GTax@R5HOxv@tvGjg7)84*4cn*y6?$ zB}@x!KbO>b@+nF8vo*^5Z+N(h$A*TWZx8Jse&o?(7<um)(KP zX&yKFr%mzlnvPf{Q6V7`j1<^j!OxBCBn>jVMVGf=94iPC5A^3u;yH60rL`Bb=Kr&X znJ2e#Qb{_04&{wrPJtzzEx>HbOhXNrx%eejg}vwJp9y@oCD2fYX^Vb=RMuja-2QHS zcUT)+14M`77ge!s8YwzN@NA7*IS;j1ni0lC0Ue{BNxmq%3K2fhQ1Jr1HB)z+QU#VZ zA!|!sDbWtT4Y;Q_H;ifxG>B}1H2ZW9yu0hXva-nY-Ra4{e>KlP2`q-CkiSLsi=&_= z5(|I5gmi!PLy^cW17~$ri7RN#TwbGyc5g_hsMy#y<#G(i;GIo16S5$LC4L9f;`n3K zaCdGzDf#?y>F93>Kox)oU%TOZG!S7H5V|$Iy@J&nwqJ&2!Nog3LI(I`!Yn0PxIgF~ znkZ)nd^oMwz~RMs|HNp!<Kmb7?{lRVJR{Azp7K@i|u`3GVEmon3Z3-b1e!nk&E!cnfN! zLrqo$alrx$flyV?mi%Re9Sa_U3J6d>t5+oc;U`KVBU72oE5+6y`L?Y!SYoU&^cOA2 zWX~SgFvp}PKYUdzRD;)A!nnhl9fpCd3uR zjc18E;MU0<%3+pJp!&x0I1cr*=ggHltJAqolSEN3|Tljo@A5|ruL@@Awahsw|s2L|KZFrJ&!fH%} zu;_BnbN>gN-Fz8}1 zXJgWLeg1c7K!cdq(cwS1pUnvmasa&!BLM$_f|Q8e>e;fcku#c;U_@!3C@X9q7y?&} zkrc&M5dn^6%-7sF$T$1#W(Ej!EF*6-v5SIcHxZ&e$vm!zP+uGoFyV*$rupP)7LjW@ zTy6aT6M!o_S0C^1m>-U_cE5(Y0bRD=+Th>JDiGVMfji{917cBrwRntY`1d2Vg2)Wu z(p5WC|A47$hETES^@P^g&{KJqN4`6d3sJR zF2ZMvD^R;Wcyz=Ca(zsI0jqs5!?dadf;B^JK9CjIe`7;D7Hi~ zTW&l9oi28l)a}VzRbfq{B0gHVf>ZF{uB4oPe2pFe^X_@dd8Bxu&W;d#<0xM%Q6YuJN8?cAWR0~Urvg+uQN3!Dtq+zUJ z;jq{|hq{8-zTHnaKks$A*E;L)Mgz0jfU+{_0zG1O9>4Tw=1y^MVknTSGt9*z6Yw!`c zhdvXx83K-$z)tP-{NnjaQSB($Ywd zelYUux#{*^P>TLmaF6`E9COoAHK&TpIhkn9Sf59i^7;l!7L$3|Bpo2>`NB~Unvj<6bOBmCoB!<|`YzwXo6jn}M{EsicmME3 z!^iv$E5I2RT(;jX9!@QOKus@`h`dkHwV)xNOd=S0tzL(Oj?ANa{sVKtbNQ3HgZepQ zp*bj%)(72=nf?#gnZ5^2Jychnoljse*ps*2U08u9POiVcFhuePJi?XE=hduF}ABn z-rY#X)KQX=J#)|W$#6`V z1qE9r%S5sDRo=j@@awmp2WzqO_a{4ID%7ydB;K@X(tKKqwYaQ%JCU=6+Dq^xN;c zpX8nH)ARM%$IL>G0@VUad4HZSCD+c<=#)^hU#@C$Z622QD?xb5KL4i?!F|i8@dk&W za4BfZ8~7~_ncFXJmmjHysy_;M+E^k^m^}TeMrWr}```1z|%7 zT`bD-4`Uk9&(HTh9*0X}8y+JgBYgb)&LAAnsh8C1D1Ev$6nJeuEY@e{jE#>=(r}5P z<>@-rNPBtY{gIv~M3PUa{qdB)csSL1olM>0Ot5`v`0w~uzV!n;O0GakbR@-!cHO8ActXCE~SS;h_P;Hr2N6*_^uQOyRzgUt=2A>Ok$ zy%n>c)vlr1?_C-UDEfY(YaCZY8aqxB@(^pp)2dhpZ>e%HpaNWJC)Rxed?j)gZm8-3 zrahW+lom|Ryh#1p=Yp==W3(RobDGCD>l*(tD7Pwae zOXn5oLoI)+4wht!sy_tr;g8hsDwO=&@YtYfBiTM{oD&rK6uzLdI$mUTJfew z_SJ7DAilo}V~$1B7~XXEXm{GtVG@Y4D#p)y6G1MAq8by5O|gtX*_oI?tq=ma(jGji zxnlO2mqNGu5I2;t#;25L6UbuUD}Sp~p~qIE(z0%NM@@}jAid#w0+K6OH~CII9Sw%m zZ^KCC%}JHbo2(QquK%19$}GLoq(Mh>2Ud8_M^oO|y?x>n)8@~)o!diAXT#u*E_5-sZ&<5y@$%kikPDGi{1lCoH0{a>C@7v} zy{ebr8)|YfOjiRTx4%)s`mKNwoiDd@ibO80U#d=RyHS}yKp^lvea_)xONxF)fe~%t zIyl1m3UQErfp1ZF!0zz7`mSIXXx}R+$3{?tpY{yJygOSt$$iuE=6&5{g(zA{*lse* z;Qwb`5KZhl#NGgZ}TdbnNgGF+f{_;3(;oA2bw4pT?FO zO{lVcw|v@UykME>H@zs#T+l_c7yb0tlI6%%Y=rq|iH`MHMJ^_|m$IGKE-0 zPcIzKR1G4prrTDO=}GBUh5EWT+(;dE9v{@L!vQ)T&v?rgrj*#xj}b^ zZ<>zK_64}i>RK=AD*vBZ;73>#Unf7m%-zb4_U|UQX;8n=zh!06>twXE7-Go?Y~?2;g;w#1VqXx4lE9G2Zxe zx9_Y|Pzz<*U;t#iHl7VUm_o1E;!du&jz)pIBrg-6u2&18wV~QBx_=_7-<12(#qDn* zlzt-nOR7lA)&=LN4hK_igMw{d`eWWpetl;M24uUU*zbDUrs!`)+1CxE8*P>kt5o@4 za*D>Bj`1^(SbEb<*~-j>2n<*#RHSD~7laW${Dyha41cpZU2)-BDg zlR?=P!>BI@o4u+PDBaM0-uhna-eA~FB1)$^fk9)cOZ8-WQ8-b`;P+(pRTl# zdaxDPd|M0t&ZV1HN}yWhIO|XDbN^IGV3~>EeV~bHgpDUgtng|II55E#j_jW7A;6tp zOQLx512u8^!*t=we1kocm2bJx!sq~&E~)Zn1oX8*LhT!*U?kz?W(#s~o7fye*PmuX zx&L-=YKjV2H&b6ZwA|zMOan(5Jg~SD0CV7p?Im{fiuZpUnFQRt_(Nk` zB<4xo5S_%>s%Pdu0o+FNPE$%oOQQn*lo+-}e(KV3jICU3Rk>vEl!6Su)O9E$ziP$i z6lj74vgQi{qjmFggO>WMWh5k|0=0xg=OgyN!OsiGYIK+b9K3LNOs%6e!_@{sjU7}X zl1S_N`eE(nP`h%JKr>?`i*wbtxa`FrpV+`+sDMnSwCTI8{vSza8P!(TZQ&Oy?oM%v zySux)ySo%Au0@KwLvScipg?hVC&5dhxKrHy9=^*jAS8^DbF%kdYt8vgoWBwOG4>!N z`SMmD+8pdM_xLT*7XEJWG#WCT)*tQZbcHdlDMOky&P}{b6b%dm7`It7IHmj!SZrK5 zB{V=It~+>%1@O*DBlT$mgj-wx*4ikVz`v&<6u^%6u=KIz=Vw_mfJjExW`P;iEV^ZC zS}5>ztt})9D?wpoCOJW_Xsfh7{fih_;b1bEsEKaduouWf0AbDyP8HinB7zCC4ijxb z^x}HD zS^XlLBa8nf#ndZ_6z)GANF20!LHqG%uoxQ^l|tdK&)rtoGZ0AczQ`RvKsW5G5V@h3C>r11bLa1VT&QcX7(#jo@sFZ+CYSdmOAoq?8tjD-%ar@d!2JNk@O!y z0sVdbBzXwiH#!eHqswkg2R(!5CxgyT%Qno<_`08e6|ahuzl9zVw3KHI=!w=5(LOZn;y zYNFxDp;wVggS!h0%gB)H5L8@rgc`4!8q7YkurSo~veI*r8T^nLa8qr%`^ORRz{q?g zBir{Vcp`q6Krm)SHQK7Kzt-Xj3Cf2O(ZTKz%Trd6-GyUD^oY$|&@77{XyAEORSe}s z#LTwUB66{NiQNSklyP)D5OZAj>u4Z()}TSDezO?s3JI;}0+a%#J?6OY1A=&T61s+% zGeE2^$V*nn?v&E3P~sEeVXpyf({AY&e960~%(Ci80MN$$wTcCp3`7?_5&HKMTDzTD z64(&bP5)l6&Jy`V)O_M*clBHSx|g`(_pmVhQrdu)KV_~1 zcHaCg7ef*?!NCI6yj`4D^%3%t?J5tMCjjpw9sbx()K$s5V|udnx7=<0K?XTa-Rid{ zY~S{?VyftGG~4pZmf3}-NX-q3JpK5K0H~{@GE{<;Q0eTq6ZHc5iZ&D{1&^5Y;uRkl?QE z4_h;<0lB17^$tq}UCazY``#Jnl&Pcnr|Eg?Zd21hS*TPi$1)5cN+7Zp(4g}F$XV(y z2TDUxE{S1x#2lh0{}I|Y`_}h6#*TSwHb7| zAd!Cb;75+IIoO91(f3M`% za9F@=&J8fT270}&(qd#p;FLyVF8yH4L*MQZv7bzmWGXvy)+8v#S}!iGwYv4fY}R9c zH37|>c2;#Mhsu=MrtjQN7da9?_5@L;!t`MVK46JFDYBUa|@Asj7?-$Oly< zKl+4;!-*=a1>9)OPalor0BHRLq6tQb6yK{XivW4b^r7w zc>pAI!0N1<&t1?HI5GD8vZA`V{`Svv&0{8|YQztiG!}H6A_hHd1Yz07?s@=i!A2|~96;Fri+Z**7$iK`AQV{tc}|%Z_f3!}es)o3 z1;aTei}(jNBwaPepU@3p=y(8+ettS>c~62;^?Qq^1#N&||AF6wCrsZSmuTaOl;C%% zz3C~;5A{s!sl7YMHS9r`;tcV7auzr% z9YYm=$0*5mxKLA#GC?Q^;mR3J9&6*Pm1Q`FU@`w4sN=Wh0j9?47eH%d3Q*r~cq|F` zwYaPe2O9dnw@g8n+wYuVK285X1o-r2{Y~Uij-il`g2IsAORD9ZVO8ljr z8|uQ(auVMc^Kb*5+L>XISMd3%>;<~&a0ovbf82C3BlV^s?=g3|hIpYmHrPxirmuZZtOUQ=<%~3;Y-0>wm-hf%FVE0fBK;-c_|{ zZ-0M(V^l>3V%hvB*vghZ0QNUxtow~N(g*40*5kks#V;|l1+r_%hSD;UyK8D&` z6Abjos%GxrbXz}ZER0!g}P~gd?_fZ1_112cB=zt9{m~6&X3& zlcf@X<$w2MPjKYh-Braqm+msv{}v*uV_)s-U7YBt30nf9xUJ5@G9R%lDDoj+ll@BC zdnJToj5Tp3lz>JJNZ{2V`Mk#b0(qA$h}pOntb{8=UplK)zG81GAGpHoFtzM40S6Z% zDw~MoKR$nKQ&GU}K_B+-E-+S-nuy@t- zC)O`0!dilbj3&(}fs|{v%`NrT6L{}U%LdQGS^2ZOo12RW)_~B3YTc{k#DH*FvcO-b z7isQl<3$8W;gtJw#6zC}$%r(P1XjuW)tauV$ZCc-4|M&D zMkESPxTvsI~m?}gJ4qevY z3(FYew{o9OYut?RfTxZ77XQg(!J6wuI7vbaLt#V%FXLo!8j?j4CIW6e)l;^(^RSK0OPQ?sfgK*FZ3!Vyk`|S{cTUL3w}8U z#-*;aPZvIUz=&lf4?uGndCo|uT0J8HVsU7JeOCxSNOd{VT$3tOxBp79lg9No zTP8pkWE^kZZ9V$&@NVi1go*QvyeCGjD19&N27og->HA6U3NY6w2G#Tc2Wp?W+%>Ml8v}t;X*;MRp~Pc2 zPq<4}@Bz1SYR~I&&mQ3P*iaEg+A- z!e{CDf(Ufl24ID}+FSw++OD~Cyj^yq2Ap$K>ozUwC8>7XbDy=FA?mMC+cHw-^g1eX zF5>o$w$VObT~LQ^62*bhAZxo2ER;FH6q%&}_F@TsAxHi}P99KL`M2mwMKsh;v3Gk? z1()x%%I=ZcYQPXjAZK$T)DdtAB?PAZksgar54T-uq+D~;-|0`Mh6Fhj(1s1x>EtN1 z^|<||c)Ag63rOZ>tP=80@bs_Bi{=XVd+Sx>qKrupiqsU6JjUD9XX_w-3&3A84yGSh z0=J)OU3KNF#YVO1i^IY(9}u5(e9D`j;;&54cLA-nW#S}NqW*e%_L`6{=zR$^Wo)pT z-gZ(|Yw4@beDTH^|3V}f+?xllK7oaqI{V4V)rQo^@YCyKRW!C9AAwt%&`g52k$PAsm&0t^|8ncl-{g57F zU_gvSqwPAZsbj43GN^wIjN|jG*Szm=53Q^tUE288uI-(I#DKk_l9;esDN6<+EC+ec zV47?l<3AAju^kS5uf+UG5&n6lYGBpYx~_>Yb+%IZ@FFX*_v&Y$lXtrNelWoAxrcjS z8`^IFI97ln>c~>P5WS>=OhXyl-=}$iSU1~wrTL-=J@ET|yZJn(in>bBMw^yv_P3l}MR)qo68GCZmgp0QXEY5``?`w#MTsMqv{EE?+tz2HGB&UL ztP(j-8+lLOqKbUo#_L0g5D>N=a&cV52*f!aK&|nCm<1lwkIV6|F#yZU7k_{Q0-U;x zbZ6EGic6RjRc-!Nl7*-JQ%2UPR2#Q*JUMMQfip*a4sn_Pn2H_dR@k6a(DaW8%D8A^ zJj8{cv~B;>+fnsUcDogqIWDK?`NV1DdHGEs{~9ozZS0y2GbQiyxWfJOhwrd7^}f32 zv3jcqolHata3H{=lLpAwHr3ZBOUL5X11S<~kBcpr@2WE+uLW(*Q`#fPOGQL4C7(gY zr2^a6=ZAMb=KFdJ@a7TbxE$}kX`9y=KZa?siwK-<2-fV{aTyK5R&XmLX|$z$k29SH zJxXQ@N*w0=s4CV*69?h&hVH%wD4gExL!{{osj^g@%QoOmpN0IQnXHysB5AH@2)dgb zHYv!jV$=E&g@D)=n8-*97&_;;h3Lc2-b^&7T`2cfa>!8B+X$c>KK_a>F_=7Cl3yo0}E_U zv{2v$+{_s442#ZytjmRxJS(YapLjOIuxqFG`OKm42a!#O$={jQu@SYb_R<=5IRRVU z-~9}*<>%jpMcuaw&sTEjLi2;Y#$S3Krd%7m&rDppZvOukfU73E`akd8#;<$Io()Wwgbg`(!AF|CBM4vBUR1w$hm9J=UQN5ItrYE{1 zVFV(1{-*d_%Lw9z!;aiCq;Kt9M_7+5o_6;eoz!y+f=lrwc8(P^Q=flu6nx=)g8<12 zaVN7ls5qRNmzSO8@?84Bf)s$*TEqUW$T3Skx4srdIX|B38vT40cTWWaArut4+JLYf zj~Le)S?vpSedEp=2^9?izawLu+A|6+lP-J3fNMk?4YSf;-SA_Vc`YQkj zZ*6MJKzRdp3Q6y=-!92DBDiUnjD#fd=76umssYW}m!k+8<#2bTHQ{Xk@2|p3$AA5@ zxDWUX*LZ8Oc+3_v#nMKfhj0V-I17BESuWwsVm@^QjTv{lb6!VhaoVboOo-PN?&l4=MjfZ zp~kUl{BHXM3}8UT^jKzG>6T2pww=4;Y?=76fEt)HSJF-c!kcq@qK=8X$6WbiyShc$ zobr@meWtF{2-w&2j7RW=>+qJe%Gr29&E-tdQ84M?X@f0}?)zABHJ;}3v@(+oMERx)l9_8#1=00RE@88%RZZ(f&T9@k^!Ws}YEJmvsLIZ)Ufz$8D`r zB!PvRe}dUWw+Q91b)21CD@U=xN(gN6Yc(}TZ2ocE`$DMd0P5Cf4q_&7yho?)llzYw(2)};O!u|@#FnO8w*@gVB zfGWc|^vuy>7y?u~R8&-PadB<{`>}Y2?#yqg zs?Xo@vJWdh4Vb<~I54Phq=S?8Kq(=2|N6$JS{|4?B?qCi2Q#LY3J=GFMxLP62dm@m zsu1{Ml$a))B%k;KnIv@SBGbKPIj=O~2R@sMcCi0@TH1HY%-hAm*V912o3t~dOCDn- zH5MR}{KXA>NOGgy44m)vID5Rtk1NaZmN-)wkbWt3dI^K6>~et5ux})0FYVB-Q>Gm% z>b=CUQG(TQEuo6`8pL|*);S((cn+_5Tjjy1kvMVjLr)A_3RC<7Kd6v?1B+5JN5-=} z=mYT?UpwQ~_FSeh!}5<876A@Q!KQ*_`+<%=+r)h(;+Sqv`fvw)mF19>tCj!6Ap2HP>%n{o_p+l zYSvaC((*l1m*$~0Fzr!JVoq|Jx}i2Go} z6)$~)HGms*DKplA4;>V^$3^ zVyu7E zR`B>I0^@f=)OMP}X_M^Y^M(`dK7?9hUNo`S6t?tgsr-2MtOsdSAm}IEblJW-LHev$ zbftYMi784cxg-%Xp|o&-WM&*Sv71mctHRY<8;NG{!J9Q(THj0txoA8Yv>B6g-=QfNyz6+AeFo0yPSZ@ur7Vmf*j zj6Gh@NHjk0WA?LveZc_W+&^+9B=Rt(y14pef1Wmk_i|H%;cm4&#+6rJK1ctZ;0dr$OgBX}1YkzG&W}p<$cN4Sa1Kk+!gbzv< zZJQ(Ag`XAS2UX)r@-V#hGqM%B0>bHc0s&x9>Y?lY0%(J9tnI2TklYJOO#rBWNO$mC z5TG7Xc6B`~V9J8oac?V@fBu9ZzB{Y6qj);v5p+sL{#SlpI-A#q-s*s&QOlqf&KTRu zIjUZ(GTq!xld)l};Xgz(f*ZxBp_fm5xYTz7Dvq;nLV!P-wr1f;4$dRTb9y>h#FWtl zJM5y{4jROr(%Cn?H35pbefi)0RK4zUBV3 z-gX_e{?gD{jd<=ghpY()M|K8~x55>6*S|)%`+((u7Z*D3vi_Q($l8?#WVKdMX2Afe*roNhATeDm z2T}Y5E+Id_9wxZU(?lLlju*@Bv8R;5q~HH|bKC|nvETJ0_xg_~uI}iiRTL6#&%H^n0f7(9Ol9P$9%Fc%>Rm2v#`NDJJkhRc__&hj zx=oy2zEGB41De;YIh>!E4=8_GQnnm2A=E)1H2xLg%YD{#gMLO4HgyNzfy*%Bs9z#% zf6p_Px*#uW^+GN+ieLB1rd-!Ccw&iG2q&!hk^z&k6eT+s;|MU@Q7zo z!E~k54o{6H76NIp#(Ta{Ky^XDbI3Ah3pQX`ChEg`<_Ki6!il%&B{P=P2KyR=y}cM| zhszq!mWkGmIo5-YfaJW#OTxUKD#uwKK->^;;teK`Ah%Qc^2DfQKIw#-Tpy59l|c)V z2@_zJK?95Q-K<`{WQ6SDQe{enLNEv0B6Gc+VsP)C4m4CGE&o zP?}l>!Xyqeq;N_Unea&p>7-@=OD8h&gGD_-k=i%l8=J{2ae#iPtgP(m=?Pg}lmT{( zcM%>B&+PoX6!1g6p3`i7UHcKks{PL>(btPaz~~%Ux%Z@j9KscY3$Kb8)*eNZ__nNM ztQ7R!F2}T-3HDEtzNwZBf@#CetF0eHGq%zcO=ikCK)H6rietE)5FJG7Th9yIJ@wfw zZMDDug|BcL@nhwj)05%_i&l)!PD{&cD_cTZl2xD`z@xZPM&Sfy9QcisRWulX7-tiCq6)^YvUL3kK4X?O%a@yLO+#fIrGY^xs`e$*$bq*5HqZa z3t&59s}>g6y+Nd~i%COp25FRfG}+GJcB8mk^&c4Uh{lS{xVIF_=~BGqG>+-1faG`| zvUTor;%PjjzAk(P*8<7YTZvD;;D}g4f;yqd@i%Z>Km=8CeRRZBr%tC#3Fyjr1Y@Kp zSQ^#mzgen6e>&DTWNjo0)bQI1ikjQo+sl`;;DYzvg;>DTZv3QV=JBrX@~B-%Kp?56 ztz=r3d>+kivX zs6GhI0OZ3DgwX=gCVhY^SAa4r$IL}GE$Ykt{t1bErjqDAca^< zhV=oE*xnYPx|&Zwex<#32`5IgpHyG<@mJaakhRfYwlPP*6U$5)Vn`}D2+$?<1gbyJ zJ_oRvHvLDSVwF9&2@kI;F4r!1STrAPPH2p(fLIzHa++>nKQ1Xpa={@O<+9$L|9;_~ z0RsUr26p=M1P6Un=Yf=({R4KkX)S-e=tIEa0%L7!7@ztd?awVAPd{Gl59 zS4kul^rZs>;ziHy>Fg(b-N4R1dRODvu==uLr0-s5`X^JvjK8egUu-GH;35J=7-#;o za2;Pm2Ed(>{%m0ODH%Y)krQ#b2^G-kn%UrUP?q6rr#)7*<5xraJ&+xDKEIQZwd*qk=EeczGNLIU zhRuqLs#E!rA_e=6&3AHavcYM{j%LzIuD5=sI`bJ3e4lf@PZ!3L)XxcvGKf}o2cAR$h)n;RJaXrL6>{0QM{xGMx+Rad!oO<9uyrnD2y4$Y_;Oy zD4eE}c_=(ACbftLz4K{f>IwjU#g(qtuHsZvu&Bnpcq0acTX_eN0-3g8;OHMGofR#u zE*2mHGJAab3e`nM+nL;U8Jc~zoJk;8EhyXc!8uIIq#ot_&pl7!M6Jc55_&!2mpSe+ zyC8K8OBUd$z}c z3;J9Z*v?-zpn8SA(M)w_hM-DK0>D>_&HwUtGu9R_jjeE=&CqPJt@|&WoTJDSG&;}g z1r?kObX+Xp04|8{$U|)F<3G3|=P$&B)>p4Z&k_~C>Q4LsNf|6^e9?sx`$h+X0SsDX z!?}t0&QJW03J>6c!c*K}Rs~-KbMosy*=Il{`5sknXLsOhSiT0t>vRI$w!J)$>CJt> zhI2(aKuShd_w=eo*pAlJMcpY-e$EP4+x_U^(*3YU-_ill*#Bp{$xC3qk*k*h2JA;l9`ENdv#PWacMM9>5Yy5-+Z#obs6j z8tBQ|E32xcl5z*PE-U!?bCj3xyKRexxs6hy>l;^z2ER zKH$!%VVuEgr!cx1J^G_xY0)1PsXouB?85@^whY%>Gw8C|oh^ z#w%4n3ShY8aaBZ|M9Bj5GK65CON6?0woJ=`O3LcL-UC;539x{DZWplq01<$Miu&Du zj7U)9C5A~*iQ;zgZ2;m?hUSXf(1lRHHFDRF6E;vYjc*w~d0`kXdXTBV0FoLi25m6JP&8@B)%_y)u zdxzd}^YM)WhZtobMgfE$@PcpbiTSQ)J`R@Q)m2p_*Q|(QQJbE?hpYp7b9VrHq|){` z0^ekmxn=b-FOfA~FBxZ_L7Z#D;t0u_q=L{dXmOUTr}`O1A^n>}c@eH++Af4Ux=21K z;0{z=kJS57wLsR}F{`^lscMgUr}3Xeq{~6WfwM5~r{YP-khfiR6WY17ox;+0<$;PW zHDNl83?<2dd20O$b0O>c){c6*XFvh~*h+Vh@6j!K)=%%~;Q({A^j}}eOzE~+pedTM zZ3_#fNkueYPa@r3lxpiOGW_<`6FlAXyrgRH=(stm)%bOU(8$Q<3%Fn6;vum+_X__5 z->xz(HWxP^<>4b==Kp|v*3myKejufCEou)Sd}8*|adFB5klzTE z-CuNd03p3JDF?l&KR zcLMo-3AcU12FyV?E26a(2ymY51_Qv0b(_bZ%PyfDV$Ks|jrdA8kP5*??qPE0cZwqy z3YD^RtIsw&`}zBuZZYP?0V*fA1#R66V3+eZz_zRkO3AOxEn;+a&{&NPRSmjKeTS=O zyLY^k`2|l~w|x(r6sZh|2d;qdkHqsg)wSRe`7ar^Yxj5j_3j5pc{K1-as75_7%}9< zedI7SE5pBsZ7yo{SL(W+pm}^=1pa|vmu>V{98rctB2Z}vDL$pRtCWoSmir5g04W`3 zWEEBI)gA5rrG%j}XEzVT5G^2|da2Sw^e)i!&g)Pl75_q5hcdH%^*HdvZ;_aHA#&Gh zI}ppg65;OTqviVH^6>Vt0CwkXOwgW!W9Eke%Lx51!WcZO6VnvM@J;#_2!sbY?U&Df z-+Q{xr7No%oG=^z2}1@&60(V^5XQ7a(>!fUD5!cCbMx~|?+FK~1WYi(VcS!r4LKxC zS-Lk?Bh9MRh9GH4!gWaP9O^cTc>dKNanGw%W zP)VFAK0_R?4`rr1{%^1UEn9`t%AhxR{ERwSwnBG&)RtqYxeJxg`fEUrE|k0CfmtBs-chjjm0^>@;b>~0TW3}14h zEan}*N%%;P7)U6fp}uxIj{1Bih`s>_<*%yJSjMaTIT z_?}6(#^-_DF1<)Gy10fE;`Kr+I(u8C+ZAJaA7Q!yi0O{6w({j&7f9R7pvrW>2;^=t zHK6vw`x4Q|5^nt?jOmUy;2`YN7aUMux>L&th4|N0Z_L;eVgKhbVY|__Paq0>f6&jO zYUL8ENYaLlo{Q1Sa^dcqc2p^)cnPnQf5Z~az6;1igcAAk-5G_og(lK^YBqB^WB=f| z6!tONi)y_5B)AOwhEY&qqQcF(j_6GJ3f~k`@Ox-uX?O(TN=3uc{Rv^Poh8^Fs7-XX=9%2)N^A1s$E@$F% z2^glSblGlN?a0Zu9zQ)UU9I&zYo3yzFHG&l;CV>L4h&p9KS|QIx%kueTyP3LT-UAl zzMZY#U5;)d+Qjl)QRmhwrNx{u8|J}lq(o;a?J}1mAtOeR$%$O$!w?haY}?kF$m;UM z97jlvltVVsU>JPsny)JBTI z^`07X!H`2yrXVyPg-F(O_BoAh{W-}GIIA>QNx=W@ZIi)k+JUC6Z-=c{3pTS28%a>o zXcj8A@nNQ=3d^(kJbAlWA(-+~+?N^Fy2)F=T85$)w*d3l7AIqh05qP@Z(Dj^@)|F6 z5LUG<-Q_iLvhTj?@XCpAG{@cGqx=tpGDs^@zjq9zw2dbQU6(9SUo3_c)8b7PeXW$o z!bA^?V$Ef13tp!y;Y22a{@9`UZ+W)QXiUWR1hFjR zLWhX3eb&=MAG4TW61_%Q_oE^9?^uOXg_@n$0Ia`Rgh**hy94Ai>!euKX@Bll&$WDN zXdN!IyU7Zd9-CI4IO8W3)NvHFqmnNu>)LEWEUDmLuh&84R&AZfEaAzj7pi@clk&_H!(#Umi05e7qC^dC{k`vH zNRB{m|488QQ*Mt(?1#F0L0(>fI`|l%MeV?l-T(IdY5Wj=zV|38AnBPrCTnI6prNX+$G;M7a8uJM}eyqe?M{Qj2!W!yACLniNHS46bp zz+3$&&jaVFEUu|zGlDEG>D}>4xF{fxsEo3cRasnxWLvKAsaPOC8_2oAnBgu*#*=Ic zA?4=AQWy5TNl95VB5oZ1`Qh7P%621z$_Nig#54TOCm?Hrr}-+H*QoyvM7&pxp8tt( zq0L=Wux^D@%%33!gUy(p(*-v>>y)}{y^IJIgVE|Mt3HCbS%;MI*KET-5FUWE8>Xn{ zz%m&I`8|9AjfOgPafV*7bAB#Va6gOvyjy1ke!ID4q%&kmBmwP!yKk9X+iggMmmzj# zA`xmo+MgF%ZZCG~D~Cnq1YM*Le@A*;!)uKsSoo&ENP66)ZdrB59EF!%)jufk8MH#T z)u4$cq5R@qKcKx@z+KV{!oY~P16F7ufAG!=+^z2pL{`N7`$FsGZ7&s%|cbN z_b`kU2v(MxW*x7Tvb{;h!OM}v(cfgoF8R1IRWRqX)w)^7KA|)qrjALZhZ+b{CSfcY zX~9V_yiKqcV$)esv0w&%9upSh)?u|T5D9z?D^L(3-T!+Q#M^Tp+cOFX9NqeEKl)f3 zFl$pIwVz)ZETbYZPbf)9KWdk{Qq3a^rUe5=#>?)zF4w80U3Y$<8zS!K=QsV76*IG_ z<(_ybviu#nPx_0da~OhdvGS2i6KOm4hjS^Zk@feAq*&pf3D5EZ2 z&1m;=8wy5e69J2_mDc`-TN`_W&fN}+A!+C_Zv)>5GW8eBhW_LSo}JS>&db4;<;Dv- zvaUe<;43nCenHJGT@!Caf1Z}5#~YK;xJ(Er?x*)<IxE`SQt5Rd$R<$s%$*b)YaP6-bthM$ByAR zQwEmphZG+zSB8#ErWP3))VlrjAV+cXT!m8**(HC#r;P2Hx?Uab4J^&-WRqT8izLW)UrmaI04h^kx6-irm~ zFGy8Ymw=KeCNW@#YCk`|CG5Hy(vP&rm|e;$oWEowI@&_Cf&<(jc(ZjzkdW8&0raaq z-X7nnC2B0h_uFH!&NNs&p_<4(91rer8=j$D9r@sOD7Q$F!XT#>Ha2e&&)-LqVB-#y z@k^~h$)9#1<*O0;yvAT2WvcWOXF*Hrt z=3`}6pVit{QwKamOT7Ev#u8319;?eA&E%XvSt$GKj{BcNc{DjPyxW4?VeF5b{xqhp zcNy)U+ksAC2w#s+GBM@GjAmTyx|h^zP6lW83EP_Ep(>DX6Kf8`?ovW9U~3git1wr8 zk7S=Twl+$mDCre9>(N@P>{Uyl#(S?fWKS!ly#?+=bw6)gKF>O@+^f3&8Kdoa#xcQQ z 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 Q|M|}=E2zs?%9;oN7jBEKm;e9( literal 21160 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 diff --git a/docs/logos/openai_logo.png b/docs/logos/openai_logo.png index 998fb5e5876f27c264c0920581bff5d257ffbe00..7ede23acd0c6b5cf52d977e250234cf8ae72ce5a 100644 GIT binary patch literal 2958 zcmXYz`9D{AnHwC7VlPTQMHc4Gv=mH_9s51&?ac32 z+rGqW{~B~Y^x@}y=URM(uD3~DqEgKqP4&A)rZuC%spb%VFmqK$zoZzGWwhOvKG$=X zEu3Msq&hWL?g;$E&RpG8xudQlVPL|gI!=A>Xe#N@sr<9H$5p*FJ7~7)d5Mp^u4}t` zRycW24)lMQ&$Xhs>TvWGiEaE9JQiK9f0Wo|rgwK^=DS?wPA#X`Sr3LE#T*Va6dEPI zA_|Vm_2GCF}5eO1G%ji*&)6m%E5-?Zk5?=-JX+oq9-&D&7+UxieGgM z1=S3s^q$>J)xlU#tS?NtJbu=B%~c|>L?8iqF(k!}&rH7Q*Q3r0XtA%b5Rc$mxF8XLia`FQ> z1qjD_-%G$G6qwA-djQvvs)R!_Aa~1$+9fFZyDsbO`nfuYapdBTunK4+6nJZYe>ilD zCb3Vx_>{U|UH8H!3Az#={j|NRSVIlov z!LJnp^WAoT^VUsun=DydD}s!*_o$MZBTxq++EnKL1hJ(4u{=$OU*pmBXpG)dovs8O zR`sDElLNm@6s|Hs)a+73mwFfyR^Z85))0G24-8w!lIf8(V~K$#6q$$5!uo!{q`$; zC9*HwFA!v1$-yC8+z!OSlP`ztTu*_^`F!8sSg~6)MjqhNzRodasLSNS8*Tp#_WR@G zt#W#5_o!8he4BJ7_=)X>TZ))lXMQ1Q*xO`mqFdCt=L-1t)hhejDP(vtkI8;L(yiF@ zw|O758~6B8QA7mGKfB(!h+k35tN1E2B(_!JReH6ngPhs)X7ZFOn7L<>f`#IHf{;iu zsGfmFCa zlTT}>?%dZ_CVbW5YRmZve952{f3CrKWM4yYe4wq!6_)%&h5c4vc4&SI-f|lVhR~%Y zi&;ZZq9!e`2w2xW%K6!QFJ@f^Tf5mATI}q)NiFu_g*9|MPzb?quh6ny-1fV&L@Vpy zY)H#p|MybUS04FQDS3_O&unW68-<=IItJb^>tO6#>8Oo5b){Ph_JU6v>5j{LHs`?? zrbSw!Y6B9kh?7tBS^02y0UBtyZE~k^7AhEadX1wgAo?6T%uXuZb#N-LN+?dbS`r>~ zP2P6U&&H_yH#zg*R9nrO*t=G<$zd9n1-Sc?g$?i36N_5aPhjU;D_gX)#M8rAq&tDb z<03J(e|D$FeW>`wtoxWAKKn=ile;R;J8p}ct>-E5eOhWt)=aJ2HpB2L2+`Fnup1^K$893d?{|>ha!M zFt&27g5)1;?%>G9UmMo^6}J&G*8~6LK>iv+FODRY`3?VL?1ei!gbPoEOCOFL6$zRg zUk}zj!A`>a);#+XioHXb#KS-jC{MytM`|gJ6$qOzU81rF!G___aa6?VJ@|sxRIs)O zb96-q|ek?<2#V+)LqmZ@{H&|`#lDtiE|;2p|I zIXys>5Rt0kLR>g8njSCDdKyWZ+g;(ozQntUN9q7JfYU4o)?|TK9duaX9E}wOUne6y zDO!fS;`LJ}h|hGw=-hw!)HgKn?jyo_2VyFrU;E?Y cSH|Y$RBKPgm6Y*T{dcQf96arXcF3Rq0|F@pb^rhX literal 4895 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 diff --git a/docs/logos/oracle_logo.png b/docs/logos/oracle_logo.png index 5f03bbd13ab4f3a5e933fa44c77b0dbbdfec7b9c..2ba38ee239316c5c74040e2e4f1fe87a1acea5e5 100644 GIT binary patch literal 1062 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 H`R0EBd0gUQ diff --git a/docs/logos/qualcomm_logo.png b/docs/logos/qualcomm_logo.png index 8767034dd234807b3a6ac5b6726a1a6e05b7b3e8..68979de7a82e4e09af25a3ced36ce053c8a35b73 100644 GIT binary patch literal 7316 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 literal 34541 zcmeFZbx>qM)+dTPjk~+MHSX59yHmJZ;n29dySvl4Lqp>(jYH$^ZcEQMGqL+(_r13p z`{z{DjhlJ%m&eb^n;8`qt|%{w2!{&?0s?|4EhVN50s?yb_kw}?d@{DU8S#08b&%3> z1_6Ob`+I?cWMpB3fI!??s%pAu%E|JW*xNE1nc5oz7~O3hKG7f`e1h%{Mkdw(7h+?8 zxuqRH=|x8mDY2y~KdAA%|Do%nlJ%u z0JZ=-7w1nb%fGP>7WOXo&KCCn3)24{{vQ~8npaNl-#q@Ove?@Gn}xHBxZ9^1|1`+| z6z#0);Q(M#1~}WhI+*~(-9E)6`>TxukEj#C$i?1C)!yFbU(Qnem&nAd?2H`5)N)29 zmUe%Yp!x5n0K|-30Q{tX{l>t|!NAI)%EHOR#=*nF!NAPU!_53&P&s>3OEZuE1(faU z{{a0A98)6~qyJB^sR@sny_2ocr^=SLM&Lnm{|n}9Z{`9tasmjOe_HGR zM?f)siqG^n7ynBWrvIms{}}u4^7dcw&tmYm`R_{f+4*-Z1K52QFsIK-CDDo{1_JUu zM_No+)jjKU9hgO-rSaoRq~D;J@1{gN}}(^jdzXp*mgw zM)_N>04%^%xS@)en4782CL=rhcbk1#g>%j(k!we(S4oGx>y*uw)5hjf#paP0-Fk(m zy!#|~L4}wSy13G9;>6l4G_v?-dnP;*ls}??Is!@v;qdPmJBYDR>}S6K6dBy}vyYDG zk3C)Z*|z}s=}-7~3OF&;?Ps4F7lb8G@-GRHu>X+wk1hTa7yrqT|I~~B)Xx8#>&Pyw z!nCVk9QAmsM-9@_j&}rcYn6D)JWZ96jZsc{J>~i{Oq05V_0PJUVUm&%s$t#ibvCx3 zpEDEaDEaDW?C@znwl2Hl;S-9!0xfhN_AYzSWxG4NM-`A+2HixgV3=9EYP-+O<9 z%RqfdyL)N$(exj!#E-u|!NP=hvz?>(BSu`Ez$Z(lW$__Qp zBauBP8UiBlPUTS8ryd+3x?c@9B+6e0v~5#r=(|(im1n{C_#tAGz_eyKJxZdnyNz#$ zbXb&1Owj0~cR~_NeMjkw7~Ju~(gq!v{XiEN?}b+f59UbQx^fShfC%c%n%tHh4YOpe zbcTWIB+;Cjf23YTBIpmwvNJ)41w{e4UrX3*h)46EuVlor33g_>nSh<#$h`>+QA-`Z zv=u2i99B5W9^(kS!FU`z?r3EiuOVZvcGzKblZag6tTq_IsZ7s8BAlG6kPuwqcUuJ! zy-l4X;^Rf-a!)KHwT7JQu6zvegAVS(y6!CcPzigS*}YzIW|)Pj;AtrB#!Ph4SF+?A z8o6UFUs9twJ$Fs3fmWuG-@e(Xo$uP1`OJ2NfR#Rp5EVImbe^2^wHLaA(mr-NiS`|V zpwfpa50T~%-+CEGGJUZ<^OflG){Q#92}WL<@sXU7lLtwDAz34`=ru;yE(#C(Q8mK_ zvb32L`iCtrE%7!btl*HUUk+^=BLJn71KEWhf{>{n4aG-syIu;%g2RS&g;0g{2C~ID zyl4F|X0g%7%vq;ZVLtSgH!VBVl3RX&s{XL(7;9A|uiHlHtrg}vh@h~C}%ql+xGI@jN5iJS#`2q@rzsts*#e8 zuZ!#1qeSIeJva*oAw^23U(dcI_7n;00~>Tes*wzX-OPqpT(cr6mZ_gD9hJe`^TION zV2*0Jc(%n0&Wao`+uACB6+ke7@G3o3SDTM_k(Y=1A=A8bqB|vWx=OS#Mv(T^iw`j; zJ;7x&D;P0QwTNp+eLK{lz$|?1&+F#YHiO9eNd}^A8887aqMr2jLkazD{_8e9aE6tJ z!Z{{i{^eoFtbOxA`K8H_{AzLSweMAP@B9RhUB?~2H6bjM2t^=uLPW&j31@tal&J{If9;FY9Fd0z?{2~u?%f2BT z3kG9mc0g~J0yi3`%UIYJ$tQe1n8cLW<2W&<#W94Nd6N~O#_0m;A;?<1Z=Rtn`!1p` zv>)A-nVN$q%+@4l7-Usp)h|!RU6I9SwpM@Q3BfF`i%;8Q$3qW~R2^8Pvy)5Mr&J_D zkr0d$nWDah^iP!;F<02kguIe3&5MJONo`Tp2oZ?Sj5PJp1BJJRgDZU?Zi`HZEAKs7 zi%*~7gVVuE29MFdl|Iz-Fbi`BuKgVO&D7-+(jTYQXl~K{0!g<#5SiiK?rEihzU~wS z|D)vikvnje@b~)lr=Y}c0^1;%j1ymR3;Q}ekow?=PhEwiH z$Ngq#vx|Vupe~;Ov=`pdb7T7i=q5yW_~pen!?bO-js(G?>DQy)E-q)?+05lHy)Fr{ zSjuZHa#zd!&|(82874Qnuq4}N8ERZSBc3XmJF`NU4NuDm_E74Gi~c~8$slZTlyjlx zx^rkNs1+A``+46#VwFroqh49V22K0xSo`M3QRgqLVL~a{d^A zz2^kHLea*G@3qnxS4#b4nL4HNC9a0YyMgwb)=U$zy`y1o42IO!nS%DpM7-c_Pp&9TN=)kztmG88FoDfiCX~bb8~JMy!PyvYsmchldL4*QdrA$o|5NTtOT}S3((b&ck;hn1KF7@WTnZYg&%pMDok~GNk0GR}0&F zV3k6^{GWbxqILq=+|EAN83tlxi|IV+QG}(93NRi}X3t7Hq0iM~|Dbu(?5?O4`SGDM z8#%zn0XxN4dRrjC#U62>MJ$=#l`Bp0HH+@`!`=Ggv|9CCTY-E}D((Hj(rcG=)_dL2 zristo$}}l`9|zE2aEr!3W!@jEy+G$?slNrsPWM5K4fK6UcLN% zcepsRQx3Y*5R7*hq9Z9pRK)=(pymnJ{mS`FEr;>$v~z)weO2%fIxXHymK8L(Ca=lQ zWP!NU`p(%Ql(y;icKbH@GSf}ua@=IL@F(QA{}Jaq*<-zvuT2SsxU^-hvF9`8qP)<%?-TqO?3C zPKEOO8D;^gsa0H!Na-un?sf>mOY5=Ek&Hy5{A08yU0gF*lgYdFI7Zr9gJR{THZEmB zVlOyH5Nvv0o{(LigH?2w_yf`BN}8#&kxEZG&}(mN3Lc=i_0gX97)1|d4@ric5Jd_D z71@)%DN35BpFU1tBA8+PS}`&xYVz&O5Ao%a$9hkrVzN#xrgx_$@EZ5~eLaozB=r6X zY_&vn)#CbfG}?@G0{9N=WRmY#!ckLNnM8TnEO-{;3D2PYj4SccwQ!om| z9Cgi%#L3>5So%ogySIvkBe$l0)S^U>wWD~kcnOz(pPK~Ykq=}&(FX0XVnTZXl=7rS^fVC0@@ zadFiW4~7oN=Sxd!&1>!B>Vtlo>0DzxTnRg|Dbz5+QwWlVhIrx z+8U2`VR#`nu!%AwB09O(3KPp?IiBg?D2h#mDJndwGk_0X zE4L!X%*}P)`T4tR{}jdYtGgzP)D ztdAy>rj{fqleE+si6GAlNFQJ&>~zMid5g5V3mx24Rq-Nov62c=b(%Rqa*dF9M$OsXpirmmt!= z=Z-HzvqUh-a$odPmeg+`h_j?^+&zylAT#K97;^F4K2xQVB?)H2OjYrG)lp;S^gsLn z9_xMiGyBdFO4^7HPt&v=Wk)A&u5gaQs4>DyZWT}4I0=vKXd1M6^N6J3^ZVw4lG|* z!~TiJYw`F(58SRn(zKxB=zi%pHFwjxqq$!PD@YpHI&~{t>9f6oo;in zAgSOVj;9A`!Q?{I5K-J{+fTiOF$Usm5KP@H8&9eUoEzyug$runr*V$^t|^lf%wB7M zA{Pvwp`B^q%QtXUAwu~?ga?G`=Z>?dtPWNIVYaxB77`ZFO^FG@6*hiwZ+#}kz+TY9jQ5t>Xey=oSm^(RpYc zWqq!N*cI8zxckzVaV)6>MbLW)PfpGR)>cT57Ym@Zu}n5tMm;S=_Cdc?+nV|g#KG`Z zw8LMCEH}5H;;-(Qehg6)Y*(*mLhpZ^yuYECe~^87woWPaEyA`^E-kLkEKad2Ha6>^ z^~m6qFxQznSscHKV#BIwzN{U6uB5^5V8W=|$lZqXk!QZ=E_kjk+TS#!(8cYvw7qnB zR`K8&>H%q83STVq+T5hLocH%T_SSp^y@U$l3XshmZq}O_8a{+_28`aIAPPMqIMn)X zQn#nX+nyP~IS2}7^0Om8L6JuN3B}I<$+x;^!rq(3#A$#j1pnkr5}o!=Zo8>$o#>Vr>s^dnqu3qM$f^0w=% z>RHL4ZJj5Bx(*I%+Q=3LYg}inE{L=-j+2N<&_$~W4l)zt&p8uWq+9G zEKVc{vi@$g^61t^^qx~KN|h>oTw61;=)8G=VH)eWM+&-3LE8|1S`&~8*2wpKKok74 z0NHN~`6RP&nHlhk(tpCa#9$`n9qMU8W>n~b7{N7S5|HMlW;uzef@F!wHw+l0 znpdTkvRd|?wxSM(lXxi=rw)LKMc@7?{~cd3akd^Dv|WAH)AI)Y&{OHe)&(ccFWJGN ztntRB$fST2)S=GJiX!ejxccn;<+p9^k;^HN_5$WN2PHGT#fG0f+-`-5_}9k+R3}cw zSv*X8zaE+itg4jIW~CaNs<=>_BKA{fybRZym~i-gE?ptZObv>%xTZhO%swAfe{ z@-FG^zCkv9tewR&DC)U2u9_h%%B7ZknVy^&QQK#FW*>aW&x;|dkZMN1v?K{hSK3I! z{Anvej?aDNXSX1HW-O-kKhBuFa_t=3pi_yo^n8E@Po@F+6&o5eXsW z{qc_Pb}L%1Jp8dI%t8!@KJ?)-ji(u2cZEp5R!bBjL|8S`AK*vz``?7sx^^ZT9WtgRGQZi;T;Z>=eU8uofSe&kR@Q;k7glZqNSAoe)B*t~;AkNbV2 ztBSN$wSYEi2C!i0ScwZ&zh6t}<5UFf_gezHuRKa-e9BoC0vbV78aZOnp~^1_KoGCV z(eRbGwTaeKNe}0S0Jj5Qs+HqS2XBB0JPRSQ+z1NHR5zAm;ukd3Fo7l0ZKP=#_9@C0nLXu znE%AowMUIA%&Dcm?dbztKZ51NO_1P5t!m1$!*M^PdCU7wQhJM>j?Zw1!>jj%2?DD* zE@-5?c74OE?+5R1K1sTHH*$1{_+M7l+~jy+^v39kG;C zBmzfQq?I46-`$}GQ257_G;}YMJHlfG$;EBX$c)$4E7oYbR9c-$#6|P;%#tw1Xb-q@ zbyz(bPcdOnUnUm^wO1>|ZuPsj3VRh7X3t0FGW|dVtfI2OybtyxJgEA^j`&Y2Zv(+O z4=MC888IMW@6E>i^`i@R3Utrwu;>LNv}^D!VuVH=ArW)O*g{&GHc&hBe9?RWRN)2a z(r5O<7Zw42@(WlMq(xehE0>s2O{zXP6~~QSn9(VIT3M~HH1i#`RJRwaP{q|~Wxxfi zbX?*~-Nx{K3H!J$6AG75)qas4NQMYVfGNC9Pi1MDVm<~0({iJ?KE=+HJ16Yw!2^<@ z@wsA`)Ah!s-j{^=8&@5|RDx|=q4WAHGH}I!v;&U;UaoAEg`I$)Rc_b9Wbk%4x7IuE z*{p6Zwd9F%WoszRn%u3G58mMNuFpc15(L3vm^EnO!B>E16M(6>@S#-QES6zNO+AG4 z6nIeRU7acw5Wh?19`|dgcp_jK9Px`mm;PDS3#s=vyQ6ZqQLtTTC4uVp@0|si%hxMU z89`Wdo#!c8>Q9<*qGQ&qlV0u8(Qh3sB3o%2!XD|^@195E9+i&_;}m6fgO`zN0@cQK z0;Ss+KS|#9VWyod%p@G8HR-4dE=Zt$BPCDrrO-dwDGUd!AV4Xw zLO?BUX?^xrtM1clTaT{yF+_1XhWEi*_U?ciz&zp78ph8j692FreT#*fNW?wq_PJxJ zN-lD%A?nFHr0vR4c7}TCWFeNc@w^KFlX@OjRx-wt@4)#$-CsKYBG$zDC}CikWg z&I=9FK1L1l!1tdGA>eV(QF(F2BeSZt7_ksraW~gwu-jkMFzrx+iL=mBTt^@(Y8&4Z zCn>+T1tK=MiTJnxusUGae|4ad49j7St3lQ7l1IRX#1(fX6%|^O8KS#BO+}2Z+P8u0 z>JfWWqP%$00T3x@z?O1+a3v?PY3E>1_Sk4HA3^-QNME#V+L0t2f~l|r?;`}MESLXC z7C5ETrhYZ>Hy~4tRJ3nNztX$UZa|E14G{DX=I4^_%41ojB+n!|rv~fZN|3K%()r*} z3rRJ0q5Cu5{!5)xA4gZ8Po`5apNi9>HJ7$jhi<7F$SsCgf)Yo-P}DW~)3mDwT+2eY z;3<3|Wp=y++{8p7dyVCJ<&HH4(}2PJoL81%>Z;kmIdF~OtMeQ*)Lt2c38Ok$El>Q! zSJ|)01+&w%5#w>3ud$O|FYjo}2dJ44omkyheU0*?_lo)Y?%o&gzYl%ND+DEWzbpVt zORMRV*Wnh&y3^6y`ZV`mp*MOX#%EZMh)iC+eC(R-++N16-Ld@b1K$%hw{Pap}bw>8Mr}g{u@6Fp1VwowHJ=v|*qS@r56WwmPUcvC@=h@RLct zv!PFF>>X6k@e)T&O|)Y`6(+b23g#Eu201xp68EF5O$yvb8IW|zCw)omgkE&dn*`+byi7e&rPjMJ(oHoqsYzb0TX(rE*xi*%4 zZiZiVm9xzdZ6CabuMf0G%jN||mgn|v<1aV25ndlN*)z$BbnTN3QQLP9*vuD#to;$U z`fk4tFn|9C&#vR}qAf8LQ4l8Qm7_aRAyhOClgJ%9TuP!#O;>g~CYb{*T>HJvE5q~ z0l!_5&LG<3^B9s3yui;O&DOMiZ%wX(ciEq{e~hx1Jw5JT0ZueBzhgvX)&HG+8$UehYS}(l-+axzr^CkDKVW~8NtgI$i1zk)zm?~S5SRAOgbU)wKiILv7vqCicXDFy!ij-So!(_GrBQ9!W7ueM&}-hBELEx zVh0Mqi#49OVp8ktG%AeG%aS7RT(xpHOIdMq*o(SM?q1DYgM~z#W&Q4l5X4np-@|Z8 zYN%5;@-llme3LN;4Z}Ey$t|vJPH8zi@`J03#y`ts3&_QDl-Md{-F`ooJ#w4tmc=i+ zcp_P;`g^fKO(e)VAP9^0wX#pY=5To-R!C|5iS)i$a7`W|mIWqclB)fQdB*$_8`#=xP))IX=jSH`ByFf4Pm@nNHv!-h* zwWqSgL=qdTmGf$TIu*p}UM6fq4C16>$+v?bJK5kB#mRX@QT#UFLkP|vlZ;{x9+M)* z!-+pO%L1=?%b8O!vg?sKk*B3o1gQlHT%DfNGOkoA=FY2`ReKLB#C{;pz+M{aO=XiSM)7J2?19&2l}pAx%%|(zOAfrQ>wt0U zZKL22rn1dmQqW&SH-A138Yvmh|G?h}bgs2r--`{y)=qjq7*v(Io}zVY?rc0npP8;V zC3*sL1@E#LN+%PmQ(v2er3>pqec7Mq2Q;ET);)9QLIZOo(!-sq^pO^ixbWMHHqPTZ z5);A6^LtC1s3zDIeCkQ6aM?LD8?-akcaAw)&;s&#Gx-+cbCOoLlj{3|>KL*|i1tM^ zU1dF|{ZT~O*2C-V7V<5=SXcsAf5`LS?$#U;v-4&jRHTiu;MIQ3?c}YZ1>Qz=GNEoJ^%Ht15wQ73TAIyDgy@0E(m81YT z%G$TSneKDnq&!T5KLit1FMq0d*91j@JCt4@3@8^`zZ(*(HhyB_9GhM_FcM$Ft8rC< z-Pz@6)jq(Kf1G#D%j*k|2U&`rQw?MJ=T^S*=g0StRmW=to0zdDZm{IK9av)e)tU(A z2@guStAFfPM31b-Y-gVxEV@m6Wan9PZWVb1v`yw!dgtMX(05QgATd;^8m9m%?u(;j zPzbZNZZ;O$yKTvseGJ2v@rIVX|0HIZA1uR9r3mO@R2b?m2Pp5Yn{<_`Rq{Wq@UIH4 z@h&E>CN_xg)NuVM2d<)5vNPd;sPGlrtn#;Y%A6}%D`Y2{R#(zatoB5i1ggYTBn0LC zqBv81aaslnv;osbPB=Ngk4uEnZeWu;29YxO<@tiHyLYy_1kUXMHOArHul-hasL&2E zK^aC*wB>OfS78*V~jK+5RMhNb`wn69k zOmzuniJOYAnw}Y0b=& zPpkrzH9d|NN^M@|I?b+k?55D0C&n93rqQ+9zr9J_#S3t)(wVKcU_8MK8-SirOC6ZTnClfLMelF4BNHAUgyxoAL zCxL3t$v<&?+3K{8^^5CaFM1jTn`cL7B#PlzaqSB)yhJ1l-u1V+Sqo&F33JQ0L$nP` z9B)Rd6y`@Xp`X*bDQ{X|)MgE6gNm%C>8Y^+r@^I}>w+*z@N^2Z#-4z^+V+h%O`^&2 zX!NMu!mK}3%dYqR@!E~#LyAjfV)r} z*BH_Jq;9lGn-Ey;K5p&8Ral&)KD(nY*eZL{c(e~*@3%u|I)X<)xN(n=?j=g}OdF>Q zC3G^V1M4EqEEZ?=GbYT651peIK*0RZNzu93yU9*#4^Yu!gu;Q)2ho;D-hEv7X`GGg z*Dd9dU9V~Y{E(K;n+j*3mx9=A2O1TmZ~nMiW8fYfi=s=L z+=&z;wy+6btTClQV;nab=T-=G%*jnQNnA9)FW=G@S-vd?bNT`c_q0ll&B$#GF@Q#u zRc!Ny{G6~Z`)DN(>n=?5i`QT#fWWE?=k9Ne~puT2|07F1I|}Cn<8H3 zdTkCd-jU+xd)3Be2D6E+edT!su(VY}t zef!vt!tXIgL$xeO-DSe=Ry}n^v_bvM-Yd6$GvzPS(t@Eh=gSu)T-3ISd=Jp(r@q+= z2y~dKC&?8Gxt;MphA+po^~HbawiHO^XaSt)Qa#NczWCLxE*Kx)-b+FpW#X5Ekepf; z?UPv262aq@@$+T^V;+AfS<(m!Q+J+|jBq7SXCs)uUN&|dHQVRV+N6WzYhJ`I&MrOE z6Zg|3w-6w3(tMd8iZ#m&yV>(R1eX`-l}VRopzcdkvLElNOx4rmV|VS);dy8>Dq-N?OXbjgcQ%9j_CFggij{+Q=;$YmAVvM zPqhHY!*IZ#x5_gBxth9H#=K~yO2=0jn@x`mwZ8B+@1=BZ66Vdb%NhAh$=f$+2zK%* z&dZj{b78OyH}w&I#rf6HiqYenZ%igt$}STvJhni9_RZImO^f-p#!U>3-Y|W3Wfw-6 zw2P`{?W!UV?#;o5#bl>e*1D}6?Y(YCMrMy9-}Hz6#g*69h?tkaZi8dkV1cE@$XIR- zpCewXx|ZWm+vB70;sf2c;Ot~zow0dSZ@l%Q-tbP53g|&{)Sdd#5&tn|mR?gh+l6Mv z&R}=Fo{G%JqNUDg)G?aCsZN{XeO4stv64=Q7jun1P5LxU%}!5tQ-cD~)K0v;08AaB z08>Vyiv*of{H4=LuWPH9LsZsa&d}lkVW3j?BYkAIVrFDTGGyo`6l=MfDGy7zE)Bhm zTK&w2!I~+zU03;LoT%Kd)63z{%ECJ%Tmpm{Qc5LmOg5+FWo8dl1TikPu5wKFLhq=7 z(s9KC6(;JfQ2cP_wTZI}mfyql*haN__E4qC@Pr~$JNX%c&ak6peSv44l-0++-m_|X zgFwkNa=(x2KxhoN#{80^`XW1qxZZnbvE%iLowfy)x2MhhaFcqzPNkkXKM|JuW&5TI zHF=)4*9Is5-dji^h8!6H=TOH0OPe7^Is$EWo1T9!CN!6{+YeL&LN}r7Xu4@&&3zAI zBK#f?XyCAmq83sTF%!v?uCM6c-PpO77fgaPS|06&MfHVel$vMLo3SlWK+jaV%kcO) zTn5R2W2h##3$&x@hS7Gx0IB`l;dD@B{QOO2>I$9dhHfQwbdw%|3)U=b&qEEA#HBSC ze(=a=Nl1xgYHxJz+-E&?m|?wqKQ?L`?z>m*$6y1fsLfTR;B)`t)xC>PyA@$Hoy`s| ztaWsq;QnKPp-t=A?-+Gbkz80vjc=Kdk~IX}`B)=n)B)m-lm=d- }XydjOc1zg9 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 qZC{a*A6h8^Hx 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 bLCd(~ZsdO&e{WCyrK-7m=RRh!13UiTk2^1N diff --git a/docs/logos/revolut_logo.png b/docs/logos/revolut_logo.png index 73a3a62619c54c8f166abcd20f3a17ea245eae27..9dc935ae582a69192da0e82893afc18b43f46d3d 100644 GIT binary patch literal 4214 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 literal 21472 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 JPDHLkV1l3&G#~%~ literal 119079 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 diff --git a/docs/logos/ti_logo.png b/docs/logos/ti_logo.png index f1a9f82144b2692d13003e06293950d07b2cb462..ee7ee7ae83e7420de94bc801712ff4842d434fb7 100644 GIT binary patch literal 5295 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 z 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 W?o%vbe{}zs>bEq#1*tc_hxi{na@rRF diff --git a/docs/logos/twitter_logo.png b/docs/logos/twitter_logo.png index 2e936f39238988ba2cf8326d2501d410661269b5..0832934485ec9c5e23d799c085422f9b08513a64 100644 GIT binary patch literal 4863 zcmd6rFy9*mQHEuZjh3e>-!Jf zbMCkMJ2U5*nKK{e<8vnFt(FS@OPZG`C@A=9s*1WOD5zKe06cpk;HAOkSfM3Tei(Z>TM3|G!_*kRend~kcLRK$? zmY<*7%ChuIlH(WI6!`9P_oPZR;3aNNQD6TraM>>Vi7om*UEhlZ`J2^ftgNuPh(;Yx z$NH6Igsdo#)O15Lf~-vkDXKL683J0zad)@yS=~G5iW_;>8KP$Ef06)Zt;D?Ye^BGI zGG8kG#gjmjAp@wjNk(?(n^FM!Hn*ASSNGS45p8c6Ku!I=#bt*w5^OnIN~#LBC(N#^ z(#ZqdXF5c>l;h`A18*6M4hF&mi+Q9rBblwwp0H3#HeM9By%XWm8|J6LcSZEyN7bW>56Pe8j6M ztxwDQ{T<3xj{a$=fIVb9j@O@?b3XjA5RQ%VaVW=tQHI-bWNaBZg`Tu4{|x@#o-DY* z8)8tv(h{St|4m2Va{r7VnN#wyGuw}FLJ%DF*Ny2;SeYVqyWY>0d@Ca1R37_V;WmG@19ZpX&2HsQm+TjN`kuBNr?aHpD`6E4~{5={Bb(;D`ZR^bDZ2oqarBjaR zp!#QhEiBFO2x$C8ya-(K_h@N@AF?yt@~1;P%~Phy^nq-(t>f8gmu=m#a3>};7uT8S zTBOAFY3;(#fmz&zLV?3W)m@`Sm-(;OxZqp7Fgm4`svi`ub@o`bbu4=+1PcoyFX@&n zkax98Ofo##{On&jIIAd@^~kE|Ad^Y#E1Wmg9Fzps>#ft(iJtoC}qHS zn%Y&3VsAt#r7QCLX1#h7`{M9&0cK6D+{uOGebA4!16U*dJD7&Qb+|@N_6TBe?C#U& z2Qm8)SpEluXVq#FkY*+1QC#(1Rfw>uNs%kOFfTiq>k2)%Nv%nEX2zIYgwMy4FQA0`-j8cCIb$2gDSHiNA&>h`7buc;-nzwi}d zr`|2%) z+Qh^BERKOd>)XuN?(@3seDt!~Nlz_q_At-H!75hAi=bpr=k30@WjLDaQT%hC!pBzM=d)cmSsZh3}2$nbOD zuV4X2QDEpo$9%P30TW(N4O6&$VSt?GD}Ipsz@O)5ZwIIs{WM02h#1~wu-kP3&O%1p z8;J6Vo+8If`}dXVR?&Ld%WMMe3MWn{6f( zoOny-S*z@%p0(Rm3eWB$CTlsB$BKP&<6KkyfD-;f$L7M^uqbQkWLz3gebXDSJqtuRVb#4Ua1$&GNHN z_=_5E{uS@mkF;K|2cS zecpV+lHQouVYRcaP?v(herLupq}w*C2`E2gi0F>0VcTy@(9DKEzy)&8(=c8KMvmJd zr%h?alHKq5DV_1|>yJ-}u!H|*=%YsbEj&G(jr*O5@#HiqZbxL$%!)#Cl|%Cc$kwBz zv$*v7lPfJ3t6QL9QsIYA16n1cRiN`Q9)^aj((nJY(QA_g2e4s4ox>egs;O^Fa&1_1@>|HnPv4)A9pC?k6Uo8uC;BBtx z$UlQz58x4^JoR%p7b#upj*bkxQ(BY1cq8do^5Za?DAUgm>Y_lSs}5qf zCPOo+b+e)NYW;znka?c@+_C;LFN*V=>#8nqmY;_GQ7?kdhovgE3c604ga5PvMaIdR zPvvM^M1#+rtVbM7$L9LW>Rpzqfh+e`jxF;=d&)q7k*4MGx+3?ym!bYm@9p)cLHoPa z0qT%Nvdw>2ksf)F&6A(CJPT<>J2vT8S5ium^bAjNhXzjiTlx5+*+JPs2i%-qB zNuVO}?N*+IS&KsQ`#Ie^*X8#~%he_2J0XhD&rYQGuTpg%{Md9j$3cx)PkD<9q@L~d z-mLiv=+JjsJ%=HLAA|IO+pGHV=cUuX*;Uf9C{0{b zBp+QmOSZP&aRrheB#q_N&FY^z)qn6WHFq9@)hP736r{o24AX40ec%KhkoS8mnOm}0 zgc&N7CdT!su!(pNww1aO<}iD7cKAc&bE~Egk>O=t$-tYyN>thOvz-gPv0!C{Yi9ZV ziq`4FoUu8oi^XZe5p*IWgS=L zzzoF=<~#|_I$FP3m|)xKm$S!PET7)qq#gRa>-H57l$H;VJlobwXrrj#=91G6iz|kM z8}PeR&}nu{zp?@w+W`E*td_pJL4(T%I3~G7D#Hv5LCR=ZwZlId0vCAY2GMYeGa<0= z$15=go3j7h9DwKro(7eol_CallIF=jHzz)zqY_?OY^#6W@jWS}IHTOqJ2uQU$7G6D zq;h8_s3f@&&ts~vp6MVf4wf`bvWY&?_hq;N)FYplT<}dkD@=Wxc_c5AgB>x}4gje~ zthGzftK)RJI=$kiKb|8$cz4ilG-}5YaFPI|p(wo~#liw42c9OpArSy5M;3lEjx-#` zny-9G$Hgz@%U>;}j<0PVLvI%bt473o{a6sG3z;T#UQgxV-?d&d#v{hgi-^^{r`(v4 zTj#k;A?-RX@qV(G701U=cJU6;bhKW>iDZq%6y zvyFFBP+a6KOz88Eli<6%U#-+2P0ob3hv3qg;v;9a-0rXRIvidt6d=+bjP!9khtMXV zPhtYNSWWl@j_eqpC`T>l7?+F|)rNDq`tgK+2I{}I=_}HETy&hRl%}5iT_{>wF(=Vl zq#6SA?D*arZSGd&G;_R?ad6o!VlwW~V0|{`(VXl4a4oaN!DBbuwGZnem{l*)MVgpj z#w831IBhrrD=~2IGZr6COjQ>u?_r49PxRA+H zB>Emem8SlKW~Z+wpJD6AO@e8$I0NfWbA;UzW&4qxM@`6ZmHx7fFFHZh=4ye?lp{U{ zSVZ`3>Py(R<#Mx<_Z}YsV*srP+rXqOa}b;Ank=fDT527tO7s46;BA#;Y%=t7^S=}hEToM@rUo%pin2C&O7dW0wG~XhvxsnEHh0*#QK=+N1p}O?XL2VoT zVar$HohG*pac=74oQlZe2*31E4x>r>4iXDdNPoTSdIhR@4{aA!5|y+E#Emi0Jjg+T zV1@YQ7QInxo>+djyuqNVFqY&zFXxiES7PXsBb`CoQm;>z*4hg6A%1z58Vr@nb4^H^liJGUHNuqb?$EL-ID;tY+WmrhkBmMomL*NFfcGx^K zr%XE9z~#I>#a+^t8p4?*GD)Tw&1|1wG5Zb~gTyN+ZTxnd@RUd%X>1K{`#b^*XwyUH z0I2V@cLk;LDEjFx?%kK5DB4mfUR{rA({aXaqE zZ3HhnsKhH-EYjrN)8EZPoe`~m(xwEWk;#nBAdsLLU74t|9x!0e zQ2EpYksoBhUwUP@ZNJ-5cH;f!V1lEQqf33{hj>Hg#ce`m4%8!eHKcTJA$3A}DL6#< z;80GJ_UtLx^J{wcDbBThdovv@o$eMZC1UY;hdvjyPP4<|rpM9P-7g?8+2CY;vDjh3AV%P+J=J;rEU5q<#UdnKG17)3)J2J=2kVX2yt z+PTF%vGY4D{0;DGO-z`gx9EA!V zeL-?`TU7~t$YYt8G--9{66OY<-9$3pDzqR-6;8A57jOI{Lf_gRFLf^jIjv3Hs_H-p z2M^X1fQ(>9%PsAgck8&%7C{>>GZzjnY0G^gPq4~3>q6<&HOI|?T>|WLMi`j?V{CMrB<@a|WZf<-n?LtYFRa`l!^>0F0EcH@&2rrMnVYx+WS zv7ZoR*}g`5X;k%5>269SDA=C<4bXQ5+MIjTs)G6N-SfW_W_i-fjQVdUEdRL%YW-jJ a4-VA*!fd^$XQT8677z%;hB;@5 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 Xpg0HBbV-N*IE6WT-mpU7_3FO?;QqHu diff --git a/docs/logos/ukhomeoffice_logo.png b/docs/logos/ukhomeoffice_logo.png index ee9cda4e02cba5b3c274bedeca20348761db161d..0696157482a07fc519c721b2c5be444b5b97f158 100644 GIT binary patch literal 8963 zcmdUVRZtvG@a6(Rf(Cbo06~M>;w%;%LU5PGSsa1|3%bD_f&{ zkig~lzsIY(hkLuPW~RTMn(3LIsqUJGiPO+)e#Zv@~S=;L!7>0zy zN-l}kB5e&V-c-bZI9BvLcwf1;vQ@37IoqrH`~m|2%u#Ae@&*CFPQOO{cXr{Q|5j60 zqyI<$-(cl;R;!{ZfIoaON8zO?uOb)Ioy>~hM3g4euT~t*Jw1iR|6)%=MlD7*Oaw=F zj+IIceZy10VUBw7e>Njei0Ml12k!M&wB-uI;_e1U+0e&_+uba&KPnF03^CR~H-#$1 zRYy%&vOBhnTA00J72>SzwkIrcV-=vAcZS1>Vw(3Wg|Fv7x68q5J$|O(CKivF7Yytf z6!`9FhW(%F-acV+*4xAkGxQ&Zw;1=TA)f~8{LWjPEu_vj2v+)P&K>Y1usOYOov4k+ zs}UfW3a?zAi7EE-I9J}WI~g$39n_fTFPN{pSyxhdmydB_oFP$r=}sP^?%>0uVgi{^ z_7#hNoU(*TMCq(rf@b|M)R$3(D8LPOL)Rd8fpnBfstR<7IkPMx7SK>WMP^~jZ{10^ z)B1xcJw^JCeq|!HhSWGFsYdsrl^#VIQe)th)2VK)i8X82t+B|Qo+5m=M*_TlB=&7~ z{WIrs^V&AS7k=ru>16u1@nwrDQHchUFN!5qd8v|4yz;H{e1cW1;-9kZGO0n*iF+Sr zb2eivNpR(xWG|lOA3=nEg%bO3Gq2-SDS#}`17y@>-2f^FHxi<)S-cZAR55O;#^3k^ zmwvCaBQ@7Ka!fJU_B-o8+QD`=hG!ybO{i0okdxS-$73YyYejkAxFiPN022nw^m9{O z9T5{vLP#Kv2wQyrtG+=m2?RhutQ`0DaRm_=yhlArm8O-vH>Gs`$ENmbW|&)ZpHBDRFpyLQ#)A{yUF-ia?u!-na$G~V5;IGAj4 z8#PUZj^(kN-3i_Z^`xe*m~qF`OGJPF-0#Vax>IbP?`9Uy)k=l~LE~r^CjqNwGr1|N zhF}r)_2UPtaxr2HFr>Vptcxa9NgIf-Yx7aINp%UAH*0EJTY*AAdcxO;oh>eu4GLX? zn?$t~_@6R4?uE5chUVki?_~u%%i4g#$s~=~LLQhp%inZqfGw&I@&Fv|J2Wtk+emm>j{m%Ee za79btPLCB#(^qKTo&viyHf?zjWXb+nTnjs&t-}cG<~X`^hHbHZdg@{!Q4V8U3TYNU zAQ}z%cDR6yM4Zz99o{-L>M5LM6vY0CJ1&Jo&Xy!ILD^C&NlRW>hgLcLF4{F6OQoBCR%kPJ;sBEF*T31(># zP+#|zpIM&LghjSkr>eQWKC?X+TlJBUc#qdDA=FC4YHh6BtCuaoWWFQtkp$#Z&YSiwH{ohBRS;nE@W zlo4*;1Xg8VrL%xu(6(f}1dY$Dgiy#px&n!cST;;}BtB%B7dybFWybNLeeZtKP4H$+ z$uA~*-Q@~Xfjq9XR2?J6hzhf1BNdxK#+KIyQ45f&ac8os%~VgiC2PY=FEXq7j&+aUkIcg z!?rodW=gTJX(e&bZ%86avcJWjQRDk7G^&_^Xmk=XOkIP)aHdxW;nr^^&mZ~WpJ&vh z{)%;PRX3k{-BT>jiC%>I)OMz2F0os?=QiD-@fJHxN?Wm)CVnNG2q7sj6+zWxK6x_o0qktriqCH|FqtrGG!OdNw5*Ie} zhs&gAVN$B(4|TSG{@4qw0)Lx7GD&`T$(`_%G<@w`AZx&2?l)=pCXB@zXqt2TD(ppw zwJ`jLk90#yuJ@yqpo{Xke|qR*K$RClWLcm&ZcXeq5-yaQYMi(a9?&AC2^$I56sqo|8a1b3=Xin}WI78>sFFv&!=nEx)R;6jUi5Y7r)~rUIRh zo~&Y=&4EO=RY|?Mexe44&VD+y1Fn+XDsMoO?PmNXR>~7L_n;2vyc7g=Kb8=QkF6fk zXT1gOVtVy1wMx6MkF||7Gh0^fjc(K6aL-t}#xpue)2)w|9~hp=6jB7x7&SWjbu6D> za=;oiGp!MqZmD&pQ%A)RTz)z5a*f({P^(3Q$DMPJRCED?O_!Zdl z?h7fh9vyj}q%(X}C$zexj`b%r?h+yEbtYNB6(GwMa0AK^zyrZ)BQ`hvd*CX<`|+2> z8s)B;As@l%BFK>3_gaXaE<_njO-_}*GVV_BS9v2j)JHr|0R7oSj*wwOtWR&r2;tuE zvVpG!0!>RUj5_Ng_;;qF%|Z{T0I}|ca>4{RPSRqvnbjIYUpb&G19@7ok5{B#E1CnF zo7~Z6DdXp+F1Z7ZUTX7?#qD0;|TP zsjL8@?ytA#*`6O2o$djUui!dBcH&~!nou{>5x}qP8QsVx{G){OfmAPLpW>Ht20l84 zS|$^}p5`{NX%*im8d>f0M(4v|@2jAn@4fD6frl`a1MXgO;L;Y^Bn~BFP*SVHSYM-? z?PkVtngRjiw?Svh?{MLlF-4g7OUU#h%G}2 zVWe^S+Bj}^7l*W99?R{lB+e1pRgmwG_fSF^oAT_ut`(JtTi@8QSY8u_g z(jLxFL(n3<3V8OsI9*|f`J#wsyv%{&6Bu^c{w&HCVB4;%OPSkF;u!grV4(K!>4@^X zez#$qkdzJz1#iO{gqa`qnY6ndH(NhdWvHjpeLt2>5E>Zq zTkoqyz}gze?<9%da57(c@vES~2V3VxxT)Wo?@HWW@~)@+QUv~Lvt57adOHXIOUeKV zUv=}Vhq8ts(lMlYTB_G510=e~D1=3AD=mg{+yFakcFsr6r^k0wW{P|St>&XfhL)z? zUw%nc_54M{;zA#1H5{Kgx7^x?6O(3eTk(*m*wUH?7pKYYj1wfg;jr+E z8%6hZ7CHZmBnqsM<8```AnfoV3c>R`17yA;w=)a-)G&$vJ4khd!InB-DVJ+=WTyF? zRGt97*lKYIu0D2T9+&py3&Q(BHX|21ybDH@vroqQ!_QIk-dV4Y5e+hzh8X+kpZByc z6I%aZX*(lO>oW=YiM*V1bS%`b`Nw-t6k$t=KM*pnq>7b24rvgzB6NiQG24ik;T-EJ z7M1fXQ*8v|Rz_%zg($!&@0D5Mr@*<&l5_CZ5Ik2_{pum++AZ7Xv9j4>b=@#EQB=*j zPjl%0EgVUH+!~?WSnZ9ryfQ~GbG`r<`W1feH4{UWB{jI2|JWvxgvQ)HhJl>v+i*_A zczpXgA@eXGS)#4cnlVQ#lDJ4mBGr(mg^r1b`EaO6T(6+0~5?w4p>qQxdT434i#pGIEHh(T|(~gF503 zo_}bkwnHU9^ct0l1sWcJb+qVp;gHz3b(9xhPd9|APHmVOuXqdny4l(shTBb(e`$CS zq*y#340H!{>VOX1isEH{+>g_B| z)rw`dXdjm`J*P^-Hfmre_*ltP3|JPHoXtt|@f~eJZ$awTKO0(dKm%XI(kI619jk6> z3={X5?`By;%yiJqs93L<&%-J?;7YWEmb_7Xta8+TD@|_;7Qnz??t##HMpjXqQa$Ai zWaj=v3eWJqcBlb^x#ywd=1~#q?ldG}UKNdLJTXFOf;4ePxJfEHc~}wxvEtfhMFi~B zpff$|kEXC+zOI+xS4Y^VPH)KmyC11vr~_edfJyD4E`iCKoH2ccHGdoyk=D$d%o=v$Cy$TYBW&seX@5>%5#V1hhm zFtc6b(ZjN$Yqfg?EXA(!tPrD{ z1M~O>8k;Tleo@z6{@y|I>N*HL4((qQ>G;%)9fRE;TRV2;-ZS1qX@6MX7=zaDj}WgUK97KIl=`8;B9eA5BmACG1b2ril$LdhJ+;B(7a@DS_%rA|OJ$y@qH%=Kil+A@Hei~Wz z`y&J6S%m@4r{mc*?gw}8_tuorl3U;fdJU6y6$D-{9ne})$A0X1nj1~j9;ai(!3)so z9AWn$-Up4A2fxq9w_;`o5HH=8?~}|ie#Brt+r#yjPw>~J0Rk?Z5N`Dw zFB~Bs%*!Y>4=Y!Equu?u;~OqOKB}#}YTV4ll!2qi5oEtVJ%~yA%&c^DkqTdi_l^Ws zeaXUX{LZKSM0l>G?Zkk_Dg32Ml-*#wIND&);9e|9kkLH;cQwCxaL#t}`}i5-E$ zqehswDM3}ogfaO^%ooP-HW_75%2b>5>>j>TQ)C^#dbZ$c=%-2BPAx$yPPk{wY-{Kjpf9Px@J9i6X!7%; z$j|-gR9^A+uy5?bMOP%%2NE$3fPm#^AOm!gbt11oD%ltGw$am>*tDtmJ`=8OFV#d` z0}^07D<1vtZB9hEmsl|?zNq%V7{5W4R07BKsO8*E1yhUbai+JpvRHCL8TfbO_`Yyc zU}bkRHr>mGa!N{TUIvE4u|)+RR0~2uK|BK5o~-Nxx2mrj;VB4}QyIc5_+r1ofn`&h z9hwA0c3(87&${N(g4qAi>s3zC;I%-guw*7sFCQNuTlp?_!UvC*oY45IRT-YJ3u!_ zPP(%vkZKry!`p*fJ#J|Tw{c_t-cD(18<$?R6(s%=c6O!Dn*815SpKCnE#QSS%Zew_ z3ggesWQLS%-l{d6!!a*-R0s14{?PTOM?W8&h{fFPO7{u8BKvt@vC-}|M>3aFH18PiyCU+!fY{4|O^iIAW+rzGOo3Ubl{Sx$PnegtD0RB4-zjF<%iDn|(8E>@fVDb`1`l zDTZ?^Ri|wuHW&*OBZasO%B3fI$&?oR8m1z>*@Bd;>ES8)Xoffc7D`t7mN-2Nj<@^r zXTnyrRku+f$qNFG}-Tr+OH z@iCv;wYa$}^8ARn19!s06x@+TpJ@Mb?17%1cm3bg*B07r3{d>XJfS!4$h^_YVhbty z8ON4ePle={7!1ohf6aQKMc=*h#=_l*=KeDO~?%c{lI?@12&19))OKToq_y7ua@ zcEcD)?&CAd1mC=IA_Fc~(Ee?DPHs{9eo&{zgDONx?9TRTTsp;4?X3Ns?_7sKn0ypP}O66y#_AE(z9pexR&1sP>FeoYGX0RA%h9FQ$#DgGK#`gG`%+-{|T zhS*~T!T!1)IG)u)LxP9j2D*f)uBP~o;IoCKtvm~oU_;Y>4+Yd1>#l=eE zh->LR>O_|HKG$zM`B;O5^za;QsA*21=ZwJYlCIMs&Y-f4%3>^==QR2<{OyMNPV=OJpELPO9VZ1v%8lXIXZCzorYkDu zow`RcAl;PBT!%FFc(Q_6kc7mfhj|b2zNrd?B3x{g7Wt+WPjG;1XNnQ`RuCMj@y&CD z8^X_h2+G@c<9>MC>w#R3555f~@AmB&>GOOL?Cy7pQ^W86JYGO1lCuNohU_+;i%GYd zgv=Kw45+UKH%knN4qRJ3VZ2aSoy_6R_{mrHWSlk$^!QT};!Gp+x5jo34pZE;qn9jx z|Hqj~1vhK%@p>;_>hB^Hgc>&a$r%I<&e-iHmPOG}!hHLw`Uz;Hn_tl+$Fh6rysf?p z_GId{tJYAqQtOx2YeZpmB{28ZZ*SpaEWb{WIj|6mVU0-rntLx_kV@t$0RJ*SAxjhT z%!LsPR_Ulhiajdrzky#mu#;Um;$cI_L6ddwFJA_#+cxkG_-OmJrKBD|50X{m`PF$S zT7MEA`>jcKwE8Yyk~ml+I@c9YiEe!CEK6mMynjXUkSdRS=8rDEbYz(vX#Yn0t3@Ye z@|MBvj>KTrQIkJV!1Ydf#QCv|IB640LY+lbYw^rHb3H4wi+=3}F`C<`zkt>PI~jv7Lmq7-e&t zXqTIw%H8=omUL9-nap4rHW?b#63Ts;uRA9T3AHzpEaCHK=yNt$^qF|+2#cIAvvvh( zq8(J+!yCCfq5XbLcg3Ynees&fMKsi7O3n(XI6l>R-+DTJ_TGE=0qt_u?TeK^Ja=n% zWZsa!wRHjB$U&LApDA!sga-Ac)@G6Dn6K-^VoyDvNRpJ2n2GtcMODTz7+H0jfBh;3 zPumf;x`-j*5}g~J)^MbJ+&t4;aaeV-)!o@VK(hqt_ym1WMZWRW74EA7n}T@Lc#0 zVX`-B4epGkb8wji_|O7e-dS%H@6M7gvQ9DZsz>SkOxwJ{Lde2X zFevq=Ec(R5CU3BU+83x&f?a(dPC)%@u15oTuuY>&8u?75IStm+%CXmMzKgPKiPFx-NtrPPZ z&%}cYWxB0j4Uh$Yglo?y)e{bDFIm#Y1YKiI+%*b3c;|qx&6(q=S^vSXJPL0 z)v`*+a`hyivm8SyEs)CY6yo|+i`liB8=IzNIF27y{Gs+y`=&2@dXSsWf5f* z=ZH!(P6na$=VGWE8n>^9;+Y^%E^Y%Qvs(tp_-lz(4rrL#{daY~fVNR`1PQ&&@qrP4 zuAlH7smL+OSdgMF8R;+!PhZ}8$jHNGU$QOi+dR;8#_f9dTdA%hTFj1~3E61Ie780d z)A#n{HSO5g3+&wG^UA^7vkd!NiOOB(Z2p_1_d&H!c3rGALFc6AR3`O} z>%-ubQW$Z0#b)!b0bx(&9I5Z<6op-LP$^1!>f?vEbAKo1I=&@*SWsUX4JlzADF`1O zn0Y~$%+Q!CO|Bk$wv-E%a)!-}9MIAw%9Lx>l$$*BK@pu zae8{Ugs?8iqtl74#EHa=YFe<6I5jz{ugMF>q47|j_+4E`-C{n}Sgi9M7x zR3MrUO?E_#8`53PRC5PfD;jTGY+8QHkxSdW^cAP2$3&Dxif5MH2BXH!=)Ubt4@aI; z0#gqy?pO&64h{D#+7SWBxgPnw59od@{8{I9E$uqDnnw#J%U6D>Bt(}*o{~Y*lfX?H zsY0JPugcfTB-8iSS~=R#5_>c5=*RL#Jk?9A1maV>P_09n5Js zT<#kgLn43ra8o%0LOLEpL_0p>^YPeOIBR=pi9TsC9u(<{SAgQS-hBRwr|uq?*EcC# zAxbI0N?ZRmS7EyUC$St|}khd=U8MB*hlWq%_n)qeP-Tt9*b4x>KEH4x)-m(}|@ zAU)b-q85CNYmtAYMe}`yv2G|)fXgmW2^^+;p%|6z@4_^gD{$dH`izQ(M*%3Ii<|ZH zYz590dLL%}ILX@|Ex)DMBVRx7{??-Ak5`i%C#!>@^L+2TMkeMvu&<1mBys+W#f533 znuUnJwCGDN{fX&(88Ibve>p8Degxs}B%EuXbN1e6*WY;ty=TBk$4y5;LBV+E zuiN)2C@A;OUl(bBZ~DgYNx+{=-hVyvrJ$f^Ie$@7rNx4nbAlb_&YCl^lVg0YOTx2_Yy^{)^g zrw1YTOdUep9h4n~G&Ka(f>Zzko=$%Df4{~?R?{THhMrb!3c zdrQko$((QNpMj1J{~71)@8j{$X{JeY-UjGZy|M~a- zFaf|`W8?qK@jqRQr{{mB@b%LR0JiZjhWt-Q`%V)%>9)O}le*Bk+$3cbB;^!L zWffJxU=>-2qzqU^M&`eU8hbgqItTwRhJxk(hoOMtINJN!|340PbWm~j^6|6>w(RO@ z@8TrwjdT$b{0}2lbiF*he1M68)ye;}3S(oHJ4jzYd!&QYo!ja{z^nI1dcYf^fSVrOB&)@cP@IROBzn^#f|M^=Us>71XsbEQ!E%heYUSMa~i!~>@%|9a=)D)^5csMtH4>$kd)!?|Fc9EJY%wd?;j z2mXs}Ai@bC`hO$t{~G4&Hq5{|M}m4cW(bZ z954pwZ~tS7fDiw%Wll)IfcXHHN+(!2nu5Zz=gw_y)1ds#*}yPIv*VuKq1T?(tyM;r zxwUTyHw7BvdrmJ2{JT}^RlF0&MCaj)*&BPO zi=h?rIjV`uqE{kp8XVl+Mo1W4=tQ zz@J<5QAlU!EUN$W;s5a9|LDR0k7t3=Wg}vD^-z!RI{S#$P2J{#!Qr%CMJA+mExHIf z_4x~9vWnc~NvX|WSrXUb`aT_t9D8H?4P_w}NW=wwD&Htj@K6JVZuD>LPn%Ct^78T& z+|}hd;qsFw(%`gsGU$zjmT&0Wh1U2@Y7^IOM1EmW6J_i5>3c?97po_`OAFrRB~Xh{ z$3`*l71;8>q(9?+2|w+Vlb26V@CbD_kjn{Q|C*pA#f83}o}(PTfO%j!Est|44ZJex zk)=(ozcaH$$N`7?9Nfc&??t_f{t@*gc&MH3Ow9u#FTbw9==kytlNak3)jW9i@2_J{ z=!zuDR}A3M@jcv9WObEi0GkQUsf==+x`EPynoLzdZ4SCgF-;}k)pklDO}ULb;vVSl z57E3OWt63D+?AuW&Ng?p^lYvzU#BZtfZCyxARq1C)$VnJqu-z?>*VW{b#6}1qkEOK z`%QP%QT_vJ^2cLyZ5fX>XvVZ9_lBr+qqyv+?`B+XkoRV;l6uuM4p4V{Tht(pZnVG1 z;@pO{EL5AE&c1(_R)&6p^@w@r(wVgC&W-sCcDIir#9mcj2JEQYI}7TNED7p0%bKF~{?$rs9g&kCL(Xu-~xKUG@05?Z68K zdW)N*clp5b^5XBusY0@txYucSj%de!%#FCXS4+^hP;D^Hq;?NkFi($ZEv_nR?6$$^VljmVpAsMHV_r_q zs8!|jqH&mk?kq(?z8}k^Mb)4iyv zA3xe`rbx6PCIMVc!nh_^U!U%XN{9x8rl?ZAS*P?X1*?r45n{i(Y<{ElwTAXZGrpzDoUDekE-i=jQy7)hr>1w-v^s$4nRmzjT4)3h$6LYEAZy8g;iznv}c-QXP_bGmN-8 z`BS@=b_?IpB{!l0>GtltD#Itv2@0jZ2OYL~DBn@66gfRI5wU1VXbFet88tN70CPwd zIa7w)EkfsBlKv8Ao{VZLV+JAh%lF2k8esF5OasiR@O}|W0SbYlv14%r_mtB75GIqT zUMsOyvY^2HLm3_UylJ{8p(iz(ZLgjzzKyq}wAJ1lZ_tV6ofn#y2R5WNAG32N4PD6X z!0usJMi{Yp7!C0nRx_$=RV~HK+1Wf#g5Xgf+jN&&m*#oJl09uvg?m)^$i#6xrtd_V z6^++f9I7m4KaIt{Sx|`7DW4UIcE$ROuHxfjHdRC?C2ea@;CwPXb>FW)vU6vhPh{oY z?($~z#M*X|+G%aHC?nOHc7v!7MAf2^e+_Cw1QX-Nd0A6Dfr#ghF?^NL-&g{X*R?cR zY4NA3CQ5(;ul3BqvdE4L^{V}O%z_-YTU4v?>9<-ETiq5!pT1J7;*E9UT=s(~YPvz? z%cI@`sqn+&4h0q)dB#t1Ghqjr&?p;bMrLp^e>C;5@tq~2w`U)48#1B#hC?%ubzM25<`fF2@26Pqw1dJ2)j?+9l4&HXvsdy!n78Ngjd%dI*Tda-iu8EZ%HDY9+^8kFOSUE@MHwn)`Ab^#Rp$gB8dGws*#Lt+>XE^TGK z`2^=%B?iBD;4uHr5BaL( z`@`{!7R%t};wQUTM1wsHa4%k^R*%xh1{aw?4^PanH!<8ZBm{iAp-ZD2!=~|JzK%X> zu}e1Lqhm*|H4H+&tg<2!_8fV$LRa$CXL)l#AHpY%KHiJG4WTY8;mL@1;_d41KY5mW zVgJh}{iO4o${m2wVoyFb!1}^?GSVVKf=K*H4MB@)9Bub>C5fBEN`!Bsf=^Gx;Y9+*wgxHKCq9+~H0N<_7I6 zj2L%$&zE6j23o}Ohk$Tgr|!~f4$aNMkjDFos@$ksu`!{w`K}-1N3*q~Bc0Pcn~Nj} z<{4TRoc#^7inkxFrMW=YTi99ynTy%O{3=Rd$?X##>$SMHq|xSqMfUcmwJ|Ft@1M{^ z>qAWiT?D-Y(iUIlJkm66{$81L_s_jwt^=opyFMK%n%bLXOYHX^#jSlRjD4Gj()rPT z*gvhA{NiUDh(YU4fUShj*7%=6e8O^;0cE&k1|_rMlqxu1Rg5luyS^&?X09_KJi`h9 zyt|jIUom%9z3@cpmDk-rcv`^SueeM@VbV-MugyzV97C)CagTD@PO7jM&DGPY}n1Cg${X&35+ z0Y(PC=T)?IxN7xgj{I)q<;nYn(@IrE@kxvU&}<5J%r%t zVeYI!+HXvaPzq#D)HBVbY!K)Rke0zHzG$KkA}!bAf#zT zDeY%+ncv@eNrxJ_{DCUDZv*cry#t&LOySZh-(&y{j=A_FQtJ)Vu>&qdovO}Z+ISwIf#&H^ZB^m?eatrLsI2L_`-%C9Sv;)_ zlCY2qjZ%lPdxw^B=62#9ZpEcbLKf4>!`AGTzI_{NQy zCSL}75%uiiTZoGKm%QQ!-}rufS-Jdb#T)$E8?-hjT_4b#lXKtz?2lrPW5}^pR&~U5 z-0HWkEjz!7zHg04;`a22(9IvKE%%NcR-Ns1eaha97G<3|iTY}|EmS6%JE>j*Ei3wP z{q8F=-!no?O`2gkd4ut`1}kHJ@}=H{NWX$)5_m189W{fiWrhZjJ}$Ia2)8f;E+%zU z0xj)ki+vegR&DLOpChugSYDl1SF$j!5HN^=PuoM&~yp8939&@(0 zaJ;avt7aPFZ|w8q%b>wCH=YCs?TW)w`Gwte(NzNo7yXFUfj|j6fw*vtAe~GDfn+nH zKb+Z*#hdHf6&WCeEOm}|%8;iyXD<-*@=YGb5u2CPGF~3CWZVr9egNa_0_4|E4KURwlGAWtjy{yeG?KPfEtYifqbDxEtHw> zTUmq`!xOEH4{gznJ0g^tI$Q+buAz@^pSmrY4g&x~7WtryUBz!$Ti2RpbJEA0d9xZ{ zw7YeE4X`4r$gw(;Um*BN<`gwhd|)&m^>8{gs?=Ov`rp!Dt@kUkJi7%f+GQ|Hn=UA%uhb>k&* z;}|0@f78$u@tUp{)eU2C6p9k+dD`@2 zWknsro>^M1JGpz@apqfG#7{z}t_x+SB`FYci_SCnTn@nd}!s0cOS{Qy!WQ1c3I}r z#IuQNBiZ~)WHPPZTgc1TJXGM*P4#n3mbA9H!UBc8EQj8iz!%MvL|Fe$EV<>#98c_~ zvPc+5-b1FGu!)X%ik7aiqk6~;AU`OTCEwZ$Jf&nw6BD;|BvlX#Xce(}H~@>8c13*o z^lF$9tA-1Syv9rZTt)uDDv%Cjl9oD^7xu+Y=-`D$Dy^e1FYuQV$re^UwTGBHwY_>6DX}47?3rw7=cLw1C6AtOzxOO0 zI0PzpEa{07^Gv2U{rSM#p`5SWD>y>b!lJ9E7Lh(G&_E*K4MM+@CcPO06SfV094B1I z3z`1fLV!271l7nhfP8S`l&w+^3R@l!81!;huXhn5wHKGm7s}Mboc3(e_1I=;iX7|p z> z!RVMinOdxd`@Qb$;(GN`MqQWyIe;!4i|J!cAtUI?>ry1Se%cA-VANCgpJm*XGjFftqn@~(c~IvunLzD z6Rc2#FpfAPJc8NXcFKA| zi?dx8FVcaRSA69S{3Y8vBx&dAyQZ5+7*~(1d`(2fGG%LBxCW4hJa+7(3#+#C`9t5d z8~|qAG{BND@uBo<8UoL=j9O}_&8om_=QwVn%>ybH5OSreQOBBXl{Q~N%PVa-YY=;#SKkAOJJh-m7k`6L^ z6u1=3dYNGG2HuW(n{BL1c?@OM;wZtYavKLy3%?Uafxu|)-FBuPcl+KLx#NU%%h~dm zW-yCWNzqmE;Z>e84znZoS3D#OuLF(H;l zrcAfitC?;@Wx8Q%7?wXO#y#V10|UHh^T&c(CHh8_^L~W>gNZ5F{TU4mwqI4^kus7W zo=7ai7GO83Hj8(f?pTv|fq+-DG+0YuLM9{7MXk^BMm+$%4Mpc8V!FT3qVuALisMZWb!Jz(hGQg$sB9Tl zn)p$pE+eN?G-3Rs*<^#GQeEpE>aOzSQsVo!yy8FvQ-| zThATRTHNr&p!@4Zzs|+Ow+0r%#3>+Xo&+5eG=J@MCKwniuVmC0Z|LqNZxuT@fQ>q5Ua<#Di& zc9T@~howMoyrlOq=PH{?d}% zJv#n1bju49F96yf{Zl`h=03a97r7M#F84HLK&#fKi zku$EXH?iL;PAb2kLIrvlRaj(B$Xi$!@}X4BO^l#|`~6~P&97uS#g+K?aFqCeO{B!@ zO8&uATl!8Acv-`)HF&JW>}($gj~`OfO=TBj+bkzsd;<8Gi`^P*Xj?+zBb}nLfjtp2Y zw?|bER#MyCgxqYsD#nqg_slaHR+aj#i^PfQBgf4&{Te`QL{QSr43(G@4@FGV!{iPh`$CM1Jveu|jn6I3#DHzP;`XHgO&xVcz}RasQiT}Qzlt{Q z;?g`QGUW4d@Uh+mB2a#mcwrp;J4+W~q_(aER(8si5#PqP*3JL?ZM@!cN!I>l)~|`h z?0zipXPcDs`m8Svif*(7b}l}^1Pwr-;$-3482D>8RJ@5^bOePrx7c12ebc3vT!*a} zW}%Kv5i?h42Ga`X z^e<`n+cH3byG-Ekz&3l)k_aiW%@YQ?L-d&DlH7cWn}57fSw%|Ith8fq<_vq9r2+Bu zWlj$4S5!eSZe&U^n?tkh-PJ@(Mt_%Bsy#)F>M0qz4#E2`JmGX3AoD3*tqaM6p^3_H z-!nSgtG2)+0uy2+b9bRGQv1=bLhX)V)<(A{X{+Hg6#mJYNpxdTNUD1My&u;sM4hku zmHe&gB&mXA5exGTn5(agN*>`P3XB+kvlm?i4(CZ@>CG=rU#mW~W*|+K zd$y+Cb%6a#GE+di)bKH21ioUsi-5x9k96J9lEzu|H+MAq&aH*@%U}(n8Q9`9y2=Fi zlP`5lS|EP8ywb2Dl$5cvU094fyRzWF2aWQi@3DTm+{{rwcnzW%u4ec_d|AB~`%Md1 zBO}V&9&4qQ3O|X|jy|zK7|!+~rl#<{1Da$Jx>Y=ua<=~izRXRlveMmgu-N3`%tz7S zl_1OF3sv!$Y935qxEHJUHsG}hTG2!!`$Ey9t&}Y3S8;D&*2RrWCtk%Dvy-cKlo;!V z6N|=n-T}e8hNz6oUK{t*%KiGgO8l6*wrgu{?ZPcmxdr-jPa;@J;p(~VB&)PVjrgln z5c+M@xG_Y2y{D9Wm==PXpX_b05b6qlw-Y4(?Y<_PQ$Z>-ULcif6Nyy<>upf^^g7qT zI1ZIXs~~^pm1tb`Pi;q;yXQq!AnPQ_u6V-!YDQ~HdTxC7~@G3Gc8!*hxkeGo32OH1mj!rx%^b3r4wYKE_V zSV0%d7%#>6@T^Udg>t#GZ3PNi7B`+%&lTRj;}z$A%vdE}Ivb(1Mk1?yi=g$d(@aGI zDaf-R*i|%OF67OIe1;rDW-e7p(XDM4kL|$yZ05k#7mXP$1wf8p>plnSE&e({Y&2G_ zhfvY|tvh1eksLftN}-D6$&FEz2y0Dxv8w|0Z@NFnbUG;dF+4(v>?tY}i-ZQ;w3rUJ z&G*Mu7ZXIk;osQyl5y z`_+8#N1p6-Uk?yzS0hX7>Kc_H`>fmw)i20S#fb;Of zCHojCL;|te*C4>cf}P1RjA&lh7oXW8FaWMZAQ#39qJw~OSg7sJth15ZKPT#>l!jr zC@ebZOF!E8*_aA=B}~@sfLZs!C|zts*38vX_aYA>>MJUhS$Df57m-c9ql7#DCI7keM6DoDJxbEXCY*f zs(#1%$jzYq7ols<7%_9oyh>9{>7Om2yYgh?*GSkO0yLYf`Aumh0h_Xv72V1%Jgpbq zPB{zCr#QPbP#7t_(QL@o1B6K#z`R2*-bg(#ahRoG58M~E5QmGaMQ%-(V9eTB+(rg< z;?1=>ybf9-V+~shCSu(YdOwCLbR5PX;e6Uy{o4%`W+U?mxwO#XR{nwHb~dLLW`^<6 zxat`%;Xszld?G-!qmR2E$zJ!_rRc+{eAiHoNF(xaHCzse&@d-I#zLe@%}Dk^Y81vm zO4&5a)9Jf{{X*x=DY`D(Z&L(7%HMsDurb~ey% zB&FtUqc)`>=7B{6bwx*Y23U|6DfXHZ_K44)6o- zOHC}xqM{de!@;SisiN2UShWZ`b(8IhFXq}(o94A8=M+tu0&M4-5&R(^0kizNITe~5 zA(~sEc)?hl=dTL-2nxeoRVj~1+Pcn_qInHE|K9dwsx7;Hn@C>%Y(2<@^%CVjC+^Ns3;P%j`)h6^_w;9n@Om9*@(9--Dy+4% zE3Jy9*%5+nqixT-YqTf-)IbxCIl*%znnrU!8p(Gm!rNzjOG$mVlPfk-smN@if-98~ z^<0Kop`8ACh3qz=)}IC~I}do{s6xQ?ci89?|so(?yHO&tDRgaI9x&)SVLiV8IVN7ee zg((S){1?X|OlEP^PF=dlij%vzYVu9^%jH`c7mpmW@ z6vs%3qw`|3e|y|myMxf#K5$rS`kEJof@wuadqqNby!2*IEYYq(4$!`EChnC;I@AvX zbz1pz0l2$<^+~Osrhn%YPG9Hkb)Dm)Hl=*7yhgrN8Nr8DtCAjXP)=AMo;Y*B9B5pb zWl(z#|2#s6fN7W9f5{9bQHeIB?qKKuItC}RhYMB+x&4LEGqO; zUGbjY=#MM|$(>$|(-(!>f-{wP$wD9 zn@I>?3cyW;bDFt^(oYl&UP2s8?o*0l$T!sjdEv(!0-}q=LQK4dTv)sM8h<2L-CQ9h zzs@>FfGg$W#4Hn{?opt@r#a)ULr8K<_j&seSju$GCK$rt?AVtCtRz%H z4H?taJ`EGJWkw}O^7|Vx>uGNah&~(yqGO(7!Kr9CJ{`Ib z3IEeG%+qx&Wzg#mDNcIgFhV6hunrr}}^e+NaApD^AkD~LNiSXe- zw5wGz%&gu&stfve+{}x&BQIXF4B!7ysPoLvGEMv&)fzXRQMdu63jy)0cn%fT(=>iO z$m^;@>9$_zD@LABE+}lHolFP@KYnIi8b76;*8y8qT|T%RmGn!3ZrVb3_Q<5Ty5^Co zm5VN}tjgn4H!~~?s1P1JFw(t0a|5Tx=w{ZQ*z^&iSH9W`gQ~NmV1N&(yqFsLf@hpY zxLVJ*!K62oWMj(eEc-3MOMiAX?Tr28F_@if43=s)o@?7iy9I<6o1Z@QM&b1(_aDIS zjJHB3$1S1rnrba16HJeN?9Ry(#KeLiVDu#5ZvGePj<_-&X4{$p1)`IjQkrv&5B>DA z`A;Zwd=E8D>y*v#^7IAJUN2^UO~&Vr1EDA{+G%(~UNm|m#7F!S-}5o{RI6C{H)eF! zlL+VVi2GKwYXJh!kxUUWRA=27wg~W=_RAzuCjnq`UXj$~)BOXBvpLC0}8n7CyJ ztRg~bdpL&FE6DG@A#?wLGkeeICsMSK9o7J=hZMLApm1` z!tm`eSnKbt z{pR_M9d^t)EAd=cI~3*JR)`)u6JIzmLC?2P(jAT{kkxnznLF~)Nd1H&A(g#O|Cv<7 z@BHkCjRHVnaJ-afczU_&TNNWGPO0S`5Zi+Ke!;{8dFjFc9MK>ykvx*#fZ1im3qY<`d|N*}3OD>g-o zNt(Hbeb@D**ng6s-*HNfYp!C4$NkE~toFY`w2=A0<(uxS%l4U7+wz!(PC!y0O9LCF z5qU=LLoAEV>EaiCS;eZWFEv&y7oyD%eg{`hGJtj#I|=RDle=i-5l>e;Ui*^&P;u62 zD~7Xw=zKBp1$xgs9Dv@+MQ(f>HR{cfj>CdQ+@e5g%o!pBL~ixYzlL#?#P%-i3Y&tL z{{m-tUvAtz24TKLDtzOLvO0bUu%)N8fYri)Z-9~Q(d3@j!mjwzvU@DmF*9s9KT&Q} zK;L0~y|`j65h~Lv*WyeAUq3_OlG^CaGMm|s6x_nS%mDxW`jbkAeT1>nIB4Nm6*_Rh z0ed{XD>@y{$u0Jf@<57#`P7!b;FOu}J324E89LN)EZVWf1lG``K9FJ1gNV_?Qe*zf zy&2D&uem&lRg-^0&3}5E6x&V4P(8Wf_FhVBb|$+7xhe^>0~!100rmf2OdZjIRYLPN z*Ke01b|PSptv^lNStu5b?UD`D+g|isU7ml4t83%o9@i9bDzoJrBwltS7N%T1ep_N5 z^qRkJ#-R9G?2i$p6W@gcwAn08vD68dQJWcHS@5Q<@iv97QFnnFfU1a^K4mLN_ywcB zJF5K|d|L$VY6mHPeq=Jt`=qnJkb}2@Z}cxbmH#FrUHq8)7Q^ZYfqo=+!xzdP(RK?< z3CLT_o5gJ)GTSPfv?Z!JF9x=WU^YxTr9kaPvJ8AFyc{w2c1J#{dj%+RmI@57NEY;p zbtyXbqeou^-V0!Hd!Ise57=WR+O9=7cfD1Wu3iK^I+k*Ka?|TYAFn3kk!RXsdlVgZ zLvO{^t;$hL+V67i7ER;9K&5`Kdu8#*<4Pd<*y}o+9WHgH9>&$qj!cl5yV?nimB(NJ zzCbhJU<<%}49aSO%v;mqAgT=$eyxP2;&aqV(({to7zj286ZI(!uUqz28buhtiYtL@7*ko`wE^Le8#X^oWrd zg?1Khp-)#)v)jobY|h1bN!hTX{OqriqBY#yS6`+ktpg(&E?P;;{?!9`}J(MbJq3p?@TU~#v6ddRql>aQ|v+db6 z>b72Cj$0vIJTYBw!~Wv_UmK#+JKM=oO#{=gKhr9Dhvcht zM-X(UL|_TXMkD#f5B8F{`W5J~HKkKlWjuU1QvZwl#Z!Ip29*BjlGN>-6*Tf7`Rl-S zO(v)6NQL~xhhUQW70~)#=g=RKdDjeZ_9e~nDMU-SvX8K5s+OKBuzS+Go0Q>CLdCD= zX1l}}Es6zC>LjrA%EHu-7~sc>BkXh*bEDMe%PBF4mWkDQ+#cto4y>!d2?= z-L>z~S%l+-AZlpfi6O>t<|bn6WDDDfaVIKg1VJe3-a@pkHv$vZN$hT(+bFs5A^pYW zy*KQl+;Ej9{s@Te-AtmxUXR^(6P7EIdqx zt_Op%z-<2Mnrv;6+@k>k2FSFRCPm6?;zh?xzOb@01wY?ES9AOLGaJ-D8f~WlHi$>T zQlqZCB=d@-xXf!;Q(<&(#NUlnidb_ydI2K58C82?*mY^ObZe#IjR+K;a z=}fT*3v3vv@33iEGOt4AG*rn$B66>lYErRbpQZ2s&3ubfI)uhC_3F)^hb?>kphNAw z5fQXqghZ(#L2m5?XygKTg@2)sFDqI{q#6pG$of2c(taT#%J4mZQp~X?)a0{*J>GvL zY!3x9CM1t=uMI8p`L^$TVgb-IsWBdH2E(j%nZuum(TMy|#*Fy@hYpfS@e{)AaQ+ct zctG1!xPo#Z-HU!j?EQye1?Pn9xeBOV1A zX9#*fQX;KORx@|>JWG7gNUuC4zE zIGtAxO=Fu#YGfafjs&2Jnoq|hh5}{RrZm9YjhZhkll(4-vHP+azMZD=FXsr5l+Y^Q zxDNe36M+~6V36C%!$HJkgxZ-n0(qJwI#HMiU(ki7<+YALv7dID)L~;JdQo>EUk8x5 z=dfSWPw}^g&`d;VvdYzW2Pu@F@^br+_Tp;+r=LbbP~Vh``#2g z2w^pRJ`M8kYmbZh^KsRA(LaNz!Dt+>$|1Z|9*-1?;He67A|A+84SNIIEOi4pifY0Olq;l3uvM8d^o3vL~w!&ur%<@$Pk9T~T3h8WG@X zD@<(ai;QcUv7iMCkYWY;x)iDmzPJ@`5k#MDdSOi0g)#AA7iGX+?V_Bv`GlrB!P7nIW$fA8Q~>Y|WY~XdofbZ) zJ$sD5bXp#Fb@otaZ@J_~Q-^3C(F|u)MfvSDaLSTL#VPsF0Gt}#z2H$hgRE1Ubw{*> zS>UMVctJ-HSm0rns4mF~r$bv_(?(7A=^a|nlx|!A&j9+J4ii6f#9gnt(|Hi~Gy!Cz z|6r{6&8m&ogH=Us2#rAC?h5$4sWwiff<60EGvPfsWG24Y`Z5#>#b;WD@7tn%s!E{# zjc5Kgc>OPKgZd70@%nK+BAtsy3r`-Vh3{>~x;3{ach3musng`4%_F|JEuLei8$YJiPR&*p{NZaG7dVB) z*{Conpf$NOUHm-6#26@^B7cvb_ZVbdM*I{X2Dl`cNiV7ot^=gbo@_^p+HVGmMsN03 z4ZRzg*$>+r!BtN~?~DT#B5n6M4HQOVqXzM-wtNJ>-dytAA7Zhya-OJ{T2QNCe;$Hr z!3@r2Yy_jZ#*jhb@zR25DnHebNJZVzMSktR9GfIKVMM8;e~0+cR5ijmsO^gI6w2UW z38J5~SE#)=xm`MC;sA*Lo^h55Djis%??TT9WjFVNf-w3*iI@3j#otaj{i7pk%)EHw z;8QHU{;iRh9twbdUx#5MCBoE`nx@_rv6DtHej5|sXW~%Bv%OI=3^*5>YX?zG@MoUT zu8WG+Nan3@!uPqR=X!_@-i!k#I4v=2$N%QH6g*{lXT3scZ=3a88#9%7$>?}B=Kf3} z^sottiAMKBvO^u`in*TiwCYOA&n@2GHlmhMJ8R~1swqS@^^adT1Py9S?$dx%+L%fY z>s592#=0E0kltzO#^_7ajO`*;1>m?xdMLtldqjuB>jI4zjtGFqCWUmX z6exe{myJ8ur)t8T>xK_^J}Is_<3+>Tm2;EZY>qUNshY}wboSA}K_hTGK_&xeNag8y z?uDM-r%;KS1Q5yTh{0nf`)M1|b>bbcbnDPeG*GW2|9D4r-cQshAV^i-3$JRB77np3 z79{G`;?^Ge{Fu;3J3(owXyaE@RvotA1Fn`i{N~Yljm4Gs+mCdwH{~Vc96ZTX$53zr zDHJ>&7Sa*%Bf4jVN*c{J%|14N0)#3mzpqoO_o3fj2~#6T+7uq*=h`@jdH=*?eX!gJ z`%KU1NVbhY<|@XW%T>4FiU-2LBW@p30drz}Kn*mwQ4(7S zQE%PO+2q2-v{#yQ04!zyeZYQx+hd&hXJaZ!uik6mD1`0E`6%%IK?B2%+|EI%O&Y+> zORfCFK(qbvpL|G==Tui~_^mHibi5bu{xz}9jyuq(o8kaUPv&sZ}B`YTpK$lr(oKe6$&)kwT-VI4K-&6&o$TuGF^yo`L zu+ld=qtqb}!sUOgn7l5R6EEGQ-k|R{2%Jn~I03a^DL0w33;;1{M_!za@zjluq_!A6 zDek}T;WWR8ox?g~eXN5vCxnKKDGI2N6kDLTgq@R+QvM0*31(tgS&?x5orc;Exs^@5bv;*|TrPk#@_8RoEeNh=Szj&w6qh}Xee zp0~^nWc}o8_&F)hSdOe9wwi!RAJUo~;mYWf6XR_bpB+ROMAJicCL5ZAji20e?0wx( z!3q6&{1JOeT?wg>sQ5vL7nr1yn|_AUV`J#ClB~nT0 zLAmj?x^=xzZRjJGGegbdR#y~}Pw?`lKI=Zm^B@s%}&gU5kCGh8# z*d{u!d`KsR8}wROR{Cl|YT6JC-W*jnIj5R*R!lR`mhbgEV(6!{-7dQE(Uvl=Bq~I- z%7bg=OwL=~`!e(y+dDL?;UFQ?%%gs$PXx!YdGgYBj=GH*Xe8uJnKzUPP03e_YJpA@+DM5k2009XEQo+ zg^#ahlM?r3jxQD#7;$UdfA15dNO?Q?_Y52U`P*`{*SRkTCM*dKuP*;1n_s0Lp#LJjgL_tp1+1hfnMG&`Cg3WXaC8%=VmWe(&t&oCCJLVy#z8 z*`hox?7pw?Q~}flMiZ4+K0Pl`c=59dQ#Lx~37RVP^C*+0^^;#0AH3N%&BY3iydUe{ zOSn?S(VJZ8kq=S z_lzgzQkEkcL^dpp3Dheh8}hkptogD=OHoLpWOh@|l8;F%Uzc9F2$D`QnW&NKuTP|C z3NR;`H%>3X?|}!eU<8dUzM#?xOZv`=yC8cp*~GaM3YW%reJWUU%*m)5!gEy{LvfoH zZV*8y_I6h>H}I5q^gRg|SM9#Xf?OL`TIh`PO}U_vOc(xv_Cw6uIb6{#Ip5)-9hDuW zQlvsV&-ldiEX*1B+hdzdE5V`S7@h~v$GAT1^;PwC#ys@#NLdlVfwgJu=6GPZDKzO) zc2=Ej>&4Y*G-3UgY20F^sis}U^S4hnljrg(_V2YY&YwL@#9S`+mhWla4?7;5 z^8xKx?>ED~jX#t_Lntju@^EMVovOpzV@a|-s+^!I_AFi#F9S%2c$MR2gf3+4P4_|G z$o8IygtBLaRM>1%(jn`~Rd{7<>wJqbW@D?vwBn%s=8joL{={f|yxx+=3Q`{x1)tz0 z@^9#eji7ZN%?Ho3@1OqBZfAa%5A4yz{DyOkale#m0yZE^84us(guEhM$*lNN&>pXr|>D~(%;u`8Y zRN5%;LyBBQDrE&_1Vf8uT3Oi#>k&rtTYE6!nl{HPbZag>8#Rn{N0rO!9K_c0?XLpVDWRCzf!MAg#-ANUY1pkw=dRp030ms5nnI8@{Jsp8p%jCZ);P~ z`h^f1ac-;qyA(%f-Fyhghf#+9;q@M>5NQ7uGZad=ct0!&I?&)yhN{&Un`7^z6 zBnn1{h;p4C{v;$5zgD60N8aIVDIPTQsetLRT2F~=zGtc58736zj^oQeN}kdqzxL(Z z$s88=T)?Kmyt;Ml&ZaWPg)#E3qvMmt|Ah+=)MrbXwWj{c=#t^{fU%-Pbxs%3{v_c2 zm-yFEFnHHpY})RYAJvY`w^zU4UqciX)ZA)~^EB~@)(~&!ZAhm+`R-teYi)jl8f;K> z_0ijzGY{;(EPA0DVk3xCymd7#97n-=n(ueO9`@ekMVm%oyBBkE?lbc5)-)sNnE zr1)b(oPs>nBnYW?&se_^37kho+>X$&Izk@h8#VJ`pbl~X0HkWmBUZcU8a&T%Z&pU7}#dsA?D!!1GIo`9om553}ek-rsSe$<(u zL4;YYytC6gI%}1*Ht=<$sa}+LujLzdE}xkre#aUv&T3)F`?R1aZq+IR2`36I{Q9&+ zqEnqitp9Py?=&~C6IHFyAp(3U6Sww9j^>e8)14IasQd?2mL2+uZlWl=6w4^iFdS2S zIPaa$Y)ZNsUMvS+}xFam}u|EVHmur*B83x>$2LFEb}s;*}ILUic6w`N{1o{|WUt1B8n{G#by5zq#A73r0t z$pWfwY3$eh!PE2chm<}2#+Uoco5NFfeUVEkbRz*m zxyw-xskOP1WtAhFv20S<_YgQR#LwxMtmEV#DW5v&_Te<-ix<1b0%H6)?uLa;0AFdI z&PDt$o>JaIITu$FIAYCx^qnyq8TkcI;uk?}8kkwcF{Sd`^8l%j=J8in7gQ3t5CK#k z$Xijl5f+|~S$h`itvt$e6`_Ph1b1<2*#3sU2yVZy@hyOZSO%z$efI$M9RQx@E5zsz zMo<8?q|;TL!(TbTt&H1Y*=0QT22poBm-t6Unzn(eoXk6znk8$ z8<@FCzT;bBNrzK4Hg3f(O0q5Lb7CP?}>N9Oa#C(Q=5ZU5M)186i;ryE@k)H%ip4G4zUcX*W zQ6-~>Ii;4!?Q3kLznoz-YWHuM_L-^1wa5C=-g3~dbd+6NR+x%u(ibc+M_@|t%MI2 z)*zD^kO+=lWlrWGj-pco4erSgteBlkefVA6 z=}n-OVd^8NrDJn|>}E>od^4}RvNcxc5Zq-j7AnK{mm&h`7{h{S?Lk6WH6P|p1dAxp zZzM{Gghh>gR}2{(D=~N(cWOcXW9tp5avB+2qM0wY`(CmowP@lccQwkNHic~fP6K;$ zA>@!p8AXquXUMx1_%x+r^b{fy-vTbMf9hNWxzho6bSPratGTq0FtyO}|3|)P>#l(D z+Opc@$da+K_GmYpm8TlqBQ7?d$yfbqbcQcy`I-wmg&~!V4eVjDtx3s zTEgdr`Q=}e)4nV~*tLTwinOAuzt6CDQ5W~S;u25Khy#7DZIQpB_uE$9NeE+-3()Xa zD3YEf3X3TcdM1-t)fNm4LQa+^D^+oi+JiAuznyzd;6`6Q_tA*WZ|huTmGdexFFS%A z4P)~RWtAWB2J_{!B15eNtvLgC>2%g#v6Z=dB^Oy^!DB7lJ%mg|YZ=Hq7W-q-RL%CR z2wah>ZlzK>_7F2e(cy9auIFSZnqEjjEOO0#e-Zi-@nGc|)hbXnf0)RcE4bDF))F`t z%b8H;TJiSz!8iV?QZzH~d#mR7C2MlKl}>bvU!jLny^(3j(LR7L`WPXQL*DqjS467; z%fPM@Nk$z!!JNguM4O13?nL;+c`nt;&|8OSqGHwOuKY@Z(GRO8m9EJ}H=Ryp`!w-5 z7oL%4GG1kZP}w9d_sqpAup|HcclKmVcO#1c)Tn~rRY%E@k~U&0NJ)TetDk!a>t%~& zYvNT5yp9maC37WvPWK`~^3v$6=yxm7I)OQD{tc!he~aOhn+nfdr5f}O=hK_8YT9Fo zN7R7#&Ds18dI8nZhqqHM|A}p@P1m$%?!~{C_Oyas07W2{!#?|dy zvD*+Ld;+}q&iHj2#k9VqGCX5Yj~S1k+X_%ND5oU_(I-GK%#WK$c5WNF!)1GjCCsxY zH&o2+-I!=#vfIBa8cI2W7jQu`e$|5ZOtjNQ7A-?4yAI&Ad})OJ@AuH}mqeTVRZd%STK`X-V-U(NLWAM?!@)j+q;vewNf9*yE?@3 zVP0B5{z9JOx_}nC-X6vV5q{2GY6m8ihka96;+Q74D>2p{PCj>B;-fz5fbu+0iOxaqQt|i`6)bLiWUOO6=&^cGASQ}0TZtdg+P_mDc zbFXAO7dVfO&%Udb?&)b^p_^H+Guo4#=aNrJE?f`rMckLU$9-kNuuI}icGAa?H4rgw zld6;l{)I4mfmv)}wWt(U-|gO)o6#rO8o@^poyuk&6WyTbB3qi-rSa674$=PNPDM+u ztR^9nL^^Z5+cRg4DYTq`tQr64!d`2J*!<7&Q2DV5IomxtyhB~8ZJM~D7^0=FKCi@E z(9Hzv>FegjQTf$Rs0yj51P$yr67!PIBch6;HYem7$yp%@{~e-b`1f0<)&XkC7R1|L z$Ay6^Q@cJMdq12SE*oR4cl|;UMWoKw#JRBV>0B@xM?vbExlTSSu2YEj)rY$ z2+wh!d;FD%dnV}5#wBr{Z>5Sq`eeFbs2bn znM-o^;tWaPi2{y%-E{EVXF4pIKI8^mT@{yYxAE04Bu?7%Zc?x!z65 z6{WiZwM+prO$j#$r=B-pGW0GYRk3NHzzVKM&CcTj2ehoj@$0&IgXkSX|@;HO~|nZD<- zy!C1k(2UYs0J^43#zlCbtBd!oJVxp}lGeh5gLMu}jjPyIFK|@ddiZa+m5wL%ZW=&Q zfCY`q=T&<3J1OYuM|dJ?_Tw4jiV{iDdf7#&n8O-!h4TO_q5lKjTs`Q6tHSx~vf{9) z8ya7|Q7La*N!4DAIlc1?DnNMw0Qd&HB<{SQ6eu$x8stm;Vx}Pr(PtZnxkQUowV>iI zM=MUk3)QjSU&$s13-f)hS)eUe8ZS^GAyzT3!d|1{`Kpia6&Xg+7q@XvDV|BfT>#uK*sRCCNsd^dWC zzth*gQ!vEQ*;Dxa{ZdUFoaJZ>t{0Usl>x{$YR-hj_2D$ecdN7@Th$H?i zB{|1XLUBjW4pu=0IvfK#7|zFeI!Y7<16$E$y|@}!()Ng56uIV0(wb4_)QJM}-uwl} zY~y)a-RFBDqTIXUY^Ppy7#?B8=ZeY*D*eiyfaY6@Z1oC+!@WnprqcIHj5p4NcE$J%)Qm8ON~6V2pzc2*u2N1#Y8Sk@5RcTKq0;XWUx7`o4B z$PKre6RjqTkin5xOUNL4gU#J?!N*NE!gqek(P6rqTX#Ioe09uRC(Hg1f)zMaFS;wg zohh4fCe2#)qT#`~=+X;-EUsic5^5!UmeJh@kcGfcZXNg}``-?>T=vNYZKYmE@+DS? zz6xLa)t@W!+>lfMxY4ug_v&ctO87RVZeCF?H_?3MUprv=hF9Z zYBYbRoU&a?9jI(stqfUA8?l}LrCY9^u2OYo8FF0i$xf!cE^6Oy|$q zACC0Ji6?cM%>F5?uWGEnvKv=dEULlju+F_86l)P@a7zg|OX54Zjf$@2mbbamq z*Xhk+N_R-NKyovq*F9F!h03eVj^+0C^oT1sveij=PK+DJ7_UYbd&pPKG@uPelMH|D zeui025S70$6>NRe8EWSU4;CF$p2M&IeQ*6`N0hrOC31pk#yvhEamdi%PBlC{Heym$aQjVg)am;u7Kxla?a2=E^YiQU7{$Nq z_)4oj1yf6D74aoy>zoNAmpr8hovsCG$91S~L+(NHP=J~xRpWmg@(CCBGc&*FzS`L4 zgBMohg;%5An{+6MKNEgYz*al2-T7XDVzEXsnpKPw^=mrf%EL_k+h1A6!8@ngt--cZ z9Fo2m{aFw0Z54$_>yhpE+apU{d3-Q`vIwjQjqkb1%uF%&IIWyDv0(HH>0 zY)LV`29B6C5zd&)#rJ1kp17$1$jI`OlvT%WT-(`CmvN%G%(uj_aiXVLa02Lz!V|Wf zMDT_{7ZNN48=d*#QMX4LCI3q`?tK~O=3gUy;O0+yMIGVOOs`_s0=B0nW40xB2VLF81>f}{ELrF1yRGK)IedFQNZN!(#!Ob%^U~g;l;AU<1 z=Ia+bJSOr3zR7ZlV49lhbADEl?Rbs?IQmO>7a`n-Bt3(^-gFjGB0t(*QL0cKAXA@T zYM1|>V-US1_xK0fYpoZ?zH~D}EOmC851g~pSYFylskNO+Rt9iTvaP1d5s-yzRo?yV z<^1lKp5w0^4MvpB6WR>V4#uw0(*yb3V<85QrI#REeqmX*P4TEY>0&*xc};Bnn`#z5 z87F1|%XkmPeXV3Lsf3oJSz0~}is;lm_ISli*^J7qrHrb6XiDS7G8=!RUqqaa6%$OQ zV##f6`eRpwTrHYNE#tXx6uK+C%FsW6rz58LAt%s&=(;ljX{n@kAHRDo@X4OBy0NVI<=A{ujbseshBQe$(C()0c6!C@w zBP2pO3;w#c<5$b^vTV$y`-dsmvWxT)yzSm1xeNA4kGeJWs0!h)cKQ>b$2K26m@>?s z0Hwh2cH(u4M(!nqXI$zfONUn{3kiVaLPxvu{FW=)7Uzw}H@%i|s+8w!#4VgP8*Qf< zs`VCiL4I0cgtgeJA>rE;-XTBpD#Buy8ojfGIPJs4WF)xLV$|SW_L4O(OWa7*-|b3= ze1nNQcvM+_JVf4G!pCCOy?5~73BbY}^Jo#kL>_llpIc~T4dgGTxU2)TMNmof8;we2 z6P_SUcYfXn5IJL!l@VyApF#q2vh0f=+Yzk+d3SN5BWRvGv3HL8z$XgTYE?P!C_1Wo zHe>EIX1Y=};*`!kG)$ z8c5@~Z-@AellKBXw$mmR=xyJ#A9o8XFG&0yr3OeUiIUFn(LB9lJn2lBalg%H!QqH( zcG_H%z8%M39deZ?t#aLEYv^I)^NRR9`9KkHDct^9aW%J?^zIvQO)53Ia@4)IScw=br=B#W#PZy1;50|sOA6Kj{#Ciu;_EQxot?;2l3j^UT)6$Y? z`dXp$XBBn^y;#hhfS|=)i%WnOcPQEx4enB`c!Ak8UTdA`59*49cvN^OC@6%=N^)8#C}_w-G!z^xhyuQ1(leN2-xvLe5mzNih?I(LTh`F;BkCQ7j z>sXu$1%&}cSx#EVJNvNRE7@{3VD+~7x`FgMilck#>9zZwt(-i{*P0K6h7_>H6tGEz2XuP9(H#ic55e3NCZ-D}m z@x}eh*%5k$za7(wI_>qc@$TwA`bUGs+b4Y6=dw-ZdrN{>At}KOK>M;z2!Z>d_Rd)( zp!%x+KnWyyoCs0^WY?eR^M!G0?D{QR1Ikrq$)acRPf47GZwp`H?D4>64G9=A0HJR2 z3{RO2dL}`TNl(@LjyL2o0Gi`Fx?aK(acDmfpxvP)u5T-)H7mEI+t#^3Su2z)3nA2P zS+LP_UwJtrB6E5cSp8zsn_Na|lNum%myPP+E2%ng)ul@1^Y%De`6S6sgnd9=IV;WG zBn|}J@UaVWJ#QvPWkR**0(Sc)z+Fr?|Cp7Xun#!y7`2)1(J1<*W%=p&(SOHki_hak zHIt#?EAIoUoSuEI5yC@54GD8kD#h+mq5-{rBHXwy%bL3PUToZPl9QndlJV7NSsi(W z){9F_Tuq*Zg;W6 z+kB^4C+;)z$W1FRr!>IneHLt%6KBg~fyw6OlJMl|9Hk5|- zqRvr;U>JG5b--fu#$|8`aqm|!hj8^%`m?pnl}IzQt7MU*>z=-9IwqCBP8Zz9(N8n) zEy0W_#`$cfgpaBWiPwOrDKMVh3iN-08f5p%GK8V&NecAdbH__ZT%|JsRed$Go8Xip z*q_=E%nP&(|%H^-nB3b$E*Ma~WG%@%dj7YUM- zMMozfAm9@b?Cp9d6>v#ozqy0@e$bFqruO59Iy@FCLLOtf&5b^Mqc-QS_!KE`Y8tRxi2%V9e&x>X}IgA=YS=J=f`F?hV2y zbpBHpshm-i*mQO3A-{o`*YS}quWAuPMPEb$mwS83^y8I2*HV&K_gnA@QmOr}at$U4 zhb%?eR&A*oW!=6qgH=>^Vw|FuH{V8*6NfTNY=$eUlB%Ei2#0;@b&7hKUrP>q9W~%b zFMkt9uDW+qKvq%bDu)kl{?3Ri0p(ZS-e9H@&+y)FE?m)rthD)X8Mh?Aj!mn!>Gt0q z%^3Z2%7^~=XlbBOk*ZxLI=O9Ak0!7AhXaqtw54}BcoU6%op$TR_CFPY6x4H(_9FbcsM6nv|K6W2GiVH?T@-e*K*U&a8MK8N z)M5|Tz(z#N-Si>w{zSwJd&dVT!K-3+I#?XqyD$5ffPxyHn5G!Q?oE7++UWv>gi~&N z@8?kL`C30BzpKN|Ki_1tCH&%TdQO|T2AXV8PZ6O^f9&e3XEw6S#-w*-JqxQ#uvpAO zDva1>fFTsj2cM*vaTGT2m(tz(q7lPbukljTh5@Np1Am48_r&IJrX%zM;=>D|4box@#2eUC@!jBIBuuo z`3AS!ICI)Vim>a>`=z$a*TH5R9T5z@XCuz*zh1}FN%X(ekQ#36e00nWdXjI$IB%n4 zqL%yKOog&?uUz)5PVA0se|1ek5Z3v~gx#C3YkLP}0=j~&3)bXH8!U=^r1A_=MXRlg z+p3IU6K;c4;t<6U)*F@;Kf8LWibi}PbJvmBdX|bVn|tQ~N?DYO)Kap7yf@=+u%)FP zt_3wClE*L5)Pm_QY>m_%!Jhj2a2U>5@1PQ29r&{@;9Q*5&1JI1JgRR&oW}$lC$fjl zILz&nEAQ6v#$lo9b0mFWdV=^V3a2j5w_Jh2@t|VNKYyMi`bE?{=|2WO1A~)|vM1bw z5O~Xe8Ym8_6Ar!#3cN0BUD6%*%cb7ugRG+NTOw%#ECq}F!!AOlU)VTcO5&xq-_R!P z?gRC?pd1`1m0u^(P|g%Q$JPUMs>i@JOOtxTlvH$<>%V*)mTNK+B>xe6IxG*JcA*H} zmJI0^Fo#v$1xMW|3p9bSIL!Z0rt5TkdyrlT`mzO8xzEa8!oa{qY!j^D(}lW4xa}z3 z&M+mMQUsl;UD1nlAqVo#Si+_eIV(&zwt$U;;&)sFN?qpXj;FU33ZYyA1Vqn*rTt1~6dy>k zTdq*L3~| zD7ei=eC!iOLkKDYtM;{h>P*phQ2yWuxeg80zX_zC1XHvk!fO0*_l z3xhSOLGQY(BJPiyv#_Pk&2_85V}I7(!Kw}|ym;b_Hx8RGXhc1;1MXj(4{`d5Ufxjx z46PiO>Xcw(#|Krlwo_Q2+N}u7bh#myLn#D=M1S&#+8%cZKpfeEyR2}-qGzegerg&~ z|K!lfg!A*^R-eaz)FOH+GjM8e|0x*)g#-HUwJtr}4s+G1mj|;o7V}zI*jT$|m!=ow z=)Z1b3lF87)1@B!^DdU$c=`E6vI-DWz1~ci?`Vj#Ye#b5{LZZBY~H-0^?$gR94b+3 zOw71?zgm*w3&`7u5m3^+V}Hn-2`(P#BPBgC~5SL4al2bA| z#-?en{XQClz-5|=5%Y-Ev@vRc0<$&(%b?NoO_s2uI!JopO6v-|#eW$1rE85+cU8Tgn{iF}{*Fp3DtN-Sp)_HzPa- z<&yon4YkJFdl_*Jp#0c5;I# z?d{p^mfEcPE(43>O~|zIY*cV0F_S`WLVVorZXR}|#;=2(p~&`leF-)xE}7@yX)AKm zCH>{qd5soyP4Ohjl-AE)@R`T@${jwco|b*x@wQV7lg7{=r-@4i#IvSqcGhNaIMf2OK4X{`2qa6`Vnzil>?Jr!kTbki_`2Z& zi+0hT-eoP$=cA=pnn&%u`97S+>TPu`Y2v>}hTN?FYYSHOoPyI3wPOlmWgd7iFF1v> zF>TiX^$#T(IJ0`_Ge z=yjNHd&hG+yQaoFx`aD!aS|lXNGTK)*d{HRdU5Aa8U*uPA4eTW8UEU*^7=oQ-WGRW zUo?^GTTL>|EjN;dp)mHYSDk+De3*eeBt5SOZH-RANmc&}g%6)Ns?2S^#46dZD(j zIYX=8vVOm&CT0XGZy&+dWK}N&QkS|}>04s+?wj+>_iC<0-PrpovMzK>ral+Gj-bCC zTD83H2qo<Y|#rWzpJC2y&aQv>eUDG$OM|#%8LVl*Y~!Qmj* zkat0*aVPh?=u2>WzxN=#CHYcb!N^-cu2!SgR zX@~r_E6nA`cIfM{ka@R=n}O$33VpbR{N>7zen+Ldgn9(WYK_Al$ygpeqL0EPaQK4n zCHAbH1*x+2u{#&qa4OFR>(jR0T+L-e@@I%meWq>OF3;|CdU8T;xl@AVmGKLDQH6Dg zUH+a7ihKX7aKP`2wjrRaK`s}J;Tyv^LE~~uZr;;^#%ZDH18RfQ;!wFk?a!_iR|2j^ zKY`5vd_V-0u-2jvPw3M^S7najpzFYoBv#uuhBpQBra?JyxXU@15I)go=5!7Ts`{5Z z%A~n+YLGf%S8r1f{)_yqakvHc9TL2Rq|J3a3Uxdncu&{;BzqrxE;d#PevBD>r(5_$ zw~~dMmST^q5fr5U+$AGOZwF!e9ggVND_%rLOK#t158kDdR!$vV$9z^O{5rCpI);}s``*^- z$F!ZkJtaMT!m6}1aTs`8pU;VhDCmLdp*P{#Bb6&#Q8zZwKOc!h49jD;tZH{dLi zv(|ZsgQx)5abABN1~Ma*UoSf(ftn#Eo0mEQsDrL@SXncYpam%J@=xXKLp(F&Z9sf{ zvDox&d0_6U<2S)vwbK^nKUeX8{m?GOS%EnGM4#*Hoif;-@f+{$#TXMs=Eu@#9uWNo zOX8q|($0P;T_AwTEUKQnGMUDze?Zk`LKPR{%v1PLaIglr`IQp5JM4XPPiHwgMD}pq zd2=o5eu$C&uFNLHMRTcr^*%842E_<*%!c{Sr)S4Uy>Nmdtc&|V?<_Xx8j5tpN8Z~T zMJd(g`KE$%RK=0a`XcI~Y3E8^%$|TR?EYPIG`;4q!qiz8EIGXWjMMPWbK9pqsi)V+ zEdi{dj{!%6)>P`M8Cj2a2UTwCzibA6T5+(TIJ2Y<#95ijB6gnE>7UHA-BeX!eIo?; z@)IrJ!VOpONxH&zJ8EV&0=kC~D)VhVk6XJ3@zG5O1o4(bESR~tKTh9k-}JIdf-#Fy zQX_tTnI_0I+Sp$#zPtWVWhI#TawJDM@*X*bGA1XLsm+3ayQRsQU9WQBuxjL(ySuv& zaUPH1wyKU+Oxp=k5$=zj|7rI+?R=^Y>MfN#LqXQEqeDk72(Q5WpIgytDXIqy@dY2v zrfzb?=30Cto;UKIHMmS0!ubDATTu#E)Arntjrfo_@mZZ^o<}$dWo`M4g%YidOFdwB zcBKVvVFRh6`uNJDQ62kxwQ50%JekpuuJpdlHYSn7&}g@MeW1MR2!FE3y1qkk`U$et zq@FK=B9UXXewbOKCs^x+854!#+~b0M5_ZL>PW7&)^d6cr&i;k%h%V%72D-XX#`+RV z`uX~l&3voVfkiBE%QAro zEW~j@kjx5|Z0&TB?(lrutuFakUXF!|zgWJee@e>?At-|_)hzJ1c_;Bl2a`o-mZRs^ z+Q4M1%Xyvv^o7)UG5rQb(9_PG%VLE{Vm<3{w+LTSMgE!pNI5X>2f&_2t}$P!ZZd-5 z=9SKwWSJh%&dI}3UU6p-%8o<%_FMFmslAO*2}nD-l?!fppNLAX;qhE^c;3?>J!JN3 zbSr~tn5KD{rF2p`!-Bl9dw87rqw3Z!M1xaJm2B*QtG0<>U^!8 zzCfxXvpPOn0UvTPcUk7o(F)7r(=r1YwRuOUnat;K{Y;$v-r^suEmWdhc2~0n_lWnY z-7hz7C>b2@C7=FSE$ z$hXIG`hFsY6P+6{Q1dKEipp5tPDMuba<~ISblS zldt3Q#c7~MH8)h*!-KV8k8&UD=KJGCWaUIfz$nQoaPT!(*H;%My$;6NmOzYnd_(7Z zO6Td&96kaj;CbT2-%7t3>Gj8`_T_`P(reGRRB&*bdZduB924@Cm^QGDgTG8$sZ%&ERZ}$gg(Lb`s zbO%yq{#tfPcrDXWvqpbA4dyQ67^4{ycZ(La`gc7$U*qyJ!zk$D(@40mh&?2fG3&La z&G%`y2B&6jPpn@gi8y>S?kNY7IlVj)6GjdWOV57CZRmy>zYBjyb9$sv(RzrwV@ZcN zZ;#dvR_2!_+)L7H%b~-2-ym$_?7za^u7j6#-kQ1a_6%;K}m*=i+y42lZ6;vlTy0^eW?Ai<7NH zD|AsYvWJ@vDs%iV%cLSexg&iAf-?E1m=(HZ2iml~B@DtMo)04TM2D=I%$1wc9&52I z$T14-Zo3tM{5F~=g<2C<&-9&_&nT#jmZ(wh(eJVvRV=Oweuc&xeli$bGoznqpyif) zl@p$9jb`=J@?qX!80q<}Cabpdqr2ALh-ryzi6B(vy>zQ=Y2jXFPBXTflfb(&|Mf^o zWmD5QE(7c2#!1h41xyjA6>;X`fez#FUql=Nd&+I=I`j9h2nY#_KgLuHZE~FC)DV<{ zdP!<$%#8n41U_lg?>PA*R4h~fnsfCV19w_-tMN_0Oy8Z7G6$}OxS>oLE`;D zEbP1aHe1MkiQXMPG*@4c1&I;6$}W`3E5x7{%b>-9IQ`4{q1t)QcsA+` z&|=&V0~fS=aWDC#3Fekk^RpERxKq127E>xDzF&mG+v$8HPV8cRww=iX|0#BM{pW&z z?L>9ElnjJTn-lq?fFnguJUo4W{^3c8P4#um{`e5qb$aT29^1a^=jleG-BH9*&Af5e z!7wgR{^nssBPfnLOBflr;BmaFKOAa4+;MZuYgR)~=+yH>B^=fKvIYKKU)Q<~cydiV z&@-!YA30OuXcbvVVLk=~Ad|TWu*5(I(Oyig^|(b(gkd%Ni@NegUIF&;_wPb@gUrSb z=N(qsqQR2JIk#b<*hFp{y~@?8UsxDMrjN3_LHB z8vBKLfoem}{XnYAibNy@@g25LrA3@i0RstnQH0nN6D=qP#yPtH3Bu7Mo z%t zpN}exzm2lkOb7NksEs7V5e0BP`_^k}hcN58*@YWSPjZymWhC=vuV}=`qy%UDr7C-v zg{P2y)erPAgtZ04xAx}BBdnELb#Hlw*GiOy-G9#Wu)k{6>iF^S@jA|ZNLJvloezn= zi(&{4a2#1K-2CgIN6ZFoHZq7*zuDz~Jwoi}SuqTNx7}`wzMy$KbmVnd)Tx{0pR1L7 zp;NGi89Pi9OFjnmL1laMzgmF#jXoM0sd$_lT{9LR*an^$xtKwxC*j5RNHpQ6!+$u1 zWv~9|4I9ASaci-#MWy)Z3`G__L%(NyMonVGz!+clTA>?eo-%Hf$|oTrvFB$h(rrM4 zj+?I42Veu6-6>&=-oK3xvxxID%AEK!a|;Ys4e-4qBC&5jj|XM89?wa0s}MHJISa|c z_F8`C=seqYn(cZ|xIgHEy(dqk&HM|x5h`iT;zIp5bHF%-Q0ua;`wwx1pnRb#iyyQ6 zclUM#gfBoMf=cbW1H~e+x#T!fe?y_P_mot$NU9qsqtdp4)9 zQvpMDb1MK;WST$pPr^`b(M6{2q+6VwafZNa%p#}4)j^E4oqztvR6f9|<*LY#iVlrW zXl3niz7~nLMF@{~4Boo!G`sJSFcqd{*a#xic+v{pa{HX~ri1#om%ecw9g-0d5$R%H zbg|^z7Ap_UNE+e`GLl&2x9@p-PoZST1j{j!x>@}MZyBp5CP`_PkQZZ8yig+WhkjXHW+`|p>5vA~`XpNl4| zM=%l=gryM}^~W8qKYaqyD2S7rAH^V@T_X0HNqHJYJ**F(yxMX?hQ~;p<^)?d8vu)f`U(exF5x*49rC%_CXDX|H3+ z;r{blsl0~$zrruXu(Ad#O7KnBV4NEM_f)-J{q}YX5b0*iSXxpE1niH>ze<$g6Q7U8uwPfgCeVm|eaN!u$oKjGdR0rNKACP9xLCIN_#CO(%Rk%`98?N{Re z=&89Iq#P#pl>#~}WOo0;d3ORI>LsIhHiya!D+^N}F#dZ^9bPT?|*nzLl7$Skn z9EXLvugz}Oeb`+MdQ>bw>`ZUPsyfH{@M3KQnynsvCGY;o9!j|z~^;2e!z*{884m6(S9MAGd*{YU-{;ZC#tub8ejG9mHe>_}j4n10ItaU$on1gYq>nwh!d6_tk z*^RAXZQPb^@e_uhC2!89O3oaWr)=`mwit@}uKA%-H|pdp#xQNtli4h;Vnn5QaMfbt zF$vEx#U%VOQseXxpZDy>D|f9g&BVgevhJJ+_J+l#0X*IFp`;+{on~*pfI+Ic8X>G( zC4b`mUW|gXygQW7gn^mq9uzIod|XCNU&uK1HkPgv6Bc!T`SgF$-8F3ZWObZ9KVdd8h|XeVJ7{j(@6eK*`1KqCF~D&y4} zKI5>3oYOFNW(9c~ukc)}lT-pSxm@)*1jT2I$gYRi=&K2KmQKUnEN{0|G*eke&)e?W zl}2rc5Pp>H;ILqCsXhIgwuE2U3dm^otGAi>X;ed8N-TJbC^%=rO*B#nc5$7AWih{#(FUKfQRLWdrSHDQ;8li^dtwhJk zQ)~X=@r>qq!@*#l_mC`@jK{Dcxj2?W!1atlp=I%TPe!XYtym?k+JC-gX#H>TSmr{< z+8}>VjaBUKK^17irbPa7MAWqZ%g;`q28V^;f7Td^$ULoNI~3$BK67xAXtaUM1QZk$ zeD3yke%EmI(|DMvcy)b5e~+=s@f{(G1*D_dE|a?5+{)-v?Xmp$7A1rt24#oWWKHVn z&goRF^WI}DhrVwPOw;PX-Ky z!TaJ6b45HTJ^-8OV$Lgf%WqtKbWgxZ%RBEqmRNaQ*&6@da=OhB5k|;$a;}VQHrIuq zkMd=3?@2vCC58(cpn_-xJF4;~|K&RPvpy^8 z`CysCagc34u--NtV9@f1*}H#$=VJ9?G|yt5ag)feM!J9y)7#D` ziO3i9jAfU7$|6U#7~Pv7eWO(KDa))R|1%bz28@K{Bry_BxtHkw3c{UTMJ@Kk>H8I^ z3!>|(z=LtgqLDFobr|2}v->6A=8{4AlrQ zRIUHxGN$Q0zTOjwR7DiLNy^>cD}`bPD--ieqscRpA}}645f#|B;`a{>hI$2u8IRVCueL9UOKBSUNf zxbLDuFWSa^sWaGAKm+-O9cVL@lZ&#W4fPs~#1ee`Q%#$w3u zpDu(7kk=FcZ7kN{GJN+YTjJhAFI*V*#x|T@kD8?!5>GES`1E*>q!6HQy85fK!NVV! zd$k6-+I(sa>RmA(A3a!Dz`{#)PwF_IMcu5CsJhnOUBM+AIo7#0zTE*@(#FS`O5+}6 zN+IfggCp?Co9tcKbeS&P`%LDiGw#&#zEofXsc6KzE*!zwuFV7~Wk>-odz5g;w2lkP z2@rz~bZ#0_Z8Pyo@_t@p6F*@TZz%fe&O*dz!z1vbF)(uVDJUr6f(fz}&{K!k{r+?9 zS%yIWn$|!6Q#y^qTmxOKxc+}Nn`ZkzEZ%OEz|fh&FJx@hl1O{>`p=r|xC9k`s~LoA z<9Mr*_XX7Ah$IQ{^LIlMq=vOu15yoVDiBZD$D5U6jmVbq-~u-V^D`0y~T0!2lB(ERhNsA1<*t4n2=Ojrw&WeC69fcob*ZmTlp~mky zBb2zB4TS_aI=>ks^x42_c9(DCtYa1F{SpP7vJsq8cTE0wNko%+RhvdbuX*UVI9k^i zKv>!AOu3t)`gLYJUaK8B6sB_nb2oAWp!Xcr5E~*!r&=|*<;+Lxbge%=^fwoZbXNCc zv@V2+78qR}eeYelF^ovGKO+(Tc02akh)AGQZk{yO(Ojm_O8I=bVLgYnGEi$hr;OgO z^rYFiF>fe*k}&ZKiy)R_1Ug@U`42%!$a~h2Z6119ao}V=@emFqkR;u^B{LG%YxJM9 z@MGlTlU&(2W6cfzYg7(X_NgNDk%^&jWjXzWeqG~!Ccf`uf{ErOtC%mYfM&s5j4c*V zC)L;ae7U-D{k)a{%(KxdyPj~U@9K5e52+iy*#kldOx}M>os46jp4+i0EzlLcVK3%w zQJWk*P%>p3H%&&@WJr!Q%;|J}J=p@k$RaMa?}_<%ZhN+v7tg05cMMcr6&%~~X5KChAZ)!C7{yYb z&QH$XOu;9vde96+KMimF_JR=1$Z5YK2{@mzYP;E|Q+PTGlJk#6hErBtV0H?!uDu|2 zTV2-CyPe|bCc%!qKki6+{+IV0c6NrO=UsK0p(|(iZH#VvSKL#4(ero?$7r1Z_9Kmt;fpek8ZMUoKN;AsW6}; zMIFi5FX+~O!y!QXBuN{?!uMWXV&+pjH6yOi?Op;OhPCh#HI?;;UjuPj0)P&*O*> zm6~bsayZ~;%H*h)e6^8d7~tn;wqgEw8qr^!w_ct7lU6EC*SU*RLlV6xBD^Uz9lDjO z*c{_iC2CpvbvBGUW2R9ceD;o4!~Eb19kPnpiKDf3rvDTfw1z@oCV1wylyFca6Y0KDNRiaKOOSg)Zt~9eJpqY zN0HZb{R+pQYjO!Fm(mKHAa(dq0tu040QPWJ9c>al-)J;>pS^l~e5?akaF}+g8njVH zp~Cx^RrV3XY4fdKPIYorKS%PphHZqhrXLqLkwfAOgP=b;b{&{ob@WWE^V;L;XmLE% zaS`YwH2=8&=>@&m(C+SQJk!jqh3yI5vX2?xhRCKy8PJ9XrwYARR(y=>`Jy4x7Bpt>;L$RFruMcCwkt}5cPc! zG0^?5;I8ci&p<4bPtOD2V$UMAAuF)sO>>faIaKf~&{YfrcWr;e%KpO~g znfaj6=U>n_1e)OT-k;yOCF(rOdf0j1={)^a*6MSygk!?Rb5e>!PH(9-5e2SL$laMH z^c48OvBFO^zcBX!`9>{z;C7$h^=aAj_N#7N3&-_ewO*ysYFe}R3N2Y4PWNed;V*2uj)b2R*< zaz%9k7asBt_7nyj;aauxMe`15AF5`5%pOc{RB(08aE_Eu z9AIgYR?KCYgmv7Zqzw#!4B|)afSc9*6L#d5JOgtug~HEp@|_yxuZUvG_J>F7{3+%c zyL!I0z$LG8|YtLZa(Zs6T*vY&k!L;I(_k%5ys42QWUw3OL`GQ9Lt!-ZDO(nX2Y=OISFGoy2u)%40Y_02EnxCiyQkq=tbFoeOhL%li zVX!rs^N>sCV@qA;C`&!KqLo%TDVDh`+O67gu^~B*&yDn*X%M~rOu40vGs8?S@8dd} zXG}sZ&?dYKsW~HIC4;O?kX@+vZirG2r*Ri{R^@VOS@pH>2y=k&av6YWn*SpUB7lyW z^jiDWfB0Qf?uwdxJuv!CbkB<%%(2N`fZ3(T6LNln0A1m=yA|nu7`C5wn?m~LK>!BG zo1jAXbG?jdE@MY9;CF5MJ=Nsssx4gruV$M-G(g7cYP^O^S4j1_4VyO=euf)(a?m+G zH>Xcyxe`F^^RZI3k26T9pAUKkKpFr`Y5J1hVq-BpcRXMkd;JTkA64?BANf1t+i+-$ z4^q<(D^?+|aYdY0Hj2`68FnQ1#gfaRH#kBA+7|l`+VX}`Pp9=vb0+P+kAS1qjLc>$ zY2n-b1V3}cp;ug=7VA)xGOv<5?)f9kIWUO(2at}^NXIyA@4a_NEWK7P&9UzrTWaJ6@_y_^)~^Q^RS!m^+b^$gZ) zJ{c3ebB%RUW9UBLK#KFWZ_^6dXFZ(0o@@7jEvvteX z_Mmy@1@o|%--tx^B#lf(ZvN4#?QO@Zp?7?~rD=ZCDez^h-2cunWmWmD`;1PTO( zLXMUU2R$omn3jUM6y9g-kHSpe-BiPe>jp~=F0%U{Y!<#9Ec>BE34bDed4EN}elsY5 zL6kuZbN4z`K*Qf2GxxUn&NTWbIQeL#WpP+Xp37qBAEmfbe`B~*c=PNwnCSEDs&}ZY zVmt~~Y)+!GaC{>7&kSb}c8 zWdsF*Pb%Df&w`vMojzf?W$u9`pu|rj+-x%JV#_P9V47f};58kxKP_R%Hv019OKYgx z-(%s}|M%C-rVBPPk5SWaC64HO&r7AZ%ihBHh+o@B<#kp)h3dr4ecbn-OT93I&##cH zW;DyDn*@EMXHAwzk;=rJne;hiEb1p^GA$xgcj`!`Q4VrWsb|WV>U#WCY`y6_Z8j-M zz4mucAX~&GW+3n8lfOn}-oJK-m+ahFRzmNLjF;|EgMS(BIt?iKK`arhLlEjhd66K0n2$*whOfJC0jpo#69i)34Vr zW7`PE=&U=~-TNRgh-J*2oxdP0P`LPpzT-f)C1l)j%wW~842I8nm*`d*jBfPBe)eq9 zg=P1EN7dRaL zcl~e4H2hpz5i^({_XNG)N-!2}hkq=m_4jAlNL;NF6%*6ic_|$vN?W4y`QRr&k>uuN_s_ z#>AYe(DEw%pT*Rztul+)L-`2D#V=^$th>*Ws@(Sf{@B+SQ~PluE}c4tfuG1BMuo)F z4tA+``D^o43h;UHP-HR)!F={t3{)gSi%W1jyusy3h|@T@MnZ4pRNkQ&EFV$Z z75r_A-E(1^tQxgmJZi)46SI3cel}awV*n<~R3CugO%bB~L zv|sDqdsxNni%n|s7y$Z_B4%;_WH_8f9^b@!J)CppX(hg_XYoBHsR(q8f%=p2bFO4i zdz4nua)ekz@f8xrj+?Ko45BJUNmCe@YYmcOO5<6VZDTPBuGLXhFaP1PuUVs z)b*0zYz{zm@L)b+BP7goyp>1)dW+%7c6epM2&`Fne4v8?Pjm*!40Va z_t$QBm%@D3b``vps#aXjR$c90tIA)#_$u_){rvGy!<#j`9-uS;!IiAGzZa_EygC?q z*H!k)Oy0SlxYv1W4wnaJgn_1jr=HjT8=h2JmeQtHvguXuzPM_MfgCCT!#U8cvY0sq z2=!qDjSdqaT2Bvx0D>bCa(n$|J2Djt-b_Ih6BX&IzfGBfWK%wpJjS_ZtKFN(njkij z9Ygh0TZQ0F#91^h)hG)C{AF&@0;aJfcZB{mGX{MuQbCSRB>rx~M(0vngbN`y~1p(U8bf1n^jX&GQm+X*?czUV9C-g`g zvOq8vFO+Msak>BW4?qFq1ixmFD}%#4(L-9U>0(T*#NB~}z=EK#FzvtD>E+9~pH!Q_ zcZ-wBKBP4HjHghE*{i}hM^Kmw46x>+}?WTo=GN4jHt8aC^Sh{-GMh`GE;3D5){uTsVfX zz`C1ubwzykJ=C+`QpWa#1&_M&n9@N`R@!Zg?KwN2#BzqmrZ-az&;uR=9F{$)D+<1H zseyL2WwMp3#1d6c`%zGFKS$De1MFKHMS6o}lE%W10B@c5w+_zyiwA3sBsAVs{>Mrq z|Ff>lUVE{(39UVsP2>!}}T45-vUp770=7WAl9*eNbahno@D|Hp43A=5NSuEduwA3cc><8TICU=Ta z#bLF2oor7Qt0b{J{b<0aK&CToT}aX;k*sI4#^L=Am)b#;ey<`iA9RLK>ZWW!=?`fcW`kKq)iTdQ26}2bT*)%|0BQ#rkZeQQKD3 zh9dM5zS&HQ>Kd__T>u~*mBmGgTGLedt&=p?au9hwDez1t_Ur1o@|XT`h#EMYx<^SyVBD$n*$Dn zA|eva_9x#n4L+>?(1|1FF##enpt%9V^-Xk_m{czbk)kgo=B%0Xz=z411Q`BCt(_|C zWFBX}+3(^1qoEkz(f73%09B5s|J z*sYb{Gr_NUjQH}VIrRV`16Dr%0aQ4N5LizPU(gs=DzC8;x0g024rJ}{7N15kkR}01 z7^Mamcj0AA`5_r}_4Uvqop%XGziL9`H@=C!KWRwL zwj~_AZDIW`ZIv>C$@4l1fc}7XIucvu{K@^$adq|fc{Uz%aIV&io+*u2Tj~2gwY%RY zRaPcy|EdM#+xHXw|2WILo;-w#)Qti82xWs14yF4<#nSYj{J48SX5G3Kk9#ordVO?Y)I zrN1qbxG}#etcIA=@>@fq0j@|60f;{Ot4DAe6$dECHPeNZndOh)_f_B-R?6%NuOJW)G*2hgm!96Zu zwrk`vjK9dR+?eBSsP#T48L!=(ix!~l9CQ=+w(G)4CdN!`+qP}nwylXdv8{=diEZ1O*w)1M*Uww^{WyP8b-Hr8 z@4m6t+ShhhDx!=mk_01!4g$dd(XHKF*HgQS`(v-`2wDagKrDpo`wR-c!TSJ zgm%@HM%nS3j|n1=1@^+a(NL6QJtE)jNef~;dpD?pTc!-SAzog4`=7|zShwUu=M_)T zYve85)Tuz0s z3`K*@uLn0`H~T?Ztjt)q^je}LU=N`K3zBM^8S$4Y^8l(`{dwvh%s^UzWf*aU32@M9 z6NtndN_kS-vT4hmbTsvPBHP=ww~gKNFViO0rO7lKN`|$4MSZeEY)7sHb5%W>5Ry@B9~; z+M2kBcc1M(#_{VR5BK-^iBn`Gt|rrR=vZ-JamZ1LIJWvCPv(+v#F}KjwzdyX_RHA z69kzY&I?14E&yWO2#hi8R#s9geHUu$&HnRV;S(-Z{n2gP}zG{qnM@B2V3lJhXQ{LJ1SAH-CPfH?A4Frq9UgU zYi&N@UPi9|J5oNZI6t?twZ8vu_v=R{vkB3~aAADuEa-@)!J zzHRep_q_o~V+4cGTa7kHqhwj~!Ic*VP-xO&=-TncX9UeEB*@fd)!PIDUjqL}ik_L{ z&nttS&8yD1COU+JWRSuITO-V{URUXx#7)iry^?5jbP&&9Y0C8A{O9dje_|NGa(&LM zU=z}EAGX$~hi;%jpuDLWX6DxBMcvE}`~R8;4z6;rR+f~PkEL)ik_EF?HQhhtn0k78 zVq5D-YJ7P-Ng>)y0l!+elk=>mO;ivk01;ezb{_b;8(RNzJx0HmcPoLNjkZ>svsut; zwobrNg8%mxLeJNq+a}J;ado+KjN9gVtAntC%2%;mj1U3R?D0~vlMIi4MJYP>CL_LfV^mNK*o zBdX#O*81XoOC31CT&-@ZLYzM@-35ZwSoSk=a*hH|s@c|F;&(hb zq?L3@e#U(uR#ALojgExf1@p9Cwr+g7l%|llR3=a>dswesgl1Wo-iG?`D6{D~b%@>V za!vE`pFlJck!Eo3Z^zA-AVR_O6{{JYzTIkkar)@F`Q*`^?uQ$lUd#~z2ZNSavqiOR zf;JH5;H7Gk!_G`J(}DP=4-3;}~rOBN7M580ugDNvbX1|cDFK&EPupwa0 ziVIisBjhHRyFZ^ce6RE>|5QL$_Mpx~N!iw+Lo0xF2zU9NYG$nPLXLFr}LR90{j%1DB46^KslEkmI~U@=OI zGf~~WdCrO_`!{T?xleOX0KEqDhN zZf;W^1kLQQv57TFZM+WA=a1jxZbwh1^hF0(m&G=y@kQ*V>z$BJa1-{gI&e*Jl4Azv z0{{3aymOe~d5Vx^dD*h2whXk1)VWPxT)UzXmPv;rQN!}8>XNqdu?Oqxv*6*YJsB8~ zkQr)C@R2vDlhcb4?TA`PtBZGw30f+45vdqN(3*>%!4CYdoCGg*KLXe=6~<(iBDl~v z2UB`H!n6HG61US*%uXx~243B&I`_MIyuRML^8y2n^f&LY6$BpO9o+GVVvR?}fh)Sm_oK) zym%{Q)MKMda56nJ2RS+Q!5lYn)|jG}nv|U!9UB{)>awbelD?3a7FM7tKXUURH+ih_ z9;dmjb9Pi=Az+!u-W|`dFfj??4p|m5i4&`ySaGJVK;etSg(&af_5Ll{YH6Nor((*; z6C_d+8YYSf-srrt-uli0Jv=<@`LMYBJR0YlZcB(H{9-3w4&^rGA2QR<%CX$w{ouUC z`{&m_1T;uUar>X37#t46N+H5*<{dU)ci0~ZKz;JdFCai)&?Mis7Qye2YZE@dtWq54 z`=)=a_p~jC8A2Aj9ZEFcKaSSK+QNE!d+GZNVw_RS@Zn6YTwH|vG$zMdh%elv=Y8H@ zTzuMVING%PTlxVnq{z+#NM)=bW%q4Ljnnb;`iZSUaB^f3Q^MR@g^m8zcn*ZIvl)@i zy0%t>IYP^JT?)Zh1VMgFOI~U2Cw`p34PGqX`A{a9xK3IKD$x$R{5+^N2!#S2gr;lz zi!^h>n692NMzTGyn&_|+fhQ~v&X_k?Rz>hah==9NRDrF^LfXJP5h-AXf%g;FC8wp; z84o$Htu57>O`rqgcCNcSrhQF&e0&@__*AiaBIv4M%?I@@I@no&0o6DxTmlmx|L9;R zUZm5*&E?&b!D2dlcP}(5T0s^OMhbOAv`z?iHc5NhBUYJ2|1c+qQ}VXs z=ztIsbZ}sh=;&CPU)_D|98T`kq(%x*&?5$y2I_8Yk3-WuP#AvU2mCH+PHj40LN6Aw z!168l8K3Nvj_l6uxI^-MoHCQ#OD;AvcD$vRoJ zvBp3_Of1%Ci!qlWK10NOSDGAxm9?^{scF>!PIhrs`iL1Uo&i&Tvmfq6IjH|o5 zvVp-dVpq2`p%eC@%I|xsRoRT+S4rCu)+QfcbgaChn!f(4m?pwfmqZp157mTe zMmDAxT`%dxQGH`GyRuU5kaiNk1sT{jQ+?yUHW4N!=D|uGKWjAsxc1wuac=M-sa=p5 zWMq9k?6d(UMcUN$%Ko<5-H|)K_X*J-nsGfjz1B}yBhQ?iLWi@1`rNvOB*l4-6EHH= zz|a`H^ObuCfw5A*$HLCXH5{L(atpwHkdx2ho?6{Sx_udaqKu~`LP}Jf5TOzyPtux4 zPlx*7B!*?;vw+;9B0Z=a%@iVCXDxSQmH8Ukw&voF1QG7V>$;zuC03uy@YI8#$MBal1wnNc3c7kEmwM zlxtPSmQSu)u6-WmaxVTZs<}AbPx8iYXpy7Td#O-Vzvs~gEVmZA5ra{!S0fH}-i}vL z)lz5tv_CE`Ju1neW{QrBy?gEc#@cy|=hBG`<*3(VkH^-un9a>2i)fl&NV{OBuBSGX zN|$4`$uHJ4h0Qu;E3We$mvi)#rIgRPp!Jb|dzCo~mh?AfUi$C$KVicB#F4v`t4N=Z z72Cgy%@EdG?8sGNZ4itIKZ2Lc7_|{wy`d%tnAd4|>pIp1xpZ{fh!FW=Ld{2(m?TP4()vL*mooAZe*FyaHYiLHgbL%uYTPlc*%V?GuU< z!2@yJ$l>PQ{uB#-zC9tug48Bcy{@D@H+;*9LA}52?wD&;K+@k|04PE?-8rzr#>O5? z*1YRVkhKv(43Ry$yT?5*{yG4`J74G3DQq->4KEYbrZ6%nPchixEb>K+_dD- zCjL~cwwsYG0caykB~%qHuJGh51Y;s}Bf7AF+%3OY_lMc;<|xEqR zv$-Y0m4+`u6NvqQc(LQ$aY`*H)?_e7d|OMe%alz~V^|1BtB#e7_|;3lwqglQ#eV0v zM>?OY)nh!*D$)_#I!xUt;$7?6VMJIV8x<0O)YJYF>rC-bH!rK;`|6wSO%AiP|GWd@ zfX^q*KaN5f%3f!pu~JmL^qv7;=?*F=P9=+5x=L=>hdqR{{ekc1Ht}*l_=XM!Q4ur0E(5uea7i;HM1vHRxCRJx~-<(&SP#3OHz zqsJ!W^+Kl;ffdJum8DBsGQUwhHkt==RHUI+8j)$<@6g@FYoCjA4kEo~?51M=s;jl% zNS|WNx~{vav0xgwXJ*pYT&_ykmb4(#^BWZC5fxu2cE#E+33x^ZvK(9KY55+yy!0Mg zb4(I%Xug+uY&CzYG9iFZGn7)KE4oUBh7C-tHB+Hjb@YDxgPN@$B#hCIcH{k~Fu(2r zX40szLk9Z(9&Dz9CvQ-Z=r>J9*2meL&bdeM39Jkz`|r13cUaUk^0B8Bb|%}x$T&jg9RxX0V5%>sccAjAv+kD-ZU8PSe+`VDkv>n@4$-F<@NlPkYMBtjKV1+ z7^B|e##vFEf~u;R*F_pkZl1k>9Q9!0Vx}qA64NJx&Nuj=0M6JpAfBHXi4@V$rcUq5 zG%aM)XY=;>Qa_rKgk9fn6GH~bjjD~^A%ifLi-t=D~7!M!nEJ_D-x)0PNbP& zX2LR9aGNxhhHhl1B!dPUtJd>K^{J#WW36mLEl97f)`x_Y2L-FrYn#&Cmlj^0Ymp=x z3qdY4`A?w`;J>9@vhKcqF({!e#f`*|pH~V>acw7A69qpTW;n+};fZ%qPncR%)=?Q) zbF<@pzxKV);|1Oougsc{O^%b()8fj`Aj+D$0A(U{IYi2S*)U7F;m^rOR;|I z%qTh{%4)+^+waAsp<^)pf{9a-vk+SkJKx?<3BEA+A0qOM4{yzq&Ctx+5E-GZ@E**^ z>}?ys%29!rUR4WeETe3_bbuFUY4zk-A512vSnihS|Pzd%t{Ps0~NDfIps%GIF z_bm^xfkBpt|2zBv9QRmb-8U+o9;hqfmTK`IZ$Ma4a8w=XT(%&qplaIf=Q+M3i z$)~xzkLn9yiJ_2_e&g=t*>dW!fmTg~NtQ_EsiQ+&nr$<}LrW<>MbnkCXGfCc1|(aD zPN!dtqsEPJkBtT#)gIeOBi6T7$G~=EzHE)65o1VthUu@^%Xa9`)i~(T( z(R2zkdV9Q3RZV`&Q}~*k6bg8VX58lJ*Vf-|ApqXC^Rs;rDpjRfV#YP%c=+$|&hO7R zR>$<+pI9S%Sd8>PA=i3=6igg7T80DYc_S=t?Q9@AfzNfIvEQVQfUOc@yl&P~W_7ha zqY1$GQYoh6Pv1$)3$8D$+ZQll2-6AbHb(ZbmORhQ?a!R;eVsVpG?(L%Unap# zfeV7IQeYragW8AMDmY9J_*%GN{JZ;;$}s%Um;VONaV zgmuksg9d-@T*)uC{jK4*tDdwr&I9lnMcQaqcJ^T!hMv99M{sGXI4(u2k|XcTWMm^i zC2?+J9;P6VKp^}^3tDp}FiG&fn|D*{|Col$wGkuZP6g(*zx)M?d=`{EZdQ>PCW>AO zN+wJIu36M5X{FiLnfO2Xzu5oD;rTCxe`;*(_X1)5kI5!dNmA z{p6)M`5Ajp6O3TFGha;5Y1eL!L$mCZxl7AT1}ffucrgbjJ)-rqK$z$E!R%@y=oA$y zz{=1E*yWt#YUq+~!X-_DS=IWc7$M8ZL_6__z}Zz*v9edwzjUGE-|ckEpNeMVe5^nL$}`z8hh$wh1v}%^LexYz)ll}j{11lfv!H$k@9t?E+x9n_5*&FR zHzp4*CsA280Xl@^?)eY}>;KOJcurceqJBFDPkQ-YIKJS-O@x4s-*&-S*ldwN2YLbtKA!V_uIeA ziTTGRef`^3*KBj8bO;rJvu1vNnZ;qhS4%98x8%p(VY<%=FRSIe*j<=nY%__=hm#iz=e7b4h|X# zchq6P?N{LiiDJhvU{#Yf46B4jAW|7B4!;S!^ZUJ)`bVl&s28^{M9}?><(g}iSB_ES zg-QBjcdHy!i;mNwsH>S1cGyqefpmNi0cph6Z&_61BhykWWs?~J{;$e7BAO-sGPkOU z_v3y+KJ@!8h8)z_*xqHa}xoP{L zq37ME^M3qXv~HqZR4F^vw1}aRhAdt>Aa;}c?oof9EejEhi0s7&G{kUm{Ltt6o4{ZV z5N5F5Zib+u4Gf`lo;IKk&7mXIH+7$Y1W|4sb+Gk8MUhZVNx8We`Ed)E_ln7uVulJE zn*5l=DXp1~nt&KdIQm=lS8`zC1+-W}?BT7$^eWu>d>zaoqf`txj6745TKzBtI6tLi ztPpNshV%OnNGWG5hA$)HNUVjvPmZ#*x3~9+08_wHtn^{XZ^6i37~vF4VPP>bvMhFc zNse`C>6Y|qOa0YpY^Z3IRG!OLJNva`{_Cvl$%XZwK@np>6_3^g5({o@-5k^Ro|h7w zIyaCB8!mlhAGEBd)YK*PR0e~~K>akDn<-v=j~?*UwKeQ!`^^JCrL#L4??pQL5kDu^ z890W{$*FqRcD6|-jv{DERO0ao8cG@(6Ia(n2fj~Mg0I2Sm!X;WpSiwH9EB(*vcpJq zY?>s$$VpuPE#c<-d>7ro?fU^%Ael5}-ly$qJ8CX`+4Ga4=QVW3c}CBJFjR-47+G`; z;;p#*2S?#1Zi6SNEJSro5lE1t(^ECi^CZJNF4`(08Ciy`IreV~&}Ujv5XDZC_WPe{ zO=y~^>fo0IuqI+>m6hAuIx|embvL)^pIYIMT&(yQ!8H8MCeQQvsMJ z|M`<8U=^r~bO|n2SJrfBhiJB|^%0s?)>KNT z9nbz+6~&*dc&ZCqLFJ@Ry4+i)eN%&34(FeWnlaSKymG=#nmV#{aOjDKaH6})k*RGB zXmQyWAFmI*GSyr=42&!1%k2XLwp{UneG8+%2h~THSCK8u=}eimDgz@Tq%aP~0|-^b zO~JRl&b0VnTzW=F_+PBL-vI^u+7QEHI+jp%2i&a^g`=4xVJV`C8R7(%5T0}%JEYEb zwKmq^Yti5+SI;AUDkR`hI*@&nbOY9X!Wg8{olTYuZJpg=_n7|$M*Xjvi7PyQ0EFy1 z5yh9l7dh`NS$PaO4{4t$zp-(B@5%}%N)n1_=qM=W2mN+X#ksT)B6x_9AR;)pbi$Mw z6~hE@h)@c2=meF_nyszQj?|k}htH<9oy;cw3PeGZk)h_nnMsvU(|Qywjql z9@p%tj=8O8z755!+SfAEOu{Z1a?(3l5o^u9h7`U%pb#G5)6PUtlFutby-hb!%FG&2HUoux};a*@eU!_$tm23v{B&db$2FyF#u z;$1S9t;AQ5Z6*r0y>U%QksL2o>PM@T1YZKB}C;w7^iHSp`6RNo}2T$V-3HH z7SG4fG^RDeqO>9XgN)fh`&AG^&^0!;>LU#Q-33>B&2Z%IrBEHu$cM>Nt3rnOLRwT} zAX+5zpLC{>YieovOJx9qOMty^<%H72#N^;EG`Y{PQSR6Z8zh8C2vIQ=j%ot9)eOLi zSV>7q$jyyxaZ#+NMKER$2;oWTAbFOup=Rg$c+r_O&RirL#YyjFCALWmdOr!;J!X>6Mkm776^YMnd5OLU7r%FDn&^$aaKxWOAFUoVXpIYEG$>B zeqawf6{$3Iv;Dc~7zkImYf}??@J%ZYCPCgo1Vy(<`dC3s7uS4gfBvs%r&UoZG~w1> z4)(ekNb1_|@F2)S2)+?0uB9gh-rE(F#zxj!I~xi+o6MEJt7ECtF@G0z+n@$xOwl~|Yvrxx2fMA(3iAEX@;-`Zu5rF@p1eK}H~FJnZ8-fk4?qLXjgQdZ1;cU&uGpsB za&^UTBI5j$b9h<^gNsy_P|vzou=G_fnxJ*j zy8x2}9})_x&G828SbUm^n_aql$Kx$6ms+baidU)*+=?ku8yW-G)J4mA75C6gYup(a z-8AKYDve)mxihn}tSl`}?QFi;EU|W&vxs@7Q^qPu(`SCJ4^30NbQ`kpJ`OIt|C?!i zd9(0YNNM}KxoL5(QDtmr11AxOD^>Jz|AvFU*BzE==n!M~v$bPDw*eD~fDZ0Op(&^P2MIzBYdgu(eMI}{j5pp=( ztuD(swrBr-my~Qk7%njcEIHj54-TZ^rOy^7biynrZuk$noo9`MTUC_?ipXR(mKA+tfgNeoZfOq9`*>DhV&)yplIZ9)kEeD7<@Aeq=p7v@d8#k_1`>6(g9fg7 z!MP<(83IlQ@q^!y;KznPLB7Z5Fwehausd~%90Tw z0)ww%0mmIh43UB3R>wXzeCK{*7?PcF6#KPV<+JHUbctWaBCOnfCntkuI|4-DZMw0# z^b+D&XVw+KrW68)!@bsI-JP3zsiEBuq7V1AbX(HBm{1&A$P}ER`<9yEZCOAHai`^n zi_hvuuy%80>QX9skYHlmzRdz?tzlCMZ<-nKe9hW6aHWy#WAk|Y15JECzM~LBs7vr8 zQeCV{Q(<9a?H=rCHM-$FXYb54#hljXfx0a&R$AE~9hB$0VrXn&o=Th3S%S}N1OEmf z`5ZFys3*Tehf3o964dEynBfyZKyhr~3@TqYFSWBTb;G>x$unv@ZYz{P6WtCS~-^L<0Hh#nLI!iTiB>=Vh@v&c~ z<`y7kr2Sj%$m3iR&5gqjBO3N7m+7^VF8A7Y!#JOypt|4VqG7f7F)gwPCS|kjmaLo|LP4Xo)D01m z`fsG@?2gfijwg^E@7WpLcv|xYWo1T2R_BELyW`cCFNFV$AVYxVz2Wkt=kxWmCl2TV zk}zfdi$n$$hdEyu7CO{HI#g^V;T!%N^HA}R3d|6`?WZ+u#XuT=z#SHs+WMIOui*tl zoWLhvK`XGmFFMDigjoK&y+__Ch6h54Wf=NfaTG;b43oNYDFkcmKlWbcNih`=>^~PYJ-Iy$d1Q9GBq@CRdu!5`882;l=!%+ngUF7Vmg?-tt#poLpd8b zK%8U3&R0F<{GP|w*AFy9;o@;cCqiA*{738xxooYCV|<0kLM>wpm)*fR{d@q@<-5J( z@b#o&WpBIJ2SsqO8%|*S(T+auY?gdj53VeaB99!v#Rse#qgt^q%Jg?XTYs1<$q=zVKQF7Nx5*kkqC)_MdJEwVv`SI@ zHQ!iK2sVAuO31k?&^x=ji(12+WP4>xo??19&YikQcjvOe12(?c6fq@f z0)&vA>716ES)OenOi0uENXEinCKq4=UC*Km=x&g`mci^{w)7LCeqdE5^=g;*!@}mD5%^r-croz*P?OKWBGyrtCyI=hHfro!NoRy- z#9#d(Hg^LSnwbW+QzEe%CJ3QvCkT^_s7Ypzy*86A3%#f5^3RjOmqNbQ&km=b8!w|x znpBcXtIh|@&aMhLOkQf4z?PFb;VS7RnAz#jq^P0k54YY&&ptnczdaF1<}|QvDW#nd z;(e+jN-&9t4BS8E36Ef>z#MhTSX)~c)YS#5ScGSI6V!A+dzay#FV_@y`?(?2PO>pk zdsUDaT0Y~xZFBY>nC5Eg^b2~0b`1fLuEk2W2vMvh%V;EU<-lfn3c*nNYvfp$?e%4a z?TDWJ3WK+w+B#XQZFlV4Ys+(6-KlOiI$HWI(Y+?rNsazYZ?H%Hbh5p>=xJUE-$I+h zY{_?^{IB1<8jjhhX(|-Qm6RZ2nT#C3UXPpB3ciEjzVf+(k+ji<3J0=P$^Bbv zO3KWXro~3V0Yl>+`cbXtdLW(pTeAwP8NgQG#C_e%b>A2F?B1^;5nqUf_Q$UbQvIfk zjj=Iwg5mJZZ+#g;a$~}rHIo6sGugu=gXp)8j?EC!KR9B_XVjdI$v*B43~sEk5m_&i z5GmKV3URM=>s@$svnemHE^&0XJj#cL64h(A#fp(bsD5Z<(^PtONyj8Op3M&?m9u}3 zJpUHdayf|`q=Q%%KuPa-Fp4xxflr!L?k+6tveL@N&R*~B#`oCtahY>1_p6#+8WcF; z*vO!`xv{m5PMJLx(fR@~9OnZ`jNnrFj>`mTFGJ&qjWIDpuu?{9pGOJUcNFMGromz7`xUA09t0FwYK_gTb$-4$I_wSy(|GGA|13-E>yZt$5o-}sD;tb3 zjT_yyxZ>KZ3|hke6HEsrVi8B2+Vhi?>8X!@MDc>u@{`pRiDCyPrZ%UVUv9eb!0rz6 z@?I!F@1kqyv@fs?@`E^9eNg0jCw#pW*Eqi3Gg5LL&hjx%3L%v6?4MIjx)i&n5=sq7 zq0*xmBG?P*9l+^J%IZ=wI)gqET<*RZk5UIVW-1$?#q^(~3raHvO=YpGXlYGl?8345 z1I@aaK_4d0Ez1pJ7?(!M&NAJXhc0aNUUe5-oJ0EZ?=1Jnk)@^5Li;`He@>VS4Odra z({efmzDoHIIDhLt1S7G-F&o|43Su;84N!+TtK?uirX9P6JsQ1M`xq0qhu7& z%p@&Iurujrmv+gjQY;J)waq)2k#7_pql9IPO41nSsHCA-W3L_$#usV=eNyBfaP8dZ z7b9aHh{#+F=*bbpA{tLl?d?CkK3_K9RX$+Z-5c+!!?(tG@LSW)Zlg`8ph1%CXOSJ< zf@adsl5dw}VMjwip|?jTpk9R~g?GLQ+%r5M_k2-6$|LZI#|EvOiM1eUAF!+_aaL-$ zzq#?rP-;e4lo&RxU$F54BI*RwTC_#Y+(F_rJs?(0T6ZCxyq^qk8( z=P`r)^HW)oNIP(Ak%QRirc~9`2}84@hUM8>0BgZS7B*L}&4=rJZHe=<&A$|Be(t9Q z_deNE#ftcJPH9C&_|2G90I_=HeF<>|d9 zc;wt1OswnE%?XOa4NlKT-t#jB{}e{gyV~^koV!)@UB=()is`gFKU;nhx|F+coZhBa z0*T0a$14EBPLALDgwKc_C5E%V9>PGcbI`Ej;YuSKP+Z>`V;c|SiS5{Jx3kt0O5V7D?+7CiHfLYkJg*9$s)DNY)^GR??o+0>!xupwAfE0ks^cw#1UXi zxXsI?L3@FB@t3~B&CTe1*xQOB{J=sP`b?w7R8GexA=sIH!Lj<_eIXBqb8CI1kK>04 ztI8hZmIm$Wdj?|SSkUgjQHcL~ja_|i5!}>#K2SWr3h+;hZWZah2FbGPbrdVQBzbkO zX@U?z5WMa{jhQpk>zsc(~lnzjwwGU18aL$^wumgz5p(+)Qxa3$597>=!0+Fvq`6vdfrh@SjS%8`6O9~m?L z%}WbVgG|W*O00f(yp$jd8$(oZ8X+_#4MSm7Rm7h^*&-iNAzReh@8@cjm{xvPy{IE$ zmnIY^R|JwMJqdF~@G)dr91{{qlw#?0g@_`3(6RTp$J<|P4uJ6aLc9HQSB*Yeq5TtL z7EQP=LNu&8ddz9zDp$6V(UPzb$Wn`z zLw(LOcxPUchE+Ov{t%zZ4C_pwmBI?{kXr)+-MY!bm_w;!=6adS4WQq9yh3&p655pf zD~GfLkwN*9cYuo}j7|D5#Ke?W{`uWy(p6fg_Y*`>cU}s83~=kh!oy2HXq|kD>5C#} zQxK7>5R@T1o1ff{9giI+LL3xTm6YUFTnY&&sG1md!ztu>Vok=!odHDj+|{h^P98YN za=j%+ntb9LGdufqzK8@SULN=i5YZ?8#uiLCmzZK~wu+k{KbTwaM^!SOih@1SBG*4- z#&>u5rGmjPv^y!-k_Nip5OkSD0uSL^>s9wpCUWtSx*0H9dY!*C?Y%1M$qSf0$Cn+x zQk&KGsp(aBZ4uHo^U>1t`UovcIX5cw98rPTp& zI5|it1(KuL@0<`(IvN-$$l96e3-cSC6BKygez&!imxZvtb<(+i4h2p$%=ld~he_Qm zD^C&6FO4aoI(1%g4h$TpPs|(VfD0RZTqAjK(&LLZ)Ccq~Fs$g=F6h~lOd5UGU-A(Zk1=CG-<;qOj& z@7|Zc9x>i8{XaJHN0=Z-keZ=m zpK^X*i3%jpcL{hVvSy#{9fQrUJM`EM&q%@8ELZ2(*Yl#)N4UAl9m`^Z4Dk^F<@6BA z$_v_8H5!Hv^`FUVuscCbmUY;?V{LPC(zKDzurU~ zCTIy^4*qX2pU-h$G=Mp6z?jm@DhUbb>{{w7BIM8*MYiwm>wDipDusW+*TrgeRA*#n zGQ(%8LN+CfyyA%j@zZ~4 zwcNcShO{FYSG3)39CC?+P$$JcW0}!8=0p(Y-0EZxx}XaQ1&J4ap5cQu?2toPA`W}MX0B_?4>K`zzhavtK_G%f2x09H4)F4rj~&g> zBGaHQ(bTn9V&M0n75aEAGA13aVi+9se8lw}DLy%|Vw;%6B`{efPFgd7s71m&Q0*OMN=*F}9pZOK~|f5J~0T5-8AI8#wXYt-qP>f;a3sNug=N zDvU6h>Kl+49Z@+fDrzW3Im*1iMm|2<%DmN$ML1vn+1MiYB_fTXY85=KP=EfozF_0t zxG3tej}0v_uNTF*W`StPoOk?lhX2YHd|rvGSt#*Bv)+r9DEkg$K20m~$VwO?C6O`~ ziF&6EL;s*|B+uBDHcsjW$2js2hs_ShfMR5Bl`<$o%tLG9{8U4%K?U8JRyHpK71_nb z#c8%ADgTkN^0*b7lMUVG=4Q5lzn?Zjvu5<6d7WvUyB#A0V3Gifr|vyrFE|4+U(=L! zDcJHl&xyYQHdxQI&HQoapFfc?Ie6U`?O7GWC#p`B)zztP=j)Od=WNmi+BCh~t%-H$ z#XGAOd3uB|$WP*2g!wY7I3`?v@0`KG1E-!0LnMPY@MLH+WD4FBI3`{@cuy!|p{No_ zq&_~o!r9}0oPjU(UQ@nI7uShPWuO8_nk;5KBD;k%3-EhH|si-vA+;l6Z2e-_jKSkzdnti-JSf1B*kd=nD;!>)1 zGX8-7u1MLMlbTglGMcf4%Q6!9#pZ^@Io)27pbe-c_qM(4w8?!D|^O7kxdQ|2Y5MRG-7Crp?cQ;D@ z;BxNHJlwn0^%H}1|Ih}+z9oiKkw_XsR$l)0_46YQMh7iz(wxt{fQba6W!sNOyW=uq z_=%x*&GSWT0*JO!PNeu@4Rbo?!Ge_@5}_*a-O(;>5l`$R*e?kqn*J(C7c~22BEqgC z4)_fK4~5pGa9?x37T*Z5-F6)pDd==VEio)?@y?BkBYP8>Wdl=2L`0+=WD4pVp%X}i zO6?LeGjpQ*HO&#mHtjUQ2K|cmxs4;biLrXMwvd|J!#ZE%xuKMvK`EC=k9IW7OI#<8^oEa(37(@+#afY{s5Uar^+9Kb?S0 z_mDD5Wp|88s$Ei7qg$wNHf z3CeJJ+!HUW_fN>G@^Jc-lSM<*3881#kj0pc(m}yDH%CqcoUm;Wq}xmQ#LtO$E9YsE z_>-g)C(JMmF1Oc#13j$@oFlzP>SgUw1+IbaHZ3ZwJbCiz!CAMPWW2>&v7rEu=KRxd8I$=yodI{C)=~NG4V@LR-h8Tbbz|9xd*Rvo8 zhL(L1FyiMwv*Y6qt2;crLij1mC9x-1+1X}mz0r#4AFcYq_od;nb3ONXv<1VByI3NM|LDx}IZii1`_@#Qtshk8ZNq z^jg<4c{1fxtp8oN>Uzus-|~9GqfDYeM^6SfiATR&b;DRYOHAPlfv_sNf`^5`xtkin z7aI#8tN)5ILXT24taP9JL(Ch2KD)RqL*#D8N>%0075oC)4XYuoQ`rnSDWYKi>cRhb zw$b|<>y9NDwD%6U_O8h7zk}Ls#Im4-X%?0P?OLXAIQBT3;hu;o$yBam!#n6!+N#Z^ z68VGpyfD)ZPV35_^&0-o^q1|p z=e5pWcycihnlN>-OyVQ~KQGq~kF3Y;ipy{)f~qg=U!frDV%IhIn9^+d>GGZBmAIoo znwA)yFLAXE>iNkSu5qVQz)&17_8I^w92$Ihq1rGqjrZypDTooil$veNFN6ybE(|Du z$Sf^x8!P2N2t?iJI)9vxJGJ@Jw)u~3dVO6hA!)Ep$QoMjRxQGP{a7A-M_g0Juyh;#?q0v^jw>#Q<#K`SS>seIpViu*l~hMqEA*fvrGlHZW*~StMJXYH2h|-879)>#-R#}9`#<^v*474Z^hEx=ac3!F#S&bVwzM#8 zT4~a{(?1B=lvP(6nn*xpMB8{a*qxjAb5YT^dtnSQefw4l0OCbnQwNt9LIR>NhB*PH z@0GI3T-_R|j#417t*=<0ofE?3L?Sd{1sKOJA8Slx%T_3pV9K*VqGrGA1KbFmhK?h~ z?}^TK81qj>MS?OH`UtNbZshWLem>C;+RoiaGME3O?k&6OYMO9eJh;2N1$TFMLV^cd zxVyW%yGsa=-~@MfC%D_f-63%1^X{|He>igtzAzZTn%!O9U3J%eH373vJ4Z;aj2QOz zGBRcy=!S{|ItdMF1D!RpoVarSqWpf^PUs*jP3B@?iq&!-M(z)63$;F)J>dO-3uM6LB-1wtZC=bnI zF&+5tzZ0&}n$YfYTxSw(1ha+Irjz}K@s#L?{@@{o`a2HI_JRdEXP zXcLvYdzb6o^3xOA8sU^wbDg)I5;+Y6bs6vw3OxnTDwaGngro9xwCIllafOD;1fI#m z*~akGa;VMN4{qlQ@Fj|aI6BblEMGx4XXcfK78fKsO+cC~jNm zaD{CUi7lI${qeH-vS@D2=nRjfsbGR6!H^jKqx3Y+h;p_KZ_cC8@(1e;*#UMK>yUE|$b+%a!z8b%Dkb}E=HFAYGW7RS35Jyh+r`>~@9AD1R>EPhl zFo{#B^Ycd7sCIqc*c@9~fzY%x6%o+WHy(P5xR3Kml&)kCePR!EgrG(mTvg-<3&2$Y)Q zclEvew&4@-I$Y)b4}yyVQ>>&t=p`5W#_bX5{@2OoYkT+AzX~)@uweL{X;q!{ptxSRA3r zQQ>W{+%HxYEB~;7d@QtieZRtC&17prIAmJ}4!)gZEH{(G_uI)Z?dC}#B0`C_1ElcA1l zvEE`!#QkzZ5Mz$LOiMKrU+)?)1dyoG1U=WAaS<|TRdpoy2KB16YCT?DekUvY0nm7| zfZUD=W=tj@?$n=pBSy98sbraA?Fi&id&6mpDHmljrj+KLhx#y%i#|$FmhINr<`zF!E|zF7$tIEnRel z+ITOgt|8;mcuuOsC8#l6@FKSUN24yLg9N#Q#gp&hQS>So&%{VQa*~)M0nG5pw~SlS zj|T_9`uRYb72-IRZ-^8U?9ZY8trEjpe(dHzk>KcZI2zmgjnks`86CZjSjaW=o``4G zy456_kEowz5x*?TY%tnv-EHYRU?H7%Zz3!tG_Y8uH@Zqdt}fz1I8_?G15{7XmRoZ= zMxfQEI(WnD`icjk^_`v(HEX((H)W`3VXU_&)@~6&d&&j@AS&4e(gdV{ijP80%L!Tp zYo@C89cf3zs&)3wDaY@lL!}gI?s*;P0-nDZL6c4|ub=RVh)R-Z%RMG?ID35TyVGEi za1+7m@Rl5dlbrqAI8F8|y-9n+3~4N^$O&UG4IdYLBm&nT$~ioc0|q-JqZuyK5u(1l zinz>DUlBGzgOp)o%SsfXVpsgX@(0A2g8*};tF@1drIzz1B6c3qN_I1FTSbF!2rG@D z@y?qUKtW|1GO$n^f!Q_rNl27pyVjK_DT^wNQP_})u7E)j`1g19Zj+wFPjykj4X1B> z{%80(ybgoQKU@l4Z<%aseud3apRG5>fQBOk3{PWOs~CayNU$Us;LyyZgDD7usi-wQ z#JAD>NUqmxFDpHg+aD3AjLhMZ>n_b;PcF~2DC4y%Q(`dCRa$bV-S&QZ|59lq_3$uo z$+<}k9XFN|g|hBFe*d5KmGsI@l;X1k&kRZZHHp zt*g-og^Wx#K2|4`MhXFmcGnrE$o*(S(MkK)y?rKkdT{=-_aZynOiZNn*Z>^ct{y?+6UL z{gjwkR2^1+Ij5A_aXDa1TNsAiY*Gag1Q-$S%Zk4D>w7&TO2Csqmvebf9r}EVYa=^f zzuiw!P5Qyz!6@EJF2T5=fAx=rhS7V*mPe=CpNh=$(oO?BG#iM~uljF4;kt7;f453` zjZL0;tWYttPpZu$B1tdzD0aI^a_Ro>VH!S2sY05zkahhAJ*x>z`b~D zcY4#vL~A!AMY3Die*L3sx4HT!FXU6g_E&Tpj3`9MUyy>5>kz{Cse<u>}Al+(5XW`2&_VFg*|k(KtHNNht~v2KDfDt-=Sgf{gLsqb59e~$DO5k-j`U! zGo86Tb=vR3?TC!SyyrHlKhqMua z4>K5W5=*P6v}tA1`jGuizs>}?{olV(55r!X6olP&;FbsDj{|u2mG(=BtXr-xAud7G!XY8* zVo-73D81O<;bZpudI(BE#Df00S_Xb7U}zJpj&KPt`a{SGY`Pw9t(wDT|9>v)j{Wy} zKSaL)=Swys9y{=JwKs3nNJD<4QCjy;=l4cy8m*eH=(y9Z0UWo7MfW^GhK*J55|3QxP(#VA z;?2pagX7T^MLJXVFhNbF#5x02-Sb5IjK~RY&Ivx+uh^!wj++-5TN4DrdqiiH!A_@l z^l!*sPNKAx0WO~lEP0OQHIPxu^JZTOnb-+prmQli0%&F1->C-q#gV<#Pyqv{@tW=+ zWvnA>daQeisY`hzLO-s>0sDwqPV9zvht7Li`!)ua_v@$P-#(+sgG|~jfqM2`0P4Pu zY!`4LaQXPRb#TwiGh+{~D;77wr!U|AhRCXfae{=3QpC9^c?5srEKwHYERsx#%JLHw zDu#TZ{M8|qb(WHsD%`L5i(#uE>-wGag$!F^dc1KNBxVY_kBc|;{=$5yAyDHy)Dn3` z0$84ba1nJ_q%HO!@avTHcSGiJPV4(0^L#9kJKISVr2cp6N+z`?hzwrG#IIp}uyznI z_b@fojj2r2e9m|HIZgJUzXuuWia*T-so}-b-Z$a8pO8M%i;^(9-s2p0IaI$e<%)Rb z-ewM<&zOASly){a(!SV8Mfhgs_3i7|7~W!TZgQ#qqN7zX_so&i3?b2QrWms_`_NSo zT1Uaw%U{F&7aOf4YJ|;Kl{Y4jYo}J|JX`d%bhpRTsb7C9;Z2h9ts!1seV(>IZA~Lh zcMjxBegg4pT?{J;M8MU@6Wlwhr@9;I9U12_#{{&P; zUy+ByBSu%50bkBI-8}OK`HOLBBBgB1V9a2XnDrbrF8z}UX(%>hxzNJ0)YU=9`6xn| zgUgPkqok8f&nRquw^=cGDBZ6yKX@4KkclaS#?x7Lc>T|{p0CONVf=WqMZtvq*_O(= z^_TAp{8Y+M29d|e(!H?PDG##!rx~^>n@YH(Wzsf!xE7<9LKFx!C6gX_uW@z(fuVU- z;c>U${>IVO#(z*tm-ATwHWJ{JWl>Rz@VNDXF4+%IU@CYC|J=kD8etL*3i)o9l4_5s zxtrO0oV21i-P{at9Z+7&3d?}<(=cMxC3!CJ&xi&ha(`>62aPhyc{_}8SN@02{#WU&;kBg0u$94KBMqbptS=dh@RppMDDgbH{pAu0$C$nb`1V2`K9h=DvWdmn#L+C=GkAq+X zZ_{LIyVlmQGX1?ki5w-syi6 zsY!-zHHq|_h_ri^5PO7A;H2xFBsdJ$5~%%V5X;mZ)BR<3CTR?hZ4$v!w7H6 z0-ZuGa|OxM*%$KiE`HUGJczFs*U$7>;t?HlPq0HVMik?#=$6n|A1`-|M z?Y?EJsrHG}CG?;`2Nld?MsU`FJ2FGjA-HWfno>5}(dt~U`)+;cQ&I)ec7QX74&L}m zWcBI=O#f}1LSo45vD-Y1PvMm+GrY%HfkA0-3E~eKGyC`@_O0aYPz4V z_5(mDKKC=e;RG~J9)V~imhi+e*!2MfIaSSmtT=n8xW5ty*O@omsY4+WJF|ZlhY|}C zFo#UY8^fgm1}%UduGVc0Zol+r1&UdpZx2x^r7guEF%`3yi?#Z7@RN(B2jggz_k2mP zo9wm#sWM>3Xqh7PDF;d#Rtr0~t@ghV3IaVxCMF*6-w!zNA35a*ywhyDtT7|s0U#-~ z1E0r=_p{q3tg=lMkW~byyP5bg-ck@^V z=TjU*@^!HpN+jFNlF@Y^?0*_%oN?B@Xq?a5ZhzDCy#~_&Ku=&JyGQrL=R)n4qc0L? z)nwuG7KM5?1Ox;{-QC@s5Q;TD1O@dbHs-aFo?k&0O^WGE`zZx))PTqCX^Ul<)|x(u zDX;tsJ>ujw&$Q61kjI8UU?ip9yhB3?+-q`#+aHIdE8&v{wCyS+o&3ikq?LxlY~!xx zRvS&TsH_&Ix16vovs^V(UCg|;iz3JvxWs9Pde^+5r#_jz>BMX}@i&dZY&T28W?DY4 zUz2}nsg4O7$Bw3M9B}@d_POO`42Rvx)ixK<{?xk+qoR@t^a0Y9WeyNwbM_` z?;L9GA~cpG+bzPF{>8UK3F0gj&4Y&p^B^(?BwuNS{naHF9@^!Tw)aXYlVMjZ&NvI` z@7QOZ&J#w!(NSErbG)HEx=uRhl&N1g1})6%*6&BDs!tanpnHWd0bo{M+r6^D4*ywB zqRRZ*Y+25vwLY)u*~0q25shSbHymol85+{)+YBPiE&UTAk0MJ>a+m^sC|Pq~m<)1oAB2SKFY&KFtRbP7ZiFa{3iVV&%y8EjRZc$M}PI42T+|b<0j0J*dR(y=6lfepbqw- zL;ZIf10o{fy=(L@M-^3iC`$TRUQWQ?lc7>xkfv=TCcxwG&SdgGchUFL`g={Cc{(EEX zeipqZd!PQuNn#rQ$$o)X1AdOTTJyC1CFg{UXuDFEGr8tb|5jhRfW^?{;1qmA7+2#G zuihgqsY*i|@{<8g_*p{9d`@CeMYyR&?9g{wpYT?_QaM`5Q8nEs-~Sy@JIoiHnL_4f zkTeG)P@p1%)PrOJt}4?we98#Fhr<4p$6yp=vDA0uZ@DfDL{_ssXA5N+qaIPrm=A5( z!?029-yj#TdHM#dbxa8yopswIXXf?F%9^KWGMKXY{uJ&{C0P)(-b#0@@8l*-x3bb007@x*G6w+ThSFMgn~T-Ma@`h8DiQsofvLHCNsLYP#cgqkoj_PYe&O z0cdv*Te5#a?X3^1zjfN}LAhshsg)~CH#k$^K&JRwPK~+^>i??+(2@3q7kcZI1w1qU zB|Nd<8JEd{7~`d=hkVCzyD3exYK`~w@(Sqki4r^ngfdL9QM#}S;DE*k!^2^b+lt$^ z7GTn_ILu?I3QK<;mzyKpsNbGnIg_R~e<#97jgr!fjPb|^=c!2_7qJbwVt!K1_EYil z9OE>-`Q}>RDjus=Q@UVdQSIyH-4RrPY4ouJ|COY?~S8RfU%+yc$pUtK$MxFd&Y z5Bid8KepN5j}qRafdIsH&NQsu??L7n$*ku=o*k$?kjX$mK7?;=H8%aRKJ7t!DKsr_ z(`c1fu6p?H5P)|Hs&bjY$Xta}C}+@r(H#gdUTd;DV_pSdIlG6Ph~opvQXz1j7g^xZ z?|jFtSgj-)#`puN1RJ=>7FmWuf z=zc>UdTm~3TdK|F8*qH8>8uOtZUN`3&?sk3c(Oar5<)PhI|MvZMUoA zDKC4b`Sg63syhMDOj)E3?q8xNwZ|L@sp2o$jFo^p=;3i!OmJ!^N+`O~^u@ok&Bn`A z=k{AyG5Y_!#erxk(>a?7__)@ybjiIjSC=v9dK7dVc{D>*XXd7SP8$ork3kw+)iT@@ zeH;D=(QGIAJlF;^#R6x(9P9KBk1vx=063RC)_RRUP?juQ@$59kghTM*xS#Wn2pc|O zKKkvg@fjjA4yx#!PuxCXP1jvCqJ+V#XV#}^It=7S0Pz+&@h5k#3#awmt%~PMmPL%C z^;aZ~pG`UXD;qTvgoe!*Zl>W})mdUOCu#IBA-X;F_8X^VBDX*4hg{^5HwKvC!O*Ir zkHjW+N_W}D-|496P=7Lw1IIOO*~=myEx|OfUDJH$QwCyLsfhR*Y<_?hN%yT!0k|ir zL<}1;+ezjQ+r`Om%|3Pzr*Zw`9PK0byU)YGmf?N~gJoaSxzAIG=#$Gu`=y{M%l6-r zp`8$_ic(Ls*9Q`yb&Ax?($ls0WJjMW*dyQl5TB6nq~&q~yOCBzBR2wXsiSY%vptdy zkD*M%{j+?M7!K#ZhzOaLI=@dW1v=G=e-Uhej3v|JPoahFbkonrX)2FAVj~Yt?fM~ACfNlwvh=UbV)dTt`y1(^ zgC|z>D`wdCx^yF){vVHcw1Ij)dC!~UvgZciW(){=e!kZJ%me2e_6NLAclQId;)q9e zNTd?a)ySx<9?H6sHO}d-p3gNMJnF_y@w4b^sal49asOT)JSrcv4ogN|hT};DR~jD0 za&3S5ei+hM3|c}1_l^Cl9V%_Xd1vo-&_Aal=hk}v{-MkuGTKWYcAV5zU5Co89>7p% z^t(#(VsZ95va!UKtYA!fBQBU2s4W9-_nmZS@6+JtoVZ+K4)&q#+`VUT0hsmugw(+A z9Hkb4M}EXlER56Mnn$nI5(T0pF&hR9wH*3N<{K*dFQKCJ8n<4>*98ha72r5t-b6D}*PjFs zR_Y$rMo`hRm^;hB&)RJTA%-SOQdCkiI;NjqkFs3Xk0vCBcrRA^h0SWJd`1gfKcCp$ zC&lZPyc+wdtmk!o;I=P58slVUclK6MM5TpgxYq+#vLZcE5)WDrYf)!d&cJXppzS^C$5n=6e6j4<1X#(oj0Urao(^SuI^ys?0$Fd5y+j*)VnP>9XJEFlkmo~+1*{4bAH{Dpa= z+I94}Afk@D6TP<~hj(1yvJkh@D!o^fWnKhk0eQN{S`_$@vYQw0PXOjt?YQSD(xJRO z9iw$cMOg=vEEiezDf&82v@({BYn49d_nBF&xNco)CsgsRocrgyJ9YJ++%MM0)0x)* zkweMs5yf;p=SM9=pjrEAVdWjyiGG&}Y^PsmUfT}G3Ul3PtX?3kWJtp53zS?> zE0e-S^!B$}c@(gap!@mmZNQbq+wIat>EEf$%qrDET|L(w>uo<Pn30(f0V*_}uvqD$o(mDinT(Bg@EKTPRK5qFxAwc=E^sJU=&CJhl3pa0!y|uc~eO;asBR+nm801D2=XZ6Dtl4~3emEEW3XeA73(Xzc zvu(sG`UFiDB_aJK{Wz_@JZ7s@bLW;>EY8Ae4{QEPqzRP!^*9E z@{hBX&WvUryMvcgP0oN`UrZaddv%Xr_*fL49pmzq%(1`N-1r4JAsAkAGW+~QMMPwh zSNTM^nh42A|D)eN)jai!K5NJf4_%As-~Bb90j4NK7=5G+630+en7iN}0Qf9fv8}Tm zL_C}z7{FOe9$1~Kw)sg#i_S%RK>%XofdpL<66unPa12l-2v1(VU4V6N=f+{;2Rw7s2M z&r>`A&>N9ba9;r z%$N&n$ABc7@X*x=zO_IyFDKz&vCjOP&GrkE+UA6)3y(wB2e8$#N`8)#Mq!qj(A~%$ zU@?c}8CSQxK!{1zKnYfa#@7RH_eyqL?GnPhyk_w_u=x4?Q={d_{Jz2yRTMObpPQA2 z3J#x}B$Gh?25@0#5Alce_-zdRLq1*v3&2IPq$L|;Y&^Yk8H}gWQ_?mNp@k%~5iN;- z)o?27_FKVKlX@%NALO@qQx*UR?ngzbZ7sW?eQvQ?rFL*OpV9&w&!WlX>e5pg5E8oI zPrHpjdL{8wcE8o}@Y@kH!IUqZ@_}O2u^gbe?S<%?PhphgmLe)BramrGttR^;gWOeY;&Eo7%{s#saUcm7Udb} z3yWzvI3zkgu7LKBR=5?Spx3!*{a8c0o@ii|68}t9*6Gg)OJi=r+I_}R-F4;4cnV~dnfV2V>!xc?pc6MK`) zM-MS!Tz>okwcHLA>vV6}DP&;19Y;%XWkVW2kKM{t^ZPx;`_c3}V3OT5H$`Gq6$B>^ zoj0>E_}`1f2aVh!gOqGP5sXoD_b!LJUo6+zd^!aRV3$JUEbXaXU0o{QZ z+sSVx-Im1PH3o5Md`ZJFr5e(Pu~F9U)=UY)*FpieTOauj>yOM27p#pfAf^pMMV$*x zbLWhh52aRQMs;x}2e9dRY?_uqZ@pPYGBpPcoLH(6Pe+$OCtyM;+U|ZyQ$aVo)<3az zju1Q!9mT!wJRb*SbB!t)oK>eLLizcxYueklMvm~&d@r3yJ&!Or@bKQaCQNMW2 zaJU7QHV*K+)ZDcRosYG$9vBsizgzI`wcD`r&C zhy_K)GCrP(0RQ#|7?>K;9DI1r{U5n-G@3tadJ#JnH6y zZ8zJ}MBih&%|D8$Jmd1N^z$_oZQ0e#-=Qiz2Zl1cdQFsrAN!uPr+!ZAd7d}A0TefZ zhs(9;o*wdB@MHmX))mx`krrVQu0CKvhOFO)b?*VFIkVR(VbiYP=n^q%rtsRJV((*E zU)@axAaJ5TLSn@%4+LXw1k3EYYYfcT3N~G?PR|2HtLi)-9q(g~!zq$8Q_%2I#EpvN zU%X44J;z_wE+y`dlOp_1R&!fnGo>oaohfh&RK3I5Y|*4}x_6VfJ8Ac8Pvfk`w(=Jyd82Yo|LM#s&8FUoq)xmBdn=gxn>~#<^@V(S6=zQM3k>A_hIV~JXf&G|9 zUW3|{oj_$TZ~{uG+nnU%^74b1^lcN1nBTjSPuR?&KI;3plz#JRreMLVea#Ct#*t~q zZ+b!ZOXJI+lFE)3^F!1-*EXqeHe>YO<7qc~p?M0+32hel;myyV;+tE+F&`tmmmfT! zD$NPwQRm9#%iC&B7}(lBx&(Sn=RFIA`mNS9P3cgy?pI7$e^iCc91_q4hx4wac8<#o z4j%(PR6SkBl*ayns-q^tXlp0DSoesn2{@$?`4|qE@_P)($n$xavo&K^s)(NT ztdbsYMM~TyG4D4kFxfxR6VZPb--N{^h89K%fL@nu9;CQV3VV5MPQ{dZ|>Z0z;e@0#nu?hizwt=0cb zF98Dhyxf3K0*24jM)2O$yoN)fwz2O%pB9jb`nb{%?N$BQPpG%t(f7URr9BgL%?x3zu0}s?*>yGHxNc zxn}Kg&<%|u(TpGhjm#W4Ep=QE5&515(eZoV(R<|skZ}RbGR`W2-SbF05Q?xcii}JG zD6aklunh5g{M2$Azt(C!=nRxMJ3BjnSgl^;_g2_dD*9f<#wW~Kn-TN-#^M=jj{_lh z90*VR&UbwBmpbmNxjU(Cgl3ji8}=H%|7Hpf7pXH@^S!?*d^s6L!`^Rv|zTm?FW_R#2 z6d{(EvKBGxBfAJ$f7JDD^1!yA(VrFb4*sb+(0_#RTcN9-kjkyvB%$db7!Yvk)1*mr z?r!Ks&qw$Q*VA5V$#CL}YH)m9g>jRs$kH16xaIa~>3c(VnpTz3=DOEJo?ymim%q2S z^^XntvM_zy<3;8un?_eS?FEWxnLw8y_urF1mRWK*0-uz?csO6Oqt2g-wc0BRhV2y&wqqt` zP(vz*h}+}Faf&)(N|wp{d}bSFpu3=jt!pYE_Xd&zQ(gZeyj*T^4gB3mPPdkOj-K$X zsxX92!;&QE+v$gXiZRO@D+)OiA|qxfa7Of zE+Fje>kGTpVRK0A+BER?F1Befr~&i^L)w)LgW*D67naSdz>xzeFHr530BhapY?)0q zo)}1(Km&=boX*z=cCNYT``4n%qWE35NbLCgs2~9ygw0lJmw2wKBBi^vcpACD)as6w zr;K6a*k0_5?iD2~2-nN5u`RIlZgGzkU2{Fnu~lr{96a)YlonGUAyh?De5~`MTP|}7 zP>>KDEkyksKCm4B!*1p3c|ZI8CO-=hQ-NV(8vzHU18RAboAN2*$q$!FQ!lB!VR-8? zYA`+;Zz)-++PybNJ>PtU0f=+%3ynNQS$6R$`1HCHXX3ha-;{j~?-I}8Y)r)g$+-Yu{ ztT+2@OV(i5{<-i&X4L&n0l*dDxF~Rq5bx@}ZZABY(%pfnsGfJ$Z-6I25>MGXYXXE5 z@ky!56<6GZ`O710#G-P~0_i%&UfOh_X?DEYljl*He+Wa#nJwb9+|G z(luD$q$SAN!vV&)p`mC<2sAS4lyPCVXwy-3>D|M_%+eZp)nB=J7!Z?ub|NjqPC^B<|iG2-qUoI5@^;uGogd!+~fXrXdb5VqX~>RTQ>eLQxr( zp#jQ6@2faZvM4rv`aj`4nogcs=ksu6;;J^51KShj_y#tOvs@On#vhDqIfGKAKw*lX zi^^FfL_)I)&C=XrNyALR;Y^44p@FxAKDil!Q;xf0N1G(B7IOvdx0toGgyghUgM+o` z?saAaA#hTXU$GfI-f6S$k6YLcvRvKYOJ}*WD8ENVl9v&9nY6nr(+wI)??Ta0=1ntW zm6}VE24bQF-uUCf%oZa`!}MYatQ`Lw(TmzlY(~M0BG0SeJUT%Y*ohLi=rVTYac%Eu zf8ETm_b3{9x?Gnn)FxK{)<8w1?|D$tY}JRPK?p~WA4PCqL|>t3V|6A~!LF~dSu$AW zE)={u{1&g0+x1k-p;dIIF_#Asi5NA&7^pItjJ*kgg@e}4D{$SOg+;2>Aa>qJ?okit?{}$PO$B*rra?=~Atxa>+Yb)_TAmsF) zvofWXJYJ=by$i7@2At!wGgTqt{BzLBZ3Io8w=3oZoU;qsQi_T?y3DLhBJ)|Ia>}A$ zjyQz4FiiNa@5|!5qnpcsg~pvit*@MnBKZ7!>{D4Qzv}zEmHmDc$dl-KLEfMD+nxli zAZr=1!trClxz`6BAgsGm@xNTbe`P&hM=EOoRspo8_bO zIRAt0D)jXtRkW+b$#2X!k1fsp!*Q;I{n%%6(}@kM#j(j4=l?vHnPU*;|9e{CE06=D z|M$cs{{Q8hrfq12#lW+>I|M5&%|;vOjY)+cy6z=$1gRklVFRrR^(!9TSqvRH`V)c? z)HeJHhSqQ>;Shc-J$KC#R^xz?NMTG}yqsv)Q!USt^X~Vn4-hq@PsI(RYec@q*;4=q| zss^JZ5$1g;w`kHJ)c`+Jb@rKq2BL~&`eL|3M>2TRmlZo%Q zzp*1y!coCdkz?X{iSNy^8lf{8eO1E=9wHGcj)W(bB`+K*go>uqk`5_J7qBJV<){gc z?!_4S${wnNr&06&4!0GJGO|qXC-J}JCNt=22>90Mb5j!b1G0}o=pEAXyTvS!T;yE{ zgpMZgLu@;#TG)fXF>6Z+0-+#7aKpuviKr>*6%xhJ6U5ckgAqJYEF;51Lp|3qBMICZ zCZNjyzrRuFi2}ol52}Ngfs&K4?~M|N*2ZDtt|WvHo`K<1F@b8NR#QyN&sI}Kf&M9- zFj~jct4qO-OErs?7y*+Y{Y~u~M-5-bp1u*^WzjKaz0k}Ulvgdi6&Jn)$zS4NI=P-z zcm02VB`w+3(ic|T{`_yS@Q6|2W!OwW#G?Ch`2E?qPo&7)C-PHbC6gWg!+ovcUeE}i zt?h8j;x}a^0;r18VZQ9u!4Nh{TN5u1I0mxMA;3NvsVm@hZ%gzXkX}OXamc7Br0dA& zh3{aPSuSw$T&!>jMf?LX^iSqul$mBHuaI`g%MB)3ra}L2{M4`G)jz}3Me=%r<^RrZ z*=Tndi8N0M_PM#BIgj><;NI)K{E$!JlCP5d(yOaD36Bu`Ey5GFhlXKOo0>jS0-k-U zCNYts82dPgp0@1)ClMK$4>>-S2|f!emyz&+GoJ`G?y+{ylgxpH%XT@Z?sl7=YGKCI zow>sKo|$a%SS0c?A{lF8yOC@#ITM#VOn0+~KsNu+&sX%%jEsydsL3rLR1qU(L~#t5 z&$x8_2CLLMh1Kj$2@96(Fjyw(0p^?%8%asx`N!uc7Kgy#RI7!>!iY&m{kg@wcZiUZpHMIzDTqndx0 zxb(8ZYp_>w&z!$pXiJbiUDS~wfSPg0bsPIW1FdP5lS}FVA^sV9`zba?C=T|U{sntrTyw6>No>K85~(?965kwa=1HCZ$(VH z^?ff0rPjDbkiZuijA9ODz1qHtJByuZ1 zFv^T9j>R$sh2pc@bux97k@V5Bapc)zYbhsuiZ3!cO+w)GFgtt0;>s?8<( zb~21vXk?qB^a?TZacWW_<&YwYiXsxdCfHfv_E@EFfRi%0542tvje*x$jYtWc9Imj5 zv3b=<*XK;gIn;iCc;=bDuuIArj6@AOq;86b%T!r2*Tje5M}a~ZiUo1&rl<#xh8)>` z?yLlMp3KhjVsQk*Fo)!?Gw7U0A>5uAgt0Cw>#=$nJYJX1)Auo9($Mjnx-!3Tt>C0! zWBW(ZcVR=MrNxn})ovTKrJ!C=O&-9of2Zs_xu7KA%NZ95JJh-AERTlw!&`AL^vj7m zDkAJ6WS4~m$dpY?g2RjdI1$F>=omvR=&Sr<9*C!eaXzO>A#7#Wc1Gr;5dln&)SZm6 z?l1PB>?&nuNitHji++xkhA4};y5+QM{b}*;sUr^?;Pb_VH@RX=TmW$x!f%HSAVeW% zBZ^=+yFDcuD~avr{W!~`i#1aes5bP@eKc4xcQing+;iJpPQE_e%mr1$Evh{30NV7g`ckQ-F6siR z>XjHkW^SMJx9rnhS_xAgAWcf95(t-1i^a}avNYY6zP2jLW{u}UnNb@GrqU9(RiKne z{)AcMsUZh74Pjy&n7jSLngS_I+DL_ORYXrKmVCDjgG(Ku-ROu4-Tq}LmMW3_Mhe!9fiO2FV>punMQeqDSWH&y812s8 zto!ESFdvFP$|293+_HIXh;0jHE@T!=&B>dQpb(lj~D^m@>{HbW64dsu!C zmmVMRFTrmXX{xP3@P=kX&WNpwM9Zg%1=ES!l0_DG!TzzboMMKStn~drCu?zr+*;)t z$rcWmlvLIg>7|LocbN-}gdPpL?z{VS^Xb3Xq%suqX;l8}6~*=>1T9uN3h5!$Z{mUu z#+{!yb}w)KeTl<&EI;ySJ(r3#vmnZh7C2|tBBV$EVr3XmV1upOCISgS5Jt=w=Z74Ue|2D}IE zwf!%WcB}@%n{g>};YpbU|J$>jD6{c9rppf$7==xhhsRojRM+>P?&3SL6)cd{i3^S8h@=nYtdrwGFKGI1Ztpa6C+8yU%=BnUGzDJptoti~#cgEy`|7Q>ZqaEVBcBOXE7I~QFkM6-%6+|I9b+?hk7 z2TbtA6CyWULU7<{0w`I)n&`<0 zp(w0Txe~$i8wV_PlrqZ#wjC{O76o_3f3Zg+h!NeITEsX>cqpRg9K=RkMzU%t$_J^4 z_(d|fu-8a0+=!E7z7N;Amv7LBjdGBf44%=GsZ|+)8b-c+mUKKxU2@xc_Ve#@MU+L&bi4eyVe%#M8uc^WUd()Qe6KicP1hTT^V#J}jJ zlgOvaMc*m~X0l$mhIc;db{mpDKr*+(E(eN36;6F}J1K_HU-x_9x2W2BLD_Oxh@}jj zx~e{94v~bZps<)Al){M$;t``Fu_xfBA49Ye_`~_jM2zR$hsqxGoRHu0MRMM**h#|5 zMQ8z^0ISnRyhj)dVm;O-#qK>pbb5lXPt@;)Y536Mx;L>8=?A}D<9ES=2T=;P+Ljl*JYo?Y^4Xk)w7H$;?{zm|;XT2SFOCl;c31kpY+ z$RhBe=OM@*UhvTV=cz%lPNyjf|?acbE%;jYIi&wZi5i1Yq(~q z*>9PsBNQnEPIfh0d3s$1@oWx1G6dXTB!9f!&-S+W`e8u)uSq~J7tHGZ7bQIJJ)7#Z5r5~3j2+7X;yP(RxxW@rcFzmAfccE zQ3Gjl6r;jrh@&`4@P`kcp)%z5&N@YsO?$3~9WltPT)0&POV0Mmjb4N)^X(L zC>5l>wR( z+H`C>eEC4llV5Ot@sVx*?dvW7_Kicl(G1wD43im}j3|L1y4ddxXy^?umrX89mMr=B z;&iwqTub(BjjzAnF`dC9hlkWdXPR54b75~9*_{>aO(T<;ur+sfI_OO3Bw!k8Q4&IF ziP9&S2u6S+^oKTt!ZU@j5Xh0gk{K4GKQdoGIWID?;^2b0VZM;naS*xQ+AXxfaPi)~ z&;+qaa3$oxwW)DsI^dh<))^Ivrw;7%OQ$FN)C0=V12aZd2lFYG6IPDM(wp|kZ5k7} zMt1f}h`o`L6EJUaFYap3HjR;>lDx6u{;>(Zh@n`RC@U>UhczdU$C6I|E`f)>% z3D`bRA=G#KmMmGaWXXqy2En`|=P860&Q1qxzmfU+>r+gWPD(OPRUy$W9&TRIoi3OXP1?D>v2w;KNN(h9%z>1}@Yp@z+}A>@662Fw&8-1b4; zB(S|3vEZ14vJj&4@~)mI@0l^cn-Nlp1!pdEhN|EV?_DW5cNJn`96q>CJrtyCDXhXR z;F^eq108M&6$i^COAwV9N(9G3iw+Y9)|5v!0$(_6tcQl&&dAN2>D)>5BZnF?Lg?QJ zOO`BI@^QrmU}M~jLL=sim62KONFs>G#pde-PZXZ0JfRkFs}K|wN4-O3PLLT$B8h<{ zL=90xLqSQ_aC_SU$6f=u@bQw?{#Kz z5ls55dtpw1!e&`7E!w8 znCp@yOFq_go)PIN*rTw0G?!>m)5#peNouGHhTzuMvPB{;3Dbm%l0EcgSSmyU>PE1< z5Wnf`-q)L|3yl;SzzlcqtL%1tQ`8Tdu=@?zdIddq4DU+-vPkobAg+iAId&wOEo^xd zbs>7_O9wKbi$>B8i7lFps!@jd0MB1*dG_F#r&feI?4XtroIoUF+>Uxrc40aNr!QGt zZ(I}&_+6Bwzb`TXN*`(B{kTL5i8e;Wh4b@Oo_k-Zy2O*m#>BW!Dq1|2SayOM8ar}I z?H>qAAb3Ds zQSY@@!=klM=u`HK1%1)LFNn%wQ_ZmG;71(v`osE%EH>YTN05m0uR1wg?2W4w>jWFJDf)e{Igj+K5AgM74O?M0$OIoCQ@O zguI9afAkBP5IhD7b-dYUU^|>#o%5Looo9}990`ebuVUYa%(NtVpi)I8!J@Wh)*@n* z(s#J(_2_rWk|j%)+_PjWFmpb8Vvk2xS}1A^>-Q1-?<53wJpkxseucC9HNW$G&E*uS zFwA>#Bw1+7+^ziZeIEcMQA`ClC(DovlgQai`&6;!$f#xQMF;5;ytwu$=XhK;k z2rgN&WXZjZQ{xVwI=aQvhar>^Cvknm;6|C_ALfSx0D$K%t?&o0R_vNks?r%0-n#+% zT@(bm?*jm_IYlX$mbeRrWv*?{dE?rUoR!1lz;Ilkd4`(dCb$Mv10T$s{0*EAk-jIu z7mY001EM8aoiZkl)`?GU?()f(AMLzI~bLv?EK2R-+G0hn5w9B}iZ1xjn?t&>Hh1RzyHty^IyNX!gE^#M0)Wb6Qj0BS~NP|tpMP@7z4Z+ zO&(IIQnov^xuL69X^F%%=iR)@|MuJ#mnP@9i1oB#E%SN1ZU$p=Pr=wf<8oh){@lz{L5 z41lU(lF1q&)Tj%=`?0%`CrS?R;^pIf^W7QM#+(NZwG5j?&I8)80#e~Lm~2rLg8CRU z$FxNhLg=M`eW6sv_2Cy)2nM0+M^^~o6$3gR7+mG2Pfz&DV+F^C&|KSR-i>LkqR9y_ z15)VXg?BUycm~bn;QfG#m0-mO#uiJKELn12<3h^)h+e3a&RdfA;y@;fD2U8aYcPZ? z6^+!G8J;tSV2fEl_XKpzRj@dt^a({g!ZeQ&GNaVuIpg8h4_%HC{UE>iiHn>$G^O;4 zi8@L5DYD`>$Q)U^}ClFzV8Eo zo6)!vN}&iXTUQeAUtDF!WMbwuhw_(Tb|tWH#v~f@2}K>H0Ustwd;vVa90C za^i^d%wrWtS34@-CZ#=Q8QL6>&KUqrkw`HTd`N5y3eSW%!*!qQ0mqUhOP1Wvi1y+? z=6&Bg-Yc>OsVF-^Qlym?X2qB;W@6rF-0e|GLDZUp#86sR>&)5+29>d@zH`-+6z)vuA~u zE)CggoK{=Btifu$YpFfaduJ@$2bU~aa)0CE{rI&jm@Wi*A!^@XX9(F6DP5!VmV>o% z^1zs>ZZT0qCgg<0H-T{CZ**o^EBgT?phBgV4 za>zF>4tW0?TfDnd@M}*V=6IDTVg@4F{I+gPh<)_f*o@6e**FQ0 zAME&*(;ctwZ}6RWB7gpx^6nJoWecSdbB%kxt6I@ZmMmFvC+NKcz>*P&6d~Z&;65j7 zL1#6EbsQgcJblvn+=Fu-JG{%Om4?kSQ?ZA%4G^#}qP0kw8jgo4n;Q)$erBC|X#Czw zkdyXS?ze%tb9l{I)BQdGD2!kr5^h==77thuV(w@ROgk>`l)SrJ)7^`^KOge|VAor; z5QfE=JcG7#VyRd$WlGD7yCv8D>=0)!Cw}z{J3Mx1pK-1T?jYSQ|GaDk?jUYN0o4vy z!#q(ofuIE*Gc%i!ZBA8x73)W=Jb5WKRUC!4ok% zg=Rbsunuaw%HxNp{OXe{ymLPA?By0K287$_T*JpB3Id-P z?DOzvclfo>?DPD&Lwx<&ff{Fh@X;N9 z;rIoPtQ1tTPp~mxEXQ)gtjif^992z<_K(b62IHe0ZDf#r;CZ9b%;ic^X6GjB~ zZuvS@l|!2&g3Td}NvgQ{ji&$p>iIdnS&#R(;wsU~3ne^j>cJK88e5?b2Q6oTx za!Lk5t_Zopfz&9WgeLAV9|c~R9pu0J!+pMg^%MM~C$8~Od6}jxF=;515>ic4$0Xwd zt_f980@fOliXvo8+CI(oH_G-!f&w6PT+b~8AXp8S`|G5HTyhBK7mi)x7mmT(^AX>C z)%k<(2VUDb!fse0$rO>@ew-vnG)06G4*}PN$(&>**##sM)N#+4WmFaQ;;u9Cj5=6Ux}cPnI8-%!`GJ;SJu~MsN8V$lu*IP( z;RI3`eem-<=m)KQYES_XAoVj+m1lC^Cxy=fZ}8aR0pa-us}iIieeUkOA%+3k4UpUs ziU~#wQc%o<&mY|;)t4AP>hm4}H4i*PjYJdv=Sjzq-q_=Swa$HM1_T@6NPPV&RlsOW8o> zt4Ouei&)qY@(@)4Z9wLCO>|<(k|p;)!7@f7$BY+!-;?ALQi(`Hs|+Yzm%yE}REk14 zsxzM4?D)w?5}!N1%c<3lx~ysPVH#^FWPa<{5;~eT6MR6~ZsGMFR*yjI#UlNq7rR1> z-W6Um9-Pi0yP{HYWVK^hcSy*nI#CqQc0Gl0!)tLeB9XG{ur6|C;+#LL7!6VH&1Lt; zHUI!1Lo^{Hh!*(pFqggL_uicI`gX%_eQKRwd^B<*G-xZdaY~Sgrh@2#BbX;7I-&+< z^ym6JM_YBMx2(52{K7Hir%tZ$_V$n;yffk37gl(EEAh@w%XS*m#F|DjZaW0Y6jFeI zry1TkQ8TJW7G3HRFIlqW_6Qx~Z9n0ZOEOC9nH=U6p2(fi#)448W-;f9^_FK22flc8 z&SM7~#^VyvepB^spAmZ`3FO;YJH<051*Hg~yMUDq@9uWACJPa_A6>Io59Dm19TJ?* z1oMg@6{ik0Yz$jaBZNeDA>-ikw}|%ifsx|OL&2NZhFrO_3X&Ik1oz&e`(qmbblQvk z1Qpafx^4$T0Y#)sHLq`F{-WqQ6NLEZs8Uhw8 zTm;Jrce}k6DVInHnD0Sdb8&Kz7vC?*Vg$+DXmDR#aLW+rH+PMwM?5DUKG?8XcbEux z+v~*O3!VQPALZR0DH`&8#C{cc;r$ibv;;BfM0(2Fl&Q3tvk|ogwzp2i4Z|+L^}F*(L2X5r9Q|AE9Ba6 zZ4he+dB~AL;OMa9%%N?5=HblyyDL0*@et3xH{`pQo!vAeONT4WT``Xk29)0Q<`zqq zELn1ks5cM-Z8=~nO6cYs(HW;l%3~*IJo!N4$%De_!GtxLfMmK{G7pZF9aUC_T?s&r z9c}1P7oy+B2I&>SGEx@o$76i`qIQPn<5OGXYE z@siS4X|3Z2mn*JaYI*lU;Fq6X;o-v-qv4Fae}y0&DngLhn?c;+ebwb4t{on?dnwIa zqb&q)m}^0y%1CNPL*dZ4exSU&b%?E8vlkjteFaZLxDBDB zB}AcmAxBb7=;+qW{t0%AMmeUh`hJ!)I+}m#G$98~!{_+9dz5Evc@#iZ({m2?sEYO&6Z*Vi<&cDc6&JsOPG-ISuP{-8BQc-$G z^2{Vgq;xdzGBjgc8Yjz!UwkTZ?bBmk+?n&oFV6Y1S86WoKSdv z#kBzDh$yZOp8Mx>gGNA6rKT~kDNNDH85Quc7w!>n?OQ&lm6sA-@CaYuNBUJQDimH)lN#cZJ%w!sQ z@7-;F`|ZQLyj64gTEWhIND2kSj-(TY-4HP$_X-9O45uT}P^SZkLDm-2gasozWQURh zy-nq$N@!gg%pg!j4}zW^wV+{01RDxrj1Cc zH5D+-+nn0i<}+s^U;RYp>6QIE`Wym+WFtu=$AEeNXVI*8&2y(($olNdlrkE{yx<)_ z#_zrezx(GM@6I-v*N%HfnF~Prjr&K?xg!!;X@tG;9!%FLV#9y(%mx0-FHNY!tsmtk zMag)&&Aah2{>lFkxta_s=8W-=3xT4Zyfxn5LH5qfML1Aa?5B?@$kb(_-{VhaB*+Sci#&< zdtt~cTO-cx7F?SY?3Qzy44NWUD0@}J94J^}qI-lg5;S66i6~U5zjRtCRS=Vu^tGw>Ag~qc`<@Oa>>kIgx~aSfF~?#4(C#L`LLkh_v7H=arT zFfey=b|fkxDA_yQ_bG}B>)`0X`1La_Uwu6B{(i$N7Yp9F;5<7mId{$3+Nzm%V;V2% zbVe@cgghWPs2id!xFa4A3%%0Sy;$U0vgBiqh!9i>8pxjT?0wBytS@V-VcOA=@N7gc zs3|b(Xu3I`3dEGPvgO2P!|?-|Gn-RBf2`xwabdOC!)G0_sgXFqL=bLWD*dK}0z$w% zVY#21j|iepkcj7w0BBg{>}^ zv=!~{VSeY^S9$f^fL}i2eBm@4Tdj!Qes3V*5tV)%??yAJ9|odAcEgh)K?n-&9cGCj zBh&(xjHoTAR$Gp)X1@Gz;;WNmT-*`fxO9zIFYof^wIOGB2V9-@B1hReOdO3BCXn3G z7!l9NG7qq1$w!VLIEv-I;Vy_1qk}u1jg*X*2;~S0XPze{xk^D~v#2NiPaJA!swT#|o1|Ys*?S zc>l@aEFig{(~35YuJa@5STa~s@DoYHl>qoeQ<3VUlF!P(b zsGBQo2-K44JTr{OnIls+N=MvpYa(IS4)Uk32KI{rpE_0wsvW^2ey1}gcZg*GaEt79 z!loP}S1<``dkY>y+O38d6_>3oD4AhQlpMK$1A zv77ci)-v z+y&v>yk@EuwJ*2-B}?uG{fV{jcvn^2GASiu=;h9(+2`bn@zhb}i>Cr-4jYF@Ta02u z5&N3IsUzk{%EXi@BvNU_sUaltU<X449(V06S$MJ5C&^ZQ^_maJN)5u z1ODLo4bFBIt#t?;F$CNpOW$Cf9o!VNegN>M>yao^EjiFOWQX;-lJ42?%BpOT~^OGmVY%AwqQS%75#aEq)JGiG^ zl0u>aTSv`_Hb-bty~7y*1J4;1???0{GVg@f-@Cy7{H;TL>--AHB`8<1P@-LA)O2(b zm=6XdjMOE{P!iSAoVa<KFx`V-tkpFS9}c*8e>J{%i+umhmWviiUBQ83&Q-vy zrL=&D8ov#T`45}r7~ma52_!OeO^BA%UCXJ#jGz7VCcpLgdpua}QR?bKTC&Bp#RP&0 zfs6zPak7<|4-gq5vWsx*CK(?!JF?0E~&C z<0QeeV6OcKPYnqjXd+zK;HGbM>K8h}Fmf)51&Fs;&Zq~1RJau&-A&VfOO||?7?9P8 zIa8VwL@`y82TTmEJBAW4QJg>q3RebM=`~9G-W?OiEaM(fFA?ox^GpnV@Dbby1dKo{h6K1Yt@&3k4fy9T ztZ-?!U?g|;IT*rvp7LH*v!0#*>Y2;@r=Q!UD{CTiZY1p9X{N{}lUbrZFo4}13SHy* zotpppPsY4>vAUzz`C+rn0Ng=>_0g-DAVqp!bId{I`FRvZq z+Qix2Z<%&NLqVgF4yEi`q8J`CnM|^Pd4=Z@CS4yWxS-z8HH!%t{Tu5f@DRrq85k}LBN<( zno>*2I7T+d#>T30dh;TmIdO>xjvU~~%7B5*sM0P)?r>9*-W$t&SI+1}C~VBo9rcDB zp|b%~Z3(hNGpTs?-F5!O3oCrVy~G zTIE-t9P`9x!x|SU%y9|07Ptjc2Qfel9iFB*6(aY3YF+dSnj`i8fQkW!O6AFiJM7^J z|2Xe0CJPGQxVFMOdx3L%nah)gi#8yMppp@)}Q{ZuQ@uPDu~s6dE>f% zcoY=xvnai9=iRy$OMc7|2h5QWkl3sAxFk#s1&a2%m|Q=nF5dU&1PMeRq@ zk<3b&IkDPuWCb2tOFXhM#56&X@_FN+?Tm=tyoi?B>5+OgiRag;6`?6DKb7$kBwD z5WEE~Z&*EuUeYon2B&B`+>LXyG2eKn=IXq-@0Oiq0B{FMLFfd;9hDa7Fb!l66kc(4 zzvOp+Q1im2IY0ey;ujwo^5lU%hB8NT3tmuCVx3@s>-fG&Wp^Av2}sn%IAB6OqXIXkbg~#Oj)^l& zML!oT5f{bH`q|&$_oCwFk{=^Pj8M!m3z&ruCS=4@pUKjQx%Dn~WV)P?phT%DW`RMN zu~|6Ja!$HK<^J zUN3nXD-b1_W8R;f!g3yA$z3I5-e44%REQ`AAlWbytu&Y?N>PFsfka(bJh@E$eH0_i=RK)5KKTi zvId+RHvt+gAq1=`$OXLHmi+0fk*#@!$o!+!db=Ym1Ase-wKK$pB8*YZq_jtHLru`4 zrE^2v5EZuCA>Z2_^U|{ge{nAHb5GR#?4u)&R~OLsDu&T`N$gd<@AgysTPbAN&mJ?! zEdhdf30^R^0jhzdfqC?PM3L0X2oEl^Q3)%#;2}}+!3oXD9p-Jzwr+5KEA#TXhF2~| z-r62>ak|QGS2G?=XuI482U_T?DkfriHqcAVaruvsVSFr_Z{2pHDQA-5E+1cWjul16l1(n&#AwOBEy@RquTG6Ymh z+=bj(-(;)wjkoszfdY@pwimp0Ir6m^YX0zL<<)6PS3n4fnMa}<16p#^G0RE_k#L7o z05O*|4o`n#iw9SQIy=Nj(teyG-e4m)X$aH=nKA7uzV-Gx-@Vj8?t4D&gQfbfu?zt2 zAT@@2z;mQa5fh^-DZ}H>_;pZP1k>ZfuIb7H}&!z1>{`dEv=G^6mt6LpS*Sn7q`V$d$pM~K|K30en z2m@RLZblIkN7gDHI<~=Q56}3O!|$`cI;MRi@P5pk9$bO2fB1z;X=m9w4dr-9D+~Xg%YX&P0CmQ!SqyzfbfMVu@(N z-4?Ey36+k(3YHYCqlkj3kvx&qQ4jY;=HPZI!Zs;YT$-=)#`X#?U8;EXBAnkg-fD)V zWaOMl$;pdaEEe!+Abo;Q5yTfW)YeDuzVIb?1QWpoaG~t>L1ppx3#G6{gNAmoPe2HO zVbYgC1YxeZKLsvI7y<3;h~De9!}SrzCD*xrKm3Qh*ZbcKO2nlfDb3npl5y!XP9cr^ z@9$q6#1-*gA#=8p%A-XI)<1?a} zqA;pL&P~ya(W$Yd1MhGk*C{lhW?a1S5}Iv1j>ust2{yMJ++*It|PQ%^n0&p&XEW1~64y4T}2X2e)PULolo zR?fjASqj_)_kMIp?(p2~y+)fhK!nYqu|C@2=@XD}vKv>n*0{W5ynV%ZcQ?P+)9x$D^OlKWtiiR4bz+8#m;fp>3mA+$Jy>};Tit%-IWz-GLe9&Ok78x95aqmOc zeq0e@CG_*!?gFCpzTmxfyN78X2>8DngD-=EAB7{{fkAYk@BvETdf%1AjH_c}m}X22 z*Nm7@w8aNOovV;l`hd+dktu>M%xIM4+MDU1xYwu{?j2Y|jK=z~WK=1eVa`UKIXY@M zHJ)>N(|BOB;J`{?rAVl>sCNDPBv-V)vXJYY-p!l%_r`JrDvC%SjCsaP$=*BZ#hA&O zpzG+G%yU;p{J$?A;(PDRxw3zWsaNE(cPtdV54O1T<@2Z!Pe$?vDQwY@4VD9?w>^k|o1%6J!X0wL5uAdB`3n>#9t zX!Rymm>&m30^me5#51*LWKk#FSij0c>+t!9BS~wf+1cJRcJ^A{+g{_^G;wKST$z_# zXDG+4QF6?wt;`FX0 zCb=JN1YCq4mJGQb1S~gxZWs_bkW_H<-snYpLl?LHq2{;?BA^yfQ6S<1O>op5#R(aL z_o0{rEdxRjR2*{yT2zH91`gKB`T!0N5(mqML&G_TRsx&j%%SxO>*En?bxCO@ni>ic zfrPgUvzb7jN%H@{y?cAoG`sG+{#|SD=Xno#s6$sD)!mX>wk25>?vX7EGYm68KyZO0 z2!bGjtGVY7;SR0{;1URe7$P7{;2;1yW-MdLwj?82BP6@kI&`ZK)pf3{%zO{ev-etD z>?gCT`rsH3Evc&B^-+|vDl;o94{yKE@7a6pwOSkQCu32r!#(4^0$;W5KAGd}VaXZI zSgjZQ^v-4e=}#AY^(P%~-pg27lG6;y9p<3acD+2S@cWp*H^~!b4!L4#tyQq}kmg*G zBfj)2YxeR8Wr^s3dN-XmXvg`+airQv&eEm|iIdaF$vEeK{kHShH=ZHo4dfNVrD?V4 z@!A520PqM93>5=0@HM81ttx8~{^-`6zdBBQ;|<~8`c%hPUM@U;VZ$t)khdM#W|ZuB zs@Rl1tF=}ZPxQ5uJ|S2mV89V{jCjy8r3nMyl?=sMj+PUQw-3*4=RfHeIaF$_b; z9uY^RwgON_gsI=T_vaUU5os5>54re-MiHcF+X}-$3{#)(`U_)M+ns#7>Vi*q@d!l+ zrZXh1%bo!Us={6`Tv`av?itT52cBCFJiP}O7lkX!BMugsi;K+R%vt6_Cu1x4G7w!O zWsO;BpHfm>J2tfDJu2-&*Ny<%6wDuU=@ixJR8E<-;GLkRBi1(K_1lO1@oPO_dt=F) zM+;UJT-SI~wk)Y-#2A@(9bTMTr(r-Jv$hInNODFiRF_tNWR+ieYUEcg-=s4E<{&G? z3)FC~JOYv);MK6QMzsy= z5i=ZNo-=n&gg-gH%wOM1{Nayp^N&6YfB*BwCl&*vg5@autb;f4)4%_0Kj><{N zoR*H&sB8+{xZ@nH;o3>&>T%E2lNr~JJMOK8&5WrwLr9*;mQZU$Mb6#8zB zo3|eO3W(r3Eq8z1XWD+jlD4mZEbCUdJG;QWvgEBBTfXtr%%8rIdF@u=_Shi`iBpn+ z$qdt}HiJw;D7A8)ls@JaONSQBZDg!QmwGy@NIm7%mkTc~9QDeO+PY1`5bdUcN={0G zd}si%7jo%?WIQl>t-v*c%r8yhQ+b1PmKPr6cEz`G6|)>Xczi zKCSe#p5w0YW-;EowcxeCSn-Fijr{w+wd4z*NW6Hk;n41)Luq#dM{?4pGFjFP%XeN2Z0AyKpy-)h_pMb(f7&XWH(YB(K?X5l2y^ZFP00A6CBb(w0lQ z1Uq5SaSA6JT2`yA76_=-C`HKq0h?{&k6ugs;JyGeVMPubk-C~S*H{c5(3r3~Z!e^eoNHt@0gS5u8 zQXGmK*X~{5?y7M8c;MRU!1dD;t{=ml)yNNyU!s)4I2yII`UO!%1#G$yKJ?T3kQ*d_ zUs!0B?GL}^!MA;+k9w1Q_?zzEuYK5K#m}1De&BTveXxiA>U5$)m})TYKP*KAp#`&7 z50ALCFFbo#dG283`HLgZ?mHLu;JN(`ooed?Q4Oh1FACypIVEXsci_d5Dx}i7@{O}@ z`n2lwt4)NO$-s4Cw zpygTm^_nav)cG7i$YqUck9eyCC@C>oL2&ZN9gJjp9OXnV87WRLg;$&CXm{x|8INb{O*2=w=aJ&|_BfPdgU>Ie3TjJhIIo$}`3L9zVj@6Yy zqPoyZAQi2fX(Oanvlo==f+J*K15*feIFAG_sI^kY^Hm6F$0Y^E>4J4ur*QwyTo|QC z-N@o3F|xGjZYqwYj7nRqZxhkmowNd3omnR=d*NUv9L$tO2g}a*YHEXu#AbL+?c_pgy#&Uwl4VA(neDLVt#OY(eRrQf{_d8) zzOm$3=9mdx)i#1$9*v*T=p+4hNt&IsX^dr`etFD)`uFbgkH2(>?j!DhjWyoS@Nr4+ zC#V~5ogDI?e`B9NdVPue<9>|uzE}ZxjES$AcRiy$&o{n*%uilF;x9g>{MKhb%U7Pe z%5%%YBJbfvTA%zpBJ*u4d@1chkR?MEd^Bd7+VGIL{{KSc(t_B0k+`(X*i&8Gl0f+P zpIfAEuweET&)O{h;$tI-GmkFkv4UKx_(%Ng%*g(t;zVblH=^>J8kKIrc<+``@IFUyf>|#x7Rz`3eZHD zjdwxL+CwRAS+~9KkfzN8fAI5bFHbox8^zogG0>4oR8B!FH5J^2e(Xqfzn!e;w%ql? z8%I6gdUM9te>&#}H#2u@JL%xFS=(o~v0d`DYY&=7pa4M!hv1 zqLnj9Yej+zR4?t)?Ctz|^0UeeXH0w3M`%m?5AMaQo}D!p^z7|tf6f3lJwH24TLaLB zptV=~1GCWDziCcOXL`dR2`y$}#+B~{ucu(`J>c7Su%!=lwQ z2*O-}`Fr&+Jq;A=lkuSfz;z}OC@<*PNE_x4TM$*EM z?tFs(;X8>p?iQp=tqIsK_{;ctiU9B!6Ir&#CpD9RP70C+U_`zSr}^JIdGo z=7g_2@BEv;afx5Ma>PMD(#wDkYqTar_VDctOCvlg{{cVYEKidSTX&(UlOTYS=O^IO z&Z|4P=@ian8a2%Wt)At)*mFqtpPmFezW_VJsn!R=o!tNBFvF%y@L)MuTk0?8AM(NF zftDDg3{zWVeQ1?HfLWdH*}WZyYa<%k2P^4*%Vig)O6~UboQk%#tkhOdFg5ULrCCqV z`s***NJhJ!nGdkuFj&tGF7w^@M*iZp%>VoDAy?M}*NZcxo_@ZBGQ!v~w+_`6CL_fh zPmUy;9&^9!udML|IwrC>#$7(SZ+!6+g}y3PYdc2zAxegs4P4`8{_8(Wy#8**+%Y|A z8&FR|FNaA4fXA5mMZoFu2Jute4J!%k0>`XL+OuGvG7h}C8hQ6b_=7i;fAo^@uYdju zuYPjIWxdJFSL8IKmJVY&n-hNSW;L}AaqiPyxlK3EPF|nggSY=bKg}V|AU&KF>`gre z&IYEd?M-*^j)w`dpnvtM?9&tKEj0nuA`!v}j4r266Qib0s>-AyY4+LrC7 zE|deC``Zno?F_iI`3o}}r>~*5tp}^^`=HJ^ORcNr`~S@yJ|6k=pstJq3~A1Be~EAZ zO!&XPv*n+^bAj7FXOm8$3d?+vr5&(dZ76At(@kx(GukE0GiD$@PLG5~;~u%HvK$qc z0ndfsd1b>3`~7qZ-v>%$Pv*07?g2;eYx53;faduk+gCefGP7E^p}E z&U@USRf<3S+XoJJy*~-Z^Yhl6dMY-=p;$Nlz4rgDn6G^*!`nnGQCf#AMt~ALusoKCT)q| zr&WWts^HU~b=sjq^jH{_w%h z2Y>s4j5dYF4=m_STP|8FW!3Yww-)@9?>XPR)*6cLXOdlg0*=@&h}`I%!Dx{t}wdJf0~&vVmil(>^N1Hb>B zOZ>r)R-Byn?o&gQR*|ieaGxXe(;=@7JmCX~LilCzv#>UfWI$2ev~?=%I*JNbDmv|? zR2i_T{c&I0abUB;z?^$_$UAq9KY3@L|NTb?Tz&5t^97^@1*3XJaJt95VNnrSjB9Rn z&+s3<_*4F~|KM$Gc#(zPW6%-JiFrLG4I75;5}R}Z)<^vQk3Ylz^v!{v-8Sm%X|@I` z1IbPh$skY8ee;v^m4ts`DV6Rl*S zb)Uo;v@({S>nHpC^^G}y@%91VdTY+LdxdJp6iei;rSnGXLjyPk8hCKq-{dmb=zPaGLZ_RoAX2*@=V~$6mXb%d#ZV)o~vbC|U z10+c4>}1H}e)Xpn$GY-w{Q8!cx&g{+dX6fXIVEjTg|Srr^4)#@yKgGry|$#vKAwbX zTO6ZHay~uM@1K!gJyu+E(iy;hc`lkrqB|7WKWyWnE`QEjT zul@Ldzj|knw^xOYpW;Ji7!DCVBxMJ?2R5`5D6~dkM(aCKDwwCVq_9m3lAch?z@J{f$ba+C*8Jq?DT*$sKxXQ{k+hBOE(J%QxItYJ0Ctd0 z)25$XS7F`Sbd7oU2&2WnJm9N%4zWV3FfBWac-~ZGe|IQb;{KgBn zIUH}%r#UKdMmvO`3(+>^vu+WGn)car`yBa_TlbE6?MHX{>QAolja!$vl{-|8*)XTu z6!2qwc87Jh#^jLB<}56uQmNUd;$8s9#x{s5r-VP|a~G2J%nnvOv#hA?UFSO-+|yPf zYV;@(L`h;1y{=xO_udmx)?x*V)yqbYx`-}%Ux~UTdZI59?NL{^h#*-dOYrl&f5ZFn zIp5~nnKN_GIoExix#ymzzlKFrUZYr(z9H`E2f)n$=Z6j<;q@e=HeLws{Y;^=j^r>P z<6;>esetL*Rk`)U$fU%o55ZOVim{%`dF{BNNw~jVq_$xp2k`^mVb4ti;}gef+-6}9 z3)CiR2Tv4`qFA zSW!D8N0A_?4tvg7Nn_}ii964|F7xK#dzKNGC)zgy)&9qib_F|>D&E$YgawtwEfs^??m5wx(SUhUOFGcv!C&6WP_^V|IDEX zBRYvAa}b{;mogGLE!w(!J&9d3-kDyf9yQ>FZw^>7Yz|+UY~2G~ojk^$-Cw4^Wm4~I zFQgFXq!$&l70TRYQDh3iM+?ip$D>{VIxkM>CJzfgD!mbEW%Y))l!zT7H@jMzH{U`? z9av2Uno9Wgi|0Ol$wgI4l%`md6lBsfZQos|+s5pOIs2O>?Q8f{={$Kmz0m8%-T=E>@+`rjAx05vTQLC@(C6uXhe-VA9R1Cjn7H2Ooef*rw&xHJ28 zP3hon++32h7cvmb*tWv4I4Qzb{Gd=?md9O5$W}Jew_o>de&@vqI_pi*k^pwd(l7|t z_0l|~9`5cTHG3#r*^p01p!$c|vd$Em>d!u#>}B<7EK1gbcd-Fe6n#3idzgNO4keorxRM!v^MrzxF0UNOvBBXw7sU_Z%%Y_}1J5H|_ir ztBNvQG!-Ok#T+czGHMiz0m3;khxmM3-Ei+_>{IE2&rd13%lW7lU8Snc5$0wEbA){I z)iyMxybIqd;BP;&(l=0MN^TGXz_yK|+t;j0tGNx+bOilFr6NN*TnozYds|J)Rhg#R zKs~zhus-}rh2)FCi_F!~@Gl?aArDJ=k-RUWUUR`RB|zpcpX`OIoz^pV@6IrulFL*w z78zj{2ijfj#I*8u6c~@`(jgw}Nw4sc(@jH5D2fmE!hdH^NnWq$bOw10BF7QQPxLeq zsV5e{W~iGIp3cZM`M1kFe_ue?%9%Z(aXf0lsH>pCJ!|o2$0TiL;yl|OvRJ;e7c>yy z>Mu&9{Ku+&S?vzJ__ACqH=||w5#P!K$qG*3&YR}<8bU{@b~1j~>$sy|3x>~vwu82d z_BerhDEOTVfpaLZ-dyYrk;IT#bIq31ryR1FRht9pM3AADVMqKAvT!U zY8b=yK9cqIGG_B4U;;8Z1Kh~0;Y!s@4YSdY1jd?IhVxX%i=2cb>iD412fNzd2xJM_)+e z3}|j@y zMW#2a(kIc0?mFrHCd~=R1U#&fvr;i#Qmo;539l~ZpN1xwddT5v2_HrGyeVbhCugUe zY3qDaXv%kj8T^{3T(UA!hpLdtP>VHA&)Z|Q9;Fkuv%>8eqVYpLw?dK~ISaNEyNHah z!;9}M$A79Z5mbIhnTpA*K5mal`KUjUpW@J(VdZ;mxgAv&58_M)w}l1X_F_%?3UQtp zoO23uy7~MBr6!Or_7|Q`_zwXXS6@kCF=vtgygtN%UQgh0($Ug~j}4~b$;pBA5&*D7 zlgbhNQfp64(#0F(AdUW^><`Kk7cb1{`ZBmk;cUvr1^M;pD)JS(DtC|ygup+MuZ%1~ zqA=?9+)PJAJ3(1M9YSXkuThBGJM;I9NEy>tS#{2bNWMBOxyHVP; zX0wcVbfv8t4PO4e@Y3~l4>MTPq^{6126fFi#lb*LPHbMwdsnx>OJL|JkF>P-_5Lnv z_xa(wqb>nEg~Cn$2`bto(E(GhKnZmMvebH&>}r9qm8n@%>fZoi`K&;E4Dt1>u5^35 zW#E3P55Bl*mDzQpn$kc6Z5(HC$KNLViwP?;drIp%fXItPT8*SlaEVa@B0vu3a_D1U zNoIpTMQqM5RJ#+t5AUunzI*kAm^@tqNyNItW1du-z^h<2xEx718&#Shw;j1umkvvf zkxo4ex*Ake`m_k$oEQ#(j@n>7{k8RxKO8{B8(9~3k~8k5qR0r=(1C#;b%=fn`1{bwZCg>?j*JwMNPFfz}&MuRhyzM2EGD+JV`xfNRl$#apcl@pVb1IdJe^YW%;Otmsy; z^8w~8z6Qnym58X>8^76#c@BDb`1tIc{=Gx@1T;I?At<1)O6UtTggE>1-k4pQd6Yye za6km6XY-Frdejy?SXEuLpmZ?)d&te$m1}eaSO{JfzKHXgGP^r4AmJ}vDq;e z@)wiELwycHhddt9dY@DtyP&0QfW6-ex2gap0ZgG!hM;GgWArr#j*1&%2ouNvlu9Pn zZD&Rd6)UUs`SaRo9n>LWsUtWu=)>3A4xXbocfrim<)$lDfE}lI@EHlLjn6UG^VR%-N<0~2l-4CKYKaJ zpZ))X6XL5tVZF~DtAAe&TJ}NKQe9LXj3MHe^rY|U-0-AV>hgSVt>tJbJGOb6WQxsP zvy-}0veD3CxKjXLHx|6)e<^s0;^FTt4YlL6P2o)t&Qv&budZB}xxyILku4Z+oc2 zFh@6*ihuZn+`Krjn!qIi8xSh7Z8o2x0%&WAsiVYnfIGwQh5I=TvZ1o=1ciQ z65rD0U=jibMbOkPN-&*=rvY!yE4mmDNt4gQ{DZ}I;MzoceCAdVO(`cw)2!KfA1661 zayCi&u%As@6Z0AS_h5Hw=sJ*m-G}-1f)kfg-mk{2%j|mqtutK4WE8)YN(-Sii)^Un zn_mQ;!Mz=oegOc2%%j&+^Z5|#38{yI$=i0rF3z9i4aC#HmL~TTooO{|$Xsg8UJuc_ zqayc>`t;pCqsi&|<_+F^3kX45PP3S44JzB3At%0{Yunx;M_%bLa{8ZNIes_~V5Fa@ z!(PcJkugFD)hb`iU!^%gmzQMhJS?HSt>&2$E#D^~XHZI!7>XT1&y-x#$Hu0U77TTc z&aILLmh4r;%j}u9OGQ7b`p3<;Cl>JwT_i(w{ayasGr@@mj$lF|^s_c^)xe&AW64;C z0AO0>^hjFndGEz83x#g{6ni#zI8P#U8QT@(3toSCMjUt5I}p>{qa~jq@U{c`QG)s% zF=>b`HPc`yp=E7GEAnBrtb4IgJfEgb6~|GUy_V?A`8lM;mK)! z<;#|I;N=?g)irfVvu`U9*sbxa=WeV*?S8Grq-dVWmCFDet-9t z<`ag3XwkB7&ChbDAug>ocB>}^4TWX;8-a4z!%FN#4YV_=P73QR?%N_%K%LMEqw|<|mtB8pnU&VLQrPn89$R9inc=<4B_hznkEs_(aAP}5G5H0}Di4%-~IO6n^v&8a+_ zDk%#KR}7=ckhRxw(_w^gA&Iu@pY}{!JlbM0OsU(LB1)`=f2lth^v-kT) z>KHQ(KX)3>=>caJ?DUq1g0Q@j!2A#AH^d~$43*P#Vg&<%Gz3+*x)(-C(P=p@oAsX> z?&CacRbWm+m+h9zn$c50?%J~bd_Z4G`5#1l@YlCw|JAFjGdx_L6W%458;h!!e zZkC}Dt1C*qMfy&rVHd-ofk>GxCp3dbKd-6$x*yrc+i?;P1}b}g5H0Sr)Vg0@l*295 z1*XnqScVc2bdyM;Rfc``HQt_Nt=O3;zZ^cP`y4xqgF6>^eDvIw_H!*0rHMElGQ;S9 z;VMOrU>jN79yhu>!WeB}U~J5&A{aG-5AVt^18Lr=`(g%puWk*a;S7?q^H4r~BECEgG@xjr5tR-z=BNJ@1Bg$6X<#N$Ud zXGp;O^Gd=*jB#C!UE}K2Qx?jeiJZUyUVnA=ELFC7GoJ$PvD>em%**#hNiCb)<=~ns zh^Pk!744=jn0MzZbalL#@wDet>W&WU!(Yt{URfDAi&I$wH2K*Dyu&~e>Wn-*- zpEBPfRcv;n9G{>kFHXexa&W!-%gu>yr%os98wvBZ*ccx3DF<#gvM2z>5Oi3A4+Gq)hO;7g2H2on?2+5efZ z;8N%!BztL!InANIFAyKkCp)*4$s5m+MAt7O>%wVrObH1iMOyhqc2g3_EhQx)3z`8l zOJSyp>rB5`VH~%aFI{SUbp4|3$SVq#nF^qTL_4iA0ZY86MLn~O%uGV1HS z^$I1WHY3q|*n*{{q|z%~Y3~eP$QU}9*CHw$3LC4wue|oQb$B>lzu>miHzR}rSHjTH zkc~|%;JPa2LnEVrer_S5P+A494KCekxB z6joJ5MI+>T%ki=lFE;G5IFq0trpet)4h{~|aSk%Hw6ar0nlrQQF`0K6GqnxiO?LM7 z8*H3BhI1Vf3ywm)bICE8Y`gW6*i&|D%`47fTtUHIPvKR!0)m3F-k5O?UieIW;lkyr zWWj{^_=c{OPBX^=BM*-Uj)GE-SnxtLHro*gtt&6MDM_W`GCO*D7^s#~hD%H-SP4ln zDPe_>=Py$U^NmHme(jTv%gl`#8?zJ0>+S93sv>9F$431@k%2gA$LDU*+^cFI%IO0- z%Lqhrl)|_I1s2}sw|>Hbr-n2kx0oBY#6@2_@H~9@P%7?X%kVH| zA{BMd*RNkf{G`yqNcKkhv+K6yA^ z*wLS5D+2b@6$>iC*CMOvl5F`u8@oK_y zm&Cq&Nf=g&ySR8E^KJ&u!s@DTvtGDSn~+qT1UWejuB+LAyFtxH#>?yJf{NMsZxJ+s zoprQFo}OS}xMuJKQ<8J%!k;@iC@kTf;~~Sg&dCnu3gGSkW7%}fQd^AhOyvCQ*G(3=P19el^uFr3 zx%BfUTD7OJkWwzlX@5O+IDv<794^P!Kbn_`xfurE5bE?joZ@NE}UCfSV+Og=ZxHv4mfxF z_HADdQd2WCob4{1pJUZY*k_~FC=od-*gfw1c|~>^H8J}#va-cli)q!PoyWzH{SWf>z9R1Az(R1f!E4w!IpVxj^#1@&R=u|~>r87KwZRq6 zn5t_ICe!Hz&CSi3pBWP=@DXx{eVoZs@;Mm?u*D)aChchbAy@E0yS{@<$E zrJnku`S|M8H2OHSvu^J_UMJ{QioZTohnsl|3`N|$%Bc2H3W z#wt%D!@kT7!)utj8g;qRi`iOU9{<@ZmRzNW06@5p;2HN&&ey7P){jvf2IT1C(l}K# zr6pUvpu!ssZXc5?v80VJDd}hS#s%xa8diHa3{S$u9P zHsIG}ViX^*zS(%ZK^TCAg^)4{2~o9Pl6kAGieIaDwTgz(gr#fb+RdBHRW$X9i<@jO zoDKTEoQ)`@yl^%GO9__~ADPwc!`_SU=nM`CA<>QCURgN}GX1#_WJp3UCOs`KzQ)VP z|K&42cIIP4grPnmvA>)yBm_??j!9mr+q_@E%FJ@cw1NI*Z0wns+pCejA5y2~97XXF z-Zd3fipGcUnx?n-Cp99;H zlanI{n+qbOyQL6Li-B7MMci!chyaJ7tncYK8OFR}< zR_QoNMsRN4MsvGcwzfpcT{?<>Nvt<{&=*!#0{YrR{IUtK5S2@Uf)`94zv|zdl$DX0 zbQstiOGwLp^{V;di)!U4mjpRHSkjn9@vHfog@%6g)QA3`?w8S=J9pl^{Kflj|Ne(a zy5LlH-DOqUZ-8ue{rPe?wJes{76%8r@9rwkcVVH3Cd2Zn z*>)QM%b+4$l$QPIU(V7#bc{mz}*-CYraH98=Mr@WdP@14PR zPvIBXMgD;(_|O@;X#X@h-1k3`0GAsd*+S!2QK8!U+?Cxb$fdXG^4VV+}jL zfPtXJ3w_FY?||`KRRv`odMvc1MG9pos2Tr;85{Z0o7+}J4_cKm@oRL+d}|cH@ql1ES%8v>67l_x zvJj1eICm9&7Z-}3kSxz{@%-{zeD`7bnQ`#5XXLsO#HX-bR+7vA=^An-*VPYg?s=pL ztz-3+!^Rj+NMrMdig*0O@KM5|^_@%0&%UObiXOQ=GRg`g@M3;&iqsqq4ljebq;crp zo~wbEo?%Vw?Db6@E`cZT>q4MAf-Aoae|c^?b1JS<6H2+i?=4*h?nZ=GRp-&)0UzR;@RR(HHC zflok?nUU)98_E$MgMsMvc)ygt`I*RL!_r+3n4D4BrPs>P+S57?>&t1JXl{? zV56c+_VCLf!9rdf~cIGV+y7iJU*@`kdiF$<~)W^ z=9~fpG7P&VJxf)>^QdgPhP~@;IF9SR(OyRYNl4i4(q*bDVk4L7n$8~zWsEIJ*1)0 zxRsT64N41Sr_lu?nQU#vaFeX5-4)Z$>)vTFM0TUzyfKS?8?(d1i!3ZJOY7279|lXD z8WFBWqnh5+c*?yl_JjlhEx+h!lHR#9_*jU?ZjxjdmyQpCm(=xmx0n)*j=no>r~=_r z+T*@#BINx9T~cy#OM$NNX~j$lPkaO=cY|51i(bg+N?;5b_8b9{n;Qm}WVkUc|2I(m z4b3EHQ5or%mv_v)2|LD@nRSui$jG4LerD@mm;xp-!N=Nw^z0lr7z8g#gR^~dPp;%e zgDwd=#NwyL{rA35*64w!EeKbGHi`r*MgWnmJ*vfiCHW2*D1vNh~C?1}>Fh>7hEsasQ$e&_B z*3giosi_IZAoVxiZp2AtX8?p~aSUC&GzT$$cWkSrkt&F`xjBQ!o|_rnN3XCguZbyM zehvVc6ad-J=Ej2pcftmSOgElBHZ3k=r59~8;+qjNynL11*GLYJ)WqqL*DTxG(NR%s zC?`J==jX2)o|KjHVmv6wI}HGhCxIMh7!7~Hzw>GC3DNXVIl^?d-K*eEk@qZ>BigOs z+CvR$s-a_Lv^h#?q`J5yB&giIOe;F31QJ+@Gt0So;$#TZ#jJZe7EMc;d|wrpmQiJ> zVRLbWGZ-O>=a&GAA59N)V}D5j1cVKyaGF6v=5bTtN8T9)1eH4_@#`{G;WPe0Xsn}o z1u63V*F^gHZ;F_>6zgOfZ%llr;+^TA6aH~I*k7mZGD(1_v~rR6gdVg~5NT=4;x4Vg zPoLy^je9R}BWKd@jXl02^(#I;{uX4@2Rmz$<_R_7zE2^RHu(R_Rh42+%g7M7da~nP zTw;vf(J?EU!Pf)d3rm)#t_z${2Hh%xZ}aw- zG)4x`_KbUxUp<+^{8wyvp52Nt1V1au2?_Se70r>vCQ4uVWXO+;+k#A*_7QlM@;T!Z z6r;Y(H^x@svStHyunLg_*;BNJNYoZ>*70jHZr`y!Tf(~bSV_AOJHc=7KPlK7|ES<}dM16jQG`_dk6{^-p7%phiIZZ0k% z;k$7C$J_dPddr~#k+q5H)vD$78Tu2gfzomJWloRne0}v&ERs&eo-;nsU7G#zBa};$ z3|c~&cNx&2y&4rC&sOzJaCvz-X<*{6oZP)5k;IoTUoY)R@jf}k`9JHr<0fYLl=2D+ zo{em~_;a6(jI60Z0ZJA*Dn!q7Tm6CO_5jS{m$sLesA96fRGj7I(CN5k;%M*N7m#4z zF=*&vVPQ$diA#w;gT_;!UZJdx4%OGMUy0A13m6{OLR9OoK;i%`D!ZS<*Pca2;uXZA zOFKI9e(mdn=3PKVg+NP73j?$T5N=*x|BVg%XAuz(A3Zul7l{o?1cY|H+-jz<^PEiq z6neq_{%7zB2{ZHa@vN<_y`F?aT>8|}At51w4z(9lS7->p%h9BzC^xr{YL4RGE4l>0 z#whq2v>GkS#-V#(W60~XTu_SZr~ zL!qJxSzmvA5~D$mnUazs;JVHLzB}bmS>$=(?C9)lp+k@P5;iOL#fwHO{;c$LghJ1i z5jM+%O6=#hd+*p-I2o(rWKV{qfZZgLn3SY^|9<{neb$>dY+CO$($d6Wx>Z$Gkw+&b zB_;OrDK68AmIdO9id}8THHC#lPEJm)+XI>#-z*EKwif$Dht>@*U%p(iI~}I1qZ3+c zIg|-+#G~L!9(X)vbAymx^jUKdkbf8<*dHN*zM&Zj;l56zF$X2 z^R+$o3N>?cbCp*s=jrBr@wnp4PwG59Jrf6NTsIz0o#=_}SFDtcs?`^0>U*k}xW6wc zd2z5-uWxQ;rFN4p5=(!3)6&{ny>745mK`3GSQGf=i@f?av^aN+EWM7F^)&+n15Ii_ zE-bwH^|Pd#9TO8%v=+;+G2LVDv%bbp=j!X%u4OE3d&IWQC|g)sz7SrkQN1lEM|>`yd>`DKYw5<$|lU%zH=i=-d=Sz16Yq_~mI^}@b5ske zSA~pWkrMkIxgcHW=u;AVcSZZX)aFSUJ~E#pjmRk}X?h)uPO#6+%uso}^5hW^cyqWO zB&LRs<(D^<>4docYG?J-Tb_&4PgPw35ABd763K=h@Edo6k~!z<7oABruxEE<5HWuW z?);!DXo$~y!)C13822Aw z_)>dQMBW1P>y8E37!7;51PE$#zD`UOHfm~7V-wM--MMqe!%IX5%V*7FUN~>?dV+k( z@dby2m2yk>I2*3-Hsuc8B0Fs03{CZ{zLShKKH4IW;21JCh~7)9WJvh>^-O@5uB9rM z@Ag3~Lp1dCnjIY-9$rUqDAci2wS0z)AZsr&>9|H&#gMrQ&r{3cUM(aeNlgMw3cTvcnA85&!eLm4-c3c z=$r832PDf7Vmi740UE+iy-oU)-L_3Vo*OqbOGcesCOpf#3q`oN6x~)zhj?=(@gyZB zJ5Xl3Uw;`EVUHAX6iWH^_3l;kb@dc6c>5hVS4!4TI*-P{&VFaR&9r21r`}=i&fKTy zi+KfErABQLmu0e)cXwpcMYF$SMx~`iu6gZLd)2SP40x8`T>+G$~Y%KY} zP~B2qzTHME#mq|igy>9KP(Z*`<$S7NqrpATcje>mc#$H%}XLb^K+wh`53<~Hrn>i z&diPaz0R7q?@E1r(GL&mPpTKLn;7r?nyc9C65d$IirimG#PUPi8Gllk$LF;Xrk}jI z`)lrV9BRo3EA)^1@UbwC_lN2;Yiej@Bk9iRDmIXKQ9tA-;uJ$CZXN1=?hWp2q0wA_ zG+OUzbri-`C3k_2PNTLAQ22OG|F|`0=nWuGoW7T~pQb=Pq|+}lGnvx#vR=}oeaR^+ z<4@B|3ywte+~&>^=oO#P2s>LTcA8s=q2IGKFt~MFUjC+~C%Apb>R5Hapul|v1%*4V zt`+MO#!t5JEK+U@XBOpwA_}y%w{ZfKJ^J< zVeM}!D608{ql+pkC?|G5-r&{dh{aK2EOGnffsOb)kBiG0`TbfS?1%nszO!Y|hy8u` zwDK_&W@RQ#yg>fq0>lUtA8%#RADML(#<(C|wp=bq-O-Az<+?=<)mEzO^x0N3UUu+s z)7sP#D-8%n>iV{jpOkooGp!-=^76@>H}Ufa^5hj2^Xj^0XR}X{7`g)jGfohwU!)z* zvUUJKFIf^05p{pQKrenstk>|C?maLTI>4CoZ_|QH-BDJKe*dr)*BDT2+Z{6Kl5rE) z*KLFE?(?~-tHRmU3$c^E?hf#%yayf|t#_oQ0~{bOv7@}}HTD&FG>5jf_G9-HK%5(K z$URNXoPBoybxmA6JX6n3@YK1M5VE`i!MMW0Pl#Q?m4Sk|i{*E>qvINgf!= z{P00-@#jx9&rYIxv}s8Xv=Vo2L|!EI$*Q1&MQ%ZX1_W_F?Yo`l1+#kJ+$IRkWb-~b zn0QfBQ&XbH!OySZwmTKXC;Z5~KunGj7P1Vj!GQaX==jj`HoHlQTUX&`BR0L-k zE#n-1&9-mqEkpjazUbt&q?)F3Bve?nl&7t0S%=mz1o z9}Sr6DU-KO*(Gn5jPi(laHYs$3w2n2SKhUshzhTB-08rlxCE$QtaatoZah%&pU!QT zWDbURFE2m;h12rj-iOttfqeD)t`WLeK6HRs{i5+PD1WkJ^ZjwR$nHR)*QK|CP@;XeYbJnp^l!KDZm-`Z(1TD@ z4{DofL?LK8f<3^-_Qd;fU^9mV+iYXyia}@^T27uMcIf+2q=kfDQIcK?{Zb1 zK}F)FQc_Y<-Zy5e{I=uIa?-qX2B-kC_T1WR(z?OWJ?XA_Y%M7B^6@pA@$P#Z{rcqq zeX)u$o3tSu%a@q}1 z(Fn*R^6QTON>d9ZpI+wTA_R=NlcSw8o>KDOC$p*9kh!8&bj#5#@9=o1URGZ}ZOMt9 zon5Ukgq%vJXtBV6QIenebucY zD~nxsICnK)kM+_e%*DmUyrJCu{LQ^eR;ARIspg%_d<%-M&Syv02lc!xRMHHkeGGTm2x^0(HBsSN9J`#)8Z@2vFOWeA7*3fQplo zGtUx?LwVanzvk%oC?zdzN?d7mRn-q;-RP#~=3?g+9VjONXvk%Q>u@L3Go{dbG^^{or(K zn0lc-ltu%VX7(+XIy#90Ax;Fd7;f5R_we4u(ZWYSw|#sf zA*99nfOp|STrPz9HCM8;pVfeuDEzJB{v{INbiOzSO zOB1?I1M048wL5mB*5$e5Xo9^Lz>FNkhsrPb*qii!!4#W!}Vv6lH5*<3c zD=Ol)8hMWiK$ti5bsC9)Q=|b)aJ&Ia|8GRC1`a!8E;CR7B@EHeLgnHLLC5ZBd*~t` z-?f2O0yz5Smj&Jn*e%JuoyUs?-ruQxK>bk%I9{~Y@D*)d*Kyp?_2AW>sj-MFO zN12M$R62#hv!w{b0izzw;iswC!G&L&n@3(_-H=!8evPa1H%;>#oaY;VvL-U%bVavH zZQDN8;y06$u*YuE5}%n3RJz5+pU-!eZG=Zg8jY4&yF${u9#?;es!~mlsvCC&D>UxQ z2nz{KZo8|WOndwuF+I7g7D8(A)T96ou=-ysB(1+F^pGCjruROyhkQKEJKDv`DI+Hb z8?0V*2+sHdp(Ih$)I8Wa#Kb#q_Vr2`;Oc;7&-d?M2P=u+(UzdOcro&(Z%(Sa#bC}X z<_xV5G}#pfFHli6J;lH-f*e47`R3tzvjm}$a9Y~c&k`Zxx<-@UG@=nJo{iUxe9#zh zUcG)j4LNq-;o$s(me$rOSZgV1Y0QspZJs*KQ+AW@KXa+7w?S^P{1~a&UxIMpchmVN z}fytY`@ zfFoFxpMG~9wSMeA4z;-N`}fz=3WZndPY&wU3&kI+>gg4@hoeHeXgx;lbSQ_K{=~$G zn?HX*h17c0YXeW+6G26W)w%;4g*Ew}@6egKbNBAX!NiH48A17&^Jua+a*mwb%;CpL zPYu`PnOncB7{W8cW)Lc`(3-mR?dqhDw*z3nd?CwT@lY7b~lTV5WTUUi$ui<6HO?l3PtDmQPIqc=oVO zyIY=+)Z4-8is$rYR9928Dkk4@ak)`dU9H}Y6&)Un#y}}8Esfgz{@F9N&=$iBBBX7~ zkPKS?kz|{fYMTm882yv|p}_cDWR{d{`khqg=P&yer90EO78xNp zq+-V#k$fZXe?ttKDTlqmJ~@EiLK9RU>bBO9T;3R}HTG&`;9wY4KR)opZ%;4*XEPtJy43g0HpB?8R?IxZ zPWAwMY$LeweX`HGm*`-9u%Yrh)kN)+8>_WDdWT>(s!pEXd&~MKp%nTa%8nPlek-?4 zV_AOSJYo!R@sUjFCR$QwU_=BV)IJZVngX;+EzUt+%*{Dr(s>qWf?-MWJS3xp@3$a+M+$QC<l%ogD3SyFHoAiWCj)=(vO0 zN+>~sCZBBIx*Jx7c{+}N0nQL?x<@ZId%r#rmT%68CJGMev7 z$(y(-f4|aUuEwV1d!47S7nFvbqx+44^k`>_u6i!st@x2>saDw6+iO4gI>G#YnU%Pw zXYGLW0EVkIObw7#h1t+QWpA{Gi<2VfGr_gbNC4Soa@ag9{I3zrh)Yqp+bvqe{L_PO;xvGC& zS7&7Cr^1Cq-x$@E{Mgdszn~&&GE|_;cJ-?4{rgEk?-)M3Z8XS=5y9qi0N z2v6yIT(_CBX7=)VAta$FluFv%1m-wur6wU6r8vegULJhM#=$YukcMnchh3cp*sjwr ztTgSWQ&UqjfDfU4?9;srPDlgQF_i|(ICxZ0*ws3Lbi$dv(TQWgjE?9r(?*2Y;ETy- zvbT9!drQk1Sn`j8^ra&M1Fy_uz5p~v$Hm>4pLeU(J6w3(z34w>gEGkOZEp}3~q&;5ajT^Qx0_VCyrKKAS3-MNN*wa&;#19AGe3}#cajj!C$_3@nW|_v(6W2 zGDOEG7A{1mNr=@N0WY+fS|ORS8!?VEJUKq{s&)4E7DF{VP~mOFH0{N4cKznrT5nJB zpPKdiFO=3^isga(5Q%I>b$8R#)3==*c%LXa(e`~Y;X$RYX=#OQxO%Y1K)cDx%fs!y zx%upM$}Uu#!&Ock1(iRj9+{fXOa;+@?CFUzS?)VLXr@2*fld|<(am)P71IiDKvN&; z!3$~o{W%7_R8w{WqQ6}pa8ZnVY$~J`+V@IRm|q{}xK|6M9vd4Q3V8txuG_A)1O)|c zbP2CbLY!!Yn!p~FkZjbD?F-QQqzB7EpI^$*Fk|65ZwUYm;O?Q{3GIaoA%GDIgX1Np zkt{i{)HO7ipc&v7`dak)aGhs0izONyzMn7Kh(q@%FB&*R>uJT zWIR1ZtoW&+HN%&`V)a%d-vqlsfF{Ccv@13``YH4))hz+l@>k1oh=|%)MK{jE$pvcb zq3(ec%Jk?!uaE*7G;L4TYO!@BeyEFs&Bp@K5Nar0JC#STH4VS~?$I&le^5+XP!Xs&EX+PeKcEzV zE$r{_+b#89?!ELJ+1S|7Dl$Mje?<%NYxMbZ%+$2vJOd3S@#07kHE9_c)Dxnkqq!;Z z;UTh)j$7C#o)DFxk_~HY6hC(PO8H03GK}#*E@Sz>_TUuw_W#3Lp$xlT%rApL+Q_sx zVwH+RyVVG^fS%!D)SmaY5|i9kDnxOqsop+N$4OEAdGKv%Wo`OsClcqKVHup&OG(Kv zT)PH&0`y*;UTIZY@Hz8V_I!Ph0ewEl+fq_09jA2JL7%-NVv-AtRsPy|i3qV-W>%K6 zVcA3JMs}c43OKI&EIbE709f=t`i8SQ_z3%@OP37$Uf=Ceb|nWEHLDUxU_ye~9&u_# z`TuhGL)X94V}$g`nV9ewR3C4`lMo9FD@saAVqH=aFA@ zb_Fysv$I@{f8;VH%2B~`z%Gtd50K_g=peap;Zjv{R1?BY1f2_Im4{N|jqDW`}y&1YQ||z_Vy=X-R+YAcBjh*}VAHIE#U#_sSy^ljeuH zElvGuy|4Uvu@Eu2J9j?5R)|aY98gBlWu2C?QBy`&JY|&f@9yCN@x$0yfe*KCXI!*@ zaQGT8FLM<$6Vntl+YPSpWfT?R7#iM89|Vf^p?ppsqgXxS=Jt7n4YYD_5{qKHzvX$! z2!Q4&_|*_0epIE*E#{5+m)?h5nnd?JNpDTxqN7$~IsW;(m+%A6^v=nJ0l}rB!qsZG zr9R!PQ|FZYjTga_9TMyj{o(~d$tzqyQXp<`Q6lJ4!0zO#{mElyYYHx6!-6DyzsE6a^6RV5C@I4!i&Z|D zD=gS-aCnkp7e3X3BlJ6;JCuvw6Bl6d*!dNTVyfN9?-v)<;k?9hq_|Y|BWQN6u z1Gp?SZ^GLMP&0uyNV2bZ|wD(Tktc4Mcwq!hUiR}D8s+VPe#q^6~gYx^kbcp0zJ z+PKKNdu`_DgmVxg-0zxmQyQ?}xF}YS(jK7L(*JLqrw_D(_(|5n&@z;YyUr?3fxPC_ ziN&&B>FJ4#a%%{@{-c3dQ1KxBfM$^RvoG@|9Z{kS zZ)R~XW?@{ouN3bIuvUuPx2b>{1foA;-G~VS!m25YH$?k&Z_|koWL_GhA$^n}j$`*k z9F_%o`;uUjv0$sz9Qu9}Ths;jMiS1Eq8aD_O8}Pe6&)MN&+_bGHg4m83DR2E$feJ= zmuO3{Bl5r!4QyxL2~o9{C2TgCh&ZmBw7A2V+3-BE3J2tA*Lg~S*Db}C)^~VB&d*sei)uF@Nv!4&4Xn zgMEJyQUij~zksp>rM;7mn{k1Ili|ve3*iOsz>WyxYP*_!7U_F5QI3m1?v0{D9`0TP zCYmw=Oox9|OVYt8ZWi$Q(ApKXUvR-1DCnL6DODJSX(*R;yn#qawIYz^WzxncwC|>?GLBSB+YUj*x?J(%a0kJTe{tva?dVQuXLlvlz4PQ+4 z|096|uIe9Dyl94{P2Bq(8aG*>pn*fk0KKcQhw_rV-d$+;$jPH0Nm-QcwR(<%5@61m z1qE23m;fCWiTR@+3W`9+pS4_{dAY!2gb4Uy;yu5oXY+EOfpJ8P`XcVR_ugMdfT6}e z%DEm@N8JSQn zSsZX;%z{%n=%>-<+5gtMi9ba%i1-6+hTBVgDmH0oKBpvID{^MsGk=J-vCb5IKlapjVFtDkKj%=?FjW@1(~@Q5PALn&_q*92$0%Z5n#T#g+=`DVT6W}koKm}HywZu zxAP%`l*o_hpV;<@)mO$}1O0m!HJF({jZC%`&w&)Rf#{Fa6@)krbgk{yLQ*Ah|59c$ zwWN=R3n?yb;z1xe3ji>+#0MpitXgbx`LAI%IY(z`+;At%TCZ=q-ZUHU4gM%Yamsj= z1EOK~BikQnKBqLs%{Pin20!eIo0^#X0|G+0+SW{1wg-Sjq2(y30zpIS_sUJA2P8{; zgw)@@MS$q!)0%6|u3BW&-{2S;3-tBRU%vRZ>I4MfsY=H&;ZtMYW`R!O-OZP`MGW5N z%=6MXQ;&P6P3bcOA)osQqw!&`ewy0)ptG@~xpe@&p|ZD#0nv z#sr!4*DMq)EW>tn!9h%RalWN-@u=w(?H|{3W1b(8^@{`smTU|jC#NuUkU@0> z{y_Xlz&?sKP}$(NqTzl!&v8_UH&D;-rUATZwXB82Z*0K8jEc5}|642t}eKLd>8le>#vq zBsVrWg!;X;FzYs^AV@``%dG?#k@_h2Fv1)~NNY|tN^ml(G zJ~z!Q|A{9hjY_2OM+xIikFM}BLR$*=c~|BJ5vcwrK)zkisUyWzIybx;}6c;h&@hFDD#U{QuU+}L&cSC|Mm14RjK{ME`wIwopwncM_$A zHAYsOVS!%j%NOBS4?zwD6!)oZ_u?lm9LY|ll=P-q21Om6y6E{%BBT^oP}+f;7h<{s zKn%cc--xajdmrT@;l7RLy_vjPZ`D72(t_18{5Bfdq)|&CB9a3yLJNhz=HTR{J#YD< zpA7rSlP6P-ze@UUnL=sD$C4uIrD~n~+=7B2e~)TQC0AU!2-qIQB4AGpoW`ep+Mi__-QJ(7*XQVLJ5AKSl42m{ zChpVer}kb$hP}5cf8T07>089Np2=BV7L=^kJc4InZ}08-KjK^<>eDDID}w~h7h9#* z1EhX#Wc0Q^#cHb=99HC8o&7IWIUrD?Krk}<_1;J1)@B45_R~|SeH{6F4<)gA7+u|1 z_{W$d=*3v7$Z_pKPPi_Wval!^P8CF8Z7mCe@_WypKR3AEJ~lZIx_HMy zgOj>iaQoXZG5w9nmzP1oMhb`PU*9{BpFhud<%&F*^t15rjND>0PR`DCcPQW_NevMO z#^DhW5DUx{8M$f|$TTL9UAjwh;j*dU#Fy+kooCPRAx%ZyE+JuWyVI{+&?!vS+dtdX zB4t*O(SKSY$nPhRf^yWb+`4VCF9)P?q((@(4=_A2A!ov)c#X=L?$Q5v{s+aEPCkNR zO%;ucY_A!REt|QJw2_gWAc2TA!AXd`1Jk=zbxfvXf}C`n{ z{>_Gdqn**cPfI6x3Y4?{HamAs12-I4U}{oFEeX~4FZ#5 z>d*7KxV?fP1MY$RFtF4?L`8)Qyomc$XR+^da3!IS;b~o+UjKl-3Oy#+KQ4P8_SqMI z#N$;ohS0V$DA%0XEhfxxVn)5TjEU7Hq(?}Kik7xDf`vjy$GKs7JCrNP3?e=on}QO} z6>U?0y{q#r;)t2B110}~^VZJx-gec`?)atde{|+E*`l~0vL){aY>ACaicZr9#g?Io zVr+inr%#`1^f>;=UZSfSiFRez-&@Oi*L(X>M8AZ0FkgXs1oq{^g)lJ1FT=wi)zsZ| zczyUcwnHV7+%KB}qHc+f{+31p2m>w=HG`^i!;{$fgjJx@yzNP@15cX$M}5e(l78XV zQT4#75dFK?g@w_pAs(RDWem$Q$@#Lqx%3ZecgkCQ!0bemmwJr)`0C}$XIWytlVO|o z6^quEWP*-u-OkNLkMTM;G* z;!%d&*0#20E%u!d=j$lB-)S#kGF$XH1+=1kP*F)IuSfu;)ZvX35>{%knTY5j1E-N- z261g~5ZvIA^|!E9f@(TjG&2&OxgWe(;Hp}A;o7xppuRt65+VBo^$EbeP}r%cisxZx z;vb~$q1kgEXlKR166k&=Fz*+?%f z#Vo*L1=cX=DSQbrkZ4>OB=^h2>@E#l^oA zY5JS~DDeL7jLZ=SpzexrBZU-XdfJJN>l)L|n{X3}I8b^25%h_I7&bEsoc`~dJnW|@ zuP7)il^7YM>w~t05ft^Gl>V(VKPv}SUD0S6G#+OF37^9%MW@aE;Cc$4OG*Yetz2RN zw$MLX+~91~1tbV7Av&CknORufy8E~G>o(jaAcvw;k;i@Fv$r!*(FZMMAY^OIa3jax z_ndTs6y<^A<;}d>BQ~ot>jgni9T?SDSR7mi^Tov?oxzKoA}ACS8W|%9$^w^Pfk9<@ zgVEyNa{K%eT0Z`bQQ*1ifq_`P_quO;NJe%NkdZniXrgq;2PedL*prU)F`!;7U% zQCHzi{=qriP(OdTE9CU9f-EYV^82VeT;O!z|9NQ)L{i062(+hnD3Cw;cOr}aN7|=L zz`9L>c>$)y!0Q=xFCiBl2xk%&z{~j$K;h;-4fbe*_qTuq`Q=+4iNc+3$ZT(WLT39c z9H8&ih;h+2urNA4qg0CVL(6|UA=LW^g1M1wAOa>1i26?<`Fh#;A1yVnZd`B+gdtpU zRWj@wsQ%!95a8>Q0DO-b^*y$KrI#1@a^~G{(($gDNr8+wWX67CKiGW7r@+B0Mai?-lk3(=a~3Unfx0IV*R~P@p)6W=c|{2P6R|0sItahX*SblN ze_$HHMv#BUXhf+&FA!=bu%Ey`ED|~l>n zUy|CT- zSqrmiO5Lt)XrT2dU8xDAqooxT6Qh5BPeD&#pI%E#t8aLiuGC`HhFViN{fu5{A|rM{ z|NUpr)@Nm9DSAzAVPj{HOG>&nKi+ZgB<1zgRO!dLhaPFWxa>IVzp%AA zMJ?+2b2&_>=A$;Xe18WA2X@^@>L*X0)U8;g(l~cciety|&<78MB`r!=SXo(hqpz?y zX=7p5j+{6VwYIuY)meDD<%smsLS((&+*o@ygJ4@#mEqVf(P-U}?lLc-?b{i8{btv_ z^qM+!fSKWppq$9<>uYb`ys5!2l`K~%`1$z>3JMC^n71+o1qIi(zM_(B5)=}mYI}IF zw$yW2!%&3b3^z{jFLiTs^ViMIKfd)Ooi6Mx^=#}EP!+_}$v?yzM{i{mFujafa+{Kx z`|oq$-CLWRo88>p zf-I!2=m@rsdoE*t_l>k>%!viDP-W~33MCF_w<~)7U>^QGIXUUr@hq7_XlGJzFr}3Q zVPR>R@A6fiSkT?Sk&(v3!-LmZ^kzar*sE7s8#isbUtYdNL`3BEyLX{l_gT)fN=r#K z9JBThd;MC!q_lKq(vZGCoQ<%%C@wDEH!+dZQFbUyt7g2bFe-{kOIv&X;_5>aGqVUB zkmjEuAt8J#3bitB7cYhv7Vi4;!eu%3;?bi=A3u4bwRbNKBO{~R*r)BzJ>{h}H)>-& ze+}(>@bKZ?pW;kf?x_-VhlXX;$hXqU<%v?CR?JE>)cmo5NS7<<73t zyeCG6_oev!*sQ3mJoaVkEd$w%Z z;$3fc{P@+aDi^26wCVe==n@h8o;-b8Kic-l9V4(P_h!ZB5Zk`pN9Ms6PENWot;>dc z{!nASqxbawnH}~i3jA^BG`IgD`|XmFLkSadr?N60J=%t4p(D&H{giU+LZ+%11VZ`t z4G_C`IG?x0l|C> zpW55|Th!NvzFCPU+@1e$-pYzMSC7EqL~MQ3r7yJ$P{4#i^d?!N%CZSoPKFWEC$(X^JD+?VUwVoH+VTeSMO(eZE=FZ9BbZ&z>d9*iy2wv85drQ=B)-GI{;_ zwanL!yDUfaJc$USeVN8LZ{N0GTm4(&Gb=hZ-^(3MOSgVY_2SH6TuMswpUGcSi#cm_ zK~k14HKcCO?up(0I4i3^VM0+!siwXCsPyn;SK+qYD5a(X%yes0DT6>Pk|kGyfoSdX zGi}rLoYvJ%O$R>6%5kqF1B9%7L*LwJTluY&(eug=GBe#%4vVoxekgJ}R(OzjlAY}% zLh$nP`rfgpAUsNwIzH}8KJ=&~G9~nSAo=xAaQK^ z$3549l|Qpd@kFL^K%x z)5@FT$_75&3m1y=wFQT=kl92tJ%^h+OWcKCUKkhkHVwq)`0?&eh->Aahc$6QZ{O~> zq6sRmsGx~8P7EF!J8NQM;&yIoZ0t#gFCC))k8ihZxeC8HpZU8qkK?U_(A^Ntb7k|c zQ;DCRMTM$f!?E`8U6_nc4P4!fJ*X-!(2 z2KY{|F)=Zb!AEEBUfb66z2z_Nh(5?VOsQe8zE*~wk@3~i{J5-hr%VmcBnIC%+oIk$ zP#<;QM4azyxNH6$UNv9(tMw++r9uh%!oKE|-n}&;bV||`)RQ7a^i$0b8?Q!1<)3L2 z#nxOKTt*n*wvCQ2a7DHumM`|_*W!EaNwju<$a%~*FFa*d6`&@1C`oKl>iNTmv`!t* z_BuOH2<;x-&Ao1lQX?)dE_gs@liv%9Tl+J84-k{zN^!2&QjUpKS66FP?9h~ZK!)58 z_q7fEzCCCgbz7P{V{lJ?oseEkU031h?X3Kw$OU!W1g$uyxI4`{pNlV z^4KHbtl3k3!?@y7Q(OKh{`^w3EBo}v*xGFrA3ErROtb6XCP>63CcbuxJe6xzG54}R zUSJ~!hh0~}$#tft^>u@KSv0=&=9#!iCIBcNJX8ow>NY ztSuO)A<3b>ctc+}wgSoI?9lMAJ$BCGSaz=WCLgv)oso`QzTw{uY3*nE3|0p5_thO8 z9U4ZgueOR1b&@#g{mEWEmoqYi_N*@21CLGb2|x6xcCx!H?#`Xabv*L?N=kP;Df#2{ zSvGAt`OE8p;gO?9>$3-JEiJdoyL_38okEboK!lK=v6IMn4iu%Ts@gX&K&hwKNT;G` zgm&8e}431m{--qn~8}LPfry8y8CTg!hYFv-xRUeHp}ePD!ES`l(;TV zKUAT|n+j(+QPF)sDE?W=%k!gbc6N5vGR(te#?sQ#)O2)A%Bfkeo0^>F49*uFk1q3? z8o;R67Ap-zL*nDvkwenjMh_bs3oa@Z>kDg{nB275#y@s%f95M>0Uv4X|JmAmu9as@ z=hsDiPgf%9aymOZZ94O8$z=dC;x7^GMf`F5^Xp{u&)Qe7-r4Q@()O*=|DI>Pb|paD z{{8#i7A7qnPM+L-_QpMIAFIH>7vinX`HXxJaPF;4?nt7&V-W5$`{VxJC=S|d*H|X8 zr%zq6=qJ1Oj#yZk#)31<2O%iIVd0@(KN&! zbZf^6I~)tzzYEUHm?lIa+S4s5-`iWhe&yM9>RsB?=*WHKobL#?{ZMf7fOBUa1qs*I zUF7BA;fYVZ{+T8D(3NlBEaIQ(4v&sTB3*Iazkk1B{r5`l-AJO{r(-V!^wI;h1Rf-}nM=jWH_JAZa%p=zyt znb`>$Kazdh08*K++PNd*($ae7=6CXIy>m>T9v9fNr)TJNBcFP}78S3_q4q{#{i*WV z^>=qWol1L5&l-d0$tEQy&md$9$;)%#H2SJYH5HWj{n`1@;7)M-Hp9CUmUC@l8yT(2 z2zi=Fo#4w?f$8$+z$KRN`D?Q;(RG`@=>Rfe{uCHTix?}@J3aoOuSf;D=4{yJW3bq+=X{C4ib zYz(@wyz9bkr)%i=_!Sh6xi(5|-(K@7jLFE_Iu_{b?t4$mFs+$SE^&OH9~tub&9&-% zI9qgBY@-nl8JoeQQE`2EdO~4k+zbaQpEs-U-Tkqx&1as8nYk{QhRGnnA;e5!Kar#3@2~dp zA~tAo)e&8-+v1t{F>_t7@aZZ|7B+b*=s zD<_P)bJyu+xl!YWP~s+GRz5Ib_wJs;h6A@GHIE#*GXp)j=gRm1#o@A5L&zDc1?hqkLiYHt`WAE#KSi#1R}E%*?e} zU`dl9h^Fc7TP>tc_1|_??t`?a-X&h1m~bw%Xl@|)fU&XhU5C0s>{xQhzo&X#J-%Nw zzqJMr)F{Deuf3kzgv9p!Z9+Nw%bto$_6U`C*> zkwbRb=sY}_(Q1Qyr+8s(V{QO4f%jC!f`KoOz1Av@FH>!Sq?AQTP+}ril6v53|* z_1Ml%vv`U18HRw!<>8e=LP9gBXZd&TG@e#+a&nTr^xHYdvWx=-^tAh2R$kt8obdFS zArB?&RA#QYGfhoRwU_{$nwIQdV4B#G5l5=Mdm~njC~Y)9o!uS7t9G@&_R8S9JG%@k z$~qk76wi;aJUo4UCKhU%oquCop2kYXCBQ=E<~#1McuK^BRK>mk7b3_0)85 zI5n{0=Jq2X8(Pjdrh|b?emgH<$g^M04h~Of4*~T^Rp-KQHh4v8r?3FKt&AXM**v(aUn| zC*E23_$b|yG!I4@&v<gsFTH!_y5tuB*sBX?(Rb;a3}t*xz{&(E;Gy!i91e5QFRi86BUELQl=`%WylxVXq( z7&DQyd}%WM&imF$_wR2v8Qhg)z`+hV{*>eV76FuM-o35I2Ze%gaFOk9bkwPb+sfEf z6U^LluY=-P?G$ekiCHKM?FQ;1J6~Rqn2J)bl}VI4!&bRGsq*}6``ZDj)uN&z{r&p~ zRA((k;|0XU$0F5lH+@f3z925|+9T~J+ z&F|0m+isqoyAI!MxSfztKYmV1P%zkYr<}uU7Ba;drtV>h46X1NmypPJY!x&}QQfSh zq!b)ebJWO)HJ3FgEsa0>?z@NWXa7+I0B_|>G<0#0#WAW$&{3oxa|pu;@H8$#}^BnMQFY+pfdMj$PSt z;)Tt}2m6BGE?||m%*@Or?(tW4c6Mgom^li_Ng1G z{x4=SNK$0QaLQvTzC|qnF=4DPHJ{LiV^nW%Zs$@yF9s@&m4#*clkkV*y2SJ2J1$Os ziv(f!YixL6Ah@{4H@ikjC^V5Opjhp}zJ%Mig`}j`XCKS`QPGfU%QZLBO4W2*y7)=t zev;|fw~t}?_ntj_kagMp_9!SQ-~er`tgJM9;k55N#EGwZqS+TFI%ncuBqSu5x-aA!XOWZ*N`aX%P8OD+4SN==#d$MW$2Ay&7~VEF zH9ur3b!*J%!!C?8QX=p&vv=2=_pI4)_ebStyR9n_lWg=c* z;yy^?cw{d9HXO=2VG$AAu}}Yq>#0g?0&)-L6}nqemW*KL5#H#j=+-~jJSdtDaF=cR zR0~icH=z6Fg<2e&(aBV^jr$1$>ZSt4z*W_rz%_qO&Ol@hgVa4+^YingD;L4c(t#$a zN4-)b!%Rs@nRkBFI6hS;5mhIawfQGfzeGvHTH74f4ZKVkm`h6;gLnD%jU-jx^Y`Jw zd#Bu&PqJuXia#J3dr$M9YEF8yTq;a}5Vu8i@Sc6Iz%$Q$4E&^s2o1oEwz2WYko$8$ zfUjCxS^4~?FZXp#hBp*Q0xSL_a1BBFct2em-Y>~I5#@A-lL{?^BLSL@1=z&GKSyQk9CQIhDOG&y+gm8ifHc4}Paqet5J57U3yW|iG8 zC@pR1cF>nNES|6k2JRmVhw|DmS<@QCu~(1Jm1Fml9~vXC-@Li8`DaCW`G*%SC#ZCF z48lMkJUN=}Hr%|`>Ms^n2H@asBNPe|LiabowB69_xZuy}Kr51Fc^V&{1yxs+{n+jF z*#-qp(!#YWFqJ^3w$lfl7eOX($&HIdMQ1)2u0Oo=e_P7eRG@$G;O^2t1d{k* zd!=<%fLx9f4Jr*XPl0Zk8EY(%yg1Q$8MIMadHFYuR#rO;scS2AJo3(c6`6Uc&&G4BV&24WV`6CM2X$|JjRwM0Yy9ClXvMv zWl~74_6fZFllHUrR}AiIV26y4k4udFotwVY^!|NxGUDXD8#i8^Ejn($b~bc`MuZUk z(V1_b1D>#NL$+oJZ9Za9tlC8nkDWZ5Hq~FPx9e%VaN)wq+dED)eD3H_n34FHhg^2I zsJJ+gC0k$EPFqW>6YpOLWPdW(vP_rLU&6%Hv|$zK_spl|(f(ZU&3PD}orHu$^xtvT zkB*pOu4vubbD&M;7Zy0@C`34-x@HC&3u$O*HpFC^W_Mw;=7D=-KR?`C?&En8MYpr1 zWiqSvoyH^L2@^Tyg=WY!FF@ZIr1|?-{hY~maq+8aNY>eh#jgF8U=!r3Euj3I${O;~QEu_~SJ#=(CtPQa7yG4x z@2-nv2NOdFMu#t8kphwHdj&INNpb4R)lCvIjvx4Y{O@Vu+d#$hC+u%6^KyMsYRH=n z%5r&Osu3lSJ2aGvEp6}Lufy0HRi?^AkdVf|Cx*(2%%E211jMQjjCE*VnTg-=FFKy6)&l&_lC%n4i3VVE58naYky=^M9aKSFpghUbqhYayK85C z-69kS)YVa_Ur41;NJ!i5Z}c+w%x6{=SAq4@QDpBBK(~xfT!-<$~R+%Cx zAeq;^?4ct((L|z5sYMJz`yk$2|GY;IhJd+ zQ7S0sf4l%;_wJp@_$|S&WBu*hw-342>Lj`t9UTqc@2)PXpuoB9P*OE^bQritXb(}k zR1y0!SOLkvV2}bP%5d7JwNoP_5l9qv?N5&SmK`4c{@oS~*dhd`e7AnBx`u|k6NA)t z$)wP7x`j9Aco8E8@!gVV(0$9+tussGxr5zay&&y&@N-1Xvz%#@*uGs8B>vmCZx0_i z5(3J8BPVAD@Cm8zd3uK66awh>{rEu(VY>6n7j6~jSF9q$DZ$;lH<3z1=7HPH9)7^) ze&7v>$uFXQzR-=|PYHVt6iQSvBCS(QhC-b#D?m>zOntpCQ*zCJQeA^izRN-_hmcu$rN zgEPFM>td|SOd{8s0?8Zk@iT8Fa{GXzqwki_$$(2G0~?pZxg@KeJmuu|9l6$x5B9~o z%?#8B8rU(fTesK3VhimCUW3|S{;kv7t5#KeDUX(`ADZ{U!R|;eVCa!`rR*- zOA8WR8CFsr$C;EId~%gkR0;w167mC!0s#)3wX`TzfRR7f*Y9;rl~}0a3b&=Ar0hh= zaIeCxpEA4E5$8X?>OOV#yT>Nt7onQugoJ2k^dt(#MXY0DvNudt&MX%95l^_Pc5#A> zhlS;XO-%wB86ns_)KaT^0PZ%=I^d7U*BtX*rs4_mV`{@cf4+yt^trQ&t*Kx^Y6Z~3 zt}&XY(bv~^EK|c+J5@nIKwtvsqVwZNW8dC;^r&O5n`WOpmSa})^5sj$0Bsz)BsHI3 z4|;kcKz2=puj5hdu;PrWpNL=;>VzCwk(A1!{Ssu33ToWXjg5LAmJf=?=db;p3N+6& zJ~Lq*_B1EQq1d_W6~2>uE`9BRj!ktC#RTH&8ABR&jV9tfORY>qL`0BrRvoFCax%Wm zMddJp;Gc2&JF1kr#zy;^U>Y%T@qtfQPMSmXPphotg}e}=BY4JyIh5;0S(yr{MFANI zLB&DHE${I{Y^j5W0jGw2wODG*NpsMsB)GQro1w{dsh;0l3!;OJhl@)~>0kw(i@#31 zmK1bd7y5;>fdR8b{2S_%gGgZ$h#)-k7SA3(jzDS?1&1Rc77ktKH}a*g-%)zm9B>mC zhntg~!MG?^EP$_E{#o41z57(r@%Jg9V}1hN#`n&v|C}Ahi9QLvAllIM1Ks%a1-yPY?b(6mMv@ZQHgC>xtAkkvRQMqYT}Au(rBB(K(yJ7zskM`T4E1 zuus7@mRGHFZtnb{;gfy%8YxHnY#HN6`ooL-YOjSl!~p##1me@L4++qx+y9u)R5uKZf#QCyt!nd>&A^6 zl=)`YP!rwV_)X_A2B-vjv>|4zgct)66u7qBONwEGt{8RS^oiG73EdQh)u5RY_WaDsZ# zKQclOVga$v;nXS8jk0gwz7pSgaVXL>$&C>c0OUNgu1dM! z<;AJGaRKr}A!FD;jcmexk>&Pd)(p=y#BMirp@7IorK{_Al0M&$+;?vMuk43~rvKP+ zg%=eT+LvAY`4;f-*1`Sz?Xag)US71$GAY0(CIAS!NX!SiG?HWibsR2vdolc+LHev=xhUgI@jOBpWV8gl> zz;Dq3yldbZ3xT)TRrjIVDBzT~a)971<+%RU>o}q4N{?6EAGQ!o!W>bp&n#6)n)hSo zfpUfQz)<>!4uwOBThF)W+9nB8df%9lp`lP5$-#<+o)E0!)M_ZpBydUP;sDdc*WwMz z$%j73f{i7W3>(B9&?kj`f@;jQ)h#U>TGSS{fX^m(oyoCdo|CD`$8R~ix zl4kI#a7da3!Is7JWpHIxSWO^M5RRdUsHobi)p_Z=6MFjWioSDVh@-RsgJroEQhMjl z%k5cP@eI9kWqe+(36!#RuV z6%#$HAh_h5D1K&?&GfnrtJD8qu0}^sPg|0MXU<}QPi>;BkPd)#_u?OVfd#gCvZ&*f zvgqsXsIR9X31eiBzVUIVppi*daB(1vNLiiaxF(CermVo)a!X1%=`jRta%@efAxl$W zPM(P^5dBeoG$Q*&;RkK?sn+At-6L7~;; zo$FSH!aV-71oQ>Ti&id;Nl??$e%uwPb+;38e+=oE@~2(L9ST;g*=t~F=;zO98YYhF zuC6;rmfyWIAn9^A$H-E8FEA+imxk(pO{5Pv!M)gXX-ds+Wv0>1%d0~>G?b-sJ+JEP zY=0dcYHTN)Pab6?0GsZwRVoIUDN9Q*7#c-P-w8T~OFcjpsJT$@?cZPh!^2kq*~mNx zSB~$s>nyL1f(gs@S3(g&a{nOA-v=4(Hh^8@%kwkSzkmPuv`0mSXSgL*!Oi6J6};_k zOp8IHjOGW+pzLf3s0t)ytDk91rK3mRKLDDqeDd1YV%JzsYrobYR(Dcig_P`m_Qa7R zLXK2Bf1SrtY(IAF7`P>7luJW?tf#qX;h?IE*{U*)8Gz%lq1uQ|E9D1dt;e~!!=I4- z1Vlv}9G-Xpail{QPTHe4Ha;GA^QKNV#T=X_5~u9#Lx5lHfE$v2P@n(#Wz*V1;M$ep zluI#hJ=yFiK^7@-zGYx$)^Tuna9L>J5dd!z`;D9&Nkjr}MZs~c)B#f|85tImB0@4s z>C_dB>w|Hq4z+VMg4jocKrMry<4<+ZoY_A7at*^BT6tHIrK6+cc8EY-e%RFXR9{36 zlL%oNW6K3olr1Yn{L&#w6sLDvTE@nS3qD; zEJ}Fe0BKgClrh;ZKXI0A0Qf+&?8c34yLz+^+Zki`SozKDh4&QeMgdI#iJ}(h{N4it zF?h@3^y~fvOU1u2n4DbO^K9QW)9g%YjTX27)?~m}N}3l?6XX)#9W{)Iyskyr4H1^@F&sC&R4GiJ9F}D+4)gaE=S5vVHczs1{56fx`9ug5Wa38xUfz^Nw(@5#HlyZ3*RM;#Ov7DgKrQ3iu3 zJifO)ml3(YTreT$B9vv92vpv!Ti<87z=Vfjak?*}q}5RlBIzdB7Zr=Dtn=P|65o7R z<=^*TQ(O4vne-J@LAS6e)fOcW>PLpDKS(29I=;{(UI!2TPzYd%SeEwU#pllZaBElZ zYEhl-+}RTw4|);D6x)PKZ{C6AUO)}``0K*2n~uOkdksNiE1~x0_3LVY&p2ouDED4} z_jrD;n_IeSWv8H^pyPt7R)i*Lc@Y<9#4N1)Om#TRgcNtkxPr4LZxp&_4KCnEOKL1$ z*y=AFm(gswnf9IGt9GxC95pqy1Gx#Fc{@x5tFjqK;mHBIA@>e|Z9in$I(-I#TVqJC z9DMn#5*0k3{~RlXfF>U%`#!5TgGhTqILbk-=G$KGaCv~e zYzt2KbxTX2gHqGqowrGY6?nA07jhT`Xi0v8^x+&iaqDEhYwsTC?w1LkTUQ%Mhb3Y| z{>df|E6zXyR<8lo*0^bHh9C`;ofyv|!U&Jwt)rHf(XhtYffhfwajQVxT~xhxaKn}V zo+MRC(vR3S%FMypRDc1HI!vC&_x(NX^qI!nb)&h%u=rGa9lOOSSj5!T`9OINs%C)0 zVuYgb(1^g~;t0`^?&jg&5P~4Rhz2bGR0yd*-~Wo{+Ex_~%pUt(R|i;b2pe&y)_CYe z2+{x!Vvs;JFxXB4@{)@`?_N$93^m)Or>A#~Pn{PMMAGumj~@dl1?o{0D;^sfB&m?z zfaM*~N`v53ndSXWH~Ic3JV%1BUcH**;QX^~KS3=fDOm@ixA{_5s&N(&Z1{g3ixt5s z2AT{xRz*tLT(Xon%wr}4KSFB4Oho&|P zeG=K=rGv*FaY3e56-(F;WJEXq`6;`c!RJcsdyoF5S#T@Ocx<46_5VG#{pVCEPkdaDoh){-29 z(F#3jQR)J9ePk|Y<_ZE;V+*(l8!y}WE&po;TUs|QJ25dql2bNN_s-9_3d&W!iUU1; z+dAM)*2m9-=SMzJWavhJ^fU=&`Q;5*g!xb0b$UHMb!}_&5h!Uk$kmG@8L=a!f$T7; zW{`$@V1eKzW&93>B7$q%zfU`m*aQ+FJZdnl;M4Y{FJIb$(k5BErwgujbM!$WPo9W7 ze|gRTdOvt+VWNxOzTw(sGs(}M4*2@>z}}1Ksptnrh9QU{V2cgelh6o^H;ww`V_p^O z2YP~zWM{Bg)VJRy;oD#mpWm`cAk@v?)ioAw$^MWHdxCWAxEK5(Dn!J_Ha<4W7#VOC zzDc;{oqEr$>9xjOOKu+sNmUd$94wQh3kszC0DPZhr@}Q3NR@QtabVweh-3>yeBeZm)}JNLRBNdcY|UgLk7i82@SrL+yl2#9J6v*C@_FIKHBt3wawS61c*grZ$e zy3zC<>_jyf)@jgb{Ay~+Ue=%+!O4=3p^do4qBRE{ zgEZQAmU?bOL=G<~*jcgV7`_J>$9txplVrfsFkik(QmuTxi@&JBd%-}+Ve;#?E!VXz zN^GRfQv=JAt`0vIm#iH%9O|SYvNw=~C=(jGy0mA{o`n$H(Z?&wT&sZs6&^F}0n%=% zdyVTdit5_0U+<;N-V@`d@D7GQ;JH)BdZfYfWm+1V{zkq)9l#-Gmdyg8TvpJzN&hsI z6tW@aKYSic7?<~FQZ^M_2LwU;OKj{0kYS`{8AvkvY)T@-{-zX?UkjF6Wv)$wlHu4} zSwSx9^@si6zlYh@hTEblK_>&wMKA)FrDb=>(i%27dB{CH(v`QJieL+B1iAAHSZv4R zTqta$<)icK*Ks9rEqdAY&^jTdz}Uf~vN2unIb)wJ+4^$pmgr;GmJ~Ho8&uQNL37jy zrwFkj>&cT>Sa%~UtLC!YkPxaK{{_pt(_|;rkP+qdb<8ef&)g%lv4CF6ND;!`)0&HA z3#zg;=fI?@LHzewxN!b_9ZpyO3@ZJvzFHy2K0_mgjkzJXiYCEN%T_3PDg-C-&fo&j9+p`u@MB~G6Mrc z@Y0L3?ToOqb$IIFH>BZ$=mY10z7vj5UQp(q&&A@$UHMDYBw+>#Ko5@psY)2w{%QH- z$v`m_O|GITAyFjTkRaVn;Qph$)B)*9W7TsSoHv$2hj|7K z(3!9SOa*}ArQfhYLF3;b`pqv;qK``8@mwxENTg!Daihb3U$=0Kx)0@^HhghY0gxQE z!4h;MK&lId$HhI{u_(KT}F zo$zDfZQBNsX3LlVEH0*jKc|g|AU~mOdWV2hSqM!OAf?Nf@w`nnH8uZz-oM|XcLE8% ze0iTR+xdx3R!qwO^IP)Uz@n5dgU_<g{S*xQ5f!Hf3AV6_xVKNLL0uemVuAZ@{ z(cYXRGc$8>AWAw9)_n8;F?@Ny8=Mokw+7Nic$@>u)k9B~SuQj&~94xg%2 z^PNLcnf)*3H<_55N0PR9#QaylD0utjzSFm*t;3D8NKq)){?w^c1K?v9CfnQZQCIPsCzBS9@|XBv-6e4+#D zfRQnlv;{#$^i{9iUhqWXI084?4}2D8fBn(|iOI~uiXP8fp`p}%V4c<-dI7RogLFL( zo^o*LE1Rlxa`s-Q42h8BB0-mhq&9V8Y85?(BGPO#z&ZM^8qy0G-furk!mRSYzrTv@ z*x{1rkAnux(tPH?MM!vf`U;FhOY}vWq>ztOgTKEwFNw_*uzX}=ydF|k3d0wp7wA+8V=iQnJ(jwH6to~L#*XqcLEL#~x91nq9a+s%tR&FofG) zM^Br?v1e(|pKpZUCn@#uqaeM<)Y%RS6?jt%yI%Fz&?NzTH^HS1XfOSm-oO zD+IC^a1u7yHS@{o=(2AP!bQ9Hc={n>T}2i6oU6rNx5wpEY@u{V2=p8w?J7&`Aurm z3oKo~d9%*R;{r}io_*tb=&~Vg8SU7N%}vG7G+Kd74!P_VWCa3Nbk&(d#pH4J^tl{C z3RGg;Q+ovCMzVGtVGyYMa?-)U?a2_`w@b8e?)pIl@<=(BX(FyU_fql;dybPH@^tdBqbWzpwRsS1CA^6} z!>>W%d}@Y800mHaY;OD6ngZvLpJund&podFX68ppT52?f2ta$L#^VCALwxHbmPo$*HGI{$a z{e-#s_K_`qY(ypJ2>MYiD*f&pIdNZz>tS;`dl2MI%}s>ApPwU>jTXHR+PoPdN*{8X zLdf-wt%D7v`BDiqYV?GsbmSMid~Nu%h>nt^SeHYRdng>QM411N7l2%#?iNzz2Te7! z9Zg#Bxjs5Qh%_iBCf0Xhg;chV(u%M#ppQyPJp-M~jp$E_0KwC|FEaCUX#NOwT0w#F zhY#_<17ySg#~?JRABvxXKm%^)?RY2RB1&DSykz7(I0Jc{(aU=n>;~ERgvJoYu;3$G z;L5;>8~pV7o7tT10=zIuYjIQY`oi#P_NkVJfnGWa4ns+VU<{)qF-29tU&T#5MsQ}q zzBEkTcP9P?3^(qhA4Nzn-c(NovWI?1<4PInYjQSHj5(h zfah;P{dc9J!awA@FWTK!7Y8?N+_{b-g=3Lk+>xfS-8ZL8&QBp?*k zgXs})+z|+a(~jSFZSrGDJ13y7&qDkg2Mk$;#C>+=@VyT+2EqkSy4Z(bkg~$3&tL$+ zk{GU(f`5j*MPs=F4j>LXMQ4|YSl3R&p6v;mD8<;!=O zqLQgVH&M3}P%Dzw63GyQ^m8A{p|j$WSBQ)Gt$JWGM6Xa*A>A~Spcr`Jm(rCDNj+N&Tw5C&c~>nKL+#y;plD)1`p4w z7t0G?dDEjksO(T}QIWQ8d>mv5Xy_R!j!ziDA+HhCvyPv0HUnxZZ7oK14|=1h^Yq$+ z`GgPwN$?Ec=oN&W&HUV$4g>5r;B!p`vD^UUTn06 zW4?i?Hu4vb^DuglU_TlFCI3k;LbSz>JqRaS^RMKEift%OKO&{c0>z3Rpd{Pc$;@^Z z&OKIM-qpHwZ~?G>fgph$$4a(WJ+j+-tJ;p85V%ATawG?=g@$jEZgaVzEDk3TC`Ic zjswZu4qQ$NOdI$o1pkv;&?5d+em2=(Ofz3NXP%1PEruy1n;OoZ6@PKAn=#WkYr&H& zztL+m^qj7y_s`PO0PIQ{sGjjAF<>HoXI-K!WJ*CA$IPfdT#B2nK@s zX@l<;+)Ob(9tABk4ODaRz}4vJFca}G1JT08&8rq>Sj);XqDPOsC`2v>)%1_%Uyt&PyW$W|%Rkvuov5!?1|tGG*O8Bvz%c#--Caw zNBt@Aqk-IjWky-;XSrz*q3kx{1J@z0EQ38m&ULcQXCR{g-SlF3DxV?fIx7yKwh(fI zR!%TRrKL-t3Gv?_$6EH=5lTO^_{DNm<$KlnjWttc=0fFd$1@RfA7^t|7&pDaS_#&nQz9MN&Pd+luHZn7F42r;- z6(G=){&jNKz%2m{guEjLIETC=24yeAgXvv$nSP{*F^McE%iK29&7R@4&-l4kFC8uRb-u=w61=~A}CL1mut3cc53)kND1h{VvvM^y~y^MhZ zEK;HnSj(+YiH#|!T%cPGI3*fy@Y~?lzMWm1TJro1^l^JN(!>O#A`Tp@uXQOh%`9%e z^t@thwDjrEqM~-efu|9VgVMx~QV38`Qn0QFG%|WV28+qf+rOK9thSa7Q?sY-Vl! zbj-?1YLtqDn46nJ(d6mY%;2^Y3DqO=uA57daIA!E@ zZ0TH^GJ*A~#vh`BzR}R$(UI}=X*5Mp#E1%PxNtWfSWonR`ua7hr^gD827(}a-*COi zrs~^;H1M<}s$G&NuQb3UQBzZ+p_~(62=UK;b(EmySloFN@i-5IruQVaAcnaE<1pD1YMw6gTECILRTi)8Ou+9 zWAz3E_g@BtU^9-wtPGg0nHATRK&GwI(U~Bkc2*qA*lV>q#nHrP8`|tSDl8P{Hw6XMOXvD|~ zEIPjG;2oA}OC2M4Q0U;%4n>nJ1%dbO8y#i9Jw4!yxKaJx?Gtyg|3XIqV4ym>pOa(o zu>?&!a`N(m{QT9r39PIKEjOr66ZjH$^sLIs$!R=lyPu!$etgTLp6>2wu)A~f^EF*v zKIu*Qch2wu?n_A>@*rgH7y#DW5d4Bm9DsMylNAeA=e@kNb2~D!vKZE_TlW~;419aY zVrT75?d2Rb10~XKD20%9Jy7l-la<_$4{KFmEjUCS>i!V#Gb@llTX$_L*$T0>4RiK zG@bzsrWh>84nbkT0==DgoafZq8XM_IM-F_Cgr8E86-o$Ff`9l9My>Ah>)U))N{!4wk|E z8d)YkzjI{V?HN5fDAj+}q#erE>`IIdHZjhhf9 z$j!5B*O8BkxCQ{L3?ioUF=X(ihjA5uAPDO3+jki|e0*H{*fCD1=pR0R4##Z)xG1Wh zoYrU08mg-aS~@yeIXQ=fr;!l3+Lr#P+iau2IrV?e7j*Lif!840yf9Ha#zauN+i#<% zBn{OA13Q(4%HY^0*1j}a<2E2Trf_FS28K;;hV1MRtK4G87yP24w1|oBBbGZf+$S-&|lv*{EZOf$YmAbt;Iyi{YO$#zcm<8}5wJ;BR5ag9C*4BJD#bg|2HIKh?g$_X(DT9JQ z0Z=cbB*VeY*k)O+aqWj~=;9IwDwVDqg-k#~Erq9bDaE}HJI8C|TyZ3Q-V74&n zxGkxdJU6Z0GrxcHcHb4dD){B=S9Bs{a0)M9=fPxwD3S8{1VN#~NFV`{Dbd#U{!sol z!xRVd^-kgSjz0~Dj|L%B$Ea?4S_Y<8c&@j-RJ~W2y`IQg3|NQwA#b4^jN5}CQ{{%}KG8K_i*4k?HQ8A-60*b=@jEq|H9a*EL z@l1k+hldIGM7FGSM1(!wKKFaAv^s)alWeoTVT z#mxk@riQa~&fZuGGWwXCp9y(_S!js0#4U*W1_nC#-HiBaPaqt-i;J1G zLjLS4a>DU%rmLwom~A8gp50+Xfc@h5ClkzJ!PwMPBet^}c^eqWU)0}7)iO>w`!lsr zIV1O=UFQladh+rU;63?gci+`-4qBT+m>~;wh>9Yy730s!rs4lX14cJ3_GWZyf4?n) z>j2sMOUlt?xB&rUz?5=w=Vp*h(!n+$uM&O}!kKLW)S=e%j5A1p<1VbifP~X?c17{=IzJ z?Kciu5FHMss7AtkhrFVZ-Hsa)Xa9O8xzqMZ04n6;@)U3#`n)__wp=5xaY53Me|#snH330z%quc}fTq)N<1If1DQ*=rBVeCE$^YN0G3 z$z~Kji=&2tS7C=g_*y!!uc_+_%+q~wdb~AIbryM*W4MS)TM&@AR3lEc*+vGc9u@L! zL4c8tj_GeO=yqtWRPA1wSaFpm$(P!*8@hewsln1#U<+qxXToA>X7=I4Zd)vd+EQ zT&XA@-QHHTA3={d_vm|n*Wy=4vP=dJydzu3;iHJQ;Xy$pu~s)qOFOP8Up>TlP3)* zsUKI+GCWL{)c)W%8FFh+d*OCSCXzC|MuqeP*>63=>TdNKle~)4S9R}&+DZlAY+uG{Uhqv?aNYLqRYI5ducD8j@ z+37n~?drqKZT=KTB!00!9l*g)4M6*A7%7l`ImQv&FO|G_`7-xyXk+l@6RPTmLHap5 zD4Q8E^MYFfwCxx%gXSp%Qj{cK(E%m~D`bET3U6V}T_0N0a*I$j>T%;DivP}nl+De{ zlZ}c7l<6izf2%9KDtEEhkRjqdX(^g;rXqde2-5ne_20Mha{^uO8mFfnMw;k&h`(-@}ZFm+cqVv2f*-C?~hszEB zM!_u}86SGofulNEhulkgsH|S5RQRGo(`L3y3)$bww4yl|(RNBfAi1IXEjXJIz1FPo zJ)c&A1V#|}D(|0#B5#Vwxd6hcTNJ5EE`;DU|Cji0o(c0;`j zf-WX!VuA5{9_IP@6wRDF_xGsOFDn>GtF7$Z7{M}ks3f4&s&ZPY6xZ6L^Tk%`UQz}v zt00tQNY3UwA(v+_2ntd)V$gEk+Qpo9JpuBM>-)c!UlaY+gYpJ_Af|8h04^wN;Q^i0 z<873RwlW$5lc67VBsDe9rr~{?SNdvowGJ1FLC>+$^qE-;j3{U4xfMlSezKStq(^|* zW!0bJmj?0R->+C(D8yE6!+~#Ae()(L=hV}24`jT(e{(aF1mg36voE5V2K9~}Ik>{( zC2-<>LV3M5pv^a$>>^e&I;ndbR0=ayX?O1z+rj`+SdSSwIXSr=jf{9c0Y#VP*RlDG zW6#TeSw2lXI#12rS(?5uAYkn5*#~v{eE;Q^Em~Ya^wRqDwEip8dTx>Kac$L>h>Ev?$W5x z-*;5TwdBi|h_pi)8G2-T-*b0y6$W?=K03|-8!_7R zC(5VbOLR|fky54T`%gv1+5;>F{eA75hphbXrI`&MIw)JWc0X-ta(oIe&ewT!pY|=c zo=LdBcgMy6-nM>cb4R7ZJ8tjZx$nbANr`ar?V8WSH!4hyZ-GHMp&8b5%l5_ExB2d> zj>P(5{&y`LZTXFp$aDt`Dhgt14RM+Or7aPKGaTv;T2nIjD(UL5^3YqztM|<;ycDVv zWIRc9yZ_30oN8cT@Q#<1boA(rD?9aK&$;y8>DxF4{>ygk*mY5T;*K6Xc&SRalBylv z$8d@jPc$-?A!f}sBf`2(*yUz5qrELqK>{J=woH*zFeAIhSZKsa`N${U z;Rv_yghK732O;fH@N&QP>Q%Q#XzSYQ(Npp5?DG%a0Qf{1P8oELmE{7|oWa!H)(%<* zO6@faW=gX5Ti`toeQQ^sZ z>z4=a^?Uz*FR=c5q(S1>XNsM=#uMv_xETj)lll(nC6zyRVv#&VdaT#d+nGLpF7!rN(-7hXF>mc6LdOW+R)? zH-FiuckeOCF7afzaHPN5M;|EC(6A;16=hszEnYCmXU`hacRUqjw7r`IWyDD*R*bT> zx32`+F(`K|s!u}0P)$!$2*TR*#xFv8U40yYNURdy!m+HhANrUky;kW&zOo&<&`Q;KgB%wgH{kcVgyxsGc)_Q z)2BNU1Kl#bHk9gEM-*nS#4emXEIfuX1*FWN0bB(wK`nA?LNShgn{DbV+Tc+gU3zvu z?*{*y7ObX(;@QqB#k_G`8{y>Et53Lg#9cDVf-kuRlSOlf61V8ecBWEB znH+jFLQhrj%9#zx7;kh@VbPz&A=BnE`+x4-!=wPB8Mv(-&2Ol)XGx<>&iuwgk|$(i zQ=W9G5P)2W^$E$S==SX<@RZQX39BF7YVOj$2*x7WKKe1Ei}t?0hf;j~AmD-;>YfD_ z7_E4B?&cP)*wuao*Tu;9@cvcUTZM*q@x-@FoQ)Z2N}Fb+=VXti@x4D+4g^CNgdD+g zs%%-wbhoq1`z<*8Iy1rAfSn7$Gj2i${TJ*1zZPIZ9>s*%w{Er8nolMLux&)pcJSbx zEKh~X9`Qrahs!;>Ij>$_T-dT410DsQb*@KaA`Th4v=^CYJ-G;HQ^Sv+Kv|g6W6c;% zW6b;C7T+dXCjWB`g^WY!#kNUCB!pFj0NN1q(Yi4)F=4#j_hX}VEEJI^*zWcJ^spJd ze0k=j5?w6~Cgyt12&!nxqw>i3(PZy7_!n_qdn~(P!i1~p-QI)If}tLMv~Bns%m5EO zUwp{usD{ci+2`p@&Y>|(*bBR&+G&RgT_Jx$YMEnHs)6Il%ATzssn5KmZkRU3p@3ogBk znDgUR+>jW?Sx0Q#x}y734?J_Eb{_HNd2;=zfvtz~36#ckEn@fW8+oYsG&vJeI0pkI zU0q$zOD#9g=_?Gal|hf$&766jY{BHLtPX^#cE(NU+|3AnJ*bS*gI3O-Tkcg&HFLCZ z)EmnqWGH*kq2!^|uCZwBn84m2XKS^V5>SQl8+qc33L1v%HcIu~d ziQc^22ywK9zrO@GC(RS{?Aj)%E!s{0TZaZrC4N7-=nc1Gl@NHE65qmjb+yX~ zgB+h$Ds#-(!mTI^p&kd!FDiPm6i@EaD9nO=+eK-zG3jGaPLBBW*Q6loGU(hv_d{o< zm*ml%X{FzH&yEucQy=a1oY@>)pQ8m!>8r?~3d@ z&tmmePD^}(JI!}*YIGd*?ZYqG?~R5zEZ~*OOoGryWcNLPtt~XRP&irwA#A?Aa28`& zw~&x`5f}tin1|N2qA)u0i;?-@Jlo1NR6FMpYtb)8)wz?!Wss66;K^+_S4gVEt6__sHxCzy^O|jDB0e0ePRf%Me)L zo3dfjKQJ@9IR1yWrRJ#55ZY7-s(Sl&Nbt0=V>OZ2@%=f^%B?C?itZUqwbSo09XWFK zwFjEZel$8d?R0obikbB~Qv=h{Y&u=BzDI5xKT^^%RIk|lPszTs-dnNfBDCng_WeT6 zZM|`);dj_fVyCI4Wn7;{oAa3{Y~kYKB1Kcm{x3vztY_Vhc~Z8Ro*7oE?l5Xd_wAP# zv0ENvFxGKN!c3R;u{=C1BxHO;Wo(@J^GphWnSabEAajZQu~|Iygf zguXbl8JO3}#7g8!n+5bCg!^O;h)8AJ&CyEQ*w9NSQ;ald=uu~hJ4Ki6@0X~Yl-gmv zV9CVJjy@!_QT7WLzTI=Q1U$e5trQ`s{TY@x{_{a~%_ZbfRE=V>AMEPX-d37!RI5~g znf+p(4`=aq#Y~fEDGFQ&(fp8+)Z{F}>d&9O8|v$}f4FFwba^5skMIGE(C<3w?dLP= ztTkS+@J8-V#X{eC}>e&msmACy|4iE z<9hq+OXH8a690vis6J+2R`5A7U7Ew#OTPm?(0}KpkRN{dLFPQ*e}f`)W1EsqP_*`_ zGdl;zUPk7g^t-Kv6D94W9Sn*PQ{ZAnmrHmWF#V>FWg_@OlukrZ_>Z$Y^&F&y$&d+0 zf;f0Ax6f>fwNl{dE>V4Wo{s%@N7vlHaqU{CkCh7I5}jXuEFvj_zRNqE&4>EBw8zcX z(=tAPc5G^w=EDA>m}J#?)%?NR6+p!Dnd@%zF=Ac zio=$Rq(}5e|FA_X1Xh-Mn2vcvh>rqjftVzC@&e*GjBZO0?1@;+BMx5Y>cx;?E`zB#J}*uAf=| zxPugIi6yV#pVko^y7ud*!v^PJ5!SLw&E1iSsg&9>4`7#Elr|u#r+DN6>K_?&G8m#% z+*uFyqk0j+`{iakLOQs#cY*B!`cctB^S_H#IE_#0X~MR~xFG$zArUaW_T}iqe2pL@ zXJ>mmJ8c3D166I<;i=6uV8I|40i3^PWE52eg5Z*`uLaShxwk9IstC-v6WMbM<0<)s z(g|{9cfXXsV$w{QhuWKs_0Bi6Z>5k`0~xUtWj#4C_OEUOnbD)piw6ku(D<4(^`~#hf*!Ix~24u&CLtY>d6p3a57W(Pz&I=ge3TJPsb8}6azGlWgLLZ z6FtDnl~F70Pz%VhGNkkE)#KPxt!XJ!e>@8xb-b5$nEy3c0ydU3FlBY_)a~-UG#wrfl2 z9Luz!9Q~uz)}(&tTYJB7Cyb(5L{4fE97z#_?BUJ%#x;YRnIz0o9BW4{Kyyn@K9G(x z^zA95COihxvn*)pE`Z<4GaaK0=^wI*EABYk>^#{jXBt~5DamVTt3+grWKbZ`wbp0( zD%zjw2@|%Ket!Mp#adj9j?cdO$G2Vc!ZmWXLBpa>5Tkt&bwhR)|7~IGvVKN-0dhK~ z)MUG`-?9T^ueS&nA88a2rsn21eLr_JFc`zQmUZ1f?Zhly@WT6?>)~N&h>=Ecol5O> zrJvK_-v~k^)1fEqTniMQn{YCrfEmnne=jr*BUh+=ujD|;Oay(AxkV>kds+s4L5OIzErd5javEx~SRB7CzR89@*?Cr;iu>@4Ip z6K6D?HXc6wEUV%8a_UQ@)e<^Sbm+S!DT0j!-zIHxJA01ABB(hKCQ^}It; zVy_p^czrEoGfbTL^o+rA18q*Uqx&GH!qU#A_J#~QQZr6b`(ctJh(df|K!6~E*-N_( ziapglTvEn=Mh5F68EW@)-ndDL=-xYx2-2kzq1}kkI*d*vdj|9yvwgdF%^)3ZP1>NY z=`(aFs1046Yu0Oo*+q?LD-D@1U%rTH=+x8RrW7PhmSXF?QTljHA0!tMrxw|TrR9R9 zm_LNm&E<5H^>;0;tk%cHwWW95l`$}RCaqeHrTs5Z8x;lviCP2(>ReRk;|zu`-jRN) z^E&Jq#new!Vo@&oFf#fyj~Fp{#ja+QiD28$$a9JFq+Dlp?&#BVqQ4h;nYnZ>!UXvEk@y@=Zl>z)(RB zpLCSUQP43jZXcw?J2rQ|Pbl9t9Dbe6T(;!qNEQauPekb6wquLW1Ayx-#+cxGA~J z3yWLI+)pv9y%fJDEJiFietb*przDUS56&&O8Zjc0m&OZ8WOZ>{;_@=kIZg~asKR)0 zaVPs7JAb}2RFxYJ?Q&!qHVP&j0Rn!9T^juLtogxgc=h^sn{58M*)*z!rXt=Jz{pPo z+)Z1Hyo1jEs^H-Hi_>H6#&B;#7d=ue{qf=R<-I2c$F--Q4jYMM{*KZEnFs+WTn8{> zgM=rCp(Ys)pxD|(>B|{)Je+_r9aMJ#u?T1|8&GQa4A53sCUj|@{Ge&Owry_}7jMAX zD&ck3;CM$!kPFgn|EEw-MknP+zKq&`A5SzCUz1M^oPl3AR;!vh5= zUZOqmhqW<(VP#zGmsOVgbd-;tw&HkU;XHYNZ?eBGpz+F_$n8VTGJvU6zIfNjXrg!* zBa`6Ji@Y1*OUIIL=yk`rzk@gC0ea#t$s|F;{qya#L`Ne63owpYOhzO%-#5|kguVCo zB?08X(0>1Lzd{qG!pfH&Cg4WIiL`4Hto2pkE*I2SRPPkhvI#L#Lg&36moC+>=?s<` z?`s-!JLE8nitev^%$VF24f`05XTRrRth7yNNV=#zHYu3uB1aLhAW;}2yL|qmS$vm? z)p4$ST~P&L;1oTiJft0kPUn(m$*@8qK8#*dZ7S!ru?DD6jk3Pp`KS996XR9SyE2dE zar+O}i@=Pkr^Ek6vUum@3ZH>RoyWQ4r&F40X?c=SU|XAxRXF5!R2=UOTZa8HHnze( za9wmlJM9jR{*QGKOq^Ir;D$J6;X-o^y&C4X++7t-9RN8+X71*62TB$RTl=iC#UyqF zQTeoW1EDk^wC?{Cb3~683=E;*>DUKm?2xJZ0EKwcp%KP1QOPM`=+qFIMqV}P1z*BO zr+TdrHx=PU+}(dXvjFj7yw1j|9i#)o-=c>4mFQkii1g`k=7R<6?2-orM{-Fl7|M16m1p`L-(fS++aX$&Z+xFu75s#`TThpeSG4AS>4-6&M_jxEjahd zRV+$r_C0^|CiA8L1}J=rfO{M;=6uiW!~jLi^(ZSnckE=)HAQl_&p)k#;N2Er#1D#v z`jsoWREk^hofXqk0xq)`3^pBZdtc*}yAFi|rS6`Qrn4>MB@f6Rw6M7KIGE0!mmIhN zFAFMz01M}{Q`bMDkL-vN z;8K~*WlwVUfhbnMH|lOpSVzo0_c*-2{P;Yf$@%VjH4Jwi_{IRYtn=-2K4tKQqZ$W^)GcU zR7r`hV<5OLs4AmC4A&ekd<-uCYRr_pXhTv+KjZCr{%E2dC)MkG?1*-tt7W6!E z(=lu|99p&Ctk72MRa5^hVyH}hRxEkvXU?D7mx@o$@{EbmWoE`(>_@=bu#KAV8k_q^ zo1NkGFbt`?jbzsQmwVZ(hp+jt{lLAnqx<(8V~yj5NTL>NnWEz2Pp3lD@q}CU%C-Kv zy-hCttJA3)`sOM|ZQlm0=kPB&B*VVUTVvupgs_F z%#_JFA99zd`L>9;5t5M+nqm2o8e!f0!LpF3B&?uLv&NFFU|FjQH~NGZ%FAWrqHePX ziP25LFGPul7&TGQl}`&h8ynjJ^o9Qgeu`38N(Jx+iZ#T#$be-`hG!`hiL@7Jc@Hi+ zSpE|=kEjr+7!pR>;WQ$CX6d2dUIo@wV>cGbd5*@ z?Ux%~A22=8oD{EiSr6#__N=f3TA4zOfK$>i&q76eN(W1WfAy{T`F4WZ*^RW((CX%) z@_Jqpbt6Oy!09Uu+?&S(UQXcX(N- z&`d;xa>gaj&W4{qYUi&bQZeo%LUBxxv8w>L=Wz%JFbBz4@@P-9PRR3_i6hVE_*l-O zo~7tZo@si%ivF~OM#$0h)t{=X0VP*oCXNT+0UqSQpYEUTo{XK;Nd0Z%U&i2k#_F%j zt=ApywOJ$VPzqHuv5r%#DjCtXU$yGTy$J~g=MF0#LK@{{ul~9S+QD&YuOZd+#VRT` zb>7v!=k#gQ;F8v&r9$xUV>nMsJ?Zwi;9`P_$b6X2-{_jkQ3F?>_i*=paQOnY35qfj z-GRThHaX?qPb{Fp={2f#7ZlV|#i>(HG&Oe`Mq2O3JBb(hP{d3Z!8jwO zbQ8qANg!!*vUk$e`gLFO4*rh*2Bv-gTu7S}A_mL|=mCtvh$t5oMHZ+Bh$bpR|Q#fZL}S zKso+4a|;hlpbK}`?MO#>T{%Z>J)S#;uJ%4gN`-oe3#~s09}`T;0D7dFJP37ozHXnQ zvxe|&aQM$T&`{lj2;#JKSR7XSUX&ry(?|)VwLf68)1n zZhJ53vbS2Lh)5d+_sqx+q$1FY!b*+*HM!~*p^@ZFh;_I>(>k7#2$~Dkq+l=rJIuR4 zRFY%hgZWubzx8T-iy|ee$AOTx9G_F;q`41jLEw&PQW08K{?aw}312tQ2W1p-L*NgG z_=qqasSXSnHmu301b`SQZ}*&xZcFm9i>@i2W5rhi=f;rk(9GIvqDxpU~kRuZx-rlBk{EDFD z!5<{*Wby|Dp~}D@7ieEHvF7X3lEUbZg_pz1YYzU@Gkdv7B1(8<`B>!8_^u#?)8e2y z1Z1V}v#KpN5AM3fWdE8k{?bU8nb7oqoCUj9(ks~J?3cG=CUw?S6t%y_cnvH;(Z1%U z0Xo^QZ!$~Ke>dJzA+Hax9uPE0$o}`-;WNQ|jL~Hkbn<#m-!^0SdrJY1gA}Xy1>IWx=Y|%Oe=tiYRRTzyHO@o0ts0$k>P4XOnzPM3t^4eh0Be yUJMERpZ+Dyp}SHP3dL~;_2^&z58dCbM$L(_ji>Dgc>KWCD;#Vms*jHG4F7)&FuAD! diff --git a/docs/sponsor_logos/fastapi.png b/docs/sponsor_logos/fastapi.png deleted file mode 100644 index 4e7a830e112e1fc8fe8698dcb0279a57366dd336..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14381 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 J$d$hp@Ly~?lT-iz diff --git a/docs/sponsor_logos/jina-ai.png b/docs/sponsor_logos/jina-ai.png deleted file mode 100644 index 39242cbb2e04111962a3a0f0c3a5cbec5251089e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10412 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 diff --git a/docs/sponsor_logos/robusta.png b/docs/sponsor_logos/robusta.png deleted file mode 100644 index 02c7ef2978370cda66828561a54b80d600f54760..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23227 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 M#nnsri#PxNA2uwIN&o-= diff --git a/docs/sponsor_logos/salesforce.png b/docs/sponsor_logos/salesforce.png deleted file mode 100644 index 9264adb933930047c65ae0bc3ff19394be0af948..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21472 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 diff --git a/docs/sponsor_logos/tutorcruncher.png b/docs/sponsor_logos/tutorcruncher.png deleted file mode 100644 index 573cd48a1b56efbf9befe16820ab07d92d50d607..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12614 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 am!zecG?&>pgi%1}kkTV{xiT5E7yko{YFax0 From b0d701fb1c16608afd83503363999dc0b98aa961 Mon Sep 17 00:00:00 2001 From: Bartosz Karwacki <44468031+karta9821@users.noreply.github.com> Date: Fri, 2 May 2025 17:41:35 +0200 Subject: [PATCH 047/106] Add docstrings and update type hints in the `people.py` action (#11831) --- .github/actions/people/people.py | 193 ++++++++++++++++++++++++++++--- 1 file changed, 175 insertions(+), 18 deletions(-) diff --git a/.github/actions/people/people.py b/.github/actions/people/people.py index 98008755372..0438b1ea2c6 100644 --- a/.github/actions/people/people.py +++ b/.github/actions/people/people.py @@ -4,7 +4,6 @@ [FastAPI people script](https://github.com/tiangolo/fastapi/blob/master/.github/actions/people/app/main.py). """ -# TODO: add docstrings to classes and functions (good first issue) # ruff: noqa: D101 # ruff: noqa: D103 @@ -15,7 +14,7 @@ from collections.abc import Container from datetime import datetime, timedelta, timezone from pathlib import Path -from typing import Any, Union +from typing import Any import requests import yaml @@ -152,6 +151,8 @@ class Author(BaseModel): + """Represents a GitHub user with their basic information.""" + login: str avatarUrl: str url: str @@ -161,29 +162,41 @@ class Author(BaseModel): class CommentsNode(BaseModel): + """Represents a comment node with creation time and author information.""" + createdAt: datetime - author: Union[Author, None] = None + author: Author | None = None class Replies(BaseModel): + """Container for reply nodes in a discussion.""" + nodes: list[CommentsNode] class DiscussionsCommentsNode(CommentsNode): + """Extends CommentsNode to include replies in discussions.""" + replies: Replies class Comments(BaseModel): + """Container for comment nodes.""" + nodes: list[CommentsNode] class DiscussionsComments(BaseModel): + """Container for discussion comment nodes.""" + nodes: list[DiscussionsCommentsNode] class IssuesNode(BaseModel): + """Represents a GitHub issue with its metadata and comments.""" + number: int - author: Union[Author, None] = None + author: Author | None = None title: str createdAt: datetime state: str @@ -191,52 +204,74 @@ class IssuesNode(BaseModel): class DiscussionsNode(BaseModel): + """Represents a GitHub discussion with its metadata and comments.""" + number: int - author: Union[Author, None] = None + author: Author | None = None title: str createdAt: datetime comments: DiscussionsComments class IssuesEdge(BaseModel): + """Represents an edge in the GitHub GraphQL issues query.""" + cursor: str node: IssuesNode class DiscussionsEdge(BaseModel): + """Represents an edge in the GitHub GraphQL discussions query.""" + cursor: str node: DiscussionsNode class Issues(BaseModel): + """Container for issue edges.""" + edges: list[IssuesEdge] class Discussions(BaseModel): + """Container for discussion edges.""" + edges: list[DiscussionsEdge] class IssuesRepository(BaseModel): + """Represents a repository's issues in the GitHub GraphQL response.""" + issues: Issues class DiscussionsRepository(BaseModel): + """Represents a repository's discussions in the GitHub GraphQL response.""" + discussions: Discussions class IssuesResponseData(BaseModel): + """Top-level container for issues response data.""" + repository: IssuesRepository class DiscussionsResponseData(BaseModel): + """Top-level container for discussions response data.""" + repository: DiscussionsRepository class IssuesResponse(BaseModel): + """Complete response structure for issues query.""" + data: IssuesResponseData class DiscussionsResponse(BaseModel): + """Complete response structure for discussions query.""" + data: DiscussionsResponseData @@ -244,26 +279,36 @@ class DiscussionsResponse(BaseModel): class LabelNode(BaseModel): + """Represents a GitHub label.""" + name: str class Labels(BaseModel): + """Container for label nodes.""" + nodes: list[LabelNode] class ReviewNode(BaseModel): - author: Union[Author, None] = None + """Represents a pull request review with author and state.""" + + author: Author | None = None state: str class Reviews(BaseModel): + """Container for review nodes.""" + nodes: list[ReviewNode] class PullRequestNode(BaseModel): + """Represents a GitHub pull request with its metadata and interactions.""" + number: int labels: Labels - author: Union[Author, None] = None + author: Author | None = None title: str createdAt: datetime state: str @@ -272,27 +317,39 @@ class PullRequestNode(BaseModel): class PullRequestEdge(BaseModel): + """Represents an edge in the GitHub GraphQL pull requests query.""" + cursor: str node: PullRequestNode class PullRequests(BaseModel): + """Container for pull request edges.""" + edges: list[PullRequestEdge] class PRsRepository(BaseModel): + """Represents a repository's pull requests in the GitHub GraphQL response.""" + pullRequests: PullRequests class PRsResponseData(BaseModel): + """Top-level container for pull requests response data.""" + repository: PRsRepository class PRsResponse(BaseModel): + """Complete response structure for pull requests query.""" + data: PRsResponseData class Settings(BaseSettings): + """Configuration settings for the GitHub API interaction.""" + input_token: SecretStr github_repository: str = 'pydantic/pydantic' request_timeout: int = 30 @@ -302,8 +359,21 @@ def get_graphql_response( *, settings: Settings, query: str, - after: Union[str, None] = None, + after: str | None = None, ) -> dict[str, Any]: + """Make a GraphQL request to GitHub API. + + Args: + settings: Configuration settings including API token + query: GraphQL query string + after: Cursor for pagination, if any + + Returns: + Response data from GitHub API in JSON format + + Raises: + RuntimeError: If the API request fails or returns errors + """ headers = {'Authorization': f'token {settings.input_token.get_secret_value()}'} variables = {'after': after} response = requests.post( @@ -325,7 +395,16 @@ def get_graphql_response( return data -def get_graphql_issue_edges(*, settings: Settings, after: Union[str, None] = None): +def get_graphql_issue_edges(*, settings: Settings, after: str | None = None) -> list[IssuesEdge]: + """Fetch issue edges from GitHub GraphQL API. + + Args: + settings: Configuration settings + after: Cursor for pagination, if any + + Returns: + List of issue edges from the GraphQL response + """ data = get_graphql_response(settings=settings, query=issues_query, after=after) graphql_response = IssuesResponse.model_validate(data) return graphql_response.data.repository.issues.edges @@ -334,8 +413,17 @@ def get_graphql_issue_edges(*, settings: Settings, after: Union[str, None] = Non def get_graphql_question_discussion_edges( *, settings: Settings, - after: Union[str, None] = None, -): + after: str | None = None, +) -> list[DiscussionsEdge]: + """Fetch discussion edges from GitHub GraphQL API. + + Args: + settings: Configuration settings + after: Cursor for pagination, if any + + Returns: + List of discussion edges from the GraphQL response + """ data = get_graphql_response( settings=settings, query=discussions_query, @@ -345,13 +433,33 @@ def get_graphql_question_discussion_edges( return graphql_response.data.repository.discussions.edges -def get_graphql_pr_edges(*, settings: Settings, after: Union[str, None] = None): +def get_graphql_pr_edges(*, settings: Settings, after: str | None = None) -> list[PullRequestEdge]: + """Fetch pull request edges from GitHub GraphQL API. + + Args: + settings: Configuration settings + after: Cursor for pagination, if any + + Returns: + List of pull request edges from the GraphQL response + """ data = get_graphql_response(settings=settings, query=prs_query, after=after) graphql_response = PRsResponse.model_validate(data) return graphql_response.data.repository.pullRequests.edges -def get_issues_experts(settings: Settings): +def get_issues_experts(settings: Settings) -> tuple[Counter, Counter, dict[str, Author]]: + """Analyze issues to identify expert contributors. + + Args: + settings: Configuration settings + + Returns: + A tuple containing: + - Counter of all commentors + - Counter of commentors from the last month + - Dictionary mapping usernames to Author objects + """ issue_nodes: list[IssuesNode] = [] issue_edges = get_graphql_issue_edges(settings=settings) @@ -387,7 +495,18 @@ def get_issues_experts(settings: Settings): return commentors, last_month_commentors, authors -def get_discussions_experts(settings: Settings): +def get_discussions_experts(settings: Settings) -> tuple[Counter, Counter, dict[str, Author]]: + """Analyze discussions to identify expert contributors. + + Args: + settings: Configuration settings + + Returns: + A tuple containing: + - Counter of all commentors + - Counter of commentors from the last month + - Dictionary mapping usernames to Author objects + """ discussion_nodes: list[DiscussionsNode] = [] discussion_edges = get_graphql_question_discussion_edges(settings=settings) @@ -427,7 +546,18 @@ def get_discussions_experts(settings: Settings): return commentors, last_month_commentors, authors -def get_experts(settings: Settings): +def get_experts(settings: Settings) -> tuple[Counter, Counter, dict[str, Author]]: + """Get combined expert contributors from discussions. + + Args: + settings: Configuration settings + + Returns: + A tuple containing: + - Counter of all commentors + - Counter of commentors from the last month + - Dictionary mapping usernames to Author objects + """ # Migrated to only use GitHub Discussions # ( # issues_commentors, @@ -450,7 +580,19 @@ def get_experts(settings: Settings): return commentors, last_month_commentors, authors -def get_contributors(settings: Settings): +def get_contributors(settings: Settings) -> tuple[Counter, Counter, Counter, dict[str, Author]]: + """Analyze pull requests to identify contributors, commentors, and reviewers. + + Args: + settings: Configuration settings + + Returns: + A tuple containing: + - Counter of contributors (merged PRs) + - Counter of commentors + - Counter of reviewers + - Dictionary mapping usernames to Author objects + """ pr_nodes: list[PullRequestNode] = [] pr_edges = get_graphql_pr_edges(settings=settings) @@ -497,8 +639,23 @@ def get_top_users( min_count: int, authors: dict[str, Author], skip_users: Container[str], -): - users = [] +) -> list[dict[str, Any]]: + """Get top users based on their contribution counts. + + Args: + counter: Counter with user contribution counts + min_count: Minimum count to be included in results + authors: Dictionary mapping usernames to Author objects + skip_users: Container of usernames to exclude from results + + Returns: + List of dictionaries containing: + - login: Username + - count: Number of contributions + - avatarUrl: URL to user's avatar + - url: URL to user's GitHub profile + """ + users: list[dict[str, Any]] = [] for commentor, count in counter.most_common(50): if commentor in skip_users: continue From fdaaeb0a9eb96722cdc7b3d6debf12a02b349fb1 Mon Sep 17 00:00:00 2001 From: Jonathan Jin Date: Fri, 2 May 2025 13:47:17 -0700 Subject: [PATCH 048/106] Use `typing.Dict` for `BaseModel` annotations (#11834) These seem to have been missed. --- pydantic/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pydantic/main.py b/pydantic/main.py index e0c2bcdad48..80939082b15 100644 --- a/pydantic/main.py +++ b/pydantic/main.py @@ -211,13 +211,13 @@ class BaseModel(metaclass=_model_construction.ModelMetaclass): __pydantic_computed_fields__: ClassVar[Dict[str, ComputedFieldInfo]] # noqa: UP006 """A dictionary of computed field names and their corresponding [`ComputedFieldInfo`][pydantic.fields.ComputedFieldInfo] objects.""" - __pydantic_extra__: dict[str, Any] | None = _model_construction.NoInitField(init=False) + __pydantic_extra__: Dict[str, Any] | None = _model_construction.NoInitField(init=False) # noqa: UP006 """A dictionary containing extra values, if [`extra`][pydantic.config.ConfigDict.extra] is set to `'allow'`.""" __pydantic_fields_set__: set[str] = _model_construction.NoInitField(init=False) """The names of fields explicitly set during instantiation.""" - __pydantic_private__: dict[str, Any] | None = _model_construction.NoInitField(init=False) + __pydantic_private__: Dict[str, Any] | None = _model_construction.NoInitField(init=False) # noqa: UP006 """Values of private attributes set on the model instance.""" if not TYPE_CHECKING: From 883e6b2d2b828771251440f69f0ac13cb6b31d01 Mon Sep 17 00:00:00 2001 From: Bartosz Karwacki <44468031+karta9821@users.noreply.github.com> Date: Sun, 4 May 2025 15:14:04 +0200 Subject: [PATCH 049/106] Install uv while running `family integration` tests (#11840) --- .github/workflows/integration.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index db8ddf8b151..6d4d4c12f87 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -9,17 +9,31 @@ jobs: test-pydantic-settings: name: Test pydantic settings runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] steps: - uses: actions/checkout@v4 + - uses: astral-sh/setup-uv@v6 + with: + python-version: ${{ matrix.python-version }} + - name: Run tests run: make test-pydantic-settings test-pydantic-extra-types: name: Test pydantic extra types runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] steps: - uses: actions/checkout@v4 + - uses: astral-sh/setup-uv@v6 + with: + python-version: ${{ matrix.python-version }} + - name: Run tests run: make test-pydantic-extra-types From d6f00d66ee125473155c4505e2f9628360a3552c Mon Sep 17 00:00:00 2001 From: Bartosz Karwacki <44468031+karta9821@users.noreply.github.com> Date: Sun, 4 May 2025 15:16:14 +0200 Subject: [PATCH 050/106] Don't run `third-party` tests for `FastAPI` on contributors' forks (#11841) Also update supported FastAPI and SQLModel Python versions. --- .github/workflows/third-party.yml | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/.github/workflows/third-party.yml b/.github/workflows/third-party.yml index a90bb951c92..d39121ae091 100644 --- a/.github/workflows/third-party.yml +++ b/.github/workflows/third-party.yml @@ -34,20 +34,15 @@ jobs: name: Test FastAPI (main branch) on Python ${{ matrix.python-version }} # If 'schedule' was the trigger, don't run it on contributors' forks if: | - github.event_name != 'schedule' || - (github.event_name == 'schedule' && github.repository == 'pydantic/pydantic') + github.event_name == 'workflow_dispatch' || + (github.event_name == 'schedule' && github.repository == 'pydantic/pydantic') || + (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'third-party-tests')) runs-on: ubuntu-latest strategy: fail-fast: false matrix: - # FastAPI doesn't yet support Python 3.13 - python-version: ['3.9', '3.10', '3.11', '3.12'] - # Only test on 3.12 if the PR wasn't labeled as 'third-party-tests': - exclude: - - python-version: ${{ github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'third-party-tests') && '3.9' }} - - python-version: ${{ github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'third-party-tests') && '3.10' }} - - python-version: ${{ github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'third-party-tests') && '3.11' }} + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] steps: - name: Checkout FastAPI uses: actions/checkout@v4 @@ -87,8 +82,7 @@ jobs: strategy: fail-fast: false matrix: - # SQLModel doesn't yet support Python 3.13 - python-version: ['3.9', '3.10', '3.11', '3.12'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] steps: - name: Checkout SQLModel uses: actions/checkout@v4 From c4f0262bd64734751a68846a10edd6cdc6acc6f6 Mon Sep 17 00:00:00 2001 From: Matthias Schoettle Date: Thu, 8 May 2025 04:48:47 -0400 Subject: [PATCH 051/106] Lint Markdown files using markdownlint (#11307) Co-authored-by: Victorien <65306057+Viicos@users.noreply.github.com> --- .hyperlint/style_guide_test.md | 1 - .markdownlint.yaml | 34 ++ .pre-commit-config.yaml | 4 + HISTORY.md | 91 ++-- README.md | 2 +- docs/api/experimental.md | 6 +- docs/api/standard_library_types.md | 19 +- docs/concepts/alias.md | 2 - docs/concepts/config.md | 86 ++-- docs/concepts/dataclasses.md | 5 +- docs/concepts/experimental.md | 13 +- docs/concepts/fields.md | 33 +- docs/concepts/forward_annotations.md | 2 +- docs/concepts/json.md | 1 - docs/concepts/json_schema.md | 4 - docs/concepts/models.md | 27 +- docs/concepts/serialization.md | 21 +- docs/concepts/strict_mode.md | 6 +- docs/concepts/type_adapter.md | 1 - docs/concepts/types.md | 56 +-- docs/concepts/unions.md | 8 +- docs/concepts/validators.md | 318 ++++++------- docs/contributing.md | 27 +- docs/errors/errors.md | 4 +- docs/errors/usage_errors.md | 2 +- docs/errors/validation_errors.md | 1 - docs/examples/custom_validators.md | 1 - docs/examples/files.md | 1 + docs/examples/queues.md | 1 + docs/index.md | 19 +- docs/install.md | 2 - docs/integrations/aws_lambda.md | 34 +- docs/integrations/datamodel_code_generator.md | 5 + docs/integrations/devtools.md | 1 - docs/integrations/llms.md | 4 +- docs/integrations/mypy.md | 5 +- docs/integrations/pycharm.md | 10 +- docs/internals/architecture.md | 20 +- docs/internals/resolving_annotations.md | 40 +- docs/migration.md | 421 +++++++++--------- docs/version-policy.md | 1 - release/README.md | 44 +- tests/mypy/README.md | 35 +- 43 files changed, 719 insertions(+), 699 deletions(-) create mode 100644 .markdownlint.yaml diff --git a/.hyperlint/style_guide_test.md b/.hyperlint/style_guide_test.md index 4254ca1222b..25f0e57d1ac 100644 --- a/.hyperlint/style_guide_test.md +++ b/.hyperlint/style_guide_test.md @@ -1,5 +1,4 @@ - # This ia a test file it will flag errors like on pydantic. diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 00000000000..669fa6f769f --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,34 @@ +# See rule aliases: https://github.com/DavidAnson/markdownlint#rules--aliases + +line-length: false + +ul-style: + style: asterisk + +emphasis-style: + style: asterisk + +# need to indent with 4 spaces to render properly +ul-indent: + indent: 4 + +# H1 headings are automatically inserted by mkdocs +first-line-h1: false + +# Allow same heading name if the parent is different +no-duplicate-heading: + siblings_only: true + +# Allow inline HTML to support line breaks etc. +no-inline-html: false + +# Need to disable in order to support PyMdown Tabbed extension and admonitions +# See: https://facelessuser.github.io/pymdown-extensions/extensions/tabbed/ +# See: https://squidfunk.github.io/mkdocs-material/reference/admonitions/ +code-block-style: false + +# Disabled in order to support references to API +reference-links-images: false + +# Anchors via attribute lists are not detected, let mkdocs handle anchor validation +link-fragments: false diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a79688b90d9..c63c911f8b1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -16,6 +16,10 @@ repos: additional_dependencies: - tomli exclude: '^uv\.lock$' +- repo: https://github.com/DavidAnson/markdownlint-cli2 + rev: v0.17.2 + hooks: + - id: markdownlint-cli2 - repo: local hooks: - id: lint diff --git a/HISTORY.md b/HISTORY.md index 4c22d6fdd11..20e99c412c7 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,3 +1,6 @@ + + + ## v2.11.4 (2025-04-29) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.4) @@ -207,6 +210,7 @@ See the [blog post](https://pydantic.dev/articles/pydantic-v2-11-release) for mo * `dataclass` `InitVar` shouldn't be required on serialization by @sydney-runkle in https://github.com/pydantic/pydantic-core/pull/1602 ## New Contributors + * @FyZzyss made their first contribution in https://github.com/pydantic/pydantic/pull/10789 * @tamird made their first contribution in https://github.com/pydantic/pydantic/pull/10948 * @felixxm made their first contribution in https://github.com/pydantic/pydantic/pull/11077 @@ -244,7 +248,6 @@ This is another early alpha release, meant to collect early feedback from users * Bump `pydantic-core` to v2.29.0 by @mikeedjones in [#11402](https://github.com/pydantic/pydantic/pull/11402) * Use locally-built rust with symbols & pgo by @davidhewitt in [#11403](https://github.com/pydantic/pydantic/pull/11403) - #### Performance * Create a single dictionary when creating a `CoreConfig` instance by @sydney-runkle in [#11384](https://github.com/pydantic/pydantic/pull/11384) @@ -624,6 +627,7 @@ Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/relea ### What's Changed #### Fixes + * Do not error when trying to evaluate annotations of private attributes by @Viicos in [#10358](https://github.com/pydantic/pydantic/pull/10358) * Adding notes on designing sound `Callable` discriminators by @sydney-runkle in [#10400](https://github.com/pydantic/pydantic/pull/10400) * Fix serialization schema generation when using `PlainValidator` by @Viicos in [#10427](https://github.com/pydantic/pydantic/pull/10427) @@ -638,6 +642,7 @@ Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/relea ### What's Changed #### Fixes + * Fix Predicate issue in v2.9.0 by @sydney-runkle in [#10321](https://github.com/pydantic/pydantic/pull/10321) * Fixing `annotated-types` bound to `>=0.6.0` by @sydney-runkle in [#10327](https://github.com/pydantic/pydantic/pull/10327) * Turn `tzdata` install requirement into optional `timezone` dependency by @jakob-keller in [#10331](https://github.com/pydantic/pydantic/pull/10331) @@ -677,7 +682,7 @@ The code released in v2.9.0 is practically identical to that of v2.9.0b2. #### Changes * Breaking Change: Merge `dict` type `json_schema_extra` by @sydney-runkle in [#9792](https://github.com/pydantic/pydantic/pull/9792) - * For more info (how to replicate old behavior) on this change, see [here](https://docs.pydantic.dev/dev/concepts/json_schema/#merging-json_schema_extra) + * For more info (how to replicate old behavior) on this change, see [here](https://docs.pydantic.dev/dev/concepts/json_schema/#merging-json_schema_extra) * Refactor annotation injection for known (often generic) types by @sydney-runkle in [#9979](https://github.com/pydantic/pydantic/pull/9979) * Move annotation compatibility errors to validation phase by @sydney-runkle in [#9999](https://github.com/pydantic/pydantic/pull/9999) * Improve runtime errors for string constraints like `pattern` for incompatible types by @sydney-runkle in [#10158](https://github.com/pydantic/pydantic/pull/10158) @@ -700,6 +705,7 @@ The code released in v2.9.0 is practically identical to that of v2.9.0b2. * Update ns stack with already copied ns by @sydney-runkle in [#10267](https://github.com/pydantic/pydantic/pull/10267) ##### Minor Internal Improvements + * āš”ļø Speed up `multiple_of_validator()` by 31% in `pydantic/_internal/_validators.py` by @misrasaurabh1 in [#9839](https://github.com/pydantic/pydantic/pull/9839) * āš”ļø Speed up `ModelPrivateAttr.__set_name__()` by 18% in `pydantic/fields.py` by @misrasaurabh1 in [#9841](https://github.com/pydantic/pydantic/pull/9841) * āš”ļø Speed up `dataclass()` by 7% in `pydantic/dataclasses.py` by @misrasaurabh1 in [#9843](https://github.com/pydantic/pydantic/pull/9843) @@ -829,10 +835,12 @@ Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/relea ### What's Changed #### Packaging + * Bump `ruff` to `v0.5.0` and `pyright` to `v1.1.369` by @sydney-runkle in [#9801](https://github.com/pydantic/pydantic/pull/9801) * Bump `pydantic-core` to `v2.20.1`, `pydantic-extra-types` to `v2.9.0` by @sydney-runkle in [#9832](https://github.com/pydantic/pydantic/pull/9832) #### Fixes + * Fix breaking change in `to_snake` from v2.7 -> v2.8 by @sydney-runkle in [#9812](https://github.com/pydantic/pydantic/pull/9812) * Fix list constraint json schema application by @sydney-runkle in [#9818](https://github.com/pydantic/pydantic/pull/9818) * Support time duration more than 23 by @nix010 in [pydantic/speedate#64](https://github.com/pydantic/speedate/pull/64) @@ -1085,6 +1093,7 @@ The code released in v2.7.0 is practically identical to that of v2.7.0b1. * Support for parsing partial JSON strings in Python by @samuelcolvin in [pydantic/jiter#66](https://github.com/pydantic/jiter/pull/66) **Finalized in v2.7.0, rather than v2.7.0b1:** + * Add support for field level number to str coercion option by @NeevCohen in [#9137](https://github.com/pydantic/pydantic/pull/9137) * Update `warnings` parameter for serialization utilities to allow raising a warning by @Lance-Drane in [#9166](https://github.com/pydantic/pydantic/pull/9166) @@ -1205,7 +1214,6 @@ Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/relea * Fix nested discriminated union schema gen, pt 2 by @sydney-runkle in [#8932](https://github.com/pydantic/pydantic/pull/8932) * Fix bug with no_strict_optional=True caused by API deferral by @dmontagu in [#8826](https://github.com/pydantic/pydantic/pull/8826) - ## v2.6.3 (2024-02-27) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.6.3) @@ -1220,7 +1228,6 @@ Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/relea * Fix discriminated union schema gen bug by @sydney-runkle in [#8904](https://github.com/pydantic/pydantic/pull/8904) - ## v2.6.2 (2024-02-23) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.6.2) @@ -1235,7 +1242,6 @@ Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/relea * 'YYYY-MM-DD' date string coerced to datetime shouldn't infer timezone by @sydney-runkle in [pydantic/pydantic-core#1193](https://github.com/pydantic/pydantic-core/pull/1193) - ## v2.6.1 (2024-02-05) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.6.1) @@ -1257,7 +1263,6 @@ Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/relea * Fix warning for tuple of wrong size in `Union` by @davidhewitt in [pydantic/pydantic-core#1174](https://github.com/pydantic/pydantic-core/pull/1174) * Fix `computed_field` JSON serializer `exclude_none` behavior by @sydney-runkle in [pydantic/pydantic-core#1187](https://github.com/pydantic/pydantic-core/pull/1187) - ## v2.6.0 (2024-01-23) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.6.0) @@ -1347,10 +1352,10 @@ The code released in v2.6.0 is practically identical to that of v2.6.0b1. * Support yyyy-MM-DD string for datetimes by @sydney-runkle in [pydantic/pydantic-core#1124](https://github.com/pydantic/pydantic-core/pull/1124) * Tweak ordering of definitions in generated schemas by @StrawHatDrag0n in [#8583](https://github.com/pydantic/pydantic/pull/8583) - ### New Contributors #### `pydantic` + * @ekeew made their first contribution in [#6874](https://github.com/pydantic/pydantic/pull/6874) * @lambertsbennett made their first contribution in [#8054](https://github.com/pydantic/pydantic/pull/8054) * @vincent-hachin-wmx made their first contribution in [#8138](https://github.com/pydantic/pydantic/pull/8138) @@ -1384,6 +1389,7 @@ The code released in v2.6.0 is practically identical to that of v2.6.0b1. * @StrawHatDrag0n made their first contribution in [#8583](https://github.com/pydantic/pydantic/pull/8583) #### `pydantic-core` + * @mariuswinger made their first contribution in [pydantic/pydantic-core#1087](https://github.com/pydantic/pydantic-core/pull/1087) * @adamchainz made their first contribution in [pydantic/pydantic-core#1090](https://github.com/pydantic/pydantic-core/pull/1090) * @akx made their first contribution in [pydantic/pydantic-core#1123](https://github.com/pydantic/pydantic-core/pull/1123) @@ -1465,7 +1471,7 @@ The code released in v2.5.0 is functionally identical to that of v2.5.0b1. * Added `validation_error_cause` to config by @zakstucke in [#7626](https://github.com/pydantic/pydantic/pull/7626) * Make path of the item to validate available in plugin by @hramezani in [#7861](https://github.com/pydantic/pydantic/pull/7861) * Add `CallableDiscriminator` and `Tag` by @dmontagu in [#7983](https://github.com/pydantic/pydantic/pull/7983) - * `CallableDiscriminator` renamed to `Discriminator` by @dmontagu in [#8047](https://github.com/pydantic/pydantic/pull/8047) + * `CallableDiscriminator` renamed to `Discriminator` by @dmontagu in [#8047](https://github.com/pydantic/pydantic/pull/8047) * Make union case tags affect union error messages by @dmontagu in [#8001](https://github.com/pydantic/pydantic/pull/8001) * Add `examples` and `json_schema_extra` to `@computed_field` by @alexmojaki in [#8013](https://github.com/pydantic/pydantic/pull/8013) * Add `JsonValue` type by @dmontagu in [#7998](https://github.com/pydantic/pydantic/pull/7998) @@ -1535,6 +1541,7 @@ The code released in v2.5.0 is functionally identical to that of v2.5.0b1. ### New Contributors #### `pydantic` + * @schneebuzz made their first contribution in [#7699](https://github.com/pydantic/pydantic/pull/7699) * @edoakes made their first contribution in [#7780](https://github.com/pydantic/pydantic/pull/7780) * @alexmojaki made their first contribution in [#7775](https://github.com/pydantic/pydantic/pull/7775) @@ -1561,6 +1568,7 @@ The code released in v2.5.0 is functionally identical to that of v2.5.0b1. * @barraponto made their first contribution in [#8032](https://github.com/pydantic/pydantic/pull/8032) #### `pydantic-core` + * @sisp made their first contribution in [pydantic/pydantic-core#995](https://github.com/pydantic/pydantic-core/pull/995) * @michaelhly made their first contribution in [pydantic/pydantic-core#1015](https://github.com/pydantic/pydantic-core/pull/1015) @@ -1660,6 +1668,7 @@ Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/relea * Improvements to version info message by @samuelcolvin in [#7594](https://github.com/pydantic/pydantic/pull/7594) ### New Contributors + * @15498th made their first contribution in [#7238](https://github.com/pydantic/pydantic/pull/7238) * @GabrielCappelli made their first contribution in [#7213](https://github.com/pydantic/pydantic/pull/7213) * @tobni made their first contribution in [#7184](https://github.com/pydantic/pydantic/pull/7184) @@ -1745,6 +1754,7 @@ Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/relea * Add `short_version` and use it in links by @hramezani in [#7115](https://github.com/pydantic/pydantic/pull/7115) * šŸ“ Add usage link to `RootModel` by @Kludex in [#7113](https://github.com/pydantic/pydantic/pull/7113) * Revert "Fix default port for mongosrv DSNs (#6827)" by @Kludex in [#7116](https://github.com/pydantic/pydantic/pull/7116) + * Clarify validate_default and _Unset handling in usage docs and migration guide by @benbenbang in [#6950](https://github.com/pydantic/pydantic/pull/6950) * Tweak documentation of `Field.exclude` by @Viicos in [#7086](https://github.com/pydantic/pydantic/pull/7086) * Do not require `validate_assignment` to use `Field.frozen` by @Viicos in [#7103](https://github.com/pydantic/pydantic/pull/7103) @@ -1976,11 +1986,11 @@ This release provides proper support for Python 3.13, with (Cythonized) wheels p As a consequence, Cython was updated from `0.29.x` to `3.0.x`. * General maintenance of CI and build ecosystem by @Viicos in https://github.com/pydantic/pydantic/pull/10847 - - Update Cython to `3.0.x`. - - Properly address Python 3.13 deprecation warnings. - - Migrate packaging to `pyproject.toml`, make use of PEP 517 build options. - - Use [`build`](https://pypi.org/project/build/) instead of direct `setup.py` invocations. - - Update various Github Actions versions. + * Update Cython to `3.0.x`. + * Properly address Python 3.13 deprecation warnings. + * Migrate packaging to `pyproject.toml`, make use of PEP 517 build options. + * Use [`build`](https://pypi.org/project/build/) instead of direct `setup.py` invocations. + * Update various Github Actions versions. * Replace outdated stpmex link in documentation by @jaredenorris in https://github.com/pydantic/pydantic/pull/10997 ## v1.10.19 (2024-11-06) @@ -1988,11 +1998,6 @@ As a consequence, Cython was updated from `0.29.x` to `3.0.x`. * Add warning when v2 model is nested in v1 model by @sydney-runkle in https://github.com/pydantic/pydantic/pull/10432 * Fix deprecation warning in V1 `isinstance` check by @alicederyn in https://github.com/pydantic/pydantic/pull/10645 -## v1.10.19 (2024-11-06) - -* Add warning when v2 model is nested in v1 model by @sydney-runkle in https://github.com/pydantic/pydantic/pull/10432 -* Fix deprecation warning in V1 `isinstance` check by @alicederyn in https://github.com/pydantic/pydantic/pull/10645 - ## v1.10.18 (2024-08-22) * Eval type fix in V1 by @sydney-runkle in https://github.com/pydantic/pydantic/pull/9751 @@ -2121,15 +2126,15 @@ As a consequence, Cython was updated from `0.29.x` to `3.0.x`. ## v1.10.0 (2022-08-30) -* Refactor the whole _pydantic_ `dataclass` decorator to really act like its standard lib equivalent. +* Refactor the whole *pydantic* `dataclass` decorator to really act like its standard lib equivalent. It hence keeps `__eq__`, `__hash__`, ... and makes comparison with its non-validated version possible. It also fixes usage of `frozen` dataclasses in fields and usage of `default_factory` in nested dataclasses. The support of `Config.extra` has been added. Finally, config customization directly via a `dict` is now possible, [#2557](https://github.com/pydantic/pydantic/pull/2557) by @PrettyWood

**BREAKING CHANGES:** - - The `compiled` boolean (whether _pydantic_ is compiled with cython) has been moved from `main.py` to `version.py` - - Now that `Config.extra` is supported, `dataclass` ignores by default extra arguments (like `BaseModel`) + * The `compiled` boolean (whether *pydantic* is compiled with cython) has been moved from `main.py` to `version.py` + * Now that `Config.extra` is supported, `dataclass` ignores by default extra arguments (like `BaseModel`) * Fix PEP487 `__set_name__` protocol in `BaseModel` for PrivateAttrs, [#4407](https://github.com/pydantic/pydantic/pull/4407) by @tlambert03 * Allow for custom parsing of environment variables via `parse_env_var` in `Config`, [#4406](https://github.com/pydantic/pydantic/pull/4406) by @acmiyaguchi * Rename `master` to `main`, [#4405](https://github.com/pydantic/pydantic/pull/4405) by @hramezani @@ -2217,8 +2222,8 @@ Pre-release, see [the GitHub release](https://github.com/pydantic/pydantic/relea ## v1.9.2 (2022-08-11) -**Revert Breaking Change**: _v1.9.1_ introduced a breaking change where model fields were -deep copied by default, this release reverts the default behaviour to match _v1.9.0_ and before, +**Revert Breaking Change**: *v1.9.1* introduced a breaking change where model fields were +deep copied by default, this release reverts the default behaviour to match *v1.9.0* and before, while also allow deep-copy behaviour via `copy_on_model_validation = 'deep'`. See [#4092](https://github.com/pydantic/pydantic/pull/4092) for more information. * Allow for shallow copies of model fields, `Config.copy_on_model_validation` is now a str which must be @@ -2269,7 +2274,7 @@ for their kind support. * [`Config.smart_union` for better union logic](https://docs.pydantic.dev/usage/model_config/#smart-union), [#2092](https://github.com/pydantic/pydantic/pull/2092) by @PrettyWood * Binaries for Macos M1 CPUs, [#3498](https://github.com/pydantic/pydantic/pull/3498) by @samuelcolvin * Complex types can be set via [nested environment variables](https://docs.pydantic.dev/usage/settings/#parsing-environment-variable-values), e.g. `foo___bar`, [#3159](https://github.com/pydantic/pydantic/pull/3159) by @Air-Mark -* add a dark mode to _pydantic_ documentation, [#2913](https://github.com/pydantic/pydantic/pull/2913) by @gbdlin +* add a dark mode to *pydantic* documentation, [#2913](https://github.com/pydantic/pydantic/pull/2913) by @gbdlin * Add support for autocomplete in VS Code via `__dataclass_transform__`, [#2721](https://github.com/pydantic/pydantic/pull/2721) by @tiangolo * Add "exclude" as a field parameter so that it can be configured using model config, [#660](https://github.com/pydantic/pydantic/pull/660) by @daviskirk @@ -2300,7 +2305,7 @@ for their kind support. * Fix issue when pydantic fail to parse `typing.ClassVar` string type annotation, [#3401](https://github.com/pydantic/pydantic/pull/3401) by @uriyyo * Mention Python >= 3.9.2 as an alternative to `typing_extensions.TypedDict`, [#3374](https://github.com/pydantic/pydantic/pull/3374) by @BvB93 * Changed the validator method name in the [Custom Errors example](https://docs.pydantic.dev/usage/models/#custom-errors) - to more accurately describe what the validator is doing; changed from `name_must_contain_space` to ` value_must_equal_bar`, [#3327](https://github.com/pydantic/pydantic/pull/3327) by @michaelrios28 + to more accurately describe what the validator is doing; changed from `name_must_contain_space` to `value_must_equal_bar`, [#3327](https://github.com/pydantic/pydantic/pull/3327) by @michaelrios28 * Add `AmqpDsn` class, [#3254](https://github.com/pydantic/pydantic/pull/3254) by @kludex * Always use `Enum` value as default in generated JSON schema, [#3190](https://github.com/pydantic/pydantic/pull/3190) by @joaommartins * Add support for Mypy 0.920, [#3175](https://github.com/pydantic/pydantic/pull/3175) by @christianbundy @@ -2319,14 +2324,14 @@ for their kind support. * Prevent `StrictStr` permitting `Enum` values where the enum inherits from `str`, [#2929](https://github.com/pydantic/pydantic/pull/2929) by @samuelcolvin * Make `SecretsSettingsSource` parse values being assigned to fields of complex types when sourced from a secrets file, just as when sourced from environment variables, [#2917](https://github.com/pydantic/pydantic/pull/2917) by @davidmreed -* add a dark mode to _pydantic_ documentation, [#2913](https://github.com/pydantic/pydantic/pull/2913) by @gbdlin +* add a dark mode to *pydantic* documentation, [#2913](https://github.com/pydantic/pydantic/pull/2913) by @gbdlin * Make `pydantic-mypy` plugin compatible with `pyproject.toml` configuration, consistent with `mypy` changes. See the [doc](https://docs.pydantic.dev/mypy_plugin/#configuring-the-plugin) for more information, [#2908](https://github.com/pydantic/pydantic/pull/2908) by @jrwalk * add Python 3.10 support, [#2885](https://github.com/pydantic/pydantic/pull/2885) by @PrettyWood * Correctly parse generic models with `Json[T]`, [#2860](https://github.com/pydantic/pydantic/pull/2860) by @geekingfrog * Update contrib docs re: Python version to use for building docs, [#2856](https://github.com/pydantic/pydantic/pull/2856) by @paxcodes -* Clarify documentation about _pydantic_'s support for custom validation and strict type checking, - despite _pydantic_ being primarily a parsing library, [#2855](https://github.com/pydantic/pydantic/pull/2855) by @paxcodes +* Clarify documentation about *pydantic*'s support for custom validation and strict type checking, + despite *pydantic* being primarily a parsing library, [#2855](https://github.com/pydantic/pydantic/pull/2855) by @paxcodes * Fix schema generation for `Deque` fields, [#2810](https://github.com/pydantic/pydantic/pull/2810) by @sergejkozin * fix an edge case when mixing constraints and `Literal`, [#2794](https://github.com/pydantic/pydantic/pull/2794) by @PrettyWood * Fix postponed annotation resolution for `NamedTuple` and `TypedDict` when they're used directly as the type of fields @@ -2424,18 +2429,18 @@ for their kind support. ### Changes * **Breaking Change**, remove old deprecation aliases from v1, [#2415](https://github.com/pydantic/pydantic/pull/2415) by @samuelcolvin: - * remove notes on migrating to v1 in docs - * remove `Schema` which was replaced by `Field` - * remove `Config.case_insensitive` which was replaced by `Config.case_sensitive` (default `False`) - * remove `Config.allow_population_by_alias` which was replaced by `Config.allow_population_by_field_name` - * remove `model.fields` which was replaced by `model.__fields__` - * remove `model.to_string()` which was replaced by `str(model)` - * remove `model.__values__` which was replaced by `model.__dict__` + * remove notes on migrating to v1 in docs + * remove `Schema` which was replaced by `Field` + * remove `Config.case_insensitive` which was replaced by `Config.case_sensitive` (default `False`) + * remove `Config.allow_population_by_alias` which was replaced by `Config.allow_population_by_field_name` + * remove `model.fields` which was replaced by `model.__fields__` + * remove `model.to_string()` which was replaced by `str(model)` + * remove `model.__values__` which was replaced by `model.__dict__` * **Breaking Change:** always validate only first sublevel items with `each_item`. There were indeed some edge cases with some compound types where the validated items were the last sublevel ones, [#1933](https://github.com/pydantic/pydantic/pull/1933) by @PrettyWood * Update docs extensions to fix local syntax highlighting, [#2400](https://github.com/pydantic/pydantic/pull/2400) by @daviskirk * fix: allow `utils.lenient_issubclass` to handle `typing.GenericAlias` objects like `list[str]` in Python >= 3.9, [#2399](https://github.com/pydantic/pydantic/pull/2399) by @daviskirk -* Improve field declaration for _pydantic_ `dataclass` by allowing the usage of _pydantic_ `Field` or `'metadata'` kwarg of `dataclasses.field`, [#2384](https://github.com/pydantic/pydantic/pull/2384) by @PrettyWood +* Improve field declaration for *pydantic* `dataclass` by allowing the usage of *pydantic* `Field` or `'metadata'` kwarg of `dataclasses.field`, [#2384](https://github.com/pydantic/pydantic/pull/2384) by @PrettyWood * Making `typing-extensions` a required dependency, [#2368](https://github.com/pydantic/pydantic/pull/2368) by @samuelcolvin * Make `resolve_annotations` more lenient, allowing for missing modules, [#2363](https://github.com/pydantic/pydantic/pull/2363) by @samuelcolvin * Allow configuring models through class kwargs, [#2356](https://github.com/pydantic/pydantic/pull/2356) by @Bobronium @@ -2455,9 +2460,9 @@ for their kind support. * Support custom root type (aka `__root__`) when using `parse_obj()` with nested models, [#2238](https://github.com/pydantic/pydantic/pull/2238) by @PrettyWood * Support custom root type (aka `__root__`) with `from_orm()`, [#2237](https://github.com/pydantic/pydantic/pull/2237) by @PrettyWood * ensure cythonized functions are left untouched when creating models, based on [#1944](https://github.com/pydantic/pydantic/pull/1944) by @kollmats, [#2228](https://github.com/pydantic/pydantic/pull/2228) by @samuelcolvin -* Resolve forward refs for stdlib dataclasses converted into _pydantic_ ones, [#2220](https://github.com/pydantic/pydantic/pull/2220) by @PrettyWood +* Resolve forward refs for stdlib dataclasses converted into *pydantic* ones, [#2220](https://github.com/pydantic/pydantic/pull/2220) by @PrettyWood * Add support for `NamedTuple` and `TypedDict` types. - Those two types are now handled and validated when used inside `BaseModel` or _pydantic_ `dataclass`. + Those two types are now handled and validated when used inside `BaseModel` or *pydantic* `dataclass`. Two utils are also added `create_model_from_namedtuple` and `create_model_from_typeddict`, [#2216](https://github.com/pydantic/pydantic/pull/2216) by @PrettyWood * Do not ignore annotated fields when type is `Union[Type[...], ...]`, [#2213](https://github.com/pydantic/pydantic/pull/2213) by @PrettyWood * Raise a user-friendly `TypeError` when a `root_validator` does not return a `dict` (e.g. `None`), [#2209](https://github.com/pydantic/pydantic/pull/2209) by @masalim2 @@ -2475,7 +2480,7 @@ for their kind support. * Add a bound method `validate` to functions decorated with `validate_arguments` to validate parameters without actually calling the function, [#2127](https://github.com/pydantic/pydantic/pull/2127) by @PrettyWood * Add the ability to customize settings sources (add / disable / change priority order), [#2107](https://github.com/pydantic/pydantic/pull/2107) by @kozlek -* Fix mypy complaints about most custom _pydantic_ types, [#2098](https://github.com/pydantic/pydantic/pull/2098) by @PrettyWood +* Fix mypy complaints about most custom *pydantic* types, [#2098](https://github.com/pydantic/pydantic/pull/2098) by @PrettyWood * Add a [Hypothesis](https://hypothesis.readthedocs.io/) plugin for easier [property-based testing](https://increment.com/testing/in-praise-of-property-based-testing/) with Pydantic's custom types - [usage details here](https://docs.pydantic.dev/hypothesis_plugin/), [#2097](https://github.com/pydantic/pydantic/pull/2097) by @Zac-HD * add validator for `None`, `NoneType` or `Literal[None]`, [#2095](https://github.com/pydantic/pydantic/pull/2095) by @PrettyWood * Handle properly fields of type `Callable` with a default value, [#2094](https://github.com/pydantic/pydantic/pull/2094) by @PrettyWood @@ -2496,7 +2501,7 @@ for their kind support. * use `enum` for `typing.Literal` in JSON schema, [#1350](https://github.com/pydantic/pydantic/pull/1350) by @PrettyWood * Fix: some recursive models did not require `update_forward_refs` and silently behaved incorrectly, [#1201](https://github.com/pydantic/pydantic/pull/1201) by @PrettyWood * Fix bug where generic models with fields where the typevar is nested in another type `a: List[T]` are considered to be concrete. This allows these models to be subclassed and composed as expected, [#947](https://github.com/pydantic/pydantic/pull/947) by @daviskirk -* Add `Config.copy_on_model_validation` flag. When set to `False`, _pydantic_ will keep models used as fields +* Add `Config.copy_on_model_validation` flag. When set to `False`, *pydantic* will keep models used as fields untouched on validation instead of reconstructing (copying) them, [#265](https://github.com/pydantic/pydantic/pull/265) by @PrettyWood ## v1.7.4 (2021-05-11) @@ -2522,7 +2527,7 @@ Thank you to pydantic's sponsors: * fix slow `GenericModel` concrete model creation, allow `GenericModel` concrete name reusing in module, [#2078](https://github.com/pydantic/pydantic/pull/2078) by @Bobronium * keep the order of the fields when `validate_assignment` is set, [#2073](https://github.com/pydantic/pydantic/pull/2073) by @PrettyWood -* forward all the params of the stdlib `dataclass` when converted into _pydantic_ `dataclass`, [#2065](https://github.com/pydantic/pydantic/pull/2065) by @PrettyWood +* forward all the params of the stdlib `dataclass` when converted into *pydantic* `dataclass`, [#2065](https://github.com/pydantic/pydantic/pull/2065) by @PrettyWood ## v1.7.1 (2020-10-28) @@ -2534,7 +2539,7 @@ for their kind support. * Fix mypy assignment error when using `PrivateAttr`, [#2048](https://github.com/pydantic/pydantic/pull/2048) by @aphedges * fix `underscore_attrs_are_private` causing `TypeError` when overriding `__init__`, [#2047](https://github.com/pydantic/pydantic/pull/2047) by @samuelcolvin * Fixed regression introduced in v1.7 involving exception handling in field validators when `validate_assignment=True`, [#2044](https://github.com/pydantic/pydantic/pull/2044) by @johnsabath -* fix: _pydantic_ `dataclass` can inherit from stdlib `dataclass` +* fix: *pydantic* `dataclass` can inherit from stdlib `dataclass` and `Config.arbitrary_types_allowed` is supported, [#2042](https://github.com/pydantic/pydantic/pull/2042) by @PrettyWood ## v1.7 (2020-10-26) @@ -2620,7 +2625,7 @@ Thank you to pydantic's sponsors: @matin, @tiangolo, @chdsbd, @jorgecarleitao, a * Ensure `SchemaExtraCallable` is always defined to get type hints on BaseConfig, [#1614](https://github.com/pydantic/pydantic/pull/1614) by @PrettyWood * Update datetime parser to support negative timestamps, [#1600](https://github.com/pydantic/pydantic/pull/1600) by @mlbiche * Update mypy, remove `AnyType` alias for `Type[Any]`, [#1598](https://github.com/pydantic/pydantic/pull/1598) by @samuelcolvin -* Adjust handling of root validators so that errors are aggregated from _all_ failing root validators, instead of reporting on only the first root validator to fail, [#1586](https://github.com/pydantic/pydantic/pull/1586) by @beezee +* Adjust handling of root validators so that errors are aggregated from *all* failing root validators, instead of reporting on only the first root validator to fail, [#1586](https://github.com/pydantic/pydantic/pull/1586) by @beezee * Make `__modify_schema__` on Enums apply to the enum schema rather than fields that use the enum, [#1581](https://github.com/pydantic/pydantic/pull/1581) by @therefromhere * Fix behavior of `__all__` key when used in conjunction with index keys in advanced include/exclude of fields that are sequences, [#1579](https://github.com/pydantic/pydantic/pull/1579) by @xspirus * Subclass validators do not run when referencing a `List` field defined in a parent class when `each_item=True`. Added an example to the docs illustrating this, [#1566](https://github.com/pydantic/pydantic/pull/1566) by @samueldeklund diff --git a/README.md b/README.md index d8f6c3a8ea4..f4f9b1afc94 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Pydantic + [![CI](https://img.shields.io/github/actions/workflow/status/pydantic/pydantic/ci.yml?branch=main&logo=github&label=CI)](https://github.com/pydantic/pydantic/actions?query=event%3Apush+branch%3Amain+workflow%3ACI) [![Coverage](https://coverage-badge.samuelcolvin.workers.dev/pydantic/pydantic.svg)](https://coverage-badge.samuelcolvin.workers.dev/redirect/pydantic/pydantic) [![pypi](https://img.shields.io/pypi/v/pydantic.svg)](https://pypi.python.org/pypi/pydantic) @@ -9,7 +10,6 @@ [![Pydantic v2](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/pydantic/pydantic/main/docs/badge/v2.json)](https://docs.pydantic.dev/latest/contributing/#badges) [![llms.txt](https://img.shields.io/badge/llms.txt-green)](https://docs.pydantic.dev/latest/llms.txt) - Data validation using Python type hints. Fast and extensible, Pydantic plays nicely with your linters/IDE/brain. diff --git a/docs/api/experimental.md b/docs/api/experimental.md index a6efeeaf642..21ec0993995 100644 --- a/docs/api/experimental.md +++ b/docs/api/experimental.md @@ -1,11 +1,13 @@ -# Pipeline API +# Experimental API + +## Pipeline API ::: pydantic.experimental.pipeline options: members: - _Pipeline -# Arguments schema API +## Arguments schema API ::: pydantic.experimental.arguments_schema options: diff --git a/docs/api/standard_library_types.md b/docs/api/standard_library_types.md index e05b143f200..7d0b79b810a 100644 --- a/docs/api/standard_library_types.md +++ b/docs/api/standard_library_types.md @@ -56,8 +56,8 @@ Pydantic supports the following [datetime](https://docs.python.org/library/datet types: ### [`datetime.datetime`][] -* `datetime` fields will accept values of type: +* `datetime` fields will accept values of type: * `datetime`; an existing `datetime` object * `int` or `float`; assumed as Unix time, i.e. seconds (if >= `-2e10` and <= `2e10`) or milliseconds (if < `-2e10`or > `2e10`) since 1 January 1970 @@ -86,8 +86,8 @@ print(event.model_dump()) ``` ### [`datetime.date`][] -* `date` fields will accept values of type: +* `date` fields will accept values of type: * `date`; an existing `date` object * `int` or `float`; handled the same as described for `datetime` above * `str`; the following formats are accepted: @@ -111,6 +111,7 @@ print(my_birthday.model_dump()) ``` ### [`datetime.time`][] + * `time` fields will accept values of type: * `time`; an existing `time` object @@ -134,6 +135,7 @@ print(m.model_dump()) ``` ### [`datetime.timedelta`][] + * `timedelta` fields will accept values of type: * `timedelta`; an existing `timedelta` object @@ -439,7 +441,6 @@ print(sorted(m2.frozenset_of_ints)) #> [1, 2, 3] ``` - ## Other Iterables ### [`typing.Sequence`][] @@ -482,7 +483,7 @@ If you have a generator you want to validate, you can still use `Sequence` as de In that case, the generator will be consumed and stored on the model as a list and its values will be validated against the type parameter of the `Sequence` (e.g. `int` in `Sequence[int]`). -However, if you have a generator that you _don't_ want to be eagerly consumed (e.g. an infinite +However, if you have a generator that you *don't* want to be eagerly consumed (e.g. an infinite generator or a remote data loader), you can use a field of type [`Iterable`][typing.Iterable]: ```python @@ -529,7 +530,6 @@ for i in m.infinite: During initial validation, `Iterable` fields only perform a simple check that the provided argument is iterable. To prevent it from being consumed, no validation of the yielded values is performed eagerly. - Though the yielded values are not validated eagerly, they are still validated when yielded, and will raise a `ValidationError` at yield time when appropriate: @@ -861,9 +861,9 @@ Allows only `None` value. ## Strings -- [`str`][]: Strings are accepted as-is. -- [`bytes`][] and [`bytearray`][] are converted using the [`decode()`][bytes.decode] method. -- Enums inheriting from [`str`][] are converted using the [`value`][enum.Enum.value] attribute. +* [`str`][]: Strings are accepted as-is. +* [`bytes`][] and [`bytearray`][] are converted using the [`decode()`][bytes.decode] method. +* Enums inheriting from [`str`][] are converted using the [`value`][enum.Enum.value] attribute. All other types cause an error. @@ -921,7 +921,6 @@ except ValidationError as e: [`bytes`][] are accepted as-is. [`bytearray`][] is converted using `bytes(v)`. `str` are converted using `v.encode()`. `int`, `float`, and `Decimal` are coerced using `str(v).encode()`. See [ByteSize](types.md#pydantic.types.ByteSize) for more details. - ## [`typing.Literal`][] Pydantic supports the use of [`typing.Literal`][] as a lightweight way to specify that a field may accept only specific literal values: @@ -1041,12 +1040,10 @@ Allows any value, including `None`. Allows wrapping another type with arbitrary metadata, as per [PEP-593](https://www.python.org/dev/peps/pep-0593/). The `Annotated` hint may contain a single call to the [`Field` function](../concepts/types.md#using-the-annotated-pattern), but otherwise the additional metadata is ignored and the root type is used. - ## [`typing.Pattern`][] Will cause the input value to be passed to `re.compile(v)` to create a regular expression pattern. - ## [`pathlib.Path`][] Simply uses the type itself for validation by passing the value to `Path(v)`. diff --git a/docs/concepts/alias.md b/docs/concepts/alias.md index 20bd701952f..de40fa768b3 100644 --- a/docs/concepts/alias.md +++ b/docs/concepts/alias.md @@ -102,7 +102,6 @@ want to specify the alias for each field individually. [`to_camel`][pydantic.alias_generators.to_camel]
[`to_snake`][pydantic.alias_generators.to_snake]
- ### Using a callable Here's a basic example using a callable: @@ -132,7 +131,6 @@ print(t.model_dump(by_alias=True)) [`pydantic.aliases.AliasGenerator`][pydantic.aliases.AliasGenerator]
- `AliasGenerator` is a class that allows you to specify multiple alias generators for a model. You can use an `AliasGenerator` to specify different alias generators for validation and serialization. diff --git a/docs/concepts/config.md b/docs/concepts/config.md index b8855e5e5c3..d4c51f4daf3 100644 --- a/docs/concepts/config.md +++ b/docs/concepts/config.md @@ -6,41 +6,43 @@ specified for Pydantic's supported types. On Pydantic models, configuration can be specified in two ways: -- Using the [`model_config`][pydantic.BaseModel.model_config] class attribute: - ```python - from pydantic import BaseModel, ConfigDict, ValidationError +* Using the [`model_config`][pydantic.BaseModel.model_config] class attribute: + ```python + from pydantic import BaseModel, ConfigDict, ValidationError - class Model(BaseModel): - model_config = ConfigDict(str_max_length=5) # (1)! - v: str + class Model(BaseModel): + model_config = ConfigDict(str_max_length=5) # (1)! + v: str - try: - m = Model(v='abcdef') - except ValidationError as e: - print(e) - """ - 1 validation error for Model - v - String should have at most 5 characters [type=string_too_long, input_value='abcdef', input_type=str] - """ - ``` + + try: + m = Model(v='abcdef') + except ValidationError as e: + print(e) + """ + 1 validation error for Model + v + String should have at most 5 characters [type=string_too_long, input_value='abcdef', input_type=str] + """ + ``` 1. A plain dictionary (i.e. `{'str_max_length': 5}`) can also be used. !!! note In Pydantic V1, the `Config` class was used. This is still supported, but **deprecated**. -- Using class arguments: - ```python - from pydantic import BaseModel +* Using class arguments: + + ```python + from pydantic import BaseModel - class Model(BaseModel, frozen=True): - a: str # (1)! - ``` + class Model(BaseModel, frozen=True): + a: str # (1)! + ``` 1. Unlike the [`model_config`][pydantic.BaseModel.model_config] class attribute, static type checkers will recognize the `frozen` argument, and so any instance @@ -92,33 +94,35 @@ print(ta.validate_python([1, 2])) If you are using [standard library dataclasses][dataclasses] or [`TypedDict`][typing.TypedDict] classes, the configuration can be set in two ways: -- Using the `__pydantic_config__` class attribute: - ```python - from dataclasses import dataclass +* Using the `__pydantic_config__` class attribute: - from pydantic import ConfigDict + ```python + from dataclasses import dataclass + from pydantic import ConfigDict - @dataclass - class User: - __pydantic_config__ = ConfigDict(strict=True) - id: int - name: str = 'John Doe' - ``` + @dataclass + class User: + __pydantic_config__ = ConfigDict(strict=True) -- Using the [`with_config`][pydantic.config.with_config] decorator (this avoids static type checking errors with + id: int + name: str = 'John Doe' + ``` + +* Using the [`with_config`][pydantic.config.with_config] decorator (this avoids static type checking errors with [`TypedDict`][typing.TypedDict]): - ```python - from typing_extensions import TypedDict - from pydantic import ConfigDict, with_config + ```python + from typing_extensions import TypedDict + + from pydantic import ConfigDict, with_config - @with_config(ConfigDict(str_to_lower=True)) - class Model(TypedDict): - x: str - ``` + @with_config(ConfigDict(str_to_lower=True)) + class Model(TypedDict): + x: str + ``` ## Change behaviour globally @@ -142,7 +146,7 @@ print(m.model_dump()) #> {'x': 'foo', 'y': 'bar'} ``` -If you provide configuration to the subclasses, it will be _merged_ with the parent configuration: +If you provide configuration to the subclasses, it will be *merged* with the parent configuration: ```python from pydantic import BaseModel, ConfigDict diff --git a/docs/concepts/dataclasses.md b/docs/concepts/dataclasses.md index 57c8aab8147..649b1112134 100644 --- a/docs/concepts/dataclasses.md +++ b/docs/concepts/dataclasses.md @@ -42,8 +42,8 @@ Similarities between Pydantic dataclasses and models include support for: Some differences between Pydantic dataclasses and models include: -* [validators](#validators-and-initialization-hooks) -* The behavior with the [`extra`][pydantic.ConfigDict.extra] configuration value +* [validators](#validators-and-initialization-hooks) +* The behavior with the [`extra`][pydantic.ConfigDict.extra] configuration value Similarly to Pydantic models, arguments used to instantiate the dataclass are [copied](./models.md#attribute-copies). @@ -350,6 +350,7 @@ print(DemoDataclass(product_id=2468)) #> DemoDataclass(product_id='02468') ``` + The dataclass [`__post_init__()`][dataclasses.__post_init__] method is also supported, and will be called between the calls to *before* and *after* model validators. diff --git a/docs/concepts/experimental.md b/docs/concepts/experimental.md index 3d22636897a..0d52a181408 100644 --- a/docs/concepts/experimental.md +++ b/docs/concepts/experimental.md @@ -113,7 +113,6 @@ Annotated[ 2. Multiply an integer by 2 after parsing it. 3. Strip whitespace from a string, validate it as an integer, then multiply it by 2. - ### Alternative patterns There are many alternative patterns to use depending on the scenario. @@ -322,11 +321,11 @@ You can only pass `experiment_allow_partial` to [`TypeAdapter`][pydantic.TypeAda Right now only a subset of collection validators know how to handle partial validation: -- `list` -- `set` -- `frozenset` -- `dict` (as in `dict[X, Y]`) -- `TypedDict` — only non-required fields may be missing, e.g. via [`NotRequired`][typing.NotRequired] or [`total=False`][typing.TypedDict.__total__]) +* `list` +* `set` +* `frozenset` +* `dict` (as in `dict[X, Y]`) +* `TypedDict` — only non-required fields may be missing, e.g. via [`NotRequired`][typing.NotRequired] or [`total=False`][typing.TypedDict.__total__]) While you can use `experimental_allow_partial` while validating against types that include other collection validators, those types will be validated "all or nothing", and partial validation will not work on more nested types. @@ -433,7 +432,7 @@ print(v) Pydantic provides the [`@validate_call`][pydantic.validate_call] decorator to perform validation on the provided arguments (and additionally return type) of a callable. However, it only allows arguments to be provided -by actually calling the decorated callable. In some situations, you may want to just _validate_ the arguments, +by actually calling the decorated callable. In some situations, you may want to just *validate* the arguments, such as when loading from other data sources such as JSON data. For this reason, the experimental [`generate_arguments_schema()`][pydantic.experimental.arguments_schema.generate_arguments_schema] diff --git a/docs/concepts/fields.md b/docs/concepts/fields.md index 55723c41eaf..c483b2a9692 100644 --- a/docs/concepts/fields.md +++ b/docs/concepts/fields.md @@ -46,13 +46,13 @@ the available metadata to add validation logic, type constraints, etc. Using this pattern has some advantages: -- Using the `f: = Field(...)` form can be confusing and might trick users into thinking `f` +* Using the `f: = Field(...)` form can be confusing and might trick users into thinking `f` has a default value, while in reality it is still required. -- You can provide an arbitrary amount of metadata elements for a field. As shown in the example above, +* You can provide an arbitrary amount of metadata elements for a field. As shown in the example above, the [`Field()`][pydantic.fields.Field] function only supports a limited set of constraints/metadata, and you may have to use different Pydantic utilities such as [`WithJsonSchema`][pydantic.WithJsonSchema] in some cases. -- Types can be made reusable (see the documentation on [custom types](./types.md#using-the-annotated-pattern) +* Types can be made reusable (see the documentation on [custom types](./types.md#using-the-annotated-pattern) using this pattern). However, note that certain arguments to the [`Field()`][pydantic.fields.Field] function (namely, `default`, @@ -212,8 +212,8 @@ There are three ways to define an alias: * `Field(validation_alias='foo')` * `Field(serialization_alias='foo')` -The `alias` parameter is used for both validation _and_ serialization. If you want to use -_different_ aliases for validation and serialization respectively, you can use the `validation_alias` +The `alias` parameter is used for both validation *and* serialization. If you want to use +*different* aliases for validation and serialization respectively, you can use the `validation_alias` and `serialization_alias` parameters, which will apply only in their respective use cases. Here is an example of using the `alias` parameter: @@ -244,7 +244,7 @@ print(user.model_dump(by_alias=True)) # (2)! When `by_alias=True`, the alias `'username'` used during serialization. -If you want to use an alias _only_ for validation, you can use the `validation_alias` parameter: +If you want to use an alias *only* for validation, you can use the `validation_alias` parameter: ```python from pydantic import BaseModel, Field @@ -264,7 +264,7 @@ print(user.model_dump(by_alias=True)) # (2)! 1. The validation alias `'username'` is used during validation. 2. The field name `'name'` is used during serialization. -If you only want to define an alias for _serialization_, you can use the `serialization_alias` parameter: +If you only want to define an alias for *serialization*, you can use the `serialization_alias` parameter: ```python from pydantic import BaseModel, Field @@ -380,6 +380,7 @@ print(user.model_dump(by_alias=True)) # (2)! #> {'my_field': 1} ``` + [](){#field-constraints} ## Numeric Constraints @@ -425,9 +426,9 @@ positive=1 non_negative=0 negative=-1 non_positive=0 even=2 love_for_pydantic=in ??? info "JSON Schema" In the generated JSON schema: - - `gt` and `lt` constraints will be translated to `exclusiveMinimum` and `exclusiveMaximum`. - - `ge` and `le` constraints will be translated to `minimum` and `maximum`. - - `multiple_of` constraint will be translated to `multipleOf`. + * `gt` and `lt` constraints will be translated to `exclusiveMinimum` and `exclusiveMaximum`. + * `ge` and `le` constraints will be translated to `minimum` and `maximum`. + * `multiple_of` constraint will be translated to `multipleOf`. The above snippet will generate the following JSON Schema: @@ -528,9 +529,9 @@ print(foo) ??? info "JSON Schema" In the generated JSON schema: - - `min_length` constraint will be translated to `minLength`. - - `max_length` constraint will be translated to `maxLength`. - - `pattern` constraint will be translated to `pattern`. + * `min_length` constraint will be translated to `minLength`. + * `max_length` constraint will be translated to `maxLength`. + * `pattern` constraint will be translated to `pattern`. The above snippet will generate the following JSON Schema: @@ -868,7 +869,6 @@ print(Model.model_json_schema()['properties']['deprecated_field']) #> {'deprecated': True, 'title': 'Deprecated Field', 'type': 'integer'} ``` - !!! note "Support for `category` and `stacklevel`" The current implementation of this feature does not take into account the `category` and `stacklevel` arguments to the `deprecated` decorator. This might land in a future version of Pydantic. @@ -1001,14 +1001,9 @@ class Box(BaseModel): return self.width * self.height * self.depth ``` - -[JSON Schema Draft 2020-12]: https://json-schema.org/understanding-json-schema/reference/numeric.html#numeric-types [Discriminated Unions]: ../concepts/unions.md#discriminated-unions [Validating data]: models.md#validating-data [Models]: models.md [init-only field]: https://docs.python.org/3/library/dataclasses.html#init-only-variables [frozen dataclass documentation]: https://docs.python.org/3/library/dataclasses.html#frozen-instances -[Validate Assignment]: models.md#validate-assignment -[Serialization]: serialization.md#model-and-field-level-include-and-exclude [Customizing JSON Schema]: json_schema.md#field-level-customization -[annotated]: https://docs.python.org/3/library/typing.html#typing.Annotated diff --git a/docs/concepts/forward_annotations.md b/docs/concepts/forward_annotations.md index a6c638d8c64..37fe9034212 100644 --- a/docs/concepts/forward_annotations.md +++ b/docs/concepts/forward_annotations.md @@ -144,7 +144,7 @@ print(Node.model_validate(node_data)) #> id=1 children=[Node(id=2, children=[Node(id=3, children=[])])] ``` -Similarly, if Pydantic encounters a recursive reference during _serialization_, rather than waiting +Similarly, if Pydantic encounters a recursive reference during *serialization*, rather than waiting for the maximum recursion depth to be exceeded, a [`ValueError`][] is raised immediately: ```python diff --git a/docs/concepts/json.md b/docs/concepts/json.md index 5a9ffe4d67e..b216ce0e69c 100644 --- a/docs/concepts/json.md +++ b/docs/concepts/json.md @@ -204,7 +204,6 @@ Using the string caching feature results in performance improvements, but increa 3. There is some overhead to looking up the cache, which is normally worth it to avoid constructing strings. However, if you know there will be very few repeated strings in your data, you might get a performance boost by disabling this setting with `cache_strings=False`. - ## JSON Serialization ??? api "API Documentation" diff --git a/docs/concepts/json_schema.md b/docs/concepts/json_schema.md index 83851a34fb7..b982476edcd 100644 --- a/docs/concepts/json_schema.md +++ b/docs/concepts/json_schema.md @@ -28,7 +28,6 @@ Use the following functions to generate JSON schema: [`TypeAdapter.json_schema`][pydantic.type_adapter.TypeAdapter.json_schema], calling `json.dumps(TypeAdapter().json_schema())` returns a valid JSON string. - !!! tip Pydantic offers support for both of: @@ -297,7 +296,6 @@ print(Model.model_json_schema(mode='serialization')) """ ``` - ## Customizing JSON Schema The generated JSON schema can be customized at both the field level and model level via: @@ -1048,7 +1046,6 @@ print(json.dumps(TypeAdapter(Person).json_schema(), indent=2)) """ ``` - ### Using `field_title_generator` The `field_title_generator` parameter can be used to programmatically generate the title for a field based on its name and info. @@ -1153,7 +1150,6 @@ The field schema mapping from Python or Pydantic to JSON schema is done as follo {{ schema_mappings_table }} - ## Top-level schema generation You can also generate a top-level JSON schema that only includes a list of models and related diff --git a/docs/concepts/models.md b/docs/concepts/models.md index bbdfdac1201..49021140e80 100644 --- a/docs/concepts/models.md +++ b/docs/concepts/models.md @@ -14,7 +14,7 @@ You can find more discussion of this in the [Dataclasses](dataclasses.md) sectio Untrusted data can be passed to a model and, after parsing and validation, Pydantic guarantees that the fields of the resultant model instance will conform to the field types defined on the model. -!!! note "Validation — a _deliberate_ misnomer" +!!! note "Validation — a *deliberate* misnomer"

TL;DR

We use the term "validation" to refer to the process of instantiating a model (or other type) that adheres to specified types and @@ -57,8 +57,8 @@ of the resultant model instance will conform to the field types defined on the m Pydantic relies heavily on the existing Python typing constructs to define models. If you are not familiar with those, the following resources can be useful: - - The [Type System Guides](https://typing.readthedocs.io/en/latest/guides/index.html) - - The [mypy documentation](https://mypy.readthedocs.io/en/latest/) + * The [Type System Guides](https://typing.readthedocs.io/en/latest/guides/index.html) + * The [mypy documentation](https://mypy.readthedocs.io/en/latest/) ```python {group="basic-model"} from pydantic import BaseModel, ConfigDict @@ -225,6 +225,7 @@ Besides, using these abstract types can also lead to [poor validation performanc will avoid unnecessary checks. + [](){#extra-fields} ## Extra data @@ -264,9 +265,9 @@ assert m.__pydantic_extra__ == {'y': 'a'} The configuration can take three values: -- `'ignore'`: Providing extra data is ignored (the default). -- `'forbid'`: Providing extra data is not permitted. -- `'allow'`: Providing extra data is allowed and stored in the `__pydantic_extra__` dictionary attribute. +* `'ignore'`: Providing extra data is ignored (the default). +* `'forbid'`: Providing extra data is not permitted. +* `'allow'`: Providing extra data is allowed and stored in the `__pydantic_extra__` dictionary attribute. The `__pydantic_extra__` can explicitly be annotated to provide validation for extra fields. For more details, refer to the [`extra`][pydantic.ConfigDict.extra] API documentation. @@ -687,6 +688,7 @@ Here are some additional notes on the behavior of [`model_construct()`][pydantic * No `__init__` method from the model or any of its parent classes will be called, even when a custom `__init__` method is defined. !!! note "On [extra data](#extra-data) behavior with [`model_construct()`][pydantic.main.BaseModel.model_construct]" + * For models with [`extra`][pydantic.ConfigDict.extra] set to `'allow'`, data not corresponding to fields will be correctly stored in the `__pydantic_extra__` dictionary and saved to the model's `__dict__` attribute. * For models with [`extra`][pydantic.ConfigDict.extra] set to `'ignore'`, data not corresponding to fields will be ignored — that is, @@ -1198,7 +1200,6 @@ or a default value (as per [PEP 696](https://peps.python.org/pep-0696/)) is bein will be used for both validation and serialization if the type variable is not parametrized. You can override this behavior using [`SerializeAsAny`](./serialization.md#serializeasany-annotation): - ```python from typing import Generic @@ -1279,8 +1280,8 @@ class StaticFoobarModel(BaseModel): Field definitions are specified as keyword arguments, and should either be: -- A single element, representing the type annotation of the field. -- A two-tuple, the first element being the type and the second element the assigned value +* A single element, representing the type annotation of the field. +* A two-tuple, the first element being the type and the second element the assigned value (either a default or the [`Field()`][pydantic.Field] function). Here is a more advanced example: @@ -1366,12 +1367,11 @@ except ValidationError as e: internally, Pydantic gathers all members into a namespace and mimics the normal creation of a class using the [`types` module utilities](https://docs.python.org/3/library/types.html#dynamic-type-creation). - !!! note To pickle a dynamically created model: - - the model must be defined globally - - the `__module__` argument must be provided + * the model must be defined globally + * the `__module__` argument must be provided ## `RootModel` and custom root types @@ -1453,7 +1453,6 @@ print(my_pets.describe()) #> Pets: dog, cat ``` - ## Faux immutability Models can be configured to be immutable via `model_config['frozen'] = True`. When this is set, attempting to change the @@ -1668,7 +1667,7 @@ To be included in the signature, a field's alias or name must be a valid Python Pydantic will prioritize a field's alias over its name when generating the signature, but may use the field name if the alias is not a valid Python identifier. -If a field's alias and name are _both_ not valid identifiers (which may be possible through exotic use of `create_model`), +If a field's alias and name are *both* not valid identifiers (which may be possible through exotic use of `create_model`), a `**data` argument will be added. In addition, the `**data` argument will always be present in the signature if `model_config['extra'] == 'allow'`. diff --git a/docs/concepts/serialization.md b/docs/concepts/serialization.md index 4d2eee4ec38..e1cd1049135 100644 --- a/docs/concepts/serialization.md +++ b/docs/concepts/serialization.md @@ -30,7 +30,6 @@ See the available [parameters][pydantic.main.BaseModel.model_dump] for more info and its subclasses will have the `root` field value dumped directly, without a wrapping dictionary. This is also done recursively. - !!! note You can use [computed fields](../api/fields.md#pydantic.fields.computed_field) to include `property` and `cached_property` data in the `model.model_dump(...)` output. @@ -176,16 +175,16 @@ for name, value in m: #> bar: whatever=123 ``` -Note also that [`RootModel`](models.md#rootmodel-and-custom-root-types) _does_ get converted to a dictionary with the key `'root'`. +Note also that [`RootModel`](models.md#rootmodel-and-custom-root-types) *does* get converted to a dictionary with the key `'root'`. ## Custom serializers Pydantic provides several [functional serializers][pydantic.functional_serializers] to customise how a model is serialized to a dictionary or JSON. -- [`@field_serializer`][pydantic.functional_serializers.field_serializer] -- [`@model_serializer`][pydantic.functional_serializers.model_serializer] -- [`PlainSerializer`][pydantic.functional_serializers.PlainSerializer] -- [`WrapSerializer`][pydantic.functional_serializers.WrapSerializer] +* [`@field_serializer`][pydantic.functional_serializers.field_serializer] +* [`@model_serializer`][pydantic.functional_serializers.model_serializer] +* [`PlainSerializer`][pydantic.functional_serializers.PlainSerializer] +* [`WrapSerializer`][pydantic.functional_serializers.WrapSerializer] Serialization can be customised on a field using the [`@field_serializer`][pydantic.functional_serializers.field_serializer] decorator, and on a model using the @@ -236,8 +235,8 @@ In addition, [`PlainSerializer`][pydantic.functional_serializers.PlainSerializer Both serializers accept optional arguments including: -- `return_type` specifies the return type for the function. If omitted it will be inferred from the type annotation. -- `when_used` specifies when this serializer should be used. Accepts a string with values 'always', +* `return_type` specifies the return type for the function. If omitted it will be inferred from the type annotation. +* `when_used` specifies when this serializer should be used. Accepts a string with values 'always', 'unless-none', 'json', and 'json-unless-none'. Defaults to 'always'. `PlainSerializer` uses a simple function to modify the output of serialization. @@ -296,6 +295,7 @@ print(MyModel(x=1234).model_dump(mode='json')) While the return value of `.model_dump()` can usually be described as `dict[str, Any]`, through the use of `@model_serializer` you can actually cause it to return a value that doesn't match this signature: + ```python from pydantic import BaseModel, model_serializer @@ -398,7 +398,7 @@ print(m.model_dump_json()) When using fields whose annotations are themselves struct-like types (e.g., `BaseModel` subclasses, dataclasses, etc.), the default behavior is to serialize the attribute value as though it was an instance of the annotated type, -even if it is a subclass. More specifically, only the fields from the _annotated_ type will be included in the +even if it is a subclass. More specifically, only the fields from the *annotated* type will be included in the dumped object: ```python @@ -425,6 +425,7 @@ print(m) print(m.model_dump()) # note: the password field is not included #> {'user': {'name': 'pydantic'}} ``` + !!! warning "Migration Warning" This behavior is different from how things worked in Pydantic V1, where we would always include all (subclass) fields when recursively dumping models to dicts. The motivation behind this change in @@ -451,7 +452,7 @@ If you want v1-style duck-typing serialization behavior, you can use a runtime s We discuss these options below in more detail: -#### `SerializeAsAny` annotation: +#### `SerializeAsAny` annotation If you want duck-typing serialization behavior, this can be done using the `SerializeAsAny` annotation on a type: diff --git a/docs/concepts/strict_mode.md b/docs/concepts/strict_mode.md index b2bda873c64..fb8dfd4c60c 100644 --- a/docs/concepts/strict_mode.md +++ b/docs/concepts/strict_mode.md @@ -42,7 +42,7 @@ There are various ways to get strict-mode validation while using Pydantic, which `TypeAdapter.validate_python`, and similar for JSON * [Using `Field(strict=True)`](#strict-mode-with-field) with fields of a `BaseModel`, `dataclass`, or `TypedDict` * [Using `pydantic.types.Strict` as a type annotation](#strict-mode-with-annotated-strict) on a field - * Pydantic provides some type aliases that are already annotated with `Strict`, such as `pydantic.types.StrictInt` + * Pydantic provides some type aliases that are already annotated with `Strict`, such as `pydantic.types.StrictInt` * [Using `ConfigDict(strict=True)`](#strict-mode-with-configdict) ## Type coercions in strict mode @@ -118,6 +118,7 @@ except ValidationError as exc: ``` Note this also works even when using more "complex" types in `TypeAdapter`: + ```python from dataclasses import dataclass @@ -192,7 +193,6 @@ except ValidationError as exc: """ ``` - ## Strict mode with `Field` For individual fields on a model, you can [set `strict=True` on the field](../api/fields.md#pydantic.fields.Field). @@ -439,7 +439,7 @@ you should use the `config` keyword argument to the `@pydantic.dataclasses.datac When possible, you can achieve nested strict mode for vanilla dataclasses or `TypedDict` subclasses by annotating fields with the [`pydantic.types.Strict` annotation](#strict-mode-with-annotated-strict). -However, if this is _not_ possible (e.g., when working with third-party types), you can set the config that Pydantic +However, if this is *not* possible (e.g., when working with third-party types), you can set the config that Pydantic should use for the type by setting the `__pydantic_config__` attribute on the type: ```python diff --git a/docs/concepts/type_adapter.md b/docs/concepts/type_adapter.md index 710c30b6e3c..2a8db875353 100644 --- a/docs/concepts/type_adapter.md +++ b/docs/concepts/type_adapter.md @@ -91,7 +91,6 @@ handle as fields of a [`BaseModel`][pydantic.main.BaseModel]. schema. This comes with some non-trivial overhead, so it is recommended to create a `TypeAdapter` for a given type just once and reuse it in loops or other performance-critical code. - ## Rebuilding a `TypeAdapter`'s schema In v2.10+, [`TypeAdapter`][pydantic.type_adapter.TypeAdapter]'s support deferred schema building and manual rebuilds. This is helpful for the case of: diff --git a/docs/concepts/types.md b/docs/concepts/types.md index 4b6ccfbaffd..85d51140816 100644 --- a/docs/concepts/types.md +++ b/docs/concepts/types.md @@ -9,13 +9,11 @@ If no existing type suits your purpose you can also implement your [own Pydantic The following sections describe the types supported by Pydantic. - * [Standard Library Types](../api/standard_library_types.md) — types from the Python standard library. * [Strict Types](#strict-types) — types that enable you to prevent coercion from compatible types. * [Custom Data Types](#custom-types) — create your own custom data types. * [Field Type Conversions](../concepts/conversion_table.md) — strict and lax conversion between different field types. - ## Type conversion During validation, Pydantic can coerce data into expected types. @@ -24,16 +22,15 @@ There are two modes of coercion: strict and lax. See [Conversion Table](../conce See [Strict mode](../concepts/strict_mode.md) and [Strict Types](#strict-types) for details on enabling strict coercion. - ## Strict Types Pydantic provides the following strict types: -- [`StrictBool`][pydantic.types.StrictBool] -- [`StrictBytes`][pydantic.types.StrictBytes] -- [`StrictFloat`][pydantic.types.StrictFloat] -- [`StrictInt`][pydantic.types.StrictInt] -- [`StrictStr`][pydantic.types.StrictStr] +* [`StrictBool`][pydantic.types.StrictBool] +* [`StrictBytes`][pydantic.types.StrictBytes] +* [`StrictFloat`][pydantic.types.StrictFloat] +* [`StrictInt`][pydantic.types.StrictInt] +* [`StrictStr`][pydantic.types.StrictStr] These types will only pass validation when the validated value is of the respective type or is a subtype of that type. @@ -41,27 +38,26 @@ These types will only pass validation when the validated value is of the respect This behavior is also exposed via the `strict` field of the constrained types and can be combined with a multitude of complex validation rules. See the individual type signatures for supported arguments. -- [`conbytes()`][pydantic.types.conbytes] -- [`condate()`][pydantic.types.condate] -- [`condecimal()`][pydantic.types.condecimal] -- [`confloat()`][pydantic.types.confloat] -- [`confrozenset()`][pydantic.types.confrozenset] -- [`conint()`][pydantic.types.conint] -- [`conlist()`][pydantic.types.conlist] -- [`conset()`][pydantic.types.conset] -- [`constr()`][pydantic.types.constr] +* [`conbytes()`][pydantic.types.conbytes] +* [`condate()`][pydantic.types.condate] +* [`condecimal()`][pydantic.types.condecimal] +* [`confloat()`][pydantic.types.confloat] +* [`confrozenset()`][pydantic.types.confrozenset] +* [`conint()`][pydantic.types.conint] +* [`conlist()`][pydantic.types.conlist] +* [`conset()`][pydantic.types.conset] +* [`constr()`][pydantic.types.constr] The following caveats apply: -- `StrictBytes` (and the `strict` option of `conbytes()`) will accept both `bytes`, +* `StrictBytes` (and the `strict` option of `conbytes()`) will accept both `bytes`, and `bytearray` types. -- `StrictInt` (and the `strict` option of `conint()`) will not accept `bool` types, +* `StrictInt` (and the `strict` option of `conint()`) will not accept `bool` types, even though `bool` is a subclass of `int` in Python. Other subclasses will work. -- `StrictFloat` (and the `strict` option of `confloat()`) will not accept `int`. +* `StrictFloat` (and the `strict` option of `confloat()`) will not accept `int`. Besides the above, you can also have a [`FiniteFloat`][pydantic.types.FiniteFloat] type that will only accept finite values (i.e. not `inf`, `-inf` or `nan`). - ## Custom Types You can also define your own custom data types. There are several ways to achieve it. @@ -95,11 +91,12 @@ except ValidationError as exc: 1. Note that you can also use constraints from the [annotated-types](https://github.com/annotated-types/annotated-types) library to make this Pydantic-agnostic: - ```python {test="skip" lint="skip"} - from annotated_types import Gt - PositiveInt = Annotated[int, Gt(0)] - ``` + ```python {test="skip" lint="skip"} + from annotated_types import Gt + + PositiveInt = Annotated[int, Gt(0)] + ``` #### Adding validation and serialization @@ -194,10 +191,10 @@ The above examples make use of *implicit* type aliases, assigned to a variable. has no way of knowing the name of the variable it was assigned to, and this can be problematic for two reasons: -- The [JSON Schema](./json_schema.md) of the alias won't be converted into a +* The [JSON Schema](./json_schema.md) of the alias won't be converted into a [definition](https://json-schema.org/understanding-json-schema/structuring#defs). This is mostly useful when you are using the alias more than once in a model definition. -- In most cases, [recursive type aliases](#named-recursive-types) won't work. +* In most cases, [recursive type aliases](#named-recursive-types) won't work. By leveraging the new [`type` statement](https://typing.readthedocs.io/en/latest/spec/aliases.html#type-statement) (introduced in [PEP 695]), you can define aliases as follows: @@ -243,7 +240,6 @@ By leveraging the new [`type` statement](https://typing.readthedocs.io/en/latest 1. If `PositiveIntList` were to be defined as an implicit type alias, its definition would have been duplicated in both `'x'` and `'y'`. - === "Python 3.12 and above (new syntax)" ```python {requires="3.12" upgrade="skip" lint="skip"} @@ -1012,7 +1008,3 @@ m = MyModel(my_field=1) print(m.my_field) #> <1 'my_field'> ``` - -[PEP 593]: https://peps.python.org/pep-0593/ -[PEP 695]: https://peps.python.org/pep-0695/ -[typing-extensions]: https://github.com/python/typing_extensions diff --git a/docs/concepts/unions.md b/docs/concepts/unions.md index 828f7d790de..3ce705092bd 100644 --- a/docs/concepts/unions.md +++ b/docs/concepts/unions.md @@ -118,9 +118,9 @@ In this mode, pydantic attempts to select the best match for the input from the For `exactness`, Pydantic scores a match of a union member into one of the following three groups (from highest score to lowest score): - - An exact type match, for example an `int` input to a `float | int` union validation is an exact type match for the `int` member - - Validation would have succeeded in [`strict` mode](../concepts/strict_mode.md) - - Validation would have succeeded in lax mode + * An exact type match, for example an `int` input to a `float | int` union validation is an exact type match for the `int` member + * Validation would have succeeded in [`strict` mode](../concepts/strict_mode.md) + * Validation would have succeeded in lax mode The union match which produced the highest exactness score will be considered the best match. @@ -137,7 +137,7 @@ In this mode, pydantic attempts to select the best match for the input from the === "All other data types" 1. Union members are attempted left to right, with any successful matches scored into one of the three exactness categories described above. - - If validation succeeds with an exact type match, that member is returned immediately and following members will not be attempted. + * If validation succeeds with an exact type match, that member is returned immediately and following members will not be attempted. 2. If validation succeeded on at least one member as a "strict" match, the leftmost of those "strict" matches is returned. 3. If validation succeeded on at least one member in "lax" mode, the leftmost match is returned. 4. Validation failed on all the members, return all the errors. diff --git a/docs/concepts/validators.md b/docs/concepts/validators.md index 8bc364a2edd..41de519e28e 100644 --- a/docs/concepts/validators.md +++ b/docs/concepts/validators.md @@ -7,22 +7,22 @@ and ensure the integrity of your data.
- - Field validators + * Field validators --- - - [field *after* validators](#field-after-validator) - - [field *before* validators](#field-before-validator) - - [field *plain* validators](#field-plain-validator) - - [field *wrap* validators](#field-wrap-validator) + * [field *after* validators](#field-after-validator) + * [field *before* validators](#field-before-validator) + * [field *plain* validators](#field-plain-validator) + * [field *wrap* validators](#field-wrap-validator) - - Model validators + * Model validators --- - - [model *before* validators](#model-before-validator) - - [model *after* validators](#model-after-validator) - - [model *wrap* validators](#model-wrap-validator) + * [model *before* validators](#model-before-validator) + * [model *after* validators](#model-after-validator) + * [model *wrap* validators](#model-wrap-validator)
@@ -43,9 +43,8 @@ In its simplest form, a field validator is a callable taking the value to be val [annotated pattern](./fields.md#the-annotated-pattern) or using the [`field_validator()`][pydantic.field_validator] decorator, applied on a [class method][classmethod]: -[](){#field-after-validator} - -- __*After* validators__: run after Pydantic's internal validation. They are generally more type safe and thus easier to implement. +* ***After* validators**: run after Pydantic's internal validation. They are generally more type safe and thus easier to implement. +{#field-after-validator} === "Annotated pattern" @@ -158,13 +157,12 @@ In its simplest form, a field validator is a callable taking the value to be val 1. `'after'` is the default mode for the decorator, and can be omitted. -[](){#field-before-validator} - -- __*Before* validators__: run before Pydantic's internal parsing and validation (e.g. coercion of a `str` to an `int`). +* ***Before* validators**: run before Pydantic's internal parsing and validation (e.g. coercion of a `str` to an `int`). These are more flexible than [*after* validators](#field-after-validator), but they also have to deal with the raw input, which in theory could be any arbitrary object. You should also avoid mutating the value directly if you are raising a [validation error](#raising-validation-errors) later in your validator function, as the mutated value may be passed to other validators if using [unions](./unions.md). + {#field-before-validator} The value returned from this callable is then validated against the provided type annotation by Pydantic. @@ -253,10 +251,9 @@ In its simplest form, a field validator is a callable taking the value to be val 3. Pydantic still performs validation against the `int` type, no matter if our `ensure_list` validator did operations on the original input type. -[](){#field-plain-validator} - -- __*Plain* validators__: act similarly to *before* validators but they **terminate validation immediately** after returning, +* ***Plain* validators**: act similarly to *before* validators but they **terminate validation immediately** after returning, so no further validators are called and Pydantic does not do any of its internal validation against the field type. + {#field-plain-validator} === "Annotated pattern" @@ -313,11 +310,10 @@ In its simplest form, a field validator is a callable taking the value to be val 1. Although `'invalid'` shouldn't validate against the `int` type, Pydantic accepts the input. -[](){#field-wrap-validator} - -- __*Wrap* validators__: are the most flexible of all. You can run code before or after Pydantic and other validators +* ***Wrap* validators**: are the most flexible of all. You can run code before or after Pydantic and other validators process the input, or you can terminate validation immediately, either by returning the value early or by raising an error. + {#field-wrap-validator} Such validators must be defined with a **mandatory** extra `handler` parameter: a callable taking the value to be validated as an argument. Internally, this handler will delegate validation of the value to Pydantic. You are free to wrap the call @@ -453,9 +449,9 @@ class Model(BaseModel): Here are a couple additional notes about the decorator usage: -- If you want the validator to apply to all fields (including the ones defined in subclasses), you can pass +* If you want the validator to apply to all fields (including the ones defined in subclasses), you can pass `'*'` as the field name argument. -- By default, the decorator will ensure the provided field name(s) are defined on the model. If you want to +* By default, the decorator will ensure the provided field name(s) are defined on the model. If you want to disable this check during class creation, you can do so by passing `False` to the `check_fields` argument. This is useful when the field validator is defined on a base class, and the field is expected to be set on subclasses. @@ -470,52 +466,52 @@ decorator. **Three** different types of model validators can be used: -[](){#model-after-validator} - -- __*After* validators__: run after the whole model has been validated. As such, they are defined as +* ***After* validators**: run after the whole model has been validated. As such, they are defined as *instance* methods and can be seen as post-initialization hooks. Important note: the validated instance should be returned. - ```python - from typing_extensions import Self + {#model-after-validator} - from pydantic import BaseModel, model_validator + ```python + from typing_extensions import Self + from pydantic import BaseModel, model_validator - class UserModel(BaseModel): - username: str - password: str - password_repeat: str - @model_validator(mode='after') - def check_passwords_match(self) -> Self: - if self.password != self.password_repeat: - raise ValueError('Passwords do not match') - return self - ``` + class UserModel(BaseModel): + username: str + password: str + password_repeat: str -[](){#model-before-validator} + @model_validator(mode='after') + def check_passwords_match(self) -> Self: + if self.password != self.password_repeat: + raise ValueError('Passwords do not match') + return self + ``` -- __*Before* validators__: are run before the model is instantiated. These are more flexible than *after* validators, +* ***Before* validators**: are run before the model is instantiated. These are more flexible than *after* validators, but they also have to deal with the raw input, which in theory could be any arbitrary object. You should also avoid mutating the value directly if you are raising a [validation error](#raising-validation-errors) later in your validator function, as the mutated value may be passed to other validators if using [unions](./unions.md). - ```python - from typing import Any + {#model-before-validator} - from pydantic import BaseModel, model_validator + ```python + from typing import Any + from pydantic import BaseModel, model_validator - class UserModel(BaseModel): - username: str - @model_validator(mode='before') - @classmethod - def check_card_number_not_present(cls, data: Any) -> Any: # (1)! - if isinstance(data, dict): # (2)! - if 'card_number' in data: - raise ValueError("'card_number' should not be included") - return data - ``` + class UserModel(BaseModel): + username: str + + @model_validator(mode='before') + @classmethod + def check_card_number_not_present(cls, data: Any) -> Any: # (1)! + if isinstance(data, dict): # (2)! + if 'card_number' in data: + raise ValueError("'card_number' should not be included") + return data + ``` 1. Notice the use of [`Any`][typing.Any] as a type hint for `data`. *Before* validators take the raw input, which can be anything. @@ -523,32 +519,32 @@ decorator. this is not always the case. For instance, if the [`from_attributes`][pydantic.ConfigDict.from_attributes] configuration value is set, you might receive an arbitrary class instance for the `data` argument. -[](){#model-wrap-validator} - -- __*Wrap* validators__: are the most flexible of all. You can run code before or after Pydantic and +* ***Wrap* validators**: are the most flexible of all. You can run code before or after Pydantic and other validators process the input data, or you can terminate validation immediately, either by returning the data early or by raising an error. - ```python {lint="skip"} - import logging - from typing import Any + {#model-wrap-validator} - from typing_extensions import Self + ```python {lint="skip"} + import logging + from typing import Any - from pydantic import BaseModel, ModelWrapValidatorHandler, ValidationError, model_validator + from typing_extensions import Self + from pydantic import BaseModel, ModelWrapValidatorHandler, ValidationError, model_validator - class UserModel(BaseModel): - username: str - @model_validator(mode='wrap') - @classmethod - def log_failed_validation(cls, data: Any, handler: ModelWrapValidatorHandler[Self]) -> Self: - try: - return handler(data) - except ValidationError: - logging.error('Model %s failed to validate with data %s', cls, data) - raise - ``` + class UserModel(BaseModel): + username: str + + @model_validator(mode='wrap') + @classmethod + def log_failed_validation(cls, data: Any, handler: ModelWrapValidatorHandler[Self]) -> Self: + try: + return handler(data) + except ValidationError: + logging.error('Model %s failed to validate with data %s', cls, data) + raise + ``` !!! note "On inheritance" A model validator defined in a base class will be called during the validation of a subclass instance. @@ -559,51 +555,52 @@ decorator. To raise a validation error, three types of exceptions can be used: -- [`ValueError`][]: this is the most common exception raised inside validators. -- [`AssertionError`][]: using the [assert][] statement also works, but be aware that these statements +* [`ValueError`][]: this is the most common exception raised inside validators. +* [`AssertionError`][]: using the [assert][] statement also works, but be aware that these statements are skipped when Python is run with the [-O][] optimization flag. -- [`PydanticCustomError`][pydantic_core.PydanticCustomError]: a bit more verbose, but provides extra flexibility: - ```python - from pydantic_core import PydanticCustomError - - from pydantic import BaseModel, ValidationError, field_validator - - - class Model(BaseModel): - x: int - - @field_validator('x', mode='after') - @classmethod - def validate_x(cls, v: int) -> int: - if v % 42 == 0: - raise PydanticCustomError( - 'the_answer_error', - '{number} is the answer!', - {'number': v}, - ) - return v - - - try: - Model(x=42 * 2) - except ValidationError as e: - print(e) - """ - 1 validation error for Model - x - 84 is the answer! [type=the_answer_error, input_value=84, input_type=int] - """ - ``` +* [`PydanticCustomError`][pydantic_core.PydanticCustomError]: a bit more verbose, but provides extra flexibility: + + ```python + from pydantic_core import PydanticCustomError + + from pydantic import BaseModel, ValidationError, field_validator + + + class Model(BaseModel): + x: int + + @field_validator('x', mode='after') + @classmethod + def validate_x(cls, v: int) -> int: + if v % 42 == 0: + raise PydanticCustomError( + 'the_answer_error', + '{number} is the answer!', + {'number': v}, + ) + return v + + + try: + Model(x=42 * 2) + except ValidationError as e: + print(e) + """ + 1 validation error for Model + x + 84 is the answer! [type=the_answer_error, input_value=84, input_type=int] + """ + ``` ## Validation info Both the field and model validators callables (in all modes) can optionally take an extra [`ValidationInfo`][pydantic.ValidationInfo] argument, providing useful extra information, such as: -- [already validated data](#validation-data) -- [user defined context](#validation-context) -- the current validation mode: either `'python'` or `'json'` (see the [`mode`][pydantic.ValidationInfo.mode] property) -- the current field name (see the [`field_name`][pydantic.ValidationInfo.field_name] property). +* [already validated data](#validation-data) +* [user defined context](#validation-context) +* the current validation mode: either `'python'` or `'json'` (see the [`mode`][pydantic.ValidationInfo.mode] property) +* the current field name (see the [`field_name`][pydantic.ValidationInfo.field_name] property). ### Validation data @@ -749,83 +746,86 @@ logic applies. Pydantic provides a few special utilities that can be used to customize validation. -- [`InstanceOf`][pydantic.functional_validators.InstanceOf] can be used to validate that a value is an instance of a given class. - ```python - from pydantic import BaseModel, InstanceOf, ValidationError +* [`InstanceOf`][pydantic.functional_validators.InstanceOf] can be used to validate that a value is an instance of a given class. + + ```python + from pydantic import BaseModel, InstanceOf, ValidationError + + class Fruit: + def __repr__(self): + return self.__class__.__name__ - class Fruit: - def __repr__(self): - return self.__class__.__name__ + class Banana(Fruit): ... - class Banana(Fruit): ... + class Apple(Fruit): ... - class Apple(Fruit): ... + class Basket(BaseModel): + fruits: list[InstanceOf[Fruit]] - class Basket(BaseModel): - fruits: list[InstanceOf[Fruit]] + print(Basket(fruits=[Banana(), Apple()])) + #> fruits=[Banana, Apple] + try: + Basket(fruits=[Banana(), 'Apple']) + except ValidationError as e: + print(e) + """ + 1 validation error for Basket + fruits.1 + Input should be an instance of Fruit [type=is_instance_of, input_value='Apple', input_type=str] + """ + ``` - print(Basket(fruits=[Banana(), Apple()])) - #> fruits=[Banana, Apple] - try: - Basket(fruits=[Banana(), 'Apple']) - except ValidationError as e: - print(e) - """ - 1 validation error for Basket - fruits.1 - Input should be an instance of Fruit [type=is_instance_of, input_value='Apple', input_type=str] - """ - ``` +* [`SkipValidation`][pydantic.functional_validators.SkipValidation] can be used to skip validation on a field. -- [`SkipValidation`][pydantic.functional_validators.SkipValidation] can be used to skip validation on a field. - ```python - from pydantic import BaseModel, SkipValidation + ```python + from pydantic import BaseModel, SkipValidation - class Model(BaseModel): - names: list[SkipValidation[str]] + class Model(BaseModel): + names: list[SkipValidation[str]] - m = Model(names=['foo', 'bar']) - print(m) - #> names=['foo', 'bar'] + m = Model(names=['foo', 'bar']) + print(m) + #> names=['foo', 'bar'] - m = Model(names=['foo', 123]) # (1)! - print(m) - #> names=['foo', 123] - ``` + m = Model(names=['foo', 123]) # (1)! + print(m) + #> names=['foo', 123] + ``` 1. Note that the validation of the second item is skipped. If it has the wrong type it will emit a warning during serialization. -- [`PydanticUseDefault`][pydantic_core.PydanticUseDefault] can be used to notify Pydantic that the default value +* [`PydanticUseDefault`][pydantic_core.PydanticUseDefault] can be used to notify Pydantic that the default value should be used. - ```python - from typing import Annotated, Any - from pydantic_core import PydanticUseDefault + ```python + from typing import Annotated, Any - from pydantic import BaseModel, BeforeValidator + from pydantic_core import PydanticUseDefault + from pydantic import BaseModel, BeforeValidator - def default_if_none(value: Any) -> Any: - if value is None: - raise PydanticUseDefault() - return value + + def default_if_none(value: Any) -> Any: + if value is None: + raise PydanticUseDefault() + return value - class Model(BaseModel): - name: Annotated[str, BeforeValidator(default_if_none)] = 'default_name' + class Model(BaseModel): + name: Annotated[str, BeforeValidator(default_if_none)] = 'default_name' - print(Model(name=None)) - #> name='default_name' - ``` + print(Model(name=None)) + #> name='default_name' + ``` ## JSON Schema and field validators diff --git a/docs/contributing.md b/docs/contributing.md index 48dc2da3c13..86012084fb3 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -10,7 +10,9 @@ To make it as simple as possible for us to help you, please include the output o ```bash python -c "import pydantic.version; print(pydantic.version.version_info())" ``` + If you're using Pydantic prior to **v2.0** please use: + ```bash python -c "import pydantic.utils; print(pydantic.utils.version_info())" ``` @@ -48,10 +50,10 @@ Because of this, setting up and running the tests should be very simple. You'll need the following prerequisites: -- Any Python version between **Python 3.9 and 3.12** -- [**uv**](https://docs.astral.sh/uv/getting-started/installation/) or other virtual environment tool -- **git** -- **make** +* Any Python version between **Python 3.9 and 3.12** +* [**uv**](https://docs.astral.sh/uv/getting-started/installation/) or other virtual environment tool +* **git** +* **make** ### Installation and setup @@ -143,7 +145,6 @@ Please follow the pull request template and fill in as much information as possi When your pull request is ready for review, add a comment with the message "please review" and we'll take a look as soon as we can. - ## Documentation style Documentation is written in Markdown and built using [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/). API documentation is build from docstrings using [mkdocstrings](https://mkdocstrings.github.io/). @@ -152,10 +153,10 @@ Documentation is written in Markdown and built using [Material for MkDocs](https When contributing to Pydantic, please make sure that all code is well documented. The following should be documented using properly formatted docstrings: -- Modules -- Class definitions -- Function definitions -- Module-level variables +* Modules +* Class definitions +* Function definitions +* Module-level variables Pydantic uses [Google-style docstrings](https://google.github.io/styleguide/pyguide.html#38-comments-and-docstrings) formatted according to [PEP 257](https://www.python.org/dev/peps/pep-0257/) guidelines. (See [Example Google Style Python Docstrings](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html) for further examples.) @@ -260,10 +261,10 @@ Pydantic has a badge that you can use to show that your project uses Pydantic. Y To be able to identify regressions early during development, Pydantic runs tests on various third-party projects using Pydantic. We consider adding support for testing new open source projects (that rely heavily on Pydantic) if your said project matches some of the following criteria: -- The project is actively maintained. -- The project makes use of Pydantic internals (e.g. relying on the [`BaseModel`][pydantic.BaseModel] metaclass, typing utilities). -- The project is popular enough (although small projects can still be included depending on how Pydantic is being used). -- The project CI is simple enough to be ported into Pydantic's testing workflow. +* The project is actively maintained. +* The project makes use of Pydantic internals (e.g. relying on the [`BaseModel`][pydantic.BaseModel] metaclass, typing utilities). +* The project is popular enough (although small projects can still be included depending on how Pydantic is being used). +* The project CI is simple enough to be ported into Pydantic's testing workflow. If your project meets some of these criteria, you can [open feature request][open feature request] to discuss the inclusion of your project. diff --git a/docs/errors/errors.md b/docs/errors/errors.md index 74661152cbd..8eac08bb71b 100644 --- a/docs/errors/errors.md +++ b/docs/errors/errors.md @@ -141,8 +141,8 @@ except ValidationError as e: Pydantic attempts to provide useful default error messages for validation and usage errors, which can be found here: -- [Validation Errors](validation_errors.md): Errors that happen during data validation. -- [Usage Errors](usage_errors.md): Errors that happen when using Pydantic. +* [Validation Errors](validation_errors.md): Errors that happen during data validation. +* [Usage Errors](usage_errors.md): Errors that happen when using Pydantic. ### Customize error messages diff --git a/docs/errors/usage_errors.md b/docs/errors/usage_errors.md index 259e1ddcbb6..12bdcb44629 100644 --- a/docs/errors/usage_errors.md +++ b/docs/errors/usage_errors.md @@ -1100,7 +1100,7 @@ class A: The above snippet results in the following error during schema building for the `A` dataclass: -``` +```output pydantic.errors.PydanticUserError: Field a has `init=False` and dataclass has config setting `extra="allow"`. This combination is not allowed. ``` diff --git a/docs/errors/validation_errors.md b/docs/errors/validation_errors.md index 048e959e67c..0d09a4fb9cf 100644 --- a/docs/errors/validation_errors.md +++ b/docs/errors/validation_errors.md @@ -116,7 +116,6 @@ except ValidationError as exc: #> 'bytes_invalid_encoding' ``` - ## `bytes_too_long` This error is raised when the length of a `bytes` value is greater than the field's `max_length` constraint: diff --git a/docs/examples/custom_validators.md b/docs/examples/custom_validators.md index aa92d64f90a..ae9b6803729 100644 --- a/docs/examples/custom_validators.md +++ b/docs/examples/custom_validators.md @@ -98,7 +98,6 @@ except ValidationError as ve: We can also enforce UTC offset constraints in a similar way. Assuming we have a `lower_bound` and an `upper_bound`, we can create a custom validator to ensure our `datetime` has a UTC offset that is inclusive within the boundary we define: - ```python import datetime as dt from dataclasses import dataclass diff --git a/docs/examples/files.md b/docs/examples/files.md index 788b0a728f2..9a223d1c018 100644 --- a/docs/examples/files.md +++ b/docs/examples/files.md @@ -50,6 +50,7 @@ Let's say we have the following `.json` file: ``` This data is flawed for three reasons: + 1. It's missing the `name` field. 2. The `age` field is negative. 3. The `email` field is not a valid email address. diff --git a/docs/examples/queues.md b/docs/examples/queues.md index 22cd31eed18..37a78b349b7 100644 --- a/docs/examples/queues.md +++ b/docs/examples/queues.md @@ -9,6 +9,7 @@ In order to run this example locally, you'll first need to [install Redis](https and start your server up locally. Here's a simple example of how you can use Pydantic to: + 1. Serialize data to push to the queue 2. Deserialize and validate data when it's popped from the queue diff --git a/docs/index.md b/docs/index.md index 71bd51c1d83..84910f6ee53 100644 --- a/docs/index.md +++ b/docs/index.md @@ -56,18 +56,17 @@ Fast and extensible, Pydantic plays nicely with your linters/IDE/brain. Define h **[Learn more about Pydantic Logfire](https://logfire.pydantic.dev/docs/)** - ## Why use Pydantic? -- **Powered by type hints** — with Pydantic, schema validation and serialization are controlled by type annotations; less to learn, less code to write, and seamless integration with your IDE and static analysis tools. [Learn more…](why.md#type-hints) -- **Speed** — Pydantic's core validation logic is written in Rust. As a result, Pydantic is among the fastest data validation libraries for Python. [Learn more…](why.md#performance) -- **JSON Schema** — Pydantic models can emit JSON Schema, allowing for easy integration with other tools. [Learn more…](why.md#json-schema) -- **Strict** and **Lax** mode — Pydantic can run in either strict mode (where data is not converted) or lax mode where Pydantic tries to coerce data to the correct type where appropriate. [Learn more…](why.md#strict-lax) -- **Dataclasses**, **TypedDicts** and more — Pydantic supports validation of many standard library types including `dataclass` and `TypedDict`. [Learn more…](why.md#dataclasses-typeddict-more) -- **Customisation** — Pydantic allows custom validators and serializers to alter how data is processed in many powerful ways. [Learn more…](why.md#customisation) -- **Ecosystem** — around 8,000 packages on PyPI use Pydantic, including massively popular libraries like - _FastAPI_, _huggingface_, _Django Ninja_, _SQLModel_, & _LangChain_. [Learn more…](why.md#ecosystem) -- **Battle tested** — Pydantic is downloaded over 360M times/month and is used by all FAANG companies and 20 of the 25 largest companies on NASDAQ. If you're trying to do something with Pydantic, someone else has probably already done it. [Learn more…](why.md#using-pydantic) +* **Powered by type hints** — with Pydantic, schema validation and serialization are controlled by type annotations; less to learn, less code to write, and integration with your IDE and static analysis tools. [Learn more…](why.md#type-hints) +* **Speed** — Pydantic's core validation logic is written in Rust. As a result, Pydantic is among the fastest data validation libraries for Python. [Learn more…](why.md#performance) +* **JSON Schema** — Pydantic models can emit JSON Schema, allowing for easy integration with other tools. [Learn more…](why.md#json-schema) +* **Strict** and **Lax** mode — Pydantic can run in either strict mode (where data is not converted) or lax mode where Pydantic tries to coerce data to the correct type where appropriate. [Learn more…](why.md#strict-lax) +* **Dataclasses**, **TypedDicts** and more — Pydantic supports validation of many standard library types including `dataclass` and `TypedDict`. [Learn more…](why.md#dataclasses-typeddict-more) +* **Customisation** — Pydantic allows custom validators and serializers to alter how data is processed in many powerful ways. [Learn more…](why.md#customisation) +* **Ecosystem** — around 8,000 packages on PyPI use Pydantic, including massively popular libraries like + *FastAPI*, *huggingface*, *Django Ninja*, *SQLModel*, & *LangChain*. [Learn more…](why.md#ecosystem) +* **Battle tested** — Pydantic is downloaded over 360M times/month and is used by all FAANG companies and 20 of the 25 largest companies on NASDAQ. If you're trying to do something with Pydantic, someone else has probably already done it. [Learn more…](why.md#using-pydantic) [Installing Pydantic](install.md) is as simple as: `pip install pydantic` diff --git a/docs/install.md b/docs/install.md index f7084cc1f67..8f24b65043e 100644 --- a/docs/install.md +++ b/docs/install.md @@ -36,7 +36,6 @@ Pydantic has the following optional dependencies: To install optional dependencies along with Pydantic: - === "pip" ```bash @@ -61,7 +60,6 @@ Of course, you can also install requirements manually with `pip install email-va And if you prefer to install Pydantic directly from the repository: - === "pip" ```bash diff --git a/docs/integrations/aws_lambda.md b/docs/integrations/aws_lambda.md index 5b40601089e..cf29086a872 100644 --- a/docs/integrations/aws_lambda.md +++ b/docs/integrations/aws_lambda.md @@ -42,10 +42,11 @@ pip install \ ## Troubleshooting -### `no module named 'pydantic_core._pydantic_core'` +### Missing `pydantic_core` module The -``` + +```output no module named `pydantic_core._pydantic_core` ``` @@ -53,23 +54,23 @@ error is a common issue that indicates you have installed `pydantic` incorrectly 1. Check the contents of the installed `pydantic-core` package. Are the compiled library and its type stubs both present? -```python {test="skip" lint="skip"} -from importlib.metadata import files -print([file for file in files('pydantic-core') if file.name.startswith('_pydantic_core')]) -""" -[PackagePath('pydantic_core/_pydantic_core.pyi'), PackagePath('pydantic_core/_pydantic_core.cpython-312-x86_64-linux-gnu.so')] -""" -``` + ```python {test="skip" lint="skip"} + from importlib.metadata import files + print([file for file in files('pydantic-core') if file.name.startswith('_pydantic_core')]) + """ + [PackagePath('pydantic_core/_pydantic_core.pyi'), PackagePath('pydantic_core/_pydantic_core.cpython-312-x86_64-linux-gnu.so')] + """ + ``` -You should expect to see two files like those printed above. The compile library file will be a .so or .pyd with a name that varies according to the OS and Python version. + You should expect to see two files like those printed above. The compiled library file should have the `.so` or `.pyd` extension with a name that varies according to the OS and Python version. 2. Check that your lambda's Python version is compatible with the compiled library version found above. -```python {test="skip" lint="skip"} -import sysconfig -print(sysconfig.get_config_var("EXT_SUFFIX")) -#> '.cpython-312-x86_64-linux-gnu.so' -``` + ```python {test="skip" lint="skip"} + import sysconfig + print(sysconfig.get_config_var("EXT_SUFFIX")) + #> '.cpython-312-x86_64-linux-gnu.so' + ``` You should expect to see the same suffix here as the compiled library, for example here we see this suffix `.cpython-312-x86_64-linux-gnu.so` indeed matches `_pydantic_core.cpython-312-x86_64-linux-gnu.so`. @@ -90,7 +91,7 @@ are a few ways to fix this issue: If you're deploying your lambda with the serverless framework, it's likely that the appropriate metadata for the `email-validator` package is not being included in your deployment package. Tools like [`serverless-python-requirements`](https://github.com/serverless/serverless-python-requirements/tree/master) remove metadata to reduce package size. You can fix this issue by setting the `slim` setting to false in your `serverless.yml` file: -``` +```yaml pythonRequirements: dockerizePip: non-linux slim: false @@ -110,7 +111,6 @@ read more about the issue and potential fixes there as well. If you're still struggling with installing `pydantic` for your AWS Lambda, you might consult with [this issue](https://github.com/pydantic/pydantic/issues/6557), which covers a variety of problems and solutions encountered by other developers. - ### Validating `event` and `context` data Check out our [blog post](https://pydantic.dev/articles/lambda-intro) to learn more about how to use `pydantic` to validate `event` and `context` data in AWS Lambda functions. diff --git a/docs/integrations/datamodel_code_generator.md b/docs/integrations/datamodel_code_generator.md index f2614dc8c33..00603c46470 100644 --- a/docs/integrations/datamodel_code_generator.md +++ b/docs/integrations/datamodel_code_generator.md @@ -11,17 +11,21 @@ The [datamodel-code-generator](https://github.com/koxudaxi/datamodel-code-genera Whenever you find yourself with any data convertible JSON but without pydantic models, this tool will allow you to generate type-safe model hierarchies on demand. ## Installation + ```bash pip install datamodel-code-generator ``` ## Example + In this case, datamodel-code-generator creates pydantic models from a JSON Schema file. + ```bash datamodel-codegen --input person.json --input-file-type jsonschema --output model.py ``` person.json: + ```json { "$id": "person.json", @@ -74,6 +78,7 @@ person.json: ``` model.py: + ```python {upgrade="skip" requires="3.10"} # generated by datamodel-codegen: # filename: person.json diff --git a/docs/integrations/devtools.md b/docs/integrations/devtools.md index 144540c83e4..afad585a58e 100644 --- a/docs/integrations/devtools.md +++ b/docs/integrations/devtools.md @@ -10,7 +10,6 @@ Pydantic integrates with *devtools* by implementing the `__pretty__` method on m In particular `debug()` is useful when inspecting models: - ```python {test="no-print-intercept"} from datetime import datetime diff --git a/docs/integrations/llms.md b/docs/integrations/llms.md index 5618b4b1345..452d61b43f9 100644 --- a/docs/integrations/llms.md +++ b/docs/integrations/llms.md @@ -3,10 +3,10 @@ This format is defined in Markdown and suited for large language models. Two formats are available: -- [llms.txt](https://docs.pydantic.dev/latest/llms.txt): a file containing a brief description +* [llms.txt](https://docs.pydantic.dev/latest/llms.txt): a file containing a brief description of the project, along with links to the different sections of the documentation. The structure of this file is described in details [here](https://llmstxt.org/#format). -- [llms-full.txt](https://docs.pydantic.dev/latest/llms-full.txt): Similar to the `llms.txt` file, +* [llms-full.txt](https://docs.pydantic.dev/latest/llms-full.txt): Similar to the `llms.txt` file, but every link content is included. Note that this file may be too large for some LLMs. As of today, these files *cannot* be natively leveraged by LLM frameworks or IDEs. Alternatively, diff --git a/docs/integrations/mypy.md b/docs/integrations/mypy.md index 19a77faad1b..da4d8371196 100644 --- a/docs/integrations/mypy.md +++ b/docs/integrations/mypy.md @@ -28,7 +28,7 @@ Model() # will raise a validation error for age and list_of_ints Without any special configuration, mypy does not catch the [missing model field annotation](../errors/usage_errors.md#model-field-missing-annotation) and errors about the `list_of_ints` argument which Pydantic parses correctly: -``` +```output 15: error: List item 1 has incompatible type "str"; expected "int" [list-item] 15: error: List item 2 has incompatible type "bytes"; expected "int" [list-item] 16: error: "Model" has no attribute "middle_name" [attr-defined] @@ -37,7 +37,8 @@ and errors about the `list_of_ints` argument which Pydantic parses correctly: ``` But [with the plugin enabled](#enabling-the-plugin), it gives the correct errors: -``` + +```output 9: error: Untyped fields disallowed [pydantic-field] 16: error: "Model" has no attribute "middle_name" [attr-defined] 17: error: Missing named argument "age" for "Model" [call-arg] diff --git a/docs/integrations/pycharm.md b/docs/integrations/pycharm.md index 6403fabd1f3..85f459e22b9 100644 --- a/docs/integrations/pycharm.md +++ b/docs/integrations/pycharm.md @@ -7,13 +7,13 @@ You can install the plugin for free from the plugin marketplace The plugin currently supports the following features: * For `pydantic.BaseModel.__init__`: - * Inspection - * Autocompletion - * Type-checking + * Inspection + * Autocompletion + * Type-checking * For fields of `pydantic.BaseModel`: - * Refactor-renaming fields updates `__init__` calls, and affects sub- and super-classes - * Refactor-renaming `__init__` keyword arguments updates field names, and affects sub- and super-classes + * Refactor-renaming fields updates `__init__` calls, and affects sub- and super-classes + * Refactor-renaming `__init__` keyword arguments updates field names, and affects sub- and super-classes More information can be found on the [official plugin page](https://plugins.jetbrains.com/plugin/12861-pydantic) diff --git a/docs/internals/architecture.md b/docs/internals/architecture.md index b97d536f3e4..ed287d94e25 100644 --- a/docs/internals/architecture.md +++ b/docs/internals/architecture.md @@ -11,18 +11,18 @@ serialization, JSON Schema). Usage of the Pydantic library can be divided into two parts: -- Model definition, done in the `pydantic` package. -- Model validation and serialization, done in the `pydantic-core` package. +* Model definition, done in the `pydantic` package. +* Model validation and serialization, done in the `pydantic-core` package. ## Model definition Whenever a Pydantic [`BaseModel`][pydantic.main.BaseModel] is defined, the metaclass will analyze the body of the model to collect a number of elements: -- Defined annotations to build model fields (collected in the [`model_fields`][pydantic.main.BaseModel.model_fields] attribute). -- Model configuration, set with [`model_config`][pydantic.main.BaseModel.model_config]. -- Additional validators/serializers. -- Private attributes, class variables, identification of generic parametrization, etc. +* Defined annotations to build model fields (collected in the [`model_fields`][pydantic.main.BaseModel.model_fields] attribute). +* Model configuration, set with [`model_config`][pydantic.main.BaseModel.model_config]. +* Additional validators/serializers. +* Private attributes, class variables, identification of generic parametrization, etc. ### Communicating between `pydantic` and `pydantic-core`: the core schema @@ -83,7 +83,7 @@ the serialization logic is also defined in the core schema. If we were to define a custom serialization function for `foo` (1), the `serialization` key would look like: { .annotate } -1. For example using the [`field_serializer`][pydantic.functional_serializers.field_serializer] decorator: +1. For example using the [`field_serializer`][pydantic.functional_serializers.field_serializer] decorator: ```python {test="skip" lint="skip"} class Model(BaseModel): @@ -184,7 +184,7 @@ When the `GenerateSchema` class builds the core schema for `Annotated[int, MyStr create an instance of a `GetCoreSchemaHandler` to be passed to the `MyGt.__get_pydantic_core_schema__` method. (1) { .annotate } -1. In the case of our [`Annotated`][typing.Annotated] pattern, the `GetCoreSchemaHandler` is defined in a nested way. +1. In the case of our [`Annotated`][typing.Annotated] pattern, the `GetCoreSchemaHandler` is defined in a nested way. Calling it will recursively call the other `__get_pydantic_core_schema__` methods until it reaches the `int` annotation, where a simple `{'type': 'int'}` schema is returned. @@ -194,8 +194,8 @@ the `source` will be the actual class where `__get_pydantic_core_schema__` is de ## Model validation and serialization -While model definition was scoped to the _class_ level (i.e. when defining your model), model validation -and serialization happens at the _instance_ level. Both these concepts are handled in `pydantic-core` +While model definition was scoped to the *class* level (i.e. when defining your model), model validation +and serialization happens at the *instance* level. Both these concepts are handled in `pydantic-core` (providing a 5 to 20 performance increase compared to Pydantic V1), by using the previously built core schema. `pydantic-core` exposes a [`SchemaValidator`][pydantic_core.SchemaValidator] and diff --git a/docs/internals/resolving_annotations.md b/docs/internals/resolving_annotations.md index 6b334ab9045..59291582ad4 100644 --- a/docs/internals/resolving_annotations.md +++ b/docs/internals/resolving_annotations.md @@ -19,7 +19,7 @@ class Node: To circumvent this issue, forward references can be used (by wrapping the annotation in quotes). -In Python 3.7, [PEP 563] introduced the concept of _postponed evaluation of annotations_, meaning +In Python 3.7, [PEP 563] introduced the concept of *postponed evaluation of annotations*, meaning with the `from __future__ import annotations` [future statement], type hints are stringified by default: ```python {requires="3.12" lint="skip"} @@ -104,13 +104,13 @@ following logic is applied: `{'f1': 'MyType'}`. 2. Iterate over the `__annotations__` items and try to evaluate the annotation [^1] using a custom wrapper around the built-in [`eval()`][eval] function. This function takes two `globals` and `locals` arguments: - - The current module's `__dict__` is naturally used as `globals`. For `Base`, this will be + * The current module's `__dict__` is naturally used as `globals`. For `Base`, this will be `sys.modules['module1'].__dict__`. - - For the `locals` argument, Pydantic will try to resolve symbols in the following namespaces, sorted by highest priority: - - A namespace created on the fly, containing the current class name (`{cls.__name__: cls}`). This is done + * For the `locals` argument, Pydantic will try to resolve symbols in the following namespaces, sorted by highest priority: + * A namespace created on the fly, containing the current class name (`{cls.__name__: cls}`). This is done in order to support recursive references. - - The locals of the current class (i.e. `cls.__dict__`). For `Model`, this will include `LocalType`. - - The parent namespace of the class, if different from the globals described above. This is the + * The locals of the current class (i.e. `cls.__dict__`). For `Model`, this will include `LocalType`. + * The parent namespace of the class, if different from the globals described above. This is the [locals][frame.f_locals] of the frame where the class is being defined. For `Base`, because the class is being defined in the module directly, this namespace won't be used as it will result in the globals being used again. For `Model`, the parent namespace is the locals of the frame of `inner()`. @@ -133,19 +133,19 @@ While the namespace fetching logic is trying to be as accurate as possible, we s
-- The locals of the current class (`cls.__dict__`) may include irrelevant entries, most of them being dunder attributes. +* The locals of the current class (`cls.__dict__`) may include irrelevant entries, most of them being dunder attributes. This means that the following annotation: `f: '__doc__'` will successfully (and unexpectedly) be resolved. -- When the `Model` class is being created inside a function, we keep a copy of the [locals][frame.f_locals] of the frame. +* When the `Model` class is being created inside a function, we keep a copy of the [locals][frame.f_locals] of the frame. This copy only includes the symbols defined in the locals when `Model` is being defined, meaning `InnerType2` won't be included (and will **not be** if doing a model rebuild at a later point!). - - To avoid memory leaks, we use [weak references][weakref] to the locals of the function, meaning some forward references might + * To avoid memory leaks, we use [weak references][weakref] to the locals of the function, meaning some forward references might not resolve outside the function (1). - - Locals of the function are only taken into account for Pydantic models, but this pattern does not apply to dataclasses, typed + * Locals of the function are only taken into account for Pydantic models, but this pattern does not apply to dataclasses, typed dictionaries or named tuples.
-1. Here is an example: +1. Here is an example: ```python {test="skip" lint="skip"} def func(): @@ -163,11 +163,10 @@ While the namespace fetching logic is trying to be as accurate as possible, we s # pydantic.errors.PydanticUndefinedAnnotation: name 'A' is not defined ``` -[](){#backwards-compatibility-logic} - For backwards compatibility reasons, and to be able to support valid use cases without having to rebuild models, -the namespace logic described above is a bit different when it comes to core schema generation. Taking the -following example: +the namespace logic described above is a bit different when it comes to core schema generation. +Taking the following example: +{#backwards-compatibility-logic} ```python from dataclasses import dataclass @@ -196,7 +195,7 @@ and the `{Bar.__name__: Bar}` namespace are included in the locals during annota (with the lowest priority) (1). { .annotate } -1. This backwards compatibility logic can introduce some inconsistencies, such as the following: +1. This backwards compatibility logic can introduce some inconsistencies, such as the following: ```python {lint="skip"} from dataclasses import dataclass @@ -248,12 +247,11 @@ Foo.__pydantic_core_schema__ #> {'type': 'model', 'schema': {...}, ...} ``` -[](){#model-rebuild-semantics} - The [`model_rebuild()`][pydantic.BaseModel.model_rebuild] method uses a *rebuild namespace*, with the following semantics: +{#model-rebuild-semantics} -- If an explicit `_types_namespace` argument is provided, it is used as the rebuild namespace. -- If no namespace is provided, the namespace where the method is called will be used as the rebuild namespace. +* If an explicit `_types_namespace` argument is provided, it is used as the rebuild namespace. +* If no namespace is provided, the namespace where the method is called will be used as the rebuild namespace. This *rebuild namespace* will be merged with the model's parent namespace (if it was defined in a function) and used as is (see the [backwards compatibility logic](#backwards-compatibility-logic) described above). @@ -264,5 +262,5 @@ This *rebuild namespace* will be merged with the model's parent namespace (if it [PEP 649]: https://peps.python.org/pep-0649/ [future statement]: https://docs.python.org/3/reference/simple_stmts.html#future -[^1]: This is done unconditionally, as forward annotations can be only present _as part_ of a type hint (e.g. `Optional['int']`), as dictated by +[^1]: This is done unconditionally, as forward annotations can be only present *as part* of a type hint (e.g. `Optional['int']`), as dictated by the [typing specification](https://typing.readthedocs.io/en/latest/spec/annotations.html#string-annotations). diff --git a/docs/migration.md b/docs/migration.md index fa969925324..b3508118388 100644 --- a/docs/migration.md +++ b/docs/migration.md @@ -262,12 +262,12 @@ This looks like `class MyGenericModel(BaseModel, Generic[T]): ...`. Mixing of V1 and V2 models is not supported which means that type parameters of such generic `BaseModel` (V2) cannot be V1 models. -While it may not raise an error, we strongly advise against using _parametrized_ generics in `isinstance` checks. +While it may not raise an error, we strongly advise against using *parametrized* generics in `isinstance` checks. - * For example, you should not do `isinstance(my_model, MyGenericModel[int])`. +* For example, you should not do `isinstance(my_model, MyGenericModel[int])`. However, it is fine to do `isinstance(my_model, MyGenericModel)`. (Note that for standard generics, it would raise an error to do a subclass check with a parameterized generic.) - * If you need to perform `isinstance` checks against parametrized generics, you can do this by subclassing the +* If you need to perform `isinstance` checks against parametrized generics, you can do this by subclassing the parametrized generic class. This looks like `class MyIntModel(MyGenericModel[int]): ...` and `isinstance(my_model, MyIntModel)`. @@ -283,13 +283,13 @@ In Pydantic V2, this behavior has changed to return `None` when no alias is set. The following properties have been removed from or changed in `Field`: -- `const` -- `min_items` (use `min_length` instead) -- `max_items` (use `max_length` instead) -- `unique_items` -- `allow_mutation` (use `frozen` instead) -- `regex` (use `pattern` instead) -- `final` (use the [typing.Final][] type hint instead) +* `const` +* `min_items` (use `min_length` instead) +* `max_items` (use `max_length` instead) +* `unique_items` +* `allow_mutation` (use `frozen` instead) +* `regex` (use `pattern` instead) +* `final` (use the [typing.Final][] type hint instead) Field constraints are no longer automatically pushed down to the parameters of generics. For example, you can no longer validate every element of a list matches a regex by providing `my_list: list[str] = Field(pattern=".*")`. Instead, use [`typing.Annotated`][] to provide an annotation on the `str` itself: `my_list: list[Annotated[str, Field(pattern=".*")]]` @@ -300,7 +300,7 @@ dataclasses without having to subclass `BaseModel`. Pydantic V2 introduces the f * When used as fields, dataclasses (Pydantic or vanilla) no longer accept tuples as validation inputs; dicts should be used instead. -* The `__post_init__` in Pydantic dataclasses will now be called _after_ validation, rather than before. +* The `__post_init__` in Pydantic dataclasses will now be called *after* validation, rather than before. * As a result, the `__post_init_post_parse__` method would have become redundant, so has been removed. * Pydantic no longer supports `extra='allow'` for Pydantic dataclasses, where extra fields passed to the initializer would be stored as extra attributes on the dataclass. `extra='ignore'` is still supported for the purpose of ignoring @@ -371,13 +371,12 @@ See the [`ConfigDict` API reference][pydantic.config.ConfigDict] for more detail to migrate to `@field_validator` — see the [next section](#changes-to-validators-allowed-signatures) for more details. * If you use the `always=True` keyword argument to a validator function, note that standard validators - for the annotated type will _also_ be applied even to defaults, not just the custom validators. For + for the annotated type will *also* be applied even to defaults, not just the custom validators. For example, despite the fact that the validator below will never error, the following code raises a `ValidationError`: !!! note To avoid this, you can use the `validate_default` argument in the `Field` function. When set to `True`, it mimics the behavior of `always=True` in Pydantic v1. However, the new way of using `validate_default` is encouraged as it provides more flexibility and control. - ```python {test="skip"} from pydantic import BaseModel, validator @@ -566,7 +565,7 @@ v = ta.validate_python(MyDict()) assert type(v) is MyDict ``` -While we don't promise to preserve input types everywhere, we _do_ preserve them for subclasses of `BaseModel`, +While we don't promise to preserve input types everywhere, we *do* preserve them for subclasses of `BaseModel`, and for dataclasses: ```python @@ -611,7 +610,6 @@ print(d) #> OuterDataclass(inner=SubInnerDataclass(x=1, y=2)) ``` - ### Changes to Handling of Standard Types #### Dicts @@ -662,15 +660,15 @@ The following table describes the behavior of field annotations in V2: | Required, can be any type (including `None`) | `f6: Any` | | Not required, can be any type (including `None`) | `f7: Any = None` | - !!! note A field annotated as `typing.Optional[T]` will be required, and will allow for a value of `None`. - It does not mean that the field has a default value of `None`. _(This is a breaking change from V1.)_ + It does not mean that the field has a default value of `None`. *(This is a breaking change from V1.)* !!! note Any default value if provided makes a field not required. Here is a code example demonstrating the above: + ```python from typing import Optional @@ -741,7 +739,7 @@ Pydantic V1 had weak support for validating or serializing non-`BaseModel` types To work with them, you had to either create a "root" model or use the utility functions in `pydantic.tools` (namely, `parse_obj_as` and `schema_of`). -In Pydantic V2 this is _a lot_ easier: the [`TypeAdapter`][pydantic.type_adapter.TypeAdapter] class lets you create an object +In Pydantic V2 this is *a lot* easier: the [`TypeAdapter`][pydantic.type_adapter.TypeAdapter] class lets you create an object with methods for validating, serializing, and producing JSON schemas for arbitrary types. This serves as a complete replacement for `parse_obj_as` and `schema_of` (which are now deprecated), and also covers some of the use cases of "root" models. ([`RootModel`](concepts/models.md#rootmodel-and-custom-root-types), @@ -868,10 +866,9 @@ assert str(AnyUrl(url='https://google.com/api/')) == 'https://google.com/api/' If you still want to use the old behavior without the appended slash, take a look at this [solution](https://github.com/pydantic/pydantic/issues/7186#issuecomment-1690235887). - ### Constrained types -The `Constrained*` classes were _removed_, and you should replace them by `Annotated[, Field(...)]`, for example: +The `Constrained*` classes were *removed*, and you should replace them by `Annotated[, Field(...)]`, for example: ```python {test="skip"} from pydantic import BaseModel, ConstrainedInt @@ -979,195 +976,195 @@ To configure the mypy plugins: ## Removed in Pydantic V2 -- `pydantic.ConstrainedBytes` -- `pydantic.ConstrainedDate` -- `pydantic.ConstrainedDecimal` -- `pydantic.ConstrainedFloat` -- `pydantic.ConstrainedFrozenSet` -- `pydantic.ConstrainedInt` -- `pydantic.ConstrainedList` -- `pydantic.ConstrainedSet` -- `pydantic.ConstrainedStr` -- `pydantic.JsonWrapper` -- `pydantic.NoneBytes` - - This was an alias to `None | bytes`. -- `pydantic.NoneStr` - - This was an alias to `None | str`. -- `pydantic.NoneStrBytes` - - This was an alias to `None | str | bytes`. -- `pydantic.Protocol` -- `pydantic.Required` -- `pydantic.StrBytes` - - This was an alias to `str | bytes`. -- `pydantic.compiled` -- `pydantic.config.get_config` -- `pydantic.config.inherit_config` -- `pydantic.config.prepare_config` -- `pydantic.create_model_from_namedtuple` -- `pydantic.create_model_from_typeddict` -- `pydantic.dataclasses.create_pydantic_model_from_dataclass` -- `pydantic.dataclasses.make_dataclass_validator` -- `pydantic.dataclasses.set_validation` -- `pydantic.datetime_parse.parse_date` -- `pydantic.datetime_parse.parse_time` -- `pydantic.datetime_parse.parse_datetime` -- `pydantic.datetime_parse.parse_duration` -- `pydantic.error_wrappers.ErrorWrapper` -- `pydantic.errors.AnyStrMaxLengthError` -- `pydantic.errors.AnyStrMinLengthError` -- `pydantic.errors.ArbitraryTypeError` -- `pydantic.errors.BoolError` -- `pydantic.errors.BytesError` -- `pydantic.errors.CallableError` -- `pydantic.errors.ClassError` -- `pydantic.errors.ColorError` -- `pydantic.errors.ConfigError` -- `pydantic.errors.DataclassTypeError` -- `pydantic.errors.DateError` -- `pydantic.errors.DateNotInTheFutureError` -- `pydantic.errors.DateNotInThePastError` -- `pydantic.errors.DateTimeError` -- `pydantic.errors.DecimalError` -- `pydantic.errors.DecimalIsNotFiniteError` -- `pydantic.errors.DecimalMaxDigitsError` -- `pydantic.errors.DecimalMaxPlacesError` -- `pydantic.errors.DecimalWholeDigitsError` -- `pydantic.errors.DictError` -- `pydantic.errors.DurationError` -- `pydantic.errors.EmailError` -- `pydantic.errors.EnumError` -- `pydantic.errors.EnumMemberError` -- `pydantic.errors.ExtraError` -- `pydantic.errors.FloatError` -- `pydantic.errors.FrozenSetError` -- `pydantic.errors.FrozenSetMaxLengthError` -- `pydantic.errors.FrozenSetMinLengthError` -- `pydantic.errors.HashableError` -- `pydantic.errors.IPv4AddressError` -- `pydantic.errors.IPv4InterfaceError` -- `pydantic.errors.IPv4NetworkError` -- `pydantic.errors.IPv6AddressError` -- `pydantic.errors.IPv6InterfaceError` -- `pydantic.errors.IPv6NetworkError` -- `pydantic.errors.IPvAnyAddressError` -- `pydantic.errors.IPvAnyInterfaceError` -- `pydantic.errors.IPvAnyNetworkError` -- `pydantic.errors.IntEnumError` -- `pydantic.errors.IntegerError` -- `pydantic.errors.InvalidByteSize` -- `pydantic.errors.InvalidByteSizeUnit` -- `pydantic.errors.InvalidDiscriminator` -- `pydantic.errors.InvalidLengthForBrand` -- `pydantic.errors.JsonError` -- `pydantic.errors.JsonTypeError` -- `pydantic.errors.ListError` -- `pydantic.errors.ListMaxLengthError` -- `pydantic.errors.ListMinLengthError` -- `pydantic.errors.ListUniqueItemsError` -- `pydantic.errors.LuhnValidationError` -- `pydantic.errors.MissingDiscriminator` -- `pydantic.errors.MissingError` -- `pydantic.errors.NoneIsAllowedError` -- `pydantic.errors.NoneIsNotAllowedError` -- `pydantic.errors.NotDigitError` -- `pydantic.errors.NotNoneError` -- `pydantic.errors.NumberNotGeError` -- `pydantic.errors.NumberNotGtError` -- `pydantic.errors.NumberNotLeError` -- `pydantic.errors.NumberNotLtError` -- `pydantic.errors.NumberNotMultipleError` -- `pydantic.errors.PathError` -- `pydantic.errors.PathNotADirectoryError` -- `pydantic.errors.PathNotAFileError` -- `pydantic.errors.PathNotExistsError` -- `pydantic.errors.PatternError` -- `pydantic.errors.PyObjectError` -- `pydantic.errors.PydanticTypeError` -- `pydantic.errors.PydanticValueError` -- `pydantic.errors.SequenceError` -- `pydantic.errors.SetError` -- `pydantic.errors.SetMaxLengthError` -- `pydantic.errors.SetMinLengthError` -- `pydantic.errors.StrError` -- `pydantic.errors.StrRegexError` -- `pydantic.errors.StrictBoolError` -- `pydantic.errors.SubclassError` -- `pydantic.errors.TimeError` -- `pydantic.errors.TupleError` -- `pydantic.errors.TupleLengthError` -- `pydantic.errors.UUIDError` -- `pydantic.errors.UUIDVersionError` -- `pydantic.errors.UrlError` -- `pydantic.errors.UrlExtraError` -- `pydantic.errors.UrlHostError` -- `pydantic.errors.UrlHostTldError` -- `pydantic.errors.UrlPortError` -- `pydantic.errors.UrlSchemeError` -- `pydantic.errors.UrlSchemePermittedError` -- `pydantic.errors.UrlUserInfoError` -- `pydantic.errors.WrongConstantError` -- `pydantic.main.validate_model` -- `pydantic.networks.stricturl` -- `pydantic.parse_file_as` -- `pydantic.parse_raw_as` -- `pydantic.stricturl` -- `pydantic.tools.parse_file_as` -- `pydantic.tools.parse_raw_as` -- `pydantic.types.JsonWrapper` -- `pydantic.types.NoneBytes` -- `pydantic.types.NoneStr` -- `pydantic.types.NoneStrBytes` -- `pydantic.types.PyObject` -- `pydantic.types.StrBytes` -- `pydantic.typing.evaluate_forwardref` -- `pydantic.typing.AbstractSetIntStr` -- `pydantic.typing.AnyCallable` -- `pydantic.typing.AnyClassMethod` -- `pydantic.typing.CallableGenerator` -- `pydantic.typing.DictAny` -- `pydantic.typing.DictIntStrAny` -- `pydantic.typing.DictStrAny` -- `pydantic.typing.IntStr` -- `pydantic.typing.ListStr` -- `pydantic.typing.MappingIntStrAny` -- `pydantic.typing.NoArgAnyCallable` -- `pydantic.typing.NoneType` -- `pydantic.typing.ReprArgs` -- `pydantic.typing.SetStr` -- `pydantic.typing.StrPath` -- `pydantic.typing.TupleGenerator` -- `pydantic.typing.WithArgsTypes` -- `pydantic.typing.all_literal_values` -- `pydantic.typing.display_as_type` -- `pydantic.typing.get_all_type_hints` -- `pydantic.typing.get_args` -- `pydantic.typing.get_origin` -- `pydantic.typing.get_sub_types` -- `pydantic.typing.is_callable_type` -- `pydantic.typing.is_classvar` -- `pydantic.typing.is_finalvar` -- `pydantic.typing.is_literal_type` -- `pydantic.typing.is_namedtuple` -- `pydantic.typing.is_new_type` -- `pydantic.typing.is_none_type` -- `pydantic.typing.is_typeddict` -- `pydantic.typing.is_typeddict_special` -- `pydantic.typing.is_union` -- `pydantic.typing.new_type_supertype` -- `pydantic.typing.resolve_annotations` -- `pydantic.typing.typing_base` -- `pydantic.typing.update_field_forward_refs` -- `pydantic.typing.update_model_forward_refs` -- `pydantic.utils.ClassAttribute` -- `pydantic.utils.DUNDER_ATTRIBUTES` -- `pydantic.utils.PyObjectStr` -- `pydantic.utils.ValueItems` -- `pydantic.utils.almost_equal_floats` -- `pydantic.utils.get_discriminator_alias_and_values` -- `pydantic.utils.get_model` -- `pydantic.utils.get_unique_discriminator_alias` -- `pydantic.utils.in_ipython` -- `pydantic.utils.is_valid_identifier` -- `pydantic.utils.path_type` -- `pydantic.utils.validate_field_name` -- `pydantic.validate_model` +* `pydantic.ConstrainedBytes` +* `pydantic.ConstrainedDate` +* `pydantic.ConstrainedDecimal` +* `pydantic.ConstrainedFloat` +* `pydantic.ConstrainedFrozenSet` +* `pydantic.ConstrainedInt` +* `pydantic.ConstrainedList` +* `pydantic.ConstrainedSet` +* `pydantic.ConstrainedStr` +* `pydantic.JsonWrapper` +* `pydantic.NoneBytes` + * This was an alias to `None | bytes`. +* `pydantic.NoneStr` + * This was an alias to `None | str`. +* `pydantic.NoneStrBytes` + * This was an alias to `None | str | bytes`. +* `pydantic.Protocol` +* `pydantic.Required` +* `pydantic.StrBytes` + * This was an alias to `str | bytes`. +* `pydantic.compiled` +* `pydantic.config.get_config` +* `pydantic.config.inherit_config` +* `pydantic.config.prepare_config` +* `pydantic.create_model_from_namedtuple` +* `pydantic.create_model_from_typeddict` +* `pydantic.dataclasses.create_pydantic_model_from_dataclass` +* `pydantic.dataclasses.make_dataclass_validator` +* `pydantic.dataclasses.set_validation` +* `pydantic.datetime_parse.parse_date` +* `pydantic.datetime_parse.parse_time` +* `pydantic.datetime_parse.parse_datetime` +* `pydantic.datetime_parse.parse_duration` +* `pydantic.error_wrappers.ErrorWrapper` +* `pydantic.errors.AnyStrMaxLengthError` +* `pydantic.errors.AnyStrMinLengthError` +* `pydantic.errors.ArbitraryTypeError` +* `pydantic.errors.BoolError` +* `pydantic.errors.BytesError` +* `pydantic.errors.CallableError` +* `pydantic.errors.ClassError` +* `pydantic.errors.ColorError` +* `pydantic.errors.ConfigError` +* `pydantic.errors.DataclassTypeError` +* `pydantic.errors.DateError` +* `pydantic.errors.DateNotInTheFutureError` +* `pydantic.errors.DateNotInThePastError` +* `pydantic.errors.DateTimeError` +* `pydantic.errors.DecimalError` +* `pydantic.errors.DecimalIsNotFiniteError` +* `pydantic.errors.DecimalMaxDigitsError` +* `pydantic.errors.DecimalMaxPlacesError` +* `pydantic.errors.DecimalWholeDigitsError` +* `pydantic.errors.DictError` +* `pydantic.errors.DurationError` +* `pydantic.errors.EmailError` +* `pydantic.errors.EnumError` +* `pydantic.errors.EnumMemberError` +* `pydantic.errors.ExtraError` +* `pydantic.errors.FloatError` +* `pydantic.errors.FrozenSetError` +* `pydantic.errors.FrozenSetMaxLengthError` +* `pydantic.errors.FrozenSetMinLengthError` +* `pydantic.errors.HashableError` +* `pydantic.errors.IPv4AddressError` +* `pydantic.errors.IPv4InterfaceError` +* `pydantic.errors.IPv4NetworkError` +* `pydantic.errors.IPv6AddressError` +* `pydantic.errors.IPv6InterfaceError` +* `pydantic.errors.IPv6NetworkError` +* `pydantic.errors.IPvAnyAddressError` +* `pydantic.errors.IPvAnyInterfaceError` +* `pydantic.errors.IPvAnyNetworkError` +* `pydantic.errors.IntEnumError` +* `pydantic.errors.IntegerError` +* `pydantic.errors.InvalidByteSize` +* `pydantic.errors.InvalidByteSizeUnit` +* `pydantic.errors.InvalidDiscriminator` +* `pydantic.errors.InvalidLengthForBrand` +* `pydantic.errors.JsonError` +* `pydantic.errors.JsonTypeError` +* `pydantic.errors.ListError` +* `pydantic.errors.ListMaxLengthError` +* `pydantic.errors.ListMinLengthError` +* `pydantic.errors.ListUniqueItemsError` +* `pydantic.errors.LuhnValidationError` +* `pydantic.errors.MissingDiscriminator` +* `pydantic.errors.MissingError` +* `pydantic.errors.NoneIsAllowedError` +* `pydantic.errors.NoneIsNotAllowedError` +* `pydantic.errors.NotDigitError` +* `pydantic.errors.NotNoneError` +* `pydantic.errors.NumberNotGeError` +* `pydantic.errors.NumberNotGtError` +* `pydantic.errors.NumberNotLeError` +* `pydantic.errors.NumberNotLtError` +* `pydantic.errors.NumberNotMultipleError` +* `pydantic.errors.PathError` +* `pydantic.errors.PathNotADirectoryError` +* `pydantic.errors.PathNotAFileError` +* `pydantic.errors.PathNotExistsError` +* `pydantic.errors.PatternError` +* `pydantic.errors.PyObjectError` +* `pydantic.errors.PydanticTypeError` +* `pydantic.errors.PydanticValueError` +* `pydantic.errors.SequenceError` +* `pydantic.errors.SetError` +* `pydantic.errors.SetMaxLengthError` +* `pydantic.errors.SetMinLengthError` +* `pydantic.errors.StrError` +* `pydantic.errors.StrRegexError` +* `pydantic.errors.StrictBoolError` +* `pydantic.errors.SubclassError` +* `pydantic.errors.TimeError` +* `pydantic.errors.TupleError` +* `pydantic.errors.TupleLengthError` +* `pydantic.errors.UUIDError` +* `pydantic.errors.UUIDVersionError` +* `pydantic.errors.UrlError` +* `pydantic.errors.UrlExtraError` +* `pydantic.errors.UrlHostError` +* `pydantic.errors.UrlHostTldError` +* `pydantic.errors.UrlPortError` +* `pydantic.errors.UrlSchemeError` +* `pydantic.errors.UrlSchemePermittedError` +* `pydantic.errors.UrlUserInfoError` +* `pydantic.errors.WrongConstantError` +* `pydantic.main.validate_model` +* `pydantic.networks.stricturl` +* `pydantic.parse_file_as` +* `pydantic.parse_raw_as` +* `pydantic.stricturl` +* `pydantic.tools.parse_file_as` +* `pydantic.tools.parse_raw_as` +* `pydantic.types.JsonWrapper` +* `pydantic.types.NoneBytes` +* `pydantic.types.NoneStr` +* `pydantic.types.NoneStrBytes` +* `pydantic.types.PyObject` +* `pydantic.types.StrBytes` +* `pydantic.typing.evaluate_forwardref` +* `pydantic.typing.AbstractSetIntStr` +* `pydantic.typing.AnyCallable` +* `pydantic.typing.AnyClassMethod` +* `pydantic.typing.CallableGenerator` +* `pydantic.typing.DictAny` +* `pydantic.typing.DictIntStrAny` +* `pydantic.typing.DictStrAny` +* `pydantic.typing.IntStr` +* `pydantic.typing.ListStr` +* `pydantic.typing.MappingIntStrAny` +* `pydantic.typing.NoArgAnyCallable` +* `pydantic.typing.NoneType` +* `pydantic.typing.ReprArgs` +* `pydantic.typing.SetStr` +* `pydantic.typing.StrPath` +* `pydantic.typing.TupleGenerator` +* `pydantic.typing.WithArgsTypes` +* `pydantic.typing.all_literal_values` +* `pydantic.typing.display_as_type` +* `pydantic.typing.get_all_type_hints` +* `pydantic.typing.get_args` +* `pydantic.typing.get_origin` +* `pydantic.typing.get_sub_types` +* `pydantic.typing.is_callable_type` +* `pydantic.typing.is_classvar` +* `pydantic.typing.is_finalvar` +* `pydantic.typing.is_literal_type` +* `pydantic.typing.is_namedtuple` +* `pydantic.typing.is_new_type` +* `pydantic.typing.is_none_type` +* `pydantic.typing.is_typeddict` +* `pydantic.typing.is_typeddict_special` +* `pydantic.typing.is_union` +* `pydantic.typing.new_type_supertype` +* `pydantic.typing.resolve_annotations` +* `pydantic.typing.typing_base` +* `pydantic.typing.update_field_forward_refs` +* `pydantic.typing.update_model_forward_refs` +* `pydantic.utils.ClassAttribute` +* `pydantic.utils.DUNDER_ATTRIBUTES` +* `pydantic.utils.PyObjectStr` +* `pydantic.utils.ValueItems` +* `pydantic.utils.almost_equal_floats` +* `pydantic.utils.get_discriminator_alias_and_values` +* `pydantic.utils.get_model` +* `pydantic.utils.get_unique_discriminator_alias` +* `pydantic.utils.in_ipython` +* `pydantic.utils.is_valid_identifier` +* `pydantic.utils.path_type` +* `pydantic.utils.validate_field_name` +* `pydantic.validate_model` diff --git a/docs/version-policy.md b/docs/version-policy.md index fecba91069f..2aa526b3d0e 100644 --- a/docs/version-policy.md +++ b/docs/version-policy.md @@ -77,7 +77,6 @@ warnings.filterwarnings('ignore', category=PydanticExperimentalWarning) c. As a last step, the experimental version of the feature is entirely removed from the codebase. - If the feature is unsuccessful or unpopular, it's removed with little notice. A stub will remain in the location of the deprecated feature with an error message. Thanks to [streamlit](https://docs.streamlit.io/develop/quick-reference/prerelease) for the inspiration for the lifecycle and naming conventions of our new experimental feature patterns. diff --git a/release/README.md b/release/README.md index 7768722e1cc..ca3cabeabd9 100644 --- a/release/README.md +++ b/release/README.md @@ -1,24 +1,24 @@ -# Release Instructions. +# Release Instructions -**Note:** _This should only apply to maintainers when prepare for and publishing a new release._ +**Note:** *This should only apply to maintainers when preparing for and publishing a new release.* -## Prerequisites: +## Prerequisites -* `gh` cli is installed - see installation instructions [here](https://docs.github.com/en/github-cli/github-cli/quickstart) - * Run `gh auth login` to authenticate with GitHub, which is needed for the API calls made in the release process. +* gh` cli is installed - see installation instructions [here](https://docs.github.com/en/github-cli/github-cli/quickstart) + * Run `gh auth login` to authenticate with GitHub, which is needed for the API calls made in the release process. -## Semi-automated Release Process: +## Semi-automated Release Process 1. Run `uv run release/prepare.py {VERSION}` from the root of the repository. This will: * Update the version number in the `version.py` file and run `uv lock -P pydantic` to update the lock file. * Add a new section to HISTORY.md with a title containing the version number tag and current date. * If you just want to see the effect of the script without making any changes, you can add the `--dry-run` flag. 2. Curate the changes in HISTORY.md: - - make sure the markdown is valid; in particular, check text that should be in `code-blocks` is. - - mark any breaking changes with `**Breaking Change:**` - - curate the list of pydantic-core updates in the `packaging` section: - - check the corresponding Pydantic-core releases for any highlights to manually add to the history - - deduplicate the `packaging` entries to include only the most recent version bumps for each package + * make sure the markdown is valid; in particular, check text that should be in `code-blocks` is. + * mark any breaking changes with `**Breaking Change:**` + * curate the list of pydantic-core updates in the `packaging` section: + * check the corresponding Pydantic-core releases for any highlights to manually add to the history + * deduplicate the `packaging` entries to include only the most recent version bumps for each package 3. Run `uv run release/push.py` from the root of the repository. This will: * Create a PR with the changes you made in the previous steps. * Add a label to the PR to indicate that it's a release PR. @@ -34,16 +34,16 @@ To create a new release: 2. Add a new section to HISTORY.md with a title containing the version number tag and current date in this format , `## {version} ({date})` example: `## v2.11.0a2 (2025-02-10)`. 3. Copy the changes generated by GitHub and paste them in the new section of HISTORY.md. 4. **Important:** curate the changes in `HISTORY.md`: - - make sure the markdown is valid; in particular, check text that should be in `code-blocks` is. - - mark any breaking changes with `**Breaking Change:**` - - curate the list of pydantic-core updates in the `packaging` section: - - check the corresponding pydantic-core releases for any highlights to manually add to the history - - deduplicate the `packaging` entries to include only the most recent version bumps for each package + * make sure the markdown is valid; in particular, check text that should be in `code-blocks` is. + * mark any breaking changes with `**Breaking Change:**` + * curate the list of pydantic-core updates in the `packaging` section: + * check the corresponding pydantic-core releases for any highlights to manually add to the history + * deduplicate the `packaging` entries to include only the most recent version bumps for each package 5. Create a pull request with these changes. 6. Once the pull request is merged, create a new release on GitHub: - - the tag should be `v{VERSION}` - - the title should be `v{VERSION} {DATE}` - - the body should contain: - - a copy-paste of the `HISTORY.md` section you prepared previously, plus - - a full changelog link in the form `Full Changelog: https://github.com/pydantic/pydantic/compare/v{PREV_VERSION}...v{VERSION}/` -7. Ask @samuelcolvin or @dmontagu to approve the release once CI has run. + * the tag should be `v{VERSION}` + * the title should be `v{VERSION} {DATE}` + * the body should contain: + * a copy-paste of the `HISTORY.md` section you prepared previously, plus + * a full changelog link in the form `Full Changelog: https://github.com/pydantic/pydantic/compare/v{PREV_VERSION}...v{VERSION}/` +7. Ask @samuelcolvin, or @dmontagu to approve the release once CI has run. diff --git a/tests/mypy/README.md b/tests/mypy/README.md index af6e22973ec..ac47be46de6 100644 --- a/tests/mypy/README.md +++ b/tests/mypy/README.md @@ -6,7 +6,6 @@ > to using the [`pytest-mypy-plugins`][https://github.com/TypedDjango/pytest-mypy-plugins] library, which > provides more flexibility when it comes to merging different mypy configurations. - The `test_mypy_results` test defined in [`test_mypy.py`](./test_mypy.py) runs Mypy on the files defined in [`modules/`](./modules/), using the configuration files from [`configs/`](./configs/). @@ -43,30 +42,30 @@ model = Model(a=1, b=2) 1. Define a new file in the [`modules/`](./modules/) folder: - ```python - # modules/new_test.py + ```python + # modules/new_test.py - class Model(BaseModel): - a: int + class Model(BaseModel): + a: int - model = Model(a=1, b=2) - ``` + model = Model(a=1, b=2) + ``` 2. Add the new file in the defined `cases` in [`test_mypy.py`](./test_mypy.py), together with a configuration file: - ```python - cases: list[ParameterSet | tuple[str, str]] = [ - ..., - # One-off cases - *[ - ('mypy-plugin.ini', 'custom_constructor.py'), - ('mypy-plugin.ini', 'config_conditional_extra.py'), - ..., - ('mypy-plugin.ini', 'new_test.py'), # <-- new test added. - ] - ``` + ```python + cases: list[ParameterSet | tuple[str, str]] = [ + ..., + # One-off cases + *[ + ('mypy-plugin.ini', 'custom_constructor.py'), + ('mypy-plugin.ini', 'config_conditional_extra.py'), + ..., + ('mypy-plugin.ini', 'new_test.py'), # <-- new test added. + ] + ``` 3. Run `make test-mypy-update-all`. It should create a new output with your new file. From 3382fb1b356ffd649f75dfa790226bd017495639 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Fri, 9 May 2025 19:17:43 +0200 Subject: [PATCH 052/106] Always make use of `inspect.getsourcelines()` for docstring extraction on Python 3.13 and greater (#11829) --- pydantic/_internal/_docs_extraction.py | 9 ++++- pydantic/config.py | 2 +- pydantic/dataclasses.py | 8 +++- tests/test_docs_extraction.py | 52 ++++++++++++++++++++++---- 4 files changed, 60 insertions(+), 11 deletions(-) diff --git a/pydantic/_internal/_docs_extraction.py b/pydantic/_internal/_docs_extraction.py index 7b5f310fe22..6df77bf6c77 100644 --- a/pydantic/_internal/_docs_extraction.py +++ b/pydantic/_internal/_docs_extraction.py @@ -4,6 +4,7 @@ import ast import inspect +import sys import textwrap from typing import Any @@ -89,13 +90,17 @@ def extract_docstrings_from_cls(cls: type[Any], use_inspect: bool = False) -> di Returns: A mapping containing attribute names and their corresponding docstring. """ - if use_inspect: - # Might not work as expected if two classes have the same name in the same source file. + if use_inspect or sys.version_info >= (3, 13): + # On Python < 3.13, `inspect.getsourcelines()` might not work as expected + # if two classes have the same name in the same source file. + # On Python 3.13+, it will use the new `__firstlineno__` class attribute, + # making it way more robust. try: source, _ = inspect.getsourcelines(cls) except OSError: # pragma: no cover return {} else: + # TODO remove this implementation when we drop support for Python 3.12: source = _extract_source_from_frame(cls) if not source: diff --git a/pydantic/config.py b/pydantic/config.py index ac8020e664d..55fe28ef4e0 100644 --- a/pydantic/config.py +++ b/pydantic/config.py @@ -1013,7 +1013,7 @@ class Model(BaseModel): [`TypedDict`][typing.TypedDict] and stdlib dataclasses, in particular when: - inheritance is being used. - - multiple classes have the same name in the same source file. + - multiple classes have the same name in the same source file (unless Python 3.13 or greater is used). ''' cache_strings: bool | Literal['all', 'keys', 'none'] diff --git a/pydantic/dataclasses.py b/pydantic/dataclasses.py index 6c5fdd45eb5..f6d817d8143 100644 --- a/pydantic/dataclasses.py +++ b/pydantic/dataclasses.py @@ -298,10 +298,16 @@ def _dataclass_setstate(self: Any, state: list[Any]) -> None: # This is an undocumented attribute to distinguish stdlib/Pydantic dataclasses. # It should be set as early as possible: cls.__is_pydantic_dataclass__ = True - cls.__pydantic_decorators__ = decorators # type: ignore cls.__doc__ = original_doc + # Can be non-existent for dynamically created classes: + firstlineno = getattr(original_cls, '__firstlineno__', None) cls.__module__ = original_cls.__module__ + if sys.version_info >= (3, 13) and firstlineno is not None: + # As per https://docs.python.org/3/reference/datamodel.html#type.__firstlineno__: + # Setting the `__module__` attribute removes the `__firstlineno__` item from the type’s dictionary. + original_cls.__firstlineno__ = firstlineno + cls.__firstlineno__ = firstlineno cls.__qualname__ = original_cls.__qualname__ cls.__pydantic_complete__ = False # `complete_dataclass` will set it to `True` if successful. # TODO `parent_namespace` is currently None, but we could do the same thing as Pydantic models: diff --git a/tests/test_docs_extraction.py b/tests/test_docs_extraction.py index 27ba32ed6e2..a17bf9b39a5 100644 --- a/tests/test_docs_extraction.py +++ b/tests/test_docs_extraction.py @@ -1,3 +1,4 @@ +import sys import textwrap from dataclasses import dataclass from typing import Annotated, Generic, TypeVar @@ -173,7 +174,6 @@ class MyModel(BaseModel): ) MyModel.__name__ = 'OtherModel' - print(MyModel.__name__) assert MyModel.model_fields['a'].description == 'A docs' @@ -270,12 +270,50 @@ class MyModel: ta = TypeAdapter(MyModel) - assert ta.json_schema() == { - 'properties': {'a': {'title': 'A', 'type': 'integer', 'description': 'A docs'}}, - 'required': ['a'], - 'title': 'MyModel', - 'type': 'object', - } + assert ta.json_schema()['properties']['a']['description'] == 'A docs' + + +@pytest.mark.xfail( + condition=sys.version_info < (3, 13), + reason=( + 'Since Python 3.13, we can leverage the new `__firstlineno__` class attribute, ' + 'used by `inspect.getsourcelines().' + ), +) +def test_stdlib_docs_extraction_duplicate_class(): + @dataclass + @with_config({'use_attribute_docstrings': True}) + class MyModel: + a: int + """A docs""" + + @dataclass + @with_config({'use_attribute_docstrings': True}) + class MyModel: + b: int + """B docs""" + + ta = TypeAdapter(MyModel) + assert ta.json_schema()['properties']['b']['description'] == 'B docs' + + if True: + + @dataclass + @with_config({'use_attribute_docstrings': True}) + class MyModel: + a: int + """A docs""" + + else: + + @dataclass + @with_config({'use_attribute_docstrings': True}) + class MyModel: + b: int + """B docs""" + + ta = TypeAdapter(MyModel) + assert ta.json_schema()['properties']['a']['description'] == 'A docs' @pytest.mark.xfail(reason='Current implementation does not take inheritance into account.') From 56b340ae2aa5fb6e6e37b1cabd4d6eeaed208e4c Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Mon, 12 May 2025 12:56:31 +0200 Subject: [PATCH 053/106] Ignore Markdown lint commit in git blame (#11856) --- .git-blame-ignore-revs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index a5a4f89f356..96e2d8889af 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -7,3 +7,5 @@ 918402f01d82694214ff93cd77ff62d5d5beb1ab # Ruff 0.4.8: 332e77ba3b658c2a57fc72f832587b72311d87c7 +# Markdownlint: +c4f0262bd64734751a68846a10edd6cdc6acc6f6 From 103f64da67ad23dfdc7406187db32019a0204d70 Mon Sep 17 00:00:00 2001 From: Isaac To Date: Tue, 13 May 2025 03:47:28 -0700 Subject: [PATCH 054/106] Improve documentation regarding `json_schema_input_type` (#11858) Co-authored-by: Douwe Maan --- pydantic/functional_validators.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pydantic/functional_validators.py b/pydantic/functional_validators.py index 8b0ea318287..67e65ebd90c 100644 --- a/pydantic/functional_validators.py +++ b/pydantic/functional_validators.py @@ -94,8 +94,8 @@ class BeforeValidator: Attributes: func: The validator function. - json_schema_input_type: The input type of the function. This is only used to generate the appropriate - JSON Schema (in validation mode). + json_schema_input_type: The input type used to generate the appropriate + JSON Schema (in validation mode). The actual input type is `Any`. Example: ```python @@ -166,8 +166,8 @@ class PlainValidator: Attributes: func: The validator function. - json_schema_input_type: The input type of the function. This is only used to generate the appropriate - JSON Schema (in validation mode). If not provided, will default to `Any`. + json_schema_input_type: The input type used to generate the appropriate + JSON Schema (in validation mode). The actual input type is `Any`. Example: ```python @@ -257,8 +257,8 @@ class WrapValidator: Attributes: func: The validator function. - json_schema_input_type: The input type of the function. This is only used to generate the appropriate - JSON Schema (in validation mode). + json_schema_input_type: The input type used to generate the appropriate + JSON Schema (in validation mode). The actual input type is `Any`. ```python from datetime import datetime From 15c37539e094808584711816b46e68b51112e343 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Fri, 16 May 2025 15:44:44 +0200 Subject: [PATCH 055/106] Only support the latest Mypy version (#11832) Simplify test code, update support policy, update CI. Bump mypy to 1.15. Require uv>=0.7.2, as the lockfile format was updated. --- .github/workflows/ci.yml | 32 +- Makefile | 7 - docs/integrations/mypy.md | 8 +- pyproject.toml | 1 + tests/mypy/README.md | 2 +- .../mypy-default_ini/metaclass_args.py | 0 .../mypy-default_ini/plugin_success.py | 0 .../plugin_success_baseConfig.py | 0 .../mypy-default_ini/pydantic_settings.py | 0 .../mypy-default_ini/root_models.py | 0 .../mypy-plugin-strict_ini/fail_defaults.py | 0 .../mypy-plugin-strict_ini/plugin_fail.py | 0 .../plugin_fail_baseConfig.py | 0 .../mypy-plugin-strict_ini/plugin_success.py | 0 .../plugin_success_baseConfig.py | 0 .../metaclass_args.py | 0 .../mypy-plugin_ini/custom_constructor.py | 0 .../decorator_implicit_classmethod.py | 0 .../mypy-plugin_ini/frozen_field.py | 0 .../mypy-plugin_ini/plugin_fail.py | 0 .../mypy-plugin_ini/plugin_fail_baseConfig.py | 0 .../plugin_optional_inheritance.py | 0 .../mypy-plugin_ini/plugin_strict_fields.py | 0 .../mypy-plugin_ini/pydantic_settings.py | 0 .../mypy-plugin_ini/root_models.py | 0 .../pydantic_settings.py | 0 .../pyproject-default_toml/root_models.py | 0 .../strict_equality.py | 0 .../fail_defaults.py | 0 .../plugin_fail.py | 0 .../plugin_fail_baseConfig.py | 0 .../plugin_success.py | 0 .../plugin_success_baseConfig.py | 0 .../decorator_implicit_classmethod.py | 0 .../pyproject-plugin_toml/plugin_fail.py | 0 .../plugin_fail_baseConfig.py | 0 .../pydantic_settings.py | 0 tests/mypy/test_mypy.py | 57 +- uv.lock | 3078 ++++++++--------- 39 files changed, 1555 insertions(+), 1630 deletions(-) rename tests/mypy/outputs/{1.10.1 => }/mypy-default_ini/metaclass_args.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-default_ini/plugin_success.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-default_ini/plugin_success_baseConfig.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-default_ini/pydantic_settings.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-default_ini/root_models.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin-strict_ini/fail_defaults.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin-strict_ini/plugin_fail.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin-strict_ini/plugin_fail_baseConfig.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin-strict_ini/plugin_success.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin-strict_ini/plugin_success_baseConfig.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin-very-strict_ini/metaclass_args.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin_ini/custom_constructor.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin_ini/decorator_implicit_classmethod.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin_ini/frozen_field.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin_ini/plugin_fail.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin_ini/plugin_fail_baseConfig.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin_ini/plugin_optional_inheritance.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin_ini/plugin_strict_fields.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin_ini/pydantic_settings.py (100%) rename tests/mypy/outputs/{1.10.1 => }/mypy-plugin_ini/root_models.py (100%) rename tests/mypy/outputs/{1.10.1 => }/pyproject-default_toml/pydantic_settings.py (100%) rename tests/mypy/outputs/{1.10.1 => }/pyproject-default_toml/root_models.py (100%) rename tests/mypy/outputs/{1.10.1 => }/pyproject-plugin-strict-equality_toml/strict_equality.py (100%) rename tests/mypy/outputs/{1.10.1 => }/pyproject-plugin-strict_toml/fail_defaults.py (100%) rename tests/mypy/outputs/{1.10.1 => }/pyproject-plugin-strict_toml/plugin_fail.py (100%) rename tests/mypy/outputs/{1.10.1 => }/pyproject-plugin-strict_toml/plugin_fail_baseConfig.py (100%) rename tests/mypy/outputs/{1.10.1 => }/pyproject-plugin-strict_toml/plugin_success.py (100%) rename tests/mypy/outputs/{1.10.1 => }/pyproject-plugin-strict_toml/plugin_success_baseConfig.py (100%) rename tests/mypy/outputs/{1.10.1 => }/pyproject-plugin_toml/decorator_implicit_classmethod.py (100%) rename tests/mypy/outputs/{1.10.1 => }/pyproject-plugin_toml/plugin_fail.py (100%) rename tests/mypy/outputs/{1.10.1 => }/pyproject-plugin_toml/plugin_fail_baseConfig.py (100%) rename tests/mypy/outputs/{1.10.1 => }/pyproject-plugin_toml/pydantic_settings.py (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 70cbd2e054a..16dbda9b2b4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -180,52 +180,30 @@ jobs: TEST_PLUGIN: 1 test-mypy: - name: mypy ${{ matrix.mypy-version }} / ${{ matrix.python-version }} + name: Mypy typechecking tests runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - # test the latest version on all supported Python versions and the rest on 3.12 - mypy-version: ['1.10.1', '1.11.2'] - python-version: ['3.12'] - include: - - mypy-version: '1.12.0' - python-version: '3.9' - - mypy-version: '1.12.0' - python-version: '3.10' - - mypy-version: '1.12.0' - python-version: '3.11' - - mypy-version: '1.12.0' - python-version: '3.12' - - mypy-version: '1.12.0' - python-version: '3.13' - steps: - uses: actions/checkout@v4 - uses: astral-sh/setup-uv@v6 with: - python-version: ${{ matrix.python-version }} + python-version: '3.13' - name: Install dependencies run: uv sync --group typechecking --all-extras - - name: Install mypy - if: steps.cache.outputs.cache-hit != 'true' - run: uv pip install 'mypy==${{ matrix.mypy-version }}' - - run: mkdir coverage - name: Run mypy tests run: uv run coverage run -m pytest tests/mypy --test-mypy env: - COVERAGE_FILE: coverage/.coverage.linux-py${{ matrix.python-version }}-mypy${{ matrix.mypy-version }} - CONTEXT: linux-py${{ matrix.python-version }}-mypy${{ matrix.mypy-version }} + COVERAGE_FILE: coverage/.coverage.linux-mypy + CONTEXT: linux-mypy - name: Store coverage files uses: actions/upload-artifact@v4 with: - name: coverage-${{ matrix.python-version }}-mypy${{ matrix.mypy-version }} + name: coverage-mypy path: coverage include-hidden-files: true diff --git a/Makefile b/Makefile index 41b77111d90..36c5b1e7582 100644 --- a/Makefile +++ b/Makefile @@ -46,13 +46,6 @@ test-mypy: .uv test-mypy-update: .uv uv run coverage run -m pytest tests/mypy --test-mypy --update-mypy -.PHONY: test-mypy-update-all ## Update the mypy integration tests for all mypy versions -test-mypy-update-all: .uv - rm -rf tests/mypy/outputs - uv pip install mypy==1.10.1 && make test-mypy-update - uv pip install mypy==1.11.2 && make test-mypy-update - uv pip install mypy==1.12.0 && make test-mypy-update - .PHONY: test-typechecking-pyright ## Typechecking integration tests (Pyright) test-typechecking-pyright: .uv uv run bash -c 'cd tests/typechecking && pyright --version && pyright -p pyproject.toml' diff --git a/docs/integrations/mypy.md b/docs/integrations/mypy.md index da4d8371196..1be16623241 100644 --- a/docs/integrations/mypy.md +++ b/docs/integrations/mypy.md @@ -52,6 +52,8 @@ Note that mypy already supports some features without using the Pydantic plugin, method for Pydantic models and dataclasses. See the [mypy plugin capabilities](#mypy-plugin-capabilities) for a list of additional features. +The Pydantic mypy plugin is tested against the latest mypy version. Older versions might work but won't be tested. + ## Enabling the Plugin To enable the plugin, just add `pydantic.mypy` to the list of plugins in your @@ -77,12 +79,6 @@ To enable the plugin, just add `pydantic.mypy` to the list of plugins in your See the [plugin configuration](#configuring-the-plugin) for more details. -## Supported mypy versions - -Pydantic supports the mypy versions released less than 6 months ago. Older versions may still work with the plugin -but won't be tested. The list of released mypy versions can be found [here](https://mypy-lang.org/news.html). Note -that the version support policy is subject to change at discretion of contributors. - ## Mypy plugin capabilities ### Generate a `__init__` signature for Pydantic models diff --git a/pyproject.toml b/pyproject.toml index fc22ada4b48..4f073adaa8b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -182,6 +182,7 @@ markers = [ [tool.uv] default-groups = ['dev'] +required-version = '>=0.7.2' # configuring https://github.com/pydantic/hooky [tool.hooky] diff --git a/tests/mypy/README.md b/tests/mypy/README.md index ac47be46de6..220a72433f2 100644 --- a/tests/mypy/README.md +++ b/tests/mypy/README.md @@ -67,7 +67,7 @@ model = Model(a=1, b=2) ] ``` -3. Run `make test-mypy-update-all`. It should create a new output with your new file. +3. Run `make test-mypy-update`. It should create a new output with your new file. 4. Make sure the output contains the expected Mypy error message/code. diff --git a/tests/mypy/outputs/1.10.1/mypy-default_ini/metaclass_args.py b/tests/mypy/outputs/mypy-default_ini/metaclass_args.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-default_ini/metaclass_args.py rename to tests/mypy/outputs/mypy-default_ini/metaclass_args.py diff --git a/tests/mypy/outputs/1.10.1/mypy-default_ini/plugin_success.py b/tests/mypy/outputs/mypy-default_ini/plugin_success.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-default_ini/plugin_success.py rename to tests/mypy/outputs/mypy-default_ini/plugin_success.py diff --git a/tests/mypy/outputs/1.10.1/mypy-default_ini/plugin_success_baseConfig.py b/tests/mypy/outputs/mypy-default_ini/plugin_success_baseConfig.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-default_ini/plugin_success_baseConfig.py rename to tests/mypy/outputs/mypy-default_ini/plugin_success_baseConfig.py diff --git a/tests/mypy/outputs/1.10.1/mypy-default_ini/pydantic_settings.py b/tests/mypy/outputs/mypy-default_ini/pydantic_settings.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-default_ini/pydantic_settings.py rename to tests/mypy/outputs/mypy-default_ini/pydantic_settings.py diff --git a/tests/mypy/outputs/1.10.1/mypy-default_ini/root_models.py b/tests/mypy/outputs/mypy-default_ini/root_models.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-default_ini/root_models.py rename to tests/mypy/outputs/mypy-default_ini/root_models.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin-strict_ini/fail_defaults.py b/tests/mypy/outputs/mypy-plugin-strict_ini/fail_defaults.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin-strict_ini/fail_defaults.py rename to tests/mypy/outputs/mypy-plugin-strict_ini/fail_defaults.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin-strict_ini/plugin_fail.py b/tests/mypy/outputs/mypy-plugin-strict_ini/plugin_fail.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin-strict_ini/plugin_fail.py rename to tests/mypy/outputs/mypy-plugin-strict_ini/plugin_fail.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin-strict_ini/plugin_fail_baseConfig.py b/tests/mypy/outputs/mypy-plugin-strict_ini/plugin_fail_baseConfig.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin-strict_ini/plugin_fail_baseConfig.py rename to tests/mypy/outputs/mypy-plugin-strict_ini/plugin_fail_baseConfig.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin-strict_ini/plugin_success.py b/tests/mypy/outputs/mypy-plugin-strict_ini/plugin_success.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin-strict_ini/plugin_success.py rename to tests/mypy/outputs/mypy-plugin-strict_ini/plugin_success.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin-strict_ini/plugin_success_baseConfig.py b/tests/mypy/outputs/mypy-plugin-strict_ini/plugin_success_baseConfig.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin-strict_ini/plugin_success_baseConfig.py rename to tests/mypy/outputs/mypy-plugin-strict_ini/plugin_success_baseConfig.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin-very-strict_ini/metaclass_args.py b/tests/mypy/outputs/mypy-plugin-very-strict_ini/metaclass_args.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin-very-strict_ini/metaclass_args.py rename to tests/mypy/outputs/mypy-plugin-very-strict_ini/metaclass_args.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin_ini/custom_constructor.py b/tests/mypy/outputs/mypy-plugin_ini/custom_constructor.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin_ini/custom_constructor.py rename to tests/mypy/outputs/mypy-plugin_ini/custom_constructor.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin_ini/decorator_implicit_classmethod.py b/tests/mypy/outputs/mypy-plugin_ini/decorator_implicit_classmethod.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin_ini/decorator_implicit_classmethod.py rename to tests/mypy/outputs/mypy-plugin_ini/decorator_implicit_classmethod.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin_ini/frozen_field.py b/tests/mypy/outputs/mypy-plugin_ini/frozen_field.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin_ini/frozen_field.py rename to tests/mypy/outputs/mypy-plugin_ini/frozen_field.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin_ini/plugin_fail.py b/tests/mypy/outputs/mypy-plugin_ini/plugin_fail.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin_ini/plugin_fail.py rename to tests/mypy/outputs/mypy-plugin_ini/plugin_fail.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin_ini/plugin_fail_baseConfig.py b/tests/mypy/outputs/mypy-plugin_ini/plugin_fail_baseConfig.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin_ini/plugin_fail_baseConfig.py rename to tests/mypy/outputs/mypy-plugin_ini/plugin_fail_baseConfig.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin_ini/plugin_optional_inheritance.py b/tests/mypy/outputs/mypy-plugin_ini/plugin_optional_inheritance.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin_ini/plugin_optional_inheritance.py rename to tests/mypy/outputs/mypy-plugin_ini/plugin_optional_inheritance.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin_ini/plugin_strict_fields.py b/tests/mypy/outputs/mypy-plugin_ini/plugin_strict_fields.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin_ini/plugin_strict_fields.py rename to tests/mypy/outputs/mypy-plugin_ini/plugin_strict_fields.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin_ini/pydantic_settings.py b/tests/mypy/outputs/mypy-plugin_ini/pydantic_settings.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin_ini/pydantic_settings.py rename to tests/mypy/outputs/mypy-plugin_ini/pydantic_settings.py diff --git a/tests/mypy/outputs/1.10.1/mypy-plugin_ini/root_models.py b/tests/mypy/outputs/mypy-plugin_ini/root_models.py similarity index 100% rename from tests/mypy/outputs/1.10.1/mypy-plugin_ini/root_models.py rename to tests/mypy/outputs/mypy-plugin_ini/root_models.py diff --git a/tests/mypy/outputs/1.10.1/pyproject-default_toml/pydantic_settings.py b/tests/mypy/outputs/pyproject-default_toml/pydantic_settings.py similarity index 100% rename from tests/mypy/outputs/1.10.1/pyproject-default_toml/pydantic_settings.py rename to tests/mypy/outputs/pyproject-default_toml/pydantic_settings.py diff --git a/tests/mypy/outputs/1.10.1/pyproject-default_toml/root_models.py b/tests/mypy/outputs/pyproject-default_toml/root_models.py similarity index 100% rename from tests/mypy/outputs/1.10.1/pyproject-default_toml/root_models.py rename to tests/mypy/outputs/pyproject-default_toml/root_models.py diff --git a/tests/mypy/outputs/1.10.1/pyproject-plugin-strict-equality_toml/strict_equality.py b/tests/mypy/outputs/pyproject-plugin-strict-equality_toml/strict_equality.py similarity index 100% rename from tests/mypy/outputs/1.10.1/pyproject-plugin-strict-equality_toml/strict_equality.py rename to tests/mypy/outputs/pyproject-plugin-strict-equality_toml/strict_equality.py diff --git a/tests/mypy/outputs/1.10.1/pyproject-plugin-strict_toml/fail_defaults.py b/tests/mypy/outputs/pyproject-plugin-strict_toml/fail_defaults.py similarity index 100% rename from tests/mypy/outputs/1.10.1/pyproject-plugin-strict_toml/fail_defaults.py rename to tests/mypy/outputs/pyproject-plugin-strict_toml/fail_defaults.py diff --git a/tests/mypy/outputs/1.10.1/pyproject-plugin-strict_toml/plugin_fail.py b/tests/mypy/outputs/pyproject-plugin-strict_toml/plugin_fail.py similarity index 100% rename from tests/mypy/outputs/1.10.1/pyproject-plugin-strict_toml/plugin_fail.py rename to tests/mypy/outputs/pyproject-plugin-strict_toml/plugin_fail.py diff --git a/tests/mypy/outputs/1.10.1/pyproject-plugin-strict_toml/plugin_fail_baseConfig.py b/tests/mypy/outputs/pyproject-plugin-strict_toml/plugin_fail_baseConfig.py similarity index 100% rename from tests/mypy/outputs/1.10.1/pyproject-plugin-strict_toml/plugin_fail_baseConfig.py rename to tests/mypy/outputs/pyproject-plugin-strict_toml/plugin_fail_baseConfig.py diff --git a/tests/mypy/outputs/1.10.1/pyproject-plugin-strict_toml/plugin_success.py b/tests/mypy/outputs/pyproject-plugin-strict_toml/plugin_success.py similarity index 100% rename from tests/mypy/outputs/1.10.1/pyproject-plugin-strict_toml/plugin_success.py rename to tests/mypy/outputs/pyproject-plugin-strict_toml/plugin_success.py diff --git a/tests/mypy/outputs/1.10.1/pyproject-plugin-strict_toml/plugin_success_baseConfig.py b/tests/mypy/outputs/pyproject-plugin-strict_toml/plugin_success_baseConfig.py similarity index 100% rename from tests/mypy/outputs/1.10.1/pyproject-plugin-strict_toml/plugin_success_baseConfig.py rename to tests/mypy/outputs/pyproject-plugin-strict_toml/plugin_success_baseConfig.py diff --git a/tests/mypy/outputs/1.10.1/pyproject-plugin_toml/decorator_implicit_classmethod.py b/tests/mypy/outputs/pyproject-plugin_toml/decorator_implicit_classmethod.py similarity index 100% rename from tests/mypy/outputs/1.10.1/pyproject-plugin_toml/decorator_implicit_classmethod.py rename to tests/mypy/outputs/pyproject-plugin_toml/decorator_implicit_classmethod.py diff --git a/tests/mypy/outputs/1.10.1/pyproject-plugin_toml/plugin_fail.py b/tests/mypy/outputs/pyproject-plugin_toml/plugin_fail.py similarity index 100% rename from tests/mypy/outputs/1.10.1/pyproject-plugin_toml/plugin_fail.py rename to tests/mypy/outputs/pyproject-plugin_toml/plugin_fail.py diff --git a/tests/mypy/outputs/1.10.1/pyproject-plugin_toml/plugin_fail_baseConfig.py b/tests/mypy/outputs/pyproject-plugin_toml/plugin_fail_baseConfig.py similarity index 100% rename from tests/mypy/outputs/1.10.1/pyproject-plugin_toml/plugin_fail_baseConfig.py rename to tests/mypy/outputs/pyproject-plugin_toml/plugin_fail_baseConfig.py diff --git a/tests/mypy/outputs/1.10.1/pyproject-plugin_toml/pydantic_settings.py b/tests/mypy/outputs/pyproject-plugin_toml/pydantic_settings.py similarity index 100% rename from tests/mypy/outputs/1.10.1/pyproject-plugin_toml/pydantic_settings.py rename to tests/mypy/outputs/pyproject-plugin_toml/pydantic_settings.py diff --git a/tests/mypy/test_mypy.py b/tests/mypy/test_mypy.py index 09ed5861746..679d184f95e 100644 --- a/tests/mypy/test_mypy.py +++ b/tests/mypy/test_mypy.py @@ -1,11 +1,9 @@ from __future__ import annotations -import dataclasses import importlib import os import re import sys -from bisect import insort from collections.abc import Collection from pathlib import Path from typing import TYPE_CHECKING @@ -37,6 +35,7 @@ MYPY_VERSION_TUPLE = parse_mypy_version(mypy_version) PYDANTIC_ROOT = Path(__file__).parent.parent.parent +OUTPUTS_DIR = PYDANTIC_ROOT / 'tests/mypy/outputs' pytestmark = pytest.mark.skipif( '--test-mypy' not in sys.argv @@ -71,9 +70,6 @@ def build_cases( *build_cases( ['mypy-default.ini', 'pyproject-default.toml'], ['root_models.py'], - pytest.mark.skipif( - MYPY_VERSION_TUPLE < (1, 1, 1), reason='`dataclass_transform` only supported on mypy >= 1.1.1' - ), ), *build_cases( ['mypy-default.ini'], @@ -122,45 +118,6 @@ def build_cases( ] -@dataclasses.dataclass -class MypyTestConfig: - existing_output_path: Path | None - """The path pointing to the existing test result, or `None` if this is the first time the test is run.""" - - current_output_path: Path - """The path pointing to the current test result to be created or compared to the existing one.""" - - -def get_test_config(module_path: Path, config_path: Path) -> MypyTestConfig: - """Given a file to test with a specific config, get a test config.""" - - outputs_dir = PYDANTIC_ROOT / 'tests/mypy/outputs' - outputs_dir.mkdir(exist_ok=True) - existing_versions = [ - x.name for x in outputs_dir.iterdir() if x.is_dir() and re.match(r'[0-9]+(?:\.[0-9]+)*', x.name) - ] - - def _convert_to_output_path(v: str) -> Path: - return outputs_dir / v / config_path.name.replace('.', '_') / module_path.name - - existing: Path | None = None - - # Build sorted list of (parsed_version, version) pairs, including the current mypy version being used - parsed_version_pairs = sorted((parse_mypy_version(v), v) for v in existing_versions) - if MYPY_VERSION_TUPLE not in [x[0] for x in parsed_version_pairs]: - insort(parsed_version_pairs, (MYPY_VERSION_TUPLE, mypy_version)) - - for parsed_version, version in parsed_version_pairs[::-1]: - if parsed_version > MYPY_VERSION_TUPLE: - continue - output_path = _convert_to_output_path(version) - if output_path.exists(): - existing = output_path - break - - return MypyTestConfig(existing, _convert_to_output_path(mypy_version)) - - def get_expected_return_code(source_code: str) -> int: """Return 1 if at least one `# MYPY:` comment was found, else 0.""" if re.findall(r'^\s*# MYPY:', source_code, flags=re.MULTILINE): @@ -175,7 +132,7 @@ def get_expected_return_code(source_code: str) -> int: def test_mypy_results(config_filename: str, python_filename: str, request: pytest.FixtureRequest) -> None: input_path = PYDANTIC_ROOT / 'tests/mypy/modules' / python_filename config_path = PYDANTIC_ROOT / 'tests/mypy/configs' / config_filename - test_config = get_test_config(input_path, config_path) + output_path = OUTPUTS_DIR / config_path.name.replace('.', '_') / input_path.name # Specifying a different cache dir for each configuration dramatically speeds up subsequent execution # It also prevents cache-invalidation-related bugs in the tests @@ -202,9 +159,9 @@ def test_mypy_results(config_filename: str, python_filename: str, request: pytes input_code = input_path.read_text() existing_output_code: str | None = None - if test_config.existing_output_path is not None: - existing_output_code = test_config.existing_output_path.read_text() - print(f'Comparing output with {test_config.existing_output_path}') + if output_path.is_file(): + existing_output_code = output_path.read_text() + print(f'Comparing output with {output_path}') else: print(f'Comparing output with {input_path} (expecting no mypy errors)') @@ -214,8 +171,8 @@ def test_mypy_results(config_filename: str, python_filename: str, request: pytes # Test passed, no changes needed pass elif request.config.getoption('update_mypy'): - test_config.current_output_path.parent.mkdir(parents=True, exist_ok=True) - test_config.current_output_path.write_text(merged_output) + output_path.parent.mkdir(parents=True, exist_ok=True) + output_path.write_text(merged_output) else: print('**** Merged Output ****') print(merged_output) diff --git a/uv.lock b/uv.lock index 59c572e4f9a..5d101cc8df3 100644 --- a/uv.lock +++ b/uv.lock @@ -1,14 +1,14 @@ version = 1 -revision = 1 +revision = 2 requires-python = ">=3.9" [[package]] name = "aiohappyeyeballs" version = "2.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/08/07/508f9ebba367fc3370162e53a3cfd12f5652ad79f0e0bfdf9f9847c6f159/aiohappyeyeballs-2.4.6.tar.gz", hash = "sha256:9b05052f9042985d32ecbe4b59a77ae19c006a78f1344d7fdad69d28ded3d0b0", size = 21726 } +sdist = { url = "https://files.pythonhosted.org/packages/08/07/508f9ebba367fc3370162e53a3cfd12f5652ad79f0e0bfdf9f9847c6f159/aiohappyeyeballs-2.4.6.tar.gz", hash = "sha256:9b05052f9042985d32ecbe4b59a77ae19c006a78f1344d7fdad69d28ded3d0b0", size = 21726, upload-time = "2025-02-07T17:53:12.277Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/4c/03fb05f56551828ec67ceb3665e5dc51638042d204983a03b0a1541475b6/aiohappyeyeballs-2.4.6-py3-none-any.whl", hash = "sha256:147ec992cf873d74f5062644332c539fcd42956dc69453fe5204195e560517e1", size = 14543 }, + { url = "https://files.pythonhosted.org/packages/44/4c/03fb05f56551828ec67ceb3665e5dc51638042d204983a03b0a1541475b6/aiohappyeyeballs-2.4.6-py3-none-any.whl", hash = "sha256:147ec992cf873d74f5062644332c539fcd42956dc69453fe5204195e560517e1", size = 14543, upload-time = "2025-02-07T17:53:10.304Z" }, ] [[package]] @@ -25,88 +25,88 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/37/4b/952d49c73084fb790cb5c6ead50848c8e96b4980ad806cf4d2ad341eaa03/aiohttp-3.11.12.tar.gz", hash = "sha256:7603ca26d75b1b86160ce1bbe2787a0b706e592af5b2504e12caa88a217767b0", size = 7673175 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/65/42/3880e133590820aa7bc6d068eb7d8e0ad9fdce9b4663f92b821d3f6b5601/aiohttp-3.11.12-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aa8a8caca81c0a3e765f19c6953416c58e2f4cc1b84829af01dd1c771bb2f91f", size = 708721 }, - { url = "https://files.pythonhosted.org/packages/d8/8c/04869803bed108b25afad75f94c651b287851843caacbec6677d8f2d572b/aiohttp-3.11.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:84ede78acde96ca57f6cf8ccb8a13fbaf569f6011b9a52f870c662d4dc8cd854", size = 468596 }, - { url = "https://files.pythonhosted.org/packages/4f/f4/9074011f0d1335b161c953fb32545b6667cf24465e1932b9767874995c7e/aiohttp-3.11.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:584096938a001378484aa4ee54e05dc79c7b9dd933e271c744a97b3b6f644957", size = 455758 }, - { url = "https://files.pythonhosted.org/packages/fd/68/06298c57ef8f534065930b805e6dbd83613f0534447922782fb9920fce28/aiohttp-3.11.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:392432a2dde22b86f70dd4a0e9671a349446c93965f261dbaecfaf28813e5c42", size = 1584797 }, - { url = "https://files.pythonhosted.org/packages/bd/1e/cee6b51fcb3b1c4185a7dc62b3113bc136fae07f39386c88c90b7f79f199/aiohttp-3.11.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88d385b8e7f3a870146bf5ea31786ef7463e99eb59e31db56e2315535d811f55", size = 1632535 }, - { url = "https://files.pythonhosted.org/packages/71/1f/42424462b7a09da362e1711090db9f8d68a37a33f0aab51307335517c599/aiohttp-3.11.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b10a47e5390c4b30a0d58ee12581003be52eedd506862ab7f97da7a66805befb", size = 1668484 }, - { url = "https://files.pythonhosted.org/packages/f6/79/0e25542bbe3c2bfd7a12c7a49c7bce73b09a836f65079e4b77bc2bafc89e/aiohttp-3.11.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b5263dcede17b6b0c41ef0c3ccce847d82a7da98709e75cf7efde3e9e3b5cae", size = 1589708 }, - { url = "https://files.pythonhosted.org/packages/d1/13/93ae26b75e23f7d3a613872e472fae836ca100dc5bde5936ebc93ada8890/aiohttp-3.11.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50c5c7b8aa5443304c55c262c5693b108c35a3b61ef961f1e782dd52a2f559c7", size = 1544752 }, - { url = "https://files.pythonhosted.org/packages/cf/5e/48847fad1b014ef92ef18ea1339a3b58eb81d3bc717b94c3627f5d2a42c5/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d1c031a7572f62f66f1257db37ddab4cb98bfaf9b9434a3b4840bf3560f5e788", size = 1529417 }, - { url = "https://files.pythonhosted.org/packages/ae/56/fbd4ea019303f4877f0e0b8c9de92e9db24338e7545570d3f275f3c74c53/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:7e44eba534381dd2687be50cbd5f2daded21575242ecfdaf86bbeecbc38dae8e", size = 1557808 }, - { url = "https://files.pythonhosted.org/packages/f1/43/112189cf6b3c482ecdd6819b420eaa0c2033426f28d741bb7f19db5dd2bb/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:145a73850926018ec1681e734cedcf2716d6a8697d90da11284043b745c286d5", size = 1536765 }, - { url = "https://files.pythonhosted.org/packages/30/12/59986547de8306e06c7b30e547ccda02d29636e152366caba2dd8627bfe1/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:2c311e2f63e42c1bf86361d11e2c4a59f25d9e7aabdbdf53dc38b885c5435cdb", size = 1607621 }, - { url = "https://files.pythonhosted.org/packages/aa/9b/af3b323b20df3318ed20d701d8242e523d59c842ca93f23134b05c9d5054/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ea756b5a7bac046d202a9a3889b9a92219f885481d78cd318db85b15cc0b7bcf", size = 1628977 }, - { url = "https://files.pythonhosted.org/packages/36/62/adf5a331a7bda475cc326dde393fa2bc5849060b1b37ac3d1bee1953f2cd/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:526c900397f3bbc2db9cb360ce9c35134c908961cdd0ac25b1ae6ffcaa2507ff", size = 1564455 }, - { url = "https://files.pythonhosted.org/packages/90/c4/4a24291f22f111a854dfdb54dc94d4e0a5229ccbb7bc7f0bed972aa50410/aiohttp-3.11.12-cp310-cp310-win32.whl", hash = "sha256:b8d3bb96c147b39c02d3db086899679f31958c5d81c494ef0fc9ef5bb1359b3d", size = 416768 }, - { url = "https://files.pythonhosted.org/packages/51/69/5221c8006acb7bb10d9e8e2238fb216571bddc2e00a8d95bcfbe2f579c57/aiohttp-3.11.12-cp310-cp310-win_amd64.whl", hash = "sha256:7fe3d65279bfbee8de0fb4f8c17fc4e893eed2dba21b2f680e930cc2b09075c5", size = 442170 }, - { url = "https://files.pythonhosted.org/packages/9c/38/35311e70196b6a63cfa033a7f741f800aa8a93f57442991cbe51da2394e7/aiohttp-3.11.12-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:87a2e00bf17da098d90d4145375f1d985a81605267e7f9377ff94e55c5d769eb", size = 708797 }, - { url = "https://files.pythonhosted.org/packages/44/3e/46c656e68cbfc4f3fc7cb5d2ba4da6e91607fe83428208028156688f6201/aiohttp-3.11.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b34508f1cd928ce915ed09682d11307ba4b37d0708d1f28e5774c07a7674cac9", size = 468669 }, - { url = "https://files.pythonhosted.org/packages/a0/d6/2088fb4fd1e3ac2bfb24bc172223babaa7cdbb2784d33c75ec09e66f62f8/aiohttp-3.11.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:936d8a4f0f7081327014742cd51d320296b56aa6d324461a13724ab05f4b2933", size = 455739 }, - { url = "https://files.pythonhosted.org/packages/e7/dc/c443a6954a56f4a58b5efbfdf23cc6f3f0235e3424faf5a0c56264d5c7bb/aiohttp-3.11.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de1378f72def7dfb5dbd73d86c19eda0ea7b0a6873910cc37d57e80f10d64e1", size = 1685858 }, - { url = "https://files.pythonhosted.org/packages/25/67/2d5b3aaade1d5d01c3b109aa76e3aa9630531252cda10aa02fb99b0b11a1/aiohttp-3.11.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9d45dbb3aaec05cf01525ee1a7ac72de46a8c425cb75c003acd29f76b1ffe94", size = 1743829 }, - { url = "https://files.pythonhosted.org/packages/90/9b/9728fe9a3e1b8521198455d027b0b4035522be18f504b24c5d38d59e7278/aiohttp-3.11.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:930ffa1925393381e1e0a9b82137fa7b34c92a019b521cf9f41263976666a0d6", size = 1785587 }, - { url = "https://files.pythonhosted.org/packages/ce/cf/28fbb43d4ebc1b4458374a3c7b6db3b556a90e358e9bbcfe6d9339c1e2b6/aiohttp-3.11.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8340def6737118f5429a5df4e88f440746b791f8f1c4ce4ad8a595f42c980bd5", size = 1675319 }, - { url = "https://files.pythonhosted.org/packages/e5/d2/006c459c11218cabaa7bca401f965c9cc828efbdea7e1615d4644eaf23f7/aiohttp-3.11.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4016e383f91f2814e48ed61e6bda7d24c4d7f2402c75dd28f7e1027ae44ea204", size = 1619982 }, - { url = "https://files.pythonhosted.org/packages/9d/83/ca425891ebd37bee5d837110f7fddc4d808a7c6c126a7d1b5c3ad72fc6ba/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c0600bcc1adfaaac321422d615939ef300df81e165f6522ad096b73439c0f58", size = 1654176 }, - { url = "https://files.pythonhosted.org/packages/25/df/047b1ce88514a1b4915d252513640184b63624e7914e41d846668b8edbda/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:0450ada317a65383b7cce9576096150fdb97396dcfe559109b403c7242faffef", size = 1660198 }, - { url = "https://files.pythonhosted.org/packages/d3/cc/6ecb8e343f0902528620b9dbd567028a936d5489bebd7dbb0dd0914f4fdb/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:850ff6155371fd802a280f8d369d4e15d69434651b844bde566ce97ee2277420", size = 1650186 }, - { url = "https://files.pythonhosted.org/packages/f8/f8/453df6dd69256ca8c06c53fc8803c9056e2b0b16509b070f9a3b4bdefd6c/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8fd12d0f989c6099e7b0f30dc6e0d1e05499f3337461f0b2b0dadea6c64b89df", size = 1733063 }, - { url = "https://files.pythonhosted.org/packages/55/f8/540160787ff3000391de0e5d0d1d33be4c7972f933c21991e2ea105b2d5e/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:76719dd521c20a58a6c256d058547b3a9595d1d885b830013366e27011ffe804", size = 1755306 }, - { url = "https://files.pythonhosted.org/packages/30/7d/49f3bfdfefd741576157f8f91caa9ff61a6f3d620ca6339268327518221b/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:97fe431f2ed646a3b56142fc81d238abcbaff08548d6912acb0b19a0cadc146b", size = 1692909 }, - { url = "https://files.pythonhosted.org/packages/40/9c/8ce00afd6f6112ce9a2309dc490fea376ae824708b94b7b5ea9cba979d1d/aiohttp-3.11.12-cp311-cp311-win32.whl", hash = "sha256:e10c440d142fa8b32cfdb194caf60ceeceb3e49807072e0dc3a8887ea80e8c16", size = 416584 }, - { url = "https://files.pythonhosted.org/packages/35/97/4d3c5f562f15830de472eb10a7a222655d750839943e0e6d915ef7e26114/aiohttp-3.11.12-cp311-cp311-win_amd64.whl", hash = "sha256:246067ba0cf5560cf42e775069c5d80a8989d14a7ded21af529a4e10e3e0f0e6", size = 442674 }, - { url = "https://files.pythonhosted.org/packages/4d/d0/94346961acb476569fca9a644cc6f9a02f97ef75961a6b8d2b35279b8d1f/aiohttp-3.11.12-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e392804a38353900c3fd8b7cacbea5132888f7129f8e241915e90b85f00e3250", size = 704837 }, - { url = "https://files.pythonhosted.org/packages/a9/af/05c503f1cc8f97621f199ef4b8db65fb88b8bc74a26ab2adb74789507ad3/aiohttp-3.11.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8fa1510b96c08aaad49303ab11f8803787c99222288f310a62f493faf883ede1", size = 464218 }, - { url = "https://files.pythonhosted.org/packages/f2/48/b9949eb645b9bd699153a2ec48751b985e352ab3fed9d98c8115de305508/aiohttp-3.11.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dc065a4285307607df3f3686363e7f8bdd0d8ab35f12226362a847731516e42c", size = 456166 }, - { url = "https://files.pythonhosted.org/packages/14/fb/980981807baecb6f54bdd38beb1bd271d9a3a786e19a978871584d026dcf/aiohttp-3.11.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddb31f8474695cd61fc9455c644fc1606c164b93bff2490390d90464b4655df", size = 1682528 }, - { url = "https://files.pythonhosted.org/packages/90/cb/77b1445e0a716914e6197b0698b7a3640590da6c692437920c586764d05b/aiohttp-3.11.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dec0000d2d8621d8015c293e24589d46fa218637d820894cb7356c77eca3259", size = 1737154 }, - { url = "https://files.pythonhosted.org/packages/ff/24/d6fb1f4cede9ccbe98e4def6f3ed1e1efcb658871bbf29f4863ec646bf38/aiohttp-3.11.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3552fe98e90fdf5918c04769f338a87fa4f00f3b28830ea9b78b1bdc6140e0d", size = 1793435 }, - { url = "https://files.pythonhosted.org/packages/17/e2/9f744cee0861af673dc271a3351f59ebd5415928e20080ab85be25641471/aiohttp-3.11.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfe7f984f28a8ae94ff3a7953cd9678550dbd2a1f9bda5dd9c5ae627744c78e", size = 1692010 }, - { url = "https://files.pythonhosted.org/packages/90/c4/4a1235c1df544223eb57ba553ce03bc706bdd065e53918767f7fa1ff99e0/aiohttp-3.11.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a481a574af914b6e84624412666cbfbe531a05667ca197804ecc19c97b8ab1b0", size = 1619481 }, - { url = "https://files.pythonhosted.org/packages/60/70/cf12d402a94a33abda86dd136eb749b14c8eb9fec1e16adc310e25b20033/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1987770fb4887560363b0e1a9b75aa303e447433c41284d3af2840a2f226d6e0", size = 1641578 }, - { url = "https://files.pythonhosted.org/packages/1b/25/7211973fda1f5e833fcfd98ccb7f9ce4fbfc0074e3e70c0157a751d00db8/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a4ac6a0f0f6402854adca4e3259a623f5c82ec3f0c049374133bcb243132baf9", size = 1684463 }, - { url = "https://files.pythonhosted.org/packages/93/60/b5905b4d0693f6018b26afa9f2221fefc0dcbd3773fe2dff1a20fb5727f1/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c96a43822f1f9f69cc5c3706af33239489a6294be486a0447fb71380070d4d5f", size = 1646691 }, - { url = "https://files.pythonhosted.org/packages/b4/fc/ba1b14d6fdcd38df0b7c04640794b3683e949ea10937c8a58c14d697e93f/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a5e69046f83c0d3cb8f0d5bd9b8838271b1bc898e01562a04398e160953e8eb9", size = 1702269 }, - { url = "https://files.pythonhosted.org/packages/5e/39/18c13c6f658b2ba9cc1e0c6fb2d02f98fd653ad2addcdf938193d51a9c53/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:68d54234c8d76d8ef74744f9f9fc6324f1508129e23da8883771cdbb5818cbef", size = 1734782 }, - { url = "https://files.pythonhosted.org/packages/9f/d2/ccc190023020e342419b265861877cd8ffb75bec37b7ddd8521dd2c6deb8/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9fd9dcf9c91affe71654ef77426f5cf8489305e1c66ed4816f5a21874b094b9", size = 1694740 }, - { url = "https://files.pythonhosted.org/packages/3f/54/186805bcada64ea90ea909311ffedcd74369bfc6e880d39d2473314daa36/aiohttp-3.11.12-cp312-cp312-win32.whl", hash = "sha256:0ed49efcd0dc1611378beadbd97beb5d9ca8fe48579fc04a6ed0844072261b6a", size = 411530 }, - { url = "https://files.pythonhosted.org/packages/3d/63/5eca549d34d141bcd9de50d4e59b913f3641559460c739d5e215693cb54a/aiohttp-3.11.12-cp312-cp312-win_amd64.whl", hash = "sha256:54775858c7f2f214476773ce785a19ee81d1294a6bedc5cc17225355aab74802", size = 437860 }, - { url = "https://files.pythonhosted.org/packages/c3/9b/cea185d4b543ae08ee478373e16653722c19fcda10d2d0646f300ce10791/aiohttp-3.11.12-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:413ad794dccb19453e2b97c2375f2ca3cdf34dc50d18cc2693bd5aed7d16f4b9", size = 698148 }, - { url = "https://files.pythonhosted.org/packages/91/5c/80d47fe7749fde584d1404a68ade29bcd7e58db8fa11fa38e8d90d77e447/aiohttp-3.11.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a93d28ed4b4b39e6f46fd240896c29b686b75e39cc6992692e3922ff6982b4c", size = 460831 }, - { url = "https://files.pythonhosted.org/packages/8e/f9/de568f8a8ca6b061d157c50272620c53168d6e3eeddae78dbb0f7db981eb/aiohttp-3.11.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d589264dbba3b16e8951b6f145d1e6b883094075283dafcab4cdd564a9e353a0", size = 453122 }, - { url = "https://files.pythonhosted.org/packages/8b/fd/b775970a047543bbc1d0f66725ba72acef788028fce215dc959fd15a8200/aiohttp-3.11.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5148ca8955affdfeb864aca158ecae11030e952b25b3ae15d4e2b5ba299bad2", size = 1665336 }, - { url = "https://files.pythonhosted.org/packages/82/9b/aff01d4f9716245a1b2965f02044e4474fadd2bcfe63cf249ca788541886/aiohttp-3.11.12-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:525410e0790aab036492eeea913858989c4cb070ff373ec3bc322d700bdf47c1", size = 1718111 }, - { url = "https://files.pythonhosted.org/packages/e0/a9/166fd2d8b2cc64f08104aa614fad30eee506b563154081bf88ce729bc665/aiohttp-3.11.12-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bd8695be2c80b665ae3f05cb584093a1e59c35ecb7d794d1edd96e8cc9201d7", size = 1775293 }, - { url = "https://files.pythonhosted.org/packages/13/c5/0d3c89bd9e36288f10dc246f42518ce8e1c333f27636ac78df091c86bb4a/aiohttp-3.11.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0203433121484b32646a5f5ea93ae86f3d9559d7243f07e8c0eab5ff8e3f70e", size = 1677338 }, - { url = "https://files.pythonhosted.org/packages/72/b2/017db2833ef537be284f64ead78725984db8a39276c1a9a07c5c7526e238/aiohttp-3.11.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40cd36749a1035c34ba8d8aaf221b91ca3d111532e5ccb5fa8c3703ab1b967ed", size = 1603365 }, - { url = "https://files.pythonhosted.org/packages/fc/72/b66c96a106ec7e791e29988c222141dd1219d7793ffb01e72245399e08d2/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7442662afebbf7b4c6d28cb7aab9e9ce3a5df055fc4116cc7228192ad6cb484", size = 1618464 }, - { url = "https://files.pythonhosted.org/packages/3f/50/e68a40f267b46a603bab569d48d57f23508801614e05b3369898c5b2910a/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8a2fb742ef378284a50766e985804bd6adb5adb5aa781100b09befdbfa757b65", size = 1657827 }, - { url = "https://files.pythonhosted.org/packages/c5/1d/aafbcdb1773d0ba7c20793ebeedfaba1f3f7462f6fc251f24983ed738aa7/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2cee3b117a8d13ab98b38d5b6bdcd040cfb4181068d05ce0c474ec9db5f3c5bb", size = 1616700 }, - { url = "https://files.pythonhosted.org/packages/b0/5e/6cd9724a2932f36e2a6b742436a36d64784322cfb3406ca773f903bb9a70/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f6a19bcab7fbd8f8649d6595624856635159a6527861b9cdc3447af288a00c00", size = 1685643 }, - { url = "https://files.pythonhosted.org/packages/8b/38/ea6c91d5c767fd45a18151675a07c710ca018b30aa876a9f35b32fa59761/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e4cecdb52aaa9994fbed6b81d4568427b6002f0a91c322697a4bfcc2b2363f5a", size = 1715487 }, - { url = "https://files.pythonhosted.org/packages/8e/24/e9edbcb7d1d93c02e055490348df6f955d675e85a028c33babdcaeda0853/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:30f546358dfa0953db92ba620101fefc81574f87b2346556b90b5f3ef16e55ce", size = 1672948 }, - { url = "https://files.pythonhosted.org/packages/25/be/0b1fb737268e003198f25c3a68c2135e76e4754bf399a879b27bd508a003/aiohttp-3.11.12-cp313-cp313-win32.whl", hash = "sha256:ce1bb21fc7d753b5f8a5d5a4bae99566386b15e716ebdb410154c16c91494d7f", size = 410396 }, - { url = "https://files.pythonhosted.org/packages/68/fd/677def96a75057b0a26446b62f8fbb084435b20a7d270c99539c26573bfd/aiohttp-3.11.12-cp313-cp313-win_amd64.whl", hash = "sha256:f7914ab70d2ee8ab91c13e5402122edbc77821c66d2758abb53aabe87f013287", size = 436234 }, - { url = "https://files.pythonhosted.org/packages/a7/bd/358c7032c43d4875dcbedc9113b087ef8bc619bee034f9423335698631e3/aiohttp-3.11.12-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c3623053b85b4296cd3925eeb725e386644fd5bc67250b3bb08b0f144803e7b", size = 709588 }, - { url = "https://files.pythonhosted.org/packages/9f/87/9e4700a56722c139b6ed4ad9be926183545a1b55e82babd9b082be3ef4c5/aiohttp-3.11.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67453e603cea8e85ed566b2700efa1f6916aefbc0c9fcb2e86aaffc08ec38e78", size = 469076 }, - { url = "https://files.pythonhosted.org/packages/c0/fa/585b66076795911800f8f16f0f93ea8fb9bfa5d8fd757bbf78f32d17c2d9/aiohttp-3.11.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6130459189e61baac5a88c10019b21e1f0c6d00ebc770e9ce269475650ff7f73", size = 456148 }, - { url = "https://files.pythonhosted.org/packages/ba/6b/a1fe710860b10d83799af8c63cf2ffb63eac4edaa42d76e9540679545951/aiohttp-3.11.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9060addfa4ff753b09392efe41e6af06ea5dd257829199747b9f15bfad819460", size = 1587566 }, - { url = "https://files.pythonhosted.org/packages/31/78/ab78f36b44c7239c953afd9bb331edf2b3977925de2ce98545d62e415565/aiohttp-3.11.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34245498eeb9ae54c687a07ad7f160053911b5745e186afe2d0c0f2898a1ab8a", size = 1636411 }, - { url = "https://files.pythonhosted.org/packages/e1/5c/b316b559dde4ae983e725132a2fa2518532ad56ca4698d4b71f42af48722/aiohttp-3.11.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dc0fba9a74b471c45ca1a3cb6e6913ebfae416678d90529d188886278e7f3f6", size = 1672484 }, - { url = "https://files.pythonhosted.org/packages/90/08/8c409ab4040276a8c9944d5e444121a2f34151872440b3c69f31c35edf18/aiohttp-3.11.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a478aa11b328983c4444dacb947d4513cb371cd323f3845e53caeda6be5589d5", size = 1589689 }, - { url = "https://files.pythonhosted.org/packages/e0/25/53b4ceffaac5dcaf4772be41f4f06e7201be5407aa743758e1a37f7d1b63/aiohttp-3.11.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c160a04283c8c6f55b5bf6d4cad59bb9c5b9c9cd08903841b25f1f7109ef1259", size = 1544225 }, - { url = "https://files.pythonhosted.org/packages/4a/40/769d221f4067a05974b3352ffa228041bcda72c487689ab4030791691861/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:edb69b9589324bdc40961cdf0657815df674f1743a8d5ad9ab56a99e4833cfdd", size = 1530391 }, - { url = "https://files.pythonhosted.org/packages/14/48/22527fadfdfca85fb585870ffd98aece982606775fd2f4ee80270f5c85a0/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ee84c2a22a809c4f868153b178fe59e71423e1f3d6a8cd416134bb231fbf6d3", size = 1559005 }, - { url = "https://files.pythonhosted.org/packages/fd/0e/72144954bae5d80a8857dca18b8ed8e2ef76acf557465545ad5b5b9bfb58/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bf4480a5438f80e0f1539e15a7eb8b5f97a26fe087e9828e2c0ec2be119a9f72", size = 1536244 }, - { url = "https://files.pythonhosted.org/packages/60/db/a2cfb5565f5e5870757e2d3099f8e24640e746ff2ba9ea899b35b6acad3f/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:e6b2732ef3bafc759f653a98881b5b9cdef0716d98f013d376ee8dfd7285abf1", size = 1607092 }, - { url = "https://files.pythonhosted.org/packages/b0/31/87e869650c5532876e83c7c7d9d3f5505c5a738abe991f3ac2264070ee81/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f752e80606b132140883bb262a457c475d219d7163d996dc9072434ffb0784c4", size = 1629268 }, - { url = "https://files.pythonhosted.org/packages/d2/73/25fb4d2d259caf4cf23035204315665976a66292a1055d0937c62273675a/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ab3247d58b393bda5b1c8f31c9edece7162fc13265334217785518dd770792b8", size = 1567511 }, - { url = "https://files.pythonhosted.org/packages/a3/59/ef91da9971e187033476945cd18bebc3974930bde81cdf66099b318df7a6/aiohttp-3.11.12-cp39-cp39-win32.whl", hash = "sha256:0d5176f310a7fe6f65608213cc74f4228e4f4ce9fd10bcb2bb6da8fc66991462", size = 417082 }, - { url = "https://files.pythonhosted.org/packages/e0/fa/6cfc042c0f59d1fa6eaeeb678b9f13b2c0bf1d7803dae81b93ca55ac6288/aiohttp-3.11.12-cp39-cp39-win_amd64.whl", hash = "sha256:74bd573dde27e58c760d9ca8615c41a57e719bff315c9adb6f2a4281a28e8798", size = 442385 }, +sdist = { url = "https://files.pythonhosted.org/packages/37/4b/952d49c73084fb790cb5c6ead50848c8e96b4980ad806cf4d2ad341eaa03/aiohttp-3.11.12.tar.gz", hash = "sha256:7603ca26d75b1b86160ce1bbe2787a0b706e592af5b2504e12caa88a217767b0", size = 7673175, upload-time = "2025-02-06T00:28:47.88Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/65/42/3880e133590820aa7bc6d068eb7d8e0ad9fdce9b4663f92b821d3f6b5601/aiohttp-3.11.12-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aa8a8caca81c0a3e765f19c6953416c58e2f4cc1b84829af01dd1c771bb2f91f", size = 708721, upload-time = "2025-02-06T00:25:21.091Z" }, + { url = "https://files.pythonhosted.org/packages/d8/8c/04869803bed108b25afad75f94c651b287851843caacbec6677d8f2d572b/aiohttp-3.11.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:84ede78acde96ca57f6cf8ccb8a13fbaf569f6011b9a52f870c662d4dc8cd854", size = 468596, upload-time = "2025-02-06T00:25:25.357Z" }, + { url = "https://files.pythonhosted.org/packages/4f/f4/9074011f0d1335b161c953fb32545b6667cf24465e1932b9767874995c7e/aiohttp-3.11.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:584096938a001378484aa4ee54e05dc79c7b9dd933e271c744a97b3b6f644957", size = 455758, upload-time = "2025-02-06T00:25:28.221Z" }, + { url = "https://files.pythonhosted.org/packages/fd/68/06298c57ef8f534065930b805e6dbd83613f0534447922782fb9920fce28/aiohttp-3.11.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:392432a2dde22b86f70dd4a0e9671a349446c93965f261dbaecfaf28813e5c42", size = 1584797, upload-time = "2025-02-06T00:25:31.02Z" }, + { url = "https://files.pythonhosted.org/packages/bd/1e/cee6b51fcb3b1c4185a7dc62b3113bc136fae07f39386c88c90b7f79f199/aiohttp-3.11.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88d385b8e7f3a870146bf5ea31786ef7463e99eb59e31db56e2315535d811f55", size = 1632535, upload-time = "2025-02-06T00:25:33.003Z" }, + { url = "https://files.pythonhosted.org/packages/71/1f/42424462b7a09da362e1711090db9f8d68a37a33f0aab51307335517c599/aiohttp-3.11.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b10a47e5390c4b30a0d58ee12581003be52eedd506862ab7f97da7a66805befb", size = 1668484, upload-time = "2025-02-06T00:25:35.083Z" }, + { url = "https://files.pythonhosted.org/packages/f6/79/0e25542bbe3c2bfd7a12c7a49c7bce73b09a836f65079e4b77bc2bafc89e/aiohttp-3.11.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b5263dcede17b6b0c41ef0c3ccce847d82a7da98709e75cf7efde3e9e3b5cae", size = 1589708, upload-time = "2025-02-06T00:25:39.127Z" }, + { url = "https://files.pythonhosted.org/packages/d1/13/93ae26b75e23f7d3a613872e472fae836ca100dc5bde5936ebc93ada8890/aiohttp-3.11.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50c5c7b8aa5443304c55c262c5693b108c35a3b61ef961f1e782dd52a2f559c7", size = 1544752, upload-time = "2025-02-06T00:25:41.032Z" }, + { url = "https://files.pythonhosted.org/packages/cf/5e/48847fad1b014ef92ef18ea1339a3b58eb81d3bc717b94c3627f5d2a42c5/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d1c031a7572f62f66f1257db37ddab4cb98bfaf9b9434a3b4840bf3560f5e788", size = 1529417, upload-time = "2025-02-06T00:25:43.639Z" }, + { url = "https://files.pythonhosted.org/packages/ae/56/fbd4ea019303f4877f0e0b8c9de92e9db24338e7545570d3f275f3c74c53/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:7e44eba534381dd2687be50cbd5f2daded21575242ecfdaf86bbeecbc38dae8e", size = 1557808, upload-time = "2025-02-06T00:25:46.281Z" }, + { url = "https://files.pythonhosted.org/packages/f1/43/112189cf6b3c482ecdd6819b420eaa0c2033426f28d741bb7f19db5dd2bb/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:145a73850926018ec1681e734cedcf2716d6a8697d90da11284043b745c286d5", size = 1536765, upload-time = "2025-02-06T00:25:48.707Z" }, + { url = "https://files.pythonhosted.org/packages/30/12/59986547de8306e06c7b30e547ccda02d29636e152366caba2dd8627bfe1/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:2c311e2f63e42c1bf86361d11e2c4a59f25d9e7aabdbdf53dc38b885c5435cdb", size = 1607621, upload-time = "2025-02-06T00:25:51.505Z" }, + { url = "https://files.pythonhosted.org/packages/aa/9b/af3b323b20df3318ed20d701d8242e523d59c842ca93f23134b05c9d5054/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ea756b5a7bac046d202a9a3889b9a92219f885481d78cd318db85b15cc0b7bcf", size = 1628977, upload-time = "2025-02-06T00:25:54.804Z" }, + { url = "https://files.pythonhosted.org/packages/36/62/adf5a331a7bda475cc326dde393fa2bc5849060b1b37ac3d1bee1953f2cd/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:526c900397f3bbc2db9cb360ce9c35134c908961cdd0ac25b1ae6ffcaa2507ff", size = 1564455, upload-time = "2025-02-06T00:25:56.692Z" }, + { url = "https://files.pythonhosted.org/packages/90/c4/4a24291f22f111a854dfdb54dc94d4e0a5229ccbb7bc7f0bed972aa50410/aiohttp-3.11.12-cp310-cp310-win32.whl", hash = "sha256:b8d3bb96c147b39c02d3db086899679f31958c5d81c494ef0fc9ef5bb1359b3d", size = 416768, upload-time = "2025-02-06T00:26:01.155Z" }, + { url = "https://files.pythonhosted.org/packages/51/69/5221c8006acb7bb10d9e8e2238fb216571bddc2e00a8d95bcfbe2f579c57/aiohttp-3.11.12-cp310-cp310-win_amd64.whl", hash = "sha256:7fe3d65279bfbee8de0fb4f8c17fc4e893eed2dba21b2f680e930cc2b09075c5", size = 442170, upload-time = "2025-02-06T00:26:03.616Z" }, + { url = "https://files.pythonhosted.org/packages/9c/38/35311e70196b6a63cfa033a7f741f800aa8a93f57442991cbe51da2394e7/aiohttp-3.11.12-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:87a2e00bf17da098d90d4145375f1d985a81605267e7f9377ff94e55c5d769eb", size = 708797, upload-time = "2025-02-06T00:26:08.81Z" }, + { url = "https://files.pythonhosted.org/packages/44/3e/46c656e68cbfc4f3fc7cb5d2ba4da6e91607fe83428208028156688f6201/aiohttp-3.11.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b34508f1cd928ce915ed09682d11307ba4b37d0708d1f28e5774c07a7674cac9", size = 468669, upload-time = "2025-02-06T00:26:10.475Z" }, + { url = "https://files.pythonhosted.org/packages/a0/d6/2088fb4fd1e3ac2bfb24bc172223babaa7cdbb2784d33c75ec09e66f62f8/aiohttp-3.11.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:936d8a4f0f7081327014742cd51d320296b56aa6d324461a13724ab05f4b2933", size = 455739, upload-time = "2025-02-06T00:26:11.974Z" }, + { url = "https://files.pythonhosted.org/packages/e7/dc/c443a6954a56f4a58b5efbfdf23cc6f3f0235e3424faf5a0c56264d5c7bb/aiohttp-3.11.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de1378f72def7dfb5dbd73d86c19eda0ea7b0a6873910cc37d57e80f10d64e1", size = 1685858, upload-time = "2025-02-06T00:26:13.654Z" }, + { url = "https://files.pythonhosted.org/packages/25/67/2d5b3aaade1d5d01c3b109aa76e3aa9630531252cda10aa02fb99b0b11a1/aiohttp-3.11.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9d45dbb3aaec05cf01525ee1a7ac72de46a8c425cb75c003acd29f76b1ffe94", size = 1743829, upload-time = "2025-02-06T00:26:15.481Z" }, + { url = "https://files.pythonhosted.org/packages/90/9b/9728fe9a3e1b8521198455d027b0b4035522be18f504b24c5d38d59e7278/aiohttp-3.11.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:930ffa1925393381e1e0a9b82137fa7b34c92a019b521cf9f41263976666a0d6", size = 1785587, upload-time = "2025-02-06T00:26:17.171Z" }, + { url = "https://files.pythonhosted.org/packages/ce/cf/28fbb43d4ebc1b4458374a3c7b6db3b556a90e358e9bbcfe6d9339c1e2b6/aiohttp-3.11.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8340def6737118f5429a5df4e88f440746b791f8f1c4ce4ad8a595f42c980bd5", size = 1675319, upload-time = "2025-02-06T00:26:19.951Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d2/006c459c11218cabaa7bca401f965c9cc828efbdea7e1615d4644eaf23f7/aiohttp-3.11.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4016e383f91f2814e48ed61e6bda7d24c4d7f2402c75dd28f7e1027ae44ea204", size = 1619982, upload-time = "2025-02-06T00:26:21.705Z" }, + { url = "https://files.pythonhosted.org/packages/9d/83/ca425891ebd37bee5d837110f7fddc4d808a7c6c126a7d1b5c3ad72fc6ba/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c0600bcc1adfaaac321422d615939ef300df81e165f6522ad096b73439c0f58", size = 1654176, upload-time = "2025-02-06T00:26:23.607Z" }, + { url = "https://files.pythonhosted.org/packages/25/df/047b1ce88514a1b4915d252513640184b63624e7914e41d846668b8edbda/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:0450ada317a65383b7cce9576096150fdb97396dcfe559109b403c7242faffef", size = 1660198, upload-time = "2025-02-06T00:26:26.686Z" }, + { url = "https://files.pythonhosted.org/packages/d3/cc/6ecb8e343f0902528620b9dbd567028a936d5489bebd7dbb0dd0914f4fdb/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:850ff6155371fd802a280f8d369d4e15d69434651b844bde566ce97ee2277420", size = 1650186, upload-time = "2025-02-06T00:26:28.479Z" }, + { url = "https://files.pythonhosted.org/packages/f8/f8/453df6dd69256ca8c06c53fc8803c9056e2b0b16509b070f9a3b4bdefd6c/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8fd12d0f989c6099e7b0f30dc6e0d1e05499f3337461f0b2b0dadea6c64b89df", size = 1733063, upload-time = "2025-02-06T00:26:31.136Z" }, + { url = "https://files.pythonhosted.org/packages/55/f8/540160787ff3000391de0e5d0d1d33be4c7972f933c21991e2ea105b2d5e/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:76719dd521c20a58a6c256d058547b3a9595d1d885b830013366e27011ffe804", size = 1755306, upload-time = "2025-02-06T00:26:34.133Z" }, + { url = "https://files.pythonhosted.org/packages/30/7d/49f3bfdfefd741576157f8f91caa9ff61a6f3d620ca6339268327518221b/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:97fe431f2ed646a3b56142fc81d238abcbaff08548d6912acb0b19a0cadc146b", size = 1692909, upload-time = "2025-02-06T00:26:37.281Z" }, + { url = "https://files.pythonhosted.org/packages/40/9c/8ce00afd6f6112ce9a2309dc490fea376ae824708b94b7b5ea9cba979d1d/aiohttp-3.11.12-cp311-cp311-win32.whl", hash = "sha256:e10c440d142fa8b32cfdb194caf60ceeceb3e49807072e0dc3a8887ea80e8c16", size = 416584, upload-time = "2025-02-06T00:26:39.946Z" }, + { url = "https://files.pythonhosted.org/packages/35/97/4d3c5f562f15830de472eb10a7a222655d750839943e0e6d915ef7e26114/aiohttp-3.11.12-cp311-cp311-win_amd64.whl", hash = "sha256:246067ba0cf5560cf42e775069c5d80a8989d14a7ded21af529a4e10e3e0f0e6", size = 442674, upload-time = "2025-02-06T00:26:42.193Z" }, + { url = "https://files.pythonhosted.org/packages/4d/d0/94346961acb476569fca9a644cc6f9a02f97ef75961a6b8d2b35279b8d1f/aiohttp-3.11.12-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e392804a38353900c3fd8b7cacbea5132888f7129f8e241915e90b85f00e3250", size = 704837, upload-time = "2025-02-06T00:26:44.812Z" }, + { url = "https://files.pythonhosted.org/packages/a9/af/05c503f1cc8f97621f199ef4b8db65fb88b8bc74a26ab2adb74789507ad3/aiohttp-3.11.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8fa1510b96c08aaad49303ab11f8803787c99222288f310a62f493faf883ede1", size = 464218, upload-time = "2025-02-06T00:26:46.533Z" }, + { url = "https://files.pythonhosted.org/packages/f2/48/b9949eb645b9bd699153a2ec48751b985e352ab3fed9d98c8115de305508/aiohttp-3.11.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dc065a4285307607df3f3686363e7f8bdd0d8ab35f12226362a847731516e42c", size = 456166, upload-time = "2025-02-06T00:26:48.142Z" }, + { url = "https://files.pythonhosted.org/packages/14/fb/980981807baecb6f54bdd38beb1bd271d9a3a786e19a978871584d026dcf/aiohttp-3.11.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddb31f8474695cd61fc9455c644fc1606c164b93bff2490390d90464b4655df", size = 1682528, upload-time = "2025-02-06T00:26:49.985Z" }, + { url = "https://files.pythonhosted.org/packages/90/cb/77b1445e0a716914e6197b0698b7a3640590da6c692437920c586764d05b/aiohttp-3.11.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dec0000d2d8621d8015c293e24589d46fa218637d820894cb7356c77eca3259", size = 1737154, upload-time = "2025-02-06T00:26:51.913Z" }, + { url = "https://files.pythonhosted.org/packages/ff/24/d6fb1f4cede9ccbe98e4def6f3ed1e1efcb658871bbf29f4863ec646bf38/aiohttp-3.11.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3552fe98e90fdf5918c04769f338a87fa4f00f3b28830ea9b78b1bdc6140e0d", size = 1793435, upload-time = "2025-02-06T00:26:56.182Z" }, + { url = "https://files.pythonhosted.org/packages/17/e2/9f744cee0861af673dc271a3351f59ebd5415928e20080ab85be25641471/aiohttp-3.11.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfe7f984f28a8ae94ff3a7953cd9678550dbd2a1f9bda5dd9c5ae627744c78e", size = 1692010, upload-time = "2025-02-06T00:26:58.504Z" }, + { url = "https://files.pythonhosted.org/packages/90/c4/4a1235c1df544223eb57ba553ce03bc706bdd065e53918767f7fa1ff99e0/aiohttp-3.11.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a481a574af914b6e84624412666cbfbe531a05667ca197804ecc19c97b8ab1b0", size = 1619481, upload-time = "2025-02-06T00:27:01.477Z" }, + { url = "https://files.pythonhosted.org/packages/60/70/cf12d402a94a33abda86dd136eb749b14c8eb9fec1e16adc310e25b20033/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1987770fb4887560363b0e1a9b75aa303e447433c41284d3af2840a2f226d6e0", size = 1641578, upload-time = "2025-02-06T00:27:06.151Z" }, + { url = "https://files.pythonhosted.org/packages/1b/25/7211973fda1f5e833fcfd98ccb7f9ce4fbfc0074e3e70c0157a751d00db8/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a4ac6a0f0f6402854adca4e3259a623f5c82ec3f0c049374133bcb243132baf9", size = 1684463, upload-time = "2025-02-06T00:27:08.336Z" }, + { url = "https://files.pythonhosted.org/packages/93/60/b5905b4d0693f6018b26afa9f2221fefc0dcbd3773fe2dff1a20fb5727f1/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c96a43822f1f9f69cc5c3706af33239489a6294be486a0447fb71380070d4d5f", size = 1646691, upload-time = "2025-02-06T00:27:11.232Z" }, + { url = "https://files.pythonhosted.org/packages/b4/fc/ba1b14d6fdcd38df0b7c04640794b3683e949ea10937c8a58c14d697e93f/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a5e69046f83c0d3cb8f0d5bd9b8838271b1bc898e01562a04398e160953e8eb9", size = 1702269, upload-time = "2025-02-06T00:27:13.639Z" }, + { url = "https://files.pythonhosted.org/packages/5e/39/18c13c6f658b2ba9cc1e0c6fb2d02f98fd653ad2addcdf938193d51a9c53/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:68d54234c8d76d8ef74744f9f9fc6324f1508129e23da8883771cdbb5818cbef", size = 1734782, upload-time = "2025-02-06T00:27:15.651Z" }, + { url = "https://files.pythonhosted.org/packages/9f/d2/ccc190023020e342419b265861877cd8ffb75bec37b7ddd8521dd2c6deb8/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9fd9dcf9c91affe71654ef77426f5cf8489305e1c66ed4816f5a21874b094b9", size = 1694740, upload-time = "2025-02-06T00:27:18.882Z" }, + { url = "https://files.pythonhosted.org/packages/3f/54/186805bcada64ea90ea909311ffedcd74369bfc6e880d39d2473314daa36/aiohttp-3.11.12-cp312-cp312-win32.whl", hash = "sha256:0ed49efcd0dc1611378beadbd97beb5d9ca8fe48579fc04a6ed0844072261b6a", size = 411530, upload-time = "2025-02-06T00:27:20.899Z" }, + { url = "https://files.pythonhosted.org/packages/3d/63/5eca549d34d141bcd9de50d4e59b913f3641559460c739d5e215693cb54a/aiohttp-3.11.12-cp312-cp312-win_amd64.whl", hash = "sha256:54775858c7f2f214476773ce785a19ee81d1294a6bedc5cc17225355aab74802", size = 437860, upload-time = "2025-02-06T00:27:23.674Z" }, + { url = "https://files.pythonhosted.org/packages/c3/9b/cea185d4b543ae08ee478373e16653722c19fcda10d2d0646f300ce10791/aiohttp-3.11.12-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:413ad794dccb19453e2b97c2375f2ca3cdf34dc50d18cc2693bd5aed7d16f4b9", size = 698148, upload-time = "2025-02-06T00:27:25.478Z" }, + { url = "https://files.pythonhosted.org/packages/91/5c/80d47fe7749fde584d1404a68ade29bcd7e58db8fa11fa38e8d90d77e447/aiohttp-3.11.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a93d28ed4b4b39e6f46fd240896c29b686b75e39cc6992692e3922ff6982b4c", size = 460831, upload-time = "2025-02-06T00:27:28.252Z" }, + { url = "https://files.pythonhosted.org/packages/8e/f9/de568f8a8ca6b061d157c50272620c53168d6e3eeddae78dbb0f7db981eb/aiohttp-3.11.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d589264dbba3b16e8951b6f145d1e6b883094075283dafcab4cdd564a9e353a0", size = 453122, upload-time = "2025-02-06T00:27:30.143Z" }, + { url = "https://files.pythonhosted.org/packages/8b/fd/b775970a047543bbc1d0f66725ba72acef788028fce215dc959fd15a8200/aiohttp-3.11.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5148ca8955affdfeb864aca158ecae11030e952b25b3ae15d4e2b5ba299bad2", size = 1665336, upload-time = "2025-02-06T00:27:31.982Z" }, + { url = "https://files.pythonhosted.org/packages/82/9b/aff01d4f9716245a1b2965f02044e4474fadd2bcfe63cf249ca788541886/aiohttp-3.11.12-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:525410e0790aab036492eeea913858989c4cb070ff373ec3bc322d700bdf47c1", size = 1718111, upload-time = "2025-02-06T00:27:33.983Z" }, + { url = "https://files.pythonhosted.org/packages/e0/a9/166fd2d8b2cc64f08104aa614fad30eee506b563154081bf88ce729bc665/aiohttp-3.11.12-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bd8695be2c80b665ae3f05cb584093a1e59c35ecb7d794d1edd96e8cc9201d7", size = 1775293, upload-time = "2025-02-06T00:27:36.105Z" }, + { url = "https://files.pythonhosted.org/packages/13/c5/0d3c89bd9e36288f10dc246f42518ce8e1c333f27636ac78df091c86bb4a/aiohttp-3.11.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0203433121484b32646a5f5ea93ae86f3d9559d7243f07e8c0eab5ff8e3f70e", size = 1677338, upload-time = "2025-02-06T00:27:38.238Z" }, + { url = "https://files.pythonhosted.org/packages/72/b2/017db2833ef537be284f64ead78725984db8a39276c1a9a07c5c7526e238/aiohttp-3.11.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40cd36749a1035c34ba8d8aaf221b91ca3d111532e5ccb5fa8c3703ab1b967ed", size = 1603365, upload-time = "2025-02-06T00:27:41.281Z" }, + { url = "https://files.pythonhosted.org/packages/fc/72/b66c96a106ec7e791e29988c222141dd1219d7793ffb01e72245399e08d2/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7442662afebbf7b4c6d28cb7aab9e9ce3a5df055fc4116cc7228192ad6cb484", size = 1618464, upload-time = "2025-02-06T00:27:43.379Z" }, + { url = "https://files.pythonhosted.org/packages/3f/50/e68a40f267b46a603bab569d48d57f23508801614e05b3369898c5b2910a/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8a2fb742ef378284a50766e985804bd6adb5adb5aa781100b09befdbfa757b65", size = 1657827, upload-time = "2025-02-06T00:27:45.982Z" }, + { url = "https://files.pythonhosted.org/packages/c5/1d/aafbcdb1773d0ba7c20793ebeedfaba1f3f7462f6fc251f24983ed738aa7/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2cee3b117a8d13ab98b38d5b6bdcd040cfb4181068d05ce0c474ec9db5f3c5bb", size = 1616700, upload-time = "2025-02-06T00:27:48.17Z" }, + { url = "https://files.pythonhosted.org/packages/b0/5e/6cd9724a2932f36e2a6b742436a36d64784322cfb3406ca773f903bb9a70/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f6a19bcab7fbd8f8649d6595624856635159a6527861b9cdc3447af288a00c00", size = 1685643, upload-time = "2025-02-06T00:27:51.183Z" }, + { url = "https://files.pythonhosted.org/packages/8b/38/ea6c91d5c767fd45a18151675a07c710ca018b30aa876a9f35b32fa59761/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e4cecdb52aaa9994fbed6b81d4568427b6002f0a91c322697a4bfcc2b2363f5a", size = 1715487, upload-time = "2025-02-06T00:27:53.431Z" }, + { url = "https://files.pythonhosted.org/packages/8e/24/e9edbcb7d1d93c02e055490348df6f955d675e85a028c33babdcaeda0853/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:30f546358dfa0953db92ba620101fefc81574f87b2346556b90b5f3ef16e55ce", size = 1672948, upload-time = "2025-02-06T00:27:56.137Z" }, + { url = "https://files.pythonhosted.org/packages/25/be/0b1fb737268e003198f25c3a68c2135e76e4754bf399a879b27bd508a003/aiohttp-3.11.12-cp313-cp313-win32.whl", hash = "sha256:ce1bb21fc7d753b5f8a5d5a4bae99566386b15e716ebdb410154c16c91494d7f", size = 410396, upload-time = "2025-02-06T00:27:58.292Z" }, + { url = "https://files.pythonhosted.org/packages/68/fd/677def96a75057b0a26446b62f8fbb084435b20a7d270c99539c26573bfd/aiohttp-3.11.12-cp313-cp313-win_amd64.whl", hash = "sha256:f7914ab70d2ee8ab91c13e5402122edbc77821c66d2758abb53aabe87f013287", size = 436234, upload-time = "2025-02-06T00:28:01.693Z" }, + { url = "https://files.pythonhosted.org/packages/a7/bd/358c7032c43d4875dcbedc9113b087ef8bc619bee034f9423335698631e3/aiohttp-3.11.12-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c3623053b85b4296cd3925eeb725e386644fd5bc67250b3bb08b0f144803e7b", size = 709588, upload-time = "2025-02-06T00:28:04.576Z" }, + { url = "https://files.pythonhosted.org/packages/9f/87/9e4700a56722c139b6ed4ad9be926183545a1b55e82babd9b082be3ef4c5/aiohttp-3.11.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67453e603cea8e85ed566b2700efa1f6916aefbc0c9fcb2e86aaffc08ec38e78", size = 469076, upload-time = "2025-02-06T00:28:06.953Z" }, + { url = "https://files.pythonhosted.org/packages/c0/fa/585b66076795911800f8f16f0f93ea8fb9bfa5d8fd757bbf78f32d17c2d9/aiohttp-3.11.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6130459189e61baac5a88c10019b21e1f0c6d00ebc770e9ce269475650ff7f73", size = 456148, upload-time = "2025-02-06T00:28:10.646Z" }, + { url = "https://files.pythonhosted.org/packages/ba/6b/a1fe710860b10d83799af8c63cf2ffb63eac4edaa42d76e9540679545951/aiohttp-3.11.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9060addfa4ff753b09392efe41e6af06ea5dd257829199747b9f15bfad819460", size = 1587566, upload-time = "2025-02-06T00:28:13.63Z" }, + { url = "https://files.pythonhosted.org/packages/31/78/ab78f36b44c7239c953afd9bb331edf2b3977925de2ce98545d62e415565/aiohttp-3.11.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34245498eeb9ae54c687a07ad7f160053911b5745e186afe2d0c0f2898a1ab8a", size = 1636411, upload-time = "2025-02-06T00:28:16.28Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5c/b316b559dde4ae983e725132a2fa2518532ad56ca4698d4b71f42af48722/aiohttp-3.11.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dc0fba9a74b471c45ca1a3cb6e6913ebfae416678d90529d188886278e7f3f6", size = 1672484, upload-time = "2025-02-06T00:28:19.936Z" }, + { url = "https://files.pythonhosted.org/packages/90/08/8c409ab4040276a8c9944d5e444121a2f34151872440b3c69f31c35edf18/aiohttp-3.11.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a478aa11b328983c4444dacb947d4513cb371cd323f3845e53caeda6be5589d5", size = 1589689, upload-time = "2025-02-06T00:28:22.937Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/53b4ceffaac5dcaf4772be41f4f06e7201be5407aa743758e1a37f7d1b63/aiohttp-3.11.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c160a04283c8c6f55b5bf6d4cad59bb9c5b9c9cd08903841b25f1f7109ef1259", size = 1544225, upload-time = "2025-02-06T00:28:25.025Z" }, + { url = "https://files.pythonhosted.org/packages/4a/40/769d221f4067a05974b3352ffa228041bcda72c487689ab4030791691861/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:edb69b9589324bdc40961cdf0657815df674f1743a8d5ad9ab56a99e4833cfdd", size = 1530391, upload-time = "2025-02-06T00:28:27.202Z" }, + { url = "https://files.pythonhosted.org/packages/14/48/22527fadfdfca85fb585870ffd98aece982606775fd2f4ee80270f5c85a0/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ee84c2a22a809c4f868153b178fe59e71423e1f3d6a8cd416134bb231fbf6d3", size = 1559005, upload-time = "2025-02-06T00:28:29.853Z" }, + { url = "https://files.pythonhosted.org/packages/fd/0e/72144954bae5d80a8857dca18b8ed8e2ef76acf557465545ad5b5b9bfb58/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bf4480a5438f80e0f1539e15a7eb8b5f97a26fe087e9828e2c0ec2be119a9f72", size = 1536244, upload-time = "2025-02-06T00:28:32.084Z" }, + { url = "https://files.pythonhosted.org/packages/60/db/a2cfb5565f5e5870757e2d3099f8e24640e746ff2ba9ea899b35b6acad3f/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:e6b2732ef3bafc759f653a98881b5b9cdef0716d98f013d376ee8dfd7285abf1", size = 1607092, upload-time = "2025-02-06T00:28:34.331Z" }, + { url = "https://files.pythonhosted.org/packages/b0/31/87e869650c5532876e83c7c7d9d3f5505c5a738abe991f3ac2264070ee81/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f752e80606b132140883bb262a457c475d219d7163d996dc9072434ffb0784c4", size = 1629268, upload-time = "2025-02-06T00:28:38.134Z" }, + { url = "https://files.pythonhosted.org/packages/d2/73/25fb4d2d259caf4cf23035204315665976a66292a1055d0937c62273675a/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ab3247d58b393bda5b1c8f31c9edece7162fc13265334217785518dd770792b8", size = 1567511, upload-time = "2025-02-06T00:28:40.42Z" }, + { url = "https://files.pythonhosted.org/packages/a3/59/ef91da9971e187033476945cd18bebc3974930bde81cdf66099b318df7a6/aiohttp-3.11.12-cp39-cp39-win32.whl", hash = "sha256:0d5176f310a7fe6f65608213cc74f4228e4f4ce9fd10bcb2bb6da8fc66991462", size = 417082, upload-time = "2025-02-06T00:28:42.589Z" }, + { url = "https://files.pythonhosted.org/packages/e0/fa/6cfc042c0f59d1fa6eaeeb678b9f13b2c0bf1d7803dae81b93ca55ac6288/aiohttp-3.11.12-cp39-cp39-win_amd64.whl", hash = "sha256:74bd573dde27e58c760d9ca8615c41a57e719bff315c9adb6f2a4281a28e8798", size = 442385, upload-time = "2025-02-06T00:28:45.326Z" }, ] [[package]] @@ -116,9 +116,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "frozenlist" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54", size = 19424 } +sdist = { url = "https://files.pythonhosted.org/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54", size = 19424, upload-time = "2024-12-13T17:10:40.86Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597 }, + { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597, upload-time = "2024-12-13T17:10:38.469Z" }, ] [[package]] @@ -133,27 +133,27 @@ dependencies = [ { name = "requests" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/fb/28e33a25bf40d9745875d4c8309178a9e5903b39525916dd45fa1a4b6ade/algoliasearch-4.13.2.tar.gz", hash = "sha256:b2c0bfe2a06327d90e889b9ff310077bf686b6ae5c6a3b09cfd31b2ae7bcd99d", size = 338503 } +sdist = { url = "https://files.pythonhosted.org/packages/e1/fb/28e33a25bf40d9745875d4c8309178a9e5903b39525916dd45fa1a4b6ade/algoliasearch-4.13.2.tar.gz", hash = "sha256:b2c0bfe2a06327d90e889b9ff310077bf686b6ae5c6a3b09cfd31b2ae7bcd99d", size = 338503, upload-time = "2025-02-11T07:53:46.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/97/81f20288b4e5e4bbd708a4112623b098cbd0dae6c287277627feeed20a08/algoliasearch-4.13.2-py3-none-any.whl", hash = "sha256:4f5d8ad4d1dc09b48c6380d933e5687e9752cebd1736c93190de3d188b7c363b", size = 901880 }, + { url = "https://files.pythonhosted.org/packages/a8/97/81f20288b4e5e4bbd708a4112623b098cbd0dae6c287277627feeed20a08/algoliasearch-4.13.2-py3-none-any.whl", hash = "sha256:4f5d8ad4d1dc09b48c6380d933e5687e9752cebd1736c93190de3d188b7c363b", size = 901880, upload-time = "2025-02-11T07:53:43.933Z" }, ] [[package]] name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] [[package]] name = "ansi2html" version = "1.9.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4b/d5/e3546dcd5e4a9566f4ed8708df5853e83ca627461a5b048a861c6f8e7a26/ansi2html-1.9.2.tar.gz", hash = "sha256:3453bf87535d37b827b05245faaa756dbab4ec3d69925e352b6319c3c955c0a5", size = 44300 } +sdist = { url = "https://files.pythonhosted.org/packages/4b/d5/e3546dcd5e4a9566f4ed8708df5853e83ca627461a5b048a861c6f8e7a26/ansi2html-1.9.2.tar.gz", hash = "sha256:3453bf87535d37b827b05245faaa756dbab4ec3d69925e352b6319c3c955c0a5", size = 44300, upload-time = "2024-06-22T17:33:23.964Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/71/aee71b836e9ee2741d5694b80d74bfc7c8cd5dbdf7a9f3035fcf80d792b1/ansi2html-1.9.2-py3-none-any.whl", hash = "sha256:dccb75aa95fb018e5d299be2b45f802952377abfdce0504c17a6ee6ef0a420c5", size = 17614 }, + { url = "https://files.pythonhosted.org/packages/bd/71/aee71b836e9ee2741d5694b80d74bfc7c8cd5dbdf7a9f3035fcf80d792b1/ansi2html-1.9.2-py3-none-any.whl", hash = "sha256:dccb75aa95fb018e5d299be2b45f802952377abfdce0504c17a6ee6ef0a420c5", size = 17614, upload-time = "2024-06-22T17:33:21.852Z" }, ] [[package]] @@ -163,27 +163,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/45/1d/f03bcb60c4a3212e15f99a56085d93093a497718adf828d050b9d675da81/asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0", size = 62284 } +sdist = { url = "https://files.pythonhosted.org/packages/45/1d/f03bcb60c4a3212e15f99a56085d93093a497718adf828d050b9d675da81/asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0", size = 62284, upload-time = "2023-10-26T10:03:05.06Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/45/86/4736ac618d82a20d87d2f92ae19441ebc7ac9e7a581d7e58bbe79233b24a/asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", size = 27764 }, + { url = "https://files.pythonhosted.org/packages/45/86/4736ac618d82a20d87d2f92ae19441ebc7ac9e7a581d7e58bbe79233b24a/asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24", size = 27764, upload-time = "2023-10-26T10:03:01.789Z" }, ] [[package]] name = "async-timeout" version = "5.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274 } +sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274, upload-time = "2024-11-06T16:41:39.6Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233 }, + { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233, upload-time = "2024-11-06T16:41:37.9Z" }, ] [[package]] name = "attrs" version = "24.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/48/c8/6260f8ccc11f0917360fc0da435c5c9c7504e3db174d5a12a1494887b045/attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff", size = 805984 } +sdist = { url = "https://files.pythonhosted.org/packages/48/c8/6260f8ccc11f0917360fc0da435c5c9c7504e3db174d5a12a1494887b045/attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff", size = 805984, upload-time = "2024-12-16T06:59:29.899Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/89/aa/ab0f7891a01eeb2d2e338ae8fecbe57fcebea1a24dbb64d45801bfab481d/attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308", size = 63397 }, + { url = "https://files.pythonhosted.org/packages/89/aa/ab0f7891a01eeb2d2e338ae8fecbe57fcebea1a24dbb64d45801bfab481d/attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308", size = 63397, upload-time = "2024-12-16T06:59:26.977Z" }, ] [[package]] @@ -194,18 +194,18 @@ dependencies = [ { name = "pyflakes" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2a/cb/486f912d6171bc5748c311a2984a301f4e2d054833a1da78485866c71522/autoflake-2.3.1.tar.gz", hash = "sha256:c98b75dc5b0a86459c4f01a1d32ac7eb4338ec4317a4469515ff1e687ecd909e", size = 27642 } +sdist = { url = "https://files.pythonhosted.org/packages/2a/cb/486f912d6171bc5748c311a2984a301f4e2d054833a1da78485866c71522/autoflake-2.3.1.tar.gz", hash = "sha256:c98b75dc5b0a86459c4f01a1d32ac7eb4338ec4317a4469515ff1e687ecd909e", size = 27642, upload-time = "2024-03-13T03:41:28.977Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/ee/3fd29bf416eb4f1c5579cf12bf393ae954099258abd7bde03c4f9716ef6b/autoflake-2.3.1-py3-none-any.whl", hash = "sha256:3ae7495db9084b7b32818b4140e6dc4fc280b712fb414f5b8fe57b0a8e85a840", size = 32483 }, + { url = "https://files.pythonhosted.org/packages/a2/ee/3fd29bf416eb4f1c5579cf12bf393ae954099258abd7bde03c4f9716ef6b/autoflake-2.3.1-py3-none-any.whl", hash = "sha256:3ae7495db9084b7b32818b4140e6dc4fc280b712fb414f5b8fe57b0a8e85a840", size = 32483, upload-time = "2024-03-13T03:41:26.969Z" }, ] [[package]] name = "babel" version = "2.16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/74/f1bc80f23eeba13393b7222b11d95ca3af2c1e28edca18af487137eefed9/babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316", size = 9348104 } +sdist = { url = "https://files.pythonhosted.org/packages/2a/74/f1bc80f23eeba13393b7222b11d95ca3af2c1e28edca18af487137eefed9/babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316", size = 9348104, upload-time = "2024-08-08T14:25:45.459Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b", size = 9587599 }, + { url = "https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b", size = 9587599, upload-time = "2024-08-08T14:25:42.686Z" }, ] [[package]] @@ -216,9 +216,9 @@ dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f0/3c/adaf39ce1fb4afdd21b611e3d530b183bb7759c9b673d60db0e347fd4439/beautifulsoup4-4.13.3.tar.gz", hash = "sha256:1bd32405dacc920b42b83ba01644747ed77456a65760e285fbc47633ceddaf8b", size = 619516 } +sdist = { url = "https://files.pythonhosted.org/packages/f0/3c/adaf39ce1fb4afdd21b611e3d530b183bb7759c9b673d60db0e347fd4439/beautifulsoup4-4.13.3.tar.gz", hash = "sha256:1bd32405dacc920b42b83ba01644747ed77456a65760e285fbc47633ceddaf8b", size = 619516, upload-time = "2025-02-04T20:05:01.681Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/49/6abb616eb3cbab6a7cca303dc02fdf3836de2e0b834bf966a7f5271a34d8/beautifulsoup4-4.13.3-py3-none-any.whl", hash = "sha256:99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16", size = 186015 }, + { url = "https://files.pythonhosted.org/packages/f9/49/6abb616eb3cbab6a7cca303dc02fdf3836de2e0b834bf966a7f5271a34d8/beautifulsoup4-4.13.3-py3-none-any.whl", hash = "sha256:99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16", size = 186015, upload-time = "2025-02-04T20:05:03.729Z" }, ] [[package]] @@ -234,29 +234,29 @@ dependencies = [ { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/0d/cc2fb42b8c50d80143221515dd7e4766995bd07c56c9a3ed30baf080b6dc/black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875", size = 645813 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/f3/465c0eb5cddf7dbbfe1fecd9b875d1dcf51b88923cd2c1d7e9ab95c6336b/black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812", size = 1623211 }, - { url = "https://files.pythonhosted.org/packages/df/57/b6d2da7d200773fdfcc224ffb87052cf283cec4d7102fab450b4a05996d8/black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea", size = 1457139 }, - { url = "https://files.pythonhosted.org/packages/6e/c5/9023b7673904a5188f9be81f5e129fff69f51f5515655fbd1d5a4e80a47b/black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f", size = 1753774 }, - { url = "https://files.pythonhosted.org/packages/e1/32/df7f18bd0e724e0d9748829765455d6643ec847b3f87e77456fc99d0edab/black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e", size = 1414209 }, - { url = "https://files.pythonhosted.org/packages/c2/cc/7496bb63a9b06a954d3d0ac9fe7a73f3bf1cd92d7a58877c27f4ad1e9d41/black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad", size = 1607468 }, - { url = "https://files.pythonhosted.org/packages/2b/e3/69a738fb5ba18b5422f50b4f143544c664d7da40f09c13969b2fd52900e0/black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50", size = 1437270 }, - { url = "https://files.pythonhosted.org/packages/c9/9b/2db8045b45844665c720dcfe292fdaf2e49825810c0103e1191515fc101a/black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392", size = 1737061 }, - { url = "https://files.pythonhosted.org/packages/a3/95/17d4a09a5be5f8c65aa4a361444d95edc45def0de887810f508d3f65db7a/black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175", size = 1423293 }, - { url = "https://files.pythonhosted.org/packages/90/04/bf74c71f592bcd761610bbf67e23e6a3cff824780761f536512437f1e655/black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3", size = 1644256 }, - { url = "https://files.pythonhosted.org/packages/4c/ea/a77bab4cf1887f4b2e0bce5516ea0b3ff7d04ba96af21d65024629afedb6/black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65", size = 1448534 }, - { url = "https://files.pythonhosted.org/packages/4e/3e/443ef8bc1fbda78e61f79157f303893f3fddf19ca3c8989b163eb3469a12/black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f", size = 1761892 }, - { url = "https://files.pythonhosted.org/packages/52/93/eac95ff229049a6901bc84fec6908a5124b8a0b7c26ea766b3b8a5debd22/black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8", size = 1434796 }, - { url = "https://files.pythonhosted.org/packages/d0/a0/a993f58d4ecfba035e61fca4e9f64a2ecae838fc9f33ab798c62173ed75c/black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981", size = 1643986 }, - { url = "https://files.pythonhosted.org/packages/37/d5/602d0ef5dfcace3fb4f79c436762f130abd9ee8d950fa2abdbf8bbc555e0/black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b", size = 1448085 }, - { url = "https://files.pythonhosted.org/packages/47/6d/a3a239e938960df1a662b93d6230d4f3e9b4a22982d060fc38c42f45a56b/black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2", size = 1760928 }, - { url = "https://files.pythonhosted.org/packages/dd/cf/af018e13b0eddfb434df4d9cd1b2b7892bab119f7a20123e93f6910982e8/black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b", size = 1436875 }, - { url = "https://files.pythonhosted.org/packages/fe/02/f408c804e0ee78c367dcea0a01aedde4f1712af93b8b6e60df981e0228c7/black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd", size = 1622516 }, - { url = "https://files.pythonhosted.org/packages/f8/b9/9b706ed2f55bfb28b436225a9c57da35990c9005b90b8c91f03924454ad7/black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f", size = 1456181 }, - { url = "https://files.pythonhosted.org/packages/0a/1c/314d7f17434a5375682ad097f6f4cc0e3f414f3c95a9b1bb4df14a0f11f9/black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800", size = 1752801 }, - { url = "https://files.pythonhosted.org/packages/39/a7/20e5cd9237d28ad0b31438de5d9f01c8b99814576f4c0cda1edd62caf4b0/black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7", size = 1413626 }, - { url = "https://files.pythonhosted.org/packages/8d/a7/4b27c50537ebca8bec139b872861f9d2bf501c5ec51fcf897cb924d9e264/black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d", size = 206898 }, +sdist = { url = "https://files.pythonhosted.org/packages/d8/0d/cc2fb42b8c50d80143221515dd7e4766995bd07c56c9a3ed30baf080b6dc/black-24.10.0.tar.gz", hash = "sha256:846ea64c97afe3bc677b761787993be4991810ecc7a4a937816dd6bddedc4875", size = 645813, upload-time = "2024-10-07T19:20:50.361Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/f3/465c0eb5cddf7dbbfe1fecd9b875d1dcf51b88923cd2c1d7e9ab95c6336b/black-24.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e6668650ea4b685440857138e5fe40cde4d652633b1bdffc62933d0db4ed9812", size = 1623211, upload-time = "2024-10-07T19:26:12.43Z" }, + { url = "https://files.pythonhosted.org/packages/df/57/b6d2da7d200773fdfcc224ffb87052cf283cec4d7102fab450b4a05996d8/black-24.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c536fcf674217e87b8cc3657b81809d3c085d7bf3ef262ead700da345bfa6ea", size = 1457139, upload-time = "2024-10-07T19:25:06.453Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c5/9023b7673904a5188f9be81f5e129fff69f51f5515655fbd1d5a4e80a47b/black-24.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:649fff99a20bd06c6f727d2a27f401331dc0cc861fb69cde910fe95b01b5928f", size = 1753774, upload-time = "2024-10-07T19:23:58.47Z" }, + { url = "https://files.pythonhosted.org/packages/e1/32/df7f18bd0e724e0d9748829765455d6643ec847b3f87e77456fc99d0edab/black-24.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:fe4d6476887de70546212c99ac9bd803d90b42fc4767f058a0baa895013fbb3e", size = 1414209, upload-time = "2024-10-07T19:24:42.54Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cc/7496bb63a9b06a954d3d0ac9fe7a73f3bf1cd92d7a58877c27f4ad1e9d41/black-24.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5a2221696a8224e335c28816a9d331a6c2ae15a2ee34ec857dcf3e45dbfa99ad", size = 1607468, upload-time = "2024-10-07T19:26:14.966Z" }, + { url = "https://files.pythonhosted.org/packages/2b/e3/69a738fb5ba18b5422f50b4f143544c664d7da40f09c13969b2fd52900e0/black-24.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9da3333530dbcecc1be13e69c250ed8dfa67f43c4005fb537bb426e19200d50", size = 1437270, upload-time = "2024-10-07T19:25:24.291Z" }, + { url = "https://files.pythonhosted.org/packages/c9/9b/2db8045b45844665c720dcfe292fdaf2e49825810c0103e1191515fc101a/black-24.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4007b1393d902b48b36958a216c20c4482f601569d19ed1df294a496eb366392", size = 1737061, upload-time = "2024-10-07T19:23:52.18Z" }, + { url = "https://files.pythonhosted.org/packages/a3/95/17d4a09a5be5f8c65aa4a361444d95edc45def0de887810f508d3f65db7a/black-24.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:394d4ddc64782e51153eadcaaca95144ac4c35e27ef9b0a42e121ae7e57a9175", size = 1423293, upload-time = "2024-10-07T19:24:41.7Z" }, + { url = "https://files.pythonhosted.org/packages/90/04/bf74c71f592bcd761610bbf67e23e6a3cff824780761f536512437f1e655/black-24.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b5e39e0fae001df40f95bd8cc36b9165c5e2ea88900167bddf258bacef9bbdc3", size = 1644256, upload-time = "2024-10-07T19:27:53.355Z" }, + { url = "https://files.pythonhosted.org/packages/4c/ea/a77bab4cf1887f4b2e0bce5516ea0b3ff7d04ba96af21d65024629afedb6/black-24.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d37d422772111794b26757c5b55a3eade028aa3fde43121ab7b673d050949d65", size = 1448534, upload-time = "2024-10-07T19:26:44.953Z" }, + { url = "https://files.pythonhosted.org/packages/4e/3e/443ef8bc1fbda78e61f79157f303893f3fddf19ca3c8989b163eb3469a12/black-24.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:14b3502784f09ce2443830e3133dacf2c0110d45191ed470ecb04d0f5f6fcb0f", size = 1761892, upload-time = "2024-10-07T19:24:10.264Z" }, + { url = "https://files.pythonhosted.org/packages/52/93/eac95ff229049a6901bc84fec6908a5124b8a0b7c26ea766b3b8a5debd22/black-24.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:30d2c30dc5139211dda799758559d1b049f7f14c580c409d6ad925b74a4208a8", size = 1434796, upload-time = "2024-10-07T19:25:06.239Z" }, + { url = "https://files.pythonhosted.org/packages/d0/a0/a993f58d4ecfba035e61fca4e9f64a2ecae838fc9f33ab798c62173ed75c/black-24.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cbacacb19e922a1d75ef2b6ccaefcd6e93a2c05ede32f06a21386a04cedb981", size = 1643986, upload-time = "2024-10-07T19:28:50.684Z" }, + { url = "https://files.pythonhosted.org/packages/37/d5/602d0ef5dfcace3fb4f79c436762f130abd9ee8d950fa2abdbf8bbc555e0/black-24.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1f93102e0c5bb3907451063e08b9876dbeac810e7da5a8bfb7aeb5a9ef89066b", size = 1448085, upload-time = "2024-10-07T19:28:12.093Z" }, + { url = "https://files.pythonhosted.org/packages/47/6d/a3a239e938960df1a662b93d6230d4f3e9b4a22982d060fc38c42f45a56b/black-24.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddacb691cdcdf77b96f549cf9591701d8db36b2f19519373d60d31746068dbf2", size = 1760928, upload-time = "2024-10-07T19:24:15.233Z" }, + { url = "https://files.pythonhosted.org/packages/dd/cf/af018e13b0eddfb434df4d9cd1b2b7892bab119f7a20123e93f6910982e8/black-24.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:680359d932801c76d2e9c9068d05c6b107f2584b2a5b88831c83962eb9984c1b", size = 1436875, upload-time = "2024-10-07T19:24:42.762Z" }, + { url = "https://files.pythonhosted.org/packages/fe/02/f408c804e0ee78c367dcea0a01aedde4f1712af93b8b6e60df981e0228c7/black-24.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:17374989640fbca88b6a448129cd1745c5eb8d9547b464f281b251dd00155ccd", size = 1622516, upload-time = "2024-10-07T19:29:40.629Z" }, + { url = "https://files.pythonhosted.org/packages/f8/b9/9b706ed2f55bfb28b436225a9c57da35990c9005b90b8c91f03924454ad7/black-24.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:63f626344343083322233f175aaf372d326de8436f5928c042639a4afbbf1d3f", size = 1456181, upload-time = "2024-10-07T19:28:11.16Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1c/314d7f17434a5375682ad097f6f4cc0e3f414f3c95a9b1bb4df14a0f11f9/black-24.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfa1d0cb6200857f1923b602f978386a3a2758a65b52e0950299ea014be6800", size = 1752801, upload-time = "2024-10-07T19:23:56.594Z" }, + { url = "https://files.pythonhosted.org/packages/39/a7/20e5cd9237d28ad0b31438de5d9f01c8b99814576f4c0cda1edd62caf4b0/black-24.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:2cd9c95431d94adc56600710f8813ee27eea544dd118d45896bb734e9d7a0dc7", size = 1413626, upload-time = "2024-10-07T19:24:46.133Z" }, + { url = "https://files.pythonhosted.org/packages/8d/a7/4b27c50537ebca8bec139b872861f9d2bf501c5ec51fcf897cb924d9e264/black-24.10.0-py3-none-any.whl", hash = "sha256:3bb2b7a1f7b685f85b11fed1ef10f8a9148bceb49853e47a294a3dd963c1dd7d", size = 206898, upload-time = "2024-10-07T19:20:48.317Z" }, ] [[package]] @@ -266,9 +266,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096 } +sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096, upload-time = "2024-06-18T10:56:06.741Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611 }, + { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611, upload-time = "2024-06-18T10:55:59.489Z" }, ] [[package]] @@ -282,18 +282,18 @@ dependencies = [ { name = "pillow" }, { name = "tinycss2" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d5/e6/ec5900b724e3c44af7f6f51f719919137284e5da4aabe96508baec8a1b40/CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0", size = 8399085 } +sdist = { url = "https://files.pythonhosted.org/packages/d5/e6/ec5900b724e3c44af7f6f51f719919137284e5da4aabe96508baec8a1b40/CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0", size = 8399085, upload-time = "2023-08-05T09:08:05.75Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/a5/1866b42151f50453f1a0d28fc4c39f5be5f412a2e914f33449c42daafdf1/CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b", size = 43235 }, + { url = "https://files.pythonhosted.org/packages/01/a5/1866b42151f50453f1a0d28fc4c39f5be5f412a2e914f33449c42daafdf1/CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b", size = 43235, upload-time = "2023-08-05T09:08:01.583Z" }, ] [[package]] name = "certifi" version = "2024.12.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/bd/1d41ee578ce09523c81a15426705dd20969f5abf006d1afe8aeff0dd776a/certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db", size = 166010 } +sdist = { url = "https://files.pythonhosted.org/packages/0f/bd/1d41ee578ce09523c81a15426705dd20969f5abf006d1afe8aeff0dd776a/certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db", size = 166010, upload-time = "2024-12-14T13:52:38.02Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", size = 164927 }, + { url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", size = 164927, upload-time = "2024-12-14T13:52:36.114Z" }, ] [[package]] @@ -303,140 +303,140 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycparser" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191 }, - { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592 }, - { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024 }, - { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188 }, - { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571 }, - { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687 }, - { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211 }, - { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325 }, - { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784 }, - { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564 }, - { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804 }, - { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299 }, - { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264 }, - { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651 }, - { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 }, - { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200 }, - { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235 }, - { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721 }, - { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242 }, - { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999 }, - { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242 }, - { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604 }, - { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727 }, - { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400 }, - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, - { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, - { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, - { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, - { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, - { url = "https://files.pythonhosted.org/packages/b9/ea/8bb50596b8ffbc49ddd7a1ad305035daa770202a6b782fc164647c2673ad/cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16", size = 182220 }, - { url = "https://files.pythonhosted.org/packages/ae/11/e77c8cd24f58285a82c23af484cf5b124a376b32644e445960d1a4654c3a/cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36", size = 178605 }, - { url = "https://files.pythonhosted.org/packages/ed/65/25a8dc32c53bf5b7b6c2686b42ae2ad58743f7ff644844af7cdb29b49361/cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8", size = 424910 }, - { url = "https://files.pythonhosted.org/packages/42/7a/9d086fab7c66bd7c4d0f27c57a1b6b068ced810afc498cc8c49e0088661c/cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576", size = 447200 }, - { url = "https://files.pythonhosted.org/packages/da/63/1785ced118ce92a993b0ec9e0d0ac8dc3e5dbfbcaa81135be56c69cabbb6/cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", size = 454565 }, - { url = "https://files.pythonhosted.org/packages/74/06/90b8a44abf3556599cdec107f7290277ae8901a58f75e6fe8f970cd72418/cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0", size = 435635 }, - { url = "https://files.pythonhosted.org/packages/bd/62/a1f468e5708a70b1d86ead5bab5520861d9c7eacce4a885ded9faa7729c3/cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3", size = 445218 }, - { url = "https://files.pythonhosted.org/packages/5b/95/b34462f3ccb09c2594aa782d90a90b045de4ff1f70148ee79c69d37a0a5a/cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595", size = 460486 }, - { url = "https://files.pythonhosted.org/packages/fc/fc/a1e4bebd8d680febd29cf6c8a40067182b64f00c7d105f8f26b5bc54317b/cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a", size = 437911 }, - { url = "https://files.pythonhosted.org/packages/e6/c3/21cab7a6154b6a5ea330ae80de386e7665254835b9e98ecc1340b3a7de9a/cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e", size = 460632 }, - { url = "https://files.pythonhosted.org/packages/cb/b5/fd9f8b5a84010ca169ee49f4e4ad6f8c05f4e3545b72ee041dbbcb159882/cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7", size = 171820 }, - { url = "https://files.pythonhosted.org/packages/8c/52/b08750ce0bce45c143e1b5d7357ee8c55341b52bdef4b0f081af1eb248c2/cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", size = 181290 }, +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191, upload-time = "2024-09-04T20:43:30.027Z" }, + { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592, upload-time = "2024-09-04T20:43:32.108Z" }, + { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024, upload-time = "2024-09-04T20:43:34.186Z" }, + { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188, upload-time = "2024-09-04T20:43:36.286Z" }, + { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571, upload-time = "2024-09-04T20:43:38.586Z" }, + { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687, upload-time = "2024-09-04T20:43:40.084Z" }, + { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211, upload-time = "2024-09-04T20:43:41.526Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325, upload-time = "2024-09-04T20:43:43.117Z" }, + { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784, upload-time = "2024-09-04T20:43:45.256Z" }, + { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564, upload-time = "2024-09-04T20:43:46.779Z" }, + { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804, upload-time = "2024-09-04T20:43:48.186Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299, upload-time = "2024-09-04T20:43:49.812Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264, upload-time = "2024-09-04T20:43:51.124Z" }, + { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651, upload-time = "2024-09-04T20:43:52.872Z" }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259, upload-time = "2024-09-04T20:43:56.123Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200, upload-time = "2024-09-04T20:43:57.891Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235, upload-time = "2024-09-04T20:44:00.18Z" }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721, upload-time = "2024-09-04T20:44:01.585Z" }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242, upload-time = "2024-09-04T20:44:03.467Z" }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999, upload-time = "2024-09-04T20:44:05.023Z" }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242, upload-time = "2024-09-04T20:44:06.444Z" }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604, upload-time = "2024-09-04T20:44:08.206Z" }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload-time = "2024-09-04T20:44:12.232Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload-time = "2024-09-04T20:44:13.739Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload-time = "2024-09-04T20:44:15.231Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload-time = "2024-09-04T20:44:17.188Z" }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload-time = "2024-09-04T20:44:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload-time = "2024-09-04T20:44:20.248Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload-time = "2024-09-04T20:44:21.673Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload-time = "2024-09-04T20:44:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload-time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" }, + { url = "https://files.pythonhosted.org/packages/b9/ea/8bb50596b8ffbc49ddd7a1ad305035daa770202a6b782fc164647c2673ad/cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16", size = 182220, upload-time = "2024-09-04T20:45:01.577Z" }, + { url = "https://files.pythonhosted.org/packages/ae/11/e77c8cd24f58285a82c23af484cf5b124a376b32644e445960d1a4654c3a/cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36", size = 178605, upload-time = "2024-09-04T20:45:03.837Z" }, + { url = "https://files.pythonhosted.org/packages/ed/65/25a8dc32c53bf5b7b6c2686b42ae2ad58743f7ff644844af7cdb29b49361/cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8", size = 424910, upload-time = "2024-09-04T20:45:05.315Z" }, + { url = "https://files.pythonhosted.org/packages/42/7a/9d086fab7c66bd7c4d0f27c57a1b6b068ced810afc498cc8c49e0088661c/cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576", size = 447200, upload-time = "2024-09-04T20:45:06.903Z" }, + { url = "https://files.pythonhosted.org/packages/da/63/1785ced118ce92a993b0ec9e0d0ac8dc3e5dbfbcaa81135be56c69cabbb6/cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87", size = 454565, upload-time = "2024-09-04T20:45:08.975Z" }, + { url = "https://files.pythonhosted.org/packages/74/06/90b8a44abf3556599cdec107f7290277ae8901a58f75e6fe8f970cd72418/cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0", size = 435635, upload-time = "2024-09-04T20:45:10.64Z" }, + { url = "https://files.pythonhosted.org/packages/bd/62/a1f468e5708a70b1d86ead5bab5520861d9c7eacce4a885ded9faa7729c3/cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3", size = 445218, upload-time = "2024-09-04T20:45:12.366Z" }, + { url = "https://files.pythonhosted.org/packages/5b/95/b34462f3ccb09c2594aa782d90a90b045de4ff1f70148ee79c69d37a0a5a/cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595", size = 460486, upload-time = "2024-09-04T20:45:13.935Z" }, + { url = "https://files.pythonhosted.org/packages/fc/fc/a1e4bebd8d680febd29cf6c8a40067182b64f00c7d105f8f26b5bc54317b/cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a", size = 437911, upload-time = "2024-09-04T20:45:15.696Z" }, + { url = "https://files.pythonhosted.org/packages/e6/c3/21cab7a6154b6a5ea330ae80de386e7665254835b9e98ecc1340b3a7de9a/cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e", size = 460632, upload-time = "2024-09-04T20:45:17.284Z" }, + { url = "https://files.pythonhosted.org/packages/cb/b5/fd9f8b5a84010ca169ee49f4e4ad6f8c05f4e3545b72ee041dbbcb159882/cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7", size = 171820, upload-time = "2024-09-04T20:45:18.762Z" }, + { url = "https://files.pythonhosted.org/packages/8c/52/b08750ce0bce45c143e1b5d7357ee8c55341b52bdef4b0f081af1eb248c2/cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662", size = 181290, upload-time = "2024-09-04T20:45:20.226Z" }, ] [[package]] name = "charset-normalizer" version = "3.4.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/58/5580c1716040bc89206c77d8f74418caf82ce519aae06450393ca73475d1/charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de", size = 198013 }, - { url = "https://files.pythonhosted.org/packages/d0/11/00341177ae71c6f5159a08168bcb98c6e6d196d372c94511f9f6c9afe0c6/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176", size = 141285 }, - { url = "https://files.pythonhosted.org/packages/01/09/11d684ea5819e5a8f5100fb0b38cf8d02b514746607934134d31233e02c8/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037", size = 151449 }, - { url = "https://files.pythonhosted.org/packages/08/06/9f5a12939db324d905dc1f70591ae7d7898d030d7662f0d426e2286f68c9/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f", size = 143892 }, - { url = "https://files.pythonhosted.org/packages/93/62/5e89cdfe04584cb7f4d36003ffa2936681b03ecc0754f8e969c2becb7e24/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a", size = 146123 }, - { url = "https://files.pythonhosted.org/packages/a9/ac/ab729a15c516da2ab70a05f8722ecfccc3f04ed7a18e45c75bbbaa347d61/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a", size = 147943 }, - { url = "https://files.pythonhosted.org/packages/03/d2/3f392f23f042615689456e9a274640c1d2e5dd1d52de36ab8f7955f8f050/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247", size = 142063 }, - { url = "https://files.pythonhosted.org/packages/f2/e3/e20aae5e1039a2cd9b08d9205f52142329f887f8cf70da3650326670bddf/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408", size = 150578 }, - { url = "https://files.pythonhosted.org/packages/8d/af/779ad72a4da0aed925e1139d458adc486e61076d7ecdcc09e610ea8678db/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb", size = 153629 }, - { url = "https://files.pythonhosted.org/packages/c2/b6/7aa450b278e7aa92cf7732140bfd8be21f5f29d5bf334ae987c945276639/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d", size = 150778 }, - { url = "https://files.pythonhosted.org/packages/39/f4/d9f4f712d0951dcbfd42920d3db81b00dd23b6ab520419626f4023334056/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807", size = 146453 }, - { url = "https://files.pythonhosted.org/packages/49/2b/999d0314e4ee0cff3cb83e6bc9aeddd397eeed693edb4facb901eb8fbb69/charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f", size = 95479 }, - { url = "https://files.pythonhosted.org/packages/2d/ce/3cbed41cff67e455a386fb5e5dd8906cdda2ed92fbc6297921f2e4419309/charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f", size = 102790 }, - { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995 }, - { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471 }, - { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831 }, - { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335 }, - { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862 }, - { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673 }, - { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211 }, - { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039 }, - { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939 }, - { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075 }, - { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340 }, - { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205 }, - { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441 }, - { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, - { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, - { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, - { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, - { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, - { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, - { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, - { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, - { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, - { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, - { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, - { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, - { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, - { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698 }, - { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162 }, - { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263 }, - { url = "https://files.pythonhosted.org/packages/5e/67/2937f8d548c3ef6e2f9aab0f6e21001056f692d43282b165e7c56023e6dd/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", size = 142966 }, - { url = "https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", size = 144992 }, - { url = "https://files.pythonhosted.org/packages/96/2c/d49710a6dbcd3776265f4c923bb73ebe83933dfbaa841c5da850fe0fd20b/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", size = 147162 }, - { url = "https://files.pythonhosted.org/packages/b4/41/35ff1f9a6bd380303dea55e44c4933b4cc3c4850988927d4082ada230273/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", size = 140972 }, - { url = "https://files.pythonhosted.org/packages/fb/43/c6a0b685fe6910d08ba971f62cd9c3e862a85770395ba5d9cad4fede33ab/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", size = 149095 }, - { url = "https://files.pythonhosted.org/packages/4c/ff/a9a504662452e2d2878512115638966e75633519ec11f25fca3d2049a94a/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", size = 152668 }, - { url = "https://files.pythonhosted.org/packages/6c/71/189996b6d9a4b932564701628af5cee6716733e9165af1d5e1b285c530ed/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", size = 150073 }, - { url = "https://files.pythonhosted.org/packages/e4/93/946a86ce20790e11312c87c75ba68d5f6ad2208cfb52b2d6a2c32840d922/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", size = 145732 }, - { url = "https://files.pythonhosted.org/packages/cd/e5/131d2fb1b0dddafc37be4f3a2fa79aa4c037368be9423061dccadfd90091/charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", size = 95391 }, - { url = "https://files.pythonhosted.org/packages/27/f2/4f9a69cc7712b9b5ad8fdb87039fd89abba997ad5cbe690d1835d40405b0/charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", size = 102702 }, - { url = "https://files.pythonhosted.org/packages/7f/c0/b913f8f02836ed9ab32ea643c6fe4d3325c3d8627cf6e78098671cafff86/charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41", size = 197867 }, - { url = "https://files.pythonhosted.org/packages/0f/6c/2bee440303d705b6fb1e2ec789543edec83d32d258299b16eed28aad48e0/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f", size = 141385 }, - { url = "https://files.pythonhosted.org/packages/3d/04/cb42585f07f6f9fd3219ffb6f37d5a39b4fd2db2355b23683060029c35f7/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2", size = 151367 }, - { url = "https://files.pythonhosted.org/packages/54/54/2412a5b093acb17f0222de007cc129ec0e0df198b5ad2ce5699355269dfe/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770", size = 143928 }, - { url = "https://files.pythonhosted.org/packages/5a/6d/e2773862b043dcf8a221342954f375392bb2ce6487bcd9f2c1b34e1d6781/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4", size = 146203 }, - { url = "https://files.pythonhosted.org/packages/b9/f8/ca440ef60d8f8916022859885f231abb07ada3c347c03d63f283bec32ef5/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537", size = 148082 }, - { url = "https://files.pythonhosted.org/packages/04/d2/42fd330901aaa4b805a1097856c2edf5095e260a597f65def493f4b8c833/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496", size = 142053 }, - { url = "https://files.pythonhosted.org/packages/9e/af/3a97a4fa3c53586f1910dadfc916e9c4f35eeada36de4108f5096cb7215f/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78", size = 150625 }, - { url = "https://files.pythonhosted.org/packages/26/ae/23d6041322a3556e4da139663d02fb1b3c59a23ab2e2b56432bd2ad63ded/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7", size = 153549 }, - { url = "https://files.pythonhosted.org/packages/94/22/b8f2081c6a77cb20d97e57e0b385b481887aa08019d2459dc2858ed64871/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6", size = 150945 }, - { url = "https://files.pythonhosted.org/packages/c7/0b/c5ec5092747f801b8b093cdf5610e732b809d6cb11f4c51e35fc28d1d389/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294", size = 146595 }, - { url = "https://files.pythonhosted.org/packages/0c/5a/0b59704c38470df6768aa154cc87b1ac7c9bb687990a1559dc8765e8627e/charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5", size = 95453 }, - { url = "https://files.pythonhosted.org/packages/85/2d/a9790237cb4d01a6d57afadc8573c8b73c609ade20b80f4cda30802009ee/charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765", size = 102811 }, - { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, +sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188, upload-time = "2024-12-24T18:12:35.43Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/58/5580c1716040bc89206c77d8f74418caf82ce519aae06450393ca73475d1/charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de", size = 198013, upload-time = "2024-12-24T18:09:43.671Z" }, + { url = "https://files.pythonhosted.org/packages/d0/11/00341177ae71c6f5159a08168bcb98c6e6d196d372c94511f9f6c9afe0c6/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176", size = 141285, upload-time = "2024-12-24T18:09:48.113Z" }, + { url = "https://files.pythonhosted.org/packages/01/09/11d684ea5819e5a8f5100fb0b38cf8d02b514746607934134d31233e02c8/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037", size = 151449, upload-time = "2024-12-24T18:09:50.845Z" }, + { url = "https://files.pythonhosted.org/packages/08/06/9f5a12939db324d905dc1f70591ae7d7898d030d7662f0d426e2286f68c9/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f", size = 143892, upload-time = "2024-12-24T18:09:52.078Z" }, + { url = "https://files.pythonhosted.org/packages/93/62/5e89cdfe04584cb7f4d36003ffa2936681b03ecc0754f8e969c2becb7e24/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a", size = 146123, upload-time = "2024-12-24T18:09:54.575Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ac/ab729a15c516da2ab70a05f8722ecfccc3f04ed7a18e45c75bbbaa347d61/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a", size = 147943, upload-time = "2024-12-24T18:09:57.324Z" }, + { url = "https://files.pythonhosted.org/packages/03/d2/3f392f23f042615689456e9a274640c1d2e5dd1d52de36ab8f7955f8f050/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247", size = 142063, upload-time = "2024-12-24T18:09:59.794Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e3/e20aae5e1039a2cd9b08d9205f52142329f887f8cf70da3650326670bddf/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408", size = 150578, upload-time = "2024-12-24T18:10:02.357Z" }, + { url = "https://files.pythonhosted.org/packages/8d/af/779ad72a4da0aed925e1139d458adc486e61076d7ecdcc09e610ea8678db/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb", size = 153629, upload-time = "2024-12-24T18:10:03.678Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b6/7aa450b278e7aa92cf7732140bfd8be21f5f29d5bf334ae987c945276639/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d", size = 150778, upload-time = "2024-12-24T18:10:06.197Z" }, + { url = "https://files.pythonhosted.org/packages/39/f4/d9f4f712d0951dcbfd42920d3db81b00dd23b6ab520419626f4023334056/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807", size = 146453, upload-time = "2024-12-24T18:10:08.848Z" }, + { url = "https://files.pythonhosted.org/packages/49/2b/999d0314e4ee0cff3cb83e6bc9aeddd397eeed693edb4facb901eb8fbb69/charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f", size = 95479, upload-time = "2024-12-24T18:10:10.044Z" }, + { url = "https://files.pythonhosted.org/packages/2d/ce/3cbed41cff67e455a386fb5e5dd8906cdda2ed92fbc6297921f2e4419309/charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f", size = 102790, upload-time = "2024-12-24T18:10:11.323Z" }, + { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995, upload-time = "2024-12-24T18:10:12.838Z" }, + { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471, upload-time = "2024-12-24T18:10:14.101Z" }, + { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831, upload-time = "2024-12-24T18:10:15.512Z" }, + { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335, upload-time = "2024-12-24T18:10:18.369Z" }, + { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862, upload-time = "2024-12-24T18:10:19.743Z" }, + { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673, upload-time = "2024-12-24T18:10:21.139Z" }, + { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211, upload-time = "2024-12-24T18:10:22.382Z" }, + { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039, upload-time = "2024-12-24T18:10:24.802Z" }, + { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939, upload-time = "2024-12-24T18:10:26.124Z" }, + { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075, upload-time = "2024-12-24T18:10:30.027Z" }, + { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340, upload-time = "2024-12-24T18:10:32.679Z" }, + { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205, upload-time = "2024-12-24T18:10:34.724Z" }, + { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441, upload-time = "2024-12-24T18:10:37.574Z" }, + { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105, upload-time = "2024-12-24T18:10:38.83Z" }, + { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404, upload-time = "2024-12-24T18:10:44.272Z" }, + { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423, upload-time = "2024-12-24T18:10:45.492Z" }, + { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184, upload-time = "2024-12-24T18:10:47.898Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268, upload-time = "2024-12-24T18:10:50.589Z" }, + { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601, upload-time = "2024-12-24T18:10:52.541Z" }, + { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098, upload-time = "2024-12-24T18:10:53.789Z" }, + { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520, upload-time = "2024-12-24T18:10:55.048Z" }, + { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852, upload-time = "2024-12-24T18:10:57.647Z" }, + { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488, upload-time = "2024-12-24T18:10:59.43Z" }, + { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192, upload-time = "2024-12-24T18:11:00.676Z" }, + { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550, upload-time = "2024-12-24T18:11:01.952Z" }, + { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785, upload-time = "2024-12-24T18:11:03.142Z" }, + { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698, upload-time = "2024-12-24T18:11:05.834Z" }, + { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162, upload-time = "2024-12-24T18:11:07.064Z" }, + { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263, upload-time = "2024-12-24T18:11:08.374Z" }, + { url = "https://files.pythonhosted.org/packages/5e/67/2937f8d548c3ef6e2f9aab0f6e21001056f692d43282b165e7c56023e6dd/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", size = 142966, upload-time = "2024-12-24T18:11:09.831Z" }, + { url = "https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", size = 144992, upload-time = "2024-12-24T18:11:12.03Z" }, + { url = "https://files.pythonhosted.org/packages/96/2c/d49710a6dbcd3776265f4c923bb73ebe83933dfbaa841c5da850fe0fd20b/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", size = 147162, upload-time = "2024-12-24T18:11:13.372Z" }, + { url = "https://files.pythonhosted.org/packages/b4/41/35ff1f9a6bd380303dea55e44c4933b4cc3c4850988927d4082ada230273/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", size = 140972, upload-time = "2024-12-24T18:11:14.628Z" }, + { url = "https://files.pythonhosted.org/packages/fb/43/c6a0b685fe6910d08ba971f62cd9c3e862a85770395ba5d9cad4fede33ab/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", size = 149095, upload-time = "2024-12-24T18:11:17.672Z" }, + { url = "https://files.pythonhosted.org/packages/4c/ff/a9a504662452e2d2878512115638966e75633519ec11f25fca3d2049a94a/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", size = 152668, upload-time = "2024-12-24T18:11:18.989Z" }, + { url = "https://files.pythonhosted.org/packages/6c/71/189996b6d9a4b932564701628af5cee6716733e9165af1d5e1b285c530ed/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", size = 150073, upload-time = "2024-12-24T18:11:21.507Z" }, + { url = "https://files.pythonhosted.org/packages/e4/93/946a86ce20790e11312c87c75ba68d5f6ad2208cfb52b2d6a2c32840d922/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", size = 145732, upload-time = "2024-12-24T18:11:22.774Z" }, + { url = "https://files.pythonhosted.org/packages/cd/e5/131d2fb1b0dddafc37be4f3a2fa79aa4c037368be9423061dccadfd90091/charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", size = 95391, upload-time = "2024-12-24T18:11:24.139Z" }, + { url = "https://files.pythonhosted.org/packages/27/f2/4f9a69cc7712b9b5ad8fdb87039fd89abba997ad5cbe690d1835d40405b0/charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", size = 102702, upload-time = "2024-12-24T18:11:26.535Z" }, + { url = "https://files.pythonhosted.org/packages/7f/c0/b913f8f02836ed9ab32ea643c6fe4d3325c3d8627cf6e78098671cafff86/charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41", size = 197867, upload-time = "2024-12-24T18:12:10.438Z" }, + { url = "https://files.pythonhosted.org/packages/0f/6c/2bee440303d705b6fb1e2ec789543edec83d32d258299b16eed28aad48e0/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f", size = 141385, upload-time = "2024-12-24T18:12:11.847Z" }, + { url = "https://files.pythonhosted.org/packages/3d/04/cb42585f07f6f9fd3219ffb6f37d5a39b4fd2db2355b23683060029c35f7/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2", size = 151367, upload-time = "2024-12-24T18:12:13.177Z" }, + { url = "https://files.pythonhosted.org/packages/54/54/2412a5b093acb17f0222de007cc129ec0e0df198b5ad2ce5699355269dfe/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770", size = 143928, upload-time = "2024-12-24T18:12:14.497Z" }, + { url = "https://files.pythonhosted.org/packages/5a/6d/e2773862b043dcf8a221342954f375392bb2ce6487bcd9f2c1b34e1d6781/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4", size = 146203, upload-time = "2024-12-24T18:12:15.731Z" }, + { url = "https://files.pythonhosted.org/packages/b9/f8/ca440ef60d8f8916022859885f231abb07ada3c347c03d63f283bec32ef5/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537", size = 148082, upload-time = "2024-12-24T18:12:18.641Z" }, + { url = "https://files.pythonhosted.org/packages/04/d2/42fd330901aaa4b805a1097856c2edf5095e260a597f65def493f4b8c833/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496", size = 142053, upload-time = "2024-12-24T18:12:20.036Z" }, + { url = "https://files.pythonhosted.org/packages/9e/af/3a97a4fa3c53586f1910dadfc916e9c4f35eeada36de4108f5096cb7215f/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78", size = 150625, upload-time = "2024-12-24T18:12:22.804Z" }, + { url = "https://files.pythonhosted.org/packages/26/ae/23d6041322a3556e4da139663d02fb1b3c59a23ab2e2b56432bd2ad63ded/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7", size = 153549, upload-time = "2024-12-24T18:12:24.163Z" }, + { url = "https://files.pythonhosted.org/packages/94/22/b8f2081c6a77cb20d97e57e0b385b481887aa08019d2459dc2858ed64871/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6", size = 150945, upload-time = "2024-12-24T18:12:25.415Z" }, + { url = "https://files.pythonhosted.org/packages/c7/0b/c5ec5092747f801b8b093cdf5610e732b809d6cb11f4c51e35fc28d1d389/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294", size = 146595, upload-time = "2024-12-24T18:12:28.03Z" }, + { url = "https://files.pythonhosted.org/packages/0c/5a/0b59704c38470df6768aa154cc87b1ac7c9bb687990a1559dc8765e8627e/charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5", size = 95453, upload-time = "2024-12-24T18:12:29.569Z" }, + { url = "https://files.pythonhosted.org/packages/85/2d/a9790237cb4d01a6d57afadc8573c8b73c609ade20b80f4cda30802009ee/charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765", size = 102811, upload-time = "2024-12-24T18:12:30.83Z" }, + { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767, upload-time = "2024-12-24T18:12:32.852Z" }, ] [[package]] @@ -446,96 +446,96 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload-time = "2024-12-21T18:38:44.339Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188, upload-time = "2024-12-21T18:38:41.666Z" }, ] [[package]] name = "cloudpickle" version = "3.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } +sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113, upload-time = "2025-01-14T17:02:05.085Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, + { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992, upload-time = "2025-01-14T17:02:02.417Z" }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] [[package]] name = "coverage" version = "7.6.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/84/ba/ac14d281f80aab516275012e8875991bb06203957aa1e19950139238d658/coverage-7.6.10.tar.gz", hash = "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23", size = 803868 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/12/2a2a923edf4ddabdffed7ad6da50d96a5c126dae7b80a33df7310e329a1e/coverage-7.6.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78", size = 207982 }, - { url = "https://files.pythonhosted.org/packages/ca/49/6985dbca9c7be3f3cb62a2e6e492a0c88b65bf40579e16c71ae9c33c6b23/coverage-7.6.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c", size = 208414 }, - { url = "https://files.pythonhosted.org/packages/35/93/287e8f1d1ed2646f4e0b2605d14616c9a8a2697d0d1b453815eb5c6cebdb/coverage-7.6.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a", size = 236860 }, - { url = "https://files.pythonhosted.org/packages/de/e1/cfdb5627a03567a10031acc629b75d45a4ca1616e54f7133ca1fa366050a/coverage-7.6.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165", size = 234758 }, - { url = "https://files.pythonhosted.org/packages/6d/85/fc0de2bcda3f97c2ee9fe8568f7d48f7279e91068958e5b2cc19e0e5f600/coverage-7.6.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988", size = 235920 }, - { url = "https://files.pythonhosted.org/packages/79/73/ef4ea0105531506a6f4cf4ba571a214b14a884630b567ed65b3d9c1975e1/coverage-7.6.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5", size = 234986 }, - { url = "https://files.pythonhosted.org/packages/c6/4d/75afcfe4432e2ad0405c6f27adeb109ff8976c5e636af8604f94f29fa3fc/coverage-7.6.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3", size = 233446 }, - { url = "https://files.pythonhosted.org/packages/86/5b/efee56a89c16171288cafff022e8af44f8f94075c2d8da563c3935212871/coverage-7.6.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5", size = 234566 }, - { url = "https://files.pythonhosted.org/packages/f2/db/67770cceb4a64d3198bf2aa49946f411b85ec6b0a9b489e61c8467a4253b/coverage-7.6.10-cp310-cp310-win32.whl", hash = "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244", size = 210675 }, - { url = "https://files.pythonhosted.org/packages/8d/27/e8bfc43f5345ec2c27bc8a1fa77cdc5ce9dcf954445e11f14bb70b889d14/coverage-7.6.10-cp310-cp310-win_amd64.whl", hash = "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e", size = 211518 }, - { url = "https://files.pythonhosted.org/packages/85/d2/5e175fcf6766cf7501a8541d81778fd2f52f4870100e791f5327fd23270b/coverage-7.6.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3", size = 208088 }, - { url = "https://files.pythonhosted.org/packages/4b/6f/06db4dc8fca33c13b673986e20e466fd936235a6ec1f0045c3853ac1b593/coverage-7.6.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43", size = 208536 }, - { url = "https://files.pythonhosted.org/packages/0d/62/c6a0cf80318c1c1af376d52df444da3608eafc913b82c84a4600d8349472/coverage-7.6.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132", size = 240474 }, - { url = "https://files.pythonhosted.org/packages/a3/59/750adafc2e57786d2e8739a46b680d4fb0fbc2d57fbcb161290a9f1ecf23/coverage-7.6.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f", size = 237880 }, - { url = "https://files.pythonhosted.org/packages/2c/f8/ef009b3b98e9f7033c19deb40d629354aab1d8b2d7f9cfec284dbedf5096/coverage-7.6.10-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994", size = 239750 }, - { url = "https://files.pythonhosted.org/packages/a6/e2/6622f3b70f5f5b59f705e680dae6db64421af05a5d1e389afd24dae62e5b/coverage-7.6.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99", size = 238642 }, - { url = "https://files.pythonhosted.org/packages/2d/10/57ac3f191a3c95c67844099514ff44e6e19b2915cd1c22269fb27f9b17b6/coverage-7.6.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd", size = 237266 }, - { url = "https://files.pythonhosted.org/packages/ee/2d/7016f4ad9d553cabcb7333ed78ff9d27248ec4eba8dd21fa488254dff894/coverage-7.6.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377", size = 238045 }, - { url = "https://files.pythonhosted.org/packages/a7/fe/45af5c82389a71e0cae4546413266d2195c3744849669b0bab4b5f2c75da/coverage-7.6.10-cp311-cp311-win32.whl", hash = "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8", size = 210647 }, - { url = "https://files.pythonhosted.org/packages/db/11/3f8e803a43b79bc534c6a506674da9d614e990e37118b4506faf70d46ed6/coverage-7.6.10-cp311-cp311-win_amd64.whl", hash = "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609", size = 211508 }, - { url = "https://files.pythonhosted.org/packages/86/77/19d09ea06f92fdf0487499283b1b7af06bc422ea94534c8fe3a4cd023641/coverage-7.6.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853", size = 208281 }, - { url = "https://files.pythonhosted.org/packages/b6/67/5479b9f2f99fcfb49c0d5cf61912a5255ef80b6e80a3cddba39c38146cf4/coverage-7.6.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078", size = 208514 }, - { url = "https://files.pythonhosted.org/packages/15/d1/febf59030ce1c83b7331c3546d7317e5120c5966471727aa7ac157729c4b/coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0", size = 241537 }, - { url = "https://files.pythonhosted.org/packages/4b/7e/5ac4c90192130e7cf8b63153fe620c8bfd9068f89a6d9b5f26f1550f7a26/coverage-7.6.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50", size = 238572 }, - { url = "https://files.pythonhosted.org/packages/dc/03/0334a79b26ecf59958f2fe9dd1f5ab3e2f88db876f5071933de39af09647/coverage-7.6.10-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022", size = 240639 }, - { url = "https://files.pythonhosted.org/packages/d7/45/8a707f23c202208d7b286d78ad6233f50dcf929319b664b6cc18a03c1aae/coverage-7.6.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b", size = 240072 }, - { url = "https://files.pythonhosted.org/packages/66/02/603ce0ac2d02bc7b393279ef618940b4a0535b0868ee791140bda9ecfa40/coverage-7.6.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0", size = 238386 }, - { url = "https://files.pythonhosted.org/packages/04/62/4e6887e9be060f5d18f1dd58c2838b2d9646faf353232dec4e2d4b1c8644/coverage-7.6.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852", size = 240054 }, - { url = "https://files.pythonhosted.org/packages/5c/74/83ae4151c170d8bd071924f212add22a0e62a7fe2b149edf016aeecad17c/coverage-7.6.10-cp312-cp312-win32.whl", hash = "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359", size = 210904 }, - { url = "https://files.pythonhosted.org/packages/c3/54/de0893186a221478f5880283119fc40483bc460b27c4c71d1b8bba3474b9/coverage-7.6.10-cp312-cp312-win_amd64.whl", hash = "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247", size = 211692 }, - { url = "https://files.pythonhosted.org/packages/25/6d/31883d78865529257bf847df5789e2ae80e99de8a460c3453dbfbe0db069/coverage-7.6.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9", size = 208308 }, - { url = "https://files.pythonhosted.org/packages/70/22/3f2b129cc08de00c83b0ad6252e034320946abfc3e4235c009e57cfeee05/coverage-7.6.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b", size = 208565 }, - { url = "https://files.pythonhosted.org/packages/97/0a/d89bc2d1cc61d3a8dfe9e9d75217b2be85f6c73ebf1b9e3c2f4e797f4531/coverage-7.6.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690", size = 241083 }, - { url = "https://files.pythonhosted.org/packages/4c/81/6d64b88a00c7a7aaed3a657b8eaa0931f37a6395fcef61e53ff742b49c97/coverage-7.6.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18", size = 238235 }, - { url = "https://files.pythonhosted.org/packages/9a/0b/7797d4193f5adb4b837207ed87fecf5fc38f7cc612b369a8e8e12d9fa114/coverage-7.6.10-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c", size = 240220 }, - { url = "https://files.pythonhosted.org/packages/65/4d/6f83ca1bddcf8e51bf8ff71572f39a1c73c34cf50e752a952c34f24d0a60/coverage-7.6.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd", size = 239847 }, - { url = "https://files.pythonhosted.org/packages/30/9d/2470df6aa146aff4c65fee0f87f58d2164a67533c771c9cc12ffcdb865d5/coverage-7.6.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e", size = 237922 }, - { url = "https://files.pythonhosted.org/packages/08/dd/723fef5d901e6a89f2507094db66c091449c8ba03272861eaefa773ad95c/coverage-7.6.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694", size = 239783 }, - { url = "https://files.pythonhosted.org/packages/3d/f7/64d3298b2baf261cb35466000628706ce20a82d42faf9b771af447cd2b76/coverage-7.6.10-cp313-cp313-win32.whl", hash = "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6", size = 210965 }, - { url = "https://files.pythonhosted.org/packages/d5/58/ec43499a7fc681212fe7742fe90b2bc361cdb72e3181ace1604247a5b24d/coverage-7.6.10-cp313-cp313-win_amd64.whl", hash = "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e", size = 211719 }, - { url = "https://files.pythonhosted.org/packages/ab/c9/f2857a135bcff4330c1e90e7d03446b036b2363d4ad37eb5e3a47bbac8a6/coverage-7.6.10-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe", size = 209050 }, - { url = "https://files.pythonhosted.org/packages/aa/b3/f840e5bd777d8433caa9e4a1eb20503495709f697341ac1a8ee6a3c906ad/coverage-7.6.10-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273", size = 209321 }, - { url = "https://files.pythonhosted.org/packages/85/7d/125a5362180fcc1c03d91850fc020f3831d5cda09319522bcfa6b2b70be7/coverage-7.6.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8", size = 252039 }, - { url = "https://files.pythonhosted.org/packages/a9/9c/4358bf3c74baf1f9bddd2baf3756b54c07f2cfd2535f0a47f1e7757e54b3/coverage-7.6.10-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098", size = 247758 }, - { url = "https://files.pythonhosted.org/packages/cf/c7/de3eb6fc5263b26fab5cda3de7a0f80e317597a4bad4781859f72885f300/coverage-7.6.10-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb", size = 250119 }, - { url = "https://files.pythonhosted.org/packages/3e/e6/43de91f8ba2ec9140c6a4af1102141712949903dc732cf739167cfa7a3bc/coverage-7.6.10-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0", size = 249597 }, - { url = "https://files.pythonhosted.org/packages/08/40/61158b5499aa2adf9e37bc6d0117e8f6788625b283d51e7e0c53cf340530/coverage-7.6.10-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf", size = 247473 }, - { url = "https://files.pythonhosted.org/packages/50/69/b3f2416725621e9f112e74e8470793d5b5995f146f596f133678a633b77e/coverage-7.6.10-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2", size = 248737 }, - { url = "https://files.pythonhosted.org/packages/3c/6e/fe899fb937657db6df31cc3e61c6968cb56d36d7326361847440a430152e/coverage-7.6.10-cp313-cp313t-win32.whl", hash = "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312", size = 211611 }, - { url = "https://files.pythonhosted.org/packages/1c/55/52f5e66142a9d7bc93a15192eba7a78513d2abf6b3558d77b4ca32f5f424/coverage-7.6.10-cp313-cp313t-win_amd64.whl", hash = "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d", size = 212781 }, - { url = "https://files.pythonhosted.org/packages/40/41/473617aadf9a1c15bc2d56be65d90d7c29bfa50a957a67ef96462f7ebf8e/coverage-7.6.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a", size = 207978 }, - { url = "https://files.pythonhosted.org/packages/10/f6/480586607768b39a30e6910a3c4522139094ac0f1677028e1f4823688957/coverage-7.6.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27", size = 208415 }, - { url = "https://files.pythonhosted.org/packages/f1/af/439bb760f817deff6f4d38fe7da08d9dd7874a560241f1945bc3b4446550/coverage-7.6.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4", size = 236452 }, - { url = "https://files.pythonhosted.org/packages/d0/13/481f4ceffcabe29ee2332e60efb52e4694f54a402f3ada2bcec10bb32e43/coverage-7.6.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f", size = 234374 }, - { url = "https://files.pythonhosted.org/packages/c5/59/4607ea9d6b1b73e905c7656da08d0b00cdf6e59f2293ec259e8914160025/coverage-7.6.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25", size = 235505 }, - { url = "https://files.pythonhosted.org/packages/85/60/d66365723b9b7f29464b11d024248ed3523ce5aab958e4ad8c43f3f4148b/coverage-7.6.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315", size = 234616 }, - { url = "https://files.pythonhosted.org/packages/74/f8/2cf7a38e7d81b266f47dfcf137fecd8fa66c7bdbd4228d611628d8ca3437/coverage-7.6.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90", size = 233099 }, - { url = "https://files.pythonhosted.org/packages/50/2b/bff6c1c6b63c4396ea7ecdbf8db1788b46046c681b8fcc6ec77db9f4ea49/coverage-7.6.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d", size = 234089 }, - { url = "https://files.pythonhosted.org/packages/bf/b5/baace1c754d546a67779358341aa8d2f7118baf58cac235db457e1001d1b/coverage-7.6.10-cp39-cp39-win32.whl", hash = "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18", size = 210701 }, - { url = "https://files.pythonhosted.org/packages/b1/bf/9e1e95b8b20817398ecc5a1e8d3e05ff404e1b9fb2185cd71561698fe2a2/coverage-7.6.10-cp39-cp39-win_amd64.whl", hash = "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59", size = 211482 }, - { url = "https://files.pythonhosted.org/packages/a1/70/de81bfec9ed38a64fc44a77c7665e20ca507fc3265597c28b0d989e4082e/coverage-7.6.10-pp39.pp310-none-any.whl", hash = "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f", size = 200223 }, +sdist = { url = "https://files.pythonhosted.org/packages/84/ba/ac14d281f80aab516275012e8875991bb06203957aa1e19950139238d658/coverage-7.6.10.tar.gz", hash = "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23", size = 803868, upload-time = "2024-12-26T16:59:18.734Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/12/2a2a923edf4ddabdffed7ad6da50d96a5c126dae7b80a33df7310e329a1e/coverage-7.6.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78", size = 207982, upload-time = "2024-12-26T16:57:00.767Z" }, + { url = "https://files.pythonhosted.org/packages/ca/49/6985dbca9c7be3f3cb62a2e6e492a0c88b65bf40579e16c71ae9c33c6b23/coverage-7.6.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c", size = 208414, upload-time = "2024-12-26T16:57:03.826Z" }, + { url = "https://files.pythonhosted.org/packages/35/93/287e8f1d1ed2646f4e0b2605d14616c9a8a2697d0d1b453815eb5c6cebdb/coverage-7.6.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a", size = 236860, upload-time = "2024-12-26T16:57:06.509Z" }, + { url = "https://files.pythonhosted.org/packages/de/e1/cfdb5627a03567a10031acc629b75d45a4ca1616e54f7133ca1fa366050a/coverage-7.6.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165", size = 234758, upload-time = "2024-12-26T16:57:09.089Z" }, + { url = "https://files.pythonhosted.org/packages/6d/85/fc0de2bcda3f97c2ee9fe8568f7d48f7279e91068958e5b2cc19e0e5f600/coverage-7.6.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988", size = 235920, upload-time = "2024-12-26T16:57:10.445Z" }, + { url = "https://files.pythonhosted.org/packages/79/73/ef4ea0105531506a6f4cf4ba571a214b14a884630b567ed65b3d9c1975e1/coverage-7.6.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5", size = 234986, upload-time = "2024-12-26T16:57:13.298Z" }, + { url = "https://files.pythonhosted.org/packages/c6/4d/75afcfe4432e2ad0405c6f27adeb109ff8976c5e636af8604f94f29fa3fc/coverage-7.6.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3", size = 233446, upload-time = "2024-12-26T16:57:14.742Z" }, + { url = "https://files.pythonhosted.org/packages/86/5b/efee56a89c16171288cafff022e8af44f8f94075c2d8da563c3935212871/coverage-7.6.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5", size = 234566, upload-time = "2024-12-26T16:57:17.368Z" }, + { url = "https://files.pythonhosted.org/packages/f2/db/67770cceb4a64d3198bf2aa49946f411b85ec6b0a9b489e61c8467a4253b/coverage-7.6.10-cp310-cp310-win32.whl", hash = "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244", size = 210675, upload-time = "2024-12-26T16:57:18.775Z" }, + { url = "https://files.pythonhosted.org/packages/8d/27/e8bfc43f5345ec2c27bc8a1fa77cdc5ce9dcf954445e11f14bb70b889d14/coverage-7.6.10-cp310-cp310-win_amd64.whl", hash = "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e", size = 211518, upload-time = "2024-12-26T16:57:21.415Z" }, + { url = "https://files.pythonhosted.org/packages/85/d2/5e175fcf6766cf7501a8541d81778fd2f52f4870100e791f5327fd23270b/coverage-7.6.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3", size = 208088, upload-time = "2024-12-26T16:57:22.833Z" }, + { url = "https://files.pythonhosted.org/packages/4b/6f/06db4dc8fca33c13b673986e20e466fd936235a6ec1f0045c3853ac1b593/coverage-7.6.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43", size = 208536, upload-time = "2024-12-26T16:57:25.578Z" }, + { url = "https://files.pythonhosted.org/packages/0d/62/c6a0cf80318c1c1af376d52df444da3608eafc913b82c84a4600d8349472/coverage-7.6.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132", size = 240474, upload-time = "2024-12-26T16:57:28.659Z" }, + { url = "https://files.pythonhosted.org/packages/a3/59/750adafc2e57786d2e8739a46b680d4fb0fbc2d57fbcb161290a9f1ecf23/coverage-7.6.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f", size = 237880, upload-time = "2024-12-26T16:57:30.095Z" }, + { url = "https://files.pythonhosted.org/packages/2c/f8/ef009b3b98e9f7033c19deb40d629354aab1d8b2d7f9cfec284dbedf5096/coverage-7.6.10-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994", size = 239750, upload-time = "2024-12-26T16:57:31.48Z" }, + { url = "https://files.pythonhosted.org/packages/a6/e2/6622f3b70f5f5b59f705e680dae6db64421af05a5d1e389afd24dae62e5b/coverage-7.6.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99", size = 238642, upload-time = "2024-12-26T16:57:34.09Z" }, + { url = "https://files.pythonhosted.org/packages/2d/10/57ac3f191a3c95c67844099514ff44e6e19b2915cd1c22269fb27f9b17b6/coverage-7.6.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd", size = 237266, upload-time = "2024-12-26T16:57:35.48Z" }, + { url = "https://files.pythonhosted.org/packages/ee/2d/7016f4ad9d553cabcb7333ed78ff9d27248ec4eba8dd21fa488254dff894/coverage-7.6.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377", size = 238045, upload-time = "2024-12-26T16:57:36.952Z" }, + { url = "https://files.pythonhosted.org/packages/a7/fe/45af5c82389a71e0cae4546413266d2195c3744849669b0bab4b5f2c75da/coverage-7.6.10-cp311-cp311-win32.whl", hash = "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8", size = 210647, upload-time = "2024-12-26T16:57:39.84Z" }, + { url = "https://files.pythonhosted.org/packages/db/11/3f8e803a43b79bc534c6a506674da9d614e990e37118b4506faf70d46ed6/coverage-7.6.10-cp311-cp311-win_amd64.whl", hash = "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609", size = 211508, upload-time = "2024-12-26T16:57:41.234Z" }, + { url = "https://files.pythonhosted.org/packages/86/77/19d09ea06f92fdf0487499283b1b7af06bc422ea94534c8fe3a4cd023641/coverage-7.6.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853", size = 208281, upload-time = "2024-12-26T16:57:42.968Z" }, + { url = "https://files.pythonhosted.org/packages/b6/67/5479b9f2f99fcfb49c0d5cf61912a5255ef80b6e80a3cddba39c38146cf4/coverage-7.6.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078", size = 208514, upload-time = "2024-12-26T16:57:45.747Z" }, + { url = "https://files.pythonhosted.org/packages/15/d1/febf59030ce1c83b7331c3546d7317e5120c5966471727aa7ac157729c4b/coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0", size = 241537, upload-time = "2024-12-26T16:57:48.647Z" }, + { url = "https://files.pythonhosted.org/packages/4b/7e/5ac4c90192130e7cf8b63153fe620c8bfd9068f89a6d9b5f26f1550f7a26/coverage-7.6.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50", size = 238572, upload-time = "2024-12-26T16:57:51.668Z" }, + { url = "https://files.pythonhosted.org/packages/dc/03/0334a79b26ecf59958f2fe9dd1f5ab3e2f88db876f5071933de39af09647/coverage-7.6.10-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022", size = 240639, upload-time = "2024-12-26T16:57:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/d7/45/8a707f23c202208d7b286d78ad6233f50dcf929319b664b6cc18a03c1aae/coverage-7.6.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b", size = 240072, upload-time = "2024-12-26T16:57:56.087Z" }, + { url = "https://files.pythonhosted.org/packages/66/02/603ce0ac2d02bc7b393279ef618940b4a0535b0868ee791140bda9ecfa40/coverage-7.6.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0", size = 238386, upload-time = "2024-12-26T16:57:57.572Z" }, + { url = "https://files.pythonhosted.org/packages/04/62/4e6887e9be060f5d18f1dd58c2838b2d9646faf353232dec4e2d4b1c8644/coverage-7.6.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852", size = 240054, upload-time = "2024-12-26T16:57:58.967Z" }, + { url = "https://files.pythonhosted.org/packages/5c/74/83ae4151c170d8bd071924f212add22a0e62a7fe2b149edf016aeecad17c/coverage-7.6.10-cp312-cp312-win32.whl", hash = "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359", size = 210904, upload-time = "2024-12-26T16:58:00.688Z" }, + { url = "https://files.pythonhosted.org/packages/c3/54/de0893186a221478f5880283119fc40483bc460b27c4c71d1b8bba3474b9/coverage-7.6.10-cp312-cp312-win_amd64.whl", hash = "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247", size = 211692, upload-time = "2024-12-26T16:58:02.35Z" }, + { url = "https://files.pythonhosted.org/packages/25/6d/31883d78865529257bf847df5789e2ae80e99de8a460c3453dbfbe0db069/coverage-7.6.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9", size = 208308, upload-time = "2024-12-26T16:58:04.487Z" }, + { url = "https://files.pythonhosted.org/packages/70/22/3f2b129cc08de00c83b0ad6252e034320946abfc3e4235c009e57cfeee05/coverage-7.6.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b", size = 208565, upload-time = "2024-12-26T16:58:06.774Z" }, + { url = "https://files.pythonhosted.org/packages/97/0a/d89bc2d1cc61d3a8dfe9e9d75217b2be85f6c73ebf1b9e3c2f4e797f4531/coverage-7.6.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690", size = 241083, upload-time = "2024-12-26T16:58:10.27Z" }, + { url = "https://files.pythonhosted.org/packages/4c/81/6d64b88a00c7a7aaed3a657b8eaa0931f37a6395fcef61e53ff742b49c97/coverage-7.6.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18", size = 238235, upload-time = "2024-12-26T16:58:12.497Z" }, + { url = "https://files.pythonhosted.org/packages/9a/0b/7797d4193f5adb4b837207ed87fecf5fc38f7cc612b369a8e8e12d9fa114/coverage-7.6.10-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c", size = 240220, upload-time = "2024-12-26T16:58:15.619Z" }, + { url = "https://files.pythonhosted.org/packages/65/4d/6f83ca1bddcf8e51bf8ff71572f39a1c73c34cf50e752a952c34f24d0a60/coverage-7.6.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd", size = 239847, upload-time = "2024-12-26T16:58:17.126Z" }, + { url = "https://files.pythonhosted.org/packages/30/9d/2470df6aa146aff4c65fee0f87f58d2164a67533c771c9cc12ffcdb865d5/coverage-7.6.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e", size = 237922, upload-time = "2024-12-26T16:58:20.198Z" }, + { url = "https://files.pythonhosted.org/packages/08/dd/723fef5d901e6a89f2507094db66c091449c8ba03272861eaefa773ad95c/coverage-7.6.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694", size = 239783, upload-time = "2024-12-26T16:58:23.614Z" }, + { url = "https://files.pythonhosted.org/packages/3d/f7/64d3298b2baf261cb35466000628706ce20a82d42faf9b771af447cd2b76/coverage-7.6.10-cp313-cp313-win32.whl", hash = "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6", size = 210965, upload-time = "2024-12-26T16:58:26.765Z" }, + { url = "https://files.pythonhosted.org/packages/d5/58/ec43499a7fc681212fe7742fe90b2bc361cdb72e3181ace1604247a5b24d/coverage-7.6.10-cp313-cp313-win_amd64.whl", hash = "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e", size = 211719, upload-time = "2024-12-26T16:58:28.781Z" }, + { url = "https://files.pythonhosted.org/packages/ab/c9/f2857a135bcff4330c1e90e7d03446b036b2363d4ad37eb5e3a47bbac8a6/coverage-7.6.10-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe", size = 209050, upload-time = "2024-12-26T16:58:31.616Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b3/f840e5bd777d8433caa9e4a1eb20503495709f697341ac1a8ee6a3c906ad/coverage-7.6.10-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273", size = 209321, upload-time = "2024-12-26T16:58:34.509Z" }, + { url = "https://files.pythonhosted.org/packages/85/7d/125a5362180fcc1c03d91850fc020f3831d5cda09319522bcfa6b2b70be7/coverage-7.6.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8", size = 252039, upload-time = "2024-12-26T16:58:36.072Z" }, + { url = "https://files.pythonhosted.org/packages/a9/9c/4358bf3c74baf1f9bddd2baf3756b54c07f2cfd2535f0a47f1e7757e54b3/coverage-7.6.10-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098", size = 247758, upload-time = "2024-12-26T16:58:39.458Z" }, + { url = "https://files.pythonhosted.org/packages/cf/c7/de3eb6fc5263b26fab5cda3de7a0f80e317597a4bad4781859f72885f300/coverage-7.6.10-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb", size = 250119, upload-time = "2024-12-26T16:58:41.018Z" }, + { url = "https://files.pythonhosted.org/packages/3e/e6/43de91f8ba2ec9140c6a4af1102141712949903dc732cf739167cfa7a3bc/coverage-7.6.10-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0", size = 249597, upload-time = "2024-12-26T16:58:42.827Z" }, + { url = "https://files.pythonhosted.org/packages/08/40/61158b5499aa2adf9e37bc6d0117e8f6788625b283d51e7e0c53cf340530/coverage-7.6.10-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf", size = 247473, upload-time = "2024-12-26T16:58:44.486Z" }, + { url = "https://files.pythonhosted.org/packages/50/69/b3f2416725621e9f112e74e8470793d5b5995f146f596f133678a633b77e/coverage-7.6.10-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2", size = 248737, upload-time = "2024-12-26T16:58:45.919Z" }, + { url = "https://files.pythonhosted.org/packages/3c/6e/fe899fb937657db6df31cc3e61c6968cb56d36d7326361847440a430152e/coverage-7.6.10-cp313-cp313t-win32.whl", hash = "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312", size = 211611, upload-time = "2024-12-26T16:58:47.883Z" }, + { url = "https://files.pythonhosted.org/packages/1c/55/52f5e66142a9d7bc93a15192eba7a78513d2abf6b3558d77b4ca32f5f424/coverage-7.6.10-cp313-cp313t-win_amd64.whl", hash = "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d", size = 212781, upload-time = "2024-12-26T16:58:50.822Z" }, + { url = "https://files.pythonhosted.org/packages/40/41/473617aadf9a1c15bc2d56be65d90d7c29bfa50a957a67ef96462f7ebf8e/coverage-7.6.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a", size = 207978, upload-time = "2024-12-26T16:58:52.834Z" }, + { url = "https://files.pythonhosted.org/packages/10/f6/480586607768b39a30e6910a3c4522139094ac0f1677028e1f4823688957/coverage-7.6.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27", size = 208415, upload-time = "2024-12-26T16:58:56.317Z" }, + { url = "https://files.pythonhosted.org/packages/f1/af/439bb760f817deff6f4d38fe7da08d9dd7874a560241f1945bc3b4446550/coverage-7.6.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4", size = 236452, upload-time = "2024-12-26T16:58:59.158Z" }, + { url = "https://files.pythonhosted.org/packages/d0/13/481f4ceffcabe29ee2332e60efb52e4694f54a402f3ada2bcec10bb32e43/coverage-7.6.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f", size = 234374, upload-time = "2024-12-26T16:59:00.809Z" }, + { url = "https://files.pythonhosted.org/packages/c5/59/4607ea9d6b1b73e905c7656da08d0b00cdf6e59f2293ec259e8914160025/coverage-7.6.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25", size = 235505, upload-time = "2024-12-26T16:59:03.869Z" }, + { url = "https://files.pythonhosted.org/packages/85/60/d66365723b9b7f29464b11d024248ed3523ce5aab958e4ad8c43f3f4148b/coverage-7.6.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315", size = 234616, upload-time = "2024-12-26T16:59:05.876Z" }, + { url = "https://files.pythonhosted.org/packages/74/f8/2cf7a38e7d81b266f47dfcf137fecd8fa66c7bdbd4228d611628d8ca3437/coverage-7.6.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90", size = 233099, upload-time = "2024-12-26T16:59:08.927Z" }, + { url = "https://files.pythonhosted.org/packages/50/2b/bff6c1c6b63c4396ea7ecdbf8db1788b46046c681b8fcc6ec77db9f4ea49/coverage-7.6.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d", size = 234089, upload-time = "2024-12-26T16:59:10.574Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b5/baace1c754d546a67779358341aa8d2f7118baf58cac235db457e1001d1b/coverage-7.6.10-cp39-cp39-win32.whl", hash = "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18", size = 210701, upload-time = "2024-12-26T16:59:12.212Z" }, + { url = "https://files.pythonhosted.org/packages/b1/bf/9e1e95b8b20817398ecc5a1e8d3e05ff404e1b9fb2185cd71561698fe2a2/coverage-7.6.10-cp39-cp39-win_amd64.whl", hash = "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59", size = 211482, upload-time = "2024-12-26T16:59:15.165Z" }, + { url = "https://files.pythonhosted.org/packages/a1/70/de81bfec9ed38a64fc44a77c7665e20ca507fc3265597c28b0d989e4082e/coverage-7.6.10-pp39.pp310-none-any.whl", hash = "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f", size = 200223, upload-time = "2024-12-26T16:59:16.968Z" }, ] [package.optional-dependencies] @@ -551,18 +551,18 @@ dependencies = [ { name = "tinycss2" }, { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e7/fc/326cb6f988905998f09bb54a3f5d98d4462ba119363c0dfad29750d48c09/cssselect2-0.7.0.tar.gz", hash = "sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a", size = 35888 } +sdist = { url = "https://files.pythonhosted.org/packages/e7/fc/326cb6f988905998f09bb54a3f5d98d4462ba119363c0dfad29750d48c09/cssselect2-0.7.0.tar.gz", hash = "sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a", size = 35888, upload-time = "2022-09-19T12:55:11.876Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9d/3a/e39436efe51894243ff145a37c4f9a030839b97779ebcc4f13b3ba21c54e/cssselect2-0.7.0-py3-none-any.whl", hash = "sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969", size = 15586 }, + { url = "https://files.pythonhosted.org/packages/9d/3a/e39436efe51894243ff145a37c4f9a030839b97779ebcc4f13b3ba21c54e/cssselect2-0.7.0-py3-none-any.whl", hash = "sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969", size = 15586, upload-time = "2022-09-19T12:55:07.56Z" }, ] [[package]] name = "defusedxml" version = "0.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, ] [[package]] @@ -574,27 +574,27 @@ dependencies = [ { name = "executing" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/84/75/b78198620640d394bc435c17bb49db18419afdd6cfa3ed8bcfe14034ec80/devtools-0.12.2.tar.gz", hash = "sha256:efceab184cb35e3a11fa8e602cc4fadacaa2e859e920fc6f87bf130b69885507", size = 75005 } +sdist = { url = "https://files.pythonhosted.org/packages/84/75/b78198620640d394bc435c17bb49db18419afdd6cfa3ed8bcfe14034ec80/devtools-0.12.2.tar.gz", hash = "sha256:efceab184cb35e3a11fa8e602cc4fadacaa2e859e920fc6f87bf130b69885507", size = 75005, upload-time = "2023-09-03T16:57:00.679Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/ae/afb1487556e2dc827a17097aac8158a25b433a345386f0e249f6d2694ccb/devtools-0.12.2-py3-none-any.whl", hash = "sha256:c366e3de1df4cdd635f1ad8cbcd3af01a384d7abda71900e68d43b04eb6aaca7", size = 19411 }, + { url = "https://files.pythonhosted.org/packages/d1/ae/afb1487556e2dc827a17097aac8158a25b433a345386f0e249f6d2694ccb/devtools-0.12.2-py3-none-any.whl", hash = "sha256:c366e3de1df4cdd635f1ad8cbcd3af01a384d7abda71900e68d43b04eb6aaca7", size = 19411, upload-time = "2023-09-03T16:56:59.049Z" }, ] [[package]] name = "dirty-equals" version = "0.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/99/133892f401ced5a27e641a473c547d5fbdb39af8f85dac8a9d633ea3e7a7/dirty_equals-0.9.0.tar.gz", hash = "sha256:17f515970b04ed7900b733c95fd8091f4f85e52f1fb5f268757f25c858eb1f7b", size = 50412 } +sdist = { url = "https://files.pythonhosted.org/packages/b0/99/133892f401ced5a27e641a473c547d5fbdb39af8f85dac8a9d633ea3e7a7/dirty_equals-0.9.0.tar.gz", hash = "sha256:17f515970b04ed7900b733c95fd8091f4f85e52f1fb5f268757f25c858eb1f7b", size = 50412, upload-time = "2025-01-11T23:23:40.491Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/0c/03cc99bf3b6328604b10829de3460f2b2ad3373200c45665c38508e550c6/dirty_equals-0.9.0-py3-none-any.whl", hash = "sha256:ff4d027f5cfa1b69573af00f7ba9043ea652dbdce3fe5cbe828e478c7346db9c", size = 28226 }, + { url = "https://files.pythonhosted.org/packages/77/0c/03cc99bf3b6328604b10829de3460f2b2ad3373200c45665c38508e550c6/dirty_equals-0.9.0-py3-none-any.whl", hash = "sha256:ff4d027f5cfa1b69573af00f7ba9043ea652dbdce3fe5cbe828e478c7346db9c", size = 28226, upload-time = "2025-01-11T23:23:37.489Z" }, ] [[package]] name = "dnspython" version = "2.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197 } +sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197, upload-time = "2024-10-05T20:14:59.362Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632 }, + { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632, upload-time = "2024-10-05T20:14:57.687Z" }, ] [[package]] @@ -605,36 +605,36 @@ dependencies = [ { name = "dnspython" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967 } +sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967, upload-time = "2024-06-20T11:30:30.034Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521 }, + { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521, upload-time = "2024-06-20T11:30:28.248Z" }, ] [[package]] name = "eval-type-backport" version = "0.2.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/ea/8b0ac4469d4c347c6a385ff09dc3c048c2d021696664e26c7ee6791631b5/eval_type_backport-0.2.2.tar.gz", hash = "sha256:f0576b4cf01ebb5bd358d02314d31846af5e07678387486e2c798af0e7d849c1", size = 9079 } +sdist = { url = "https://files.pythonhosted.org/packages/30/ea/8b0ac4469d4c347c6a385ff09dc3c048c2d021696664e26c7ee6791631b5/eval_type_backport-0.2.2.tar.gz", hash = "sha256:f0576b4cf01ebb5bd358d02314d31846af5e07678387486e2c798af0e7d849c1", size = 9079, upload-time = "2024-12-21T20:09:46.005Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/31/55cd413eaccd39125368be33c46de24a1f639f2e12349b0361b4678f3915/eval_type_backport-0.2.2-py3-none-any.whl", hash = "sha256:cb6ad7c393517f476f96d456d0412ea80f0a8cf96f6892834cd9340149111b0a", size = 5830 }, + { url = "https://files.pythonhosted.org/packages/ce/31/55cd413eaccd39125368be33c46de24a1f639f2e12349b0361b4678f3915/eval_type_backport-0.2.2-py3-none-any.whl", hash = "sha256:cb6ad7c393517f476f96d456d0412ea80f0a8cf96f6892834cd9340149111b0a", size = 5830, upload-time = "2024-12-21T20:09:44.175Z" }, ] [[package]] name = "exceptiongroup" version = "1.2.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883, upload-time = "2024-07-12T22:26:00.161Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, + { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453, upload-time = "2024-07-12T22:25:58.476Z" }, ] [[package]] name = "executing" version = "2.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693 } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload-time = "2025-01-22T15:41:29.403Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 }, + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, ] [[package]] @@ -645,93 +645,93 @@ dependencies = [ { name = "python-dateutil" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d5/18/86fe668976308d09e0178041c3756e646a1f5ddc676aa7fb0cf3cd52f5b9/faker-35.0.0.tar.gz", hash = "sha256:42f2da8cf561e38c72b25e9891168b1e25fec42b6b0b5b0b6cd6041da54af885", size = 1855098 } +sdist = { url = "https://files.pythonhosted.org/packages/d5/18/86fe668976308d09e0178041c3756e646a1f5ddc676aa7fb0cf3cd52f5b9/faker-35.0.0.tar.gz", hash = "sha256:42f2da8cf561e38c72b25e9891168b1e25fec42b6b0b5b0b6cd6041da54af885", size = 1855098, upload-time = "2025-01-23T15:35:53.747Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/fe/40452fb1730b10afa34dfe016097b28baa070ad74a1c1a3512ebed438c08/Faker-35.0.0-py3-none-any.whl", hash = "sha256:926d2301787220e0554c2e39afc4dc535ce4b0a8d0a089657137999f66334ef4", size = 1894841 }, + { url = "https://files.pythonhosted.org/packages/b8/fe/40452fb1730b10afa34dfe016097b28baa070ad74a1c1a3512ebed438c08/Faker-35.0.0-py3-none-any.whl", hash = "sha256:926d2301787220e0554c2e39afc4dc535ce4b0a8d0a089657137999f66334ef4", size = 1894841, upload-time = "2025-01-23T15:35:50.501Z" }, ] [[package]] name = "frozenlist" version = "1.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8f/ed/0f4cec13a93c02c47ec32d81d11c0c1efbadf4a471e3f3ce7cad366cbbd3/frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817", size = 39930 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/79/29d44c4af36b2b240725dce566b20f63f9b36ef267aaaa64ee7466f4f2f8/frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a", size = 94451 }, - { url = "https://files.pythonhosted.org/packages/47/47/0c999aeace6ead8a44441b4f4173e2261b18219e4ad1fe9a479871ca02fc/frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb", size = 54301 }, - { url = "https://files.pythonhosted.org/packages/8d/60/107a38c1e54176d12e06e9d4b5d755b677d71d1219217cee063911b1384f/frozenlist-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec", size = 52213 }, - { url = "https://files.pythonhosted.org/packages/17/62/594a6829ac5679c25755362a9dc93486a8a45241394564309641425d3ff6/frozenlist-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5", size = 240946 }, - { url = "https://files.pythonhosted.org/packages/7e/75/6c8419d8f92c80dd0ee3f63bdde2702ce6398b0ac8410ff459f9b6f2f9cb/frozenlist-1.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76", size = 264608 }, - { url = "https://files.pythonhosted.org/packages/88/3e/82a6f0b84bc6fb7e0be240e52863c6d4ab6098cd62e4f5b972cd31e002e8/frozenlist-1.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17", size = 261361 }, - { url = "https://files.pythonhosted.org/packages/fd/85/14e5f9ccac1b64ff2f10c927b3ffdf88772aea875882406f9ba0cec8ad84/frozenlist-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba", size = 231649 }, - { url = "https://files.pythonhosted.org/packages/ee/59/928322800306f6529d1852323014ee9008551e9bb027cc38d276cbc0b0e7/frozenlist-1.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d", size = 241853 }, - { url = "https://files.pythonhosted.org/packages/7d/bd/e01fa4f146a6f6c18c5d34cab8abdc4013774a26c4ff851128cd1bd3008e/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2", size = 243652 }, - { url = "https://files.pythonhosted.org/packages/a5/bd/e4771fd18a8ec6757033f0fa903e447aecc3fbba54e3630397b61596acf0/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f", size = 241734 }, - { url = "https://files.pythonhosted.org/packages/21/13/c83821fa5544af4f60c5d3a65d054af3213c26b14d3f5f48e43e5fb48556/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c", size = 260959 }, - { url = "https://files.pythonhosted.org/packages/71/f3/1f91c9a9bf7ed0e8edcf52698d23f3c211d8d00291a53c9f115ceb977ab1/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab", size = 262706 }, - { url = "https://files.pythonhosted.org/packages/4c/22/4a256fdf5d9bcb3ae32622c796ee5ff9451b3a13a68cfe3f68e2c95588ce/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5", size = 250401 }, - { url = "https://files.pythonhosted.org/packages/af/89/c48ebe1f7991bd2be6d5f4ed202d94960c01b3017a03d6954dd5fa9ea1e8/frozenlist-1.5.0-cp310-cp310-win32.whl", hash = "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb", size = 45498 }, - { url = "https://files.pythonhosted.org/packages/28/2f/cc27d5f43e023d21fe5c19538e08894db3d7e081cbf582ad5ed366c24446/frozenlist-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4", size = 51622 }, - { url = "https://files.pythonhosted.org/packages/79/43/0bed28bf5eb1c9e4301003b74453b8e7aa85fb293b31dde352aac528dafc/frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30", size = 94987 }, - { url = "https://files.pythonhosted.org/packages/bb/bf/b74e38f09a246e8abbe1e90eb65787ed745ccab6eaa58b9c9308e052323d/frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5", size = 54584 }, - { url = "https://files.pythonhosted.org/packages/2c/31/ab01375682f14f7613a1ade30149f684c84f9b8823a4391ed950c8285656/frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778", size = 52499 }, - { url = "https://files.pythonhosted.org/packages/98/a8/d0ac0b9276e1404f58fec3ab6e90a4f76b778a49373ccaf6a563f100dfbc/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a", size = 276357 }, - { url = "https://files.pythonhosted.org/packages/ad/c9/c7761084fa822f07dac38ac29f841d4587570dd211e2262544aa0b791d21/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869", size = 287516 }, - { url = "https://files.pythonhosted.org/packages/a1/ff/cd7479e703c39df7bdab431798cef89dc75010d8aa0ca2514c5b9321db27/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d", size = 283131 }, - { url = "https://files.pythonhosted.org/packages/59/a0/370941beb47d237eca4fbf27e4e91389fd68699e6f4b0ebcc95da463835b/frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45", size = 261320 }, - { url = "https://files.pythonhosted.org/packages/b8/5f/c10123e8d64867bc9b4f2f510a32042a306ff5fcd7e2e09e5ae5100ee333/frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d", size = 274877 }, - { url = "https://files.pythonhosted.org/packages/fa/79/38c505601ae29d4348f21706c5d89755ceded02a745016ba2f58bd5f1ea6/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3", size = 269592 }, - { url = "https://files.pythonhosted.org/packages/19/e2/39f3a53191b8204ba9f0bb574b926b73dd2efba2a2b9d2d730517e8f7622/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a", size = 265934 }, - { url = "https://files.pythonhosted.org/packages/d5/c9/3075eb7f7f3a91f1a6b00284af4de0a65a9ae47084930916f5528144c9dd/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9", size = 283859 }, - { url = "https://files.pythonhosted.org/packages/05/f5/549f44d314c29408b962fa2b0e69a1a67c59379fb143b92a0a065ffd1f0f/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2", size = 287560 }, - { url = "https://files.pythonhosted.org/packages/9d/f8/cb09b3c24a3eac02c4c07a9558e11e9e244fb02bf62c85ac2106d1eb0c0b/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf", size = 277150 }, - { url = "https://files.pythonhosted.org/packages/37/48/38c2db3f54d1501e692d6fe058f45b6ad1b358d82cd19436efab80cfc965/frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942", size = 45244 }, - { url = "https://files.pythonhosted.org/packages/ca/8c/2ddffeb8b60a4bce3b196c32fcc30d8830d4615e7b492ec2071da801b8ad/frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d", size = 51634 }, - { url = "https://files.pythonhosted.org/packages/79/73/fa6d1a96ab7fd6e6d1c3500700963eab46813847f01ef0ccbaa726181dd5/frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21", size = 94026 }, - { url = "https://files.pythonhosted.org/packages/ab/04/ea8bf62c8868b8eada363f20ff1b647cf2e93377a7b284d36062d21d81d1/frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d", size = 54150 }, - { url = "https://files.pythonhosted.org/packages/d0/9a/8e479b482a6f2070b26bda572c5e6889bb3ba48977e81beea35b5ae13ece/frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e", size = 51927 }, - { url = "https://files.pythonhosted.org/packages/e3/12/2aad87deb08a4e7ccfb33600871bbe8f0e08cb6d8224371387f3303654d7/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a", size = 282647 }, - { url = "https://files.pythonhosted.org/packages/77/f2/07f06b05d8a427ea0060a9cef6e63405ea9e0d761846b95ef3fb3be57111/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a", size = 289052 }, - { url = "https://files.pythonhosted.org/packages/bd/9f/8bf45a2f1cd4aa401acd271b077989c9267ae8463e7c8b1eb0d3f561b65e/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee", size = 291719 }, - { url = "https://files.pythonhosted.org/packages/41/d1/1f20fd05a6c42d3868709b7604c9f15538a29e4f734c694c6bcfc3d3b935/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6", size = 267433 }, - { url = "https://files.pythonhosted.org/packages/af/f2/64b73a9bb86f5a89fb55450e97cd5c1f84a862d4ff90d9fd1a73ab0f64a5/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e", size = 283591 }, - { url = "https://files.pythonhosted.org/packages/29/e2/ffbb1fae55a791fd6c2938dd9ea779509c977435ba3940b9f2e8dc9d5316/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9", size = 273249 }, - { url = "https://files.pythonhosted.org/packages/2e/6e/008136a30798bb63618a114b9321b5971172a5abddff44a100c7edc5ad4f/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039", size = 271075 }, - { url = "https://files.pythonhosted.org/packages/ae/f0/4e71e54a026b06724cec9b6c54f0b13a4e9e298cc8db0f82ec70e151f5ce/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784", size = 285398 }, - { url = "https://files.pythonhosted.org/packages/4d/36/70ec246851478b1c0b59f11ef8ade9c482ff447c1363c2bd5fad45098b12/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631", size = 294445 }, - { url = "https://files.pythonhosted.org/packages/37/e0/47f87544055b3349b633a03c4d94b405956cf2437f4ab46d0928b74b7526/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f", size = 280569 }, - { url = "https://files.pythonhosted.org/packages/f9/7c/490133c160fb6b84ed374c266f42800e33b50c3bbab1652764e6e1fc498a/frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8", size = 44721 }, - { url = "https://files.pythonhosted.org/packages/b1/56/4e45136ffc6bdbfa68c29ca56ef53783ef4c2fd395f7cbf99a2624aa9aaa/frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f", size = 51329 }, - { url = "https://files.pythonhosted.org/packages/da/3b/915f0bca8a7ea04483622e84a9bd90033bab54bdf485479556c74fd5eaf5/frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953", size = 91538 }, - { url = "https://files.pythonhosted.org/packages/c7/d1/a7c98aad7e44afe5306a2b068434a5830f1470675f0e715abb86eb15f15b/frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0", size = 52849 }, - { url = "https://files.pythonhosted.org/packages/3a/c8/76f23bf9ab15d5f760eb48701909645f686f9c64fbb8982674c241fbef14/frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2", size = 50583 }, - { url = "https://files.pythonhosted.org/packages/1f/22/462a3dd093d11df623179d7754a3b3269de3b42de2808cddef50ee0f4f48/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f", size = 265636 }, - { url = "https://files.pythonhosted.org/packages/80/cf/e075e407fc2ae7328155a1cd7e22f932773c8073c1fc78016607d19cc3e5/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608", size = 270214 }, - { url = "https://files.pythonhosted.org/packages/a1/58/0642d061d5de779f39c50cbb00df49682832923f3d2ebfb0fedf02d05f7f/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b", size = 273905 }, - { url = "https://files.pythonhosted.org/packages/ab/66/3fe0f5f8f2add5b4ab7aa4e199f767fd3b55da26e3ca4ce2cc36698e50c4/frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840", size = 250542 }, - { url = "https://files.pythonhosted.org/packages/f6/b8/260791bde9198c87a465224e0e2bb62c4e716f5d198fc3a1dacc4895dbd1/frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439", size = 267026 }, - { url = "https://files.pythonhosted.org/packages/2e/a4/3d24f88c527f08f8d44ade24eaee83b2627793fa62fa07cbb7ff7a2f7d42/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de", size = 257690 }, - { url = "https://files.pythonhosted.org/packages/de/9a/d311d660420b2beeff3459b6626f2ab4fb236d07afbdac034a4371fe696e/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641", size = 253893 }, - { url = "https://files.pythonhosted.org/packages/c6/23/e491aadc25b56eabd0f18c53bb19f3cdc6de30b2129ee0bc39cd387cd560/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e", size = 267006 }, - { url = "https://files.pythonhosted.org/packages/08/c4/ab918ce636a35fb974d13d666dcbe03969592aeca6c3ab3835acff01f79c/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9", size = 276157 }, - { url = "https://files.pythonhosted.org/packages/c0/29/3b7a0bbbbe5a34833ba26f686aabfe982924adbdcafdc294a7a129c31688/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03", size = 264642 }, - { url = "https://files.pythonhosted.org/packages/ab/42/0595b3dbffc2e82d7fe658c12d5a5bafcd7516c6bf2d1d1feb5387caa9c1/frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c", size = 44914 }, - { url = "https://files.pythonhosted.org/packages/17/c4/b7db1206a3fea44bf3b838ca61deb6f74424a8a5db1dd53ecb21da669be6/frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28", size = 51167 }, - { url = "https://files.pythonhosted.org/packages/da/4d/d94ff0fb0f5313902c132817c62d19cdc5bdcd0c195d392006ef4b779fc6/frozenlist-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972", size = 95319 }, - { url = "https://files.pythonhosted.org/packages/8c/1b/d90e554ca2b483d31cb2296e393f72c25bdc38d64526579e95576bfda587/frozenlist-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336", size = 54749 }, - { url = "https://files.pythonhosted.org/packages/f8/66/7fdecc9ef49f8db2aa4d9da916e4ecf357d867d87aea292efc11e1b2e932/frozenlist-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f", size = 52718 }, - { url = "https://files.pythonhosted.org/packages/08/04/e2fddc92135276e07addbc1cf413acffa0c2d848b3e54cacf684e146df49/frozenlist-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f", size = 241756 }, - { url = "https://files.pythonhosted.org/packages/c6/52/be5ff200815d8a341aee5b16b6b707355e0ca3652953852238eb92b120c2/frozenlist-1.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6", size = 267718 }, - { url = "https://files.pythonhosted.org/packages/88/be/4bd93a58be57a3722fc544c36debdf9dcc6758f761092e894d78f18b8f20/frozenlist-1.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411", size = 263494 }, - { url = "https://files.pythonhosted.org/packages/32/ba/58348b90193caa096ce9e9befea6ae67f38dabfd3aacb47e46137a6250a8/frozenlist-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08", size = 232838 }, - { url = "https://files.pythonhosted.org/packages/f6/33/9f152105227630246135188901373c4f322cc026565ca6215b063f4c82f4/frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2", size = 242912 }, - { url = "https://files.pythonhosted.org/packages/a0/10/3db38fb3ccbafadd80a1b0d6800c987b0e3fe3ef2d117c6ced0246eea17a/frozenlist-1.5.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d", size = 244763 }, - { url = "https://files.pythonhosted.org/packages/e2/cd/1df468fdce2f66a4608dffe44c40cdc35eeaa67ef7fd1d813f99a9a37842/frozenlist-1.5.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b", size = 242841 }, - { url = "https://files.pythonhosted.org/packages/ee/5f/16097a5ca0bb6b6779c02cc9379c72fe98d56115d4c54d059fb233168fb6/frozenlist-1.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b", size = 263407 }, - { url = "https://files.pythonhosted.org/packages/0f/f7/58cd220ee1c2248ee65a32f5b4b93689e3fe1764d85537eee9fc392543bc/frozenlist-1.5.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0", size = 265083 }, - { url = "https://files.pythonhosted.org/packages/62/b8/49768980caabf81ac4a2d156008f7cbd0107e6b36d08a313bb31035d9201/frozenlist-1.5.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c", size = 251564 }, - { url = "https://files.pythonhosted.org/packages/cb/83/619327da3b86ef957ee7a0cbf3c166a09ed1e87a3f7f1ff487d7d0284683/frozenlist-1.5.0-cp39-cp39-win32.whl", hash = "sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3", size = 45691 }, - { url = "https://files.pythonhosted.org/packages/8b/28/407bc34a745151ed2322c690b6e7d83d7101472e81ed76e1ebdac0b70a78/frozenlist-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0", size = 51767 }, - { url = "https://files.pythonhosted.org/packages/c6/c8/a5be5b7550c10858fcf9b0ea054baccab474da77d37f1e828ce043a3a5d4/frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3", size = 11901 }, +sdist = { url = "https://files.pythonhosted.org/packages/8f/ed/0f4cec13a93c02c47ec32d81d11c0c1efbadf4a471e3f3ce7cad366cbbd3/frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817", size = 39930, upload-time = "2024-10-23T09:48:29.903Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/79/29d44c4af36b2b240725dce566b20f63f9b36ef267aaaa64ee7466f4f2f8/frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a", size = 94451, upload-time = "2024-10-23T09:46:20.558Z" }, + { url = "https://files.pythonhosted.org/packages/47/47/0c999aeace6ead8a44441b4f4173e2261b18219e4ad1fe9a479871ca02fc/frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb", size = 54301, upload-time = "2024-10-23T09:46:21.759Z" }, + { url = "https://files.pythonhosted.org/packages/8d/60/107a38c1e54176d12e06e9d4b5d755b677d71d1219217cee063911b1384f/frozenlist-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec", size = 52213, upload-time = "2024-10-23T09:46:22.993Z" }, + { url = "https://files.pythonhosted.org/packages/17/62/594a6829ac5679c25755362a9dc93486a8a45241394564309641425d3ff6/frozenlist-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5", size = 240946, upload-time = "2024-10-23T09:46:24.661Z" }, + { url = "https://files.pythonhosted.org/packages/7e/75/6c8419d8f92c80dd0ee3f63bdde2702ce6398b0ac8410ff459f9b6f2f9cb/frozenlist-1.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76", size = 264608, upload-time = "2024-10-23T09:46:26.017Z" }, + { url = "https://files.pythonhosted.org/packages/88/3e/82a6f0b84bc6fb7e0be240e52863c6d4ab6098cd62e4f5b972cd31e002e8/frozenlist-1.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17", size = 261361, upload-time = "2024-10-23T09:46:27.787Z" }, + { url = "https://files.pythonhosted.org/packages/fd/85/14e5f9ccac1b64ff2f10c927b3ffdf88772aea875882406f9ba0cec8ad84/frozenlist-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba", size = 231649, upload-time = "2024-10-23T09:46:28.992Z" }, + { url = "https://files.pythonhosted.org/packages/ee/59/928322800306f6529d1852323014ee9008551e9bb027cc38d276cbc0b0e7/frozenlist-1.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d", size = 241853, upload-time = "2024-10-23T09:46:30.211Z" }, + { url = "https://files.pythonhosted.org/packages/7d/bd/e01fa4f146a6f6c18c5d34cab8abdc4013774a26c4ff851128cd1bd3008e/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2", size = 243652, upload-time = "2024-10-23T09:46:31.758Z" }, + { url = "https://files.pythonhosted.org/packages/a5/bd/e4771fd18a8ec6757033f0fa903e447aecc3fbba54e3630397b61596acf0/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f", size = 241734, upload-time = "2024-10-23T09:46:33.044Z" }, + { url = "https://files.pythonhosted.org/packages/21/13/c83821fa5544af4f60c5d3a65d054af3213c26b14d3f5f48e43e5fb48556/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c", size = 260959, upload-time = "2024-10-23T09:46:34.916Z" }, + { url = "https://files.pythonhosted.org/packages/71/f3/1f91c9a9bf7ed0e8edcf52698d23f3c211d8d00291a53c9f115ceb977ab1/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab", size = 262706, upload-time = "2024-10-23T09:46:36.159Z" }, + { url = "https://files.pythonhosted.org/packages/4c/22/4a256fdf5d9bcb3ae32622c796ee5ff9451b3a13a68cfe3f68e2c95588ce/frozenlist-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5", size = 250401, upload-time = "2024-10-23T09:46:37.327Z" }, + { url = "https://files.pythonhosted.org/packages/af/89/c48ebe1f7991bd2be6d5f4ed202d94960c01b3017a03d6954dd5fa9ea1e8/frozenlist-1.5.0-cp310-cp310-win32.whl", hash = "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb", size = 45498, upload-time = "2024-10-23T09:46:38.552Z" }, + { url = "https://files.pythonhosted.org/packages/28/2f/cc27d5f43e023d21fe5c19538e08894db3d7e081cbf582ad5ed366c24446/frozenlist-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4", size = 51622, upload-time = "2024-10-23T09:46:39.513Z" }, + { url = "https://files.pythonhosted.org/packages/79/43/0bed28bf5eb1c9e4301003b74453b8e7aa85fb293b31dde352aac528dafc/frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30", size = 94987, upload-time = "2024-10-23T09:46:40.487Z" }, + { url = "https://files.pythonhosted.org/packages/bb/bf/b74e38f09a246e8abbe1e90eb65787ed745ccab6eaa58b9c9308e052323d/frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5", size = 54584, upload-time = "2024-10-23T09:46:41.463Z" }, + { url = "https://files.pythonhosted.org/packages/2c/31/ab01375682f14f7613a1ade30149f684c84f9b8823a4391ed950c8285656/frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778", size = 52499, upload-time = "2024-10-23T09:46:42.451Z" }, + { url = "https://files.pythonhosted.org/packages/98/a8/d0ac0b9276e1404f58fec3ab6e90a4f76b778a49373ccaf6a563f100dfbc/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a", size = 276357, upload-time = "2024-10-23T09:46:44.166Z" }, + { url = "https://files.pythonhosted.org/packages/ad/c9/c7761084fa822f07dac38ac29f841d4587570dd211e2262544aa0b791d21/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869", size = 287516, upload-time = "2024-10-23T09:46:45.369Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ff/cd7479e703c39df7bdab431798cef89dc75010d8aa0ca2514c5b9321db27/frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d", size = 283131, upload-time = "2024-10-23T09:46:46.654Z" }, + { url = "https://files.pythonhosted.org/packages/59/a0/370941beb47d237eca4fbf27e4e91389fd68699e6f4b0ebcc95da463835b/frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45", size = 261320, upload-time = "2024-10-23T09:46:47.825Z" }, + { url = "https://files.pythonhosted.org/packages/b8/5f/c10123e8d64867bc9b4f2f510a32042a306ff5fcd7e2e09e5ae5100ee333/frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d", size = 274877, upload-time = "2024-10-23T09:46:48.989Z" }, + { url = "https://files.pythonhosted.org/packages/fa/79/38c505601ae29d4348f21706c5d89755ceded02a745016ba2f58bd5f1ea6/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3", size = 269592, upload-time = "2024-10-23T09:46:50.235Z" }, + { url = "https://files.pythonhosted.org/packages/19/e2/39f3a53191b8204ba9f0bb574b926b73dd2efba2a2b9d2d730517e8f7622/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a", size = 265934, upload-time = "2024-10-23T09:46:51.829Z" }, + { url = "https://files.pythonhosted.org/packages/d5/c9/3075eb7f7f3a91f1a6b00284af4de0a65a9ae47084930916f5528144c9dd/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9", size = 283859, upload-time = "2024-10-23T09:46:52.947Z" }, + { url = "https://files.pythonhosted.org/packages/05/f5/549f44d314c29408b962fa2b0e69a1a67c59379fb143b92a0a065ffd1f0f/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2", size = 287560, upload-time = "2024-10-23T09:46:54.162Z" }, + { url = "https://files.pythonhosted.org/packages/9d/f8/cb09b3c24a3eac02c4c07a9558e11e9e244fb02bf62c85ac2106d1eb0c0b/frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf", size = 277150, upload-time = "2024-10-23T09:46:55.361Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/38c2db3f54d1501e692d6fe058f45b6ad1b358d82cd19436efab80cfc965/frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942", size = 45244, upload-time = "2024-10-23T09:46:56.578Z" }, + { url = "https://files.pythonhosted.org/packages/ca/8c/2ddffeb8b60a4bce3b196c32fcc30d8830d4615e7b492ec2071da801b8ad/frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d", size = 51634, upload-time = "2024-10-23T09:46:57.6Z" }, + { url = "https://files.pythonhosted.org/packages/79/73/fa6d1a96ab7fd6e6d1c3500700963eab46813847f01ef0ccbaa726181dd5/frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21", size = 94026, upload-time = "2024-10-23T09:46:58.601Z" }, + { url = "https://files.pythonhosted.org/packages/ab/04/ea8bf62c8868b8eada363f20ff1b647cf2e93377a7b284d36062d21d81d1/frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d", size = 54150, upload-time = "2024-10-23T09:46:59.608Z" }, + { url = "https://files.pythonhosted.org/packages/d0/9a/8e479b482a6f2070b26bda572c5e6889bb3ba48977e81beea35b5ae13ece/frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e", size = 51927, upload-time = "2024-10-23T09:47:00.625Z" }, + { url = "https://files.pythonhosted.org/packages/e3/12/2aad87deb08a4e7ccfb33600871bbe8f0e08cb6d8224371387f3303654d7/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a", size = 282647, upload-time = "2024-10-23T09:47:01.992Z" }, + { url = "https://files.pythonhosted.org/packages/77/f2/07f06b05d8a427ea0060a9cef6e63405ea9e0d761846b95ef3fb3be57111/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a", size = 289052, upload-time = "2024-10-23T09:47:04.039Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9f/8bf45a2f1cd4aa401acd271b077989c9267ae8463e7c8b1eb0d3f561b65e/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee", size = 291719, upload-time = "2024-10-23T09:47:05.58Z" }, + { url = "https://files.pythonhosted.org/packages/41/d1/1f20fd05a6c42d3868709b7604c9f15538a29e4f734c694c6bcfc3d3b935/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6", size = 267433, upload-time = "2024-10-23T09:47:07.807Z" }, + { url = "https://files.pythonhosted.org/packages/af/f2/64b73a9bb86f5a89fb55450e97cd5c1f84a862d4ff90d9fd1a73ab0f64a5/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e", size = 283591, upload-time = "2024-10-23T09:47:09.645Z" }, + { url = "https://files.pythonhosted.org/packages/29/e2/ffbb1fae55a791fd6c2938dd9ea779509c977435ba3940b9f2e8dc9d5316/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9", size = 273249, upload-time = "2024-10-23T09:47:10.808Z" }, + { url = "https://files.pythonhosted.org/packages/2e/6e/008136a30798bb63618a114b9321b5971172a5abddff44a100c7edc5ad4f/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039", size = 271075, upload-time = "2024-10-23T09:47:11.938Z" }, + { url = "https://files.pythonhosted.org/packages/ae/f0/4e71e54a026b06724cec9b6c54f0b13a4e9e298cc8db0f82ec70e151f5ce/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784", size = 285398, upload-time = "2024-10-23T09:47:14.071Z" }, + { url = "https://files.pythonhosted.org/packages/4d/36/70ec246851478b1c0b59f11ef8ade9c482ff447c1363c2bd5fad45098b12/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631", size = 294445, upload-time = "2024-10-23T09:47:15.318Z" }, + { url = "https://files.pythonhosted.org/packages/37/e0/47f87544055b3349b633a03c4d94b405956cf2437f4ab46d0928b74b7526/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f", size = 280569, upload-time = "2024-10-23T09:47:17.149Z" }, + { url = "https://files.pythonhosted.org/packages/f9/7c/490133c160fb6b84ed374c266f42800e33b50c3bbab1652764e6e1fc498a/frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8", size = 44721, upload-time = "2024-10-23T09:47:19.012Z" }, + { url = "https://files.pythonhosted.org/packages/b1/56/4e45136ffc6bdbfa68c29ca56ef53783ef4c2fd395f7cbf99a2624aa9aaa/frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f", size = 51329, upload-time = "2024-10-23T09:47:20.177Z" }, + { url = "https://files.pythonhosted.org/packages/da/3b/915f0bca8a7ea04483622e84a9bd90033bab54bdf485479556c74fd5eaf5/frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953", size = 91538, upload-time = "2024-10-23T09:47:21.176Z" }, + { url = "https://files.pythonhosted.org/packages/c7/d1/a7c98aad7e44afe5306a2b068434a5830f1470675f0e715abb86eb15f15b/frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0", size = 52849, upload-time = "2024-10-23T09:47:22.439Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/76f23bf9ab15d5f760eb48701909645f686f9c64fbb8982674c241fbef14/frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2", size = 50583, upload-time = "2024-10-23T09:47:23.44Z" }, + { url = "https://files.pythonhosted.org/packages/1f/22/462a3dd093d11df623179d7754a3b3269de3b42de2808cddef50ee0f4f48/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f", size = 265636, upload-time = "2024-10-23T09:47:24.82Z" }, + { url = "https://files.pythonhosted.org/packages/80/cf/e075e407fc2ae7328155a1cd7e22f932773c8073c1fc78016607d19cc3e5/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608", size = 270214, upload-time = "2024-10-23T09:47:26.156Z" }, + { url = "https://files.pythonhosted.org/packages/a1/58/0642d061d5de779f39c50cbb00df49682832923f3d2ebfb0fedf02d05f7f/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b", size = 273905, upload-time = "2024-10-23T09:47:27.741Z" }, + { url = "https://files.pythonhosted.org/packages/ab/66/3fe0f5f8f2add5b4ab7aa4e199f767fd3b55da26e3ca4ce2cc36698e50c4/frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840", size = 250542, upload-time = "2024-10-23T09:47:28.938Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b8/260791bde9198c87a465224e0e2bb62c4e716f5d198fc3a1dacc4895dbd1/frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439", size = 267026, upload-time = "2024-10-23T09:47:30.283Z" }, + { url = "https://files.pythonhosted.org/packages/2e/a4/3d24f88c527f08f8d44ade24eaee83b2627793fa62fa07cbb7ff7a2f7d42/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de", size = 257690, upload-time = "2024-10-23T09:47:32.388Z" }, + { url = "https://files.pythonhosted.org/packages/de/9a/d311d660420b2beeff3459b6626f2ab4fb236d07afbdac034a4371fe696e/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641", size = 253893, upload-time = "2024-10-23T09:47:34.274Z" }, + { url = "https://files.pythonhosted.org/packages/c6/23/e491aadc25b56eabd0f18c53bb19f3cdc6de30b2129ee0bc39cd387cd560/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e", size = 267006, upload-time = "2024-10-23T09:47:35.499Z" }, + { url = "https://files.pythonhosted.org/packages/08/c4/ab918ce636a35fb974d13d666dcbe03969592aeca6c3ab3835acff01f79c/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9", size = 276157, upload-time = "2024-10-23T09:47:37.522Z" }, + { url = "https://files.pythonhosted.org/packages/c0/29/3b7a0bbbbe5a34833ba26f686aabfe982924adbdcafdc294a7a129c31688/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03", size = 264642, upload-time = "2024-10-23T09:47:38.75Z" }, + { url = "https://files.pythonhosted.org/packages/ab/42/0595b3dbffc2e82d7fe658c12d5a5bafcd7516c6bf2d1d1feb5387caa9c1/frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c", size = 44914, upload-time = "2024-10-23T09:47:40.145Z" }, + { url = "https://files.pythonhosted.org/packages/17/c4/b7db1206a3fea44bf3b838ca61deb6f74424a8a5db1dd53ecb21da669be6/frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28", size = 51167, upload-time = "2024-10-23T09:47:41.812Z" }, + { url = "https://files.pythonhosted.org/packages/da/4d/d94ff0fb0f5313902c132817c62d19cdc5bdcd0c195d392006ef4b779fc6/frozenlist-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972", size = 95319, upload-time = "2024-10-23T09:48:06.405Z" }, + { url = "https://files.pythonhosted.org/packages/8c/1b/d90e554ca2b483d31cb2296e393f72c25bdc38d64526579e95576bfda587/frozenlist-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336", size = 54749, upload-time = "2024-10-23T09:48:07.48Z" }, + { url = "https://files.pythonhosted.org/packages/f8/66/7fdecc9ef49f8db2aa4d9da916e4ecf357d867d87aea292efc11e1b2e932/frozenlist-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f", size = 52718, upload-time = "2024-10-23T09:48:08.725Z" }, + { url = "https://files.pythonhosted.org/packages/08/04/e2fddc92135276e07addbc1cf413acffa0c2d848b3e54cacf684e146df49/frozenlist-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f", size = 241756, upload-time = "2024-10-23T09:48:09.843Z" }, + { url = "https://files.pythonhosted.org/packages/c6/52/be5ff200815d8a341aee5b16b6b707355e0ca3652953852238eb92b120c2/frozenlist-1.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6", size = 267718, upload-time = "2024-10-23T09:48:11.828Z" }, + { url = "https://files.pythonhosted.org/packages/88/be/4bd93a58be57a3722fc544c36debdf9dcc6758f761092e894d78f18b8f20/frozenlist-1.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411", size = 263494, upload-time = "2024-10-23T09:48:13.424Z" }, + { url = "https://files.pythonhosted.org/packages/32/ba/58348b90193caa096ce9e9befea6ae67f38dabfd3aacb47e46137a6250a8/frozenlist-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08", size = 232838, upload-time = "2024-10-23T09:48:14.792Z" }, + { url = "https://files.pythonhosted.org/packages/f6/33/9f152105227630246135188901373c4f322cc026565ca6215b063f4c82f4/frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2", size = 242912, upload-time = "2024-10-23T09:48:16.249Z" }, + { url = "https://files.pythonhosted.org/packages/a0/10/3db38fb3ccbafadd80a1b0d6800c987b0e3fe3ef2d117c6ced0246eea17a/frozenlist-1.5.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d", size = 244763, upload-time = "2024-10-23T09:48:17.781Z" }, + { url = "https://files.pythonhosted.org/packages/e2/cd/1df468fdce2f66a4608dffe44c40cdc35eeaa67ef7fd1d813f99a9a37842/frozenlist-1.5.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b", size = 242841, upload-time = "2024-10-23T09:48:19.507Z" }, + { url = "https://files.pythonhosted.org/packages/ee/5f/16097a5ca0bb6b6779c02cc9379c72fe98d56115d4c54d059fb233168fb6/frozenlist-1.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b", size = 263407, upload-time = "2024-10-23T09:48:21.467Z" }, + { url = "https://files.pythonhosted.org/packages/0f/f7/58cd220ee1c2248ee65a32f5b4b93689e3fe1764d85537eee9fc392543bc/frozenlist-1.5.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0", size = 265083, upload-time = "2024-10-23T09:48:22.725Z" }, + { url = "https://files.pythonhosted.org/packages/62/b8/49768980caabf81ac4a2d156008f7cbd0107e6b36d08a313bb31035d9201/frozenlist-1.5.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c", size = 251564, upload-time = "2024-10-23T09:48:24.272Z" }, + { url = "https://files.pythonhosted.org/packages/cb/83/619327da3b86ef957ee7a0cbf3c166a09ed1e87a3f7f1ff487d7d0284683/frozenlist-1.5.0-cp39-cp39-win32.whl", hash = "sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3", size = 45691, upload-time = "2024-10-23T09:48:26.317Z" }, + { url = "https://files.pythonhosted.org/packages/8b/28/407bc34a745151ed2322c690b6e7d83d7101472e81ed76e1ebdac0b70a78/frozenlist-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0", size = 51767, upload-time = "2024-10-23T09:48:27.427Z" }, + { url = "https://files.pythonhosted.org/packages/c6/c8/a5be5b7550c10858fcf9b0ea054baccab474da77d37f1e828ce043a3a5d4/frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3", size = 11901, upload-time = "2024-10-23T09:48:28.851Z" }, ] [[package]] @@ -741,70 +741,70 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload-time = "2022-05-02T15:47:16.11Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload-time = "2022-05-02T15:47:14.552Z" }, ] [[package]] name = "greenlet" version = "3.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2f/ff/df5fede753cc10f6a5be0931204ea30c35fa2f2ea7a35b25bdaf4fe40e46/greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467", size = 186022 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/25/90/5234a78dc0ef6496a6eb97b67a42a8e96742a56f7dc808cb954a85390448/greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563", size = 271235 }, - { url = "https://files.pythonhosted.org/packages/7c/16/cd631fa0ab7d06ef06387135b7549fdcc77d8d859ed770a0d28e47b20972/greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83", size = 637168 }, - { url = "https://files.pythonhosted.org/packages/2f/b1/aed39043a6fec33c284a2c9abd63ce191f4f1a07319340ffc04d2ed3256f/greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0", size = 648826 }, - { url = "https://files.pythonhosted.org/packages/76/25/40e0112f7f3ebe54e8e8ed91b2b9f970805143efef16d043dfc15e70f44b/greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120", size = 644443 }, - { url = "https://files.pythonhosted.org/packages/fb/2f/3850b867a9af519794784a7eeed1dd5bc68ffbcc5b28cef703711025fd0a/greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc", size = 643295 }, - { url = "https://files.pythonhosted.org/packages/cf/69/79e4d63b9387b48939096e25115b8af7cd8a90397a304f92436bcb21f5b2/greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617", size = 599544 }, - { url = "https://files.pythonhosted.org/packages/46/1d/44dbcb0e6c323bd6f71b8c2f4233766a5faf4b8948873225d34a0b7efa71/greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7", size = 1125456 }, - { url = "https://files.pythonhosted.org/packages/e0/1d/a305dce121838d0278cee39d5bb268c657f10a5363ae4b726848f833f1bb/greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6", size = 1149111 }, - { url = "https://files.pythonhosted.org/packages/96/28/d62835fb33fb5652f2e98d34c44ad1a0feacc8b1d3f1aecab035f51f267d/greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80", size = 298392 }, - { url = "https://files.pythonhosted.org/packages/28/62/1c2665558618553c42922ed47a4e6d6527e2fa3516a8256c2f431c5d0441/greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70", size = 272479 }, - { url = "https://files.pythonhosted.org/packages/76/9d/421e2d5f07285b6e4e3a676b016ca781f63cfe4a0cd8eaecf3fd6f7a71ae/greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159", size = 640404 }, - { url = "https://files.pythonhosted.org/packages/e5/de/6e05f5c59262a584e502dd3d261bbdd2c97ab5416cc9c0b91ea38932a901/greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e", size = 652813 }, - { url = "https://files.pythonhosted.org/packages/49/93/d5f93c84241acdea15a8fd329362c2c71c79e1a507c3f142a5d67ea435ae/greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1", size = 648517 }, - { url = "https://files.pythonhosted.org/packages/15/85/72f77fc02d00470c86a5c982b8daafdf65d38aefbbe441cebff3bf7037fc/greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383", size = 647831 }, - { url = "https://files.pythonhosted.org/packages/f7/4b/1c9695aa24f808e156c8f4813f685d975ca73c000c2a5056c514c64980f6/greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a", size = 602413 }, - { url = "https://files.pythonhosted.org/packages/76/70/ad6e5b31ef330f03b12559d19fda2606a522d3849cde46b24f223d6d1619/greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511", size = 1129619 }, - { url = "https://files.pythonhosted.org/packages/f4/fb/201e1b932e584066e0f0658b538e73c459b34d44b4bd4034f682423bc801/greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395", size = 1155198 }, - { url = "https://files.pythonhosted.org/packages/12/da/b9ed5e310bb8b89661b80cbcd4db5a067903bbcd7fc854923f5ebb4144f0/greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39", size = 298930 }, - { url = "https://files.pythonhosted.org/packages/7d/ec/bad1ac26764d26aa1353216fcbfa4670050f66d445448aafa227f8b16e80/greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d", size = 274260 }, - { url = "https://files.pythonhosted.org/packages/66/d4/c8c04958870f482459ab5956c2942c4ec35cac7fe245527f1039837c17a9/greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79", size = 649064 }, - { url = "https://files.pythonhosted.org/packages/51/41/467b12a8c7c1303d20abcca145db2be4e6cd50a951fa30af48b6ec607581/greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa", size = 663420 }, - { url = "https://files.pythonhosted.org/packages/27/8f/2a93cd9b1e7107d5c7b3b7816eeadcac2ebcaf6d6513df9abaf0334777f6/greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441", size = 658035 }, - { url = "https://files.pythonhosted.org/packages/57/5c/7c6f50cb12be092e1dccb2599be5a942c3416dbcfb76efcf54b3f8be4d8d/greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36", size = 660105 }, - { url = "https://files.pythonhosted.org/packages/f1/66/033e58a50fd9ec9df00a8671c74f1f3a320564c6415a4ed82a1c651654ba/greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9", size = 613077 }, - { url = "https://files.pythonhosted.org/packages/19/c5/36384a06f748044d06bdd8776e231fadf92fc896bd12cb1c9f5a1bda9578/greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0", size = 1135975 }, - { url = "https://files.pythonhosted.org/packages/38/f9/c0a0eb61bdf808d23266ecf1d63309f0e1471f284300ce6dac0ae1231881/greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942", size = 1163955 }, - { url = "https://files.pythonhosted.org/packages/43/21/a5d9df1d21514883333fc86584c07c2b49ba7c602e670b174bd73cfc9c7f/greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01", size = 299655 }, - { url = "https://files.pythonhosted.org/packages/f3/57/0db4940cd7bb461365ca8d6fd53e68254c9dbbcc2b452e69d0d41f10a85e/greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1", size = 272990 }, - { url = "https://files.pythonhosted.org/packages/1c/ec/423d113c9f74e5e402e175b157203e9102feeb7088cee844d735b28ef963/greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff", size = 649175 }, - { url = "https://files.pythonhosted.org/packages/a9/46/ddbd2db9ff209186b7b7c621d1432e2f21714adc988703dbdd0e65155c77/greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a", size = 663425 }, - { url = "https://files.pythonhosted.org/packages/bc/f9/9c82d6b2b04aa37e38e74f0c429aece5eeb02bab6e3b98e7db89b23d94c6/greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e", size = 657736 }, - { url = "https://files.pythonhosted.org/packages/d9/42/b87bc2a81e3a62c3de2b0d550bf91a86939442b7ff85abb94eec3fc0e6aa/greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4", size = 660347 }, - { url = "https://files.pythonhosted.org/packages/37/fa/71599c3fd06336cdc3eac52e6871cfebab4d9d70674a9a9e7a482c318e99/greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e", size = 615583 }, - { url = "https://files.pythonhosted.org/packages/4e/96/e9ef85de031703ee7a4483489b40cf307f93c1824a02e903106f2ea315fe/greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1", size = 1133039 }, - { url = "https://files.pythonhosted.org/packages/87/76/b2b6362accd69f2d1889db61a18c94bc743e961e3cab344c2effaa4b4a25/greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c", size = 1160716 }, - { url = "https://files.pythonhosted.org/packages/1f/1b/54336d876186920e185066d8c3024ad55f21d7cc3683c856127ddb7b13ce/greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761", size = 299490 }, - { url = "https://files.pythonhosted.org/packages/5f/17/bea55bf36990e1638a2af5ba10c1640273ef20f627962cf97107f1e5d637/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011", size = 643731 }, - { url = "https://files.pythonhosted.org/packages/78/d2/aa3d2157f9ab742a08e0fd8f77d4699f37c22adfbfeb0c610a186b5f75e0/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13", size = 649304 }, - { url = "https://files.pythonhosted.org/packages/f1/8e/d0aeffe69e53ccff5a28fa86f07ad1d2d2d6537a9506229431a2a02e2f15/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475", size = 646537 }, - { url = "https://files.pythonhosted.org/packages/05/79/e15408220bbb989469c8871062c97c6c9136770657ba779711b90870d867/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b", size = 642506 }, - { url = "https://files.pythonhosted.org/packages/18/87/470e01a940307796f1d25f8167b551a968540fbe0551c0ebb853cb527dd6/greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822", size = 602753 }, - { url = "https://files.pythonhosted.org/packages/e2/72/576815ba674eddc3c25028238f74d7b8068902b3968cbe456771b166455e/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01", size = 1122731 }, - { url = "https://files.pythonhosted.org/packages/ac/38/08cc303ddddc4b3d7c628c3039a61a3aae36c241ed01393d00c2fd663473/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6", size = 1142112 }, - { url = "https://files.pythonhosted.org/packages/8c/82/8051e82af6d6b5150aacb6789a657a8afd48f0a44d8e91cb72aaaf28553a/greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3", size = 270027 }, - { url = "https://files.pythonhosted.org/packages/f9/74/f66de2785880293780eebd18a2958aeea7cbe7814af1ccef634f4701f846/greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42", size = 634822 }, - { url = "https://files.pythonhosted.org/packages/68/23/acd9ca6bc412b02b8aa755e47b16aafbe642dde0ad2f929f836e57a7949c/greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f", size = 646866 }, - { url = "https://files.pythonhosted.org/packages/a9/ab/562beaf8a53dc9f6b2459f200e7bc226bb07e51862a66351d8b7817e3efd/greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437", size = 641985 }, - { url = "https://files.pythonhosted.org/packages/03/d3/1006543621f16689f6dc75f6bcf06e3c23e044c26fe391c16c253623313e/greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145", size = 641268 }, - { url = "https://files.pythonhosted.org/packages/2f/c1/ad71ce1b5f61f900593377b3f77b39408bce5dc96754790311b49869e146/greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c", size = 597376 }, - { url = "https://files.pythonhosted.org/packages/f7/ff/183226685b478544d61d74804445589e069d00deb8ddef042699733950c7/greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e", size = 1123359 }, - { url = "https://files.pythonhosted.org/packages/c0/8b/9b3b85a89c22f55f315908b94cd75ab5fed5973f7393bbef000ca8b2c5c1/greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e", size = 1147458 }, - { url = "https://files.pythonhosted.org/packages/b8/1c/248fadcecd1790b0ba793ff81fa2375c9ad6442f4c748bf2cc2e6563346a/greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c", size = 281131 }, - { url = "https://files.pythonhosted.org/packages/ae/02/e7d0aef2354a38709b764df50b2b83608f0621493e47f47694eb80922822/greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22", size = 298306 }, +sdist = { url = "https://files.pythonhosted.org/packages/2f/ff/df5fede753cc10f6a5be0931204ea30c35fa2f2ea7a35b25bdaf4fe40e46/greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467", size = 186022, upload-time = "2024-09-20T18:21:04.506Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/90/5234a78dc0ef6496a6eb97b67a42a8e96742a56f7dc808cb954a85390448/greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563", size = 271235, upload-time = "2024-09-20T17:07:18.761Z" }, + { url = "https://files.pythonhosted.org/packages/7c/16/cd631fa0ab7d06ef06387135b7549fdcc77d8d859ed770a0d28e47b20972/greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83", size = 637168, upload-time = "2024-09-20T17:36:43.774Z" }, + { url = "https://files.pythonhosted.org/packages/2f/b1/aed39043a6fec33c284a2c9abd63ce191f4f1a07319340ffc04d2ed3256f/greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0", size = 648826, upload-time = "2024-09-20T17:39:16.921Z" }, + { url = "https://files.pythonhosted.org/packages/76/25/40e0112f7f3ebe54e8e8ed91b2b9f970805143efef16d043dfc15e70f44b/greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120", size = 644443, upload-time = "2024-09-20T17:44:21.896Z" }, + { url = "https://files.pythonhosted.org/packages/fb/2f/3850b867a9af519794784a7eeed1dd5bc68ffbcc5b28cef703711025fd0a/greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc", size = 643295, upload-time = "2024-09-20T17:08:37.951Z" }, + { url = "https://files.pythonhosted.org/packages/cf/69/79e4d63b9387b48939096e25115b8af7cd8a90397a304f92436bcb21f5b2/greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617", size = 599544, upload-time = "2024-09-20T17:08:27.894Z" }, + { url = "https://files.pythonhosted.org/packages/46/1d/44dbcb0e6c323bd6f71b8c2f4233766a5faf4b8948873225d34a0b7efa71/greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7", size = 1125456, upload-time = "2024-09-20T17:44:11.755Z" }, + { url = "https://files.pythonhosted.org/packages/e0/1d/a305dce121838d0278cee39d5bb268c657f10a5363ae4b726848f833f1bb/greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6", size = 1149111, upload-time = "2024-09-20T17:09:22.104Z" }, + { url = "https://files.pythonhosted.org/packages/96/28/d62835fb33fb5652f2e98d34c44ad1a0feacc8b1d3f1aecab035f51f267d/greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80", size = 298392, upload-time = "2024-09-20T17:28:51.988Z" }, + { url = "https://files.pythonhosted.org/packages/28/62/1c2665558618553c42922ed47a4e6d6527e2fa3516a8256c2f431c5d0441/greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70", size = 272479, upload-time = "2024-09-20T17:07:22.332Z" }, + { url = "https://files.pythonhosted.org/packages/76/9d/421e2d5f07285b6e4e3a676b016ca781f63cfe4a0cd8eaecf3fd6f7a71ae/greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159", size = 640404, upload-time = "2024-09-20T17:36:45.588Z" }, + { url = "https://files.pythonhosted.org/packages/e5/de/6e05f5c59262a584e502dd3d261bbdd2c97ab5416cc9c0b91ea38932a901/greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e", size = 652813, upload-time = "2024-09-20T17:39:19.052Z" }, + { url = "https://files.pythonhosted.org/packages/49/93/d5f93c84241acdea15a8fd329362c2c71c79e1a507c3f142a5d67ea435ae/greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1", size = 648517, upload-time = "2024-09-20T17:44:24.101Z" }, + { url = "https://files.pythonhosted.org/packages/15/85/72f77fc02d00470c86a5c982b8daafdf65d38aefbbe441cebff3bf7037fc/greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383", size = 647831, upload-time = "2024-09-20T17:08:40.577Z" }, + { url = "https://files.pythonhosted.org/packages/f7/4b/1c9695aa24f808e156c8f4813f685d975ca73c000c2a5056c514c64980f6/greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a", size = 602413, upload-time = "2024-09-20T17:08:31.728Z" }, + { url = "https://files.pythonhosted.org/packages/76/70/ad6e5b31ef330f03b12559d19fda2606a522d3849cde46b24f223d6d1619/greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511", size = 1129619, upload-time = "2024-09-20T17:44:14.222Z" }, + { url = "https://files.pythonhosted.org/packages/f4/fb/201e1b932e584066e0f0658b538e73c459b34d44b4bd4034f682423bc801/greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395", size = 1155198, upload-time = "2024-09-20T17:09:23.903Z" }, + { url = "https://files.pythonhosted.org/packages/12/da/b9ed5e310bb8b89661b80cbcd4db5a067903bbcd7fc854923f5ebb4144f0/greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39", size = 298930, upload-time = "2024-09-20T17:25:18.656Z" }, + { url = "https://files.pythonhosted.org/packages/7d/ec/bad1ac26764d26aa1353216fcbfa4670050f66d445448aafa227f8b16e80/greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d", size = 274260, upload-time = "2024-09-20T17:08:07.301Z" }, + { url = "https://files.pythonhosted.org/packages/66/d4/c8c04958870f482459ab5956c2942c4ec35cac7fe245527f1039837c17a9/greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79", size = 649064, upload-time = "2024-09-20T17:36:47.628Z" }, + { url = "https://files.pythonhosted.org/packages/51/41/467b12a8c7c1303d20abcca145db2be4e6cd50a951fa30af48b6ec607581/greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa", size = 663420, upload-time = "2024-09-20T17:39:21.258Z" }, + { url = "https://files.pythonhosted.org/packages/27/8f/2a93cd9b1e7107d5c7b3b7816eeadcac2ebcaf6d6513df9abaf0334777f6/greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441", size = 658035, upload-time = "2024-09-20T17:44:26.501Z" }, + { url = "https://files.pythonhosted.org/packages/57/5c/7c6f50cb12be092e1dccb2599be5a942c3416dbcfb76efcf54b3f8be4d8d/greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36", size = 660105, upload-time = "2024-09-20T17:08:42.048Z" }, + { url = "https://files.pythonhosted.org/packages/f1/66/033e58a50fd9ec9df00a8671c74f1f3a320564c6415a4ed82a1c651654ba/greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9", size = 613077, upload-time = "2024-09-20T17:08:33.707Z" }, + { url = "https://files.pythonhosted.org/packages/19/c5/36384a06f748044d06bdd8776e231fadf92fc896bd12cb1c9f5a1bda9578/greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0", size = 1135975, upload-time = "2024-09-20T17:44:15.989Z" }, + { url = "https://files.pythonhosted.org/packages/38/f9/c0a0eb61bdf808d23266ecf1d63309f0e1471f284300ce6dac0ae1231881/greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942", size = 1163955, upload-time = "2024-09-20T17:09:25.539Z" }, + { url = "https://files.pythonhosted.org/packages/43/21/a5d9df1d21514883333fc86584c07c2b49ba7c602e670b174bd73cfc9c7f/greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01", size = 299655, upload-time = "2024-09-20T17:21:22.427Z" }, + { url = "https://files.pythonhosted.org/packages/f3/57/0db4940cd7bb461365ca8d6fd53e68254c9dbbcc2b452e69d0d41f10a85e/greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1", size = 272990, upload-time = "2024-09-20T17:08:26.312Z" }, + { url = "https://files.pythonhosted.org/packages/1c/ec/423d113c9f74e5e402e175b157203e9102feeb7088cee844d735b28ef963/greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff", size = 649175, upload-time = "2024-09-20T17:36:48.983Z" }, + { url = "https://files.pythonhosted.org/packages/a9/46/ddbd2db9ff209186b7b7c621d1432e2f21714adc988703dbdd0e65155c77/greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a", size = 663425, upload-time = "2024-09-20T17:39:22.705Z" }, + { url = "https://files.pythonhosted.org/packages/bc/f9/9c82d6b2b04aa37e38e74f0c429aece5eeb02bab6e3b98e7db89b23d94c6/greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e", size = 657736, upload-time = "2024-09-20T17:44:28.544Z" }, + { url = "https://files.pythonhosted.org/packages/d9/42/b87bc2a81e3a62c3de2b0d550bf91a86939442b7ff85abb94eec3fc0e6aa/greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4", size = 660347, upload-time = "2024-09-20T17:08:45.56Z" }, + { url = "https://files.pythonhosted.org/packages/37/fa/71599c3fd06336cdc3eac52e6871cfebab4d9d70674a9a9e7a482c318e99/greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e", size = 615583, upload-time = "2024-09-20T17:08:36.85Z" }, + { url = "https://files.pythonhosted.org/packages/4e/96/e9ef85de031703ee7a4483489b40cf307f93c1824a02e903106f2ea315fe/greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1", size = 1133039, upload-time = "2024-09-20T17:44:18.287Z" }, + { url = "https://files.pythonhosted.org/packages/87/76/b2b6362accd69f2d1889db61a18c94bc743e961e3cab344c2effaa4b4a25/greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c", size = 1160716, upload-time = "2024-09-20T17:09:27.112Z" }, + { url = "https://files.pythonhosted.org/packages/1f/1b/54336d876186920e185066d8c3024ad55f21d7cc3683c856127ddb7b13ce/greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761", size = 299490, upload-time = "2024-09-20T17:17:09.501Z" }, + { url = "https://files.pythonhosted.org/packages/5f/17/bea55bf36990e1638a2af5ba10c1640273ef20f627962cf97107f1e5d637/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011", size = 643731, upload-time = "2024-09-20T17:36:50.376Z" }, + { url = "https://files.pythonhosted.org/packages/78/d2/aa3d2157f9ab742a08e0fd8f77d4699f37c22adfbfeb0c610a186b5f75e0/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13", size = 649304, upload-time = "2024-09-20T17:39:24.55Z" }, + { url = "https://files.pythonhosted.org/packages/f1/8e/d0aeffe69e53ccff5a28fa86f07ad1d2d2d6537a9506229431a2a02e2f15/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475", size = 646537, upload-time = "2024-09-20T17:44:31.102Z" }, + { url = "https://files.pythonhosted.org/packages/05/79/e15408220bbb989469c8871062c97c6c9136770657ba779711b90870d867/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b", size = 642506, upload-time = "2024-09-20T17:08:47.852Z" }, + { url = "https://files.pythonhosted.org/packages/18/87/470e01a940307796f1d25f8167b551a968540fbe0551c0ebb853cb527dd6/greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822", size = 602753, upload-time = "2024-09-20T17:08:38.079Z" }, + { url = "https://files.pythonhosted.org/packages/e2/72/576815ba674eddc3c25028238f74d7b8068902b3968cbe456771b166455e/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01", size = 1122731, upload-time = "2024-09-20T17:44:20.556Z" }, + { url = "https://files.pythonhosted.org/packages/ac/38/08cc303ddddc4b3d7c628c3039a61a3aae36c241ed01393d00c2fd663473/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6", size = 1142112, upload-time = "2024-09-20T17:09:28.753Z" }, + { url = "https://files.pythonhosted.org/packages/8c/82/8051e82af6d6b5150aacb6789a657a8afd48f0a44d8e91cb72aaaf28553a/greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3", size = 270027, upload-time = "2024-09-20T17:08:27.964Z" }, + { url = "https://files.pythonhosted.org/packages/f9/74/f66de2785880293780eebd18a2958aeea7cbe7814af1ccef634f4701f846/greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42", size = 634822, upload-time = "2024-09-20T17:36:54.764Z" }, + { url = "https://files.pythonhosted.org/packages/68/23/acd9ca6bc412b02b8aa755e47b16aafbe642dde0ad2f929f836e57a7949c/greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f", size = 646866, upload-time = "2024-09-20T17:39:30.2Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ab/562beaf8a53dc9f6b2459f200e7bc226bb07e51862a66351d8b7817e3efd/greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437", size = 641985, upload-time = "2024-09-20T17:44:36.168Z" }, + { url = "https://files.pythonhosted.org/packages/03/d3/1006543621f16689f6dc75f6bcf06e3c23e044c26fe391c16c253623313e/greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145", size = 641268, upload-time = "2024-09-20T17:08:52.469Z" }, + { url = "https://files.pythonhosted.org/packages/2f/c1/ad71ce1b5f61f900593377b3f77b39408bce5dc96754790311b49869e146/greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c", size = 597376, upload-time = "2024-09-20T17:08:46.096Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ff/183226685b478544d61d74804445589e069d00deb8ddef042699733950c7/greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e", size = 1123359, upload-time = "2024-09-20T17:44:27.559Z" }, + { url = "https://files.pythonhosted.org/packages/c0/8b/9b3b85a89c22f55f315908b94cd75ab5fed5973f7393bbef000ca8b2c5c1/greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e", size = 1147458, upload-time = "2024-09-20T17:09:33.708Z" }, + { url = "https://files.pythonhosted.org/packages/b8/1c/248fadcecd1790b0ba793ff81fa2375c9ad6442f4c748bf2cc2e6563346a/greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c", size = 281131, upload-time = "2024-09-20T17:44:53.141Z" }, + { url = "https://files.pythonhosted.org/packages/ae/02/e7d0aef2354a38709b764df50b2b83608f0621493e47f47694eb80922822/greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22", size = 298306, upload-time = "2024-09-20T17:33:23.059Z" }, ] [[package]] @@ -814,18 +814,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5c/74/cd35a98cb11f79de0581e8e1e6fbd738aeeed1f2d90e9b5106728b63f5f7/griffe-1.5.5.tar.gz", hash = "sha256:35ee5b38b93d6a839098aad0f92207e6ad6b70c3e8866c08ca669275b8cba585", size = 391124 } +sdist = { url = "https://files.pythonhosted.org/packages/5c/74/cd35a98cb11f79de0581e8e1e6fbd738aeeed1f2d90e9b5106728b63f5f7/griffe-1.5.5.tar.gz", hash = "sha256:35ee5b38b93d6a839098aad0f92207e6ad6b70c3e8866c08ca669275b8cba585", size = 391124, upload-time = "2025-01-16T20:18:18.934Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/88/52c9422bc853cd7c2b6122090e887d17b5fad29b67f930e4277c9c557357/griffe-1.5.5-py3-none-any.whl", hash = "sha256:2761b1e8876c6f1f9ab1af274df93ea6bbadd65090de5f38f4cb5cc84897c7dd", size = 128221 }, + { url = "https://files.pythonhosted.org/packages/1f/88/52c9422bc853cd7c2b6122090e887d17b5fad29b67f930e4277c9c557357/griffe-1.5.5-py3-none-any.whl", hash = "sha256:2761b1e8876c6f1f9ab1af274df93ea6bbadd65090de5f38f4cb5cc84897c7dd", size = 128221, upload-time = "2025-01-16T20:18:15.887Z" }, ] [[package]] name = "idna" version = "3.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, ] [[package]] @@ -835,9 +835,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/33/08/c1395a292bb23fd03bdf572a1357c5a733d3eecbab877641ceacab23db6e/importlib_metadata-8.6.1.tar.gz", hash = "sha256:310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580", size = 55767 } +sdist = { url = "https://files.pythonhosted.org/packages/33/08/c1395a292bb23fd03bdf572a1357c5a733d3eecbab877641ceacab23db6e/importlib_metadata-8.6.1.tar.gz", hash = "sha256:310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580", size = 55767, upload-time = "2025-01-20T22:21:30.429Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/9d/0fb148dc4d6fa4a7dd1d8378168d9b4cd8d4560a6fbf6f0121c5fc34eb68/importlib_metadata-8.6.1-py3-none-any.whl", hash = "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e", size = 26971 }, + { url = "https://files.pythonhosted.org/packages/79/9d/0fb148dc4d6fa4a7dd1d8378168d9b4cd8d4560a6fbf6f0121c5fc34eb68/importlib_metadata-8.6.1-py3-none-any.whl", hash = "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e", size = 26971, upload-time = "2025-01-20T22:21:29.177Z" }, ] [[package]] @@ -847,18 +847,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp", marker = "python_full_version < '3.10'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693 } +sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461 }, + { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, ] [[package]] name = "iniconfig" version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646 } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646, upload-time = "2023-01-07T11:08:11.254Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 }, + { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892, upload-time = "2023-01-07T11:08:09.864Z" }, ] [[package]] @@ -868,9 +868,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/af/92/b3130cbbf5591acf9ade8708c365f3238046ac7cb8ccba6e81abccb0ccff/jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb", size = 244674 } +sdist = { url = "https://files.pythonhosted.org/packages/af/92/b3130cbbf5591acf9ade8708c365f3238046ac7cb8ccba6e81abccb0ccff/jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb", size = 244674, upload-time = "2024-12-21T18:30:22.828Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/0f/2ba5fbcd631e3e88689309dbe978c5769e883e4b84ebfe7da30b43275c5a/jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb", size = 134596 }, + { url = "https://files.pythonhosted.org/packages/bd/0f/2ba5fbcd631e3e88689309dbe978c5769e883e4b84ebfe7da30b43275c5a/jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb", size = 134596, upload-time = "2024-12-21T18:30:19.133Z" }, ] [[package]] @@ -883,9 +883,9 @@ dependencies = [ { name = "referencing" }, { name = "rpds-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778 } +sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778, upload-time = "2024-07-08T18:40:05.546Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462, upload-time = "2024-07-08T18:40:00.165Z" }, ] [[package]] @@ -895,9 +895,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/10/db/58f950c996c793472e336ff3655b13fbcf1e3b359dcf52dcf3ed3b52c352/jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272", size = 15561 } +sdist = { url = "https://files.pythonhosted.org/packages/10/db/58f950c996c793472e336ff3655b13fbcf1e3b359dcf52dcf3ed3b52c352/jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272", size = 15561, upload-time = "2024-10-08T12:29:32.068Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/0f/8910b19ac0670a0f80ce1008e5e751c4a57e14d2c4c13a482aa6079fa9d6/jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf", size = 18459 }, + { url = "https://files.pythonhosted.org/packages/d1/0f/8910b19ac0670a0f80ce1008e5e751c4a57e14d2c4c13a482aa6079fa9d6/jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf", size = 18459, upload-time = "2024-10-08T12:29:30.439Z" }, ] [[package]] @@ -907,9 +907,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "uc-micro-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2a/ae/bb56c6828e4797ba5a4821eec7c43b8bf40f69cda4d4f5f8c8a2810ec96a/linkify-it-py-2.0.3.tar.gz", hash = "sha256:68cda27e162e9215c17d786649d1da0021a451bdc436ef9e0fa0ba5234b9b048", size = 27946 } +sdist = { url = "https://files.pythonhosted.org/packages/2a/ae/bb56c6828e4797ba5a4821eec7c43b8bf40f69cda4d4f5f8c8a2810ec96a/linkify-it-py-2.0.3.tar.gz", hash = "sha256:68cda27e162e9215c17d786649d1da0021a451bdc436ef9e0fa0ba5234b9b048", size = 27946, upload-time = "2024-02-04T14:48:04.179Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/1e/b832de447dee8b582cac175871d2f6c3d5077cc56d5575cadba1fd1cccfa/linkify_it_py-2.0.3-py3-none-any.whl", hash = "sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79", size = 19820 }, + { url = "https://files.pythonhosted.org/packages/04/1e/b832de447dee8b582cac175871d2f6c3d5077cc56d5575cadba1fd1cccfa/linkify_it_py-2.0.3-py3-none-any.whl", hash = "sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79", size = 19820, upload-time = "2024-02-04T14:48:02.496Z" }, ] [[package]] @@ -919,9 +919,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "importlib-metadata", marker = "python_full_version < '3.10'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086 } +sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086, upload-time = "2024-08-16T15:55:17.812Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349 }, + { url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349, upload-time = "2024-08-16T15:55:16.176Z" }, ] [[package]] @@ -931,9 +931,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload-time = "2023-06-03T06:41:11.019Z" }, ] [package.optional-dependencies] @@ -952,77 +952,77 @@ dependencies = [ { name = "beautifulsoup4" }, { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/78/c48fed23c7aebc2c16049062e72de1da3220c274de59d28c942acdc9ffb2/markdownify-1.1.0.tar.gz", hash = "sha256:449c0bbbf1401c5112379619524f33b63490a8fa479456d41de9dc9e37560ebd", size = 17127 } +sdist = { url = "https://files.pythonhosted.org/packages/2f/78/c48fed23c7aebc2c16049062e72de1da3220c274de59d28c942acdc9ffb2/markdownify-1.1.0.tar.gz", hash = "sha256:449c0bbbf1401c5112379619524f33b63490a8fa479456d41de9dc9e37560ebd", size = 17127, upload-time = "2025-03-05T11:54:40.574Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/64/11/b751af7ad41b254a802cf52f7bc1fca7cabe2388132f2ce60a1a6b9b9622/markdownify-1.1.0-py3-none-any.whl", hash = "sha256:32a5a08e9af02c8a6528942224c91b933b4bd2c7d078f9012943776fc313eeef", size = 13901 }, + { url = "https://files.pythonhosted.org/packages/64/11/b751af7ad41b254a802cf52f7bc1fca7cabe2388132f2ce60a1a6b9b9622/markdownify-1.1.0-py3-none-any.whl", hash = "sha256:32a5a08e9af02c8a6528942224c91b933b4bd2c7d078f9012943776fc313eeef", size = 13901, upload-time = "2025-03-05T11:54:39.454Z" }, ] [[package]] name = "markupsafe" version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357 }, - { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393 }, - { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732 }, - { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866 }, - { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964 }, - { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977 }, - { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366 }, - { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091 }, - { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065 }, - { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514 }, - { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353 }, - { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392 }, - { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984 }, - { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120 }, - { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032 }, - { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057 }, - { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359 }, - { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306 }, - { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094 }, - { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521 }, - { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, - { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, - { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, - { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, - { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, - { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, - { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, - { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, - { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, - { url = "https://files.pythonhosted.org/packages/a7/ea/9b1530c3fdeeca613faeb0fb5cbcf2389d816072fab72a71b45749ef6062/MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a", size = 14344 }, - { url = "https://files.pythonhosted.org/packages/4b/c2/fbdbfe48848e7112ab05e627e718e854d20192b674952d9042ebd8c9e5de/MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff", size = 12389 }, - { url = "https://files.pythonhosted.org/packages/f0/25/7a7c6e4dbd4f867d95d94ca15449e91e52856f6ed1905d58ef1de5e211d0/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13", size = 21607 }, - { url = "https://files.pythonhosted.org/packages/53/8f/f339c98a178f3c1e545622206b40986a4c3307fe39f70ccd3d9df9a9e425/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144", size = 20728 }, - { url = "https://files.pythonhosted.org/packages/1a/03/8496a1a78308456dbd50b23a385c69b41f2e9661c67ea1329849a598a8f9/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29", size = 20826 }, - { url = "https://files.pythonhosted.org/packages/e6/cf/0a490a4bd363048c3022f2f475c8c05582179bb179defcee4766fb3dcc18/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0", size = 21843 }, - { url = "https://files.pythonhosted.org/packages/19/a3/34187a78613920dfd3cdf68ef6ce5e99c4f3417f035694074beb8848cd77/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0", size = 21219 }, - { url = "https://files.pythonhosted.org/packages/17/d8/5811082f85bb88410ad7e452263af048d685669bbbfb7b595e8689152498/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178", size = 20946 }, - { url = "https://files.pythonhosted.org/packages/7c/31/bd635fb5989440d9365c5e3c47556cfea121c7803f5034ac843e8f37c2f2/MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f", size = 15063 }, - { url = "https://files.pythonhosted.org/packages/b3/73/085399401383ce949f727afec55ec3abd76648d04b9f22e1c0e99cb4bec3/MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a", size = 15506 }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357, upload-time = "2024-10-18T15:20:51.44Z" }, + { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393, upload-time = "2024-10-18T15:20:52.426Z" }, + { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732, upload-time = "2024-10-18T15:20:53.578Z" }, + { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866, upload-time = "2024-10-18T15:20:55.06Z" }, + { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964, upload-time = "2024-10-18T15:20:55.906Z" }, + { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977, upload-time = "2024-10-18T15:20:57.189Z" }, + { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366, upload-time = "2024-10-18T15:20:58.235Z" }, + { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091, upload-time = "2024-10-18T15:20:59.235Z" }, + { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065, upload-time = "2024-10-18T15:21:00.307Z" }, + { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514, upload-time = "2024-10-18T15:21:01.122Z" }, + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353, upload-time = "2024-10-18T15:21:02.187Z" }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392, upload-time = "2024-10-18T15:21:02.941Z" }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984, upload-time = "2024-10-18T15:21:03.953Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120, upload-time = "2024-10-18T15:21:06.495Z" }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032, upload-time = "2024-10-18T15:21:07.295Z" }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057, upload-time = "2024-10-18T15:21:08.073Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359, upload-time = "2024-10-18T15:21:09.318Z" }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306, upload-time = "2024-10-18T15:21:10.185Z" }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload-time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload-time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload-time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload-time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload-time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload-time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload-time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload-time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload-time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload-time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, + { url = "https://files.pythonhosted.org/packages/a7/ea/9b1530c3fdeeca613faeb0fb5cbcf2389d816072fab72a71b45749ef6062/MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a", size = 14344, upload-time = "2024-10-18T15:21:43.721Z" }, + { url = "https://files.pythonhosted.org/packages/4b/c2/fbdbfe48848e7112ab05e627e718e854d20192b674952d9042ebd8c9e5de/MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff", size = 12389, upload-time = "2024-10-18T15:21:44.666Z" }, + { url = "https://files.pythonhosted.org/packages/f0/25/7a7c6e4dbd4f867d95d94ca15449e91e52856f6ed1905d58ef1de5e211d0/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13", size = 21607, upload-time = "2024-10-18T15:21:45.452Z" }, + { url = "https://files.pythonhosted.org/packages/53/8f/f339c98a178f3c1e545622206b40986a4c3307fe39f70ccd3d9df9a9e425/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144", size = 20728, upload-time = "2024-10-18T15:21:46.295Z" }, + { url = "https://files.pythonhosted.org/packages/1a/03/8496a1a78308456dbd50b23a385c69b41f2e9661c67ea1329849a598a8f9/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29", size = 20826, upload-time = "2024-10-18T15:21:47.134Z" }, + { url = "https://files.pythonhosted.org/packages/e6/cf/0a490a4bd363048c3022f2f475c8c05582179bb179defcee4766fb3dcc18/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0", size = 21843, upload-time = "2024-10-18T15:21:48.334Z" }, + { url = "https://files.pythonhosted.org/packages/19/a3/34187a78613920dfd3cdf68ef6ce5e99c4f3417f035694074beb8848cd77/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0", size = 21219, upload-time = "2024-10-18T15:21:49.587Z" }, + { url = "https://files.pythonhosted.org/packages/17/d8/5811082f85bb88410ad7e452263af048d685669bbbfb7b595e8689152498/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178", size = 20946, upload-time = "2024-10-18T15:21:50.441Z" }, + { url = "https://files.pythonhosted.org/packages/7c/31/bd635fb5989440d9365c5e3c47556cfea121c7803f5034ac843e8f37c2f2/MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f", size = 15063, upload-time = "2024-10-18T15:21:51.385Z" }, + { url = "https://files.pythonhosted.org/packages/b3/73/085399401383ce949f727afec55ec3abd76648d04b9f22e1c0e99cb4bec3/MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a", size = 15506, upload-time = "2024-10-18T15:21:52.974Z" }, ] [[package]] @@ -1034,9 +1034,9 @@ dependencies = [ { name = "markdown-it-py" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/eb/b5cbf2484411af039a3d4aeb53a5160fae25dd8c84af6a4243bc2f3fedb3/mdformat-0.7.22.tar.gz", hash = "sha256:eef84fa8f233d3162734683c2a8a6222227a229b9206872e6139658d99acb1ea", size = 34610 } +sdist = { url = "https://files.pythonhosted.org/packages/fc/eb/b5cbf2484411af039a3d4aeb53a5160fae25dd8c84af6a4243bc2f3fedb3/mdformat-0.7.22.tar.gz", hash = "sha256:eef84fa8f233d3162734683c2a8a6222227a229b9206872e6139658d99acb1ea", size = 34610, upload-time = "2025-01-30T18:00:51.418Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f2/6f/94a7344f6d634fe3563bea8b33bccedee37f2726f7807e9a58440dc91627/mdformat-0.7.22-py3-none-any.whl", hash = "sha256:61122637c9e1d9be1329054f3fa216559f0d1f722b7919b060a8c2a4ae1850e5", size = 34447 }, + { url = "https://files.pythonhosted.org/packages/f2/6f/94a7344f6d634fe3563bea8b33bccedee37f2726f7807e9a58440dc91627/mdformat-0.7.22-py3-none-any.whl", hash = "sha256:61122637c9e1d9be1329054f3fa216559f0d1f722b7919b060a8c2a4ae1850e5", size = 34447, upload-time = "2025-01-30T18:00:48.708Z" }, ] [[package]] @@ -1046,18 +1046,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/19/03/a2ecab526543b152300717cf232bb4bb8605b6edb946c845016fa9c9c9fd/mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5", size = 43542 } +sdist = { url = "https://files.pythonhosted.org/packages/19/03/a2ecab526543b152300717cf232bb4bb8605b6edb946c845016fa9c9c9fd/mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5", size = 43542, upload-time = "2024-09-09T20:27:49.564Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636", size = 55316 }, + { url = "https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636", size = 55316, upload-time = "2024-09-09T20:27:48.397Z" }, ] [[package]] name = "mdurl" version = "0.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, ] [[package]] @@ -1069,49 +1069,49 @@ dependencies = [ { name = "rich" }, { name = "textual" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e8/d3/b2a01137e2391917928187c4c2837c2750cc832c99a6aecd6e0d6ea07c58/memray-1.15.0.tar.gz", hash = "sha256:1beffa2bcba3dbe0f095d547927286eca46e272798b83026dd1b5db58e16ed56", size = 1025344 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/91/17/f7913c0303ff9769d7961a9390cb02fa109c8c7b2e502eea72883ca5ecb4/memray-1.15.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:9b623c0c651d611dd068236566a8a202250e3d59307c3a3f241acc47835e73eb", size = 923273 }, - { url = "https://files.pythonhosted.org/packages/e9/78/790f486c107131a20ec4748dd789bce5a287f9b30266dbff65a6ec2e1ed7/memray-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74765f92887b7eed152e3b9f14c147c43bf0247417b18c7ea0dec173cd01633c", size = 898482 }, - { url = "https://files.pythonhosted.org/packages/f9/4c/b99fcfd7dfc6be4c689abcb38bdfb196ae2ab22ddb3e637802574fa046fe/memray-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a5c6be5f9c2280b5ba077cbfec4706f209f9c0c2cd3a53d949ab9f4ee1f6a255", size = 8248988 }, - { url = "https://files.pythonhosted.org/packages/8a/31/902f8d0306a4291a808bbb81b28f72ecec9cda83102cd1b1deb6fa2bea26/memray-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:68bdad519b644539440914e1f6a04995631d0e31311ebe0977d949f2125bb579", size = 8320210 }, - { url = "https://files.pythonhosted.org/packages/04/06/4766c52243eca97faaa90e37d1f1fbba63b3280d0794ec1302921e37ae98/memray-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4964c6bd555a0f1755dfdb97a8d9864e646054594449c66757441f7d7682405", size = 7944032 }, - { url = "https://files.pythonhosted.org/packages/a4/27/2c4fabe6d5b77307dfeef0657ab99701e6f0f88f51b1f24f8fd79254e911/memray-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:92212b85c7d843126e4d343c8ca024f4a57537017b9ac7611864963b322aafae", size = 8278957 }, - { url = "https://files.pythonhosted.org/packages/f9/a0/9c56b524fe5adfc642b8fe4db70625f061d791f5112de71f9a02ea62f153/memray-1.15.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:cb8997e113378b9ac8bbd9b17f4f867fc5c1eea1980d873be3ebe4c2f1176784", size = 927483 }, - { url = "https://files.pythonhosted.org/packages/53/ec/e5baba698b616276006a027f020d9d62ce17ea8cded8b46d422e8d0a4b62/memray-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ee45d919d81bfeb33677357dd5d248f3cad1d56be2ebd1853d4615a9f965b11", size = 901485 }, - { url = "https://files.pythonhosted.org/packages/1d/2b/ebda2035c3c5512a0ace12fd0ef7bc05ea3fd34b4088492ebbb54e3b326d/memray-1.15.0-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a6b740aad69e7e5f82ffff53a8edef1313ff0b5e9b7253912da16e905dcb1dcb", size = 8437653 }, - { url = "https://files.pythonhosted.org/packages/76/55/f01ab44fa26d41ea2dd3b24423886b47959c03daad5d86248809e0bdf521/memray-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0045611f2da496e35d37a5ddfa2b6a74bbc82e47087924c07b3f520448297b26", size = 8065095 }, - { url = "https://files.pythonhosted.org/packages/53/a4/c4765074938fe605941f36aa5bc7e0ccc709c8bf5e96dbf2839fe981324e/memray-1.15.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca5688e33a833de604d0e2de01b5bf11a4ac1d768998f8831a375a343dc7acaf", size = 8160735 }, - { url = "https://files.pythonhosted.org/packages/40/d4/af8c74a8a4c8dc6ae83e46e018309ea41db1595720081ee1ffe8704e81e2/memray-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bbad938c3fdcebe0cf3c568fb8f8633ab37ab08ad4db167e0991e214d6f595b", size = 8441391 }, - { url = "https://files.pythonhosted.org/packages/36/43/a156f7c7aa27603e5fe1e0d0ce43d4d9864c47ca9160f87e675727ad07df/memray-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4eb50295bd87a091a85ec71f0ee612c5d709df490fea8a3adc4410f5da4f695", size = 8405459 }, - { url = "https://files.pythonhosted.org/packages/46/87/9c62e12fa59967852d41df32fe5a0117d2bcd789b72960051c22a2052782/memray-1.15.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:d13554a25129593872b5fbcd55ac34453239e51d9b6ace258329596ccce22bb3", size = 927561 }, - { url = "https://files.pythonhosted.org/packages/0a/9e/8f88ef0e037ca9f11fd1e25e5abcc220bd368adfd9185630b37c405e6aa7/memray-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8cfe15962a9002ede8b1f8b4f045d95855100a8a60a9bf0d9f2b92950f914189", size = 899042 }, - { url = "https://files.pythonhosted.org/packages/06/ae/107ce4d557b6a6598c6a037108b5591abcdde48d92470d722b4a63e82cac/memray-1.15.0-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e84b39adca05e720bdbf950cc92ef4bafefa2d6160111e5fc427cf59c6c16d1a", size = 8417003 }, - { url = "https://files.pythonhosted.org/packages/46/35/151684bd2635f955f3381e0739e3abd13baa621e855bc3cc8a336f5e9587/memray-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7745d2c58dfc33ef77f8827053cb957131420051b67e2d5642b605d0e65a586", size = 8015335 }, - { url = "https://files.pythonhosted.org/packages/e9/17/b30e0bcb799bf2b7383d2133067ee50aee7312cdd785c3a7347b7a7db6bf/memray-1.15.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:412225d85db0ec22142a82646d85ecc1e8680d33adbfd15789c7eaa356ad4107", size = 8133111 }, - { url = "https://files.pythonhosted.org/packages/03/13/71ad108bece1c13e876a8d103dfafb9cebef66f799719ff2c12d1d5f5446/memray-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25ab7a7e32fedab46219121dfb6ec3e42c66984b217572fdd4cddc37359c521", size = 8405380 }, - { url = "https://files.pythonhosted.org/packages/6f/01/eafaa4f9fed4d03c5817965f22dac280de0f1e58f9c0c9654c119ab42ad3/memray-1.15.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fb885f92833279d34addc607831352e91267b8e547ea861ad561a3dba64f6757", size = 8357767 }, - { url = "https://files.pythonhosted.org/packages/b9/c2/a4b5cabfe1389dffbc724e21dac2b454cf76e4e9446e2ec50d74124fd666/memray-1.15.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:c1308e6a5fc5bc4e183bc0fdf5e241ddd9fb374338f32d77a4d5e74ccf611ef1", size = 922782 }, - { url = "https://files.pythonhosted.org/packages/53/5d/c2968656dc33cc7ef9121b6b30da5a37a0497fe526ff0818d3ce06418085/memray-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0794227dfa4b86a56137211fd5b8ec131e0bc4a5dc41c2f5a318ca56a22c9331", size = 894514 }, - { url = "https://files.pythonhosted.org/packages/8a/59/10efbb5e35221fe2097717391bece4bcc089f0c7cdc77c7d285f9dc0a4b0/memray-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f184e82debd4f0c8ecf8e6034efddccdd9fac22909553a7f094eabf0902cd53f", size = 8006898 }, - { url = "https://files.pythonhosted.org/packages/3e/96/7cc05356c2e4e1b1965c2fcd6ad89307dadb7bc531c8da44abcea94b213e/memray-1.15.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3493c5ac1ae1353fd0d24481bc9f30da8960ef703bf4af966cefff9dd1234d38", size = 8126116 }, - { url = "https://files.pythonhosted.org/packages/fa/ba/7056f86ee16b8598288f652edc5c3c7df51eda15d3ecfc5c9f5bf7c578d3/memray-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:145a3062d8bf631aa8dc4b0928585e201282634afc369799dae1a0b9ece59fd4", size = 8397263 }, - { url = "https://files.pythonhosted.org/packages/c5/30/8410d26b9ea64c942a23fcd9e46c6daae841bc7b451676e5b671346d4955/memray-1.15.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:59a4ade09cfe46e85cdb3a1976e9768e4674a6e448533c415dbe84e5a834f7c3", size = 8340658 }, - { url = "https://files.pythonhosted.org/packages/9d/6d/27e1a2476860aae4de97abcf9cb8c26d10efcc5c9f8bbf82c4207f4b4b96/memray-1.15.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:ce28c6a4d89349c43d76ad35ff1c21057230086cfcf18c6f4c2305df108bf0cd", size = 924474 }, - { url = "https://files.pythonhosted.org/packages/06/53/535979ceda74dce99fd7c8892680d4b405012f4de394dae6cd02901680ff/memray-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:671c2fd8c835caad80c2023baf6cdc4326c0f6dd4ae8bf1d7dbf6ad700c13625", size = 899745 }, - { url = "https://files.pythonhosted.org/packages/c8/b8/05175a39b4d56698a80c20b7d3b3061245d6ca45010604bf61e8cea8c051/memray-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8404f3969e071e35364fd99d238da8ef245cf7ee2c790f3d46cd5b41cbac0541", size = 8249681 }, - { url = "https://files.pythonhosted.org/packages/5d/b3/7f9a1ea61bb36c715165ea5757d05b0538eef3db137b06e0d3954fe3c1fd/memray-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a3e4c940deae29ea64d8dd4ffaee804f541a413c3c3c061a469837ed35d486b7", size = 8319734 }, - { url = "https://files.pythonhosted.org/packages/45/04/5628b637c1280080ef3fbb41ecacb14b8a77733e8ab0a855565c0bb8c629/memray-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36720d9ee97dee6cd51b230cbd2556cc3e0215c5a569b97c1faebc927ac3c505", size = 7939758 }, - { url = "https://files.pythonhosted.org/packages/70/37/9351b7ae8a9367230a4f8a89bbe5980363ef8f7eec0c504321cee9982afe/memray-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cba7727bfdee596f71323195af0262508ed0aec7ebbf67d98de0b959d9b8cf02", size = 8283123 }, +sdist = { url = "https://files.pythonhosted.org/packages/e8/d3/b2a01137e2391917928187c4c2837c2750cc832c99a6aecd6e0d6ea07c58/memray-1.15.0.tar.gz", hash = "sha256:1beffa2bcba3dbe0f095d547927286eca46e272798b83026dd1b5db58e16ed56", size = 1025344, upload-time = "2024-12-03T22:50:12.589Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/17/f7913c0303ff9769d7961a9390cb02fa109c8c7b2e502eea72883ca5ecb4/memray-1.15.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:9b623c0c651d611dd068236566a8a202250e3d59307c3a3f241acc47835e73eb", size = 923273, upload-time = "2024-12-03T22:48:46.378Z" }, + { url = "https://files.pythonhosted.org/packages/e9/78/790f486c107131a20ec4748dd789bce5a287f9b30266dbff65a6ec2e1ed7/memray-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74765f92887b7eed152e3b9f14c147c43bf0247417b18c7ea0dec173cd01633c", size = 898482, upload-time = "2024-12-03T22:48:48.971Z" }, + { url = "https://files.pythonhosted.org/packages/f9/4c/b99fcfd7dfc6be4c689abcb38bdfb196ae2ab22ddb3e637802574fa046fe/memray-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a5c6be5f9c2280b5ba077cbfec4706f209f9c0c2cd3a53d949ab9f4ee1f6a255", size = 8248988, upload-time = "2024-12-03T22:48:51.062Z" }, + { url = "https://files.pythonhosted.org/packages/8a/31/902f8d0306a4291a808bbb81b28f72ecec9cda83102cd1b1deb6fa2bea26/memray-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:68bdad519b644539440914e1f6a04995631d0e31311ebe0977d949f2125bb579", size = 8320210, upload-time = "2024-12-03T22:48:53.458Z" }, + { url = "https://files.pythonhosted.org/packages/04/06/4766c52243eca97faaa90e37d1f1fbba63b3280d0794ec1302921e37ae98/memray-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4964c6bd555a0f1755dfdb97a8d9864e646054594449c66757441f7d7682405", size = 7944032, upload-time = "2024-12-03T22:48:55.865Z" }, + { url = "https://files.pythonhosted.org/packages/a4/27/2c4fabe6d5b77307dfeef0657ab99701e6f0f88f51b1f24f8fd79254e911/memray-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:92212b85c7d843126e4d343c8ca024f4a57537017b9ac7611864963b322aafae", size = 8278957, upload-time = "2024-12-03T22:48:58.17Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a0/9c56b524fe5adfc642b8fe4db70625f061d791f5112de71f9a02ea62f153/memray-1.15.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:cb8997e113378b9ac8bbd9b17f4f867fc5c1eea1980d873be3ebe4c2f1176784", size = 927483, upload-time = "2024-12-03T22:49:01.358Z" }, + { url = "https://files.pythonhosted.org/packages/53/ec/e5baba698b616276006a027f020d9d62ce17ea8cded8b46d422e8d0a4b62/memray-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ee45d919d81bfeb33677357dd5d248f3cad1d56be2ebd1853d4615a9f965b11", size = 901485, upload-time = "2024-12-03T22:49:03.298Z" }, + { url = "https://files.pythonhosted.org/packages/1d/2b/ebda2035c3c5512a0ace12fd0ef7bc05ea3fd34b4088492ebbb54e3b326d/memray-1.15.0-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a6b740aad69e7e5f82ffff53a8edef1313ff0b5e9b7253912da16e905dcb1dcb", size = 8437653, upload-time = "2024-12-03T22:49:05.347Z" }, + { url = "https://files.pythonhosted.org/packages/76/55/f01ab44fa26d41ea2dd3b24423886b47959c03daad5d86248809e0bdf521/memray-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0045611f2da496e35d37a5ddfa2b6a74bbc82e47087924c07b3f520448297b26", size = 8065095, upload-time = "2024-12-03T22:49:07.986Z" }, + { url = "https://files.pythonhosted.org/packages/53/a4/c4765074938fe605941f36aa5bc7e0ccc709c8bf5e96dbf2839fe981324e/memray-1.15.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca5688e33a833de604d0e2de01b5bf11a4ac1d768998f8831a375a343dc7acaf", size = 8160735, upload-time = "2024-12-03T22:49:10.226Z" }, + { url = "https://files.pythonhosted.org/packages/40/d4/af8c74a8a4c8dc6ae83e46e018309ea41db1595720081ee1ffe8704e81e2/memray-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bbad938c3fdcebe0cf3c568fb8f8633ab37ab08ad4db167e0991e214d6f595b", size = 8441391, upload-time = "2024-12-03T22:49:12.421Z" }, + { url = "https://files.pythonhosted.org/packages/36/43/a156f7c7aa27603e5fe1e0d0ce43d4d9864c47ca9160f87e675727ad07df/memray-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4eb50295bd87a091a85ec71f0ee612c5d709df490fea8a3adc4410f5da4f695", size = 8405459, upload-time = "2024-12-03T22:49:15.192Z" }, + { url = "https://files.pythonhosted.org/packages/46/87/9c62e12fa59967852d41df32fe5a0117d2bcd789b72960051c22a2052782/memray-1.15.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:d13554a25129593872b5fbcd55ac34453239e51d9b6ace258329596ccce22bb3", size = 927561, upload-time = "2024-12-03T22:49:17.894Z" }, + { url = "https://files.pythonhosted.org/packages/0a/9e/8f88ef0e037ca9f11fd1e25e5abcc220bd368adfd9185630b37c405e6aa7/memray-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8cfe15962a9002ede8b1f8b4f045d95855100a8a60a9bf0d9f2b92950f914189", size = 899042, upload-time = "2024-12-03T22:49:19.24Z" }, + { url = "https://files.pythonhosted.org/packages/06/ae/107ce4d557b6a6598c6a037108b5591abcdde48d92470d722b4a63e82cac/memray-1.15.0-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e84b39adca05e720bdbf950cc92ef4bafefa2d6160111e5fc427cf59c6c16d1a", size = 8417003, upload-time = "2024-12-03T22:49:20.734Z" }, + { url = "https://files.pythonhosted.org/packages/46/35/151684bd2635f955f3381e0739e3abd13baa621e855bc3cc8a336f5e9587/memray-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7745d2c58dfc33ef77f8827053cb957131420051b67e2d5642b605d0e65a586", size = 8015335, upload-time = "2024-12-03T22:49:22.802Z" }, + { url = "https://files.pythonhosted.org/packages/e9/17/b30e0bcb799bf2b7383d2133067ee50aee7312cdd785c3a7347b7a7db6bf/memray-1.15.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:412225d85db0ec22142a82646d85ecc1e8680d33adbfd15789c7eaa356ad4107", size = 8133111, upload-time = "2024-12-03T22:49:25.32Z" }, + { url = "https://files.pythonhosted.org/packages/03/13/71ad108bece1c13e876a8d103dfafb9cebef66f799719ff2c12d1d5f5446/memray-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25ab7a7e32fedab46219121dfb6ec3e42c66984b217572fdd4cddc37359c521", size = 8405380, upload-time = "2024-12-03T22:49:26.865Z" }, + { url = "https://files.pythonhosted.org/packages/6f/01/eafaa4f9fed4d03c5817965f22dac280de0f1e58f9c0c9654c119ab42ad3/memray-1.15.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fb885f92833279d34addc607831352e91267b8e547ea861ad561a3dba64f6757", size = 8357767, upload-time = "2024-12-03T22:49:28.857Z" }, + { url = "https://files.pythonhosted.org/packages/b9/c2/a4b5cabfe1389dffbc724e21dac2b454cf76e4e9446e2ec50d74124fd666/memray-1.15.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:c1308e6a5fc5bc4e183bc0fdf5e241ddd9fb374338f32d77a4d5e74ccf611ef1", size = 922782, upload-time = "2024-12-03T22:49:31.071Z" }, + { url = "https://files.pythonhosted.org/packages/53/5d/c2968656dc33cc7ef9121b6b30da5a37a0497fe526ff0818d3ce06418085/memray-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0794227dfa4b86a56137211fd5b8ec131e0bc4a5dc41c2f5a318ca56a22c9331", size = 894514, upload-time = "2024-12-03T22:49:32.436Z" }, + { url = "https://files.pythonhosted.org/packages/8a/59/10efbb5e35221fe2097717391bece4bcc089f0c7cdc77c7d285f9dc0a4b0/memray-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f184e82debd4f0c8ecf8e6034efddccdd9fac22909553a7f094eabf0902cd53f", size = 8006898, upload-time = "2024-12-03T22:49:33.941Z" }, + { url = "https://files.pythonhosted.org/packages/3e/96/7cc05356c2e4e1b1965c2fcd6ad89307dadb7bc531c8da44abcea94b213e/memray-1.15.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3493c5ac1ae1353fd0d24481bc9f30da8960ef703bf4af966cefff9dd1234d38", size = 8126116, upload-time = "2024-12-03T22:49:36.171Z" }, + { url = "https://files.pythonhosted.org/packages/fa/ba/7056f86ee16b8598288f652edc5c3c7df51eda15d3ecfc5c9f5bf7c578d3/memray-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:145a3062d8bf631aa8dc4b0928585e201282634afc369799dae1a0b9ece59fd4", size = 8397263, upload-time = "2024-12-03T22:49:38.77Z" }, + { url = "https://files.pythonhosted.org/packages/c5/30/8410d26b9ea64c942a23fcd9e46c6daae841bc7b451676e5b671346d4955/memray-1.15.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:59a4ade09cfe46e85cdb3a1976e9768e4674a6e448533c415dbe84e5a834f7c3", size = 8340658, upload-time = "2024-12-03T22:49:41.496Z" }, + { url = "https://files.pythonhosted.org/packages/9d/6d/27e1a2476860aae4de97abcf9cb8c26d10efcc5c9f8bbf82c4207f4b4b96/memray-1.15.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:ce28c6a4d89349c43d76ad35ff1c21057230086cfcf18c6f4c2305df108bf0cd", size = 924474, upload-time = "2024-12-03T22:50:01.307Z" }, + { url = "https://files.pythonhosted.org/packages/06/53/535979ceda74dce99fd7c8892680d4b405012f4de394dae6cd02901680ff/memray-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:671c2fd8c835caad80c2023baf6cdc4326c0f6dd4ae8bf1d7dbf6ad700c13625", size = 899745, upload-time = "2024-12-03T22:50:03.947Z" }, + { url = "https://files.pythonhosted.org/packages/c8/b8/05175a39b4d56698a80c20b7d3b3061245d6ca45010604bf61e8cea8c051/memray-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8404f3969e071e35364fd99d238da8ef245cf7ee2c790f3d46cd5b41cbac0541", size = 8249681, upload-time = "2024-12-03T22:50:05.407Z" }, + { url = "https://files.pythonhosted.org/packages/5d/b3/7f9a1ea61bb36c715165ea5757d05b0538eef3db137b06e0d3954fe3c1fd/memray-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a3e4c940deae29ea64d8dd4ffaee804f541a413c3c3c061a469837ed35d486b7", size = 8319734, upload-time = "2024-12-03T22:50:07.466Z" }, + { url = "https://files.pythonhosted.org/packages/45/04/5628b637c1280080ef3fbb41ecacb14b8a77733e8ab0a855565c0bb8c629/memray-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36720d9ee97dee6cd51b230cbd2556cc3e0215c5a569b97c1faebc927ac3c505", size = 7939758, upload-time = "2024-12-03T22:50:09.163Z" }, + { url = "https://files.pythonhosted.org/packages/70/37/9351b7ae8a9367230a4f8a89bbe5980363ef8f7eec0c504321cee9982afe/memray-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cba7727bfdee596f71323195af0262508ed0aec7ebbf67d98de0b959d9b8cf02", size = 8283123, upload-time = "2024-12-03T22:50:11.078Z" }, ] [[package]] name = "mergedeep" version = "1.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload-time = "2021-02-05T18:55:30.623Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload-time = "2021-02-05T18:55:29.583Z" }, ] [[package]] @@ -1128,9 +1128,9 @@ dependencies = [ { name = "pyyaml-env-tag" }, { name = "verspec" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/f7/2933f1a1fb0e0f077d5d6a92c6c7f8a54e6128241f116dff4df8b6050bbf/mike-2.1.3.tar.gz", hash = "sha256:abd79b8ea483fb0275b7972825d3082e5ae67a41820f8d8a0dc7a3f49944e810", size = 38119 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/f7/2933f1a1fb0e0f077d5d6a92c6c7f8a54e6128241f116dff4df8b6050bbf/mike-2.1.3.tar.gz", hash = "sha256:abd79b8ea483fb0275b7972825d3082e5ae67a41820f8d8a0dc7a3f49944e810", size = 38119, upload-time = "2024-08-13T05:02:14.167Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/1a/31b7cd6e4e7a02df4e076162e9783620777592bea9e4bb036389389af99d/mike-2.1.3-py3-none-any.whl", hash = "sha256:d90c64077e84f06272437b464735130d380703a76a5738b152932884c60c062a", size = 33754 }, + { url = "https://files.pythonhosted.org/packages/fd/1a/31b7cd6e4e7a02df4e076162e9783620777592bea9e4bb036389389af99d/mike-2.1.3-py3-none-any.whl", hash = "sha256:d90c64077e84f06272437b464735130d380703a76a5738b152932884c60c062a", size = 33754, upload-time = "2024-08-13T05:02:12.515Z" }, ] [[package]] @@ -1153,9 +1153,9 @@ dependencies = [ { name = "pyyaml-env-tag" }, { name = "watchdog" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload-time = "2024-08-30T12:24:06.899Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload-time = "2024-08-30T12:24:05.054Z" }, ] [[package]] @@ -1167,9 +1167,9 @@ dependencies = [ { name = "markupsafe" }, { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fe/18/fb1e17fb705228b51bf7b2f791adaf83c0fa708e51bbc003411ba48ae21e/mkdocs_autorefs-1.3.0.tar.gz", hash = "sha256:6867764c099ace9025d6ac24fd07b85a98335fbd30107ef01053697c8f46db61", size = 42597 } +sdist = { url = "https://files.pythonhosted.org/packages/fe/18/fb1e17fb705228b51bf7b2f791adaf83c0fa708e51bbc003411ba48ae21e/mkdocs_autorefs-1.3.0.tar.gz", hash = "sha256:6867764c099ace9025d6ac24fd07b85a98335fbd30107ef01053697c8f46db61", size = 42597, upload-time = "2025-01-12T21:48:28.622Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/4a/960c441950f98becfa5dd419adab20274939fd575ab848aee2c87e3599ac/mkdocs_autorefs-1.3.0-py3-none-any.whl", hash = "sha256:d180f9778a04e78b7134e31418f238bba56f56d6a8af97873946ff661befffb3", size = 17642 }, + { url = "https://files.pythonhosted.org/packages/f4/4a/960c441950f98becfa5dd419adab20274939fd575ab848aee2c87e3599ac/mkdocs_autorefs-1.3.0-py3-none-any.whl", hash = "sha256:d180f9778a04e78b7134e31418f238bba56f56d6a8af97873946ff661befffb3", size = 17642, upload-time = "2025-01-12T21:48:26.127Z" }, ] [[package]] @@ -1179,7 +1179,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/b5/3a8e289282c9e8d7003f8a2f53d673d4fdaa81d493dc6966092d9985b6fc/mkdocs-exclude-1.0.2.tar.gz", hash = "sha256:ba6fab3c80ddbe3fd31d3e579861fd3124513708271180a5f81846da8c7e2a51", size = 6751 } +sdist = { url = "https://files.pythonhosted.org/packages/54/b5/3a8e289282c9e8d7003f8a2f53d673d4fdaa81d493dc6966092d9985b6fc/mkdocs-exclude-1.0.2.tar.gz", hash = "sha256:ba6fab3c80ddbe3fd31d3e579861fd3124513708271180a5f81846da8c7e2a51", size = 6751, upload-time = "2019-02-20T23:34:12.81Z" } [[package]] name = "mkdocs-get-deps" @@ -1191,9 +1191,9 @@ dependencies = [ { name = "platformdirs" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload-time = "2023-11-20T17:51:09.981Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload-time = "2023-11-20T17:51:08.587Z" }, ] [[package]] @@ -1205,9 +1205,9 @@ dependencies = [ { name = "markdownify" }, { name = "mdformat" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ee/25/263ea9c16d1f95f30d9eb1b76e63eb50a88a1ec9fad1829281bab7a371eb/mkdocs_llmstxt-0.2.0.tar.gz", hash = "sha256:104f10b8101167d6baf7761942b4743869be3d8f8a8d909f4e9e0b63307f709e", size = 41376 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/25/263ea9c16d1f95f30d9eb1b76e63eb50a88a1ec9fad1829281bab7a371eb/mkdocs_llmstxt-0.2.0.tar.gz", hash = "sha256:104f10b8101167d6baf7761942b4743869be3d8f8a8d909f4e9e0b63307f709e", size = 41376, upload-time = "2025-04-08T13:18:48.664Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/24/29/0a33f7d8499a01dd7fd0d90fb163b2d8eefa9c90ac0ecbc1a7770e50614e/mkdocs_llmstxt-0.2.0-py3-none-any.whl", hash = "sha256:907de892e0c8be74002e8b4d553820c2b5bbcf03cc303b95c8bca48fb49c1a29", size = 23244 }, + { url = "https://files.pythonhosted.org/packages/24/29/0a33f7d8499a01dd7fd0d90fb163b2d8eefa9c90ac0ecbc1a7770e50614e/mkdocs_llmstxt-0.2.0-py3-none-any.whl", hash = "sha256:907de892e0c8be74002e8b4d553820c2b5bbcf03cc303b95c8bca48fb49c1a29", size = 23244, upload-time = "2025-04-08T13:18:47.516Z" }, ] [[package]] @@ -1227,9 +1227,9 @@ dependencies = [ { name = "regex" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c7/16/c48d5a28bc4a67c49808180b6009d4d1b4c0753739ffee3cc37046ab29d7/mkdocs_material-9.5.50.tar.gz", hash = "sha256:ae5fe16f3d7c9ccd05bb6916a7da7420cf99a9ce5e33debd9d40403a090d5825", size = 3923354 } +sdist = { url = "https://files.pythonhosted.org/packages/c7/16/c48d5a28bc4a67c49808180b6009d4d1b4c0753739ffee3cc37046ab29d7/mkdocs_material-9.5.50.tar.gz", hash = "sha256:ae5fe16f3d7c9ccd05bb6916a7da7420cf99a9ce5e33debd9d40403a090d5825", size = 3923354, upload-time = "2025-01-18T03:59:59.008Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/b5/1bf29cd744896ae83bd38c72970782c843ba13e0240b1a85277bd3928637/mkdocs_material-9.5.50-py3-none-any.whl", hash = "sha256:f24100f234741f4d423a9d672a909d859668a4f404796be3cf035f10d6050385", size = 8645274 }, + { url = "https://files.pythonhosted.org/packages/ee/b5/1bf29cd744896ae83bd38c72970782c843ba13e0240b1a85277bd3928637/mkdocs_material-9.5.50-py3-none-any.whl", hash = "sha256:f24100f234741f4d423a9d672a909d859668a4f404796be3cf035f10d6050385", size = 8645274, upload-time = "2025-01-18T03:59:54.993Z" }, ] [package.optional-dependencies] @@ -1242,9 +1242,9 @@ imaging = [ name = "mkdocs-material-extensions" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload-time = "2023-11-22T19:09:45.208Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload-time = "2023-11-22T19:09:43.465Z" }, ] [[package]] @@ -1254,9 +1254,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f1/a8/6d44a6cf07e969c7420cb36ab287b0669da636a2044de38a7d2208d5a758/mkdocs_redirects-1.2.2.tar.gz", hash = "sha256:3094981b42ffab29313c2c1b8ac3969861109f58b2dd58c45fc81cd44bfa0095", size = 7162 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/a8/6d44a6cf07e969c7420cb36ab287b0669da636a2044de38a7d2208d5a758/mkdocs_redirects-1.2.2.tar.gz", hash = "sha256:3094981b42ffab29313c2c1b8ac3969861109f58b2dd58c45fc81cd44bfa0095", size = 7162, upload-time = "2024-11-07T14:57:21.109Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/ec/38443b1f2a3821bbcb24e46cd8ba979154417794d54baf949fefde1c2146/mkdocs_redirects-1.2.2-py3-none-any.whl", hash = "sha256:7dbfa5647b79a3589da4401403d69494bd1f4ad03b9c15136720367e1f340ed5", size = 6142 }, + { url = "https://files.pythonhosted.org/packages/c4/ec/38443b1f2a3821bbcb24e46cd8ba979154417794d54baf949fefde1c2146/mkdocs_redirects-1.2.2-py3-none-any.whl", hash = "sha256:7dbfa5647b79a3589da4401403d69494bd1f4ad03b9c15136720367e1f340ed5", size = 6142, upload-time = "2024-11-07T14:57:19.143Z" }, ] [[package]] @@ -1275,9 +1275,9 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "typing-extensions", marker = "python_full_version < '3.10'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e2/5a/5de70538c2cefae7ac3a15b5601e306ef3717290cb2aab11d51cbbc2d1c0/mkdocstrings-0.27.0.tar.gz", hash = "sha256:16adca6d6b0a1f9e0c07ff0b02ced8e16f228a9d65a37c063ec4c14d7b76a657", size = 94830 } +sdist = { url = "https://files.pythonhosted.org/packages/e2/5a/5de70538c2cefae7ac3a15b5601e306ef3717290cb2aab11d51cbbc2d1c0/mkdocstrings-0.27.0.tar.gz", hash = "sha256:16adca6d6b0a1f9e0c07ff0b02ced8e16f228a9d65a37c063ec4c14d7b76a657", size = 94830, upload-time = "2024-11-08T17:07:41.627Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/10/4c27c3063c2b3681a4b7942f8dbdeb4fa34fecb2c19b594e7345ebf4f86f/mkdocstrings-0.27.0-py3-none-any.whl", hash = "sha256:6ceaa7ea830770959b55a16203ac63da24badd71325b96af950e59fd37366332", size = 30658 }, + { url = "https://files.pythonhosted.org/packages/cd/10/4c27c3063c2b3681a4b7942f8dbdeb4fa34fecb2c19b594e7345ebf4f86f/mkdocstrings-0.27.0-py3-none-any.whl", hash = "sha256:6ceaa7ea830770959b55a16203ac63da24badd71325b96af950e59fd37366332", size = 30658, upload-time = "2024-11-08T17:07:39.189Z" }, ] [[package]] @@ -1289,9 +1289,9 @@ dependencies = [ { name = "mkdocs-autorefs" }, { name = "mkdocstrings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/ae/32703e35d74040051c672400fd9f5f2b48a6ea094f5071dd8a0e3be35322/mkdocstrings_python-1.13.0.tar.gz", hash = "sha256:2dbd5757e8375b9720e81db16f52f1856bf59905428fd7ef88005d1370e2f64c", size = 185697 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/ae/32703e35d74040051c672400fd9f5f2b48a6ea094f5071dd8a0e3be35322/mkdocstrings_python-1.13.0.tar.gz", hash = "sha256:2dbd5757e8375b9720e81db16f52f1856bf59905428fd7ef88005d1370e2f64c", size = 185697, upload-time = "2024-12-26T17:58:51.741Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/23/d02d86553327296c3bf369d444194ea83410cce8f0e690565264f37f3261/mkdocstrings_python-1.13.0-py3-none-any.whl", hash = "sha256:b88bbb207bab4086434743849f8e796788b373bd32e7bfefbf8560ac45d88f97", size = 112254 }, + { url = "https://files.pythonhosted.org/packages/51/23/d02d86553327296c3bf369d444194ea83410cce8f0e690565264f37f3261/mkdocstrings_python-1.13.0-py3-none-any.whl", hash = "sha256:b88bbb207bab4086434743849f8e796788b373bd32e7bfefbf8560ac45d88f97", size = 112254, upload-time = "2024-12-26T17:58:31.106Z" }, ] [[package]] @@ -1301,375 +1301,375 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d6/be/504b89a5e9ca731cd47487e91c469064f8ae5af93b7259758dcfc2b9c848/multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a", size = 64002 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/29/68/259dee7fd14cf56a17c554125e534f6274c2860159692a414d0b402b9a6d/multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60", size = 48628 }, - { url = "https://files.pythonhosted.org/packages/50/79/53ba256069fe5386a4a9e80d4e12857ced9de295baf3e20c68cdda746e04/multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1", size = 29327 }, - { url = "https://files.pythonhosted.org/packages/ff/10/71f1379b05b196dae749b5ac062e87273e3f11634f447ebac12a571d90ae/multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53", size = 29689 }, - { url = "https://files.pythonhosted.org/packages/71/45/70bac4f87438ded36ad4793793c0095de6572d433d98575a5752629ef549/multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5", size = 126639 }, - { url = "https://files.pythonhosted.org/packages/80/cf/17f35b3b9509b4959303c05379c4bfb0d7dd05c3306039fc79cf035bbac0/multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581", size = 134315 }, - { url = "https://files.pythonhosted.org/packages/ef/1f/652d70ab5effb33c031510a3503d4d6efc5ec93153562f1ee0acdc895a57/multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56", size = 129471 }, - { url = "https://files.pythonhosted.org/packages/a6/64/2dd6c4c681688c0165dea3975a6a4eab4944ea30f35000f8b8af1df3148c/multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429", size = 124585 }, - { url = "https://files.pythonhosted.org/packages/87/56/e6ee5459894c7e554b57ba88f7257dc3c3d2d379cb15baaa1e265b8c6165/multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748", size = 116957 }, - { url = "https://files.pythonhosted.org/packages/36/9e/616ce5e8d375c24b84f14fc263c7ef1d8d5e8ef529dbc0f1df8ce71bb5b8/multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db", size = 128609 }, - { url = "https://files.pythonhosted.org/packages/8c/4f/4783e48a38495d000f2124020dc96bacc806a4340345211b1ab6175a6cb4/multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056", size = 123016 }, - { url = "https://files.pythonhosted.org/packages/3e/b3/4950551ab8fc39862ba5e9907dc821f896aa829b4524b4deefd3e12945ab/multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76", size = 133542 }, - { url = "https://files.pythonhosted.org/packages/96/4d/f0ce6ac9914168a2a71df117935bb1f1781916acdecbb43285e225b484b8/multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160", size = 130163 }, - { url = "https://files.pythonhosted.org/packages/be/72/17c9f67e7542a49dd252c5ae50248607dfb780bcc03035907dafefb067e3/multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7", size = 126832 }, - { url = "https://files.pythonhosted.org/packages/71/9f/72d719e248cbd755c8736c6d14780533a1606ffb3fbb0fbd77da9f0372da/multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0", size = 26402 }, - { url = "https://files.pythonhosted.org/packages/04/5a/d88cd5d00a184e1ddffc82aa2e6e915164a6d2641ed3606e766b5d2f275a/multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d", size = 28800 }, - { url = "https://files.pythonhosted.org/packages/93/13/df3505a46d0cd08428e4c8169a196131d1b0c4b515c3649829258843dde6/multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6", size = 48570 }, - { url = "https://files.pythonhosted.org/packages/f0/e1/a215908bfae1343cdb72f805366592bdd60487b4232d039c437fe8f5013d/multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156", size = 29316 }, - { url = "https://files.pythonhosted.org/packages/70/0f/6dc70ddf5d442702ed74f298d69977f904960b82368532c88e854b79f72b/multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb", size = 29640 }, - { url = "https://files.pythonhosted.org/packages/d8/6d/9c87b73a13d1cdea30b321ef4b3824449866bd7f7127eceed066ccb9b9ff/multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b", size = 131067 }, - { url = "https://files.pythonhosted.org/packages/cc/1e/1b34154fef373371fd6c65125b3d42ff5f56c7ccc6bfff91b9b3c60ae9e0/multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72", size = 138507 }, - { url = "https://files.pythonhosted.org/packages/fb/e0/0bc6b2bac6e461822b5f575eae85da6aae76d0e2a79b6665d6206b8e2e48/multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304", size = 133905 }, - { url = "https://files.pythonhosted.org/packages/ba/af/73d13b918071ff9b2205fcf773d316e0f8fefb4ec65354bbcf0b10908cc6/multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351", size = 129004 }, - { url = "https://files.pythonhosted.org/packages/74/21/23960627b00ed39643302d81bcda44c9444ebcdc04ee5bedd0757513f259/multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb", size = 121308 }, - { url = "https://files.pythonhosted.org/packages/8b/5c/cf282263ffce4a596ed0bb2aa1a1dddfe1996d6a62d08842a8d4b33dca13/multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3", size = 132608 }, - { url = "https://files.pythonhosted.org/packages/d7/3e/97e778c041c72063f42b290888daff008d3ab1427f5b09b714f5a8eff294/multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399", size = 127029 }, - { url = "https://files.pythonhosted.org/packages/47/ac/3efb7bfe2f3aefcf8d103e9a7162572f01936155ab2f7ebcc7c255a23212/multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423", size = 137594 }, - { url = "https://files.pythonhosted.org/packages/42/9b/6c6e9e8dc4f915fc90a9b7798c44a30773dea2995fdcb619870e705afe2b/multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3", size = 134556 }, - { url = "https://files.pythonhosted.org/packages/1d/10/8e881743b26aaf718379a14ac58572a240e8293a1c9d68e1418fb11c0f90/multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753", size = 130993 }, - { url = "https://files.pythonhosted.org/packages/45/84/3eb91b4b557442802d058a7579e864b329968c8d0ea57d907e7023c677f2/multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80", size = 26405 }, - { url = "https://files.pythonhosted.org/packages/9f/0b/ad879847ecbf6d27e90a6eabb7eff6b62c129eefe617ea45eae7c1f0aead/multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926", size = 28795 }, - { url = "https://files.pythonhosted.org/packages/fd/16/92057c74ba3b96d5e211b553895cd6dc7cc4d1e43d9ab8fafc727681ef71/multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa", size = 48713 }, - { url = "https://files.pythonhosted.org/packages/94/3d/37d1b8893ae79716179540b89fc6a0ee56b4a65fcc0d63535c6f5d96f217/multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436", size = 29516 }, - { url = "https://files.pythonhosted.org/packages/a2/12/adb6b3200c363062f805275b4c1e656be2b3681aada66c80129932ff0bae/multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761", size = 29557 }, - { url = "https://files.pythonhosted.org/packages/47/e9/604bb05e6e5bce1e6a5cf80a474e0f072e80d8ac105f1b994a53e0b28c42/multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e", size = 130170 }, - { url = "https://files.pythonhosted.org/packages/7e/13/9efa50801785eccbf7086b3c83b71a4fb501a4d43549c2f2f80b8787d69f/multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef", size = 134836 }, - { url = "https://files.pythonhosted.org/packages/bf/0f/93808b765192780d117814a6dfcc2e75de6dcc610009ad408b8814dca3ba/multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95", size = 133475 }, - { url = "https://files.pythonhosted.org/packages/d3/c8/529101d7176fe7dfe1d99604e48d69c5dfdcadb4f06561f465c8ef12b4df/multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925", size = 131049 }, - { url = "https://files.pythonhosted.org/packages/ca/0c/fc85b439014d5a58063e19c3a158a889deec399d47b5269a0f3b6a2e28bc/multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966", size = 120370 }, - { url = "https://files.pythonhosted.org/packages/db/46/d4416eb20176492d2258fbd47b4abe729ff3b6e9c829ea4236f93c865089/multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305", size = 125178 }, - { url = "https://files.pythonhosted.org/packages/5b/46/73697ad7ec521df7de5531a32780bbfd908ded0643cbe457f981a701457c/multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2", size = 119567 }, - { url = "https://files.pythonhosted.org/packages/cd/ed/51f060e2cb0e7635329fa6ff930aa5cffa17f4c7f5c6c3ddc3500708e2f2/multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2", size = 129822 }, - { url = "https://files.pythonhosted.org/packages/df/9e/ee7d1954b1331da3eddea0c4e08d9142da5f14b1321c7301f5014f49d492/multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6", size = 128656 }, - { url = "https://files.pythonhosted.org/packages/77/00/8538f11e3356b5d95fa4b024aa566cde7a38aa7a5f08f4912b32a037c5dc/multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3", size = 125360 }, - { url = "https://files.pythonhosted.org/packages/be/05/5d334c1f2462d43fec2363cd00b1c44c93a78c3925d952e9a71caf662e96/multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133", size = 26382 }, - { url = "https://files.pythonhosted.org/packages/a3/bf/f332a13486b1ed0496d624bcc7e8357bb8053823e8cd4b9a18edc1d97e73/multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1", size = 28529 }, - { url = "https://files.pythonhosted.org/packages/22/67/1c7c0f39fe069aa4e5d794f323be24bf4d33d62d2a348acdb7991f8f30db/multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008", size = 48771 }, - { url = "https://files.pythonhosted.org/packages/3c/25/c186ee7b212bdf0df2519eacfb1981a017bda34392c67542c274651daf23/multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f", size = 29533 }, - { url = "https://files.pythonhosted.org/packages/67/5e/04575fd837e0958e324ca035b339cea174554f6f641d3fb2b4f2e7ff44a2/multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28", size = 29595 }, - { url = "https://files.pythonhosted.org/packages/d3/b2/e56388f86663810c07cfe4a3c3d87227f3811eeb2d08450b9e5d19d78876/multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b", size = 130094 }, - { url = "https://files.pythonhosted.org/packages/6c/ee/30ae9b4186a644d284543d55d491fbd4239b015d36b23fea43b4c94f7052/multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c", size = 134876 }, - { url = "https://files.pythonhosted.org/packages/84/c7/70461c13ba8ce3c779503c70ec9d0345ae84de04521c1f45a04d5f48943d/multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3", size = 133500 }, - { url = "https://files.pythonhosted.org/packages/4a/9f/002af221253f10f99959561123fae676148dd730e2daa2cd053846a58507/multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44", size = 131099 }, - { url = "https://files.pythonhosted.org/packages/82/42/d1c7a7301d52af79d88548a97e297f9d99c961ad76bbe6f67442bb77f097/multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2", size = 120403 }, - { url = "https://files.pythonhosted.org/packages/68/f3/471985c2c7ac707547553e8f37cff5158030d36bdec4414cb825fbaa5327/multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3", size = 125348 }, - { url = "https://files.pythonhosted.org/packages/67/2c/e6df05c77e0e433c214ec1d21ddd203d9a4770a1f2866a8ca40a545869a0/multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa", size = 119673 }, - { url = "https://files.pythonhosted.org/packages/c5/cd/bc8608fff06239c9fb333f9db7743a1b2eafe98c2666c9a196e867a3a0a4/multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa", size = 129927 }, - { url = "https://files.pythonhosted.org/packages/44/8e/281b69b7bc84fc963a44dc6e0bbcc7150e517b91df368a27834299a526ac/multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4", size = 128711 }, - { url = "https://files.pythonhosted.org/packages/12/a4/63e7cd38ed29dd9f1881d5119f272c898ca92536cdb53ffe0843197f6c85/multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6", size = 125519 }, - { url = "https://files.pythonhosted.org/packages/38/e0/4f5855037a72cd8a7a2f60a3952d9aa45feedb37ae7831642102604e8a37/multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81", size = 26426 }, - { url = "https://files.pythonhosted.org/packages/7e/a5/17ee3a4db1e310b7405f5d25834460073a8ccd86198ce044dfaf69eac073/multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774", size = 28531 }, - { url = "https://files.pythonhosted.org/packages/e7/c9/9e153a6572b38ac5ff4434113af38acf8d5e9957897cdb1f513b3d6614ed/multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c", size = 48550 }, - { url = "https://files.pythonhosted.org/packages/76/f5/79565ddb629eba6c7f704f09a09df085c8dc04643b12506f10f718cee37a/multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1", size = 29298 }, - { url = "https://files.pythonhosted.org/packages/60/1b/9851878b704bc98e641a3e0bce49382ae9e05743dac6d97748feb5b7baba/multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c", size = 29641 }, - { url = "https://files.pythonhosted.org/packages/89/87/d451d45aab9e422cb0fb2f7720c31a4c1d3012c740483c37f642eba568fb/multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c", size = 126202 }, - { url = "https://files.pythonhosted.org/packages/fa/b4/27cbe9f3e2e469359887653f2e45470272eef7295139916cc21107c6b48c/multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f", size = 133925 }, - { url = "https://files.pythonhosted.org/packages/4d/a3/afc841899face8adfd004235ce759a37619f6ec99eafd959650c5ce4df57/multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875", size = 129039 }, - { url = "https://files.pythonhosted.org/packages/5e/41/0d0fb18c1ad574f807196f5f3d99164edf9de3e169a58c6dc2d6ed5742b9/multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255", size = 124072 }, - { url = "https://files.pythonhosted.org/packages/00/22/defd7a2e71a44e6e5b9a5428f972e5b572e7fe28e404dfa6519bbf057c93/multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30", size = 116532 }, - { url = "https://files.pythonhosted.org/packages/91/25/f7545102def0b1d456ab6449388eed2dfd822debba1d65af60194904a23a/multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057", size = 128173 }, - { url = "https://files.pythonhosted.org/packages/45/79/3dbe8d35fc99f5ea610813a72ab55f426cb9cf482f860fa8496e5409be11/multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657", size = 122654 }, - { url = "https://files.pythonhosted.org/packages/97/cb/209e735eeab96e1b160825b5d0b36c56d3862abff828fc43999bb957dcad/multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28", size = 133197 }, - { url = "https://files.pythonhosted.org/packages/e4/3a/a13808a7ada62808afccea67837a79d00ad6581440015ef00f726d064c2d/multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972", size = 129754 }, - { url = "https://files.pythonhosted.org/packages/77/dd/8540e139eafb240079242da8f8ffdf9d3f4b4ad1aac5a786cd4050923783/multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43", size = 126402 }, - { url = "https://files.pythonhosted.org/packages/86/99/e82e1a275d8b1ea16d3a251474262258dbbe41c05cce0c01bceda1fc8ea5/multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada", size = 26421 }, - { url = "https://files.pythonhosted.org/packages/86/1c/9fa630272355af7e4446a2c7550c259f11ee422ab2d30ff90a0a71cf3d9e/multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a", size = 28791 }, - { url = "https://files.pythonhosted.org/packages/99/b7/b9e70fde2c0f0c9af4cc5277782a89b66d35948ea3369ec9f598358c3ac5/multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506", size = 10051 }, +sdist = { url = "https://files.pythonhosted.org/packages/d6/be/504b89a5e9ca731cd47487e91c469064f8ae5af93b7259758dcfc2b9c848/multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a", size = 64002, upload-time = "2024-09-09T23:49:38.163Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/68/259dee7fd14cf56a17c554125e534f6274c2860159692a414d0b402b9a6d/multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60", size = 48628, upload-time = "2024-09-09T23:47:18.278Z" }, + { url = "https://files.pythonhosted.org/packages/50/79/53ba256069fe5386a4a9e80d4e12857ced9de295baf3e20c68cdda746e04/multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1", size = 29327, upload-time = "2024-09-09T23:47:20.224Z" }, + { url = "https://files.pythonhosted.org/packages/ff/10/71f1379b05b196dae749b5ac062e87273e3f11634f447ebac12a571d90ae/multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53", size = 29689, upload-time = "2024-09-09T23:47:21.667Z" }, + { url = "https://files.pythonhosted.org/packages/71/45/70bac4f87438ded36ad4793793c0095de6572d433d98575a5752629ef549/multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5", size = 126639, upload-time = "2024-09-09T23:47:23.333Z" }, + { url = "https://files.pythonhosted.org/packages/80/cf/17f35b3b9509b4959303c05379c4bfb0d7dd05c3306039fc79cf035bbac0/multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581", size = 134315, upload-time = "2024-09-09T23:47:24.99Z" }, + { url = "https://files.pythonhosted.org/packages/ef/1f/652d70ab5effb33c031510a3503d4d6efc5ec93153562f1ee0acdc895a57/multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56", size = 129471, upload-time = "2024-09-09T23:47:26.305Z" }, + { url = "https://files.pythonhosted.org/packages/a6/64/2dd6c4c681688c0165dea3975a6a4eab4944ea30f35000f8b8af1df3148c/multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429", size = 124585, upload-time = "2024-09-09T23:47:27.958Z" }, + { url = "https://files.pythonhosted.org/packages/87/56/e6ee5459894c7e554b57ba88f7257dc3c3d2d379cb15baaa1e265b8c6165/multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748", size = 116957, upload-time = "2024-09-09T23:47:29.376Z" }, + { url = "https://files.pythonhosted.org/packages/36/9e/616ce5e8d375c24b84f14fc263c7ef1d8d5e8ef529dbc0f1df8ce71bb5b8/multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db", size = 128609, upload-time = "2024-09-09T23:47:31.038Z" }, + { url = "https://files.pythonhosted.org/packages/8c/4f/4783e48a38495d000f2124020dc96bacc806a4340345211b1ab6175a6cb4/multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056", size = 123016, upload-time = "2024-09-09T23:47:32.47Z" }, + { url = "https://files.pythonhosted.org/packages/3e/b3/4950551ab8fc39862ba5e9907dc821f896aa829b4524b4deefd3e12945ab/multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76", size = 133542, upload-time = "2024-09-09T23:47:34.103Z" }, + { url = "https://files.pythonhosted.org/packages/96/4d/f0ce6ac9914168a2a71df117935bb1f1781916acdecbb43285e225b484b8/multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160", size = 130163, upload-time = "2024-09-09T23:47:35.716Z" }, + { url = "https://files.pythonhosted.org/packages/be/72/17c9f67e7542a49dd252c5ae50248607dfb780bcc03035907dafefb067e3/multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7", size = 126832, upload-time = "2024-09-09T23:47:37.116Z" }, + { url = "https://files.pythonhosted.org/packages/71/9f/72d719e248cbd755c8736c6d14780533a1606ffb3fbb0fbd77da9f0372da/multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0", size = 26402, upload-time = "2024-09-09T23:47:38.863Z" }, + { url = "https://files.pythonhosted.org/packages/04/5a/d88cd5d00a184e1ddffc82aa2e6e915164a6d2641ed3606e766b5d2f275a/multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d", size = 28800, upload-time = "2024-09-09T23:47:40.056Z" }, + { url = "https://files.pythonhosted.org/packages/93/13/df3505a46d0cd08428e4c8169a196131d1b0c4b515c3649829258843dde6/multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6", size = 48570, upload-time = "2024-09-09T23:47:41.36Z" }, + { url = "https://files.pythonhosted.org/packages/f0/e1/a215908bfae1343cdb72f805366592bdd60487b4232d039c437fe8f5013d/multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156", size = 29316, upload-time = "2024-09-09T23:47:42.612Z" }, + { url = "https://files.pythonhosted.org/packages/70/0f/6dc70ddf5d442702ed74f298d69977f904960b82368532c88e854b79f72b/multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb", size = 29640, upload-time = "2024-09-09T23:47:44.028Z" }, + { url = "https://files.pythonhosted.org/packages/d8/6d/9c87b73a13d1cdea30b321ef4b3824449866bd7f7127eceed066ccb9b9ff/multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b", size = 131067, upload-time = "2024-09-09T23:47:45.617Z" }, + { url = "https://files.pythonhosted.org/packages/cc/1e/1b34154fef373371fd6c65125b3d42ff5f56c7ccc6bfff91b9b3c60ae9e0/multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72", size = 138507, upload-time = "2024-09-09T23:47:47.429Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e0/0bc6b2bac6e461822b5f575eae85da6aae76d0e2a79b6665d6206b8e2e48/multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304", size = 133905, upload-time = "2024-09-09T23:47:48.878Z" }, + { url = "https://files.pythonhosted.org/packages/ba/af/73d13b918071ff9b2205fcf773d316e0f8fefb4ec65354bbcf0b10908cc6/multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351", size = 129004, upload-time = "2024-09-09T23:47:50.124Z" }, + { url = "https://files.pythonhosted.org/packages/74/21/23960627b00ed39643302d81bcda44c9444ebcdc04ee5bedd0757513f259/multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb", size = 121308, upload-time = "2024-09-09T23:47:51.97Z" }, + { url = "https://files.pythonhosted.org/packages/8b/5c/cf282263ffce4a596ed0bb2aa1a1dddfe1996d6a62d08842a8d4b33dca13/multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3", size = 132608, upload-time = "2024-09-09T23:47:53.201Z" }, + { url = "https://files.pythonhosted.org/packages/d7/3e/97e778c041c72063f42b290888daff008d3ab1427f5b09b714f5a8eff294/multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399", size = 127029, upload-time = "2024-09-09T23:47:54.435Z" }, + { url = "https://files.pythonhosted.org/packages/47/ac/3efb7bfe2f3aefcf8d103e9a7162572f01936155ab2f7ebcc7c255a23212/multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423", size = 137594, upload-time = "2024-09-09T23:47:55.659Z" }, + { url = "https://files.pythonhosted.org/packages/42/9b/6c6e9e8dc4f915fc90a9b7798c44a30773dea2995fdcb619870e705afe2b/multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3", size = 134556, upload-time = "2024-09-09T23:47:56.98Z" }, + { url = "https://files.pythonhosted.org/packages/1d/10/8e881743b26aaf718379a14ac58572a240e8293a1c9d68e1418fb11c0f90/multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753", size = 130993, upload-time = "2024-09-09T23:47:58.163Z" }, + { url = "https://files.pythonhosted.org/packages/45/84/3eb91b4b557442802d058a7579e864b329968c8d0ea57d907e7023c677f2/multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80", size = 26405, upload-time = "2024-09-09T23:47:59.391Z" }, + { url = "https://files.pythonhosted.org/packages/9f/0b/ad879847ecbf6d27e90a6eabb7eff6b62c129eefe617ea45eae7c1f0aead/multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926", size = 28795, upload-time = "2024-09-09T23:48:00.359Z" }, + { url = "https://files.pythonhosted.org/packages/fd/16/92057c74ba3b96d5e211b553895cd6dc7cc4d1e43d9ab8fafc727681ef71/multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa", size = 48713, upload-time = "2024-09-09T23:48:01.893Z" }, + { url = "https://files.pythonhosted.org/packages/94/3d/37d1b8893ae79716179540b89fc6a0ee56b4a65fcc0d63535c6f5d96f217/multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436", size = 29516, upload-time = "2024-09-09T23:48:03.463Z" }, + { url = "https://files.pythonhosted.org/packages/a2/12/adb6b3200c363062f805275b4c1e656be2b3681aada66c80129932ff0bae/multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761", size = 29557, upload-time = "2024-09-09T23:48:04.905Z" }, + { url = "https://files.pythonhosted.org/packages/47/e9/604bb05e6e5bce1e6a5cf80a474e0f072e80d8ac105f1b994a53e0b28c42/multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e", size = 130170, upload-time = "2024-09-09T23:48:06.862Z" }, + { url = "https://files.pythonhosted.org/packages/7e/13/9efa50801785eccbf7086b3c83b71a4fb501a4d43549c2f2f80b8787d69f/multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef", size = 134836, upload-time = "2024-09-09T23:48:08.537Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0f/93808b765192780d117814a6dfcc2e75de6dcc610009ad408b8814dca3ba/multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95", size = 133475, upload-time = "2024-09-09T23:48:09.865Z" }, + { url = "https://files.pythonhosted.org/packages/d3/c8/529101d7176fe7dfe1d99604e48d69c5dfdcadb4f06561f465c8ef12b4df/multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925", size = 131049, upload-time = "2024-09-09T23:48:11.115Z" }, + { url = "https://files.pythonhosted.org/packages/ca/0c/fc85b439014d5a58063e19c3a158a889deec399d47b5269a0f3b6a2e28bc/multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966", size = 120370, upload-time = "2024-09-09T23:48:12.78Z" }, + { url = "https://files.pythonhosted.org/packages/db/46/d4416eb20176492d2258fbd47b4abe729ff3b6e9c829ea4236f93c865089/multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305", size = 125178, upload-time = "2024-09-09T23:48:14.295Z" }, + { url = "https://files.pythonhosted.org/packages/5b/46/73697ad7ec521df7de5531a32780bbfd908ded0643cbe457f981a701457c/multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2", size = 119567, upload-time = "2024-09-09T23:48:16.284Z" }, + { url = "https://files.pythonhosted.org/packages/cd/ed/51f060e2cb0e7635329fa6ff930aa5cffa17f4c7f5c6c3ddc3500708e2f2/multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2", size = 129822, upload-time = "2024-09-09T23:48:17.835Z" }, + { url = "https://files.pythonhosted.org/packages/df/9e/ee7d1954b1331da3eddea0c4e08d9142da5f14b1321c7301f5014f49d492/multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6", size = 128656, upload-time = "2024-09-09T23:48:19.576Z" }, + { url = "https://files.pythonhosted.org/packages/77/00/8538f11e3356b5d95fa4b024aa566cde7a38aa7a5f08f4912b32a037c5dc/multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3", size = 125360, upload-time = "2024-09-09T23:48:20.957Z" }, + { url = "https://files.pythonhosted.org/packages/be/05/5d334c1f2462d43fec2363cd00b1c44c93a78c3925d952e9a71caf662e96/multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133", size = 26382, upload-time = "2024-09-09T23:48:22.351Z" }, + { url = "https://files.pythonhosted.org/packages/a3/bf/f332a13486b1ed0496d624bcc7e8357bb8053823e8cd4b9a18edc1d97e73/multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1", size = 28529, upload-time = "2024-09-09T23:48:23.478Z" }, + { url = "https://files.pythonhosted.org/packages/22/67/1c7c0f39fe069aa4e5d794f323be24bf4d33d62d2a348acdb7991f8f30db/multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008", size = 48771, upload-time = "2024-09-09T23:48:24.594Z" }, + { url = "https://files.pythonhosted.org/packages/3c/25/c186ee7b212bdf0df2519eacfb1981a017bda34392c67542c274651daf23/multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f", size = 29533, upload-time = "2024-09-09T23:48:26.187Z" }, + { url = "https://files.pythonhosted.org/packages/67/5e/04575fd837e0958e324ca035b339cea174554f6f641d3fb2b4f2e7ff44a2/multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28", size = 29595, upload-time = "2024-09-09T23:48:27.305Z" }, + { url = "https://files.pythonhosted.org/packages/d3/b2/e56388f86663810c07cfe4a3c3d87227f3811eeb2d08450b9e5d19d78876/multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b", size = 130094, upload-time = "2024-09-09T23:48:28.544Z" }, + { url = "https://files.pythonhosted.org/packages/6c/ee/30ae9b4186a644d284543d55d491fbd4239b015d36b23fea43b4c94f7052/multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c", size = 134876, upload-time = "2024-09-09T23:48:30.098Z" }, + { url = "https://files.pythonhosted.org/packages/84/c7/70461c13ba8ce3c779503c70ec9d0345ae84de04521c1f45a04d5f48943d/multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3", size = 133500, upload-time = "2024-09-09T23:48:31.793Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/002af221253f10f99959561123fae676148dd730e2daa2cd053846a58507/multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44", size = 131099, upload-time = "2024-09-09T23:48:33.193Z" }, + { url = "https://files.pythonhosted.org/packages/82/42/d1c7a7301d52af79d88548a97e297f9d99c961ad76bbe6f67442bb77f097/multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2", size = 120403, upload-time = "2024-09-09T23:48:34.942Z" }, + { url = "https://files.pythonhosted.org/packages/68/f3/471985c2c7ac707547553e8f37cff5158030d36bdec4414cb825fbaa5327/multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3", size = 125348, upload-time = "2024-09-09T23:48:36.222Z" }, + { url = "https://files.pythonhosted.org/packages/67/2c/e6df05c77e0e433c214ec1d21ddd203d9a4770a1f2866a8ca40a545869a0/multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa", size = 119673, upload-time = "2024-09-09T23:48:37.588Z" }, + { url = "https://files.pythonhosted.org/packages/c5/cd/bc8608fff06239c9fb333f9db7743a1b2eafe98c2666c9a196e867a3a0a4/multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa", size = 129927, upload-time = "2024-09-09T23:48:39.128Z" }, + { url = "https://files.pythonhosted.org/packages/44/8e/281b69b7bc84fc963a44dc6e0bbcc7150e517b91df368a27834299a526ac/multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4", size = 128711, upload-time = "2024-09-09T23:48:40.55Z" }, + { url = "https://files.pythonhosted.org/packages/12/a4/63e7cd38ed29dd9f1881d5119f272c898ca92536cdb53ffe0843197f6c85/multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6", size = 125519, upload-time = "2024-09-09T23:48:42.446Z" }, + { url = "https://files.pythonhosted.org/packages/38/e0/4f5855037a72cd8a7a2f60a3952d9aa45feedb37ae7831642102604e8a37/multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81", size = 26426, upload-time = "2024-09-09T23:48:43.936Z" }, + { url = "https://files.pythonhosted.org/packages/7e/a5/17ee3a4db1e310b7405f5d25834460073a8ccd86198ce044dfaf69eac073/multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774", size = 28531, upload-time = "2024-09-09T23:48:45.122Z" }, + { url = "https://files.pythonhosted.org/packages/e7/c9/9e153a6572b38ac5ff4434113af38acf8d5e9957897cdb1f513b3d6614ed/multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c", size = 48550, upload-time = "2024-09-09T23:49:10.475Z" }, + { url = "https://files.pythonhosted.org/packages/76/f5/79565ddb629eba6c7f704f09a09df085c8dc04643b12506f10f718cee37a/multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1", size = 29298, upload-time = "2024-09-09T23:49:12.119Z" }, + { url = "https://files.pythonhosted.org/packages/60/1b/9851878b704bc98e641a3e0bce49382ae9e05743dac6d97748feb5b7baba/multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c", size = 29641, upload-time = "2024-09-09T23:49:13.714Z" }, + { url = "https://files.pythonhosted.org/packages/89/87/d451d45aab9e422cb0fb2f7720c31a4c1d3012c740483c37f642eba568fb/multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c", size = 126202, upload-time = "2024-09-09T23:49:15.238Z" }, + { url = "https://files.pythonhosted.org/packages/fa/b4/27cbe9f3e2e469359887653f2e45470272eef7295139916cc21107c6b48c/multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f", size = 133925, upload-time = "2024-09-09T23:49:16.786Z" }, + { url = "https://files.pythonhosted.org/packages/4d/a3/afc841899face8adfd004235ce759a37619f6ec99eafd959650c5ce4df57/multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875", size = 129039, upload-time = "2024-09-09T23:49:18.381Z" }, + { url = "https://files.pythonhosted.org/packages/5e/41/0d0fb18c1ad574f807196f5f3d99164edf9de3e169a58c6dc2d6ed5742b9/multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255", size = 124072, upload-time = "2024-09-09T23:49:20.115Z" }, + { url = "https://files.pythonhosted.org/packages/00/22/defd7a2e71a44e6e5b9a5428f972e5b572e7fe28e404dfa6519bbf057c93/multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30", size = 116532, upload-time = "2024-09-09T23:49:21.685Z" }, + { url = "https://files.pythonhosted.org/packages/91/25/f7545102def0b1d456ab6449388eed2dfd822debba1d65af60194904a23a/multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057", size = 128173, upload-time = "2024-09-09T23:49:23.657Z" }, + { url = "https://files.pythonhosted.org/packages/45/79/3dbe8d35fc99f5ea610813a72ab55f426cb9cf482f860fa8496e5409be11/multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657", size = 122654, upload-time = "2024-09-09T23:49:25.7Z" }, + { url = "https://files.pythonhosted.org/packages/97/cb/209e735eeab96e1b160825b5d0b36c56d3862abff828fc43999bb957dcad/multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28", size = 133197, upload-time = "2024-09-09T23:49:27.906Z" }, + { url = "https://files.pythonhosted.org/packages/e4/3a/a13808a7ada62808afccea67837a79d00ad6581440015ef00f726d064c2d/multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972", size = 129754, upload-time = "2024-09-09T23:49:29.508Z" }, + { url = "https://files.pythonhosted.org/packages/77/dd/8540e139eafb240079242da8f8ffdf9d3f4b4ad1aac5a786cd4050923783/multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43", size = 126402, upload-time = "2024-09-09T23:49:31.243Z" }, + { url = "https://files.pythonhosted.org/packages/86/99/e82e1a275d8b1ea16d3a251474262258dbbe41c05cce0c01bceda1fc8ea5/multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada", size = 26421, upload-time = "2024-09-09T23:49:32.648Z" }, + { url = "https://files.pythonhosted.org/packages/86/1c/9fa630272355af7e4446a2c7550c259f11ee422ab2d30ff90a0a71cf3d9e/multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a", size = 28791, upload-time = "2024-09-09T23:49:34.725Z" }, + { url = "https://files.pythonhosted.org/packages/99/b7/b9e70fde2c0f0c9af4cc5277782a89b66d35948ea3369ec9f598358c3ac5/multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506", size = 10051, upload-time = "2024-09-09T23:49:36.506Z" }, ] [[package]] name = "mypy" -version = "1.14.1" +version = "1.15.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mypy-extensions" }, { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/eb/2c92d8ea1e684440f54fa49ac5d9a5f19967b7b472a281f419e69a8d228e/mypy-1.14.1.tar.gz", hash = "sha256:7ec88144fe9b510e8475ec2f5f251992690fcf89ccb4500b214b4226abcd32d6", size = 3216051 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/7a/87ae2adb31d68402da6da1e5f30c07ea6063e9f09b5e7cfc9dfa44075e74/mypy-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52686e37cf13d559f668aa398dd7ddf1f92c5d613e4f8cb262be2fb4fedb0fcb", size = 11211002 }, - { url = "https://files.pythonhosted.org/packages/e1/23/eada4c38608b444618a132be0d199b280049ded278b24cbb9d3fc59658e4/mypy-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1fb545ca340537d4b45d3eecdb3def05e913299ca72c290326be19b3804b39c0", size = 10358400 }, - { url = "https://files.pythonhosted.org/packages/43/c9/d6785c6f66241c62fd2992b05057f404237deaad1566545e9f144ced07f5/mypy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90716d8b2d1f4cd503309788e51366f07c56635a3309b0f6a32547eaaa36a64d", size = 12095172 }, - { url = "https://files.pythonhosted.org/packages/c3/62/daa7e787770c83c52ce2aaf1a111eae5893de9e004743f51bfcad9e487ec/mypy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ae753f5c9fef278bcf12e1a564351764f2a6da579d4a81347e1d5a15819997b", size = 12828732 }, - { url = "https://files.pythonhosted.org/packages/1b/a2/5fb18318a3637f29f16f4e41340b795da14f4751ef4f51c99ff39ab62e52/mypy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0fe0f5feaafcb04505bcf439e991c6d8f1bf8b15f12b05feeed96e9e7bf1427", size = 13012197 }, - { url = "https://files.pythonhosted.org/packages/28/99/e153ce39105d164b5f02c06c35c7ba958aaff50a2babba7d080988b03fe7/mypy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:7d54bd85b925e501c555a3227f3ec0cfc54ee8b6930bd6141ec872d1c572f81f", size = 9780836 }, - { url = "https://files.pythonhosted.org/packages/da/11/a9422850fd506edbcdc7f6090682ecceaf1f87b9dd847f9df79942da8506/mypy-1.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f995e511de847791c3b11ed90084a7a0aafdc074ab88c5a9711622fe4751138c", size = 11120432 }, - { url = "https://files.pythonhosted.org/packages/b6/9e/47e450fd39078d9c02d620545b2cb37993a8a8bdf7db3652ace2f80521ca/mypy-1.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d64169ec3b8461311f8ce2fd2eb5d33e2d0f2c7b49116259c51d0d96edee48d1", size = 10279515 }, - { url = "https://files.pythonhosted.org/packages/01/b5/6c8d33bd0f851a7692a8bfe4ee75eb82b6983a3cf39e5e32a5d2a723f0c1/mypy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba24549de7b89b6381b91fbc068d798192b1b5201987070319889e93038967a8", size = 12025791 }, - { url = "https://files.pythonhosted.org/packages/f0/4c/e10e2c46ea37cab5c471d0ddaaa9a434dc1d28650078ac1b56c2d7b9b2e4/mypy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:183cf0a45457d28ff9d758730cd0210419ac27d4d3f285beda038c9083363b1f", size = 12749203 }, - { url = "https://files.pythonhosted.org/packages/88/55/beacb0c69beab2153a0f57671ec07861d27d735a0faff135a494cd4f5020/mypy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f2a0ecc86378f45347f586e4163d1769dd81c5a223d577fe351f26b179e148b1", size = 12885900 }, - { url = "https://files.pythonhosted.org/packages/a2/75/8c93ff7f315c4d086a2dfcde02f713004357d70a163eddb6c56a6a5eff40/mypy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:ad3301ebebec9e8ee7135d8e3109ca76c23752bac1e717bc84cd3836b4bf3eae", size = 9777869 }, - { url = "https://files.pythonhosted.org/packages/43/1b/b38c079609bb4627905b74fc6a49849835acf68547ac33d8ceb707de5f52/mypy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:30ff5ef8519bbc2e18b3b54521ec319513a26f1bba19a7582e7b1f58a6e69f14", size = 11266668 }, - { url = "https://files.pythonhosted.org/packages/6b/75/2ed0d2964c1ffc9971c729f7a544e9cd34b2cdabbe2d11afd148d7838aa2/mypy-1.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb9f255c18052343c70234907e2e532bc7e55a62565d64536dbc7706a20b78b9", size = 10254060 }, - { url = "https://files.pythonhosted.org/packages/a1/5f/7b8051552d4da3c51bbe8fcafffd76a6823779101a2b198d80886cd8f08e/mypy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b4e3413e0bddea671012b063e27591b953d653209e7a4fa5e48759cda77ca11", size = 11933167 }, - { url = "https://files.pythonhosted.org/packages/04/90/f53971d3ac39d8b68bbaab9a4c6c58c8caa4d5fd3d587d16f5927eeeabe1/mypy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:553c293b1fbdebb6c3c4030589dab9fafb6dfa768995a453d8a5d3b23784af2e", size = 12864341 }, - { url = "https://files.pythonhosted.org/packages/03/d2/8bc0aeaaf2e88c977db41583559319f1821c069e943ada2701e86d0430b7/mypy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fad79bfe3b65fe6a1efaed97b445c3d37f7be9fdc348bdb2d7cac75579607c89", size = 12972991 }, - { url = "https://files.pythonhosted.org/packages/6f/17/07815114b903b49b0f2cf7499f1c130e5aa459411596668267535fe9243c/mypy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:8fa2220e54d2946e94ab6dbb3ba0a992795bd68b16dc852db33028df2b00191b", size = 9879016 }, - { url = "https://files.pythonhosted.org/packages/9e/15/bb6a686901f59222275ab228453de741185f9d54fecbaacec041679496c6/mypy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:92c3ed5afb06c3a8e188cb5da4984cab9ec9a77ba956ee419c68a388b4595255", size = 11252097 }, - { url = "https://files.pythonhosted.org/packages/f8/b3/8b0f74dfd072c802b7fa368829defdf3ee1566ba74c32a2cb2403f68024c/mypy-1.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dbec574648b3e25f43d23577309b16534431db4ddc09fda50841f1e34e64ed34", size = 10239728 }, - { url = "https://files.pythonhosted.org/packages/c5/9b/4fd95ab20c52bb5b8c03cc49169be5905d931de17edfe4d9d2986800b52e/mypy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c6d94b16d62eb3e947281aa7347d78236688e21081f11de976376cf010eb31a", size = 11924965 }, - { url = "https://files.pythonhosted.org/packages/56/9d/4a236b9c57f5d8f08ed346914b3f091a62dd7e19336b2b2a0d85485f82ff/mypy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d4b19b03fdf54f3c5b2fa474c56b4c13c9dbfb9a2db4370ede7ec11a2c5927d9", size = 12867660 }, - { url = "https://files.pythonhosted.org/packages/40/88/a61a5497e2f68d9027de2bb139c7bb9abaeb1be1584649fa9d807f80a338/mypy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0c911fde686394753fff899c409fd4e16e9b294c24bfd5e1ea4675deae1ac6fd", size = 12969198 }, - { url = "https://files.pythonhosted.org/packages/54/da/3d6fc5d92d324701b0c23fb413c853892bfe0e1dbe06c9138037d459756b/mypy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8b21525cb51671219f5307be85f7e646a153e5acc656e5cebf64bfa076c50107", size = 9885276 }, - { url = "https://files.pythonhosted.org/packages/ca/1f/186d133ae2514633f8558e78cd658070ba686c0e9275c5a5c24a1e1f0d67/mypy-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3888a1816d69f7ab92092f785a462944b3ca16d7c470d564165fe703b0970c35", size = 11200493 }, - { url = "https://files.pythonhosted.org/packages/af/fc/4842485d034e38a4646cccd1369f6b1ccd7bc86989c52770d75d719a9941/mypy-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46c756a444117c43ee984bd055db99e498bc613a70bbbc120272bd13ca579fbc", size = 10357702 }, - { url = "https://files.pythonhosted.org/packages/b4/e6/457b83f2d701e23869cfec013a48a12638f75b9d37612a9ddf99072c1051/mypy-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:27fc248022907e72abfd8e22ab1f10e903915ff69961174784a3900a8cba9ad9", size = 12091104 }, - { url = "https://files.pythonhosted.org/packages/f1/bf/76a569158db678fee59f4fd30b8e7a0d75bcbaeef49edd882a0d63af6d66/mypy-1.14.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:499d6a72fb7e5de92218db961f1a66d5f11783f9ae549d214617edab5d4dbdbb", size = 12830167 }, - { url = "https://files.pythonhosted.org/packages/43/bc/0bc6b694b3103de9fed61867f1c8bd33336b913d16831431e7cb48ef1c92/mypy-1.14.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57961db9795eb566dc1d1b4e9139ebc4c6b0cb6e7254ecde69d1552bf7613f60", size = 13013834 }, - { url = "https://files.pythonhosted.org/packages/b0/79/5f5ec47849b6df1e6943d5fd8e6632fbfc04b4fd4acfa5a5a9535d11b4e2/mypy-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:07ba89fdcc9451f2ebb02853deb6aaaa3d2239a236669a63ab3801bbf923ef5c", size = 9781231 }, - { url = "https://files.pythonhosted.org/packages/a0/b5/32dd67b69a16d088e533962e5044e51004176a9952419de0370cdaead0f8/mypy-1.14.1-py3-none-any.whl", hash = "sha256:b66a60cc4073aeb8ae00057f9c1f64d49e90f918fbcef9a977eb121da8b8f1d1", size = 2752905 }, +sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717, upload-time = "2025-02-05T03:50:34.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/f8/65a7ce8d0e09b6329ad0c8d40330d100ea343bd4dd04c4f8ae26462d0a17/mypy-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:979e4e1a006511dacf628e36fadfecbcc0160a8af6ca7dad2f5025529e082c13", size = 10738433, upload-time = "2025-02-05T03:49:29.145Z" }, + { url = "https://files.pythonhosted.org/packages/b4/95/9c0ecb8eacfe048583706249439ff52105b3f552ea9c4024166c03224270/mypy-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4bb0e1bd29f7d34efcccd71cf733580191e9a264a2202b0239da95984c5b559", size = 9861472, upload-time = "2025-02-05T03:49:16.986Z" }, + { url = "https://files.pythonhosted.org/packages/84/09/9ec95e982e282e20c0d5407bc65031dfd0f0f8ecc66b69538296e06fcbee/mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b", size = 11611424, upload-time = "2025-02-05T03:49:46.908Z" }, + { url = "https://files.pythonhosted.org/packages/78/13/f7d14e55865036a1e6a0a69580c240f43bc1f37407fe9235c0d4ef25ffb0/mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3", size = 12365450, upload-time = "2025-02-05T03:50:05.89Z" }, + { url = "https://files.pythonhosted.org/packages/48/e1/301a73852d40c241e915ac6d7bcd7fedd47d519246db2d7b86b9d7e7a0cb/mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b", size = 12551765, upload-time = "2025-02-05T03:49:33.56Z" }, + { url = "https://files.pythonhosted.org/packages/77/ba/c37bc323ae5fe7f3f15a28e06ab012cd0b7552886118943e90b15af31195/mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828", size = 9274701, upload-time = "2025-02-05T03:49:38.981Z" }, + { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338, upload-time = "2025-02-05T03:50:17.287Z" }, + { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540, upload-time = "2025-02-05T03:49:51.21Z" }, + { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051, upload-time = "2025-02-05T03:50:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751, upload-time = "2025-02-05T03:49:42.408Z" }, + { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783, upload-time = "2025-02-05T03:49:07.707Z" }, + { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618, upload-time = "2025-02-05T03:49:54.581Z" }, + { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981, upload-time = "2025-02-05T03:50:28.25Z" }, + { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175, upload-time = "2025-02-05T03:50:13.411Z" }, + { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675, upload-time = "2025-02-05T03:50:31.421Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020, upload-time = "2025-02-05T03:48:48.705Z" }, + { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582, upload-time = "2025-02-05T03:49:03.628Z" }, + { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614, upload-time = "2025-02-05T03:50:00.313Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9b/fd2e05d6ffff24d912f150b87db9e364fa8282045c875654ce7e32fffa66/mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445", size = 10788592, upload-time = "2025-02-05T03:48:55.789Z" }, + { url = "https://files.pythonhosted.org/packages/74/37/b246d711c28a03ead1fd906bbc7106659aed7c089d55fe40dd58db812628/mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d", size = 9753611, upload-time = "2025-02-05T03:48:44.581Z" }, + { url = "https://files.pythonhosted.org/packages/a6/ac/395808a92e10cfdac8003c3de9a2ab6dc7cde6c0d2a4df3df1b815ffd067/mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5", size = 11438443, upload-time = "2025-02-05T03:49:25.514Z" }, + { url = "https://files.pythonhosted.org/packages/d2/8b/801aa06445d2de3895f59e476f38f3f8d610ef5d6908245f07d002676cbf/mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036", size = 12402541, upload-time = "2025-02-05T03:49:57.623Z" }, + { url = "https://files.pythonhosted.org/packages/c7/67/5a4268782eb77344cc613a4cf23540928e41f018a9a1ec4c6882baf20ab8/mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357", size = 12494348, upload-time = "2025-02-05T03:48:52.361Z" }, + { url = "https://files.pythonhosted.org/packages/83/3e/57bb447f7bbbfaabf1712d96f9df142624a386d98fb026a761532526057e/mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf", size = 9373648, upload-time = "2025-02-05T03:49:11.395Z" }, + { url = "https://files.pythonhosted.org/packages/5a/fa/79cf41a55b682794abe71372151dbbf856e3008f6767057229e6649d294a/mypy-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e601a7fa172c2131bff456bb3ee08a88360760d0d2f8cbd7a75a65497e2df078", size = 10737129, upload-time = "2025-02-05T03:50:24.509Z" }, + { url = "https://files.pythonhosted.org/packages/d3/33/dd8feb2597d648de29e3da0a8bf4e1afbda472964d2a4a0052203a6f3594/mypy-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:712e962a6357634fef20412699a3655c610110e01cdaa6180acec7fc9f8513ba", size = 9856335, upload-time = "2025-02-05T03:49:36.398Z" }, + { url = "https://files.pythonhosted.org/packages/e4/b5/74508959c1b06b96674b364ffeb7ae5802646b32929b7701fc6b18447592/mypy-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95579473af29ab73a10bada2f9722856792a36ec5af5399b653aa28360290a5", size = 11611935, upload-time = "2025-02-05T03:49:14.154Z" }, + { url = "https://files.pythonhosted.org/packages/6c/53/da61b9d9973efcd6507183fdad96606996191657fe79701b2c818714d573/mypy-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f8722560a14cde92fdb1e31597760dc35f9f5524cce17836c0d22841830fd5b", size = 12365827, upload-time = "2025-02-05T03:48:59.458Z" }, + { url = "https://files.pythonhosted.org/packages/c1/72/965bd9ee89540c79a25778cc080c7e6ef40aa1eeac4d52cec7eae6eb5228/mypy-1.15.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fbb8da62dc352133d7d7ca90ed2fb0e9d42bb1a32724c287d3c76c58cbaa9c2", size = 12541924, upload-time = "2025-02-05T03:50:03.12Z" }, + { url = "https://files.pythonhosted.org/packages/46/d0/f41645c2eb263e6c77ada7d76f894c580c9ddb20d77f0c24d34273a4dab2/mypy-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:d10d994b41fb3497719bbf866f227b3489048ea4bbbb5015357db306249f7980", size = 9271176, upload-time = "2025-02-05T03:50:10.86Z" }, + { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777, upload-time = "2025-02-05T03:50:08.348Z" }, ] [[package]] name = "mypy-extensions" version = "1.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } +sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433, upload-time = "2023-02-04T12:11:27.157Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, + { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695, upload-time = "2023-02-04T12:11:25.002Z" }, ] [[package]] name = "nodeenv" version = "1.9.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, ] [[package]] name = "packaging" version = "24.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950, upload-time = "2024-11-08T09:47:47.202Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451, upload-time = "2024-11-08T09:47:44.722Z" }, ] [[package]] name = "paginate" version = "0.5.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload-time = "2024-08-25T14:17:24.139Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload-time = "2024-08-25T14:17:22.55Z" }, ] [[package]] name = "pathspec" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, ] [[package]] name = "pillow" version = "10.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/69/a31cccd538ca0b5272be2a38347f8839b97a14be104ea08b0db92f749c74/pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", size = 3509271 }, - { url = "https://files.pythonhosted.org/packages/9a/9e/4143b907be8ea0bce215f2ae4f7480027473f8b61fcedfda9d851082a5d2/pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", size = 3375658 }, - { url = "https://files.pythonhosted.org/packages/8a/25/1fc45761955f9359b1169aa75e241551e74ac01a09f487adaaf4c3472d11/pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", size = 4332075 }, - { url = "https://files.pythonhosted.org/packages/5e/dd/425b95d0151e1d6c951f45051112394f130df3da67363b6bc75dc4c27aba/pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", size = 4444808 }, - { url = "https://files.pythonhosted.org/packages/b1/84/9a15cc5726cbbfe7f9f90bfb11f5d028586595907cd093815ca6644932e3/pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", size = 4356290 }, - { url = "https://files.pythonhosted.org/packages/b5/5b/6651c288b08df3b8c1e2f8c1152201e0b25d240e22ddade0f1e242fc9fa0/pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", size = 4525163 }, - { url = "https://files.pythonhosted.org/packages/07/8b/34854bf11a83c248505c8cb0fcf8d3d0b459a2246c8809b967963b6b12ae/pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", size = 4463100 }, - { url = "https://files.pythonhosted.org/packages/78/63/0632aee4e82476d9cbe5200c0cdf9ba41ee04ed77887432845264d81116d/pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", size = 4592880 }, - { url = "https://files.pythonhosted.org/packages/df/56/b8663d7520671b4398b9d97e1ed9f583d4afcbefbda3c6188325e8c297bd/pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", size = 2235218 }, - { url = "https://files.pythonhosted.org/packages/f4/72/0203e94a91ddb4a9d5238434ae6c1ca10e610e8487036132ea9bf806ca2a/pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", size = 2554487 }, - { url = "https://files.pythonhosted.org/packages/bd/52/7e7e93d7a6e4290543f17dc6f7d3af4bd0b3dd9926e2e8a35ac2282bc5f4/pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1", size = 2243219 }, - { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265 }, - { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655 }, - { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304 }, - { url = "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", size = 4452804 }, - { url = "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", size = 4365126 }, - { url = "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", size = 4533541 }, - { url = "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", size = 4471616 }, - { url = "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", size = 4600802 }, - { url = "https://files.pythonhosted.org/packages/4d/d7/a44f193d4c26e58ee5d2d9db3d4854b2cfb5b5e08d360a5e03fe987c0086/pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", size = 2235213 }, - { url = "https://files.pythonhosted.org/packages/c1/d0/5866318eec2b801cdb8c82abf190c8343d8a1cd8bf5a0c17444a6f268291/pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", size = 2554498 }, - { url = "https://files.pythonhosted.org/packages/d4/c8/310ac16ac2b97e902d9eb438688de0d961660a87703ad1561fd3dfbd2aa0/pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", size = 2243219 }, - { url = "https://files.pythonhosted.org/packages/05/cb/0353013dc30c02a8be34eb91d25e4e4cf594b59e5a55ea1128fde1e5f8ea/pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", size = 3509350 }, - { url = "https://files.pythonhosted.org/packages/e7/cf/5c558a0f247e0bf9cec92bff9b46ae6474dd736f6d906315e60e4075f737/pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", size = 3374980 }, - { url = "https://files.pythonhosted.org/packages/84/48/6e394b86369a4eb68b8a1382c78dc092245af517385c086c5094e3b34428/pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", size = 4343799 }, - { url = "https://files.pythonhosted.org/packages/3b/f3/a8c6c11fa84b59b9df0cd5694492da8c039a24cd159f0f6918690105c3be/pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", size = 4459973 }, - { url = "https://files.pythonhosted.org/packages/7d/1b/c14b4197b80150fb64453585247e6fb2e1d93761fa0fa9cf63b102fde822/pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", size = 4370054 }, - { url = "https://files.pythonhosted.org/packages/55/77/40daddf677897a923d5d33329acd52a2144d54a9644f2a5422c028c6bf2d/pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", size = 4539484 }, - { url = "https://files.pythonhosted.org/packages/40/54/90de3e4256b1207300fb2b1d7168dd912a2fb4b2401e439ba23c2b2cabde/pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", size = 4477375 }, - { url = "https://files.pythonhosted.org/packages/13/24/1bfba52f44193860918ff7c93d03d95e3f8748ca1de3ceaf11157a14cf16/pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", size = 4608773 }, - { url = "https://files.pythonhosted.org/packages/55/04/5e6de6e6120451ec0c24516c41dbaf80cce1b6451f96561235ef2429da2e/pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", size = 2235690 }, - { url = "https://files.pythonhosted.org/packages/74/0a/d4ce3c44bca8635bd29a2eab5aa181b654a734a29b263ca8efe013beea98/pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", size = 2554951 }, - { url = "https://files.pythonhosted.org/packages/b5/ca/184349ee40f2e92439be9b3502ae6cfc43ac4b50bc4fc6b3de7957563894/pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", size = 2243427 }, - { url = "https://files.pythonhosted.org/packages/c3/00/706cebe7c2c12a6318aabe5d354836f54adff7156fd9e1bd6c89f4ba0e98/pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", size = 3525685 }, - { url = "https://files.pythonhosted.org/packages/cf/76/f658cbfa49405e5ecbfb9ba42d07074ad9792031267e782d409fd8fe7c69/pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", size = 3374883 }, - { url = "https://files.pythonhosted.org/packages/46/2b/99c28c4379a85e65378211971c0b430d9c7234b1ec4d59b2668f6299e011/pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", size = 4339837 }, - { url = "https://files.pythonhosted.org/packages/f1/74/b1ec314f624c0c43711fdf0d8076f82d9d802afd58f1d62c2a86878e8615/pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", size = 4455562 }, - { url = "https://files.pythonhosted.org/packages/4a/2a/4b04157cb7b9c74372fa867096a1607e6fedad93a44deeff553ccd307868/pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", size = 4366761 }, - { url = "https://files.pythonhosted.org/packages/ac/7b/8f1d815c1a6a268fe90481232c98dd0e5fa8c75e341a75f060037bd5ceae/pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", size = 4536767 }, - { url = "https://files.pythonhosted.org/packages/e5/77/05fa64d1f45d12c22c314e7b97398ffb28ef2813a485465017b7978b3ce7/pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", size = 4477989 }, - { url = "https://files.pythonhosted.org/packages/12/63/b0397cfc2caae05c3fb2f4ed1b4fc4fc878f0243510a7a6034ca59726494/pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", size = 4610255 }, - { url = "https://files.pythonhosted.org/packages/7b/f9/cfaa5082ca9bc4a6de66ffe1c12c2d90bf09c309a5f52b27759a596900e7/pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", size = 2235603 }, - { url = "https://files.pythonhosted.org/packages/01/6a/30ff0eef6e0c0e71e55ded56a38d4859bf9d3634a94a88743897b5f96936/pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", size = 2554972 }, - { url = "https://files.pythonhosted.org/packages/48/2c/2e0a52890f269435eee38b21c8218e102c621fe8d8df8b9dd06fabf879ba/pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", size = 2243375 }, - { url = "https://files.pythonhosted.org/packages/31/85/955fa5400fa8039921f630372cfe5056eed6e1b8e0430ee4507d7de48832/pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d", size = 3509283 }, - { url = "https://files.pythonhosted.org/packages/23/9c/343827267eb28d41cd82b4180d33b10d868af9077abcec0af9793aa77d2d/pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b", size = 3375691 }, - { url = "https://files.pythonhosted.org/packages/60/a3/7ebbeabcd341eab722896d1a5b59a3df98c4b4d26cf4b0385f8aa94296f7/pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd", size = 4328295 }, - { url = "https://files.pythonhosted.org/packages/32/3f/c02268d0c6fb6b3958bdda673c17b315c821d97df29ae6969f20fb49388a/pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126", size = 4440810 }, - { url = "https://files.pythonhosted.org/packages/67/5d/1c93c8cc35f2fdd3d6cc7e4ad72d203902859a2867de6ad957d9b708eb8d/pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b", size = 4352283 }, - { url = "https://files.pythonhosted.org/packages/bc/a8/8655557c9c7202b8abbd001f61ff36711cefaf750debcaa1c24d154ef602/pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c", size = 4521800 }, - { url = "https://files.pythonhosted.org/packages/58/78/6f95797af64d137124f68af1bdaa13b5332da282b86031f6fa70cf368261/pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1", size = 4459177 }, - { url = "https://files.pythonhosted.org/packages/8a/6d/2b3ce34f1c4266d79a78c9a51d1289a33c3c02833fe294ef0dcbb9cba4ed/pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df", size = 4589079 }, - { url = "https://files.pythonhosted.org/packages/e3/e0/456258c74da1ff5bf8ef1eab06a95ca994d8b9ed44c01d45c3f8cbd1db7e/pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef", size = 2235247 }, - { url = "https://files.pythonhosted.org/packages/37/f8/bef952bdb32aa53741f58bf21798642209e994edc3f6598f337f23d5400a/pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5", size = 2554479 }, - { url = "https://files.pythonhosted.org/packages/bb/8e/805201619cad6651eef5fc1fdef913804baf00053461522fabbc5588ea12/pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e", size = 2243226 }, - { url = "https://files.pythonhosted.org/packages/38/30/095d4f55f3a053392f75e2eae45eba3228452783bab3d9a920b951ac495c/pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", size = 3493889 }, - { url = "https://files.pythonhosted.org/packages/f3/e8/4ff79788803a5fcd5dc35efdc9386af153569853767bff74540725b45863/pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", size = 3346160 }, - { url = "https://files.pythonhosted.org/packages/d7/ac/4184edd511b14f760c73f5bb8a5d6fd85c591c8aff7c2229677a355c4179/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", size = 3435020 }, - { url = "https://files.pythonhosted.org/packages/da/21/1749cd09160149c0a246a81d646e05f35041619ce76f6493d6a96e8d1103/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", size = 3490539 }, - { url = "https://files.pythonhosted.org/packages/b6/f5/f71fe1888b96083b3f6dfa0709101f61fc9e972c0c8d04e9d93ccef2a045/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", size = 3476125 }, - { url = "https://files.pythonhosted.org/packages/96/b9/c0362c54290a31866c3526848583a2f45a535aa9d725fd31e25d318c805f/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", size = 3579373 }, - { url = "https://files.pythonhosted.org/packages/52/3b/ce7a01026a7cf46e5452afa86f97a5e88ca97f562cafa76570178ab56d8d/pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", size = 2554661 }, - { url = "https://files.pythonhosted.org/packages/e1/1f/5a9fcd6ced51633c22481417e11b1b47d723f64fb536dfd67c015eb7f0ab/pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b", size = 3493850 }, - { url = "https://files.pythonhosted.org/packages/cb/e6/3ea4755ed5320cb62aa6be2f6de47b058c6550f752dd050e86f694c59798/pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908", size = 3346118 }, - { url = "https://files.pythonhosted.org/packages/0a/22/492f9f61e4648422b6ca39268ec8139277a5b34648d28f400faac14e0f48/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b", size = 3434958 }, - { url = "https://files.pythonhosted.org/packages/f9/19/559a48ad4045704bb0547965b9a9345f5cd461347d977a56d178db28819e/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8", size = 3490340 }, - { url = "https://files.pythonhosted.org/packages/d9/de/cebaca6fb79905b3a1aa0281d238769df3fb2ede34fd7c0caa286575915a/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a", size = 3476048 }, - { url = "https://files.pythonhosted.org/packages/71/f0/86d5b2f04693b0116a01d75302b0a307800a90d6c351a8aa4f8ae76cd499/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27", size = 3579366 }, - { url = "https://files.pythonhosted.org/packages/37/ae/2dbfc38cc4fd14aceea14bc440d5151b21f64c4c3ba3f6f4191610b7ee5d/pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3", size = 2554652 }, +sdist = { url = "https://files.pythonhosted.org/packages/cd/74/ad3d526f3bf7b6d3f408b73fde271ec69dfac8b81341a318ce825f2b3812/pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06", size = 46555059, upload-time = "2024-07-01T09:48:43.583Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/69/a31cccd538ca0b5272be2a38347f8839b97a14be104ea08b0db92f749c74/pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e", size = 3509271, upload-time = "2024-07-01T09:45:22.07Z" }, + { url = "https://files.pythonhosted.org/packages/9a/9e/4143b907be8ea0bce215f2ae4f7480027473f8b61fcedfda9d851082a5d2/pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d", size = 3375658, upload-time = "2024-07-01T09:45:25.292Z" }, + { url = "https://files.pythonhosted.org/packages/8a/25/1fc45761955f9359b1169aa75e241551e74ac01a09f487adaaf4c3472d11/pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856", size = 4332075, upload-time = "2024-07-01T09:45:27.94Z" }, + { url = "https://files.pythonhosted.org/packages/5e/dd/425b95d0151e1d6c951f45051112394f130df3da67363b6bc75dc4c27aba/pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f", size = 4444808, upload-time = "2024-07-01T09:45:30.305Z" }, + { url = "https://files.pythonhosted.org/packages/b1/84/9a15cc5726cbbfe7f9f90bfb11f5d028586595907cd093815ca6644932e3/pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b", size = 4356290, upload-time = "2024-07-01T09:45:32.868Z" }, + { url = "https://files.pythonhosted.org/packages/b5/5b/6651c288b08df3b8c1e2f8c1152201e0b25d240e22ddade0f1e242fc9fa0/pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc", size = 4525163, upload-time = "2024-07-01T09:45:35.279Z" }, + { url = "https://files.pythonhosted.org/packages/07/8b/34854bf11a83c248505c8cb0fcf8d3d0b459a2246c8809b967963b6b12ae/pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e", size = 4463100, upload-time = "2024-07-01T09:45:37.74Z" }, + { url = "https://files.pythonhosted.org/packages/78/63/0632aee4e82476d9cbe5200c0cdf9ba41ee04ed77887432845264d81116d/pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46", size = 4592880, upload-time = "2024-07-01T09:45:39.89Z" }, + { url = "https://files.pythonhosted.org/packages/df/56/b8663d7520671b4398b9d97e1ed9f583d4afcbefbda3c6188325e8c297bd/pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984", size = 2235218, upload-time = "2024-07-01T09:45:42.771Z" }, + { url = "https://files.pythonhosted.org/packages/f4/72/0203e94a91ddb4a9d5238434ae6c1ca10e610e8487036132ea9bf806ca2a/pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141", size = 2554487, upload-time = "2024-07-01T09:45:45.176Z" }, + { url = "https://files.pythonhosted.org/packages/bd/52/7e7e93d7a6e4290543f17dc6f7d3af4bd0b3dd9926e2e8a35ac2282bc5f4/pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1", size = 2243219, upload-time = "2024-07-01T09:45:47.274Z" }, + { url = "https://files.pythonhosted.org/packages/a7/62/c9449f9c3043c37f73e7487ec4ef0c03eb9c9afc91a92b977a67b3c0bbc5/pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c", size = 3509265, upload-time = "2024-07-01T09:45:49.812Z" }, + { url = "https://files.pythonhosted.org/packages/f4/5f/491dafc7bbf5a3cc1845dc0430872e8096eb9e2b6f8161509d124594ec2d/pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be", size = 3375655, upload-time = "2024-07-01T09:45:52.462Z" }, + { url = "https://files.pythonhosted.org/packages/73/d5/c4011a76f4207a3c151134cd22a1415741e42fa5ddecec7c0182887deb3d/pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3", size = 4340304, upload-time = "2024-07-01T09:45:55.006Z" }, + { url = "https://files.pythonhosted.org/packages/ac/10/c67e20445a707f7a610699bba4fe050583b688d8cd2d202572b257f46600/pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6", size = 4452804, upload-time = "2024-07-01T09:45:58.437Z" }, + { url = "https://files.pythonhosted.org/packages/a9/83/6523837906d1da2b269dee787e31df3b0acb12e3d08f024965a3e7f64665/pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe", size = 4365126, upload-time = "2024-07-01T09:46:00.713Z" }, + { url = "https://files.pythonhosted.org/packages/ba/e5/8c68ff608a4203085158cff5cc2a3c534ec384536d9438c405ed6370d080/pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319", size = 4533541, upload-time = "2024-07-01T09:46:03.235Z" }, + { url = "https://files.pythonhosted.org/packages/f4/7c/01b8dbdca5bc6785573f4cee96e2358b0918b7b2c7b60d8b6f3abf87a070/pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d", size = 4471616, upload-time = "2024-07-01T09:46:05.356Z" }, + { url = "https://files.pythonhosted.org/packages/c8/57/2899b82394a35a0fbfd352e290945440e3b3785655a03365c0ca8279f351/pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696", size = 4600802, upload-time = "2024-07-01T09:46:08.145Z" }, + { url = "https://files.pythonhosted.org/packages/4d/d7/a44f193d4c26e58ee5d2d9db3d4854b2cfb5b5e08d360a5e03fe987c0086/pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496", size = 2235213, upload-time = "2024-07-01T09:46:10.211Z" }, + { url = "https://files.pythonhosted.org/packages/c1/d0/5866318eec2b801cdb8c82abf190c8343d8a1cd8bf5a0c17444a6f268291/pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91", size = 2554498, upload-time = "2024-07-01T09:46:12.685Z" }, + { url = "https://files.pythonhosted.org/packages/d4/c8/310ac16ac2b97e902d9eb438688de0d961660a87703ad1561fd3dfbd2aa0/pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22", size = 2243219, upload-time = "2024-07-01T09:46:14.83Z" }, + { url = "https://files.pythonhosted.org/packages/05/cb/0353013dc30c02a8be34eb91d25e4e4cf594b59e5a55ea1128fde1e5f8ea/pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94", size = 3509350, upload-time = "2024-07-01T09:46:17.177Z" }, + { url = "https://files.pythonhosted.org/packages/e7/cf/5c558a0f247e0bf9cec92bff9b46ae6474dd736f6d906315e60e4075f737/pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597", size = 3374980, upload-time = "2024-07-01T09:46:19.169Z" }, + { url = "https://files.pythonhosted.org/packages/84/48/6e394b86369a4eb68b8a1382c78dc092245af517385c086c5094e3b34428/pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80", size = 4343799, upload-time = "2024-07-01T09:46:21.883Z" }, + { url = "https://files.pythonhosted.org/packages/3b/f3/a8c6c11fa84b59b9df0cd5694492da8c039a24cd159f0f6918690105c3be/pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca", size = 4459973, upload-time = "2024-07-01T09:46:24.321Z" }, + { url = "https://files.pythonhosted.org/packages/7d/1b/c14b4197b80150fb64453585247e6fb2e1d93761fa0fa9cf63b102fde822/pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef", size = 4370054, upload-time = "2024-07-01T09:46:26.825Z" }, + { url = "https://files.pythonhosted.org/packages/55/77/40daddf677897a923d5d33329acd52a2144d54a9644f2a5422c028c6bf2d/pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a", size = 4539484, upload-time = "2024-07-01T09:46:29.355Z" }, + { url = "https://files.pythonhosted.org/packages/40/54/90de3e4256b1207300fb2b1d7168dd912a2fb4b2401e439ba23c2b2cabde/pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b", size = 4477375, upload-time = "2024-07-01T09:46:31.756Z" }, + { url = "https://files.pythonhosted.org/packages/13/24/1bfba52f44193860918ff7c93d03d95e3f8748ca1de3ceaf11157a14cf16/pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9", size = 4608773, upload-time = "2024-07-01T09:46:33.73Z" }, + { url = "https://files.pythonhosted.org/packages/55/04/5e6de6e6120451ec0c24516c41dbaf80cce1b6451f96561235ef2429da2e/pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42", size = 2235690, upload-time = "2024-07-01T09:46:36.587Z" }, + { url = "https://files.pythonhosted.org/packages/74/0a/d4ce3c44bca8635bd29a2eab5aa181b654a734a29b263ca8efe013beea98/pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a", size = 2554951, upload-time = "2024-07-01T09:46:38.777Z" }, + { url = "https://files.pythonhosted.org/packages/b5/ca/184349ee40f2e92439be9b3502ae6cfc43ac4b50bc4fc6b3de7957563894/pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9", size = 2243427, upload-time = "2024-07-01T09:46:43.15Z" }, + { url = "https://files.pythonhosted.org/packages/c3/00/706cebe7c2c12a6318aabe5d354836f54adff7156fd9e1bd6c89f4ba0e98/pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3", size = 3525685, upload-time = "2024-07-01T09:46:45.194Z" }, + { url = "https://files.pythonhosted.org/packages/cf/76/f658cbfa49405e5ecbfb9ba42d07074ad9792031267e782d409fd8fe7c69/pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb", size = 3374883, upload-time = "2024-07-01T09:46:47.331Z" }, + { url = "https://files.pythonhosted.org/packages/46/2b/99c28c4379a85e65378211971c0b430d9c7234b1ec4d59b2668f6299e011/pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70", size = 4339837, upload-time = "2024-07-01T09:46:49.647Z" }, + { url = "https://files.pythonhosted.org/packages/f1/74/b1ec314f624c0c43711fdf0d8076f82d9d802afd58f1d62c2a86878e8615/pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be", size = 4455562, upload-time = "2024-07-01T09:46:51.811Z" }, + { url = "https://files.pythonhosted.org/packages/4a/2a/4b04157cb7b9c74372fa867096a1607e6fedad93a44deeff553ccd307868/pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0", size = 4366761, upload-time = "2024-07-01T09:46:53.961Z" }, + { url = "https://files.pythonhosted.org/packages/ac/7b/8f1d815c1a6a268fe90481232c98dd0e5fa8c75e341a75f060037bd5ceae/pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc", size = 4536767, upload-time = "2024-07-01T09:46:56.664Z" }, + { url = "https://files.pythonhosted.org/packages/e5/77/05fa64d1f45d12c22c314e7b97398ffb28ef2813a485465017b7978b3ce7/pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a", size = 4477989, upload-time = "2024-07-01T09:46:58.977Z" }, + { url = "https://files.pythonhosted.org/packages/12/63/b0397cfc2caae05c3fb2f4ed1b4fc4fc878f0243510a7a6034ca59726494/pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309", size = 4610255, upload-time = "2024-07-01T09:47:01.189Z" }, + { url = "https://files.pythonhosted.org/packages/7b/f9/cfaa5082ca9bc4a6de66ffe1c12c2d90bf09c309a5f52b27759a596900e7/pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060", size = 2235603, upload-time = "2024-07-01T09:47:03.918Z" }, + { url = "https://files.pythonhosted.org/packages/01/6a/30ff0eef6e0c0e71e55ded56a38d4859bf9d3634a94a88743897b5f96936/pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea", size = 2554972, upload-time = "2024-07-01T09:47:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/48/2c/2e0a52890f269435eee38b21c8218e102c621fe8d8df8b9dd06fabf879ba/pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d", size = 2243375, upload-time = "2024-07-01T09:47:09.065Z" }, + { url = "https://files.pythonhosted.org/packages/31/85/955fa5400fa8039921f630372cfe5056eed6e1b8e0430ee4507d7de48832/pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d", size = 3509283, upload-time = "2024-07-01T09:47:36.394Z" }, + { url = "https://files.pythonhosted.org/packages/23/9c/343827267eb28d41cd82b4180d33b10d868af9077abcec0af9793aa77d2d/pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b", size = 3375691, upload-time = "2024-07-01T09:47:38.853Z" }, + { url = "https://files.pythonhosted.org/packages/60/a3/7ebbeabcd341eab722896d1a5b59a3df98c4b4d26cf4b0385f8aa94296f7/pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd", size = 4328295, upload-time = "2024-07-01T09:47:41.765Z" }, + { url = "https://files.pythonhosted.org/packages/32/3f/c02268d0c6fb6b3958bdda673c17b315c821d97df29ae6969f20fb49388a/pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126", size = 4440810, upload-time = "2024-07-01T09:47:44.27Z" }, + { url = "https://files.pythonhosted.org/packages/67/5d/1c93c8cc35f2fdd3d6cc7e4ad72d203902859a2867de6ad957d9b708eb8d/pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b", size = 4352283, upload-time = "2024-07-01T09:47:46.673Z" }, + { url = "https://files.pythonhosted.org/packages/bc/a8/8655557c9c7202b8abbd001f61ff36711cefaf750debcaa1c24d154ef602/pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c", size = 4521800, upload-time = "2024-07-01T09:47:48.813Z" }, + { url = "https://files.pythonhosted.org/packages/58/78/6f95797af64d137124f68af1bdaa13b5332da282b86031f6fa70cf368261/pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1", size = 4459177, upload-time = "2024-07-01T09:47:52.104Z" }, + { url = "https://files.pythonhosted.org/packages/8a/6d/2b3ce34f1c4266d79a78c9a51d1289a33c3c02833fe294ef0dcbb9cba4ed/pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df", size = 4589079, upload-time = "2024-07-01T09:47:54.999Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e0/456258c74da1ff5bf8ef1eab06a95ca994d8b9ed44c01d45c3f8cbd1db7e/pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef", size = 2235247, upload-time = "2024-07-01T09:47:57.666Z" }, + { url = "https://files.pythonhosted.org/packages/37/f8/bef952bdb32aa53741f58bf21798642209e994edc3f6598f337f23d5400a/pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5", size = 2554479, upload-time = "2024-07-01T09:47:59.881Z" }, + { url = "https://files.pythonhosted.org/packages/bb/8e/805201619cad6651eef5fc1fdef913804baf00053461522fabbc5588ea12/pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e", size = 2243226, upload-time = "2024-07-01T09:48:02.508Z" }, + { url = "https://files.pythonhosted.org/packages/38/30/095d4f55f3a053392f75e2eae45eba3228452783bab3d9a920b951ac495c/pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4", size = 3493889, upload-time = "2024-07-01T09:48:04.815Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e8/4ff79788803a5fcd5dc35efdc9386af153569853767bff74540725b45863/pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da", size = 3346160, upload-time = "2024-07-01T09:48:07.206Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ac/4184edd511b14f760c73f5bb8a5d6fd85c591c8aff7c2229677a355c4179/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026", size = 3435020, upload-time = "2024-07-01T09:48:09.66Z" }, + { url = "https://files.pythonhosted.org/packages/da/21/1749cd09160149c0a246a81d646e05f35041619ce76f6493d6a96e8d1103/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e", size = 3490539, upload-time = "2024-07-01T09:48:12.529Z" }, + { url = "https://files.pythonhosted.org/packages/b6/f5/f71fe1888b96083b3f6dfa0709101f61fc9e972c0c8d04e9d93ccef2a045/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5", size = 3476125, upload-time = "2024-07-01T09:48:14.891Z" }, + { url = "https://files.pythonhosted.org/packages/96/b9/c0362c54290a31866c3526848583a2f45a535aa9d725fd31e25d318c805f/pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885", size = 3579373, upload-time = "2024-07-01T09:48:17.601Z" }, + { url = "https://files.pythonhosted.org/packages/52/3b/ce7a01026a7cf46e5452afa86f97a5e88ca97f562cafa76570178ab56d8d/pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5", size = 2554661, upload-time = "2024-07-01T09:48:20.293Z" }, + { url = "https://files.pythonhosted.org/packages/e1/1f/5a9fcd6ced51633c22481417e11b1b47d723f64fb536dfd67c015eb7f0ab/pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b", size = 3493850, upload-time = "2024-07-01T09:48:23.03Z" }, + { url = "https://files.pythonhosted.org/packages/cb/e6/3ea4755ed5320cb62aa6be2f6de47b058c6550f752dd050e86f694c59798/pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908", size = 3346118, upload-time = "2024-07-01T09:48:25.256Z" }, + { url = "https://files.pythonhosted.org/packages/0a/22/492f9f61e4648422b6ca39268ec8139277a5b34648d28f400faac14e0f48/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b", size = 3434958, upload-time = "2024-07-01T09:48:28.078Z" }, + { url = "https://files.pythonhosted.org/packages/f9/19/559a48ad4045704bb0547965b9a9345f5cd461347d977a56d178db28819e/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8", size = 3490340, upload-time = "2024-07-01T09:48:30.734Z" }, + { url = "https://files.pythonhosted.org/packages/d9/de/cebaca6fb79905b3a1aa0281d238769df3fb2ede34fd7c0caa286575915a/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a", size = 3476048, upload-time = "2024-07-01T09:48:33.292Z" }, + { url = "https://files.pythonhosted.org/packages/71/f0/86d5b2f04693b0116a01d75302b0a307800a90d6c351a8aa4f8ae76cd499/pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27", size = 3579366, upload-time = "2024-07-01T09:48:36.527Z" }, + { url = "https://files.pythonhosted.org/packages/37/ae/2dbfc38cc4fd14aceea14bc440d5151b21f64c4c3ba3f6f4191610b7ee5d/pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3", size = 2554652, upload-time = "2024-07-01T09:48:38.789Z" }, ] [[package]] name = "platformdirs" version = "4.3.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } +sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302, upload-time = "2024-09-17T19:06:50.688Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, + { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439, upload-time = "2024-09-17T19:06:49.212Z" }, ] [[package]] name = "pluggy" version = "1.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955, upload-time = "2024-04-20T21:34:42.531Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556, upload-time = "2024-04-20T21:34:40.434Z" }, ] [[package]] name = "propcache" version = "0.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/c8/2a13f78d82211490855b2fb303b6721348d0787fdd9a12ac46d99d3acde1/propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64", size = 41735 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/a5/0ea64c9426959ef145a938e38c832fc551843481d356713ececa9a8a64e8/propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6", size = 79296 }, - { url = "https://files.pythonhosted.org/packages/76/5a/916db1aba735f55e5eca4733eea4d1973845cf77dfe67c2381a2ca3ce52d/propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2", size = 45622 }, - { url = "https://files.pythonhosted.org/packages/2d/62/685d3cf268b8401ec12b250b925b21d152b9d193b7bffa5fdc4815c392c2/propcache-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6445804cf4ec763dc70de65a3b0d9954e868609e83850a47ca4f0cb64bd79fea", size = 45133 }, - { url = "https://files.pythonhosted.org/packages/4d/3d/31c9c29ee7192defc05aa4d01624fd85a41cf98e5922aaed206017329944/propcache-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9479aa06a793c5aeba49ce5c5692ffb51fcd9a7016e017d555d5e2b0045d212", size = 204809 }, - { url = "https://files.pythonhosted.org/packages/10/a1/e4050776f4797fc86140ac9a480d5dc069fbfa9d499fe5c5d2fa1ae71f07/propcache-0.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9631c5e8b5b3a0fda99cb0d29c18133bca1e18aea9effe55adb3da1adef80d3", size = 219109 }, - { url = "https://files.pythonhosted.org/packages/c9/c0/e7ae0df76343d5e107d81e59acc085cea5fd36a48aa53ef09add7503e888/propcache-0.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3156628250f46a0895f1f36e1d4fbe062a1af8718ec3ebeb746f1d23f0c5dc4d", size = 217368 }, - { url = "https://files.pythonhosted.org/packages/fc/e1/e0a2ed6394b5772508868a977d3238f4afb2eebaf9976f0b44a8d347ad63/propcache-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b6fb63ae352e13748289f04f37868099e69dba4c2b3e271c46061e82c745634", size = 205124 }, - { url = "https://files.pythonhosted.org/packages/50/c1/e388c232d15ca10f233c778bbdc1034ba53ede14c207a72008de45b2db2e/propcache-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:887d9b0a65404929641a9fabb6452b07fe4572b269d901d622d8a34a4e9043b2", size = 195463 }, - { url = "https://files.pythonhosted.org/packages/0a/fd/71b349b9def426cc73813dbd0f33e266de77305e337c8c12bfb0a2a82bfb/propcache-0.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a96dc1fa45bd8c407a0af03b2d5218392729e1822b0c32e62c5bf7eeb5fb3958", size = 198358 }, - { url = "https://files.pythonhosted.org/packages/02/f2/d7c497cd148ebfc5b0ae32808e6c1af5922215fe38c7a06e4e722fe937c8/propcache-0.2.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a7e65eb5c003a303b94aa2c3852ef130230ec79e349632d030e9571b87c4698c", size = 195560 }, - { url = "https://files.pythonhosted.org/packages/bb/57/f37041bbe5e0dfed80a3f6be2612a3a75b9cfe2652abf2c99bef3455bbad/propcache-0.2.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:999779addc413181912e984b942fbcc951be1f5b3663cd80b2687758f434c583", size = 196895 }, - { url = "https://files.pythonhosted.org/packages/83/36/ae3cc3e4f310bff2f064e3d2ed5558935cc7778d6f827dce74dcfa125304/propcache-0.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:19a0f89a7bb9d8048d9c4370c9c543c396e894c76be5525f5e1ad287f1750ddf", size = 207124 }, - { url = "https://files.pythonhosted.org/packages/8c/c4/811b9f311f10ce9d31a32ff14ce58500458443627e4df4ae9c264defba7f/propcache-0.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1ac2f5fe02fa75f56e1ad473f1175e11f475606ec9bd0be2e78e4734ad575034", size = 210442 }, - { url = "https://files.pythonhosted.org/packages/18/dd/a1670d483a61ecac0d7fc4305d91caaac7a8fc1b200ea3965a01cf03bced/propcache-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:574faa3b79e8ebac7cb1d7930f51184ba1ccf69adfdec53a12f319a06030a68b", size = 203219 }, - { url = "https://files.pythonhosted.org/packages/f9/2d/30ced5afde41b099b2dc0c6573b66b45d16d73090e85655f1a30c5a24e07/propcache-0.2.1-cp310-cp310-win32.whl", hash = "sha256:03ff9d3f665769b2a85e6157ac8b439644f2d7fd17615a82fa55739bc97863f4", size = 40313 }, - { url = "https://files.pythonhosted.org/packages/23/84/bd9b207ac80da237af77aa6e153b08ffa83264b1c7882495984fcbfcf85c/propcache-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:2d3af2e79991102678f53e0dbf4c35de99b6b8b58f29a27ca0325816364caaba", size = 44428 }, - { url = "https://files.pythonhosted.org/packages/bc/0f/2913b6791ebefb2b25b4efd4bb2299c985e09786b9f5b19184a88e5778dd/propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16", size = 79297 }, - { url = "https://files.pythonhosted.org/packages/cf/73/af2053aeccd40b05d6e19058419ac77674daecdd32478088b79375b9ab54/propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717", size = 45611 }, - { url = "https://files.pythonhosted.org/packages/3c/09/8386115ba7775ea3b9537730e8cf718d83bbf95bffe30757ccf37ec4e5da/propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3", size = 45146 }, - { url = "https://files.pythonhosted.org/packages/03/7a/793aa12f0537b2e520bf09f4c6833706b63170a211ad042ca71cbf79d9cb/propcache-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9", size = 232136 }, - { url = "https://files.pythonhosted.org/packages/f1/38/b921b3168d72111769f648314100558c2ea1d52eb3d1ba7ea5c4aa6f9848/propcache-0.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787", size = 239706 }, - { url = "https://files.pythonhosted.org/packages/14/29/4636f500c69b5edea7786db3c34eb6166f3384b905665ce312a6e42c720c/propcache-0.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465", size = 238531 }, - { url = "https://files.pythonhosted.org/packages/85/14/01fe53580a8e1734ebb704a3482b7829a0ef4ea68d356141cf0994d9659b/propcache-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af", size = 231063 }, - { url = "https://files.pythonhosted.org/packages/33/5c/1d961299f3c3b8438301ccfbff0143b69afcc30c05fa28673cface692305/propcache-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7", size = 220134 }, - { url = "https://files.pythonhosted.org/packages/00/d0/ed735e76db279ba67a7d3b45ba4c654e7b02bc2f8050671ec365d8665e21/propcache-0.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f", size = 220009 }, - { url = "https://files.pythonhosted.org/packages/75/90/ee8fab7304ad6533872fee982cfff5a53b63d095d78140827d93de22e2d4/propcache-0.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54", size = 212199 }, - { url = "https://files.pythonhosted.org/packages/eb/ec/977ffaf1664f82e90737275873461695d4c9407d52abc2f3c3e24716da13/propcache-0.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505", size = 214827 }, - { url = "https://files.pythonhosted.org/packages/57/48/031fb87ab6081764054821a71b71942161619549396224cbb242922525e8/propcache-0.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82", size = 228009 }, - { url = "https://files.pythonhosted.org/packages/1a/06/ef1390f2524850838f2390421b23a8b298f6ce3396a7cc6d39dedd4047b0/propcache-0.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca", size = 231638 }, - { url = "https://files.pythonhosted.org/packages/38/2a/101e6386d5a93358395da1d41642b79c1ee0f3b12e31727932b069282b1d/propcache-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e", size = 222788 }, - { url = "https://files.pythonhosted.org/packages/db/81/786f687951d0979007e05ad9346cd357e50e3d0b0f1a1d6074df334b1bbb/propcache-0.2.1-cp311-cp311-win32.whl", hash = "sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034", size = 40170 }, - { url = "https://files.pythonhosted.org/packages/cf/59/7cc7037b295d5772eceb426358bb1b86e6cab4616d971bd74275395d100d/propcache-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3", size = 44404 }, - { url = "https://files.pythonhosted.org/packages/4c/28/1d205fe49be8b1b4df4c50024e62480a442b1a7b818e734308bb0d17e7fb/propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a", size = 79588 }, - { url = "https://files.pythonhosted.org/packages/21/ee/fc4d893f8d81cd4971affef2a6cb542b36617cd1d8ce56b406112cb80bf7/propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0", size = 45825 }, - { url = "https://files.pythonhosted.org/packages/4a/de/bbe712f94d088da1d237c35d735f675e494a816fd6f54e9db2f61ef4d03f/propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d", size = 45357 }, - { url = "https://files.pythonhosted.org/packages/7f/14/7ae06a6cf2a2f1cb382586d5a99efe66b0b3d0c6f9ac2f759e6f7af9d7cf/propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4", size = 241869 }, - { url = "https://files.pythonhosted.org/packages/cc/59/227a78be960b54a41124e639e2c39e8807ac0c751c735a900e21315f8c2b/propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d", size = 247884 }, - { url = "https://files.pythonhosted.org/packages/84/58/f62b4ffaedf88dc1b17f04d57d8536601e4e030feb26617228ef930c3279/propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5", size = 248486 }, - { url = "https://files.pythonhosted.org/packages/1c/07/ebe102777a830bca91bbb93e3479cd34c2ca5d0361b83be9dbd93104865e/propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24", size = 243649 }, - { url = "https://files.pythonhosted.org/packages/ed/bc/4f7aba7f08f520376c4bb6a20b9a981a581b7f2e385fa0ec9f789bb2d362/propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff", size = 229103 }, - { url = "https://files.pythonhosted.org/packages/fe/d5/04ac9cd4e51a57a96f78795e03c5a0ddb8f23ec098b86f92de028d7f2a6b/propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f", size = 226607 }, - { url = "https://files.pythonhosted.org/packages/e3/f0/24060d959ea41d7a7cc7fdbf68b31852331aabda914a0c63bdb0e22e96d6/propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec", size = 221153 }, - { url = "https://files.pythonhosted.org/packages/77/a7/3ac76045a077b3e4de4859a0753010765e45749bdf53bd02bc4d372da1a0/propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348", size = 222151 }, - { url = "https://files.pythonhosted.org/packages/e7/af/5e29da6f80cebab3f5a4dcd2a3240e7f56f2c4abf51cbfcc99be34e17f0b/propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6", size = 233812 }, - { url = "https://files.pythonhosted.org/packages/8c/89/ebe3ad52642cc5509eaa453e9f4b94b374d81bae3265c59d5c2d98efa1b4/propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6", size = 238829 }, - { url = "https://files.pythonhosted.org/packages/e9/2f/6b32f273fa02e978b7577159eae7471b3cfb88b48563b1c2578b2d7ca0bb/propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518", size = 230704 }, - { url = "https://files.pythonhosted.org/packages/5c/2e/f40ae6ff5624a5f77edd7b8359b208b5455ea113f68309e2b00a2e1426b6/propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246", size = 40050 }, - { url = "https://files.pythonhosted.org/packages/3b/77/a92c3ef994e47180862b9d7d11e37624fb1c00a16d61faf55115d970628b/propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1", size = 44117 }, - { url = "https://files.pythonhosted.org/packages/0f/2a/329e0547cf2def8857157f9477669043e75524cc3e6251cef332b3ff256f/propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc", size = 77002 }, - { url = "https://files.pythonhosted.org/packages/12/2d/c4df5415e2382f840dc2ecbca0eeb2293024bc28e57a80392f2012b4708c/propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9", size = 44639 }, - { url = "https://files.pythonhosted.org/packages/d0/5a/21aaa4ea2f326edaa4e240959ac8b8386ea31dedfdaa636a3544d9e7a408/propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439", size = 44049 }, - { url = "https://files.pythonhosted.org/packages/4e/3e/021b6cd86c0acc90d74784ccbb66808b0bd36067a1bf3e2deb0f3845f618/propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536", size = 224819 }, - { url = "https://files.pythonhosted.org/packages/3c/57/c2fdeed1b3b8918b1770a133ba5c43ad3d78e18285b0c06364861ef5cc38/propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629", size = 229625 }, - { url = "https://files.pythonhosted.org/packages/9d/81/70d4ff57bf2877b5780b466471bebf5892f851a7e2ca0ae7ffd728220281/propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b", size = 232934 }, - { url = "https://files.pythonhosted.org/packages/3c/b9/bb51ea95d73b3fb4100cb95adbd4e1acaf2cbb1fd1083f5468eeb4a099a8/propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052", size = 227361 }, - { url = "https://files.pythonhosted.org/packages/f1/20/3c6d696cd6fd70b29445960cc803b1851a1131e7a2e4ee261ee48e002bcd/propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce", size = 213904 }, - { url = "https://files.pythonhosted.org/packages/a1/cb/1593bfc5ac6d40c010fa823f128056d6bc25b667f5393781e37d62f12005/propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d", size = 212632 }, - { url = "https://files.pythonhosted.org/packages/6d/5c/e95617e222be14a34c709442a0ec179f3207f8a2b900273720501a70ec5e/propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce", size = 207897 }, - { url = "https://files.pythonhosted.org/packages/8e/3b/56c5ab3dc00f6375fbcdeefdede5adf9bee94f1fab04adc8db118f0f9e25/propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95", size = 208118 }, - { url = "https://files.pythonhosted.org/packages/86/25/d7ef738323fbc6ebcbce33eb2a19c5e07a89a3df2fded206065bd5e868a9/propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf", size = 217851 }, - { url = "https://files.pythonhosted.org/packages/b3/77/763e6cef1852cf1ba740590364ec50309b89d1c818e3256d3929eb92fabf/propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f", size = 222630 }, - { url = "https://files.pythonhosted.org/packages/4f/e9/0f86be33602089c701696fbed8d8c4c07b6ee9605c5b7536fd27ed540c5b/propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30", size = 216269 }, - { url = "https://files.pythonhosted.org/packages/cc/02/5ac83217d522394b6a2e81a2e888167e7ca629ef6569a3f09852d6dcb01a/propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6", size = 39472 }, - { url = "https://files.pythonhosted.org/packages/f4/33/d6f5420252a36034bc8a3a01171bc55b4bff5df50d1c63d9caa50693662f/propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1", size = 43363 }, - { url = "https://files.pythonhosted.org/packages/0a/08/6ab7f65240a16fa01023125e65258acf7e4884f483f267cdd6fcc48f37db/propcache-0.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6a9a8c34fb7bb609419a211e59da8887eeca40d300b5ea8e56af98f6fbbb1541", size = 80403 }, - { url = "https://files.pythonhosted.org/packages/34/fe/e7180285e21b4e6dff7d311fdf22490c9146a09a02834b5232d6248c6004/propcache-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae1aa1cd222c6d205853b3013c69cd04515f9d6ab6de4b0603e2e1c33221303e", size = 46152 }, - { url = "https://files.pythonhosted.org/packages/9c/36/aa74d884af826030ba9cee2ac109b0664beb7e9449c315c9c44db99efbb3/propcache-0.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:accb6150ce61c9c4b7738d45550806aa2b71c7668c6942f17b0ac182b6142fd4", size = 45674 }, - { url = "https://files.pythonhosted.org/packages/22/59/6fe80a3fe7720f715f2c0f6df250dacbd7cad42832410dbd84c719c52f78/propcache-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eee736daafa7af6d0a2dc15cc75e05c64f37fc37bafef2e00d77c14171c2097", size = 207792 }, - { url = "https://files.pythonhosted.org/packages/4a/68/584cd51dd8f4d0f5fff5b128ce0cdb257cde903898eecfb92156bbc2c780/propcache-0.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7a31fc1e1bd362874863fdeed71aed92d348f5336fd84f2197ba40c59f061bd", size = 223280 }, - { url = "https://files.pythonhosted.org/packages/85/cb/4c3528460c41e61b06ec3f970c0f89f87fa21f63acac8642ed81a886c164/propcache-0.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba4cfa1052819d16699e1d55d18c92b6e094d4517c41dd231a8b9f87b6fa681", size = 221293 }, - { url = "https://files.pythonhosted.org/packages/69/c0/560e050aa6d31eeece3490d1174da508f05ab27536dfc8474af88b97160a/propcache-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f089118d584e859c62b3da0892b88a83d611c2033ac410e929cb6754eec0ed16", size = 208259 }, - { url = "https://files.pythonhosted.org/packages/0c/87/d6c86a77632eb1ba86a328e3313159f246e7564cb5951e05ed77555826a0/propcache-0.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:781e65134efaf88feb447e8c97a51772aa75e48b794352f94cb7ea717dedda0d", size = 198632 }, - { url = "https://files.pythonhosted.org/packages/3a/2b/3690ea7b662dc762ab7af5f3ef0e2d7513c823d193d7b2a1b4cda472c2be/propcache-0.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31f5af773530fd3c658b32b6bdc2d0838543de70eb9a2156c03e410f7b0d3aae", size = 203516 }, - { url = "https://files.pythonhosted.org/packages/4d/b5/afe716c16c23c77657185c257a41918b83e03993b6ccdfa748e5e7d328e9/propcache-0.2.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:a7a078f5d37bee6690959c813977da5291b24286e7b962e62a94cec31aa5188b", size = 199402 }, - { url = "https://files.pythonhosted.org/packages/a4/c0/2d2df3aa7f8660d0d4cc4f1e00490c48d5958da57082e70dea7af366f876/propcache-0.2.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:cea7daf9fc7ae6687cf1e2c049752f19f146fdc37c2cc376e7d0032cf4f25347", size = 200528 }, - { url = "https://files.pythonhosted.org/packages/21/c8/65ac9142f5e40c8497f7176e71d18826b09e06dd4eb401c9a4ee41aa9c74/propcache-0.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:8b3489ff1ed1e8315674d0775dc7d2195fb13ca17b3808721b54dbe9fd020faf", size = 211254 }, - { url = "https://files.pythonhosted.org/packages/09/e4/edb70b447a1d8142df51ec7511e84aa64d7f6ce0a0fdf5eb55363cdd0935/propcache-0.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9403db39be1393618dd80c746cb22ccda168efce239c73af13c3763ef56ffc04", size = 214589 }, - { url = "https://files.pythonhosted.org/packages/cb/02/817f309ec8d8883287781d6d9390f80b14db6e6de08bc659dfe798a825c2/propcache-0.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5d97151bc92d2b2578ff7ce779cdb9174337390a535953cbb9452fb65164c587", size = 207283 }, - { url = "https://files.pythonhosted.org/packages/d7/fe/2d18612096ed2212cfef821b6fccdba5d52efc1d64511c206c5c16be28fd/propcache-0.2.1-cp39-cp39-win32.whl", hash = "sha256:9caac6b54914bdf41bcc91e7eb9147d331d29235a7c967c150ef5df6464fd1bb", size = 40866 }, - { url = "https://files.pythonhosted.org/packages/24/2e/b5134802e7b57c403c7b73c7a39374e7a6b7f128d1968b4a4b4c0b700250/propcache-0.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:92fc4500fcb33899b05ba73276dfb684a20d31caa567b7cb5252d48f896a91b1", size = 44975 }, - { url = "https://files.pythonhosted.org/packages/41/b6/c5319caea262f4821995dca2107483b94a3345d4607ad797c76cb9c36bcc/propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54", size = 11818 }, +sdist = { url = "https://files.pythonhosted.org/packages/20/c8/2a13f78d82211490855b2fb303b6721348d0787fdd9a12ac46d99d3acde1/propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64", size = 41735, upload-time = "2024-12-01T18:29:16.437Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/a5/0ea64c9426959ef145a938e38c832fc551843481d356713ececa9a8a64e8/propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6", size = 79296, upload-time = "2024-12-01T18:27:02.052Z" }, + { url = "https://files.pythonhosted.org/packages/76/5a/916db1aba735f55e5eca4733eea4d1973845cf77dfe67c2381a2ca3ce52d/propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2", size = 45622, upload-time = "2024-12-01T18:27:04.022Z" }, + { url = "https://files.pythonhosted.org/packages/2d/62/685d3cf268b8401ec12b250b925b21d152b9d193b7bffa5fdc4815c392c2/propcache-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6445804cf4ec763dc70de65a3b0d9954e868609e83850a47ca4f0cb64bd79fea", size = 45133, upload-time = "2024-12-01T18:27:05.149Z" }, + { url = "https://files.pythonhosted.org/packages/4d/3d/31c9c29ee7192defc05aa4d01624fd85a41cf98e5922aaed206017329944/propcache-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9479aa06a793c5aeba49ce5c5692ffb51fcd9a7016e017d555d5e2b0045d212", size = 204809, upload-time = "2024-12-01T18:27:07.02Z" }, + { url = "https://files.pythonhosted.org/packages/10/a1/e4050776f4797fc86140ac9a480d5dc069fbfa9d499fe5c5d2fa1ae71f07/propcache-0.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9631c5e8b5b3a0fda99cb0d29c18133bca1e18aea9effe55adb3da1adef80d3", size = 219109, upload-time = "2024-12-01T18:27:08.267Z" }, + { url = "https://files.pythonhosted.org/packages/c9/c0/e7ae0df76343d5e107d81e59acc085cea5fd36a48aa53ef09add7503e888/propcache-0.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3156628250f46a0895f1f36e1d4fbe062a1af8718ec3ebeb746f1d23f0c5dc4d", size = 217368, upload-time = "2024-12-01T18:27:18.699Z" }, + { url = "https://files.pythonhosted.org/packages/fc/e1/e0a2ed6394b5772508868a977d3238f4afb2eebaf9976f0b44a8d347ad63/propcache-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b6fb63ae352e13748289f04f37868099e69dba4c2b3e271c46061e82c745634", size = 205124, upload-time = "2024-12-01T18:27:20.619Z" }, + { url = "https://files.pythonhosted.org/packages/50/c1/e388c232d15ca10f233c778bbdc1034ba53ede14c207a72008de45b2db2e/propcache-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:887d9b0a65404929641a9fabb6452b07fe4572b269d901d622d8a34a4e9043b2", size = 195463, upload-time = "2024-12-01T18:27:22.582Z" }, + { url = "https://files.pythonhosted.org/packages/0a/fd/71b349b9def426cc73813dbd0f33e266de77305e337c8c12bfb0a2a82bfb/propcache-0.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a96dc1fa45bd8c407a0af03b2d5218392729e1822b0c32e62c5bf7eeb5fb3958", size = 198358, upload-time = "2024-12-01T18:27:24.617Z" }, + { url = "https://files.pythonhosted.org/packages/02/f2/d7c497cd148ebfc5b0ae32808e6c1af5922215fe38c7a06e4e722fe937c8/propcache-0.2.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a7e65eb5c003a303b94aa2c3852ef130230ec79e349632d030e9571b87c4698c", size = 195560, upload-time = "2024-12-01T18:27:26.17Z" }, + { url = "https://files.pythonhosted.org/packages/bb/57/f37041bbe5e0dfed80a3f6be2612a3a75b9cfe2652abf2c99bef3455bbad/propcache-0.2.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:999779addc413181912e984b942fbcc951be1f5b3663cd80b2687758f434c583", size = 196895, upload-time = "2024-12-01T18:27:28.04Z" }, + { url = "https://files.pythonhosted.org/packages/83/36/ae3cc3e4f310bff2f064e3d2ed5558935cc7778d6f827dce74dcfa125304/propcache-0.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:19a0f89a7bb9d8048d9c4370c9c543c396e894c76be5525f5e1ad287f1750ddf", size = 207124, upload-time = "2024-12-01T18:27:29.976Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c4/811b9f311f10ce9d31a32ff14ce58500458443627e4df4ae9c264defba7f/propcache-0.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1ac2f5fe02fa75f56e1ad473f1175e11f475606ec9bd0be2e78e4734ad575034", size = 210442, upload-time = "2024-12-01T18:27:32.044Z" }, + { url = "https://files.pythonhosted.org/packages/18/dd/a1670d483a61ecac0d7fc4305d91caaac7a8fc1b200ea3965a01cf03bced/propcache-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:574faa3b79e8ebac7cb1d7930f51184ba1ccf69adfdec53a12f319a06030a68b", size = 203219, upload-time = "2024-12-01T18:27:34.129Z" }, + { url = "https://files.pythonhosted.org/packages/f9/2d/30ced5afde41b099b2dc0c6573b66b45d16d73090e85655f1a30c5a24e07/propcache-0.2.1-cp310-cp310-win32.whl", hash = "sha256:03ff9d3f665769b2a85e6157ac8b439644f2d7fd17615a82fa55739bc97863f4", size = 40313, upload-time = "2024-12-01T18:27:35.648Z" }, + { url = "https://files.pythonhosted.org/packages/23/84/bd9b207ac80da237af77aa6e153b08ffa83264b1c7882495984fcbfcf85c/propcache-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:2d3af2e79991102678f53e0dbf4c35de99b6b8b58f29a27ca0325816364caaba", size = 44428, upload-time = "2024-12-01T18:27:37.608Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0f/2913b6791ebefb2b25b4efd4bb2299c985e09786b9f5b19184a88e5778dd/propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16", size = 79297, upload-time = "2024-12-01T18:27:39.425Z" }, + { url = "https://files.pythonhosted.org/packages/cf/73/af2053aeccd40b05d6e19058419ac77674daecdd32478088b79375b9ab54/propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717", size = 45611, upload-time = "2024-12-01T18:27:40.944Z" }, + { url = "https://files.pythonhosted.org/packages/3c/09/8386115ba7775ea3b9537730e8cf718d83bbf95bffe30757ccf37ec4e5da/propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3", size = 45146, upload-time = "2024-12-01T18:27:42.106Z" }, + { url = "https://files.pythonhosted.org/packages/03/7a/793aa12f0537b2e520bf09f4c6833706b63170a211ad042ca71cbf79d9cb/propcache-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9", size = 232136, upload-time = "2024-12-01T18:27:43.293Z" }, + { url = "https://files.pythonhosted.org/packages/f1/38/b921b3168d72111769f648314100558c2ea1d52eb3d1ba7ea5c4aa6f9848/propcache-0.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787", size = 239706, upload-time = "2024-12-01T18:27:44.916Z" }, + { url = "https://files.pythonhosted.org/packages/14/29/4636f500c69b5edea7786db3c34eb6166f3384b905665ce312a6e42c720c/propcache-0.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465", size = 238531, upload-time = "2024-12-01T18:27:46.228Z" }, + { url = "https://files.pythonhosted.org/packages/85/14/01fe53580a8e1734ebb704a3482b7829a0ef4ea68d356141cf0994d9659b/propcache-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af", size = 231063, upload-time = "2024-12-01T18:27:47.72Z" }, + { url = "https://files.pythonhosted.org/packages/33/5c/1d961299f3c3b8438301ccfbff0143b69afcc30c05fa28673cface692305/propcache-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7", size = 220134, upload-time = "2024-12-01T18:27:49.044Z" }, + { url = "https://files.pythonhosted.org/packages/00/d0/ed735e76db279ba67a7d3b45ba4c654e7b02bc2f8050671ec365d8665e21/propcache-0.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f", size = 220009, upload-time = "2024-12-01T18:27:50.343Z" }, + { url = "https://files.pythonhosted.org/packages/75/90/ee8fab7304ad6533872fee982cfff5a53b63d095d78140827d93de22e2d4/propcache-0.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54", size = 212199, upload-time = "2024-12-01T18:27:52.389Z" }, + { url = "https://files.pythonhosted.org/packages/eb/ec/977ffaf1664f82e90737275873461695d4c9407d52abc2f3c3e24716da13/propcache-0.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505", size = 214827, upload-time = "2024-12-01T18:27:54.423Z" }, + { url = "https://files.pythonhosted.org/packages/57/48/031fb87ab6081764054821a71b71942161619549396224cbb242922525e8/propcache-0.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82", size = 228009, upload-time = "2024-12-01T18:27:55.639Z" }, + { url = "https://files.pythonhosted.org/packages/1a/06/ef1390f2524850838f2390421b23a8b298f6ce3396a7cc6d39dedd4047b0/propcache-0.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca", size = 231638, upload-time = "2024-12-01T18:27:57.655Z" }, + { url = "https://files.pythonhosted.org/packages/38/2a/101e6386d5a93358395da1d41642b79c1ee0f3b12e31727932b069282b1d/propcache-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e", size = 222788, upload-time = "2024-12-01T18:27:58.917Z" }, + { url = "https://files.pythonhosted.org/packages/db/81/786f687951d0979007e05ad9346cd357e50e3d0b0f1a1d6074df334b1bbb/propcache-0.2.1-cp311-cp311-win32.whl", hash = "sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034", size = 40170, upload-time = "2024-12-01T18:28:00.307Z" }, + { url = "https://files.pythonhosted.org/packages/cf/59/7cc7037b295d5772eceb426358bb1b86e6cab4616d971bd74275395d100d/propcache-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3", size = 44404, upload-time = "2024-12-01T18:28:02.129Z" }, + { url = "https://files.pythonhosted.org/packages/4c/28/1d205fe49be8b1b4df4c50024e62480a442b1a7b818e734308bb0d17e7fb/propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a", size = 79588, upload-time = "2024-12-01T18:28:03.327Z" }, + { url = "https://files.pythonhosted.org/packages/21/ee/fc4d893f8d81cd4971affef2a6cb542b36617cd1d8ce56b406112cb80bf7/propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0", size = 45825, upload-time = "2024-12-01T18:28:06.78Z" }, + { url = "https://files.pythonhosted.org/packages/4a/de/bbe712f94d088da1d237c35d735f675e494a816fd6f54e9db2f61ef4d03f/propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d", size = 45357, upload-time = "2024-12-01T18:28:08.575Z" }, + { url = "https://files.pythonhosted.org/packages/7f/14/7ae06a6cf2a2f1cb382586d5a99efe66b0b3d0c6f9ac2f759e6f7af9d7cf/propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4", size = 241869, upload-time = "2024-12-01T18:28:10.396Z" }, + { url = "https://files.pythonhosted.org/packages/cc/59/227a78be960b54a41124e639e2c39e8807ac0c751c735a900e21315f8c2b/propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d", size = 247884, upload-time = "2024-12-01T18:28:11.746Z" }, + { url = "https://files.pythonhosted.org/packages/84/58/f62b4ffaedf88dc1b17f04d57d8536601e4e030feb26617228ef930c3279/propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5", size = 248486, upload-time = "2024-12-01T18:28:13.048Z" }, + { url = "https://files.pythonhosted.org/packages/1c/07/ebe102777a830bca91bbb93e3479cd34c2ca5d0361b83be9dbd93104865e/propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24", size = 243649, upload-time = "2024-12-01T18:28:14.297Z" }, + { url = "https://files.pythonhosted.org/packages/ed/bc/4f7aba7f08f520376c4bb6a20b9a981a581b7f2e385fa0ec9f789bb2d362/propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff", size = 229103, upload-time = "2024-12-01T18:28:15.913Z" }, + { url = "https://files.pythonhosted.org/packages/fe/d5/04ac9cd4e51a57a96f78795e03c5a0ddb8f23ec098b86f92de028d7f2a6b/propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f", size = 226607, upload-time = "2024-12-01T18:28:18.015Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f0/24060d959ea41d7a7cc7fdbf68b31852331aabda914a0c63bdb0e22e96d6/propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec", size = 221153, upload-time = "2024-12-01T18:28:19.937Z" }, + { url = "https://files.pythonhosted.org/packages/77/a7/3ac76045a077b3e4de4859a0753010765e45749bdf53bd02bc4d372da1a0/propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348", size = 222151, upload-time = "2024-12-01T18:28:21.186Z" }, + { url = "https://files.pythonhosted.org/packages/e7/af/5e29da6f80cebab3f5a4dcd2a3240e7f56f2c4abf51cbfcc99be34e17f0b/propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6", size = 233812, upload-time = "2024-12-01T18:28:22.816Z" }, + { url = "https://files.pythonhosted.org/packages/8c/89/ebe3ad52642cc5509eaa453e9f4b94b374d81bae3265c59d5c2d98efa1b4/propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6", size = 238829, upload-time = "2024-12-01T18:28:24.071Z" }, + { url = "https://files.pythonhosted.org/packages/e9/2f/6b32f273fa02e978b7577159eae7471b3cfb88b48563b1c2578b2d7ca0bb/propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518", size = 230704, upload-time = "2024-12-01T18:28:25.314Z" }, + { url = "https://files.pythonhosted.org/packages/5c/2e/f40ae6ff5624a5f77edd7b8359b208b5455ea113f68309e2b00a2e1426b6/propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246", size = 40050, upload-time = "2024-12-01T18:28:26.617Z" }, + { url = "https://files.pythonhosted.org/packages/3b/77/a92c3ef994e47180862b9d7d11e37624fb1c00a16d61faf55115d970628b/propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1", size = 44117, upload-time = "2024-12-01T18:28:27.643Z" }, + { url = "https://files.pythonhosted.org/packages/0f/2a/329e0547cf2def8857157f9477669043e75524cc3e6251cef332b3ff256f/propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc", size = 77002, upload-time = "2024-12-01T18:28:29.025Z" }, + { url = "https://files.pythonhosted.org/packages/12/2d/c4df5415e2382f840dc2ecbca0eeb2293024bc28e57a80392f2012b4708c/propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9", size = 44639, upload-time = "2024-12-01T18:28:30.199Z" }, + { url = "https://files.pythonhosted.org/packages/d0/5a/21aaa4ea2f326edaa4e240959ac8b8386ea31dedfdaa636a3544d9e7a408/propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439", size = 44049, upload-time = "2024-12-01T18:28:31.308Z" }, + { url = "https://files.pythonhosted.org/packages/4e/3e/021b6cd86c0acc90d74784ccbb66808b0bd36067a1bf3e2deb0f3845f618/propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536", size = 224819, upload-time = "2024-12-01T18:28:32.755Z" }, + { url = "https://files.pythonhosted.org/packages/3c/57/c2fdeed1b3b8918b1770a133ba5c43ad3d78e18285b0c06364861ef5cc38/propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629", size = 229625, upload-time = "2024-12-01T18:28:34.083Z" }, + { url = "https://files.pythonhosted.org/packages/9d/81/70d4ff57bf2877b5780b466471bebf5892f851a7e2ca0ae7ffd728220281/propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b", size = 232934, upload-time = "2024-12-01T18:28:35.434Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b9/bb51ea95d73b3fb4100cb95adbd4e1acaf2cbb1fd1083f5468eeb4a099a8/propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052", size = 227361, upload-time = "2024-12-01T18:28:36.777Z" }, + { url = "https://files.pythonhosted.org/packages/f1/20/3c6d696cd6fd70b29445960cc803b1851a1131e7a2e4ee261ee48e002bcd/propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce", size = 213904, upload-time = "2024-12-01T18:28:38.041Z" }, + { url = "https://files.pythonhosted.org/packages/a1/cb/1593bfc5ac6d40c010fa823f128056d6bc25b667f5393781e37d62f12005/propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d", size = 212632, upload-time = "2024-12-01T18:28:39.401Z" }, + { url = "https://files.pythonhosted.org/packages/6d/5c/e95617e222be14a34c709442a0ec179f3207f8a2b900273720501a70ec5e/propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce", size = 207897, upload-time = "2024-12-01T18:28:40.996Z" }, + { url = "https://files.pythonhosted.org/packages/8e/3b/56c5ab3dc00f6375fbcdeefdede5adf9bee94f1fab04adc8db118f0f9e25/propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95", size = 208118, upload-time = "2024-12-01T18:28:42.38Z" }, + { url = "https://files.pythonhosted.org/packages/86/25/d7ef738323fbc6ebcbce33eb2a19c5e07a89a3df2fded206065bd5e868a9/propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf", size = 217851, upload-time = "2024-12-01T18:28:43.655Z" }, + { url = "https://files.pythonhosted.org/packages/b3/77/763e6cef1852cf1ba740590364ec50309b89d1c818e3256d3929eb92fabf/propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f", size = 222630, upload-time = "2024-12-01T18:28:45.663Z" }, + { url = "https://files.pythonhosted.org/packages/4f/e9/0f86be33602089c701696fbed8d8c4c07b6ee9605c5b7536fd27ed540c5b/propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30", size = 216269, upload-time = "2024-12-01T18:28:47.602Z" }, + { url = "https://files.pythonhosted.org/packages/cc/02/5ac83217d522394b6a2e81a2e888167e7ca629ef6569a3f09852d6dcb01a/propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6", size = 39472, upload-time = "2024-12-01T18:28:48.983Z" }, + { url = "https://files.pythonhosted.org/packages/f4/33/d6f5420252a36034bc8a3a01171bc55b4bff5df50d1c63d9caa50693662f/propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1", size = 43363, upload-time = "2024-12-01T18:28:50.025Z" }, + { url = "https://files.pythonhosted.org/packages/0a/08/6ab7f65240a16fa01023125e65258acf7e4884f483f267cdd6fcc48f37db/propcache-0.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6a9a8c34fb7bb609419a211e59da8887eeca40d300b5ea8e56af98f6fbbb1541", size = 80403, upload-time = "2024-12-01T18:28:51.35Z" }, + { url = "https://files.pythonhosted.org/packages/34/fe/e7180285e21b4e6dff7d311fdf22490c9146a09a02834b5232d6248c6004/propcache-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae1aa1cd222c6d205853b3013c69cd04515f9d6ab6de4b0603e2e1c33221303e", size = 46152, upload-time = "2024-12-01T18:28:52.503Z" }, + { url = "https://files.pythonhosted.org/packages/9c/36/aa74d884af826030ba9cee2ac109b0664beb7e9449c315c9c44db99efbb3/propcache-0.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:accb6150ce61c9c4b7738d45550806aa2b71c7668c6942f17b0ac182b6142fd4", size = 45674, upload-time = "2024-12-01T18:28:53.741Z" }, + { url = "https://files.pythonhosted.org/packages/22/59/6fe80a3fe7720f715f2c0f6df250dacbd7cad42832410dbd84c719c52f78/propcache-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eee736daafa7af6d0a2dc15cc75e05c64f37fc37bafef2e00d77c14171c2097", size = 207792, upload-time = "2024-12-01T18:28:54.885Z" }, + { url = "https://files.pythonhosted.org/packages/4a/68/584cd51dd8f4d0f5fff5b128ce0cdb257cde903898eecfb92156bbc2c780/propcache-0.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7a31fc1e1bd362874863fdeed71aed92d348f5336fd84f2197ba40c59f061bd", size = 223280, upload-time = "2024-12-01T18:28:56.202Z" }, + { url = "https://files.pythonhosted.org/packages/85/cb/4c3528460c41e61b06ec3f970c0f89f87fa21f63acac8642ed81a886c164/propcache-0.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba4cfa1052819d16699e1d55d18c92b6e094d4517c41dd231a8b9f87b6fa681", size = 221293, upload-time = "2024-12-01T18:28:58.18Z" }, + { url = "https://files.pythonhosted.org/packages/69/c0/560e050aa6d31eeece3490d1174da508f05ab27536dfc8474af88b97160a/propcache-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f089118d584e859c62b3da0892b88a83d611c2033ac410e929cb6754eec0ed16", size = 208259, upload-time = "2024-12-01T18:28:59.543Z" }, + { url = "https://files.pythonhosted.org/packages/0c/87/d6c86a77632eb1ba86a328e3313159f246e7564cb5951e05ed77555826a0/propcache-0.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:781e65134efaf88feb447e8c97a51772aa75e48b794352f94cb7ea717dedda0d", size = 198632, upload-time = "2024-12-01T18:29:00.939Z" }, + { url = "https://files.pythonhosted.org/packages/3a/2b/3690ea7b662dc762ab7af5f3ef0e2d7513c823d193d7b2a1b4cda472c2be/propcache-0.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31f5af773530fd3c658b32b6bdc2d0838543de70eb9a2156c03e410f7b0d3aae", size = 203516, upload-time = "2024-12-01T18:29:02.866Z" }, + { url = "https://files.pythonhosted.org/packages/4d/b5/afe716c16c23c77657185c257a41918b83e03993b6ccdfa748e5e7d328e9/propcache-0.2.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:a7a078f5d37bee6690959c813977da5291b24286e7b962e62a94cec31aa5188b", size = 199402, upload-time = "2024-12-01T18:29:04.157Z" }, + { url = "https://files.pythonhosted.org/packages/a4/c0/2d2df3aa7f8660d0d4cc4f1e00490c48d5958da57082e70dea7af366f876/propcache-0.2.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:cea7daf9fc7ae6687cf1e2c049752f19f146fdc37c2cc376e7d0032cf4f25347", size = 200528, upload-time = "2024-12-01T18:29:05.485Z" }, + { url = "https://files.pythonhosted.org/packages/21/c8/65ac9142f5e40c8497f7176e71d18826b09e06dd4eb401c9a4ee41aa9c74/propcache-0.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:8b3489ff1ed1e8315674d0775dc7d2195fb13ca17b3808721b54dbe9fd020faf", size = 211254, upload-time = "2024-12-01T18:29:06.953Z" }, + { url = "https://files.pythonhosted.org/packages/09/e4/edb70b447a1d8142df51ec7511e84aa64d7f6ce0a0fdf5eb55363cdd0935/propcache-0.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9403db39be1393618dd80c746cb22ccda168efce239c73af13c3763ef56ffc04", size = 214589, upload-time = "2024-12-01T18:29:08.957Z" }, + { url = "https://files.pythonhosted.org/packages/cb/02/817f309ec8d8883287781d6d9390f80b14db6e6de08bc659dfe798a825c2/propcache-0.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5d97151bc92d2b2578ff7ce779cdb9174337390a535953cbb9452fb65164c587", size = 207283, upload-time = "2024-12-01T18:29:10.286Z" }, + { url = "https://files.pythonhosted.org/packages/d7/fe/2d18612096ed2212cfef821b6fccdba5d52efc1d64511c206c5c16be28fd/propcache-0.2.1-cp39-cp39-win32.whl", hash = "sha256:9caac6b54914bdf41bcc91e7eb9147d331d29235a7c967c150ef5df6464fd1bb", size = 40866, upload-time = "2024-12-01T18:29:12.363Z" }, + { url = "https://files.pythonhosted.org/packages/24/2e/b5134802e7b57c403c7b73c7a39374e7a6b7f128d1968b4a4b4c0b700250/propcache-0.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:92fc4500fcb33899b05ba73276dfb684a20d31caa567b7cb5252d48f896a91b1", size = 44975, upload-time = "2024-12-01T18:29:13.516Z" }, + { url = "https://files.pythonhosted.org/packages/41/b6/c5319caea262f4821995dca2107483b94a3345d4607ad797c76cb9c36bcc/propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54", size = 11818, upload-time = "2024-12-01T18:29:14.716Z" }, ] [[package]] name = "py-cpuinfo" version = "9.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/37/a8/d832f7293ebb21690860d2e01d8115e5ff6f2ae8bbdc953f0eb0fa4bd2c7/py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690", size = 104716 } +sdist = { url = "https://files.pythonhosted.org/packages/37/a8/d832f7293ebb21690860d2e01d8115e5ff6f2ae8bbdc953f0eb0fa4bd2c7/py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690", size = 104716, upload-time = "2022-10-25T20:38:06.303Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/a9/023730ba63db1e494a271cb018dcd361bd2c917ba7004c3e49d5daf795a2/py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5", size = 22335 }, + { url = "https://files.pythonhosted.org/packages/e0/a9/023730ba63db1e494a271cb018dcd361bd2c917ba7004c3e49d5daf795a2/py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5", size = 22335, upload-time = "2022-10-25T20:38:27.636Z" }, ] [[package]] name = "pycparser" version = "2.22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, ] [[package]] @@ -1886,106 +1886,106 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/fa/5f682f3db14e14f7b5b7f5008ac24594b93943d1da4facbacff5876624cf/pydantic_core-2.34.1.tar.gz", hash = "sha256:6bf31628ab6d0e7c7c0372419898c52ef0a447b33ab47c7f62053bd013cc5b09", size = 435281 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/10/d950f249c9e50048890a515a4bad7e98c44ec4cde78ff4d6e37bfa022a19/pydantic_core-2.34.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:54f6bd146247c62b243fae34b535069614b255453fb1405c17b7d01d00976af7", size = 2038087 }, - { url = "https://files.pythonhosted.org/packages/f5/6c/9177d1b5f9aac2775979b5d0a7f03589919dba05caf4d11d4ba9292ce105/pydantic_core-2.34.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9db4dab51a6515d7eb0763f200f4784075952b2a0afe84ce7048da3da70a51cb", size = 1864646 }, - { url = "https://files.pythonhosted.org/packages/0a/36/8428d9848cfec707247d7d082deda2d20c8a6be8939c70adb228d9f9251d/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1444714e5c04dc20ad8246f8fd32b7ef4aef34f2fc7b349f71ae365ceb51e66", size = 1906297 }, - { url = "https://files.pythonhosted.org/packages/74/53/d0c33441434a3c2ea79ad5b0c8063f5c55a1173ecf38a0a5632c18205df3/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fffe3dd67708719a59e82ae36d6b431e2fb4e11b14f36f173c93e448ba963825", size = 1991861 }, - { url = "https://files.pythonhosted.org/packages/35/9b/e19d326eeb1bf83f1f9d5f98a1e244da3441258824ae410b0dfb06c1ab5b/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91f64f2f538d8da4a61d1d7dd515dfa535375bddfa1de0b543af650f2a9ae0a8", size = 2142095 }, - { url = "https://files.pythonhosted.org/packages/de/25/b68f48ff4b3a7e3b3fb23cc1cd0dd12c024eabfa3641116dc984ff92222f/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d17f447fffbef877aab4bca91c65d0ccdb3ef776c3db24f88c499565568a489", size = 2745180 }, - { url = "https://files.pythonhosted.org/packages/76/07/671c2c3876bd5f8a446d8264bc4832d23d2589786c6bd132b29181a1aa4a/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a44cd4d7651a586344cdd474e0740a8d2ee9dba9d1169f980b479b14a8b4891", size = 2015014 }, - { url = "https://files.pythonhosted.org/packages/0b/33/47970d638c0db6b1087fc8ecaae0abc1cb67c7010e316560d1ef6ab4c664/pydantic_core-2.34.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:564b56ce0e64a48ec338b06205b8753cc648133ec3f9c9af9dcfd403fc7af040", size = 2120837 }, - { url = "https://files.pythonhosted.org/packages/76/0b/7ce9448cfe087d5a4a084d067c317b92a631e10c6ed4a11687bb841f6296/pydantic_core-2.34.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:def02d3a0296a171d6723f97cc135ae827bdaca24c9f0665d23ad6f8096334d1", size = 2083217 }, - { url = "https://files.pythonhosted.org/packages/47/ca/13426f6593baff1dd544f6f884ce03f43133ef3787640e816fdc8ac5ec1f/pydantic_core-2.34.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:b72c63ed0399fdb7f45b7985025aa851d6c964801b1ad7c58f3ce8f75bc4e070", size = 2254441 }, - { url = "https://files.pythonhosted.org/packages/7c/7d/ecd2d9661000981f511ec996548024abdd3fcdd37a3582d4f30572f94651/pydantic_core-2.34.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eae6a05d4612d15ba5e22879b710d770d310dbdac6edc53126b86a3be4fe78b5", size = 2252748 }, - { url = "https://files.pythonhosted.org/packages/17/2f/baeda4059c46361a917973fb938e6564c0b9970113dba4f126c2dcc32595/pydantic_core-2.34.1-cp310-cp310-win32.whl", hash = "sha256:51aae06a854be524f7a33fd2ccc54a37577a7b37c77813794483cbb00829d646", size = 1918465 }, - { url = "https://files.pythonhosted.org/packages/e3/93/156001796df52ed6738fe1cd394a6741737260fec318ab4b97085edd9909/pydantic_core-2.34.1-cp310-cp310-win_amd64.whl", hash = "sha256:4f3044c1626b46d5c21e67d9fd16fd854e2847b23e7ebda75689733050959023", size = 1960435 }, - { url = "https://files.pythonhosted.org/packages/c7/48/79d53d1822736d8304adb7bf12842c880a576fa53e670a4e0bcc9ebc7458/pydantic_core-2.34.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:922d7931884fbd5f46785d3e6998c58d1ee3a381b4714d1b5a95da5f41795b7c", size = 2037938 }, - { url = "https://files.pythonhosted.org/packages/57/33/bd9ee10002c5dacc954624443f2b6ec0d90f1a72ea24479fd70f1c00bba2/pydantic_core-2.34.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ca84244021b9d88bd979cb062c58fe7bd00689371b538284f00582781fd1047e", size = 1865764 }, - { url = "https://files.pythonhosted.org/packages/86/1f/b01bf845616c590895a1edb3daf6749d641209374e65712e2b6174a98fa2/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61f5536849eac65c638e47b7ed69ca9b8f353247936feea3862ff773d0f3e349", size = 1906063 }, - { url = "https://files.pythonhosted.org/packages/56/a6/fb1f3495dadf291be196e2907b084519e982dd5c762898dcfc05a8bdb80e/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8dbb8babb10c418ca18a149ee27a4df06db5ee4acc30c0576e8c35d9d3a9e9d3", size = 1993222 }, - { url = "https://files.pythonhosted.org/packages/b1/53/766c15b82e67a8e5f6a26e30c80f9cb18f68145021ecb337e8124b7b7b4c/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec8ce161786818229e96774f4d9159df80589d89b7bc64f3251c57c3fb133289", size = 2142103 }, - { url = "https://files.pythonhosted.org/packages/04/80/fdb17009b0b78c4cdbd7ce33fc434f45c34f5edd95fed9b3f76b01dc93e1/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8d59fcb88752869183b0685e3e6a9d46cb3109280fa452ede7994b9ccff734e", size = 2738738 }, - { url = "https://files.pythonhosted.org/packages/17/2d/499578ff0d40d411d094fbc35a3d8709dbe7a3e48bc99e6caf9fbbf5ded7/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff39a5611d098fcd821dacdfb01dabb434054867d3df646e7b11981a6770a195", size = 2012075 }, - { url = "https://files.pythonhosted.org/packages/03/ff/8528ba1261d0d548d88200b9b887633a8599c2baf4326872e7a2d838bdd2/pydantic_core-2.34.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6194d491d34ee7667a71cb51f107c9c9266608f86d7fef1e9644acfc7f3e189a", size = 2121560 }, - { url = "https://files.pythonhosted.org/packages/13/23/7314c1a12db9d3bc7036d94d5c78c81701d9149299f1db0fecbe9a3ed71c/pydantic_core-2.34.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c59c3cadc8a0ae1ac9bed2d7e78f93e71e5d99bba5f9f121c5d7bd41f1faa89a", size = 2083123 }, - { url = "https://files.pythonhosted.org/packages/90/75/40f499b653bd745a23e5e7deda21171b559014b41d676ec14f2acc1418fd/pydantic_core-2.34.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:e331d7ec5ec582c5078db948eca25d637c0a7f88a037b5016c48cb7c63f7da2c", size = 2255737 }, - { url = "https://files.pythonhosted.org/packages/64/b0/6440bbaea7b5bb53dd40e1b725cf06356d01820feb0cb9ffb0b0fd2db125/pydantic_core-2.34.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:71c2d7cb5c9087301f5d2a488ce51e090bd682849b5a59cf4f75a9ce08044f64", size = 2252186 }, - { url = "https://files.pythonhosted.org/packages/bf/43/6fe3ed2bfbf2068c42d0de892ba5f9b7bdadd494268f56b13bebd592d384/pydantic_core-2.34.1-cp311-cp311-win32.whl", hash = "sha256:dbec17f32828541af5bcebe0ea124235fc620bb5e5d56bf76e38b5b0ad37299d", size = 1917814 }, - { url = "https://files.pythonhosted.org/packages/c2/57/b39a659a2b5a9c76e239720db257bb1c930349d5094dce93d1b022d2e17b/pydantic_core-2.34.1-cp311-cp311-win_amd64.whl", hash = "sha256:91175524a4cb485333d4119454645c7adefeda34845e66ade277cae670ad8b58", size = 1957753 }, - { url = "https://files.pythonhosted.org/packages/e5/1d/da4c39b0ee8033f783df8bd7b41e662fadfa8d1be629d74b8e5ff5bfe97e/pydantic_core-2.34.1-cp311-cp311-win_arm64.whl", hash = "sha256:d9cb67f2d7d1f129af7e05dbf4fe209f4df043ea1245086bce2a5ee00ca2f5cc", size = 1905663 }, - { url = "https://files.pythonhosted.org/packages/ee/44/be71fcdaabc51210171ad47ba58667f5389b55029f2c04a8e009b0cd3bd6/pydantic_core-2.34.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:406f85849878788a3fd4b73410955dbbb038a70a8c0d7bb9201084242b035bb5", size = 2019724 }, - { url = "https://files.pythonhosted.org/packages/3f/dd/c8d5dafae46eacd3a619fe7476794acbbfc5ec170993bce4aed1e6e5773c/pydantic_core-2.34.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a953737ad0ce8a6b0130fa77851ab639c576e2c11e16a417392e04f8ec1d40dd", size = 1851663 }, - { url = "https://files.pythonhosted.org/packages/e6/3a/5f64080cba0002600b7254ecb61a54fbff3ef74023322e3625d95ae8a44a/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e12b71b0ed28cc751e59653d0415aded476f255984dbf0f99d6880342d1911db", size = 1889055 }, - { url = "https://files.pythonhosted.org/packages/2b/86/6ef6b3820fd52cba959e1b1b109734de99339fcbe78de6f22cb84a1ba568/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c6fe9cb158200d9a83a38fed3c2cb6766a98adc5f61940ccdd41a75231762e89", size = 1976847 }, - { url = "https://files.pythonhosted.org/packages/7c/93/e4d8c3ce244a528e226e4276c973f1b222ca3bc09e3660506f0b707896aa/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:448a11df0edc8a1a4072a13d34ad7e048e7c7941635432ffc39036e8bf4454a3", size = 2128118 }, - { url = "https://files.pythonhosted.org/packages/5e/91/a05cfdaebc9b0e72848dd20b0461a2f3d70cf7578763db8bf077031a83b1/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:642ca6940d2bc027d8ac8ddd4c1c7e7ae3dbb0277e26ab2c42a562cc96f9f048", size = 2686857 }, - { url = "https://files.pythonhosted.org/packages/37/c7/aa7eb3c22a12fbac158835c5fbd62d2059405838c977a61ba90fb3d9214a/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7126ea9858f9c23a3ec7cd9ecc18be93d1546fe76bc7b331389caf29c4d411f", size = 2013073 }, - { url = "https://files.pythonhosted.org/packages/0a/14/98d941d9af7d0860884223919c513d2b3b87eec121f3fc9d8864e984ea01/pydantic_core-2.34.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d74a8e53545bcfd0515754ece2b018fabfb81c0e49d825f8cc1dba09c911f404", size = 2107513 }, - { url = "https://files.pythonhosted.org/packages/e9/97/84d36d0c8f92c84ca515e634838f4db29db336d14a65350274ec39927609/pydantic_core-2.34.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:edc0c6d41431849c6f2f6301f713af730884136c06613a41fd6778446b5bc7c5", size = 2066685 }, - { url = "https://files.pythonhosted.org/packages/2c/5a/1a8d8e3690b595787ab041c0ebab2af6a47dda4df3e087c58ea92cef134c/pydantic_core-2.34.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:f5ee164fb0be1a56c7639794b400815ce36eeb14cdf0a914527c80481b43b43c", size = 2239959 }, - { url = "https://files.pythonhosted.org/packages/68/72/559845386d05391b5f180711e23efe03811d0b3f9b5a75295da8b2dd8dd4/pydantic_core-2.34.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b5beed6e1f3ee3d20a93b02bdb28dcc94bd192c09f433cd114efcf8ad13829f0", size = 2241120 }, - { url = "https://files.pythonhosted.org/packages/57/8b/3ff432a0d84037df43cdca3cb16ba416cb622b619755fe2bbea6b48dd101/pydantic_core-2.34.1-cp312-cp312-win32.whl", hash = "sha256:00d7e7b6a0b2d2294e3dc2d2b170fa860577fc0e286460d7cfd0e90c1a2a1267", size = 1900094 }, - { url = "https://files.pythonhosted.org/packages/4b/a8/5560b14afe572e6bdc5e7f0067717a7269e45225d9762dd7b57be0babdc0/pydantic_core-2.34.1-cp312-cp312-win_amd64.whl", hash = "sha256:4122151c1f4eb883556adc9e624564731872eb1647f5408028649d69b8565879", size = 1972744 }, - { url = "https://files.pythonhosted.org/packages/65/ec/64cc90d57bc109f1147f1b3d64439420948a1a0cbee83aeedda6af0d06d0/pydantic_core-2.34.1-cp312-cp312-win_arm64.whl", hash = "sha256:59054ba986777afb760c3283fcf0bfe27a6a1be970f6c7b3bcfde33985a69823", size = 1896488 }, - { url = "https://files.pythonhosted.org/packages/84/c2/60c310e7d471d590adce553bb0788256ad749bbf4f95f8c1e780e83b4ac6/pydantic_core-2.34.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:a7385b01cb068b87b35a95799b4e2b1c6456269d7b9a5e8b4dcfe2547bdaccaf", size = 2026574 }, - { url = "https://files.pythonhosted.org/packages/e0/51/8f8af7364febb498856bee3f1cc4c4cba45fcaf00622ade3839cb93e8023/pydantic_core-2.34.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d26e1ba192c3207fa2a3d1e049ad7710ace1f09e67ae70e52495db70292cc12d", size = 1851446 }, - { url = "https://files.pythonhosted.org/packages/54/26/93f8fb98f73043e22aa35a3384044694f7fcf2ef7d3031e9ddb47941c4ef/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abdefd076e7857f23caa4cfeacdae831d5e948ac227125b4d35b92b5fb77976c", size = 1893875 }, - { url = "https://files.pythonhosted.org/packages/35/d3/ae4b5b05b25768252a39f5835a3a4906ca4778a922a2e227a0775ce39c46/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6beb001b3dfc3a6705fd0bec935cf77e99ad37e43f4e82b15495c2c2e678d005", size = 1985569 }, - { url = "https://files.pythonhosted.org/packages/24/3c/361f8a0edc2b40a746fb19b97d13847e843b474fbcb2654e4df25d1a19a9/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:502c81a0e3db1010aabdb309456c7217151e94bb20abdbeb766b2df25be84320", size = 2128538 }, - { url = "https://files.pythonhosted.org/packages/1f/06/edc987266114e25550845c9602f28234721475a7efa84aa9b3cfaafa3d0c/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df50a223e1a8e8a066a806267b11ffc47fd797736ffafa70734629305b1b6fe6", size = 2687776 }, - { url = "https://files.pythonhosted.org/packages/c4/a6/a339a95abd8f65ece666147d3457c81abb7c35621c855f02703185b1fa7a/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54e31294764110fc266111f49d5ddd9356773b13fdf848cc261ef07a18de2568", size = 2010400 }, - { url = "https://files.pythonhosted.org/packages/86/7d/4c4c0e072829588d931162c8371de2cad68f067e9564c8fad49b0516e813/pydantic_core-2.34.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3bb7a0d84fea2629d10adcf46470ef48ac786976f6c3130a441a260beb4dbad", size = 2115352 }, - { url = "https://files.pythonhosted.org/packages/89/7b/c899ecad0773d1de65e531bb7432886d5d83eeed56e2ccebe0b0434eddeb/pydantic_core-2.34.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:596ea8427dde3721b829ce37e9166efb65c01e25e1977008702b5b081124cec5", size = 2070414 }, - { url = "https://files.pythonhosted.org/packages/ed/6c/b866f1568d436b5f74289225d9e0a5904c9d56ac4fb1929893e7a05253e4/pydantic_core-2.34.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:b50cd1cd02c525c44d0b4127833436b491f71a6a2ef93d503e29b0b672fe5acb", size = 2248628 }, - { url = "https://files.pythonhosted.org/packages/09/5b/bd0efb630476c01f46fc9de8af59a1261bd2e17a8d6e70be2166ce68bd42/pydantic_core-2.34.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a4a44c73e5e58113c1b6a4fe2ab7a151a9d6a0ab612a8e107a6d557c980853f1", size = 2248738 }, - { url = "https://files.pythonhosted.org/packages/7b/c2/3542e28e1238cef011f0058d156c4473e921f6ea08cd2c4f9bf77bec1492/pydantic_core-2.34.1-cp313-cp313-win32.whl", hash = "sha256:6d908cdc6ee50c463f64792892b7980bad8eea0c231fd09a7db7d8375aeb350e", size = 1906826 }, - { url = "https://files.pythonhosted.org/packages/2b/ac/713daff8e6df9ac565a44ea066dd37c3a3ae7171ef93329f7c782cff9bae/pydantic_core-2.34.1-cp313-cp313-win_amd64.whl", hash = "sha256:83343e0a9b0e929231bde8d2d7d5dd93dd3af22556bc9a538d729a9ba6824cf4", size = 1971800 }, - { url = "https://files.pythonhosted.org/packages/99/7d/7df9b739c42e499acc832e6a06fd27b97cc6f374224e9053140c2245edc0/pydantic_core-2.34.1-cp313-cp313-win_arm64.whl", hash = "sha256:92757e71447ff68fa63091c5c4a5f595225fba3f427e987516db56f39568b38e", size = 1903059 }, - { url = "https://files.pythonhosted.org/packages/c1/ee/9db88f26f7f284550dfa7467533e37392ed007b641d95e34bc259ad00895/pydantic_core-2.34.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:32ff9e9e07f80815115466a586f5b437679802cdc79ff58935fc0a4b4b6de77f", size = 1811340 }, - { url = "https://files.pythonhosted.org/packages/bd/83/8c64954765295648af41130f04fb7f490c11e89cdfe1f06a9767fa8bf485/pydantic_core-2.34.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00643ebd798a05111218e9fe17f8b0f782e7cb94cd427b3118938563a81872a5", size = 1986955 }, - { url = "https://files.pythonhosted.org/packages/ac/41/eaa43c0b1a506aba0fae4dae8095cb363caf5b79e9aad284f09aafd2b0eb/pydantic_core-2.34.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b1f5392e6a615a93f8ba2f71454c096798dd4d944ca27bbca793cfb0e3faaf1d", size = 1942120 }, - { url = "https://files.pythonhosted.org/packages/2d/4a/0500862bd02a0c0f6517a266dddd587e299a4ac9cf6715b1a10565fa3078/pydantic_core-2.34.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8a7b34f16772a7b02944c1910125fb0b0c89d34c5045e6ea0746044722b592d3", size = 2038228 }, - { url = "https://files.pythonhosted.org/packages/60/1a/3cbff2c0ad96f78b38118dc6a347c0e12a7aede8dd9ad67d52651b5fc9f4/pydantic_core-2.34.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6e1af10b5c6b91732bc8385b472b8b68c120dab52564a0f195409a7020ad3f58", size = 1872870 }, - { url = "https://files.pythonhosted.org/packages/e1/cd/7a6bb217ad3b7f730dff4abd36f1e7cf6032025408d15dcef01e0d3d9a97/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03c1722c3755b7fbaafcf7e8d331803c6109f96b4df52eb91ea9e1e5f24ee96a", size = 1906430 }, - { url = "https://files.pythonhosted.org/packages/d6/b2/54ab389304567b841d6f366e6da2ca53e9b0c923da4029da351c9a545dc3/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:967a7dc51597a1cc6a0782abf069e549e183101cb3c129a5a37a8e12a956306f", size = 1992407 }, - { url = "https://files.pythonhosted.org/packages/3c/8f/50e4985198fd00af37c697d4d8b98eaf8a2abf5e28a9e4c8945d964c3e97/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b20ff6e14af8c5e3073304c4ec818a9f20bd92ce9d6d5716982803a5bb0851b6", size = 2142490 }, - { url = "https://files.pythonhosted.org/packages/8d/51/ba611f3d687e58fa85246edaa806a916e1694afaeba7bce540504e2b23ad/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c21506d9761d51972d3408c45e38ab44e7bdd244cc7e1e2fcd4af0cd6322cb33", size = 2744301 }, - { url = "https://files.pythonhosted.org/packages/f9/09/39e701ce1a5ae6548ac41922ed42da1511827a835a21ed1d5a461e49fb0a/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57e914ce885275b5c9d9641aabc30f2e70945eec65e0e1a915b0242c58a0a5fe", size = 2016408 }, - { url = "https://files.pythonhosted.org/packages/c1/03/ce681227b9d4ad410936b2a6c0cb20cf201a2d0332c337828440b31338f9/pydantic_core-2.34.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:390c1c17c3eb47ccb0180af002881294d87203fd01ab617902a6eb740713c017", size = 2121256 }, - { url = "https://files.pythonhosted.org/packages/cf/55/8a9cc2104acb11b76de2765c7969bfc79bd7d86b89cb07d783ed14d68f3b/pydantic_core-2.34.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d38504ecbf67b7fe60ae2db028e1b1a54df92a2b899628c82b3edfe885a88059", size = 2083871 }, - { url = "https://files.pythonhosted.org/packages/4b/89/07b245b60c3add551d20338bd6cda7005be98f5c8ec1062834726fe89f66/pydantic_core-2.34.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:b010fd1d65b536552fc07633b84538300847dc0544ebfea06986017909b4b65e", size = 2254926 }, - { url = "https://files.pythonhosted.org/packages/77/cc/6cef2ec380e57e20bae11c92495267cb46cff1df28a7a6e278b92532ed0c/pydantic_core-2.34.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8da35468c5b54142f503b2a7edb0a2252cb6e21206371ab56cb709f064215500", size = 2253401 }, - { url = "https://files.pythonhosted.org/packages/81/60/10f517468900879f6dc0afae282d278d0b793e623858210e25933ae1d01c/pydantic_core-2.34.1-cp39-cp39-win32.whl", hash = "sha256:4b667f9285c0ffccd17d1ac668da776c5da4c3957391c98a0c4c8ff5f378f040", size = 1918322 }, - { url = "https://files.pythonhosted.org/packages/5f/58/1e0cfd39b72a52fed5220b5ed5bbba1924d1c0c3cce5e0836a693bb6e26d/pydantic_core-2.34.1-cp39-cp39-win_amd64.whl", hash = "sha256:648a65762994cab52b14c40058290fe0dbbd2ce907b42d7ab7b565fffcfc8617", size = 1962585 }, - { url = "https://files.pythonhosted.org/packages/bf/f8/50803d0099af8f490bb6bcdecbe220df24c6472f19bc6adbc4af4ca5103a/pydantic_core-2.34.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:66406c996569bfaa9d6938ccbc43695bc19ee3185dd7ba3e08615e04ca3a0fbe", size = 2035023 }, - { url = "https://files.pythonhosted.org/packages/33/1a/6073fd39aa6460d6890a3a84e277393b45765f2c872fd633374b3c6d08f7/pydantic_core-2.34.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a1215a14a145630ce00135d9ea696b5c587f0d166579cef541e8743530dbe134", size = 1867929 }, - { url = "https://files.pythonhosted.org/packages/b0/4b/4f96ef0786bc7176f26e67f809e7350ea887598a2372b9e69bb9fec00f48/pydantic_core-2.34.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb5882ad329cec0b58f006840be4b981938303de5ec72e61160b66f86515bd58", size = 1900902 }, - { url = "https://files.pythonhosted.org/packages/5d/ca/c9e790808f0b217234f79c8a379c5783a6cc5350504e614f24f01b0d66aa/pydantic_core-2.34.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:215e185af1ace9682dcaf3bde93d2c78256016ebcfb736b47ed4f58defcfd7bf", size = 2077429 }, - { url = "https://files.pythonhosted.org/packages/6b/b8/f1cb581892dc96820967a894a0205ebf405f3aff73a08dea6312d223c5a7/pydantic_core-2.34.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:911024e92269e0da607eeee32ab5f6e460e8afe74e0859a353d8f77a09440ab2", size = 2116895 }, - { url = "https://files.pythonhosted.org/packages/e4/37/555f5cbe5d62457260e85cf91525bd1186f697303db0056d9ae664292cdc/pydantic_core-2.34.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b1073b3688aa0b1834e54a2e4f1aaa72306bbe72138983a0bd4bf3c8ac9751d5", size = 2077587 }, - { url = "https://files.pythonhosted.org/packages/b5/a0/b0a359ee9b3bb9d0a838b9891bd3f5d2ff3afe993500860c4b29111c6812/pydantic_core-2.34.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:16c73d64c4ff64a8c107bd779dfc957f6d5add4f14d348441a836ec23d620cf4", size = 2247416 }, - { url = "https://files.pythonhosted.org/packages/33/cf/b03a86dbc7f00fdac44ac11045ceb80db04fa91a477fa23562ea1a1bc142/pydantic_core-2.34.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ca7d1b95b1bca481fb6a8c0ae684a053eef0d6da9e819f6361fd1da7bc1c54ad", size = 2248907 }, - { url = "https://files.pythonhosted.org/packages/a4/88/7031a9395b20093e128676bf697b6dc96c07b21ae2c5611ef4e70fad8631/pydantic_core-2.34.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:286981cc3a187e128d5223f37b5660dcf7021f16f4164dee28c4ff78e0fcd040", size = 2075820 }, - { url = "https://files.pythonhosted.org/packages/04/b2/27724854768e29f8f6c9975dc94851cbf579ef4ca6063e046b7a91ffb79f/pydantic_core-2.34.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7c848c98ceaf3d1d6369814565da0b2f4aa1cd8b3bf28767261f54a13b8b387d", size = 2036183 }, - { url = "https://files.pythonhosted.org/packages/c6/18/ff9d9e91d333ba93ea55477196b28f9cbc712668a84817c1ae5da10bb69f/pydantic_core-2.34.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:c80e6d594122345b41659e5d5ad9cb5d732d81a1da83c336e1b13f55794abafe", size = 1868773 }, - { url = "https://files.pythonhosted.org/packages/10/49/5ec5bb4c7c530853e54ec4f1fde0ec216c44abb3b7b70c8e2e63e21b60c3/pydantic_core-2.34.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64b8fa876a63cf806ad0d13dc7205b47512c90f192df2c1ad6a7f49a90015003", size = 1900859 }, - { url = "https://files.pythonhosted.org/packages/93/84/9ee32d2468d0f7df469d7f927d63950ebbf4493898c4f8e88f363c505828/pydantic_core-2.34.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2d8176efe66d54a5f7d3052b394ede8c0d2bb80144d1bf6c9b30a9d1fdfaea", size = 2077388 }, - { url = "https://files.pythonhosted.org/packages/01/56/b43444372fb9fd88ae867d907b184b8776e353dacf6d4c1f80a350bc4f82/pydantic_core-2.34.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:69eb11a0bcbdb49c04494980206e9449d361b78b35ad64478d9ab15db837bec9", size = 2117737 }, - { url = "https://files.pythonhosted.org/packages/a0/37/1b5da00af59ed09eafebda1d8bc3c816b2777b64d054f9203d05c6445630/pydantic_core-2.34.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b30d9d48390deb789c84205fc76ad6c27b00819d60dc955186e9387c55370413", size = 2077383 }, - { url = "https://files.pythonhosted.org/packages/2e/ac/de6883ac0617243370cfed67ba785aaae27bea5e3369ed329ddadbba360b/pydantic_core-2.34.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e3da84e67845c83e88c7e96df3e487a16752753f19241d17e887f1f39b7a851c", size = 2248548 }, - { url = "https://files.pythonhosted.org/packages/c3/9e/3b4f95aca1742eaa064e402f2388a2f1013f2214f7fb0f4f6155eff3dec3/pydantic_core-2.34.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:9b3946e2fb4a7821b59a70193530f463dd532fd6d25f13e9c6521df736906777", size = 2248760 }, - { url = "https://files.pythonhosted.org/packages/f8/4d/06e5db4b171a708c35149b475aa8823a3553c9d4b8b3d6afc1736d5665bc/pydantic_core-2.34.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:46b2ae1824bb07939f77d4a390a1a0a5b0838e34ac9427cf21c89a7a925f1ad7", size = 2075955 }, - { url = "https://files.pythonhosted.org/packages/01/a7/3d3347ef8685efd48f0f9044e2ab44a33865ba2bd48e9c297aab9990a636/pydantic_core-2.34.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9fd3ae017ad680b744ffe257627c3503889d2a6ef2b7d1493483e9faccf7abc7", size = 2035248 }, - { url = "https://files.pythonhosted.org/packages/7c/00/3f8e0632c27ce1d969b5e9caf8d5d609719c2951df786ad5616f7e8c1b34/pydantic_core-2.34.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:18ff148029c246e3ca36164ca07fa3d0d7c99d2feab98e12bce97da63e67bcdb", size = 1868441 }, - { url = "https://files.pythonhosted.org/packages/0d/0a/2f02f1e1aed3d3aebbabe560a6e0ca5de7ea080aeebded29a4c5cf05c99d/pydantic_core-2.34.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7c7ac737d1544615403e8a98956fc02b7505f713c531eab7c4b265618e82af3", size = 1901157 }, - { url = "https://files.pythonhosted.org/packages/0e/cd/f601db334adf27808b6179415538cc3581f542daacd3eb931a3b32d1a100/pydantic_core-2.34.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d8f64e49175f98416b7193c818741916dc29783256f684324cee262a1b35d57", size = 2078186 }, - { url = "https://files.pythonhosted.org/packages/b2/35/7c5bf738ce45ad9943aca8d6fde04db9e43c5cb17b7248e2d07cb1546458/pydantic_core-2.34.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e19bb6d38d5259b20de62618928fe33d60c4b15975f891503e0703776d23e9f7", size = 2117064 }, - { url = "https://files.pythonhosted.org/packages/bb/5d/ff9d24da5991f22ce44e6b101c672a439f97be1f3f0f433334d945ae7aa2/pydantic_core-2.34.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ee4491ebcee7f58054585fedeaca653e9822b97445e9b1700ed29846a963f210", size = 2078212 }, - { url = "https://files.pythonhosted.org/packages/0b/b7/71cda0671a13529f9d5d2b2c92113e40eb759cdcc661abd921393344ed47/pydantic_core-2.34.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:08a5b5da50a28a5bae06120aaae7ff086b19a870c74f6ab110326893252822f8", size = 2247591 }, - { url = "https://files.pythonhosted.org/packages/c0/20/2a2199fd7b2b3b238df64bf42198450a45d7891a1115e539a99d6b4ed5d8/pydantic_core-2.34.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:a85f3126af1cf983f252738209713f625982ede1557e1991feb6e817c1116b23", size = 2249304 }, - { url = "https://files.pythonhosted.org/packages/ea/09/3404f068c7b4884e6c9c557dac52a04e575b1bf25911e99a70b34ac2daf7/pydantic_core-2.34.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:6074b7d2bc969caf9669303e815f52a448ed8f107f17e2905474e7b956a64481", size = 2076010 }, +sdist = { url = "https://files.pythonhosted.org/packages/42/fa/5f682f3db14e14f7b5b7f5008ac24594b93943d1da4facbacff5876624cf/pydantic_core-2.34.1.tar.gz", hash = "sha256:6bf31628ab6d0e7c7c0372419898c52ef0a447b33ab47c7f62053bd013cc5b09", size = 435281, upload-time = "2025-04-17T20:34:06.041Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/10/d950f249c9e50048890a515a4bad7e98c44ec4cde78ff4d6e37bfa022a19/pydantic_core-2.34.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:54f6bd146247c62b243fae34b535069614b255453fb1405c17b7d01d00976af7", size = 2038087, upload-time = "2025-04-17T20:30:40.982Z" }, + { url = "https://files.pythonhosted.org/packages/f5/6c/9177d1b5f9aac2775979b5d0a7f03589919dba05caf4d11d4ba9292ce105/pydantic_core-2.34.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9db4dab51a6515d7eb0763f200f4784075952b2a0afe84ce7048da3da70a51cb", size = 1864646, upload-time = "2025-04-17T20:30:43.485Z" }, + { url = "https://files.pythonhosted.org/packages/0a/36/8428d9848cfec707247d7d082deda2d20c8a6be8939c70adb228d9f9251d/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1444714e5c04dc20ad8246f8fd32b7ef4aef34f2fc7b349f71ae365ceb51e66", size = 1906297, upload-time = "2025-04-17T20:30:44.872Z" }, + { url = "https://files.pythonhosted.org/packages/74/53/d0c33441434a3c2ea79ad5b0c8063f5c55a1173ecf38a0a5632c18205df3/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fffe3dd67708719a59e82ae36d6b431e2fb4e11b14f36f173c93e448ba963825", size = 1991861, upload-time = "2025-04-17T20:30:46.677Z" }, + { url = "https://files.pythonhosted.org/packages/35/9b/e19d326eeb1bf83f1f9d5f98a1e244da3441258824ae410b0dfb06c1ab5b/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91f64f2f538d8da4a61d1d7dd515dfa535375bddfa1de0b543af650f2a9ae0a8", size = 2142095, upload-time = "2025-04-17T20:30:48.499Z" }, + { url = "https://files.pythonhosted.org/packages/de/25/b68f48ff4b3a7e3b3fb23cc1cd0dd12c024eabfa3641116dc984ff92222f/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d17f447fffbef877aab4bca91c65d0ccdb3ef776c3db24f88c499565568a489", size = 2745180, upload-time = "2025-04-17T20:30:49.86Z" }, + { url = "https://files.pythonhosted.org/packages/76/07/671c2c3876bd5f8a446d8264bc4832d23d2589786c6bd132b29181a1aa4a/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a44cd4d7651a586344cdd474e0740a8d2ee9dba9d1169f980b479b14a8b4891", size = 2015014, upload-time = "2025-04-17T20:30:51.775Z" }, + { url = "https://files.pythonhosted.org/packages/0b/33/47970d638c0db6b1087fc8ecaae0abc1cb67c7010e316560d1ef6ab4c664/pydantic_core-2.34.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:564b56ce0e64a48ec338b06205b8753cc648133ec3f9c9af9dcfd403fc7af040", size = 2120837, upload-time = "2025-04-17T20:30:53.303Z" }, + { url = "https://files.pythonhosted.org/packages/76/0b/7ce9448cfe087d5a4a084d067c317b92a631e10c6ed4a11687bb841f6296/pydantic_core-2.34.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:def02d3a0296a171d6723f97cc135ae827bdaca24c9f0665d23ad6f8096334d1", size = 2083217, upload-time = "2025-04-17T20:30:54.645Z" }, + { url = "https://files.pythonhosted.org/packages/47/ca/13426f6593baff1dd544f6f884ce03f43133ef3787640e816fdc8ac5ec1f/pydantic_core-2.34.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:b72c63ed0399fdb7f45b7985025aa851d6c964801b1ad7c58f3ce8f75bc4e070", size = 2254441, upload-time = "2025-04-17T20:30:56.516Z" }, + { url = "https://files.pythonhosted.org/packages/7c/7d/ecd2d9661000981f511ec996548024abdd3fcdd37a3582d4f30572f94651/pydantic_core-2.34.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eae6a05d4612d15ba5e22879b710d770d310dbdac6edc53126b86a3be4fe78b5", size = 2252748, upload-time = "2025-04-17T20:30:58.303Z" }, + { url = "https://files.pythonhosted.org/packages/17/2f/baeda4059c46361a917973fb938e6564c0b9970113dba4f126c2dcc32595/pydantic_core-2.34.1-cp310-cp310-win32.whl", hash = "sha256:51aae06a854be524f7a33fd2ccc54a37577a7b37c77813794483cbb00829d646", size = 1918465, upload-time = "2025-04-17T20:31:00.108Z" }, + { url = "https://files.pythonhosted.org/packages/e3/93/156001796df52ed6738fe1cd394a6741737260fec318ab4b97085edd9909/pydantic_core-2.34.1-cp310-cp310-win_amd64.whl", hash = "sha256:4f3044c1626b46d5c21e67d9fd16fd854e2847b23e7ebda75689733050959023", size = 1960435, upload-time = "2025-04-17T20:31:02.617Z" }, + { url = "https://files.pythonhosted.org/packages/c7/48/79d53d1822736d8304adb7bf12842c880a576fa53e670a4e0bcc9ebc7458/pydantic_core-2.34.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:922d7931884fbd5f46785d3e6998c58d1ee3a381b4714d1b5a95da5f41795b7c", size = 2037938, upload-time = "2025-04-17T20:31:04.26Z" }, + { url = "https://files.pythonhosted.org/packages/57/33/bd9ee10002c5dacc954624443f2b6ec0d90f1a72ea24479fd70f1c00bba2/pydantic_core-2.34.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ca84244021b9d88bd979cb062c58fe7bd00689371b538284f00582781fd1047e", size = 1865764, upload-time = "2025-04-17T20:31:06.19Z" }, + { url = "https://files.pythonhosted.org/packages/86/1f/b01bf845616c590895a1edb3daf6749d641209374e65712e2b6174a98fa2/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61f5536849eac65c638e47b7ed69ca9b8f353247936feea3862ff773d0f3e349", size = 1906063, upload-time = "2025-04-17T20:31:07.803Z" }, + { url = "https://files.pythonhosted.org/packages/56/a6/fb1f3495dadf291be196e2907b084519e982dd5c762898dcfc05a8bdb80e/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8dbb8babb10c418ca18a149ee27a4df06db5ee4acc30c0576e8c35d9d3a9e9d3", size = 1993222, upload-time = "2025-04-17T20:31:09.488Z" }, + { url = "https://files.pythonhosted.org/packages/b1/53/766c15b82e67a8e5f6a26e30c80f9cb18f68145021ecb337e8124b7b7b4c/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec8ce161786818229e96774f4d9159df80589d89b7bc64f3251c57c3fb133289", size = 2142103, upload-time = "2025-04-17T20:31:11.505Z" }, + { url = "https://files.pythonhosted.org/packages/04/80/fdb17009b0b78c4cdbd7ce33fc434f45c34f5edd95fed9b3f76b01dc93e1/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8d59fcb88752869183b0685e3e6a9d46cb3109280fa452ede7994b9ccff734e", size = 2738738, upload-time = "2025-04-17T20:31:13.191Z" }, + { url = "https://files.pythonhosted.org/packages/17/2d/499578ff0d40d411d094fbc35a3d8709dbe7a3e48bc99e6caf9fbbf5ded7/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff39a5611d098fcd821dacdfb01dabb434054867d3df646e7b11981a6770a195", size = 2012075, upload-time = "2025-04-17T20:31:14.95Z" }, + { url = "https://files.pythonhosted.org/packages/03/ff/8528ba1261d0d548d88200b9b887633a8599c2baf4326872e7a2d838bdd2/pydantic_core-2.34.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6194d491d34ee7667a71cb51f107c9c9266608f86d7fef1e9644acfc7f3e189a", size = 2121560, upload-time = "2025-04-17T20:31:16.668Z" }, + { url = "https://files.pythonhosted.org/packages/13/23/7314c1a12db9d3bc7036d94d5c78c81701d9149299f1db0fecbe9a3ed71c/pydantic_core-2.34.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c59c3cadc8a0ae1ac9bed2d7e78f93e71e5d99bba5f9f121c5d7bd41f1faa89a", size = 2083123, upload-time = "2025-04-17T20:31:18.316Z" }, + { url = "https://files.pythonhosted.org/packages/90/75/40f499b653bd745a23e5e7deda21171b559014b41d676ec14f2acc1418fd/pydantic_core-2.34.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:e331d7ec5ec582c5078db948eca25d637c0a7f88a037b5016c48cb7c63f7da2c", size = 2255737, upload-time = "2025-04-17T20:31:19.932Z" }, + { url = "https://files.pythonhosted.org/packages/64/b0/6440bbaea7b5bb53dd40e1b725cf06356d01820feb0cb9ffb0b0fd2db125/pydantic_core-2.34.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:71c2d7cb5c9087301f5d2a488ce51e090bd682849b5a59cf4f75a9ce08044f64", size = 2252186, upload-time = "2025-04-17T20:31:21.587Z" }, + { url = "https://files.pythonhosted.org/packages/bf/43/6fe3ed2bfbf2068c42d0de892ba5f9b7bdadd494268f56b13bebd592d384/pydantic_core-2.34.1-cp311-cp311-win32.whl", hash = "sha256:dbec17f32828541af5bcebe0ea124235fc620bb5e5d56bf76e38b5b0ad37299d", size = 1917814, upload-time = "2025-04-17T20:31:23.723Z" }, + { url = "https://files.pythonhosted.org/packages/c2/57/b39a659a2b5a9c76e239720db257bb1c930349d5094dce93d1b022d2e17b/pydantic_core-2.34.1-cp311-cp311-win_amd64.whl", hash = "sha256:91175524a4cb485333d4119454645c7adefeda34845e66ade277cae670ad8b58", size = 1957753, upload-time = "2025-04-17T20:31:25.474Z" }, + { url = "https://files.pythonhosted.org/packages/e5/1d/da4c39b0ee8033f783df8bd7b41e662fadfa8d1be629d74b8e5ff5bfe97e/pydantic_core-2.34.1-cp311-cp311-win_arm64.whl", hash = "sha256:d9cb67f2d7d1f129af7e05dbf4fe209f4df043ea1245086bce2a5ee00ca2f5cc", size = 1905663, upload-time = "2025-04-17T20:31:27.298Z" }, + { url = "https://files.pythonhosted.org/packages/ee/44/be71fcdaabc51210171ad47ba58667f5389b55029f2c04a8e009b0cd3bd6/pydantic_core-2.34.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:406f85849878788a3fd4b73410955dbbb038a70a8c0d7bb9201084242b035bb5", size = 2019724, upload-time = "2025-04-17T20:31:29.008Z" }, + { url = "https://files.pythonhosted.org/packages/3f/dd/c8d5dafae46eacd3a619fe7476794acbbfc5ec170993bce4aed1e6e5773c/pydantic_core-2.34.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a953737ad0ce8a6b0130fa77851ab639c576e2c11e16a417392e04f8ec1d40dd", size = 1851663, upload-time = "2025-04-17T20:31:31.086Z" }, + { url = "https://files.pythonhosted.org/packages/e6/3a/5f64080cba0002600b7254ecb61a54fbff3ef74023322e3625d95ae8a44a/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e12b71b0ed28cc751e59653d0415aded476f255984dbf0f99d6880342d1911db", size = 1889055, upload-time = "2025-04-17T20:31:32.895Z" }, + { url = "https://files.pythonhosted.org/packages/2b/86/6ef6b3820fd52cba959e1b1b109734de99339fcbe78de6f22cb84a1ba568/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c6fe9cb158200d9a83a38fed3c2cb6766a98adc5f61940ccdd41a75231762e89", size = 1976847, upload-time = "2025-04-17T20:31:34.605Z" }, + { url = "https://files.pythonhosted.org/packages/7c/93/e4d8c3ce244a528e226e4276c973f1b222ca3bc09e3660506f0b707896aa/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:448a11df0edc8a1a4072a13d34ad7e048e7c7941635432ffc39036e8bf4454a3", size = 2128118, upload-time = "2025-04-17T20:31:36.419Z" }, + { url = "https://files.pythonhosted.org/packages/5e/91/a05cfdaebc9b0e72848dd20b0461a2f3d70cf7578763db8bf077031a83b1/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:642ca6940d2bc027d8ac8ddd4c1c7e7ae3dbb0277e26ab2c42a562cc96f9f048", size = 2686857, upload-time = "2025-04-17T20:31:38.219Z" }, + { url = "https://files.pythonhosted.org/packages/37/c7/aa7eb3c22a12fbac158835c5fbd62d2059405838c977a61ba90fb3d9214a/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7126ea9858f9c23a3ec7cd9ecc18be93d1546fe76bc7b331389caf29c4d411f", size = 2013073, upload-time = "2025-04-17T20:31:39.993Z" }, + { url = "https://files.pythonhosted.org/packages/0a/14/98d941d9af7d0860884223919c513d2b3b87eec121f3fc9d8864e984ea01/pydantic_core-2.34.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d74a8e53545bcfd0515754ece2b018fabfb81c0e49d825f8cc1dba09c911f404", size = 2107513, upload-time = "2025-04-17T20:31:41.817Z" }, + { url = "https://files.pythonhosted.org/packages/e9/97/84d36d0c8f92c84ca515e634838f4db29db336d14a65350274ec39927609/pydantic_core-2.34.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:edc0c6d41431849c6f2f6301f713af730884136c06613a41fd6778446b5bc7c5", size = 2066685, upload-time = "2025-04-17T20:31:44.34Z" }, + { url = "https://files.pythonhosted.org/packages/2c/5a/1a8d8e3690b595787ab041c0ebab2af6a47dda4df3e087c58ea92cef134c/pydantic_core-2.34.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:f5ee164fb0be1a56c7639794b400815ce36eeb14cdf0a914527c80481b43b43c", size = 2239959, upload-time = "2025-04-17T20:31:46.185Z" }, + { url = "https://files.pythonhosted.org/packages/68/72/559845386d05391b5f180711e23efe03811d0b3f9b5a75295da8b2dd8dd4/pydantic_core-2.34.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b5beed6e1f3ee3d20a93b02bdb28dcc94bd192c09f433cd114efcf8ad13829f0", size = 2241120, upload-time = "2025-04-17T20:31:48.007Z" }, + { url = "https://files.pythonhosted.org/packages/57/8b/3ff432a0d84037df43cdca3cb16ba416cb622b619755fe2bbea6b48dd101/pydantic_core-2.34.1-cp312-cp312-win32.whl", hash = "sha256:00d7e7b6a0b2d2294e3dc2d2b170fa860577fc0e286460d7cfd0e90c1a2a1267", size = 1900094, upload-time = "2025-04-17T20:31:49.755Z" }, + { url = "https://files.pythonhosted.org/packages/4b/a8/5560b14afe572e6bdc5e7f0067717a7269e45225d9762dd7b57be0babdc0/pydantic_core-2.34.1-cp312-cp312-win_amd64.whl", hash = "sha256:4122151c1f4eb883556adc9e624564731872eb1647f5408028649d69b8565879", size = 1972744, upload-time = "2025-04-17T20:31:51.603Z" }, + { url = "https://files.pythonhosted.org/packages/65/ec/64cc90d57bc109f1147f1b3d64439420948a1a0cbee83aeedda6af0d06d0/pydantic_core-2.34.1-cp312-cp312-win_arm64.whl", hash = "sha256:59054ba986777afb760c3283fcf0bfe27a6a1be970f6c7b3bcfde33985a69823", size = 1896488, upload-time = "2025-04-17T20:31:53.469Z" }, + { url = "https://files.pythonhosted.org/packages/84/c2/60c310e7d471d590adce553bb0788256ad749bbf4f95f8c1e780e83b4ac6/pydantic_core-2.34.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:a7385b01cb068b87b35a95799b4e2b1c6456269d7b9a5e8b4dcfe2547bdaccaf", size = 2026574, upload-time = "2025-04-17T20:31:55.401Z" }, + { url = "https://files.pythonhosted.org/packages/e0/51/8f8af7364febb498856bee3f1cc4c4cba45fcaf00622ade3839cb93e8023/pydantic_core-2.34.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d26e1ba192c3207fa2a3d1e049ad7710ace1f09e67ae70e52495db70292cc12d", size = 1851446, upload-time = "2025-04-17T20:31:57.765Z" }, + { url = "https://files.pythonhosted.org/packages/54/26/93f8fb98f73043e22aa35a3384044694f7fcf2ef7d3031e9ddb47941c4ef/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abdefd076e7857f23caa4cfeacdae831d5e948ac227125b4d35b92b5fb77976c", size = 1893875, upload-time = "2025-04-17T20:31:59.626Z" }, + { url = "https://files.pythonhosted.org/packages/35/d3/ae4b5b05b25768252a39f5835a3a4906ca4778a922a2e227a0775ce39c46/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6beb001b3dfc3a6705fd0bec935cf77e99ad37e43f4e82b15495c2c2e678d005", size = 1985569, upload-time = "2025-04-17T20:32:01.502Z" }, + { url = "https://files.pythonhosted.org/packages/24/3c/361f8a0edc2b40a746fb19b97d13847e843b474fbcb2654e4df25d1a19a9/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:502c81a0e3db1010aabdb309456c7217151e94bb20abdbeb766b2df25be84320", size = 2128538, upload-time = "2025-04-17T20:32:03.387Z" }, + { url = "https://files.pythonhosted.org/packages/1f/06/edc987266114e25550845c9602f28234721475a7efa84aa9b3cfaafa3d0c/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df50a223e1a8e8a066a806267b11ffc47fd797736ffafa70734629305b1b6fe6", size = 2687776, upload-time = "2025-04-17T20:32:05.385Z" }, + { url = "https://files.pythonhosted.org/packages/c4/a6/a339a95abd8f65ece666147d3457c81abb7c35621c855f02703185b1fa7a/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54e31294764110fc266111f49d5ddd9356773b13fdf848cc261ef07a18de2568", size = 2010400, upload-time = "2025-04-17T20:32:07.318Z" }, + { url = "https://files.pythonhosted.org/packages/86/7d/4c4c0e072829588d931162c8371de2cad68f067e9564c8fad49b0516e813/pydantic_core-2.34.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3bb7a0d84fea2629d10adcf46470ef48ac786976f6c3130a441a260beb4dbad", size = 2115352, upload-time = "2025-04-17T20:32:09.293Z" }, + { url = "https://files.pythonhosted.org/packages/89/7b/c899ecad0773d1de65e531bb7432886d5d83eeed56e2ccebe0b0434eddeb/pydantic_core-2.34.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:596ea8427dde3721b829ce37e9166efb65c01e25e1977008702b5b081124cec5", size = 2070414, upload-time = "2025-04-17T20:32:11.714Z" }, + { url = "https://files.pythonhosted.org/packages/ed/6c/b866f1568d436b5f74289225d9e0a5904c9d56ac4fb1929893e7a05253e4/pydantic_core-2.34.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:b50cd1cd02c525c44d0b4127833436b491f71a6a2ef93d503e29b0b672fe5acb", size = 2248628, upload-time = "2025-04-17T20:32:14.159Z" }, + { url = "https://files.pythonhosted.org/packages/09/5b/bd0efb630476c01f46fc9de8af59a1261bd2e17a8d6e70be2166ce68bd42/pydantic_core-2.34.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a4a44c73e5e58113c1b6a4fe2ab7a151a9d6a0ab612a8e107a6d557c980853f1", size = 2248738, upload-time = "2025-04-17T20:32:16.007Z" }, + { url = "https://files.pythonhosted.org/packages/7b/c2/3542e28e1238cef011f0058d156c4473e921f6ea08cd2c4f9bf77bec1492/pydantic_core-2.34.1-cp313-cp313-win32.whl", hash = "sha256:6d908cdc6ee50c463f64792892b7980bad8eea0c231fd09a7db7d8375aeb350e", size = 1906826, upload-time = "2025-04-17T20:32:18.386Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ac/713daff8e6df9ac565a44ea066dd37c3a3ae7171ef93329f7c782cff9bae/pydantic_core-2.34.1-cp313-cp313-win_amd64.whl", hash = "sha256:83343e0a9b0e929231bde8d2d7d5dd93dd3af22556bc9a538d729a9ba6824cf4", size = 1971800, upload-time = "2025-04-17T20:32:20.698Z" }, + { url = "https://files.pythonhosted.org/packages/99/7d/7df9b739c42e499acc832e6a06fd27b97cc6f374224e9053140c2245edc0/pydantic_core-2.34.1-cp313-cp313-win_arm64.whl", hash = "sha256:92757e71447ff68fa63091c5c4a5f595225fba3f427e987516db56f39568b38e", size = 1903059, upload-time = "2025-04-17T20:32:22.62Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ee/9db88f26f7f284550dfa7467533e37392ed007b641d95e34bc259ad00895/pydantic_core-2.34.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:32ff9e9e07f80815115466a586f5b437679802cdc79ff58935fc0a4b4b6de77f", size = 1811340, upload-time = "2025-04-17T20:32:24.513Z" }, + { url = "https://files.pythonhosted.org/packages/bd/83/8c64954765295648af41130f04fb7f490c11e89cdfe1f06a9767fa8bf485/pydantic_core-2.34.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00643ebd798a05111218e9fe17f8b0f782e7cb94cd427b3118938563a81872a5", size = 1986955, upload-time = "2025-04-17T20:32:26.45Z" }, + { url = "https://files.pythonhosted.org/packages/ac/41/eaa43c0b1a506aba0fae4dae8095cb363caf5b79e9aad284f09aafd2b0eb/pydantic_core-2.34.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b1f5392e6a615a93f8ba2f71454c096798dd4d944ca27bbca793cfb0e3faaf1d", size = 1942120, upload-time = "2025-04-17T20:32:28.7Z" }, + { url = "https://files.pythonhosted.org/packages/2d/4a/0500862bd02a0c0f6517a266dddd587e299a4ac9cf6715b1a10565fa3078/pydantic_core-2.34.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8a7b34f16772a7b02944c1910125fb0b0c89d34c5045e6ea0746044722b592d3", size = 2038228, upload-time = "2025-04-17T20:32:30.702Z" }, + { url = "https://files.pythonhosted.org/packages/60/1a/3cbff2c0ad96f78b38118dc6a347c0e12a7aede8dd9ad67d52651b5fc9f4/pydantic_core-2.34.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6e1af10b5c6b91732bc8385b472b8b68c120dab52564a0f195409a7020ad3f58", size = 1872870, upload-time = "2025-04-17T20:32:32.78Z" }, + { url = "https://files.pythonhosted.org/packages/e1/cd/7a6bb217ad3b7f730dff4abd36f1e7cf6032025408d15dcef01e0d3d9a97/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03c1722c3755b7fbaafcf7e8d331803c6109f96b4df52eb91ea9e1e5f24ee96a", size = 1906430, upload-time = "2025-04-17T20:32:35.319Z" }, + { url = "https://files.pythonhosted.org/packages/d6/b2/54ab389304567b841d6f366e6da2ca53e9b0c923da4029da351c9a545dc3/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:967a7dc51597a1cc6a0782abf069e549e183101cb3c129a5a37a8e12a956306f", size = 1992407, upload-time = "2025-04-17T20:32:37.384Z" }, + { url = "https://files.pythonhosted.org/packages/3c/8f/50e4985198fd00af37c697d4d8b98eaf8a2abf5e28a9e4c8945d964c3e97/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b20ff6e14af8c5e3073304c4ec818a9f20bd92ce9d6d5716982803a5bb0851b6", size = 2142490, upload-time = "2025-04-17T20:32:39.69Z" }, + { url = "https://files.pythonhosted.org/packages/8d/51/ba611f3d687e58fa85246edaa806a916e1694afaeba7bce540504e2b23ad/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c21506d9761d51972d3408c45e38ab44e7bdd244cc7e1e2fcd4af0cd6322cb33", size = 2744301, upload-time = "2025-04-17T20:32:41.803Z" }, + { url = "https://files.pythonhosted.org/packages/f9/09/39e701ce1a5ae6548ac41922ed42da1511827a835a21ed1d5a461e49fb0a/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57e914ce885275b5c9d9641aabc30f2e70945eec65e0e1a915b0242c58a0a5fe", size = 2016408, upload-time = "2025-04-17T20:32:44.355Z" }, + { url = "https://files.pythonhosted.org/packages/c1/03/ce681227b9d4ad410936b2a6c0cb20cf201a2d0332c337828440b31338f9/pydantic_core-2.34.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:390c1c17c3eb47ccb0180af002881294d87203fd01ab617902a6eb740713c017", size = 2121256, upload-time = "2025-04-17T20:32:46.444Z" }, + { url = "https://files.pythonhosted.org/packages/cf/55/8a9cc2104acb11b76de2765c7969bfc79bd7d86b89cb07d783ed14d68f3b/pydantic_core-2.34.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d38504ecbf67b7fe60ae2db028e1b1a54df92a2b899628c82b3edfe885a88059", size = 2083871, upload-time = "2025-04-17T20:32:48.801Z" }, + { url = "https://files.pythonhosted.org/packages/4b/89/07b245b60c3add551d20338bd6cda7005be98f5c8ec1062834726fe89f66/pydantic_core-2.34.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:b010fd1d65b536552fc07633b84538300847dc0544ebfea06986017909b4b65e", size = 2254926, upload-time = "2025-04-17T20:32:50.949Z" }, + { url = "https://files.pythonhosted.org/packages/77/cc/6cef2ec380e57e20bae11c92495267cb46cff1df28a7a6e278b92532ed0c/pydantic_core-2.34.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8da35468c5b54142f503b2a7edb0a2252cb6e21206371ab56cb709f064215500", size = 2253401, upload-time = "2025-04-17T20:32:53.415Z" }, + { url = "https://files.pythonhosted.org/packages/81/60/10f517468900879f6dc0afae282d278d0b793e623858210e25933ae1d01c/pydantic_core-2.34.1-cp39-cp39-win32.whl", hash = "sha256:4b667f9285c0ffccd17d1ac668da776c5da4c3957391c98a0c4c8ff5f378f040", size = 1918322, upload-time = "2025-04-17T20:32:55.552Z" }, + { url = "https://files.pythonhosted.org/packages/5f/58/1e0cfd39b72a52fed5220b5ed5bbba1924d1c0c3cce5e0836a693bb6e26d/pydantic_core-2.34.1-cp39-cp39-win_amd64.whl", hash = "sha256:648a65762994cab52b14c40058290fe0dbbd2ce907b42d7ab7b565fffcfc8617", size = 1962585, upload-time = "2025-04-17T20:32:57.72Z" }, + { url = "https://files.pythonhosted.org/packages/bf/f8/50803d0099af8f490bb6bcdecbe220df24c6472f19bc6adbc4af4ca5103a/pydantic_core-2.34.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:66406c996569bfaa9d6938ccbc43695bc19ee3185dd7ba3e08615e04ca3a0fbe", size = 2035023, upload-time = "2025-04-17T20:33:00.212Z" }, + { url = "https://files.pythonhosted.org/packages/33/1a/6073fd39aa6460d6890a3a84e277393b45765f2c872fd633374b3c6d08f7/pydantic_core-2.34.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a1215a14a145630ce00135d9ea696b5c587f0d166579cef541e8743530dbe134", size = 1867929, upload-time = "2025-04-17T20:33:02.274Z" }, + { url = "https://files.pythonhosted.org/packages/b0/4b/4f96ef0786bc7176f26e67f809e7350ea887598a2372b9e69bb9fec00f48/pydantic_core-2.34.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb5882ad329cec0b58f006840be4b981938303de5ec72e61160b66f86515bd58", size = 1900902, upload-time = "2025-04-17T20:33:04.371Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ca/c9e790808f0b217234f79c8a379c5783a6cc5350504e614f24f01b0d66aa/pydantic_core-2.34.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:215e185af1ace9682dcaf3bde93d2c78256016ebcfb736b47ed4f58defcfd7bf", size = 2077429, upload-time = "2025-04-17T20:33:06.469Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b8/f1cb581892dc96820967a894a0205ebf405f3aff73a08dea6312d223c5a7/pydantic_core-2.34.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:911024e92269e0da607eeee32ab5f6e460e8afe74e0859a353d8f77a09440ab2", size = 2116895, upload-time = "2025-04-17T20:33:08.642Z" }, + { url = "https://files.pythonhosted.org/packages/e4/37/555f5cbe5d62457260e85cf91525bd1186f697303db0056d9ae664292cdc/pydantic_core-2.34.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b1073b3688aa0b1834e54a2e4f1aaa72306bbe72138983a0bd4bf3c8ac9751d5", size = 2077587, upload-time = "2025-04-17T20:33:10.731Z" }, + { url = "https://files.pythonhosted.org/packages/b5/a0/b0a359ee9b3bb9d0a838b9891bd3f5d2ff3afe993500860c4b29111c6812/pydantic_core-2.34.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:16c73d64c4ff64a8c107bd779dfc957f6d5add4f14d348441a836ec23d620cf4", size = 2247416, upload-time = "2025-04-17T20:33:13.261Z" }, + { url = "https://files.pythonhosted.org/packages/33/cf/b03a86dbc7f00fdac44ac11045ceb80db04fa91a477fa23562ea1a1bc142/pydantic_core-2.34.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ca7d1b95b1bca481fb6a8c0ae684a053eef0d6da9e819f6361fd1da7bc1c54ad", size = 2248907, upload-time = "2025-04-17T20:33:15.472Z" }, + { url = "https://files.pythonhosted.org/packages/a4/88/7031a9395b20093e128676bf697b6dc96c07b21ae2c5611ef4e70fad8631/pydantic_core-2.34.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:286981cc3a187e128d5223f37b5660dcf7021f16f4164dee28c4ff78e0fcd040", size = 2075820, upload-time = "2025-04-17T20:33:17.624Z" }, + { url = "https://files.pythonhosted.org/packages/04/b2/27724854768e29f8f6c9975dc94851cbf579ef4ca6063e046b7a91ffb79f/pydantic_core-2.34.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7c848c98ceaf3d1d6369814565da0b2f4aa1cd8b3bf28767261f54a13b8b387d", size = 2036183, upload-time = "2025-04-17T20:33:19.883Z" }, + { url = "https://files.pythonhosted.org/packages/c6/18/ff9d9e91d333ba93ea55477196b28f9cbc712668a84817c1ae5da10bb69f/pydantic_core-2.34.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:c80e6d594122345b41659e5d5ad9cb5d732d81a1da83c336e1b13f55794abafe", size = 1868773, upload-time = "2025-04-17T20:33:22.224Z" }, + { url = "https://files.pythonhosted.org/packages/10/49/5ec5bb4c7c530853e54ec4f1fde0ec216c44abb3b7b70c8e2e63e21b60c3/pydantic_core-2.34.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64b8fa876a63cf806ad0d13dc7205b47512c90f192df2c1ad6a7f49a90015003", size = 1900859, upload-time = "2025-04-17T20:33:24.777Z" }, + { url = "https://files.pythonhosted.org/packages/93/84/9ee32d2468d0f7df469d7f927d63950ebbf4493898c4f8e88f363c505828/pydantic_core-2.34.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2d8176efe66d54a5f7d3052b394ede8c0d2bb80144d1bf6c9b30a9d1fdfaea", size = 2077388, upload-time = "2025-04-17T20:33:27.004Z" }, + { url = "https://files.pythonhosted.org/packages/01/56/b43444372fb9fd88ae867d907b184b8776e353dacf6d4c1f80a350bc4f82/pydantic_core-2.34.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:69eb11a0bcbdb49c04494980206e9449d361b78b35ad64478d9ab15db837bec9", size = 2117737, upload-time = "2025-04-17T20:33:31.284Z" }, + { url = "https://files.pythonhosted.org/packages/a0/37/1b5da00af59ed09eafebda1d8bc3c816b2777b64d054f9203d05c6445630/pydantic_core-2.34.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b30d9d48390deb789c84205fc76ad6c27b00819d60dc955186e9387c55370413", size = 2077383, upload-time = "2025-04-17T20:33:33.736Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ac/de6883ac0617243370cfed67ba785aaae27bea5e3369ed329ddadbba360b/pydantic_core-2.34.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e3da84e67845c83e88c7e96df3e487a16752753f19241d17e887f1f39b7a851c", size = 2248548, upload-time = "2025-04-17T20:33:35.971Z" }, + { url = "https://files.pythonhosted.org/packages/c3/9e/3b4f95aca1742eaa064e402f2388a2f1013f2214f7fb0f4f6155eff3dec3/pydantic_core-2.34.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:9b3946e2fb4a7821b59a70193530f463dd532fd6d25f13e9c6521df736906777", size = 2248760, upload-time = "2025-04-17T20:33:38.572Z" }, + { url = "https://files.pythonhosted.org/packages/f8/4d/06e5db4b171a708c35149b475aa8823a3553c9d4b8b3d6afc1736d5665bc/pydantic_core-2.34.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:46b2ae1824bb07939f77d4a390a1a0a5b0838e34ac9427cf21c89a7a925f1ad7", size = 2075955, upload-time = "2025-04-17T20:33:40.8Z" }, + { url = "https://files.pythonhosted.org/packages/01/a7/3d3347ef8685efd48f0f9044e2ab44a33865ba2bd48e9c297aab9990a636/pydantic_core-2.34.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9fd3ae017ad680b744ffe257627c3503889d2a6ef2b7d1493483e9faccf7abc7", size = 2035248, upload-time = "2025-04-17T20:33:43.189Z" }, + { url = "https://files.pythonhosted.org/packages/7c/00/3f8e0632c27ce1d969b5e9caf8d5d609719c2951df786ad5616f7e8c1b34/pydantic_core-2.34.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:18ff148029c246e3ca36164ca07fa3d0d7c99d2feab98e12bce97da63e67bcdb", size = 1868441, upload-time = "2025-04-17T20:33:45.485Z" }, + { url = "https://files.pythonhosted.org/packages/0d/0a/2f02f1e1aed3d3aebbabe560a6e0ca5de7ea080aeebded29a4c5cf05c99d/pydantic_core-2.34.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7c7ac737d1544615403e8a98956fc02b7505f713c531eab7c4b265618e82af3", size = 1901157, upload-time = "2025-04-17T20:33:48.441Z" }, + { url = "https://files.pythonhosted.org/packages/0e/cd/f601db334adf27808b6179415538cc3581f542daacd3eb931a3b32d1a100/pydantic_core-2.34.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d8f64e49175f98416b7193c818741916dc29783256f684324cee262a1b35d57", size = 2078186, upload-time = "2025-04-17T20:33:51.228Z" }, + { url = "https://files.pythonhosted.org/packages/b2/35/7c5bf738ce45ad9943aca8d6fde04db9e43c5cb17b7248e2d07cb1546458/pydantic_core-2.34.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e19bb6d38d5259b20de62618928fe33d60c4b15975f891503e0703776d23e9f7", size = 2117064, upload-time = "2025-04-17T20:33:53.934Z" }, + { url = "https://files.pythonhosted.org/packages/bb/5d/ff9d24da5991f22ce44e6b101c672a439f97be1f3f0f433334d945ae7aa2/pydantic_core-2.34.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ee4491ebcee7f58054585fedeaca653e9822b97445e9b1700ed29846a963f210", size = 2078212, upload-time = "2025-04-17T20:33:56.604Z" }, + { url = "https://files.pythonhosted.org/packages/0b/b7/71cda0671a13529f9d5d2b2c92113e40eb759cdcc661abd921393344ed47/pydantic_core-2.34.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:08a5b5da50a28a5bae06120aaae7ff086b19a870c74f6ab110326893252822f8", size = 2247591, upload-time = "2025-04-17T20:33:58.967Z" }, + { url = "https://files.pythonhosted.org/packages/c0/20/2a2199fd7b2b3b238df64bf42198450a45d7891a1115e539a99d6b4ed5d8/pydantic_core-2.34.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:a85f3126af1cf983f252738209713f625982ede1557e1991feb6e817c1116b23", size = 2249304, upload-time = "2025-04-17T20:34:01.38Z" }, + { url = "https://files.pythonhosted.org/packages/ea/09/3404f068c7b4884e6c9c557dac52a04e575b1bf25911e99a70b34ac2daf7/pydantic_core-2.34.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:6074b7d2bc969caf9669303e815f52a448ed8f107f17e2905474e7b956a64481", size = 2076010, upload-time = "2025-04-17T20:34:03.771Z" }, ] [[package]] @@ -1996,9 +1996,9 @@ dependencies = [ { name = "pydantic" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/92/8542f406466d11bf348b795d498906034f9bb9016f09e906ff7fee6444be/pydantic_extra_types-2.10.0.tar.gz", hash = "sha256:552c47dd18fe1d00cfed75d9981162a2f3203cf7e77e55a3d3e70936f59587b9", size = 44559 } +sdist = { url = "https://files.pythonhosted.org/packages/f4/92/8542f406466d11bf348b795d498906034f9bb9016f09e906ff7fee6444be/pydantic_extra_types-2.10.0.tar.gz", hash = "sha256:552c47dd18fe1d00cfed75d9981162a2f3203cf7e77e55a3d3e70936f59587b9", size = 44559, upload-time = "2024-11-04T17:31:08.939Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/41/0b0cc8b59c31a04bdfde2ae71fccbb13c11fadafc8bd41a2af3e76db7e44/pydantic_extra_types-2.10.0-py3-none-any.whl", hash = "sha256:b19943914e6286548254f5079d1da094e9c0583ee91a8e611e9df24bfd07dbcd", size = 34185 }, + { url = "https://files.pythonhosted.org/packages/38/41/0b0cc8b59c31a04bdfde2ae71fccbb13c11fadafc8bd41a2af3e76db7e44/pydantic_extra_types-2.10.0-py3-none-any.whl", hash = "sha256:b19943914e6286548254f5079d1da094e9c0583ee91a8e611e9df24bfd07dbcd", size = 34185, upload-time = "2024-11-04T17:31:07.567Z" }, ] [[package]] @@ -2009,27 +2009,27 @@ dependencies = [ { name = "pydantic" }, { name = "python-dotenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/73/7b/c58a586cd7d9ac66d2ee4ba60ca2d241fa837c02bca9bea80a9a8c3d22a9/pydantic_settings-2.7.1.tar.gz", hash = "sha256:10c9caad35e64bfb3c2fbf70a078c0e25cc92499782e5200747f942a065dec93", size = 79920 } +sdist = { url = "https://files.pythonhosted.org/packages/73/7b/c58a586cd7d9ac66d2ee4ba60ca2d241fa837c02bca9bea80a9a8c3d22a9/pydantic_settings-2.7.1.tar.gz", hash = "sha256:10c9caad35e64bfb3c2fbf70a078c0e25cc92499782e5200747f942a065dec93", size = 79920, upload-time = "2024-12-31T11:27:44.632Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b4/46/93416fdae86d40879714f72956ac14df9c7b76f7d41a4d68aa9f71a0028b/pydantic_settings-2.7.1-py3-none-any.whl", hash = "sha256:590be9e6e24d06db33a4262829edef682500ef008565a969c73d39d5f8bfb3fd", size = 29718 }, + { url = "https://files.pythonhosted.org/packages/b4/46/93416fdae86d40879714f72956ac14df9c7b76f7d41a4d68aa9f71a0028b/pydantic_settings-2.7.1-py3-none-any.whl", hash = "sha256:590be9e6e24d06db33a4262829edef682500ef008565a969c73d39d5f8bfb3fd", size = 29718, upload-time = "2024-12-31T11:27:43.201Z" }, ] [[package]] name = "pyflakes" version = "3.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/57/f9/669d8c9c86613c9d568757c7f5824bd3197d7b1c6c27553bc5618a27cce2/pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f", size = 63788 } +sdist = { url = "https://files.pythonhosted.org/packages/57/f9/669d8c9c86613c9d568757c7f5824bd3197d7b1c6c27553bc5618a27cce2/pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f", size = 63788, upload-time = "2024-01-05T00:28:47.703Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/d7/f1b7db88d8e4417c5d47adad627a93547f44bdc9028372dbd2313f34a855/pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a", size = 62725 }, + { url = "https://files.pythonhosted.org/packages/d4/d7/f1b7db88d8e4417c5d47adad627a93547f44bdc9028372dbd2313f34a855/pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a", size = 62725, upload-time = "2024-01-05T00:28:45.903Z" }, ] [[package]] name = "pygments" version = "2.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload-time = "2025-01-06T17:26:30.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload-time = "2025-01-06T17:26:25.553Z" }, ] [[package]] @@ -2040,18 +2040,18 @@ dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e7/24/f7a412dc1630b1a6d7b288e7c736215ce878ee4aad24359f7f67b53bbaa9/pymdown_extensions-10.14.1.tar.gz", hash = "sha256:b65801996a0cd4f42a3110810c306c45b7313c09b0610a6f773730f2a9e3c96b", size = 845243 } +sdist = { url = "https://files.pythonhosted.org/packages/e7/24/f7a412dc1630b1a6d7b288e7c736215ce878ee4aad24359f7f67b53bbaa9/pymdown_extensions-10.14.1.tar.gz", hash = "sha256:b65801996a0cd4f42a3110810c306c45b7313c09b0610a6f773730f2a9e3c96b", size = 845243, upload-time = "2025-01-22T01:15:06.463Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/09/fb/79a8d27966e90feeeb686395c8b1bff8221727abcbd80d2485841393a955/pymdown_extensions-10.14.1-py3-none-any.whl", hash = "sha256:637951cbfbe9874ba28134fb3ce4b8bcadd6aca89ac4998ec29dcbafd554ae08", size = 264283 }, + { url = "https://files.pythonhosted.org/packages/09/fb/79a8d27966e90feeeb686395c8b1bff8221727abcbd80d2485841393a955/pymdown_extensions-10.14.1-py3-none-any.whl", hash = "sha256:637951cbfbe9874ba28134fb3ce4b8bcadd6aca89ac4998ec29dcbafd554ae08", size = 264283, upload-time = "2025-01-22T01:15:05.155Z" }, ] [[package]] name = "pyparsing" version = "3.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/1a/3544f4f299a47911c2ab3710f534e52fea62a633c96806995da5d25be4b2/pyparsing-3.2.1.tar.gz", hash = "sha256:61980854fd66de3a90028d679a954d5f2623e83144b5afe5ee86f43d762e5f0a", size = 1067694 } +sdist = { url = "https://files.pythonhosted.org/packages/8b/1a/3544f4f299a47911c2ab3710f534e52fea62a633c96806995da5d25be4b2/pyparsing-3.2.1.tar.gz", hash = "sha256:61980854fd66de3a90028d679a954d5f2623e83144b5afe5ee86f43d762e5f0a", size = 1067694, upload-time = "2024-12-31T20:59:46.157Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl", hash = "sha256:506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1", size = 107716 }, + { url = "https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl", hash = "sha256:506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1", size = 107716, upload-time = "2024-12-31T20:59:42.738Z" }, ] [[package]] @@ -2062,9 +2062,9 @@ dependencies = [ { name = "nodeenv" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/df/3c6f6b08fba7ccf49b114dfc4bb33e25c299883fd763f93fad47ef8bc58d/pyright-1.1.392.post0.tar.gz", hash = "sha256:3b7f88de74a28dcfa90c7d90c782b6569a48c2be5f9d4add38472bdaac247ebd", size = 3789911 } +sdist = { url = "https://files.pythonhosted.org/packages/66/df/3c6f6b08fba7ccf49b114dfc4bb33e25c299883fd763f93fad47ef8bc58d/pyright-1.1.392.post0.tar.gz", hash = "sha256:3b7f88de74a28dcfa90c7d90c782b6569a48c2be5f9d4add38472bdaac247ebd", size = 3789911, upload-time = "2025-01-15T15:01:20.913Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/b1/a18de17f40e4f61ca58856b9ef9b0febf74ff88978c3f7776f910071f567/pyright-1.1.392.post0-py3-none-any.whl", hash = "sha256:252f84458a46fa2f0fd4e2f91fc74f50b9ca52c757062e93f6c250c0d8329eb2", size = 5595487 }, + { url = "https://files.pythonhosted.org/packages/e7/b1/a18de17f40e4f61ca58856b9ef9b0febf74ff88978c3f7776f910071f567/pyright-1.1.392.post0-py3-none-any.whl", hash = "sha256:252f84458a46fa2f0fd4e2f91fc74f50b9ca52c757062e93f6c250c0d8329eb2", size = 5595487, upload-time = "2025-01-15T15:01:17.775Z" }, ] [[package]] @@ -2079,9 +2079,9 @@ dependencies = [ { name = "pluggy" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919 } +sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919, upload-time = "2024-12-01T12:54:25.98Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083 }, + { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083, upload-time = "2024-12-01T12:54:19.735Z" }, ] [[package]] @@ -2092,9 +2092,9 @@ dependencies = [ { name = "py-cpuinfo" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/d0/a8bd08d641b393db3be3819b03e2d9bb8760ca8479080a26a5f6e540e99c/pytest-benchmark-5.1.0.tar.gz", hash = "sha256:9ea661cdc292e8231f7cd4c10b0319e56a2118e2c09d9f50e1b3d150d2aca105", size = 337810 } +sdist = { url = "https://files.pythonhosted.org/packages/39/d0/a8bd08d641b393db3be3819b03e2d9bb8760ca8479080a26a5f6e540e99c/pytest-benchmark-5.1.0.tar.gz", hash = "sha256:9ea661cdc292e8231f7cd4c10b0319e56a2118e2c09d9f50e1b3d150d2aca105", size = 337810, upload-time = "2024-10-30T11:51:48.521Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/d6/b41653199ea09d5969d4e385df9bbfd9a100f28ca7e824ce7c0a016e3053/pytest_benchmark-5.1.0-py3-none-any.whl", hash = "sha256:922de2dfa3033c227c96da942d1878191afa135a29485fb942e85dff1c592c89", size = 44259 }, + { url = "https://files.pythonhosted.org/packages/9e/d6/b41653199ea09d5969d4e385df9bbfd9a100f28ca7e824ce7c0a016e3053/pytest_benchmark-5.1.0-py3-none-any.whl", hash = "sha256:922de2dfa3033c227c96da942d1878191afa135a29485fb942e85dff1c592c89", size = 44259, upload-time = "2024-10-30T11:51:45.94Z" }, ] [[package]] @@ -2107,19 +2107,19 @@ dependencies = [ { name = "pytest" }, { name = "rich" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/36/39/4a94b61e981f993d52d0fbff259c3de08a2fb884a77464f35522031125d5/pytest_codspeed-3.1.2.tar.gz", hash = "sha256:09c1733af3aab35e94a621aa510f2d2114f65591e6f644c42ca3f67547edad4b", size = 18277 } +sdist = { url = "https://files.pythonhosted.org/packages/36/39/4a94b61e981f993d52d0fbff259c3de08a2fb884a77464f35522031125d5/pytest_codspeed-3.1.2.tar.gz", hash = "sha256:09c1733af3aab35e94a621aa510f2d2114f65591e6f644c42ca3f67547edad4b", size = 18277, upload-time = "2025-01-09T13:42:03.27Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/ca/8fbcf065e10fcde0d766fa40452e1e348ad17456b87584fb3136c8b53809/pytest_codspeed-3.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aed496f873670ce0ea8f980a7c1a2c6a08f415e0ebdf207bf651b2d922103374", size = 26734 }, - { url = "https://files.pythonhosted.org/packages/f6/b9/852971f76d8e4aa73ef4dcc028c07d2d8f2ca7add8eb8bc94f9e6053c879/pytest_codspeed-3.1.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee45b0b763f6b5fa5d74c7b91d694a9615561c428b320383660672f4471756e3", size = 25373 }, - { url = "https://files.pythonhosted.org/packages/44/9f/5d2c0879256ca824c720baf5fac61d51179dd16111c609abab4f84e8ddcb/pytest_codspeed-3.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c84e591a7a0f67d45e2dc9fd05b276971a3aabcab7478fe43363ebefec1358f4", size = 26742 }, - { url = "https://files.pythonhosted.org/packages/5b/ff/862657f1a5a5dc9682dc7c23849fdabb0501df8da44eb307b1a9c3017254/pytest_codspeed-3.1.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c6ae6d094247156407770e6b517af70b98862dd59a3c31034aede11d5f71c32c", size = 25375 }, - { url = "https://files.pythonhosted.org/packages/1b/bb/42fa7de046ddd0cefb1987d72e7ed4ee5ae4d962c8e6c62c29a8d6334e90/pytest_codspeed-3.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d0f264991de5b5cdc118b96fc671386cca3f0f34e411482939bf2459dc599097", size = 27114 }, - { url = "https://files.pythonhosted.org/packages/0a/8e/bc84e8f94637ef31323961e25ce83508edb630e05a5956ce585fa96b57f2/pytest_codspeed-3.1.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c0695a4bcd5ff04e8379124dba5d9795ea5e0cadf38be7a0406432fc1467b555", size = 25870 }, - { url = "https://files.pythonhosted.org/packages/d6/a1/b85a880916d8c8992a18ce2ee41b179e867af1b5d9ea1c27a68190780d3d/pytest_codspeed-3.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6dc356c8dcaaa883af83310f397ac06c96fac9b8a1146e303d4b374b2cb46a18", size = 27112 }, - { url = "https://files.pythonhosted.org/packages/23/44/2ba137983072cad2c853687fa737138b790cc0f71dc1842f3672488c61fc/pytest_codspeed-3.1.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cc8a5d0366322a75cf562f7d8d672d28c1cf6948695c4dddca50331e08f6b3d5", size = 25859 }, - { url = "https://files.pythonhosted.org/packages/ea/f4/8deca488c04d993eb8b9a7c30408bdffcd84b87eda8f83759718a8f82efb/pytest_codspeed-3.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c5fe7a19b72f54f217480b3b527102579547b1de9fe3acd9e66cb4629ff46c8", size = 26725 }, - { url = "https://files.pythonhosted.org/packages/c1/8f/0433514dd85f136057b31c27264bab08a3b96c91f3870912a9a1cb362572/pytest_codspeed-3.1.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b67205755a665593f6521a98317d02a9d07d6fdc593f6634de2c94dea47a3055", size = 25364 }, - { url = "https://files.pythonhosted.org/packages/a0/9f/7833be9ce5ceed7284955e1c1602a19552c397861a5b3c1eab3d6b26fca7/pytest_codspeed-3.1.2-py3-none-any.whl", hash = "sha256:5e7ed0315e33496c5c07dba262b50303b8d0bc4c3d10bf1d422a41e70783f1cb", size = 14938 }, + { url = "https://files.pythonhosted.org/packages/a5/ca/8fbcf065e10fcde0d766fa40452e1e348ad17456b87584fb3136c8b53809/pytest_codspeed-3.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aed496f873670ce0ea8f980a7c1a2c6a08f415e0ebdf207bf651b2d922103374", size = 26734, upload-time = "2025-01-09T13:41:44.96Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b9/852971f76d8e4aa73ef4dcc028c07d2d8f2ca7add8eb8bc94f9e6053c879/pytest_codspeed-3.1.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ee45b0b763f6b5fa5d74c7b91d694a9615561c428b320383660672f4471756e3", size = 25373, upload-time = "2025-01-09T13:41:47.236Z" }, + { url = "https://files.pythonhosted.org/packages/44/9f/5d2c0879256ca824c720baf5fac61d51179dd16111c609abab4f84e8ddcb/pytest_codspeed-3.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c84e591a7a0f67d45e2dc9fd05b276971a3aabcab7478fe43363ebefec1358f4", size = 26742, upload-time = "2025-01-09T13:41:49.265Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ff/862657f1a5a5dc9682dc7c23849fdabb0501df8da44eb307b1a9c3017254/pytest_codspeed-3.1.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c6ae6d094247156407770e6b517af70b98862dd59a3c31034aede11d5f71c32c", size = 25375, upload-time = "2025-01-09T13:41:51.295Z" }, + { url = "https://files.pythonhosted.org/packages/1b/bb/42fa7de046ddd0cefb1987d72e7ed4ee5ae4d962c8e6c62c29a8d6334e90/pytest_codspeed-3.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d0f264991de5b5cdc118b96fc671386cca3f0f34e411482939bf2459dc599097", size = 27114, upload-time = "2025-01-09T13:41:52.675Z" }, + { url = "https://files.pythonhosted.org/packages/0a/8e/bc84e8f94637ef31323961e25ce83508edb630e05a5956ce585fa96b57f2/pytest_codspeed-3.1.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c0695a4bcd5ff04e8379124dba5d9795ea5e0cadf38be7a0406432fc1467b555", size = 25870, upload-time = "2025-01-09T13:41:54.72Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a1/b85a880916d8c8992a18ce2ee41b179e867af1b5d9ea1c27a68190780d3d/pytest_codspeed-3.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6dc356c8dcaaa883af83310f397ac06c96fac9b8a1146e303d4b374b2cb46a18", size = 27112, upload-time = "2025-01-09T13:41:55.656Z" }, + { url = "https://files.pythonhosted.org/packages/23/44/2ba137983072cad2c853687fa737138b790cc0f71dc1842f3672488c61fc/pytest_codspeed-3.1.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cc8a5d0366322a75cf562f7d8d672d28c1cf6948695c4dddca50331e08f6b3d5", size = 25859, upload-time = "2025-01-09T13:41:57.94Z" }, + { url = "https://files.pythonhosted.org/packages/ea/f4/8deca488c04d993eb8b9a7c30408bdffcd84b87eda8f83759718a8f82efb/pytest_codspeed-3.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6c5fe7a19b72f54f217480b3b527102579547b1de9fe3acd9e66cb4629ff46c8", size = 26725, upload-time = "2025-01-09T13:42:00.461Z" }, + { url = "https://files.pythonhosted.org/packages/c1/8f/0433514dd85f136057b31c27264bab08a3b96c91f3870912a9a1cb362572/pytest_codspeed-3.1.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b67205755a665593f6521a98317d02a9d07d6fdc593f6634de2c94dea47a3055", size = 25364, upload-time = "2025-01-09T13:42:01.434Z" }, + { url = "https://files.pythonhosted.org/packages/a0/9f/7833be9ce5ceed7284955e1c1602a19552c397861a5b3c1eab3d6b26fca7/pytest_codspeed-3.1.2-py3-none-any.whl", hash = "sha256:5e7ed0315e33496c5c07dba262b50303b8d0bc4c3d10bf1d422a41e70783f1cb", size = 14938, upload-time = "2025-01-09T13:42:02.329Z" }, ] [[package]] @@ -2131,9 +2131,9 @@ dependencies = [ { name = "pytest" }, { name = "ruff" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c3/82/fa4fb866d52934de97b90c84c89896faebfb984436804fc3baa55d48d511/pytest_examples-0.0.15.tar.gz", hash = "sha256:2d6ced2d1f0d59863f81a4d2f193737464b8004a7670907c3bedef6306a5d660", size = 20771 } +sdist = { url = "https://files.pythonhosted.org/packages/c3/82/fa4fb866d52934de97b90c84c89896faebfb984436804fc3baa55d48d511/pytest_examples-0.0.15.tar.gz", hash = "sha256:2d6ced2d1f0d59863f81a4d2f193737464b8004a7670907c3bedef6306a5d660", size = 20771, upload-time = "2024-11-20T17:27:37.086Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/81/3f727a7d2f9c1ff36f581453949a4af314629108642d5140298476e90902/pytest_examples-0.0.15-py3-none-any.whl", hash = "sha256:6e4adc522bf2e3f93cae3b37a4add76fcc2c1ada29d8988b2ea15b236233ec0f", size = 17922 }, + { url = "https://files.pythonhosted.org/packages/ba/81/3f727a7d2f9c1ff36f581453949a4af314629108642d5140298476e90902/pytest_examples-0.0.15-py3-none-any.whl", hash = "sha256:6e4adc522bf2e3f93cae3b37a4add76fcc2c1ada29d8988b2ea15b236233ec0f", size = 17922, upload-time = "2024-11-20T17:27:35.155Z" }, ] [[package]] @@ -2144,9 +2144,9 @@ dependencies = [ { name = "memray" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4b/33/31536fa35fae6b040f7bb31375c6b95d025eb38e16416c23c0daa36bcb1f/pytest_memray-1.7.0.tar.gz", hash = "sha256:c18fa907d2210b42f4096c093e2d3416dfc002dcaa450ef3f9ba819bc3dd8f5f", size = 240564 } +sdist = { url = "https://files.pythonhosted.org/packages/4b/33/31536fa35fae6b040f7bb31375c6b95d025eb38e16416c23c0daa36bcb1f/pytest_memray-1.7.0.tar.gz", hash = "sha256:c18fa907d2210b42f4096c093e2d3416dfc002dcaa450ef3f9ba819bc3dd8f5f", size = 240564, upload-time = "2024-07-25T13:18:09.081Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/24/1b/fe19affdc41e522aabc4e5df78edb0cd8f59cb6ae2fb151dec1797593a42/pytest_memray-1.7.0-py3-none-any.whl", hash = "sha256:b896718c1adf6d0cd339dfaaaa5620f035c9919e1199a79b3453804a1254306f", size = 17679 }, + { url = "https://files.pythonhosted.org/packages/24/1b/fe19affdc41e522aabc4e5df78edb0cd8f59cb6ae2fb151dec1797593a42/pytest_memray-1.7.0-py3-none-any.whl", hash = "sha256:b896718c1adf6d0cd339dfaaaa5620f035c9919e1199a79b3453804a1254306f", size = 17679, upload-time = "2024-07-25T13:18:07.482Z" }, ] [[package]] @@ -2156,9 +2156,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c6/90/a955c3ab35ccd41ad4de556596fa86685bf4fc5ffcc62d22d856cfd4e29a/pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0", size = 32814 } +sdist = { url = "https://files.pythonhosted.org/packages/c6/90/a955c3ab35ccd41ad4de556596fa86685bf4fc5ffcc62d22d856cfd4e29a/pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0", size = 32814, upload-time = "2024-03-21T22:14:04.964Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f2/3b/b26f90f74e2986a82df6e7ac7e319b8ea7ccece1caec9f8ab6104dc70603/pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f", size = 9863 }, + { url = "https://files.pythonhosted.org/packages/f2/3b/b26f90f74e2986a82df6e7ac7e319b8ea7ccece1caec9f8ab6104dc70603/pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f", size = 9863, upload-time = "2024-03-21T22:14:02.694Z" }, ] [[package]] @@ -2169,9 +2169,9 @@ dependencies = [ { name = "pytest" }, { name = "rich" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a5/18/30ad0408295f3157f7a4913f0eaa51a0a377ebad0ffa51ff239e833c6c72/pytest_pretty-1.2.0.tar.gz", hash = "sha256:105a355f128e392860ad2c478ae173ff96d2f03044692f9818ff3d49205d3a60", size = 6542 } +sdist = { url = "https://files.pythonhosted.org/packages/a5/18/30ad0408295f3157f7a4913f0eaa51a0a377ebad0ffa51ff239e833c6c72/pytest_pretty-1.2.0.tar.gz", hash = "sha256:105a355f128e392860ad2c478ae173ff96d2f03044692f9818ff3d49205d3a60", size = 6542, upload-time = "2023-04-05T17:11:50.917Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/fe/d44d391312c1b8abee2af58ee70fabb1c00b6577ac4e0bdf25b70c1caffb/pytest_pretty-1.2.0-py3-none-any.whl", hash = "sha256:6f79122bf53864ae2951b6c9e94d7a06a87ef753476acd4588aeac018f062036", size = 6180 }, + { url = "https://files.pythonhosted.org/packages/bf/fe/d44d391312c1b8abee2af58ee70fabb1c00b6577ac4e0bdf25b70c1caffb/pytest_pretty-1.2.0-py3-none-any.whl", hash = "sha256:6f79122bf53864ae2951b6c9e94d7a06a87ef753476acd4588aeac018f062036", size = 6180, upload-time = "2023-04-05T17:11:49.801Z" }, ] [[package]] @@ -2181,9 +2181,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fe/13/d3bcb2c52f63b774be612cbee51f33a5cf2fa97d2f60fe26264f6720477b/pytest_run_parallel-0.3.1.tar.gz", hash = "sha256:636306d3ed6838898d8d42b3cd379dac7b327ce6d68df1bcc30d55a208d5081e", size = 14142 } +sdist = { url = "https://files.pythonhosted.org/packages/fe/13/d3bcb2c52f63b774be612cbee51f33a5cf2fa97d2f60fe26264f6720477b/pytest_run_parallel-0.3.1.tar.gz", hash = "sha256:636306d3ed6838898d8d42b3cd379dac7b327ce6d68df1bcc30d55a208d5081e", size = 14142, upload-time = "2025-02-05T20:29:11.504Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/67/4943178bb5dacb2e0b745b4db4ab126112dafab66266f2262896e791dbbe/pytest_run_parallel-0.3.1-py3-none-any.whl", hash = "sha256:0675c9e4c8e843085333c66bc0ce6b8091e3509dc8e6df3429f05c28f5345b17", size = 9468 }, + { url = "https://files.pythonhosted.org/packages/4d/67/4943178bb5dacb2e0b745b4db4ab126112dafab66266f2262896e791dbbe/pytest_run_parallel-0.3.1-py3-none-any.whl", hash = "sha256:0675c9e4c8e843085333c66bc0ce6b8091e3509dc8e6df3429f05c28f5345b17", size = 9468, upload-time = "2025-02-05T20:29:10.406Z" }, ] [[package]] @@ -2193,27 +2193,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] [[package]] name = "python-dotenv" version = "1.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bc/57/e84d88dfe0aec03b7a2d4327012c1627ab5f03652216c63d49846d7a6c58/python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca", size = 39115 } +sdist = { url = "https://files.pythonhosted.org/packages/bc/57/e84d88dfe0aec03b7a2d4327012c1627ab5f03652216c63d49846d7a6c58/python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca", size = 39115, upload-time = "2024-01-23T06:33:00.505Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a", size = 19863 }, + { url = "https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a", size = 19863, upload-time = "2024-01-23T06:32:58.246Z" }, ] [[package]] name = "pytz" version = "2024.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/31/3c70bf7603cc2dca0f19bdc53b4537a797747a58875b552c8c413d963a3f/pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a", size = 319692 } +sdist = { url = "https://files.pythonhosted.org/packages/3a/31/3c70bf7603cc2dca0f19bdc53b4537a797747a58875b552c8c413d963a3f/pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a", size = 319692, upload-time = "2024-09-11T02:24:47.91Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/c3/005fcca25ce078d2cc29fd559379817424e94885510568bc1bc53d7d5846/pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725", size = 508002 }, + { url = "https://files.pythonhosted.org/packages/11/c3/005fcca25ce078d2cc29fd559379817424e94885510568bc1bc53d7d5846/pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725", size = 508002, upload-time = "2024-09-11T02:24:45.8Z" }, ] [[package]] @@ -2223,62 +2223,62 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "tokenize-rt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/35/3a/efa8e75cf84d53f1b3f0113387ab120ef460396a4068e41b6cf18a3d216d/pyupgrade-3.19.1.tar.gz", hash = "sha256:d10e8c5f54b8327211828769e98d95d95e4715de632a3414f1eef3f51357b9e2", size = 45116 } +sdist = { url = "https://files.pythonhosted.org/packages/35/3a/efa8e75cf84d53f1b3f0113387ab120ef460396a4068e41b6cf18a3d216d/pyupgrade-3.19.1.tar.gz", hash = "sha256:d10e8c5f54b8327211828769e98d95d95e4715de632a3414f1eef3f51357b9e2", size = 45116, upload-time = "2024-12-17T01:43:02.326Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/dd/43/c6c1ff945c7900613f6e6ef2a8688639a247d62eb0ffa9935c599f69c08e/pyupgrade-3.19.1-py2.py3-none-any.whl", hash = "sha256:8c5b0bfacae5ff30fa136a53eb7f22c34ba007450d4099e9da8089dabb9e67c9", size = 62412 }, + { url = "https://files.pythonhosted.org/packages/dd/43/c6c1ff945c7900613f6e6ef2a8688639a247d62eb0ffa9935c599f69c08e/pyupgrade-3.19.1-py2.py3-none-any.whl", hash = "sha256:8c5b0bfacae5ff30fa136a53eb7f22c34ba007450d4099e9da8089dabb9e67c9", size = 62412, upload-time = "2024-12-17T01:42:59.829Z" }, ] [[package]] name = "pyyaml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199 }, - { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758 }, - { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463 }, - { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280 }, - { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239 }, - { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802 }, - { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527 }, - { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052 }, - { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774 }, - { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612 }, - { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040 }, - { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829 }, - { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167 }, - { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952 }, - { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301 }, - { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638 }, - { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850 }, - { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980 }, - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, - { url = "https://files.pythonhosted.org/packages/65/d8/b7a1db13636d7fb7d4ff431593c510c8b8fca920ade06ca8ef20015493c5/PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d", size = 184777 }, - { url = "https://files.pythonhosted.org/packages/0a/02/6ec546cd45143fdf9840b2c6be8d875116a64076218b61d68e12548e5839/PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f", size = 172318 }, - { url = "https://files.pythonhosted.org/packages/0e/9a/8cc68be846c972bda34f6c2a93abb644fb2476f4dcc924d52175786932c9/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290", size = 720891 }, - { url = "https://files.pythonhosted.org/packages/e9/6c/6e1b7f40181bc4805e2e07f4abc10a88ce4648e7e95ff1abe4ae4014a9b2/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12", size = 722614 }, - { url = "https://files.pythonhosted.org/packages/3d/32/e7bd8535d22ea2874cef6a81021ba019474ace0d13a4819c2a4bce79bd6a/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19", size = 737360 }, - { url = "https://files.pythonhosted.org/packages/d7/12/7322c1e30b9be969670b672573d45479edef72c9a0deac3bb2868f5d7469/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e", size = 699006 }, - { url = "https://files.pythonhosted.org/packages/82/72/04fcad41ca56491995076630c3ec1e834be241664c0c09a64c9a2589b507/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725", size = 723577 }, - { url = "https://files.pythonhosted.org/packages/ed/5e/46168b1f2757f1fcd442bc3029cd8767d88a98c9c05770d8b420948743bb/PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631", size = 144593 }, - { url = "https://files.pythonhosted.org/packages/19/87/5124b1c1f2412bb95c59ec481eaf936cd32f0fe2a7b16b97b81c4c017a6a/PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8", size = 162312 }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199, upload-time = "2024-08-06T20:31:40.178Z" }, + { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758, upload-time = "2024-08-06T20:31:42.173Z" }, + { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463, upload-time = "2024-08-06T20:31:44.263Z" }, + { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280, upload-time = "2024-08-06T20:31:50.199Z" }, + { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239, upload-time = "2024-08-06T20:31:52.292Z" }, + { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802, upload-time = "2024-08-06T20:31:53.836Z" }, + { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527, upload-time = "2024-08-06T20:31:55.565Z" }, + { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052, upload-time = "2024-08-06T20:31:56.914Z" }, + { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774, upload-time = "2024-08-06T20:31:58.304Z" }, + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload-time = "2024-08-06T20:32:03.408Z" }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload-time = "2024-08-06T20:32:04.926Z" }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload-time = "2024-08-06T20:32:06.459Z" }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload-time = "2024-08-06T20:32:08.338Z" }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload-time = "2024-08-06T20:32:14.124Z" }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload-time = "2024-08-06T20:32:16.17Z" }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload-time = "2024-08-06T20:32:18.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload-time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload-time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload-time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload-time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload-time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload-time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, + { url = "https://files.pythonhosted.org/packages/65/d8/b7a1db13636d7fb7d4ff431593c510c8b8fca920ade06ca8ef20015493c5/PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d", size = 184777, upload-time = "2024-08-06T20:33:25.896Z" }, + { url = "https://files.pythonhosted.org/packages/0a/02/6ec546cd45143fdf9840b2c6be8d875116a64076218b61d68e12548e5839/PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f", size = 172318, upload-time = "2024-08-06T20:33:27.212Z" }, + { url = "https://files.pythonhosted.org/packages/0e/9a/8cc68be846c972bda34f6c2a93abb644fb2476f4dcc924d52175786932c9/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290", size = 720891, upload-time = "2024-08-06T20:33:28.974Z" }, + { url = "https://files.pythonhosted.org/packages/e9/6c/6e1b7f40181bc4805e2e07f4abc10a88ce4648e7e95ff1abe4ae4014a9b2/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12", size = 722614, upload-time = "2024-08-06T20:33:34.157Z" }, + { url = "https://files.pythonhosted.org/packages/3d/32/e7bd8535d22ea2874cef6a81021ba019474ace0d13a4819c2a4bce79bd6a/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19", size = 737360, upload-time = "2024-08-06T20:33:35.84Z" }, + { url = "https://files.pythonhosted.org/packages/d7/12/7322c1e30b9be969670b672573d45479edef72c9a0deac3bb2868f5d7469/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e", size = 699006, upload-time = "2024-08-06T20:33:37.501Z" }, + { url = "https://files.pythonhosted.org/packages/82/72/04fcad41ca56491995076630c3ec1e834be241664c0c09a64c9a2589b507/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725", size = 723577, upload-time = "2024-08-06T20:33:39.389Z" }, + { url = "https://files.pythonhosted.org/packages/ed/5e/46168b1f2757f1fcd442bc3029cd8767d88a98c9c05770d8b420948743bb/PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631", size = 144593, upload-time = "2024-08-06T20:33:46.63Z" }, + { url = "https://files.pythonhosted.org/packages/19/87/5124b1c1f2412bb95c59ec481eaf936cd32f0fe2a7b16b97b81c4c017a6a/PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8", size = 162312, upload-time = "2024-08-06T20:33:49.073Z" }, ] [[package]] @@ -2288,9 +2288,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631 } +sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631, upload-time = "2020-11-12T02:38:26.239Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911 }, + { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911, upload-time = "2020-11-12T02:38:24.638Z" }, ] [[package]] @@ -2302,94 +2302,94 @@ dependencies = [ { name = "rpds-py" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/27/32/fd98246df7a0f309b58cae68b10b6b219ef2eb66747f00dfb34422687087/referencing-0.36.1.tar.gz", hash = "sha256:ca2e6492769e3602957e9b831b94211599d2aade9477f5d44110d2530cf9aade", size = 74661 } +sdist = { url = "https://files.pythonhosted.org/packages/27/32/fd98246df7a0f309b58cae68b10b6b219ef2eb66747f00dfb34422687087/referencing-0.36.1.tar.gz", hash = "sha256:ca2e6492769e3602957e9b831b94211599d2aade9477f5d44110d2530cf9aade", size = 74661, upload-time = "2025-01-17T02:22:05.463Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/fa/9f193ef0c9074b659009f06d7cbacc6f25b072044815bcf799b76533dbb8/referencing-0.36.1-py3-none-any.whl", hash = "sha256:363d9c65f080d0d70bc41c721dce3c7f3e77fc09f269cd5c8813da18069a6794", size = 26777 }, + { url = "https://files.pythonhosted.org/packages/cc/fa/9f193ef0c9074b659009f06d7cbacc6f25b072044815bcf799b76533dbb8/referencing-0.36.1-py3-none-any.whl", hash = "sha256:363d9c65f080d0d70bc41c721dce3c7f3e77fc09f269cd5c8813da18069a6794", size = 26777, upload-time = "2025-01-17T02:22:02.77Z" }, ] [[package]] name = "regex" version = "2024.11.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/3c/4651f6b130c6842a8f3df82461a8950f923925db8b6961063e82744bddcc/regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91", size = 482674 }, - { url = "https://files.pythonhosted.org/packages/15/51/9f35d12da8434b489c7b7bffc205c474a0a9432a889457026e9bc06a297a/regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0", size = 287684 }, - { url = "https://files.pythonhosted.org/packages/bd/18/b731f5510d1b8fb63c6b6d3484bfa9a59b84cc578ac8b5172970e05ae07c/regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e", size = 284589 }, - { url = "https://files.pythonhosted.org/packages/78/a2/6dd36e16341ab95e4c6073426561b9bfdeb1a9c9b63ab1b579c2e96cb105/regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde", size = 782511 }, - { url = "https://files.pythonhosted.org/packages/1b/2b/323e72d5d2fd8de0d9baa443e1ed70363ed7e7b2fb526f5950c5cb99c364/regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e", size = 821149 }, - { url = "https://files.pythonhosted.org/packages/90/30/63373b9ea468fbef8a907fd273e5c329b8c9535fee36fc8dba5fecac475d/regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2", size = 809707 }, - { url = "https://files.pythonhosted.org/packages/f2/98/26d3830875b53071f1f0ae6d547f1d98e964dd29ad35cbf94439120bb67a/regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf", size = 781702 }, - { url = "https://files.pythonhosted.org/packages/87/55/eb2a068334274db86208ab9d5599ffa63631b9f0f67ed70ea7c82a69bbc8/regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c", size = 771976 }, - { url = "https://files.pythonhosted.org/packages/74/c0/be707bcfe98254d8f9d2cff55d216e946f4ea48ad2fd8cf1428f8c5332ba/regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86", size = 697397 }, - { url = "https://files.pythonhosted.org/packages/49/dc/bb45572ceb49e0f6509f7596e4ba7031f6819ecb26bc7610979af5a77f45/regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67", size = 768726 }, - { url = "https://files.pythonhosted.org/packages/5a/db/f43fd75dc4c0c2d96d0881967897926942e935d700863666f3c844a72ce6/regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d", size = 775098 }, - { url = "https://files.pythonhosted.org/packages/99/d7/f94154db29ab5a89d69ff893159b19ada89e76b915c1293e98603d39838c/regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2", size = 839325 }, - { url = "https://files.pythonhosted.org/packages/f7/17/3cbfab1f23356fbbf07708220ab438a7efa1e0f34195bf857433f79f1788/regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008", size = 843277 }, - { url = "https://files.pythonhosted.org/packages/7e/f2/48b393b51900456155de3ad001900f94298965e1cad1c772b87f9cfea011/regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62", size = 773197 }, - { url = "https://files.pythonhosted.org/packages/45/3f/ef9589aba93e084cd3f8471fded352826dcae8489b650d0b9b27bc5bba8a/regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e", size = 261714 }, - { url = "https://files.pythonhosted.org/packages/42/7e/5f1b92c8468290c465fd50c5318da64319133231415a8aa6ea5ab995a815/regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519", size = 274042 }, - { url = "https://files.pythonhosted.org/packages/58/58/7e4d9493a66c88a7da6d205768119f51af0f684fe7be7bac8328e217a52c/regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638", size = 482669 }, - { url = "https://files.pythonhosted.org/packages/34/4c/8f8e631fcdc2ff978609eaeef1d6994bf2f028b59d9ac67640ed051f1218/regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7", size = 287684 }, - { url = "https://files.pythonhosted.org/packages/c5/1b/f0e4d13e6adf866ce9b069e191f303a30ab1277e037037a365c3aad5cc9c/regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20", size = 284589 }, - { url = "https://files.pythonhosted.org/packages/25/4d/ab21047f446693887f25510887e6820b93f791992994f6498b0318904d4a/regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114", size = 792121 }, - { url = "https://files.pythonhosted.org/packages/45/ee/c867e15cd894985cb32b731d89576c41a4642a57850c162490ea34b78c3b/regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3", size = 831275 }, - { url = "https://files.pythonhosted.org/packages/b3/12/b0f480726cf1c60f6536fa5e1c95275a77624f3ac8fdccf79e6727499e28/regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f", size = 818257 }, - { url = "https://files.pythonhosted.org/packages/bf/ce/0d0e61429f603bac433910d99ef1a02ce45a8967ffbe3cbee48599e62d88/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0", size = 792727 }, - { url = "https://files.pythonhosted.org/packages/e4/c1/243c83c53d4a419c1556f43777ccb552bccdf79d08fda3980e4e77dd9137/regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55", size = 780667 }, - { url = "https://files.pythonhosted.org/packages/c5/f4/75eb0dd4ce4b37f04928987f1d22547ddaf6c4bae697623c1b05da67a8aa/regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89", size = 776963 }, - { url = "https://files.pythonhosted.org/packages/16/5d/95c568574e630e141a69ff8a254c2f188b4398e813c40d49228c9bbd9875/regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d", size = 784700 }, - { url = "https://files.pythonhosted.org/packages/8e/b5/f8495c7917f15cc6fee1e7f395e324ec3e00ab3c665a7dc9d27562fd5290/regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34", size = 848592 }, - { url = "https://files.pythonhosted.org/packages/1c/80/6dd7118e8cb212c3c60b191b932dc57db93fb2e36fb9e0e92f72a5909af9/regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d", size = 852929 }, - { url = "https://files.pythonhosted.org/packages/11/9b/5a05d2040297d2d254baf95eeeb6df83554e5e1df03bc1a6687fc4ba1f66/regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45", size = 781213 }, - { url = "https://files.pythonhosted.org/packages/26/b7/b14e2440156ab39e0177506c08c18accaf2b8932e39fb092074de733d868/regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9", size = 261734 }, - { url = "https://files.pythonhosted.org/packages/80/32/763a6cc01d21fb3819227a1cc3f60fd251c13c37c27a73b8ff4315433a8e/regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60", size = 274052 }, - { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781 }, - { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455 }, - { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759 }, - { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976 }, - { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077 }, - { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160 }, - { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896 }, - { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997 }, - { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725 }, - { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481 }, - { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896 }, - { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138 }, - { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692 }, - { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135 }, - { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567 }, - { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525 }, - { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324 }, - { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617 }, - { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023 }, - { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072 }, - { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130 }, - { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857 }, - { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006 }, - { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650 }, - { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545 }, - { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045 }, - { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182 }, - { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733 }, - { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122 }, - { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545 }, - { url = "https://files.pythonhosted.org/packages/89/23/c4a86df398e57e26f93b13ae63acce58771e04bdde86092502496fa57f9c/regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839", size = 482682 }, - { url = "https://files.pythonhosted.org/packages/3c/8b/45c24ab7a51a1658441b961b86209c43e6bb9d39caf1e63f46ce6ea03bc7/regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e", size = 287679 }, - { url = "https://files.pythonhosted.org/packages/7a/d1/598de10b17fdafc452d11f7dada11c3be4e379a8671393e4e3da3c4070df/regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf", size = 284578 }, - { url = "https://files.pythonhosted.org/packages/49/70/c7eaa219efa67a215846766fde18d92d54cb590b6a04ffe43cef30057622/regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b", size = 782012 }, - { url = "https://files.pythonhosted.org/packages/89/e5/ef52c7eb117dd20ff1697968219971d052138965a4d3d9b95e92e549f505/regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0", size = 820580 }, - { url = "https://files.pythonhosted.org/packages/5f/3f/9f5da81aff1d4167ac52711acf789df13e789fe6ac9545552e49138e3282/regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b", size = 809110 }, - { url = "https://files.pythonhosted.org/packages/86/44/2101cc0890c3621b90365c9ee8d7291a597c0722ad66eccd6ffa7f1bcc09/regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef", size = 780919 }, - { url = "https://files.pythonhosted.org/packages/ce/2e/3e0668d8d1c7c3c0d397bf54d92fc182575b3a26939aed5000d3cc78760f/regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48", size = 771515 }, - { url = "https://files.pythonhosted.org/packages/a6/49/1bc4584254355e3dba930a3a2fd7ad26ccba3ebbab7d9100db0aff2eedb0/regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13", size = 696957 }, - { url = "https://files.pythonhosted.org/packages/c8/dd/42879c1fc8a37a887cd08e358af3d3ba9e23038cd77c7fe044a86d9450ba/regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2", size = 768088 }, - { url = "https://files.pythonhosted.org/packages/89/96/c05a0fe173cd2acd29d5e13c1adad8b706bcaa71b169e1ee57dcf2e74584/regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95", size = 774752 }, - { url = "https://files.pythonhosted.org/packages/b5/f3/a757748066255f97f14506483436c5f6aded7af9e37bca04ec30c90ca683/regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9", size = 838862 }, - { url = "https://files.pythonhosted.org/packages/5c/93/c6d2092fd479dcaeea40fc8fa673822829181ded77d294a7f950f1dda6e2/regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f", size = 842622 }, - { url = "https://files.pythonhosted.org/packages/ff/9c/daa99532c72f25051a90ef90e1413a8d54413a9e64614d9095b0c1c154d0/regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b", size = 772713 }, - { url = "https://files.pythonhosted.org/packages/13/5d/61a533ccb8c231b474ac8e3a7d70155b00dfc61af6cafdccd1947df6d735/regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57", size = 261756 }, - { url = "https://files.pythonhosted.org/packages/dc/7b/e59b7f7c91ae110d154370c24133f947262525b5d6406df65f23422acc17/regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983", size = 274110 }, +sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494, upload-time = "2024-11-06T20:12:31.635Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/3c/4651f6b130c6842a8f3df82461a8950f923925db8b6961063e82744bddcc/regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91", size = 482674, upload-time = "2024-11-06T20:08:57.575Z" }, + { url = "https://files.pythonhosted.org/packages/15/51/9f35d12da8434b489c7b7bffc205c474a0a9432a889457026e9bc06a297a/regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0", size = 287684, upload-time = "2024-11-06T20:08:59.787Z" }, + { url = "https://files.pythonhosted.org/packages/bd/18/b731f5510d1b8fb63c6b6d3484bfa9a59b84cc578ac8b5172970e05ae07c/regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e", size = 284589, upload-time = "2024-11-06T20:09:01.896Z" }, + { url = "https://files.pythonhosted.org/packages/78/a2/6dd36e16341ab95e4c6073426561b9bfdeb1a9c9b63ab1b579c2e96cb105/regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde", size = 782511, upload-time = "2024-11-06T20:09:04.062Z" }, + { url = "https://files.pythonhosted.org/packages/1b/2b/323e72d5d2fd8de0d9baa443e1ed70363ed7e7b2fb526f5950c5cb99c364/regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e", size = 821149, upload-time = "2024-11-06T20:09:06.237Z" }, + { url = "https://files.pythonhosted.org/packages/90/30/63373b9ea468fbef8a907fd273e5c329b8c9535fee36fc8dba5fecac475d/regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2", size = 809707, upload-time = "2024-11-06T20:09:07.715Z" }, + { url = "https://files.pythonhosted.org/packages/f2/98/26d3830875b53071f1f0ae6d547f1d98e964dd29ad35cbf94439120bb67a/regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf", size = 781702, upload-time = "2024-11-06T20:09:10.101Z" }, + { url = "https://files.pythonhosted.org/packages/87/55/eb2a068334274db86208ab9d5599ffa63631b9f0f67ed70ea7c82a69bbc8/regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c", size = 771976, upload-time = "2024-11-06T20:09:11.566Z" }, + { url = "https://files.pythonhosted.org/packages/74/c0/be707bcfe98254d8f9d2cff55d216e946f4ea48ad2fd8cf1428f8c5332ba/regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86", size = 697397, upload-time = "2024-11-06T20:09:13.119Z" }, + { url = "https://files.pythonhosted.org/packages/49/dc/bb45572ceb49e0f6509f7596e4ba7031f6819ecb26bc7610979af5a77f45/regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67", size = 768726, upload-time = "2024-11-06T20:09:14.85Z" }, + { url = "https://files.pythonhosted.org/packages/5a/db/f43fd75dc4c0c2d96d0881967897926942e935d700863666f3c844a72ce6/regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d", size = 775098, upload-time = "2024-11-06T20:09:16.504Z" }, + { url = "https://files.pythonhosted.org/packages/99/d7/f94154db29ab5a89d69ff893159b19ada89e76b915c1293e98603d39838c/regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2", size = 839325, upload-time = "2024-11-06T20:09:18.698Z" }, + { url = "https://files.pythonhosted.org/packages/f7/17/3cbfab1f23356fbbf07708220ab438a7efa1e0f34195bf857433f79f1788/regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008", size = 843277, upload-time = "2024-11-06T20:09:21.725Z" }, + { url = "https://files.pythonhosted.org/packages/7e/f2/48b393b51900456155de3ad001900f94298965e1cad1c772b87f9cfea011/regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62", size = 773197, upload-time = "2024-11-06T20:09:24.092Z" }, + { url = "https://files.pythonhosted.org/packages/45/3f/ef9589aba93e084cd3f8471fded352826dcae8489b650d0b9b27bc5bba8a/regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e", size = 261714, upload-time = "2024-11-06T20:09:26.36Z" }, + { url = "https://files.pythonhosted.org/packages/42/7e/5f1b92c8468290c465fd50c5318da64319133231415a8aa6ea5ab995a815/regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519", size = 274042, upload-time = "2024-11-06T20:09:28.762Z" }, + { url = "https://files.pythonhosted.org/packages/58/58/7e4d9493a66c88a7da6d205768119f51af0f684fe7be7bac8328e217a52c/regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638", size = 482669, upload-time = "2024-11-06T20:09:31.064Z" }, + { url = "https://files.pythonhosted.org/packages/34/4c/8f8e631fcdc2ff978609eaeef1d6994bf2f028b59d9ac67640ed051f1218/regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7", size = 287684, upload-time = "2024-11-06T20:09:32.915Z" }, + { url = "https://files.pythonhosted.org/packages/c5/1b/f0e4d13e6adf866ce9b069e191f303a30ab1277e037037a365c3aad5cc9c/regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20", size = 284589, upload-time = "2024-11-06T20:09:35.504Z" }, + { url = "https://files.pythonhosted.org/packages/25/4d/ab21047f446693887f25510887e6820b93f791992994f6498b0318904d4a/regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114", size = 792121, upload-time = "2024-11-06T20:09:37.701Z" }, + { url = "https://files.pythonhosted.org/packages/45/ee/c867e15cd894985cb32b731d89576c41a4642a57850c162490ea34b78c3b/regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3", size = 831275, upload-time = "2024-11-06T20:09:40.371Z" }, + { url = "https://files.pythonhosted.org/packages/b3/12/b0f480726cf1c60f6536fa5e1c95275a77624f3ac8fdccf79e6727499e28/regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f", size = 818257, upload-time = "2024-11-06T20:09:43.059Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ce/0d0e61429f603bac433910d99ef1a02ce45a8967ffbe3cbee48599e62d88/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0", size = 792727, upload-time = "2024-11-06T20:09:48.19Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c1/243c83c53d4a419c1556f43777ccb552bccdf79d08fda3980e4e77dd9137/regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55", size = 780667, upload-time = "2024-11-06T20:09:49.828Z" }, + { url = "https://files.pythonhosted.org/packages/c5/f4/75eb0dd4ce4b37f04928987f1d22547ddaf6c4bae697623c1b05da67a8aa/regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89", size = 776963, upload-time = "2024-11-06T20:09:51.819Z" }, + { url = "https://files.pythonhosted.org/packages/16/5d/95c568574e630e141a69ff8a254c2f188b4398e813c40d49228c9bbd9875/regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d", size = 784700, upload-time = "2024-11-06T20:09:53.982Z" }, + { url = "https://files.pythonhosted.org/packages/8e/b5/f8495c7917f15cc6fee1e7f395e324ec3e00ab3c665a7dc9d27562fd5290/regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34", size = 848592, upload-time = "2024-11-06T20:09:56.222Z" }, + { url = "https://files.pythonhosted.org/packages/1c/80/6dd7118e8cb212c3c60b191b932dc57db93fb2e36fb9e0e92f72a5909af9/regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d", size = 852929, upload-time = "2024-11-06T20:09:58.642Z" }, + { url = "https://files.pythonhosted.org/packages/11/9b/5a05d2040297d2d254baf95eeeb6df83554e5e1df03bc1a6687fc4ba1f66/regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45", size = 781213, upload-time = "2024-11-06T20:10:00.867Z" }, + { url = "https://files.pythonhosted.org/packages/26/b7/b14e2440156ab39e0177506c08c18accaf2b8932e39fb092074de733d868/regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9", size = 261734, upload-time = "2024-11-06T20:10:03.361Z" }, + { url = "https://files.pythonhosted.org/packages/80/32/763a6cc01d21fb3819227a1cc3f60fd251c13c37c27a73b8ff4315433a8e/regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60", size = 274052, upload-time = "2024-11-06T20:10:05.179Z" }, + { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781, upload-time = "2024-11-06T20:10:07.07Z" }, + { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455, upload-time = "2024-11-06T20:10:09.117Z" }, + { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759, upload-time = "2024-11-06T20:10:11.155Z" }, + { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976, upload-time = "2024-11-06T20:10:13.24Z" }, + { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077, upload-time = "2024-11-06T20:10:15.37Z" }, + { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160, upload-time = "2024-11-06T20:10:19.027Z" }, + { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896, upload-time = "2024-11-06T20:10:21.85Z" }, + { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997, upload-time = "2024-11-06T20:10:24.329Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725, upload-time = "2024-11-06T20:10:28.067Z" }, + { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481, upload-time = "2024-11-06T20:10:31.612Z" }, + { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896, upload-time = "2024-11-06T20:10:34.054Z" }, + { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138, upload-time = "2024-11-06T20:10:36.142Z" }, + { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692, upload-time = "2024-11-06T20:10:38.394Z" }, + { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135, upload-time = "2024-11-06T20:10:40.367Z" }, + { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567, upload-time = "2024-11-06T20:10:43.467Z" }, + { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525, upload-time = "2024-11-06T20:10:45.19Z" }, + { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324, upload-time = "2024-11-06T20:10:47.177Z" }, + { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617, upload-time = "2024-11-06T20:10:49.312Z" }, + { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023, upload-time = "2024-11-06T20:10:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072, upload-time = "2024-11-06T20:10:52.926Z" }, + { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130, upload-time = "2024-11-06T20:10:54.828Z" }, + { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857, upload-time = "2024-11-06T20:10:56.634Z" }, + { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006, upload-time = "2024-11-06T20:10:59.369Z" }, + { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650, upload-time = "2024-11-06T20:11:02.042Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545, upload-time = "2024-11-06T20:11:03.933Z" }, + { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045, upload-time = "2024-11-06T20:11:06.497Z" }, + { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182, upload-time = "2024-11-06T20:11:09.06Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733, upload-time = "2024-11-06T20:11:11.256Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122, upload-time = "2024-11-06T20:11:13.161Z" }, + { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545, upload-time = "2024-11-06T20:11:15Z" }, + { url = "https://files.pythonhosted.org/packages/89/23/c4a86df398e57e26f93b13ae63acce58771e04bdde86092502496fa57f9c/regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839", size = 482682, upload-time = "2024-11-06T20:11:52.65Z" }, + { url = "https://files.pythonhosted.org/packages/3c/8b/45c24ab7a51a1658441b961b86209c43e6bb9d39caf1e63f46ce6ea03bc7/regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e", size = 287679, upload-time = "2024-11-06T20:11:55.011Z" }, + { url = "https://files.pythonhosted.org/packages/7a/d1/598de10b17fdafc452d11f7dada11c3be4e379a8671393e4e3da3c4070df/regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf", size = 284578, upload-time = "2024-11-06T20:11:57.033Z" }, + { url = "https://files.pythonhosted.org/packages/49/70/c7eaa219efa67a215846766fde18d92d54cb590b6a04ffe43cef30057622/regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b", size = 782012, upload-time = "2024-11-06T20:11:59.218Z" }, + { url = "https://files.pythonhosted.org/packages/89/e5/ef52c7eb117dd20ff1697968219971d052138965a4d3d9b95e92e549f505/regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0", size = 820580, upload-time = "2024-11-06T20:12:01.969Z" }, + { url = "https://files.pythonhosted.org/packages/5f/3f/9f5da81aff1d4167ac52711acf789df13e789fe6ac9545552e49138e3282/regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b", size = 809110, upload-time = "2024-11-06T20:12:04.786Z" }, + { url = "https://files.pythonhosted.org/packages/86/44/2101cc0890c3621b90365c9ee8d7291a597c0722ad66eccd6ffa7f1bcc09/regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef", size = 780919, upload-time = "2024-11-06T20:12:06.944Z" }, + { url = "https://files.pythonhosted.org/packages/ce/2e/3e0668d8d1c7c3c0d397bf54d92fc182575b3a26939aed5000d3cc78760f/regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48", size = 771515, upload-time = "2024-11-06T20:12:09.9Z" }, + { url = "https://files.pythonhosted.org/packages/a6/49/1bc4584254355e3dba930a3a2fd7ad26ccba3ebbab7d9100db0aff2eedb0/regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13", size = 696957, upload-time = "2024-11-06T20:12:12.319Z" }, + { url = "https://files.pythonhosted.org/packages/c8/dd/42879c1fc8a37a887cd08e358af3d3ba9e23038cd77c7fe044a86d9450ba/regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2", size = 768088, upload-time = "2024-11-06T20:12:15.149Z" }, + { url = "https://files.pythonhosted.org/packages/89/96/c05a0fe173cd2acd29d5e13c1adad8b706bcaa71b169e1ee57dcf2e74584/regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95", size = 774752, upload-time = "2024-11-06T20:12:17.416Z" }, + { url = "https://files.pythonhosted.org/packages/b5/f3/a757748066255f97f14506483436c5f6aded7af9e37bca04ec30c90ca683/regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9", size = 838862, upload-time = "2024-11-06T20:12:19.639Z" }, + { url = "https://files.pythonhosted.org/packages/5c/93/c6d2092fd479dcaeea40fc8fa673822829181ded77d294a7f950f1dda6e2/regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f", size = 842622, upload-time = "2024-11-06T20:12:21.841Z" }, + { url = "https://files.pythonhosted.org/packages/ff/9c/daa99532c72f25051a90ef90e1413a8d54413a9e64614d9095b0c1c154d0/regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b", size = 772713, upload-time = "2024-11-06T20:12:24.785Z" }, + { url = "https://files.pythonhosted.org/packages/13/5d/61a533ccb8c231b474ac8e3a7d70155b00dfc61af6cafdccd1947df6d735/regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57", size = 261756, upload-time = "2024-11-06T20:12:26.975Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7b/e59b7f7c91ae110d154370c24133f947262525b5d6406df65f23422acc17/regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983", size = 274110, upload-time = "2024-11-06T20:12:29.368Z" }, ] [[package]] @@ -2402,9 +2402,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, ] [[package]] @@ -2416,162 +2416,162 @@ dependencies = [ { name = "pygments" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149, upload-time = "2024-11-01T16:43:57.873Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, + { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424, upload-time = "2024-11-01T16:43:55.817Z" }, ] [[package]] name = "rpds-py" version = "0.22.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/80/cce854d0921ff2f0a9fa831ba3ad3c65cee3a46711addf39a2af52df2cfd/rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d", size = 26771 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/42/2a/ead1d09e57449b99dcc190d8d2323e3a167421d8f8fdf0f217c6f6befe47/rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967", size = 359514 }, - { url = "https://files.pythonhosted.org/packages/8f/7e/1254f406b7793b586c68e217a6a24ec79040f85e030fff7e9049069284f4/rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37", size = 349031 }, - { url = "https://files.pythonhosted.org/packages/aa/da/17c6a2c73730d426df53675ff9cc6653ac7a60b6438d03c18e1c822a576a/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24", size = 381485 }, - { url = "https://files.pythonhosted.org/packages/aa/13/2dbacd820466aa2a3c4b747afb18d71209523d353cf865bf8f4796c969ea/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff", size = 386794 }, - { url = "https://files.pythonhosted.org/packages/6d/62/96905d0a35ad4e4bc3c098b2f34b2e7266e211d08635baa690643d2227be/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c", size = 423523 }, - { url = "https://files.pythonhosted.org/packages/eb/1b/d12770f2b6a9fc2c3ec0d810d7d440f6d465ccd8b7f16ae5385952c28b89/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e", size = 446695 }, - { url = "https://files.pythonhosted.org/packages/4d/cf/96f1fd75512a017f8e07408b6d5dbeb492d9ed46bfe0555544294f3681b3/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec", size = 381959 }, - { url = "https://files.pythonhosted.org/packages/ab/f0/d1c5b501c8aea85aeb938b555bfdf7612110a2f8cdc21ae0482c93dd0c24/rpds_py-0.22.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c", size = 410420 }, - { url = "https://files.pythonhosted.org/packages/33/3b/45b6c58fb6aad5a569ae40fb890fc494c6b02203505a5008ee6dc68e65f7/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09", size = 557620 }, - { url = "https://files.pythonhosted.org/packages/83/62/3fdd2d3d47bf0bb9b931c4c73036b4ab3ec77b25e016ae26fab0f02be2af/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00", size = 584202 }, - { url = "https://files.pythonhosted.org/packages/04/f2/5dced98b64874b84ca824292f9cee2e3f30f3bcf231d15a903126684f74d/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf", size = 552787 }, - { url = "https://files.pythonhosted.org/packages/67/13/2273dea1204eda0aea0ef55145da96a9aa28b3f88bb5c70e994f69eda7c3/rpds_py-0.22.3-cp310-cp310-win32.whl", hash = "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652", size = 220088 }, - { url = "https://files.pythonhosted.org/packages/4e/80/8c8176b67ad7f4a894967a7a4014ba039626d96f1d4874d53e409b58d69f/rpds_py-0.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8", size = 231737 }, - { url = "https://files.pythonhosted.org/packages/15/ad/8d1ddf78f2805a71253fcd388017e7b4a0615c22c762b6d35301fef20106/rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f", size = 359773 }, - { url = "https://files.pythonhosted.org/packages/c8/75/68c15732293a8485d79fe4ebe9045525502a067865fa4278f178851b2d87/rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a", size = 349214 }, - { url = "https://files.pythonhosted.org/packages/3c/4c/7ce50f3070083c2e1b2bbd0fb7046f3da55f510d19e283222f8f33d7d5f4/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5", size = 380477 }, - { url = "https://files.pythonhosted.org/packages/9a/e9/835196a69cb229d5c31c13b8ae603bd2da9a6695f35fe4270d398e1db44c/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb", size = 386171 }, - { url = "https://files.pythonhosted.org/packages/f9/8e/33fc4eba6683db71e91e6d594a2cf3a8fbceb5316629f0477f7ece5e3f75/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2", size = 422676 }, - { url = "https://files.pythonhosted.org/packages/37/47/2e82d58f8046a98bb9497a8319604c92b827b94d558df30877c4b3c6ccb3/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0", size = 446152 }, - { url = "https://files.pythonhosted.org/packages/e1/78/79c128c3e71abbc8e9739ac27af11dc0f91840a86fce67ff83c65d1ba195/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1", size = 381300 }, - { url = "https://files.pythonhosted.org/packages/c9/5b/2e193be0e8b228c1207f31fa3ea79de64dadb4f6a4833111af8145a6bc33/rpds_py-0.22.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d", size = 409636 }, - { url = "https://files.pythonhosted.org/packages/c2/3f/687c7100b762d62186a1c1100ffdf99825f6fa5ea94556844bbbd2d0f3a9/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648", size = 556708 }, - { url = "https://files.pythonhosted.org/packages/8c/a2/c00cbc4b857e8b3d5e7f7fc4c81e23afd8c138b930f4f3ccf9a41a23e9e4/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74", size = 583554 }, - { url = "https://files.pythonhosted.org/packages/d0/08/696c9872cf56effdad9ed617ac072f6774a898d46b8b8964eab39ec562d2/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a", size = 552105 }, - { url = "https://files.pythonhosted.org/packages/18/1f/4df560be1e994f5adf56cabd6c117e02de7c88ee238bb4ce03ed50da9d56/rpds_py-0.22.3-cp311-cp311-win32.whl", hash = "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64", size = 220199 }, - { url = "https://files.pythonhosted.org/packages/b8/1b/c29b570bc5db8237553002788dc734d6bd71443a2ceac2a58202ec06ef12/rpds_py-0.22.3-cp311-cp311-win_amd64.whl", hash = "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c", size = 231775 }, - { url = "https://files.pythonhosted.org/packages/75/47/3383ee3bd787a2a5e65a9b9edc37ccf8505c0a00170e3a5e6ea5fbcd97f7/rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e", size = 352334 }, - { url = "https://files.pythonhosted.org/packages/40/14/aa6400fa8158b90a5a250a77f2077c0d0cd8a76fce31d9f2b289f04c6dec/rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56", size = 342111 }, - { url = "https://files.pythonhosted.org/packages/7d/06/395a13bfaa8a28b302fb433fb285a67ce0ea2004959a027aea8f9c52bad4/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45", size = 384286 }, - { url = "https://files.pythonhosted.org/packages/43/52/d8eeaffab047e6b7b7ef7f00d5ead074a07973968ffa2d5820fa131d7852/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e", size = 391739 }, - { url = "https://files.pythonhosted.org/packages/83/31/52dc4bde85c60b63719610ed6f6d61877effdb5113a72007679b786377b8/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d", size = 427306 }, - { url = "https://files.pythonhosted.org/packages/70/d5/1bab8e389c2261dba1764e9e793ed6830a63f830fdbec581a242c7c46bda/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38", size = 442717 }, - { url = "https://files.pythonhosted.org/packages/82/a1/a45f3e30835b553379b3a56ea6c4eb622cf11e72008229af840e4596a8ea/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15", size = 385721 }, - { url = "https://files.pythonhosted.org/packages/a6/27/780c942de3120bdd4d0e69583f9c96e179dfff082f6ecbb46b8d6488841f/rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059", size = 415824 }, - { url = "https://files.pythonhosted.org/packages/94/0b/aa0542ca88ad20ea719b06520f925bae348ea5c1fdf201b7e7202d20871d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e", size = 561227 }, - { url = "https://files.pythonhosted.org/packages/0d/92/3ed77d215f82c8f844d7f98929d56cc321bb0bcfaf8f166559b8ec56e5f1/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61", size = 587424 }, - { url = "https://files.pythonhosted.org/packages/09/42/cacaeb047a22cab6241f107644f230e2935d4efecf6488859a7dd82fc47d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7", size = 555953 }, - { url = "https://files.pythonhosted.org/packages/e6/52/c921dc6d5f5d45b212a456c1f5b17df1a471127e8037eb0972379e39dff4/rpds_py-0.22.3-cp312-cp312-win32.whl", hash = "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627", size = 221339 }, - { url = "https://files.pythonhosted.org/packages/f2/c7/f82b5be1e8456600395366f86104d1bd8d0faed3802ad511ef6d60c30d98/rpds_py-0.22.3-cp312-cp312-win_amd64.whl", hash = "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4", size = 235786 }, - { url = "https://files.pythonhosted.org/packages/d0/bf/36d5cc1f2c609ae6e8bf0fc35949355ca9d8790eceb66e6385680c951e60/rpds_py-0.22.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84", size = 351657 }, - { url = "https://files.pythonhosted.org/packages/24/2a/f1e0fa124e300c26ea9382e59b2d582cba71cedd340f32d1447f4f29fa4e/rpds_py-0.22.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25", size = 341829 }, - { url = "https://files.pythonhosted.org/packages/cf/c2/0da1231dd16953845bed60d1a586fcd6b15ceaeb965f4d35cdc71f70f606/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4", size = 384220 }, - { url = "https://files.pythonhosted.org/packages/c7/73/a4407f4e3a00a9d4b68c532bf2d873d6b562854a8eaff8faa6133b3588ec/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5", size = 391009 }, - { url = "https://files.pythonhosted.org/packages/a9/c3/04b7353477ab360fe2563f5f0b176d2105982f97cd9ae80a9c5a18f1ae0f/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc", size = 426989 }, - { url = "https://files.pythonhosted.org/packages/8d/e6/e4b85b722bcf11398e17d59c0f6049d19cd606d35363221951e6d625fcb0/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b", size = 441544 }, - { url = "https://files.pythonhosted.org/packages/27/fc/403e65e56f65fff25f2973216974976d3f0a5c3f30e53758589b6dc9b79b/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518", size = 385179 }, - { url = "https://files.pythonhosted.org/packages/57/9b/2be9ff9700d664d51fd96b33d6595791c496d2778cb0b2a634f048437a55/rpds_py-0.22.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd", size = 415103 }, - { url = "https://files.pythonhosted.org/packages/bb/a5/03c2ad8ca10994fcf22dd2150dd1d653bc974fa82d9a590494c84c10c641/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2", size = 560916 }, - { url = "https://files.pythonhosted.org/packages/ba/2e/be4fdfc8b5b576e588782b56978c5b702c5a2307024120d8aeec1ab818f0/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16", size = 587062 }, - { url = "https://files.pythonhosted.org/packages/67/e0/2034c221937709bf9c542603d25ad43a68b4b0a9a0c0b06a742f2756eb66/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f", size = 555734 }, - { url = "https://files.pythonhosted.org/packages/ea/ce/240bae07b5401a22482b58e18cfbabaa392409b2797da60223cca10d7367/rpds_py-0.22.3-cp313-cp313-win32.whl", hash = "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de", size = 220663 }, - { url = "https://files.pythonhosted.org/packages/cb/f0/d330d08f51126330467edae2fa4efa5cec8923c87551a79299380fdea30d/rpds_py-0.22.3-cp313-cp313-win_amd64.whl", hash = "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9", size = 235503 }, - { url = "https://files.pythonhosted.org/packages/f7/c4/dbe1cc03df013bf2feb5ad00615038050e7859f381e96fb5b7b4572cd814/rpds_py-0.22.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b", size = 347698 }, - { url = "https://files.pythonhosted.org/packages/a4/3a/684f66dd6b0f37499cad24cd1c0e523541fd768576fa5ce2d0a8799c3cba/rpds_py-0.22.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b", size = 337330 }, - { url = "https://files.pythonhosted.org/packages/82/eb/e022c08c2ce2e8f7683baa313476492c0e2c1ca97227fe8a75d9f0181e95/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1", size = 380022 }, - { url = "https://files.pythonhosted.org/packages/e4/21/5a80e653e4c86aeb28eb4fea4add1f72e1787a3299687a9187105c3ee966/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83", size = 390754 }, - { url = "https://files.pythonhosted.org/packages/37/a4/d320a04ae90f72d080b3d74597074e62be0a8ecad7d7321312dfe2dc5a6a/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd", size = 423840 }, - { url = "https://files.pythonhosted.org/packages/87/70/674dc47d93db30a6624279284e5631be4c3a12a0340e8e4f349153546728/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1", size = 438970 }, - { url = "https://files.pythonhosted.org/packages/3f/64/9500f4d66601d55cadd21e90784cfd5d5f4560e129d72e4339823129171c/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3", size = 383146 }, - { url = "https://files.pythonhosted.org/packages/4d/45/630327addb1d17173adcf4af01336fd0ee030c04798027dfcb50106001e0/rpds_py-0.22.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130", size = 408294 }, - { url = "https://files.pythonhosted.org/packages/5f/ef/8efb3373cee54ea9d9980b772e5690a0c9e9214045a4e7fa35046e399fee/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c", size = 556345 }, - { url = "https://files.pythonhosted.org/packages/54/01/151d3b9ef4925fc8f15bfb131086c12ec3c3d6dd4a4f7589c335bf8e85ba/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b", size = 582292 }, - { url = "https://files.pythonhosted.org/packages/30/89/35fc7a6cdf3477d441c7aca5e9bbf5a14e0f25152aed7f63f4e0b141045d/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333", size = 553855 }, - { url = "https://files.pythonhosted.org/packages/8f/e0/830c02b2457c4bd20a8c5bb394d31d81f57fbefce2dbdd2e31feff4f7003/rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730", size = 219100 }, - { url = "https://files.pythonhosted.org/packages/f8/30/7ac943f69855c2db77407ae363484b915d861702dbba1aa82d68d57f42be/rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf", size = 233794 }, - { url = "https://files.pythonhosted.org/packages/db/0f/a8ad17ddac7c880f48d5da50733dd25bfc35ba2be1bec9f23453e8c7a123/rpds_py-0.22.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:378753b4a4de2a7b34063d6f95ae81bfa7b15f2c1a04a9518e8644e81807ebea", size = 359735 }, - { url = "https://files.pythonhosted.org/packages/0c/41/430903669397ea3ee76865e0b53ea236e8dc0ffbecde47b2c4c783ad6759/rpds_py-0.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3445e07bf2e8ecfeef6ef67ac83de670358abf2996916039b16a218e3d95e97e", size = 348724 }, - { url = "https://files.pythonhosted.org/packages/c9/5c/3496f4f0ee818297544f2d5f641c49dde8ae156392e6834b79c0609ba006/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b2513ba235829860b13faa931f3b6846548021846ac808455301c23a101689d", size = 381782 }, - { url = "https://files.pythonhosted.org/packages/b6/dc/db0523ce0cd16ce579185cc9aa9141992de956d0a9c469ecfd1fb5d54ddc/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eaf16ae9ae519a0e237a0f528fd9f0197b9bb70f40263ee57ae53c2b8d48aeb3", size = 387036 }, - { url = "https://files.pythonhosted.org/packages/85/2a/9525c2427d2c257f877348918136a5d4e1b945c205a256e53bec61e54551/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:583f6a1993ca3369e0f80ba99d796d8e6b1a3a2a442dd4e1a79e652116413091", size = 424566 }, - { url = "https://files.pythonhosted.org/packages/b9/1c/f8c012a39794b84069635709f559c0309103d5d74b3f5013916e6ca4f174/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4617e1915a539a0d9a9567795023de41a87106522ff83fbfaf1f6baf8e85437e", size = 447203 }, - { url = "https://files.pythonhosted.org/packages/93/f5/c1c772364570d35b98ba64f36ec90c3c6d0b932bc4d8b9b4efef6dc64b07/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c150c7a61ed4a4f4955a96626574e9baf1adf772c2fb61ef6a5027e52803543", size = 382283 }, - { url = "https://files.pythonhosted.org/packages/10/06/f94f61313f94fc75c3c3aa74563f80bbd990e5b25a7c1a38cee7d5d0309b/rpds_py-0.22.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fa4331c200c2521512595253f5bb70858b90f750d39b8cbfd67465f8d1b596d", size = 410022 }, - { url = "https://files.pythonhosted.org/packages/3f/b0/37ab416a9528419920dfb64886c220f58fcbd66b978e0a91b66e9ee9a993/rpds_py-0.22.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:214b7a953d73b5e87f0ebece4a32a5bd83c60a3ecc9d4ec8f1dca968a2d91e99", size = 557817 }, - { url = "https://files.pythonhosted.org/packages/2c/5d/9daa18adcd676dd3b2817c8a7cec3f3ebeeb0ce0d05a1b63bf994fc5114f/rpds_py-0.22.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f47ad3d5f3258bd7058d2d506852217865afefe6153a36eb4b6928758041d831", size = 585099 }, - { url = "https://files.pythonhosted.org/packages/41/3f/ad4e58035d3f848410aa3d59857b5f238bafab81c8b4a844281f80445d62/rpds_py-0.22.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f276b245347e6e36526cbd4a266a417796fc531ddf391e43574cf6466c492520", size = 552818 }, - { url = "https://files.pythonhosted.org/packages/b8/19/123acae8f4cab3c9463097c3ced3cc87c46f405056e249c874940e045309/rpds_py-0.22.3-cp39-cp39-win32.whl", hash = "sha256:bbb232860e3d03d544bc03ac57855cd82ddf19c7a07651a7c0fdb95e9efea8b9", size = 220246 }, - { url = "https://files.pythonhosted.org/packages/8b/8d/9db93e48d96ace1f6713c71ce72e2d94b71d82156c37b6a54e0930486f00/rpds_py-0.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:cfbc454a2880389dbb9b5b398e50d439e2e58669160f27b60e5eca11f68ae17c", size = 231932 }, - { url = "https://files.pythonhosted.org/packages/8b/63/e29f8ee14fcf383574f73b6bbdcbec0fbc2e5fc36b4de44d1ac389b1de62/rpds_py-0.22.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d", size = 360786 }, - { url = "https://files.pythonhosted.org/packages/d3/e0/771ee28b02a24e81c8c0e645796a371350a2bb6672753144f36ae2d2afc9/rpds_py-0.22.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd", size = 350589 }, - { url = "https://files.pythonhosted.org/packages/cf/49/abad4c4a1e6f3adf04785a99c247bfabe55ed868133e2d1881200aa5d381/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493", size = 381848 }, - { url = "https://files.pythonhosted.org/packages/3a/7d/f4bc6d6fbe6af7a0d2b5f2ee77079efef7c8528712745659ec0026888998/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96", size = 387879 }, - { url = "https://files.pythonhosted.org/packages/13/b0/575c797377fdcd26cedbb00a3324232e4cb2c5d121f6e4b0dbf8468b12ef/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123", size = 423916 }, - { url = "https://files.pythonhosted.org/packages/54/78/87157fa39d58f32a68d3326f8a81ad8fb99f49fe2aa7ad9a1b7d544f9478/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad", size = 448410 }, - { url = "https://files.pythonhosted.org/packages/59/69/860f89996065a88be1b6ff2d60e96a02b920a262d8aadab99e7903986597/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9", size = 382841 }, - { url = "https://files.pythonhosted.org/packages/bd/d7/bc144e10d27e3cb350f98df2492a319edd3caaf52ddfe1293f37a9afbfd7/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e", size = 409662 }, - { url = "https://files.pythonhosted.org/packages/14/2a/6bed0b05233c291a94c7e89bc76ffa1c619d4e1979fbfe5d96024020c1fb/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338", size = 558221 }, - { url = "https://files.pythonhosted.org/packages/11/23/cd8f566de444a137bc1ee5795e47069a947e60810ba4152886fe5308e1b7/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566", size = 583780 }, - { url = "https://files.pythonhosted.org/packages/8d/63/79c3602afd14d501f751e615a74a59040328da5ef29ed5754ae80d236b84/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe", size = 553619 }, - { url = "https://files.pythonhosted.org/packages/9f/2e/c5c1689e80298d4e94c75b70faada4c25445739d91b94c211244a3ed7ed1/rpds_py-0.22.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d", size = 233338 }, - { url = "https://files.pythonhosted.org/packages/bc/b7/d2c205723e3b4d75b03215694f0297a1b4b395bf834cb5896ad9bbb90f90/rpds_py-0.22.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bb47271f60660803ad11f4c61b42242b8c1312a31c98c578f79ef9387bbde21c", size = 360594 }, - { url = "https://files.pythonhosted.org/packages/d8/8f/c3515f5234cf6055046d4cfe9c80a3742a20acfa7d0b1b290f0d7f56a8db/rpds_py-0.22.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:70fb28128acbfd264eda9bf47015537ba3fe86e40d046eb2963d75024be4d055", size = 349594 }, - { url = "https://files.pythonhosted.org/packages/6b/98/5b487cb06afc484befe350c87fda37f4ce11333f04f3380aba43dcf5bce2/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44d61b4b7d0c2c9ac019c314e52d7cbda0ae31078aabd0f22e583af3e0d79723", size = 381138 }, - { url = "https://files.pythonhosted.org/packages/5e/3a/12308d2c51b3fdfc173619943b7dc5ba41b4850c47112eeda38d9c54ed12/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f0e260eaf54380380ac3808aa4ebe2d8ca28b9087cf411649f96bad6900c728", size = 387828 }, - { url = "https://files.pythonhosted.org/packages/17/b2/c242241ab5a2a206e093f24ccbfa519c4bbf10a762ac90bffe1766c225e0/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b25bc607423935079e05619d7de556c91fb6adeae9d5f80868dde3468657994b", size = 424634 }, - { url = "https://files.pythonhosted.org/packages/d5/c7/52a1b15012139f3ba740f291f1d03c6b632938ba61bc605f24c101952493/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb6116dfb8d1925cbdb52595560584db42a7f664617a1f7d7f6e32f138cdf37d", size = 447862 }, - { url = "https://files.pythonhosted.org/packages/55/3e/4d3ed8fd01bad77e8ed101116fe63b03f1011940d9596a8f4d82ac80cacd/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a63cbdd98acef6570c62b92a1e43266f9e8b21e699c363c0fef13bd530799c11", size = 382506 }, - { url = "https://files.pythonhosted.org/packages/30/78/df59d6f92470a84369a3757abeae1cfd7f7239c8beb6d948949bf78317d2/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b8f60e1b739a74bab7e01fcbe3dddd4657ec685caa04681df9d562ef15b625f", size = 410534 }, - { url = "https://files.pythonhosted.org/packages/38/97/ea45d1edd9b753b20084b52dd5db6ee5e1ac3e036a27149972398a413858/rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2e8b55d8517a2fda8d95cb45d62a5a8bbf9dd0ad39c5b25c8833efea07b880ca", size = 557453 }, - { url = "https://files.pythonhosted.org/packages/08/cd/3a1b35eb9da27ffbb981cfffd32a01c7655c4431ccb278cb3064f8887462/rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:2de29005e11637e7a2361fa151f780ff8eb2543a0da1413bb951e9f14b699ef3", size = 584412 }, - { url = "https://files.pythonhosted.org/packages/87/91/31d1c5aeb1606f71188259e0ba6ed6f5c21a3c72f58b51db6a8bd0aa2b5d/rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:666ecce376999bf619756a24ce15bb14c5bfaf04bf00abc7e663ce17c3f34fe7", size = 553446 }, - { url = "https://files.pythonhosted.org/packages/e7/ad/03b5ccd1ab492c9dece85b3bf1c96453ab8c47983936fae6880f688f60b3/rpds_py-0.22.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5246b14ca64a8675e0a7161f7af68fe3e910e6b90542b4bfb5439ba752191df6", size = 233013 }, +sdist = { url = "https://files.pythonhosted.org/packages/01/80/cce854d0921ff2f0a9fa831ba3ad3c65cee3a46711addf39a2af52df2cfd/rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d", size = 26771, upload-time = "2024-12-04T15:34:14.949Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/2a/ead1d09e57449b99dcc190d8d2323e3a167421d8f8fdf0f217c6f6befe47/rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967", size = 359514, upload-time = "2024-12-04T15:31:31.341Z" }, + { url = "https://files.pythonhosted.org/packages/8f/7e/1254f406b7793b586c68e217a6a24ec79040f85e030fff7e9049069284f4/rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37", size = 349031, upload-time = "2024-12-04T15:31:32.973Z" }, + { url = "https://files.pythonhosted.org/packages/aa/da/17c6a2c73730d426df53675ff9cc6653ac7a60b6438d03c18e1c822a576a/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24", size = 381485, upload-time = "2024-12-04T15:31:34.586Z" }, + { url = "https://files.pythonhosted.org/packages/aa/13/2dbacd820466aa2a3c4b747afb18d71209523d353cf865bf8f4796c969ea/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff", size = 386794, upload-time = "2024-12-04T15:31:37.237Z" }, + { url = "https://files.pythonhosted.org/packages/6d/62/96905d0a35ad4e4bc3c098b2f34b2e7266e211d08635baa690643d2227be/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c", size = 423523, upload-time = "2024-12-04T15:31:39.259Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1b/d12770f2b6a9fc2c3ec0d810d7d440f6d465ccd8b7f16ae5385952c28b89/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e", size = 446695, upload-time = "2024-12-04T15:31:40.477Z" }, + { url = "https://files.pythonhosted.org/packages/4d/cf/96f1fd75512a017f8e07408b6d5dbeb492d9ed46bfe0555544294f3681b3/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec", size = 381959, upload-time = "2024-12-04T15:31:41.665Z" }, + { url = "https://files.pythonhosted.org/packages/ab/f0/d1c5b501c8aea85aeb938b555bfdf7612110a2f8cdc21ae0482c93dd0c24/rpds_py-0.22.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c", size = 410420, upload-time = "2024-12-04T15:31:43.407Z" }, + { url = "https://files.pythonhosted.org/packages/33/3b/45b6c58fb6aad5a569ae40fb890fc494c6b02203505a5008ee6dc68e65f7/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09", size = 557620, upload-time = "2024-12-04T15:31:45.271Z" }, + { url = "https://files.pythonhosted.org/packages/83/62/3fdd2d3d47bf0bb9b931c4c73036b4ab3ec77b25e016ae26fab0f02be2af/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00", size = 584202, upload-time = "2024-12-04T15:31:47.21Z" }, + { url = "https://files.pythonhosted.org/packages/04/f2/5dced98b64874b84ca824292f9cee2e3f30f3bcf231d15a903126684f74d/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf", size = 552787, upload-time = "2024-12-04T15:31:49.142Z" }, + { url = "https://files.pythonhosted.org/packages/67/13/2273dea1204eda0aea0ef55145da96a9aa28b3f88bb5c70e994f69eda7c3/rpds_py-0.22.3-cp310-cp310-win32.whl", hash = "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652", size = 220088, upload-time = "2024-12-04T15:31:51.303Z" }, + { url = "https://files.pythonhosted.org/packages/4e/80/8c8176b67ad7f4a894967a7a4014ba039626d96f1d4874d53e409b58d69f/rpds_py-0.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8", size = 231737, upload-time = "2024-12-04T15:31:52.611Z" }, + { url = "https://files.pythonhosted.org/packages/15/ad/8d1ddf78f2805a71253fcd388017e7b4a0615c22c762b6d35301fef20106/rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f", size = 359773, upload-time = "2024-12-04T15:31:53.773Z" }, + { url = "https://files.pythonhosted.org/packages/c8/75/68c15732293a8485d79fe4ebe9045525502a067865fa4278f178851b2d87/rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a", size = 349214, upload-time = "2024-12-04T15:31:57.443Z" }, + { url = "https://files.pythonhosted.org/packages/3c/4c/7ce50f3070083c2e1b2bbd0fb7046f3da55f510d19e283222f8f33d7d5f4/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5", size = 380477, upload-time = "2024-12-04T15:31:58.713Z" }, + { url = "https://files.pythonhosted.org/packages/9a/e9/835196a69cb229d5c31c13b8ae603bd2da9a6695f35fe4270d398e1db44c/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb", size = 386171, upload-time = "2024-12-04T15:32:01.33Z" }, + { url = "https://files.pythonhosted.org/packages/f9/8e/33fc4eba6683db71e91e6d594a2cf3a8fbceb5316629f0477f7ece5e3f75/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2", size = 422676, upload-time = "2024-12-04T15:32:03.223Z" }, + { url = "https://files.pythonhosted.org/packages/37/47/2e82d58f8046a98bb9497a8319604c92b827b94d558df30877c4b3c6ccb3/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0", size = 446152, upload-time = "2024-12-04T15:32:05.109Z" }, + { url = "https://files.pythonhosted.org/packages/e1/78/79c128c3e71abbc8e9739ac27af11dc0f91840a86fce67ff83c65d1ba195/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1", size = 381300, upload-time = "2024-12-04T15:32:06.404Z" }, + { url = "https://files.pythonhosted.org/packages/c9/5b/2e193be0e8b228c1207f31fa3ea79de64dadb4f6a4833111af8145a6bc33/rpds_py-0.22.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d", size = 409636, upload-time = "2024-12-04T15:32:07.568Z" }, + { url = "https://files.pythonhosted.org/packages/c2/3f/687c7100b762d62186a1c1100ffdf99825f6fa5ea94556844bbbd2d0f3a9/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648", size = 556708, upload-time = "2024-12-04T15:32:09.141Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a2/c00cbc4b857e8b3d5e7f7fc4c81e23afd8c138b930f4f3ccf9a41a23e9e4/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74", size = 583554, upload-time = "2024-12-04T15:32:11.17Z" }, + { url = "https://files.pythonhosted.org/packages/d0/08/696c9872cf56effdad9ed617ac072f6774a898d46b8b8964eab39ec562d2/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a", size = 552105, upload-time = "2024-12-04T15:32:12.701Z" }, + { url = "https://files.pythonhosted.org/packages/18/1f/4df560be1e994f5adf56cabd6c117e02de7c88ee238bb4ce03ed50da9d56/rpds_py-0.22.3-cp311-cp311-win32.whl", hash = "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64", size = 220199, upload-time = "2024-12-04T15:32:13.903Z" }, + { url = "https://files.pythonhosted.org/packages/b8/1b/c29b570bc5db8237553002788dc734d6bd71443a2ceac2a58202ec06ef12/rpds_py-0.22.3-cp311-cp311-win_amd64.whl", hash = "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c", size = 231775, upload-time = "2024-12-04T15:32:15.137Z" }, + { url = "https://files.pythonhosted.org/packages/75/47/3383ee3bd787a2a5e65a9b9edc37ccf8505c0a00170e3a5e6ea5fbcd97f7/rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e", size = 352334, upload-time = "2024-12-04T15:32:16.432Z" }, + { url = "https://files.pythonhosted.org/packages/40/14/aa6400fa8158b90a5a250a77f2077c0d0cd8a76fce31d9f2b289f04c6dec/rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56", size = 342111, upload-time = "2024-12-04T15:32:18.336Z" }, + { url = "https://files.pythonhosted.org/packages/7d/06/395a13bfaa8a28b302fb433fb285a67ce0ea2004959a027aea8f9c52bad4/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45", size = 384286, upload-time = "2024-12-04T15:32:19.589Z" }, + { url = "https://files.pythonhosted.org/packages/43/52/d8eeaffab047e6b7b7ef7f00d5ead074a07973968ffa2d5820fa131d7852/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e", size = 391739, upload-time = "2024-12-04T15:32:20.772Z" }, + { url = "https://files.pythonhosted.org/packages/83/31/52dc4bde85c60b63719610ed6f6d61877effdb5113a72007679b786377b8/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d", size = 427306, upload-time = "2024-12-04T15:32:23.138Z" }, + { url = "https://files.pythonhosted.org/packages/70/d5/1bab8e389c2261dba1764e9e793ed6830a63f830fdbec581a242c7c46bda/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38", size = 442717, upload-time = "2024-12-04T15:32:24.399Z" }, + { url = "https://files.pythonhosted.org/packages/82/a1/a45f3e30835b553379b3a56ea6c4eb622cf11e72008229af840e4596a8ea/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15", size = 385721, upload-time = "2024-12-04T15:32:26.464Z" }, + { url = "https://files.pythonhosted.org/packages/a6/27/780c942de3120bdd4d0e69583f9c96e179dfff082f6ecbb46b8d6488841f/rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059", size = 415824, upload-time = "2024-12-04T15:32:27.742Z" }, + { url = "https://files.pythonhosted.org/packages/94/0b/aa0542ca88ad20ea719b06520f925bae348ea5c1fdf201b7e7202d20871d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e", size = 561227, upload-time = "2024-12-04T15:32:29.722Z" }, + { url = "https://files.pythonhosted.org/packages/0d/92/3ed77d215f82c8f844d7f98929d56cc321bb0bcfaf8f166559b8ec56e5f1/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61", size = 587424, upload-time = "2024-12-04T15:32:31.039Z" }, + { url = "https://files.pythonhosted.org/packages/09/42/cacaeb047a22cab6241f107644f230e2935d4efecf6488859a7dd82fc47d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7", size = 555953, upload-time = "2024-12-04T15:32:32.486Z" }, + { url = "https://files.pythonhosted.org/packages/e6/52/c921dc6d5f5d45b212a456c1f5b17df1a471127e8037eb0972379e39dff4/rpds_py-0.22.3-cp312-cp312-win32.whl", hash = "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627", size = 221339, upload-time = "2024-12-04T15:32:33.768Z" }, + { url = "https://files.pythonhosted.org/packages/f2/c7/f82b5be1e8456600395366f86104d1bd8d0faed3802ad511ef6d60c30d98/rpds_py-0.22.3-cp312-cp312-win_amd64.whl", hash = "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4", size = 235786, upload-time = "2024-12-04T15:32:34.985Z" }, + { url = "https://files.pythonhosted.org/packages/d0/bf/36d5cc1f2c609ae6e8bf0fc35949355ca9d8790eceb66e6385680c951e60/rpds_py-0.22.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84", size = 351657, upload-time = "2024-12-04T15:32:36.241Z" }, + { url = "https://files.pythonhosted.org/packages/24/2a/f1e0fa124e300c26ea9382e59b2d582cba71cedd340f32d1447f4f29fa4e/rpds_py-0.22.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25", size = 341829, upload-time = "2024-12-04T15:32:37.607Z" }, + { url = "https://files.pythonhosted.org/packages/cf/c2/0da1231dd16953845bed60d1a586fcd6b15ceaeb965f4d35cdc71f70f606/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4", size = 384220, upload-time = "2024-12-04T15:32:38.854Z" }, + { url = "https://files.pythonhosted.org/packages/c7/73/a4407f4e3a00a9d4b68c532bf2d873d6b562854a8eaff8faa6133b3588ec/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5", size = 391009, upload-time = "2024-12-04T15:32:40.137Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c3/04b7353477ab360fe2563f5f0b176d2105982f97cd9ae80a9c5a18f1ae0f/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc", size = 426989, upload-time = "2024-12-04T15:32:41.325Z" }, + { url = "https://files.pythonhosted.org/packages/8d/e6/e4b85b722bcf11398e17d59c0f6049d19cd606d35363221951e6d625fcb0/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b", size = 441544, upload-time = "2024-12-04T15:32:42.589Z" }, + { url = "https://files.pythonhosted.org/packages/27/fc/403e65e56f65fff25f2973216974976d3f0a5c3f30e53758589b6dc9b79b/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518", size = 385179, upload-time = "2024-12-04T15:32:44.331Z" }, + { url = "https://files.pythonhosted.org/packages/57/9b/2be9ff9700d664d51fd96b33d6595791c496d2778cb0b2a634f048437a55/rpds_py-0.22.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd", size = 415103, upload-time = "2024-12-04T15:32:46.599Z" }, + { url = "https://files.pythonhosted.org/packages/bb/a5/03c2ad8ca10994fcf22dd2150dd1d653bc974fa82d9a590494c84c10c641/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2", size = 560916, upload-time = "2024-12-04T15:32:47.916Z" }, + { url = "https://files.pythonhosted.org/packages/ba/2e/be4fdfc8b5b576e588782b56978c5b702c5a2307024120d8aeec1ab818f0/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16", size = 587062, upload-time = "2024-12-04T15:32:49.274Z" }, + { url = "https://files.pythonhosted.org/packages/67/e0/2034c221937709bf9c542603d25ad43a68b4b0a9a0c0b06a742f2756eb66/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f", size = 555734, upload-time = "2024-12-04T15:32:50.528Z" }, + { url = "https://files.pythonhosted.org/packages/ea/ce/240bae07b5401a22482b58e18cfbabaa392409b2797da60223cca10d7367/rpds_py-0.22.3-cp313-cp313-win32.whl", hash = "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de", size = 220663, upload-time = "2024-12-04T15:32:51.878Z" }, + { url = "https://files.pythonhosted.org/packages/cb/f0/d330d08f51126330467edae2fa4efa5cec8923c87551a79299380fdea30d/rpds_py-0.22.3-cp313-cp313-win_amd64.whl", hash = "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9", size = 235503, upload-time = "2024-12-04T15:32:53.195Z" }, + { url = "https://files.pythonhosted.org/packages/f7/c4/dbe1cc03df013bf2feb5ad00615038050e7859f381e96fb5b7b4572cd814/rpds_py-0.22.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b", size = 347698, upload-time = "2024-12-04T15:32:54.569Z" }, + { url = "https://files.pythonhosted.org/packages/a4/3a/684f66dd6b0f37499cad24cd1c0e523541fd768576fa5ce2d0a8799c3cba/rpds_py-0.22.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b", size = 337330, upload-time = "2024-12-04T15:32:55.993Z" }, + { url = "https://files.pythonhosted.org/packages/82/eb/e022c08c2ce2e8f7683baa313476492c0e2c1ca97227fe8a75d9f0181e95/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1", size = 380022, upload-time = "2024-12-04T15:32:57.374Z" }, + { url = "https://files.pythonhosted.org/packages/e4/21/5a80e653e4c86aeb28eb4fea4add1f72e1787a3299687a9187105c3ee966/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83", size = 390754, upload-time = "2024-12-04T15:32:58.726Z" }, + { url = "https://files.pythonhosted.org/packages/37/a4/d320a04ae90f72d080b3d74597074e62be0a8ecad7d7321312dfe2dc5a6a/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd", size = 423840, upload-time = "2024-12-04T15:32:59.997Z" }, + { url = "https://files.pythonhosted.org/packages/87/70/674dc47d93db30a6624279284e5631be4c3a12a0340e8e4f349153546728/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1", size = 438970, upload-time = "2024-12-04T15:33:02.057Z" }, + { url = "https://files.pythonhosted.org/packages/3f/64/9500f4d66601d55cadd21e90784cfd5d5f4560e129d72e4339823129171c/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3", size = 383146, upload-time = "2024-12-04T15:33:03.414Z" }, + { url = "https://files.pythonhosted.org/packages/4d/45/630327addb1d17173adcf4af01336fd0ee030c04798027dfcb50106001e0/rpds_py-0.22.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130", size = 408294, upload-time = "2024-12-04T15:33:05.504Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ef/8efb3373cee54ea9d9980b772e5690a0c9e9214045a4e7fa35046e399fee/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c", size = 556345, upload-time = "2024-12-04T15:33:06.9Z" }, + { url = "https://files.pythonhosted.org/packages/54/01/151d3b9ef4925fc8f15bfb131086c12ec3c3d6dd4a4f7589c335bf8e85ba/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b", size = 582292, upload-time = "2024-12-04T15:33:08.304Z" }, + { url = "https://files.pythonhosted.org/packages/30/89/35fc7a6cdf3477d441c7aca5e9bbf5a14e0f25152aed7f63f4e0b141045d/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333", size = 553855, upload-time = "2024-12-04T15:33:10Z" }, + { url = "https://files.pythonhosted.org/packages/8f/e0/830c02b2457c4bd20a8c5bb394d31d81f57fbefce2dbdd2e31feff4f7003/rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730", size = 219100, upload-time = "2024-12-04T15:33:11.343Z" }, + { url = "https://files.pythonhosted.org/packages/f8/30/7ac943f69855c2db77407ae363484b915d861702dbba1aa82d68d57f42be/rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf", size = 233794, upload-time = "2024-12-04T15:33:12.888Z" }, + { url = "https://files.pythonhosted.org/packages/db/0f/a8ad17ddac7c880f48d5da50733dd25bfc35ba2be1bec9f23453e8c7a123/rpds_py-0.22.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:378753b4a4de2a7b34063d6f95ae81bfa7b15f2c1a04a9518e8644e81807ebea", size = 359735, upload-time = "2024-12-04T15:33:14.251Z" }, + { url = "https://files.pythonhosted.org/packages/0c/41/430903669397ea3ee76865e0b53ea236e8dc0ffbecde47b2c4c783ad6759/rpds_py-0.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3445e07bf2e8ecfeef6ef67ac83de670358abf2996916039b16a218e3d95e97e", size = 348724, upload-time = "2024-12-04T15:33:15.67Z" }, + { url = "https://files.pythonhosted.org/packages/c9/5c/3496f4f0ee818297544f2d5f641c49dde8ae156392e6834b79c0609ba006/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b2513ba235829860b13faa931f3b6846548021846ac808455301c23a101689d", size = 381782, upload-time = "2024-12-04T15:33:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/b6/dc/db0523ce0cd16ce579185cc9aa9141992de956d0a9c469ecfd1fb5d54ddc/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eaf16ae9ae519a0e237a0f528fd9f0197b9bb70f40263ee57ae53c2b8d48aeb3", size = 387036, upload-time = "2024-12-04T15:33:18.555Z" }, + { url = "https://files.pythonhosted.org/packages/85/2a/9525c2427d2c257f877348918136a5d4e1b945c205a256e53bec61e54551/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:583f6a1993ca3369e0f80ba99d796d8e6b1a3a2a442dd4e1a79e652116413091", size = 424566, upload-time = "2024-12-04T15:33:20.475Z" }, + { url = "https://files.pythonhosted.org/packages/b9/1c/f8c012a39794b84069635709f559c0309103d5d74b3f5013916e6ca4f174/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4617e1915a539a0d9a9567795023de41a87106522ff83fbfaf1f6baf8e85437e", size = 447203, upload-time = "2024-12-04T15:33:21.846Z" }, + { url = "https://files.pythonhosted.org/packages/93/f5/c1c772364570d35b98ba64f36ec90c3c6d0b932bc4d8b9b4efef6dc64b07/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c150c7a61ed4a4f4955a96626574e9baf1adf772c2fb61ef6a5027e52803543", size = 382283, upload-time = "2024-12-04T15:33:23.292Z" }, + { url = "https://files.pythonhosted.org/packages/10/06/f94f61313f94fc75c3c3aa74563f80bbd990e5b25a7c1a38cee7d5d0309b/rpds_py-0.22.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fa4331c200c2521512595253f5bb70858b90f750d39b8cbfd67465f8d1b596d", size = 410022, upload-time = "2024-12-04T15:33:24.585Z" }, + { url = "https://files.pythonhosted.org/packages/3f/b0/37ab416a9528419920dfb64886c220f58fcbd66b978e0a91b66e9ee9a993/rpds_py-0.22.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:214b7a953d73b5e87f0ebece4a32a5bd83c60a3ecc9d4ec8f1dca968a2d91e99", size = 557817, upload-time = "2024-12-04T15:33:26.379Z" }, + { url = "https://files.pythonhosted.org/packages/2c/5d/9daa18adcd676dd3b2817c8a7cec3f3ebeeb0ce0d05a1b63bf994fc5114f/rpds_py-0.22.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f47ad3d5f3258bd7058d2d506852217865afefe6153a36eb4b6928758041d831", size = 585099, upload-time = "2024-12-04T15:33:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/41/3f/ad4e58035d3f848410aa3d59857b5f238bafab81c8b4a844281f80445d62/rpds_py-0.22.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f276b245347e6e36526cbd4a266a417796fc531ddf391e43574cf6466c492520", size = 552818, upload-time = "2024-12-04T15:33:29.249Z" }, + { url = "https://files.pythonhosted.org/packages/b8/19/123acae8f4cab3c9463097c3ced3cc87c46f405056e249c874940e045309/rpds_py-0.22.3-cp39-cp39-win32.whl", hash = "sha256:bbb232860e3d03d544bc03ac57855cd82ddf19c7a07651a7c0fdb95e9efea8b9", size = 220246, upload-time = "2024-12-04T15:33:30.672Z" }, + { url = "https://files.pythonhosted.org/packages/8b/8d/9db93e48d96ace1f6713c71ce72e2d94b71d82156c37b6a54e0930486f00/rpds_py-0.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:cfbc454a2880389dbb9b5b398e50d439e2e58669160f27b60e5eca11f68ae17c", size = 231932, upload-time = "2024-12-04T15:33:32.092Z" }, + { url = "https://files.pythonhosted.org/packages/8b/63/e29f8ee14fcf383574f73b6bbdcbec0fbc2e5fc36b4de44d1ac389b1de62/rpds_py-0.22.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d", size = 360786, upload-time = "2024-12-04T15:33:33.635Z" }, + { url = "https://files.pythonhosted.org/packages/d3/e0/771ee28b02a24e81c8c0e645796a371350a2bb6672753144f36ae2d2afc9/rpds_py-0.22.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd", size = 350589, upload-time = "2024-12-04T15:33:35.159Z" }, + { url = "https://files.pythonhosted.org/packages/cf/49/abad4c4a1e6f3adf04785a99c247bfabe55ed868133e2d1881200aa5d381/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493", size = 381848, upload-time = "2024-12-04T15:33:36.736Z" }, + { url = "https://files.pythonhosted.org/packages/3a/7d/f4bc6d6fbe6af7a0d2b5f2ee77079efef7c8528712745659ec0026888998/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96", size = 387879, upload-time = "2024-12-04T15:33:38.057Z" }, + { url = "https://files.pythonhosted.org/packages/13/b0/575c797377fdcd26cedbb00a3324232e4cb2c5d121f6e4b0dbf8468b12ef/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123", size = 423916, upload-time = "2024-12-04T15:33:39.696Z" }, + { url = "https://files.pythonhosted.org/packages/54/78/87157fa39d58f32a68d3326f8a81ad8fb99f49fe2aa7ad9a1b7d544f9478/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad", size = 448410, upload-time = "2024-12-04T15:33:41.729Z" }, + { url = "https://files.pythonhosted.org/packages/59/69/860f89996065a88be1b6ff2d60e96a02b920a262d8aadab99e7903986597/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9", size = 382841, upload-time = "2024-12-04T15:33:43.169Z" }, + { url = "https://files.pythonhosted.org/packages/bd/d7/bc144e10d27e3cb350f98df2492a319edd3caaf52ddfe1293f37a9afbfd7/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e", size = 409662, upload-time = "2024-12-04T15:33:44.748Z" }, + { url = "https://files.pythonhosted.org/packages/14/2a/6bed0b05233c291a94c7e89bc76ffa1c619d4e1979fbfe5d96024020c1fb/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338", size = 558221, upload-time = "2024-12-04T15:33:46.459Z" }, + { url = "https://files.pythonhosted.org/packages/11/23/cd8f566de444a137bc1ee5795e47069a947e60810ba4152886fe5308e1b7/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566", size = 583780, upload-time = "2024-12-04T15:33:48.247Z" }, + { url = "https://files.pythonhosted.org/packages/8d/63/79c3602afd14d501f751e615a74a59040328da5ef29ed5754ae80d236b84/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe", size = 553619, upload-time = "2024-12-04T15:33:50.449Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2e/c5c1689e80298d4e94c75b70faada4c25445739d91b94c211244a3ed7ed1/rpds_py-0.22.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d", size = 233338, upload-time = "2024-12-04T15:33:51.954Z" }, + { url = "https://files.pythonhosted.org/packages/bc/b7/d2c205723e3b4d75b03215694f0297a1b4b395bf834cb5896ad9bbb90f90/rpds_py-0.22.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bb47271f60660803ad11f4c61b42242b8c1312a31c98c578f79ef9387bbde21c", size = 360594, upload-time = "2024-12-04T15:33:53.482Z" }, + { url = "https://files.pythonhosted.org/packages/d8/8f/c3515f5234cf6055046d4cfe9c80a3742a20acfa7d0b1b290f0d7f56a8db/rpds_py-0.22.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:70fb28128acbfd264eda9bf47015537ba3fe86e40d046eb2963d75024be4d055", size = 349594, upload-time = "2024-12-04T15:33:54.96Z" }, + { url = "https://files.pythonhosted.org/packages/6b/98/5b487cb06afc484befe350c87fda37f4ce11333f04f3380aba43dcf5bce2/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44d61b4b7d0c2c9ac019c314e52d7cbda0ae31078aabd0f22e583af3e0d79723", size = 381138, upload-time = "2024-12-04T15:33:57.074Z" }, + { url = "https://files.pythonhosted.org/packages/5e/3a/12308d2c51b3fdfc173619943b7dc5ba41b4850c47112eeda38d9c54ed12/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f0e260eaf54380380ac3808aa4ebe2d8ca28b9087cf411649f96bad6900c728", size = 387828, upload-time = "2024-12-04T15:33:59.232Z" }, + { url = "https://files.pythonhosted.org/packages/17/b2/c242241ab5a2a206e093f24ccbfa519c4bbf10a762ac90bffe1766c225e0/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b25bc607423935079e05619d7de556c91fb6adeae9d5f80868dde3468657994b", size = 424634, upload-time = "2024-12-04T15:34:01.019Z" }, + { url = "https://files.pythonhosted.org/packages/d5/c7/52a1b15012139f3ba740f291f1d03c6b632938ba61bc605f24c101952493/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb6116dfb8d1925cbdb52595560584db42a7f664617a1f7d7f6e32f138cdf37d", size = 447862, upload-time = "2024-12-04T15:34:03.302Z" }, + { url = "https://files.pythonhosted.org/packages/55/3e/4d3ed8fd01bad77e8ed101116fe63b03f1011940d9596a8f4d82ac80cacd/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a63cbdd98acef6570c62b92a1e43266f9e8b21e699c363c0fef13bd530799c11", size = 382506, upload-time = "2024-12-04T15:34:04.847Z" }, + { url = "https://files.pythonhosted.org/packages/30/78/df59d6f92470a84369a3757abeae1cfd7f7239c8beb6d948949bf78317d2/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b8f60e1b739a74bab7e01fcbe3dddd4657ec685caa04681df9d562ef15b625f", size = 410534, upload-time = "2024-12-04T15:34:06.506Z" }, + { url = "https://files.pythonhosted.org/packages/38/97/ea45d1edd9b753b20084b52dd5db6ee5e1ac3e036a27149972398a413858/rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2e8b55d8517a2fda8d95cb45d62a5a8bbf9dd0ad39c5b25c8833efea07b880ca", size = 557453, upload-time = "2024-12-04T15:34:08.069Z" }, + { url = "https://files.pythonhosted.org/packages/08/cd/3a1b35eb9da27ffbb981cfffd32a01c7655c4431ccb278cb3064f8887462/rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:2de29005e11637e7a2361fa151f780ff8eb2543a0da1413bb951e9f14b699ef3", size = 584412, upload-time = "2024-12-04T15:34:09.616Z" }, + { url = "https://files.pythonhosted.org/packages/87/91/31d1c5aeb1606f71188259e0ba6ed6f5c21a3c72f58b51db6a8bd0aa2b5d/rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:666ecce376999bf619756a24ce15bb14c5bfaf04bf00abc7e663ce17c3f34fe7", size = 553446, upload-time = "2024-12-04T15:34:11.215Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ad/03b5ccd1ab492c9dece85b3bf1c96453ab8c47983936fae6880f688f60b3/rpds_py-0.22.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5246b14ca64a8675e0a7161f7af68fe3e910e6b90542b4bfb5439ba752191df6", size = 233013, upload-time = "2024-12-04T15:34:12.743Z" }, ] [[package]] name = "ruff" version = "0.9.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/02/74/6c359f6b9ed85b88df6ef31febce18faeb852f6c9855651dfb1184a46845/ruff-0.9.5.tar.gz", hash = "sha256:11aecd7a633932875ab3cb05a484c99970b9d52606ce9ea912b690b02653d56c", size = 3634177 } +sdist = { url = "https://files.pythonhosted.org/packages/02/74/6c359f6b9ed85b88df6ef31febce18faeb852f6c9855651dfb1184a46845/ruff-0.9.5.tar.gz", hash = "sha256:11aecd7a633932875ab3cb05a484c99970b9d52606ce9ea912b690b02653d56c", size = 3634177, upload-time = "2025-02-06T19:47:15.41Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/4b/82b7c9ac874e72b82b19fd7eab57d122e2df44d2478d90825854f9232d02/ruff-0.9.5-py3-none-linux_armv6l.whl", hash = "sha256:d466d2abc05f39018d53f681fa1c0ffe9570e6d73cde1b65d23bb557c846f442", size = 11681264 }, - { url = "https://files.pythonhosted.org/packages/27/5c/f5ae0a9564e04108c132e1139d60491c0abc621397fe79a50b3dc0bd704b/ruff-0.9.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38840dbcef63948657fa7605ca363194d2fe8c26ce8f9ae12eee7f098c85ac8a", size = 11657554 }, - { url = "https://files.pythonhosted.org/packages/2a/83/c6926fa3ccb97cdb3c438bb56a490b395770c750bf59f9bc1fe57ae88264/ruff-0.9.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d56ba06da53536b575fbd2b56517f6f95774ff7be0f62c80b9e67430391eeb36", size = 11088959 }, - { url = "https://files.pythonhosted.org/packages/af/a7/42d1832b752fe969ffdbfcb1b4cb477cb271bed5835110fb0a16ef31ab81/ruff-0.9.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f7cb2a01da08244c50b20ccfaeb5972e4228c3c3a1989d3ece2bc4b1f996001", size = 11902041 }, - { url = "https://files.pythonhosted.org/packages/53/cf/1fffa09fb518d646f560ccfba59f91b23c731e461d6a4dedd21a393a1ff1/ruff-0.9.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:96d5c76358419bc63a671caac70c18732d4fd0341646ecd01641ddda5c39ca0b", size = 11421069 }, - { url = "https://files.pythonhosted.org/packages/09/27/bb8f1b7304e2a9431f631ae7eadc35550fe0cf620a2a6a0fc4aa3d736f94/ruff-0.9.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:deb8304636ed394211f3a6d46c0e7d9535b016f53adaa8340139859b2359a070", size = 12625095 }, - { url = "https://files.pythonhosted.org/packages/d7/ce/ab00bc9d3df35a5f1b64f5117458160a009f93ae5caf65894ebb63a1842d/ruff-0.9.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:df455000bf59e62b3e8c7ba5ed88a4a2bc64896f900f311dc23ff2dc38156440", size = 13257797 }, - { url = "https://files.pythonhosted.org/packages/88/81/c639a082ae6d8392bc52256058ec60f493c6a4d06d5505bccface3767e61/ruff-0.9.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de92170dfa50c32a2b8206a647949590e752aca8100a0f6b8cefa02ae29dce80", size = 12763793 }, - { url = "https://files.pythonhosted.org/packages/b3/d0/0a3d8f56d1e49af466dc770eeec5c125977ba9479af92e484b5b0251ce9c/ruff-0.9.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d28532d73b1f3f627ba88e1456f50748b37f3a345d2be76e4c653bec6c3e393", size = 14386234 }, - { url = "https://files.pythonhosted.org/packages/04/70/e59c192a3ad476355e7f45fb3a87326f5219cc7c472e6b040c6c6595c8f0/ruff-0.9.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c746d7d1df64f31d90503ece5cc34d7007c06751a7a3bbeee10e5f2463d52d2", size = 12437505 }, - { url = "https://files.pythonhosted.org/packages/55/4e/3abba60a259d79c391713e7a6ccabf7e2c96e5e0a19100bc4204f1a43a51/ruff-0.9.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:11417521d6f2d121fda376f0d2169fb529976c544d653d1d6044f4c5562516ee", size = 11884799 }, - { url = "https://files.pythonhosted.org/packages/a3/db/b0183a01a9f25b4efcae919c18fb41d32f985676c917008620ad692b9d5f/ruff-0.9.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5b9d71c3879eb32de700f2f6fac3d46566f644a91d3130119a6378f9312a38e1", size = 11527411 }, - { url = "https://files.pythonhosted.org/packages/0a/e4/3ebfcebca3dff1559a74c6becff76e0b64689cea02b7aab15b8b32ea245d/ruff-0.9.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2e36c61145e70febcb78483903c43444c6b9d40f6d2f800b5552fec6e4a7bb9a", size = 12078868 }, - { url = "https://files.pythonhosted.org/packages/ec/b2/5ab808833e06c0a1b0d046a51c06ec5687b73c78b116e8d77687dc0cd515/ruff-0.9.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:2f71d09aeba026c922aa7aa19a08d7bd27c867aedb2f74285a2639644c1c12f5", size = 12524374 }, - { url = "https://files.pythonhosted.org/packages/e0/51/1432afcc3b7aa6586c480142caae5323d59750925c3559688f2a9867343f/ruff-0.9.5-py3-none-win32.whl", hash = "sha256:134f958d52aa6fdec3b294b8ebe2320a950d10c041473c4316d2e7d7c2544723", size = 9853682 }, - { url = "https://files.pythonhosted.org/packages/b7/ad/c7a900591bd152bb47fc4882a27654ea55c7973e6d5d6396298ad3fd6638/ruff-0.9.5-py3-none-win_amd64.whl", hash = "sha256:78cc6067f6d80b6745b67498fb84e87d32c6fc34992b52bffefbdae3442967d6", size = 10865744 }, - { url = "https://files.pythonhosted.org/packages/75/d9/fde7610abd53c0c76b6af72fc679cb377b27c617ba704e25da834e0a0608/ruff-0.9.5-py3-none-win_arm64.whl", hash = "sha256:18a29f1a005bddb229e580795627d297dfa99f16b30c7039e73278cf6b5f9fa9", size = 10064595 }, + { url = "https://files.pythonhosted.org/packages/17/4b/82b7c9ac874e72b82b19fd7eab57d122e2df44d2478d90825854f9232d02/ruff-0.9.5-py3-none-linux_armv6l.whl", hash = "sha256:d466d2abc05f39018d53f681fa1c0ffe9570e6d73cde1b65d23bb557c846f442", size = 11681264, upload-time = "2025-02-06T19:46:16.452Z" }, + { url = "https://files.pythonhosted.org/packages/27/5c/f5ae0a9564e04108c132e1139d60491c0abc621397fe79a50b3dc0bd704b/ruff-0.9.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38840dbcef63948657fa7605ca363194d2fe8c26ce8f9ae12eee7f098c85ac8a", size = 11657554, upload-time = "2025-02-06T19:46:21.854Z" }, + { url = "https://files.pythonhosted.org/packages/2a/83/c6926fa3ccb97cdb3c438bb56a490b395770c750bf59f9bc1fe57ae88264/ruff-0.9.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d56ba06da53536b575fbd2b56517f6f95774ff7be0f62c80b9e67430391eeb36", size = 11088959, upload-time = "2025-02-06T19:46:25.109Z" }, + { url = "https://files.pythonhosted.org/packages/af/a7/42d1832b752fe969ffdbfcb1b4cb477cb271bed5835110fb0a16ef31ab81/ruff-0.9.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f7cb2a01da08244c50b20ccfaeb5972e4228c3c3a1989d3ece2bc4b1f996001", size = 11902041, upload-time = "2025-02-06T19:46:29.288Z" }, + { url = "https://files.pythonhosted.org/packages/53/cf/1fffa09fb518d646f560ccfba59f91b23c731e461d6a4dedd21a393a1ff1/ruff-0.9.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:96d5c76358419bc63a671caac70c18732d4fd0341646ecd01641ddda5c39ca0b", size = 11421069, upload-time = "2025-02-06T19:46:32.947Z" }, + { url = "https://files.pythonhosted.org/packages/09/27/bb8f1b7304e2a9431f631ae7eadc35550fe0cf620a2a6a0fc4aa3d736f94/ruff-0.9.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:deb8304636ed394211f3a6d46c0e7d9535b016f53adaa8340139859b2359a070", size = 12625095, upload-time = "2025-02-06T19:46:36.015Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/ab00bc9d3df35a5f1b64f5117458160a009f93ae5caf65894ebb63a1842d/ruff-0.9.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:df455000bf59e62b3e8c7ba5ed88a4a2bc64896f900f311dc23ff2dc38156440", size = 13257797, upload-time = "2025-02-06T19:46:39.556Z" }, + { url = "https://files.pythonhosted.org/packages/88/81/c639a082ae6d8392bc52256058ec60f493c6a4d06d5505bccface3767e61/ruff-0.9.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de92170dfa50c32a2b8206a647949590e752aca8100a0f6b8cefa02ae29dce80", size = 12763793, upload-time = "2025-02-06T19:46:43.294Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d0/0a3d8f56d1e49af466dc770eeec5c125977ba9479af92e484b5b0251ce9c/ruff-0.9.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d28532d73b1f3f627ba88e1456f50748b37f3a345d2be76e4c653bec6c3e393", size = 14386234, upload-time = "2025-02-06T19:46:47.062Z" }, + { url = "https://files.pythonhosted.org/packages/04/70/e59c192a3ad476355e7f45fb3a87326f5219cc7c472e6b040c6c6595c8f0/ruff-0.9.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c746d7d1df64f31d90503ece5cc34d7007c06751a7a3bbeee10e5f2463d52d2", size = 12437505, upload-time = "2025-02-06T19:46:49.986Z" }, + { url = "https://files.pythonhosted.org/packages/55/4e/3abba60a259d79c391713e7a6ccabf7e2c96e5e0a19100bc4204f1a43a51/ruff-0.9.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:11417521d6f2d121fda376f0d2169fb529976c544d653d1d6044f4c5562516ee", size = 11884799, upload-time = "2025-02-06T19:46:53.593Z" }, + { url = "https://files.pythonhosted.org/packages/a3/db/b0183a01a9f25b4efcae919c18fb41d32f985676c917008620ad692b9d5f/ruff-0.9.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5b9d71c3879eb32de700f2f6fac3d46566f644a91d3130119a6378f9312a38e1", size = 11527411, upload-time = "2025-02-06T19:46:56.531Z" }, + { url = "https://files.pythonhosted.org/packages/0a/e4/3ebfcebca3dff1559a74c6becff76e0b64689cea02b7aab15b8b32ea245d/ruff-0.9.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2e36c61145e70febcb78483903c43444c6b9d40f6d2f800b5552fec6e4a7bb9a", size = 12078868, upload-time = "2025-02-06T19:46:59.28Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b2/5ab808833e06c0a1b0d046a51c06ec5687b73c78b116e8d77687dc0cd515/ruff-0.9.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:2f71d09aeba026c922aa7aa19a08d7bd27c867aedb2f74285a2639644c1c12f5", size = 12524374, upload-time = "2025-02-06T19:47:02.897Z" }, + { url = "https://files.pythonhosted.org/packages/e0/51/1432afcc3b7aa6586c480142caae5323d59750925c3559688f2a9867343f/ruff-0.9.5-py3-none-win32.whl", hash = "sha256:134f958d52aa6fdec3b294b8ebe2320a950d10c041473c4316d2e7d7c2544723", size = 9853682, upload-time = "2025-02-06T19:47:05.576Z" }, + { url = "https://files.pythonhosted.org/packages/b7/ad/c7a900591bd152bb47fc4882a27654ea55c7973e6d5d6396298ad3fd6638/ruff-0.9.5-py3-none-win_amd64.whl", hash = "sha256:78cc6067f6d80b6745b67498fb84e87d32c6fc34992b52bffefbdae3442967d6", size = 10865744, upload-time = "2025-02-06T19:47:09.205Z" }, + { url = "https://files.pythonhosted.org/packages/75/d9/fde7610abd53c0c76b6af72fc679cb377b27c617ba704e25da834e0a0608/ruff-0.9.5-py3-none-win_arm64.whl", hash = "sha256:18a29f1a005bddb229e580795627d297dfa99f16b30c7039e73278cf6b5f9fa9", size = 10064595, upload-time = "2025-02-06T19:47:12.071Z" }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] [[package]] name = "soupsieve" version = "2.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/ce/fbaeed4f9fb8b2daa961f90591662df6a86c1abf25c548329a86920aedfb/soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb", size = 101569 } +sdist = { url = "https://files.pythonhosted.org/packages/d7/ce/fbaeed4f9fb8b2daa961f90591662df6a86c1abf25c548329a86920aedfb/soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb", size = 101569, upload-time = "2024-08-13T13:39:12.166Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9", size = 36186 }, + { url = "https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9", size = 36186, upload-time = "2024-08-13T13:39:10.986Z" }, ] [[package]] @@ -2582,49 +2582,49 @@ dependencies = [ { name = "greenlet", marker = "(python_full_version < '3.14' and platform_machine == 'AMD64') or (python_full_version < '3.14' and platform_machine == 'WIN32') or (python_full_version < '3.14' and platform_machine == 'aarch64') or (python_full_version < '3.14' and platform_machine == 'amd64') or (python_full_version < '3.14' and platform_machine == 'ppc64le') or (python_full_version < '3.14' and platform_machine == 'win32') or (python_full_version < '3.14' and platform_machine == 'x86_64')" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3b/20/93ea2518df4d7a14ebe9ace9ab8bb92aaf7df0072b9007644de74172b06c/sqlalchemy-2.0.37.tar.gz", hash = "sha256:12b28d99a9c14eaf4055810df1001557176716de0167b91026e648e65229bffb", size = 9626249 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/80/21/aaf0cd2e7ee56e464af7cba38a54f9c1203570181ec5d847711f33c9f520/SQLAlchemy-2.0.37-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da36c3b0e891808a7542c5c89f224520b9a16c7f5e4d6a1156955605e54aef0e", size = 2102915 }, - { url = "https://files.pythonhosted.org/packages/fd/01/6615256759515f13bb7d7b49981326f1f4e80ff1bd92dccd53f99dab79ea/SQLAlchemy-2.0.37-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e7402ff96e2b073a98ef6d6142796426d705addd27b9d26c3b32dbaa06d7d069", size = 2094095 }, - { url = "https://files.pythonhosted.org/packages/6a/f2/400252bda1bd67da7a35bb2ab84d10a8ad43975d42f15b207a9efb765446/SQLAlchemy-2.0.37-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6f5d254a22394847245f411a2956976401e84da4288aa70cbcd5190744062c1", size = 3076482 }, - { url = "https://files.pythonhosted.org/packages/40/c6/e7e8e894c8f065f96ca202cdb00454d60d4962279b3eb5a81b8766dfa836/SQLAlchemy-2.0.37-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41296bbcaa55ef5fdd32389a35c710133b097f7b2609d8218c0eabded43a1d84", size = 3084750 }, - { url = "https://files.pythonhosted.org/packages/d6/ee/1cdab04b7760e48273f2592037df156afae044e2e6589157673bd2a830c0/SQLAlchemy-2.0.37-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bedee60385c1c0411378cbd4dc486362f5ee88deceea50002772912d798bb00f", size = 3040575 }, - { url = "https://files.pythonhosted.org/packages/4d/af/2dd456bfd8d4b9750792ceedd828bddf83860f2420545e5effbaf722dae5/SQLAlchemy-2.0.37-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6c67415258f9f3c69867ec02fea1bf6508153709ecbd731a982442a590f2b7e4", size = 3066113 }, - { url = "https://files.pythonhosted.org/packages/dd/d7/ad997559574f94d7bd895a8a63996afef518d07e9eaf5a2a9cbbcb877c16/SQLAlchemy-2.0.37-cp310-cp310-win32.whl", hash = "sha256:650dcb70739957a492ad8acff65d099a9586b9b8920e3507ca61ec3ce650bb72", size = 2075239 }, - { url = "https://files.pythonhosted.org/packages/d0/82/141fbed705a21af2d825068831da1d80d720945df60c2b97ddc5133b3714/SQLAlchemy-2.0.37-cp310-cp310-win_amd64.whl", hash = "sha256:93d1543cd8359040c02b6614421c8e10cd7a788c40047dbc507ed46c29ae5636", size = 2099307 }, - { url = "https://files.pythonhosted.org/packages/7c/37/4915290c1849337be6d24012227fb3c30c575151eec2b182ee5f45e96ce7/SQLAlchemy-2.0.37-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:78361be6dc9073ed17ab380985d1e45e48a642313ab68ab6afa2457354ff692c", size = 2104098 }, - { url = "https://files.pythonhosted.org/packages/4c/f5/8cce9196434014a24cc65f6c68faa9a887080932361ee285986c0a35892d/SQLAlchemy-2.0.37-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b661b49d0cb0ab311a189b31e25576b7ac3e20783beb1e1817d72d9d02508bf5", size = 2094492 }, - { url = "https://files.pythonhosted.org/packages/9c/54/2df4b3d0d11b384b6e9a8788d0f1123243f2d2356e2ccf626f93dcc1a09f/SQLAlchemy-2.0.37-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d57bafbab289e147d064ffbd5cca2d7b1394b63417c0636cea1f2e93d16eb9e8", size = 3212789 }, - { url = "https://files.pythonhosted.org/packages/57/4f/e1db9475f940f1c54c365ed02d4f6390f884fc95a6a4022ece7725956664/SQLAlchemy-2.0.37-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fa2c0913f02341d25fb858e4fb2031e6b0813494cca1ba07d417674128ce11b", size = 3212784 }, - { url = "https://files.pythonhosted.org/packages/89/57/d93212e827d1f03a6cd4d0ea13775957c2a95161330fa47449b91153bd09/SQLAlchemy-2.0.37-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9df21b8d9e5c136ea6cde1c50d2b1c29a2b5ff2b1d610165c23ff250e0704087", size = 3149616 }, - { url = "https://files.pythonhosted.org/packages/5f/c2/759347419f69cf0bbb76d330fbdbd24cefb15842095fe86bca623759b9e8/SQLAlchemy-2.0.37-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db18ff6b8c0f1917f8b20f8eca35c28bbccb9f83afa94743e03d40203ed83de9", size = 3169944 }, - { url = "https://files.pythonhosted.org/packages/22/04/a19ecb53aa19bb8cf491ecdb6bf8c1ac74959cd4962e119e91d4e2b8ecaa/SQLAlchemy-2.0.37-cp311-cp311-win32.whl", hash = "sha256:46954173612617a99a64aee103bcd3f078901b9a8dcfc6ae80cbf34ba23df989", size = 2074686 }, - { url = "https://files.pythonhosted.org/packages/7b/9d/6e030cc2c675539dbc5ef73aa97a3cbe09341e27ad38caed2b70c4273aff/SQLAlchemy-2.0.37-cp311-cp311-win_amd64.whl", hash = "sha256:7b7e772dc4bc507fdec4ee20182f15bd60d2a84f1e087a8accf5b5b7a0dcf2ba", size = 2099891 }, - { url = "https://files.pythonhosted.org/packages/86/62/e5de4a5e0c4f5ceffb2b461aaa2378c0ee00642930a8c38e5b80338add0f/SQLAlchemy-2.0.37-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2952748ecd67ed3b56773c185e85fc084f6bdcdec10e5032a7c25a6bc7d682ef", size = 2102692 }, - { url = "https://files.pythonhosted.org/packages/01/44/3b65f4f16abeffd611da0ebab9e3aadfca45d041a78a67835c41c6d28289/SQLAlchemy-2.0.37-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3151822aa1db0eb5afd65ccfafebe0ef5cda3a7701a279c8d0bf17781a793bb4", size = 2093079 }, - { url = "https://files.pythonhosted.org/packages/a4/d8/e3a6622e86e3ae3a41ba470d1bb095c1f2dedf6b71feae0b4b94b5951017/SQLAlchemy-2.0.37-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eaa8039b6d20137a4e02603aba37d12cd2dde7887500b8855356682fc33933f4", size = 3242509 }, - { url = "https://files.pythonhosted.org/packages/3a/ef/5a53a6a60ac5a5d4ed28959317dac1ff72bc16773ccd9b3fe79713fe27f3/SQLAlchemy-2.0.37-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cdba1f73b64530c47b27118b7053b8447e6d6f3c8104e3ac59f3d40c33aa9fd", size = 3253368 }, - { url = "https://files.pythonhosted.org/packages/67/f2/30f5012379031cd5389eb06455282f926a4f99258e5ee5ccdcea27f30d67/SQLAlchemy-2.0.37-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1b2690456528a87234a75d1a1644cdb330a6926f455403c8e4f6cad6921f9098", size = 3188655 }, - { url = "https://files.pythonhosted.org/packages/fe/df/905499aa051605aeda62c1faf33d941ffb7fda291159ab1c24ef5207a079/SQLAlchemy-2.0.37-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cf5ae8a9dcf657fd72144a7fd01f243236ea39e7344e579a121c4205aedf07bb", size = 3215281 }, - { url = "https://files.pythonhosted.org/packages/94/54/f2769e7e356520f75016d82ca43ed85e47ba50e636a34124db4625ae5976/SQLAlchemy-2.0.37-cp312-cp312-win32.whl", hash = "sha256:ea308cec940905ba008291d93619d92edaf83232ec85fbd514dcb329f3192761", size = 2072972 }, - { url = "https://files.pythonhosted.org/packages/c2/7f/241f059e0b7edb85845368f43964d6b0b41733c2f7fffaa993f8e66548a5/SQLAlchemy-2.0.37-cp312-cp312-win_amd64.whl", hash = "sha256:635d8a21577341dfe4f7fa59ec394b346da12420b86624a69e466d446de16aff", size = 2098597 }, - { url = "https://files.pythonhosted.org/packages/45/d1/e63e56ceab148e69f545703a74b90c8c6dc0a04a857e4e63a4c07a23cf91/SQLAlchemy-2.0.37-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8c4096727193762e72ce9437e2a86a110cf081241919ce3fab8e89c02f6b6658", size = 2097968 }, - { url = "https://files.pythonhosted.org/packages/fd/e5/93ce63310347062bd42aaa8b6785615c78539787ef4380252fcf8e2dcee3/SQLAlchemy-2.0.37-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e4fb5ac86d8fe8151966814f6720996430462e633d225497566b3996966b9bdb", size = 2088445 }, - { url = "https://files.pythonhosted.org/packages/1b/8c/d0e0081c09188dd26040fc8a09c7d87f539e1964df1ac60611b98ff2985a/SQLAlchemy-2.0.37-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e56a139bfe136a22c438478a86f8204c1eb5eed36f4e15c4224e4b9db01cb3e4", size = 3174880 }, - { url = "https://files.pythonhosted.org/packages/79/f7/3396038d8d4ea92c72f636a007e2fac71faae0b59b7e21af46b635243d09/SQLAlchemy-2.0.37-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f95fc8e3f34b5f6b3effb49d10ac97c569ec8e32f985612d9b25dd12d0d2e94", size = 3188226 }, - { url = "https://files.pythonhosted.org/packages/ef/33/7a1d85716b29c86a744ed43690e243cb0e9c32e3b68a67a97eaa6b49ef66/SQLAlchemy-2.0.37-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c505edd429abdfe3643fa3b2e83efb3445a34a9dc49d5f692dd087be966020e0", size = 3121425 }, - { url = "https://files.pythonhosted.org/packages/27/11/fa63a77c88eb2f79bb8b438271fbacd66a546a438e4eaba32d62f11298e2/SQLAlchemy-2.0.37-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:12b0f1ec623cccf058cf21cb544f0e74656618165b083d78145cafde156ea7b6", size = 3149589 }, - { url = "https://files.pythonhosted.org/packages/b6/04/fcdd103b6871f2110460b8275d1c4828daa806997b0fa5a01c1cd7fd522d/SQLAlchemy-2.0.37-cp313-cp313-win32.whl", hash = "sha256:293f9ade06b2e68dd03cfb14d49202fac47b7bb94bffcff174568c951fbc7af2", size = 2070746 }, - { url = "https://files.pythonhosted.org/packages/d4/7c/e024719205bdc1465b7b7d3d22ece8e1ad57bc7d76ef6ed78bb5f812634a/SQLAlchemy-2.0.37-cp313-cp313-win_amd64.whl", hash = "sha256:d70f53a0646cc418ca4853da57cf3ddddbccb8c98406791f24426f2dd77fd0e2", size = 2094612 }, - { url = "https://files.pythonhosted.org/packages/70/c9/f199edc09a630ac62079977cbb8a50888cb920c1f635ce254cb4d61e1dda/SQLAlchemy-2.0.37-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:648ec5acf95ad59255452ef759054f2176849662af4521db6cb245263ae4aa33", size = 2105789 }, - { url = "https://files.pythonhosted.org/packages/e7/cc/9286318598bb26af535f480636ed6cf368794f2b483122ce7f2a56acef57/SQLAlchemy-2.0.37-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:35bd2df269de082065d4b23ae08502a47255832cc3f17619a5cea92ce478b02b", size = 2097013 }, - { url = "https://files.pythonhosted.org/packages/db/41/efaa216b3ebe2989f233ac72abed7281c8fe45a40a2cae7a06c3b1cef870/SQLAlchemy-2.0.37-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f581d365af9373a738c49e0c51e8b18e08d8a6b1b15cc556773bcd8a192fa8b", size = 3090933 }, - { url = "https://files.pythonhosted.org/packages/65/ee/b99bb446b0dc8fa5e2dbd47bf379bc62c5f2823681732fd3a253b1c49a6e/SQLAlchemy-2.0.37-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82df02816c14f8dc9f4d74aea4cb84a92f4b0620235daa76dde002409a3fbb5a", size = 3098730 }, - { url = "https://files.pythonhosted.org/packages/dd/61/a9eac6696ca4791895784871f79b32bcf1b0dd17614479734558036af8d8/SQLAlchemy-2.0.37-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:94b564e38b344d3e67d2e224f0aec6ba09a77e4582ced41e7bfd0f757d926ec9", size = 3057751 }, - { url = "https://files.pythonhosted.org/packages/95/be/d70fa8a42287976dad0d590f75633ec203694d2f9bafd1cdba41d8e4db55/SQLAlchemy-2.0.37-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:955a2a765aa1bd81aafa69ffda179d4fe3e2a3ad462a736ae5b6f387f78bfeb8", size = 3084290 }, - { url = "https://files.pythonhosted.org/packages/18/e9/a00e73a7e8eb620ea030592c7d3a9b66c31bc6b36effdf04f10c7ada8dc1/SQLAlchemy-2.0.37-cp39-cp39-win32.whl", hash = "sha256:03f0528c53ca0b67094c4764523c1451ea15959bbf0a8a8a3096900014db0278", size = 2077561 }, - { url = "https://files.pythonhosted.org/packages/2a/52/f3fff9216b9df07e8142001e638d5ba8c298299a2a9006b9ab3b068fb0f1/SQLAlchemy-2.0.37-cp39-cp39-win_amd64.whl", hash = "sha256:4b12885dc85a2ab2b7d00995bac6d967bffa8594123b02ed21e8eb2205a7584b", size = 2101760 }, - { url = "https://files.pythonhosted.org/packages/3b/36/59cc97c365f2f79ac9f3f51446cae56dfd82c4f2dd98497e6be6de20fb91/SQLAlchemy-2.0.37-py3-none-any.whl", hash = "sha256:a8998bf9f8658bd3839cbc44ddbe982955641863da0c1efe5b00c1ab4f5c16b1", size = 1894113 }, +sdist = { url = "https://files.pythonhosted.org/packages/3b/20/93ea2518df4d7a14ebe9ace9ab8bb92aaf7df0072b9007644de74172b06c/sqlalchemy-2.0.37.tar.gz", hash = "sha256:12b28d99a9c14eaf4055810df1001557176716de0167b91026e648e65229bffb", size = 9626249, upload-time = "2025-01-09T22:43:25.981Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/21/aaf0cd2e7ee56e464af7cba38a54f9c1203570181ec5d847711f33c9f520/SQLAlchemy-2.0.37-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da36c3b0e891808a7542c5c89f224520b9a16c7f5e4d6a1156955605e54aef0e", size = 2102915, upload-time = "2025-01-10T00:32:23.205Z" }, + { url = "https://files.pythonhosted.org/packages/fd/01/6615256759515f13bb7d7b49981326f1f4e80ff1bd92dccd53f99dab79ea/SQLAlchemy-2.0.37-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e7402ff96e2b073a98ef6d6142796426d705addd27b9d26c3b32dbaa06d7d069", size = 2094095, upload-time = "2025-01-10T00:32:27.283Z" }, + { url = "https://files.pythonhosted.org/packages/6a/f2/400252bda1bd67da7a35bb2ab84d10a8ad43975d42f15b207a9efb765446/SQLAlchemy-2.0.37-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6f5d254a22394847245f411a2956976401e84da4288aa70cbcd5190744062c1", size = 3076482, upload-time = "2025-01-10T02:42:49.513Z" }, + { url = "https://files.pythonhosted.org/packages/40/c6/e7e8e894c8f065f96ca202cdb00454d60d4962279b3eb5a81b8766dfa836/SQLAlchemy-2.0.37-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41296bbcaa55ef5fdd32389a35c710133b097f7b2609d8218c0eabded43a1d84", size = 3084750, upload-time = "2025-01-10T00:58:04.316Z" }, + { url = "https://files.pythonhosted.org/packages/d6/ee/1cdab04b7760e48273f2592037df156afae044e2e6589157673bd2a830c0/SQLAlchemy-2.0.37-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bedee60385c1c0411378cbd4dc486362f5ee88deceea50002772912d798bb00f", size = 3040575, upload-time = "2025-01-10T02:42:52.811Z" }, + { url = "https://files.pythonhosted.org/packages/4d/af/2dd456bfd8d4b9750792ceedd828bddf83860f2420545e5effbaf722dae5/SQLAlchemy-2.0.37-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6c67415258f9f3c69867ec02fea1bf6508153709ecbd731a982442a590f2b7e4", size = 3066113, upload-time = "2025-01-10T00:58:07.514Z" }, + { url = "https://files.pythonhosted.org/packages/dd/d7/ad997559574f94d7bd895a8a63996afef518d07e9eaf5a2a9cbbcb877c16/SQLAlchemy-2.0.37-cp310-cp310-win32.whl", hash = "sha256:650dcb70739957a492ad8acff65d099a9586b9b8920e3507ca61ec3ce650bb72", size = 2075239, upload-time = "2025-01-09T22:59:09.664Z" }, + { url = "https://files.pythonhosted.org/packages/d0/82/141fbed705a21af2d825068831da1d80d720945df60c2b97ddc5133b3714/SQLAlchemy-2.0.37-cp310-cp310-win_amd64.whl", hash = "sha256:93d1543cd8359040c02b6614421c8e10cd7a788c40047dbc507ed46c29ae5636", size = 2099307, upload-time = "2025-01-09T22:59:11.208Z" }, + { url = "https://files.pythonhosted.org/packages/7c/37/4915290c1849337be6d24012227fb3c30c575151eec2b182ee5f45e96ce7/SQLAlchemy-2.0.37-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:78361be6dc9073ed17ab380985d1e45e48a642313ab68ab6afa2457354ff692c", size = 2104098, upload-time = "2025-01-10T00:32:29.975Z" }, + { url = "https://files.pythonhosted.org/packages/4c/f5/8cce9196434014a24cc65f6c68faa9a887080932361ee285986c0a35892d/SQLAlchemy-2.0.37-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b661b49d0cb0ab311a189b31e25576b7ac3e20783beb1e1817d72d9d02508bf5", size = 2094492, upload-time = "2025-01-10T00:32:32.697Z" }, + { url = "https://files.pythonhosted.org/packages/9c/54/2df4b3d0d11b384b6e9a8788d0f1123243f2d2356e2ccf626f93dcc1a09f/SQLAlchemy-2.0.37-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d57bafbab289e147d064ffbd5cca2d7b1394b63417c0636cea1f2e93d16eb9e8", size = 3212789, upload-time = "2025-01-10T02:42:56.584Z" }, + { url = "https://files.pythonhosted.org/packages/57/4f/e1db9475f940f1c54c365ed02d4f6390f884fc95a6a4022ece7725956664/SQLAlchemy-2.0.37-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fa2c0913f02341d25fb858e4fb2031e6b0813494cca1ba07d417674128ce11b", size = 3212784, upload-time = "2025-01-10T00:58:09.639Z" }, + { url = "https://files.pythonhosted.org/packages/89/57/d93212e827d1f03a6cd4d0ea13775957c2a95161330fa47449b91153bd09/SQLAlchemy-2.0.37-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9df21b8d9e5c136ea6cde1c50d2b1c29a2b5ff2b1d610165c23ff250e0704087", size = 3149616, upload-time = "2025-01-10T02:42:58.816Z" }, + { url = "https://files.pythonhosted.org/packages/5f/c2/759347419f69cf0bbb76d330fbdbd24cefb15842095fe86bca623759b9e8/SQLAlchemy-2.0.37-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:db18ff6b8c0f1917f8b20f8eca35c28bbccb9f83afa94743e03d40203ed83de9", size = 3169944, upload-time = "2025-01-10T00:58:12.998Z" }, + { url = "https://files.pythonhosted.org/packages/22/04/a19ecb53aa19bb8cf491ecdb6bf8c1ac74959cd4962e119e91d4e2b8ecaa/SQLAlchemy-2.0.37-cp311-cp311-win32.whl", hash = "sha256:46954173612617a99a64aee103bcd3f078901b9a8dcfc6ae80cbf34ba23df989", size = 2074686, upload-time = "2025-01-09T22:59:12.557Z" }, + { url = "https://files.pythonhosted.org/packages/7b/9d/6e030cc2c675539dbc5ef73aa97a3cbe09341e27ad38caed2b70c4273aff/SQLAlchemy-2.0.37-cp311-cp311-win_amd64.whl", hash = "sha256:7b7e772dc4bc507fdec4ee20182f15bd60d2a84f1e087a8accf5b5b7a0dcf2ba", size = 2099891, upload-time = "2025-01-09T22:59:15.253Z" }, + { url = "https://files.pythonhosted.org/packages/86/62/e5de4a5e0c4f5ceffb2b461aaa2378c0ee00642930a8c38e5b80338add0f/SQLAlchemy-2.0.37-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2952748ecd67ed3b56773c185e85fc084f6bdcdec10e5032a7c25a6bc7d682ef", size = 2102692, upload-time = "2025-01-10T00:36:41.573Z" }, + { url = "https://files.pythonhosted.org/packages/01/44/3b65f4f16abeffd611da0ebab9e3aadfca45d041a78a67835c41c6d28289/SQLAlchemy-2.0.37-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3151822aa1db0eb5afd65ccfafebe0ef5cda3a7701a279c8d0bf17781a793bb4", size = 2093079, upload-time = "2025-01-10T00:36:44.98Z" }, + { url = "https://files.pythonhosted.org/packages/a4/d8/e3a6622e86e3ae3a41ba470d1bb095c1f2dedf6b71feae0b4b94b5951017/SQLAlchemy-2.0.37-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eaa8039b6d20137a4e02603aba37d12cd2dde7887500b8855356682fc33933f4", size = 3242509, upload-time = "2025-01-10T02:36:54.407Z" }, + { url = "https://files.pythonhosted.org/packages/3a/ef/5a53a6a60ac5a5d4ed28959317dac1ff72bc16773ccd9b3fe79713fe27f3/SQLAlchemy-2.0.37-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cdba1f73b64530c47b27118b7053b8447e6d6f3c8104e3ac59f3d40c33aa9fd", size = 3253368, upload-time = "2025-01-10T00:56:31.416Z" }, + { url = "https://files.pythonhosted.org/packages/67/f2/30f5012379031cd5389eb06455282f926a4f99258e5ee5ccdcea27f30d67/SQLAlchemy-2.0.37-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1b2690456528a87234a75d1a1644cdb330a6926f455403c8e4f6cad6921f9098", size = 3188655, upload-time = "2025-01-10T02:36:58.732Z" }, + { url = "https://files.pythonhosted.org/packages/fe/df/905499aa051605aeda62c1faf33d941ffb7fda291159ab1c24ef5207a079/SQLAlchemy-2.0.37-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cf5ae8a9dcf657fd72144a7fd01f243236ea39e7344e579a121c4205aedf07bb", size = 3215281, upload-time = "2025-01-10T00:56:35.9Z" }, + { url = "https://files.pythonhosted.org/packages/94/54/f2769e7e356520f75016d82ca43ed85e47ba50e636a34124db4625ae5976/SQLAlchemy-2.0.37-cp312-cp312-win32.whl", hash = "sha256:ea308cec940905ba008291d93619d92edaf83232ec85fbd514dcb329f3192761", size = 2072972, upload-time = "2025-01-09T22:59:55.279Z" }, + { url = "https://files.pythonhosted.org/packages/c2/7f/241f059e0b7edb85845368f43964d6b0b41733c2f7fffaa993f8e66548a5/SQLAlchemy-2.0.37-cp312-cp312-win_amd64.whl", hash = "sha256:635d8a21577341dfe4f7fa59ec394b346da12420b86624a69e466d446de16aff", size = 2098597, upload-time = "2025-01-09T22:59:58.352Z" }, + { url = "https://files.pythonhosted.org/packages/45/d1/e63e56ceab148e69f545703a74b90c8c6dc0a04a857e4e63a4c07a23cf91/SQLAlchemy-2.0.37-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8c4096727193762e72ce9437e2a86a110cf081241919ce3fab8e89c02f6b6658", size = 2097968, upload-time = "2025-01-10T00:36:47.779Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e5/93ce63310347062bd42aaa8b6785615c78539787ef4380252fcf8e2dcee3/SQLAlchemy-2.0.37-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e4fb5ac86d8fe8151966814f6720996430462e633d225497566b3996966b9bdb", size = 2088445, upload-time = "2025-01-10T00:36:49.309Z" }, + { url = "https://files.pythonhosted.org/packages/1b/8c/d0e0081c09188dd26040fc8a09c7d87f539e1964df1ac60611b98ff2985a/SQLAlchemy-2.0.37-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e56a139bfe136a22c438478a86f8204c1eb5eed36f4e15c4224e4b9db01cb3e4", size = 3174880, upload-time = "2025-01-10T02:37:01.904Z" }, + { url = "https://files.pythonhosted.org/packages/79/f7/3396038d8d4ea92c72f636a007e2fac71faae0b59b7e21af46b635243d09/SQLAlchemy-2.0.37-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f95fc8e3f34b5f6b3effb49d10ac97c569ec8e32f985612d9b25dd12d0d2e94", size = 3188226, upload-time = "2025-01-10T00:56:37.639Z" }, + { url = "https://files.pythonhosted.org/packages/ef/33/7a1d85716b29c86a744ed43690e243cb0e9c32e3b68a67a97eaa6b49ef66/SQLAlchemy-2.0.37-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c505edd429abdfe3643fa3b2e83efb3445a34a9dc49d5f692dd087be966020e0", size = 3121425, upload-time = "2025-01-10T02:37:04.014Z" }, + { url = "https://files.pythonhosted.org/packages/27/11/fa63a77c88eb2f79bb8b438271fbacd66a546a438e4eaba32d62f11298e2/SQLAlchemy-2.0.37-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:12b0f1ec623cccf058cf21cb544f0e74656618165b083d78145cafde156ea7b6", size = 3149589, upload-time = "2025-01-10T00:56:40.578Z" }, + { url = "https://files.pythonhosted.org/packages/b6/04/fcdd103b6871f2110460b8275d1c4828daa806997b0fa5a01c1cd7fd522d/SQLAlchemy-2.0.37-cp313-cp313-win32.whl", hash = "sha256:293f9ade06b2e68dd03cfb14d49202fac47b7bb94bffcff174568c951fbc7af2", size = 2070746, upload-time = "2025-01-09T23:00:00.985Z" }, + { url = "https://files.pythonhosted.org/packages/d4/7c/e024719205bdc1465b7b7d3d22ece8e1ad57bc7d76ef6ed78bb5f812634a/SQLAlchemy-2.0.37-cp313-cp313-win_amd64.whl", hash = "sha256:d70f53a0646cc418ca4853da57cf3ddddbccb8c98406791f24426f2dd77fd0e2", size = 2094612, upload-time = "2025-01-09T23:00:03.8Z" }, + { url = "https://files.pythonhosted.org/packages/70/c9/f199edc09a630ac62079977cbb8a50888cb920c1f635ce254cb4d61e1dda/SQLAlchemy-2.0.37-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:648ec5acf95ad59255452ef759054f2176849662af4521db6cb245263ae4aa33", size = 2105789, upload-time = "2025-01-10T01:05:31.755Z" }, + { url = "https://files.pythonhosted.org/packages/e7/cc/9286318598bb26af535f480636ed6cf368794f2b483122ce7f2a56acef57/SQLAlchemy-2.0.37-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:35bd2df269de082065d4b23ae08502a47255832cc3f17619a5cea92ce478b02b", size = 2097013, upload-time = "2025-01-10T01:05:34.581Z" }, + { url = "https://files.pythonhosted.org/packages/db/41/efaa216b3ebe2989f233ac72abed7281c8fe45a40a2cae7a06c3b1cef870/SQLAlchemy-2.0.37-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f581d365af9373a738c49e0c51e8b18e08d8a6b1b15cc556773bcd8a192fa8b", size = 3090933, upload-time = "2025-01-10T04:15:31.258Z" }, + { url = "https://files.pythonhosted.org/packages/65/ee/b99bb446b0dc8fa5e2dbd47bf379bc62c5f2823681732fd3a253b1c49a6e/SQLAlchemy-2.0.37-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82df02816c14f8dc9f4d74aea4cb84a92f4b0620235daa76dde002409a3fbb5a", size = 3098730, upload-time = "2025-01-10T01:06:46.615Z" }, + { url = "https://files.pythonhosted.org/packages/dd/61/a9eac6696ca4791895784871f79b32bcf1b0dd17614479734558036af8d8/SQLAlchemy-2.0.37-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:94b564e38b344d3e67d2e224f0aec6ba09a77e4582ced41e7bfd0f757d926ec9", size = 3057751, upload-time = "2025-01-10T04:15:34.316Z" }, + { url = "https://files.pythonhosted.org/packages/95/be/d70fa8a42287976dad0d590f75633ec203694d2f9bafd1cdba41d8e4db55/SQLAlchemy-2.0.37-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:955a2a765aa1bd81aafa69ffda179d4fe3e2a3ad462a736ae5b6f387f78bfeb8", size = 3084290, upload-time = "2025-01-10T01:06:49.702Z" }, + { url = "https://files.pythonhosted.org/packages/18/e9/a00e73a7e8eb620ea030592c7d3a9b66c31bc6b36effdf04f10c7ada8dc1/SQLAlchemy-2.0.37-cp39-cp39-win32.whl", hash = "sha256:03f0528c53ca0b67094c4764523c1451ea15959bbf0a8a8a3096900014db0278", size = 2077561, upload-time = "2025-01-09T23:09:14.555Z" }, + { url = "https://files.pythonhosted.org/packages/2a/52/f3fff9216b9df07e8142001e638d5ba8c298299a2a9006b9ab3b068fb0f1/SQLAlchemy-2.0.37-cp39-cp39-win_amd64.whl", hash = "sha256:4b12885dc85a2ab2b7d00995bac6d967bffa8594123b02ed21e8eb2205a7584b", size = 2101760, upload-time = "2025-01-09T23:09:17.256Z" }, + { url = "https://files.pythonhosted.org/packages/3b/36/59cc97c365f2f79ac9f3f51446cae56dfd82c4f2dd98497e6be6de20fb91/SQLAlchemy-2.0.37-py3-none-any.whl", hash = "sha256:a8998bf9f8658bd3839cbc44ddbe982955641863da0c1efe5b00c1ab4f5c16b1", size = 1894113, upload-time = "2025-01-10T00:44:58.368Z" }, ] [[package]] @@ -2637,9 +2637,9 @@ dependencies = [ { name = "rich" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1f/b6/59b1de04bb4dca0f21ed7ba0b19309ed7f3f5de4396edf20cc2855e53085/textual-1.0.0.tar.gz", hash = "sha256:bec9fe63547c1c552569d1b75d309038b7d456c03f86dfa3706ddb099b151399", size = 1532733 } +sdist = { url = "https://files.pythonhosted.org/packages/1f/b6/59b1de04bb4dca0f21ed7ba0b19309ed7f3f5de4396edf20cc2855e53085/textual-1.0.0.tar.gz", hash = "sha256:bec9fe63547c1c552569d1b75d309038b7d456c03f86dfa3706ddb099b151399", size = 1532733, upload-time = "2024-12-12T10:42:03.286Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ac/bb/5fb6656c625019cd653d5215237d7cd6e0b12e7eae4195c3d1c91b2136fc/textual-1.0.0-py3-none-any.whl", hash = "sha256:2d4a701781c05104925e463ae370c630567c70c2880e92ab838052e3e23c986f", size = 660456 }, + { url = "https://files.pythonhosted.org/packages/ac/bb/5fb6656c625019cd653d5215237d7cd6e0b12e7eae4195c3d1c91b2136fc/textual-1.0.0-py3-none-any.whl", hash = "sha256:2d4a701781c05104925e463ae370c630567c70c2880e92ab838052e3e23c986f", size = 660456, upload-time = "2024-12-12T10:42:00.375Z" }, ] [[package]] @@ -2649,66 +2649,66 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, ] [[package]] name = "tokenize-rt" version = "6.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6b/0a/5854d8ced8c1e00193d1353d13db82d7f813f99bd5dcb776ce3e2a4c0d19/tokenize_rt-6.1.0.tar.gz", hash = "sha256:e8ee836616c0877ab7c7b54776d2fefcc3bde714449a206762425ae114b53c86", size = 5506 } +sdist = { url = "https://files.pythonhosted.org/packages/6b/0a/5854d8ced8c1e00193d1353d13db82d7f813f99bd5dcb776ce3e2a4c0d19/tokenize_rt-6.1.0.tar.gz", hash = "sha256:e8ee836616c0877ab7c7b54776d2fefcc3bde714449a206762425ae114b53c86", size = 5506, upload-time = "2024-10-22T00:14:59.189Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/ba/576aac29b10dfa49a6ce650001d1bb31f81e734660555eaf144bfe5b8995/tokenize_rt-6.1.0-py2.py3-none-any.whl", hash = "sha256:d706141cdec4aa5f358945abe36b911b8cbdc844545da99e811250c0cee9b6fc", size = 6015 }, + { url = "https://files.pythonhosted.org/packages/87/ba/576aac29b10dfa49a6ce650001d1bb31f81e734660555eaf144bfe5b8995/tokenize_rt-6.1.0-py2.py3-none-any.whl", hash = "sha256:d706141cdec4aa5f358945abe36b911b8cbdc844545da99e811250c0cee9b6fc", size = 6015, upload-time = "2024-10-22T00:14:57.469Z" }, ] [[package]] name = "tomli" version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, - { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, - { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, - { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, - { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, - { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, - { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, - { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, - { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, - { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, - { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, - { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, - { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, - { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, - { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, - { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, - { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, - { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, - { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, - { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, - { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, - { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, - { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, - { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, - { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, - { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, - { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, - { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, - { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, - { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, - { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, ] [[package]] name = "typing-extensions" version = "4.12.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321, upload-time = "2024-06-07T18:52:15.995Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438, upload-time = "2024-06-07T18:52:13.582Z" }, ] [[package]] @@ -2718,91 +2718,91 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 } +sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222, upload-time = "2025-02-25T17:27:59.638Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 }, + { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125, upload-time = "2025-02-25T17:27:57.754Z" }, ] [[package]] name = "tzdata" version = "2025.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/0f/fa4723f22942480be4ca9527bbde8d43f6c3f2fe8412f00e7f5f6746bc8b/tzdata-2025.1.tar.gz", hash = "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694", size = 194950 } +sdist = { url = "https://files.pythonhosted.org/packages/43/0f/fa4723f22942480be4ca9527bbde8d43f6c3f2fe8412f00e7f5f6746bc8b/tzdata-2025.1.tar.gz", hash = "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694", size = 194950, upload-time = "2025-01-21T19:49:38.686Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/dd/84f10e23edd882c6f968c21c2434fe67bd4a528967067515feca9e611e5e/tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639", size = 346762 }, + { url = "https://files.pythonhosted.org/packages/0f/dd/84f10e23edd882c6f968c21c2434fe67bd4a528967067515feca9e611e5e/tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639", size = 346762, upload-time = "2025-01-21T19:49:37.187Z" }, ] [[package]] name = "uc-micro-py" version = "1.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/7a/146a99696aee0609e3712f2b44c6274566bc368dfe8375191278045186b8/uc-micro-py-1.0.3.tar.gz", hash = "sha256:d321b92cff673ec58027c04015fcaa8bb1e005478643ff4a500882eaab88c48a", size = 6043 } +sdist = { url = "https://files.pythonhosted.org/packages/91/7a/146a99696aee0609e3712f2b44c6274566bc368dfe8375191278045186b8/uc-micro-py-1.0.3.tar.gz", hash = "sha256:d321b92cff673ec58027c04015fcaa8bb1e005478643ff4a500882eaab88c48a", size = 6043, upload-time = "2024-02-09T16:52:01.654Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/37/87/1f677586e8ac487e29672e4b17455758fce261de06a0d086167bb760361a/uc_micro_py-1.0.3-py3-none-any.whl", hash = "sha256:db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5", size = 6229 }, + { url = "https://files.pythonhosted.org/packages/37/87/1f677586e8ac487e29672e4b17455758fce261de06a0d086167bb760361a/uc_micro_py-1.0.3-py3-none-any.whl", hash = "sha256:db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5", size = 6229, upload-time = "2024-02-09T16:52:00.371Z" }, ] [[package]] name = "urllib3" version = "2.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", size = 307268 } +sdist = { url = "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", size = 307268, upload-time = "2024-12-22T07:47:30.032Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369 }, + { url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369, upload-time = "2024-12-22T07:47:28.074Z" }, ] [[package]] name = "verspec" version = "0.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/44/8126f9f0c44319b2efc65feaad589cadef4d77ece200ae3c9133d58464d0/verspec-0.1.0.tar.gz", hash = "sha256:c4504ca697b2056cdb4bfa7121461f5a0e81809255b41c03dda4ba823637c01e", size = 27123 } +sdist = { url = "https://files.pythonhosted.org/packages/e7/44/8126f9f0c44319b2efc65feaad589cadef4d77ece200ae3c9133d58464d0/verspec-0.1.0.tar.gz", hash = "sha256:c4504ca697b2056cdb4bfa7121461f5a0e81809255b41c03dda4ba823637c01e", size = 27123, upload-time = "2020-11-30T02:24:09.646Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/ce/3b6fee91c85626eaf769d617f1be9d2e15c1cca027bbdeb2e0d751469355/verspec-0.1.0-py3-none-any.whl", hash = "sha256:741877d5633cc9464c45a469ae2a31e801e6dbbaa85b9675d481cda100f11c31", size = 19640 }, + { url = "https://files.pythonhosted.org/packages/a4/ce/3b6fee91c85626eaf769d617f1be9d2e15c1cca027bbdeb2e0d751469355/verspec-0.1.0-py3-none-any.whl", hash = "sha256:741877d5633cc9464c45a469ae2a31e801e6dbbaa85b9675d481cda100f11c31", size = 19640, upload-time = "2020-11-30T02:24:08.387Z" }, ] [[package]] name = "watchdog" version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/56/90994d789c61df619bfc5ce2ecdabd5eeff564e1eb47512bd01b5e019569/watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26", size = 96390 }, - { url = "https://files.pythonhosted.org/packages/55/46/9a67ee697342ddf3c6daa97e3a587a56d6c4052f881ed926a849fcf7371c/watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112", size = 88389 }, - { url = "https://files.pythonhosted.org/packages/44/65/91b0985747c52064d8701e1075eb96f8c40a79df889e59a399453adfb882/watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3", size = 89020 }, - { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393 }, - { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392 }, - { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019 }, - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, - { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, - { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, - { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, - { url = "https://files.pythonhosted.org/packages/05/52/7223011bb760fce8ddc53416beb65b83a3ea6d7d13738dde75eeb2c89679/watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8", size = 96390 }, - { url = "https://files.pythonhosted.org/packages/9c/62/d2b21bc4e706d3a9d467561f487c2938cbd881c69f3808c43ac1ec242391/watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a", size = 88386 }, - { url = "https://files.pythonhosted.org/packages/ea/22/1c90b20eda9f4132e4603a26296108728a8bfe9584b006bd05dd94548853/watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c", size = 89017 }, - { url = "https://files.pythonhosted.org/packages/30/ad/d17b5d42e28a8b91f8ed01cb949da092827afb9995d4559fd448d0472763/watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881", size = 87902 }, - { url = "https://files.pythonhosted.org/packages/5c/ca/c3649991d140ff6ab67bfc85ab42b165ead119c9e12211e08089d763ece5/watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11", size = 88380 }, - { url = "https://files.pythonhosted.org/packages/5b/79/69f2b0e8d3f2afd462029031baafb1b75d11bb62703f0e1022b2e54d49ee/watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa", size = 87903 }, - { url = "https://files.pythonhosted.org/packages/e2/2b/dc048dd71c2e5f0f7ebc04dd7912981ec45793a03c0dc462438e0591ba5d/watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e", size = 88381 }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload-time = "2024-11-01T14:07:13.037Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/56/90994d789c61df619bfc5ce2ecdabd5eeff564e1eb47512bd01b5e019569/watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26", size = 96390, upload-time = "2024-11-01T14:06:24.793Z" }, + { url = "https://files.pythonhosted.org/packages/55/46/9a67ee697342ddf3c6daa97e3a587a56d6c4052f881ed926a849fcf7371c/watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112", size = 88389, upload-time = "2024-11-01T14:06:27.112Z" }, + { url = "https://files.pythonhosted.org/packages/44/65/91b0985747c52064d8701e1075eb96f8c40a79df889e59a399453adfb882/watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3", size = 89020, upload-time = "2024-11-01T14:06:29.876Z" }, + { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393, upload-time = "2024-11-01T14:06:31.756Z" }, + { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392, upload-time = "2024-11-01T14:06:32.99Z" }, + { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019, upload-time = "2024-11-01T14:06:34.963Z" }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload-time = "2024-11-01T14:06:37.745Z" }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload-time = "2024-11-01T14:06:39.748Z" }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload-time = "2024-11-01T14:06:41.009Z" }, + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480, upload-time = "2024-11-01T14:06:42.952Z" }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451, upload-time = "2024-11-01T14:06:45.084Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057, upload-time = "2024-11-01T14:06:47.324Z" }, + { url = "https://files.pythonhosted.org/packages/05/52/7223011bb760fce8ddc53416beb65b83a3ea6d7d13738dde75eeb2c89679/watchdog-6.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8", size = 96390, upload-time = "2024-11-01T14:06:49.325Z" }, + { url = "https://files.pythonhosted.org/packages/9c/62/d2b21bc4e706d3a9d467561f487c2938cbd881c69f3808c43ac1ec242391/watchdog-6.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:90c8e78f3b94014f7aaae121e6b909674df5b46ec24d6bebc45c44c56729af2a", size = 88386, upload-time = "2024-11-01T14:06:50.536Z" }, + { url = "https://files.pythonhosted.org/packages/ea/22/1c90b20eda9f4132e4603a26296108728a8bfe9584b006bd05dd94548853/watchdog-6.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c", size = 89017, upload-time = "2024-11-01T14:06:51.717Z" }, + { url = "https://files.pythonhosted.org/packages/30/ad/d17b5d42e28a8b91f8ed01cb949da092827afb9995d4559fd448d0472763/watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881", size = 87902, upload-time = "2024-11-01T14:06:53.119Z" }, + { url = "https://files.pythonhosted.org/packages/5c/ca/c3649991d140ff6ab67bfc85ab42b165ead119c9e12211e08089d763ece5/watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11", size = 88380, upload-time = "2024-11-01T14:06:55.19Z" }, + { url = "https://files.pythonhosted.org/packages/5b/79/69f2b0e8d3f2afd462029031baafb1b75d11bb62703f0e1022b2e54d49ee/watchdog-6.0.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7a0e56874cfbc4b9b05c60c8a1926fedf56324bb08cfbc188969777940aef3aa", size = 87903, upload-time = "2024-11-01T14:06:57.052Z" }, + { url = "https://files.pythonhosted.org/packages/e2/2b/dc048dd71c2e5f0f7ebc04dd7912981ec45793a03c0dc462438e0591ba5d/watchdog-6.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e6439e374fc012255b4ec786ae3c4bc838cd7309a540e5fe0952d03687d8804e", size = 88381, upload-time = "2024-11-01T14:06:58.193Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload-time = "2024-11-01T14:06:59.472Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload-time = "2024-11-01T14:07:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload-time = "2024-11-01T14:07:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload-time = "2024-11-01T14:07:03.893Z" }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload-time = "2024-11-01T14:07:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload-time = "2024-11-01T14:07:06.376Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload-time = "2024-11-01T14:07:07.547Z" }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload-time = "2024-11-01T14:07:09.525Z" }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload-time = "2024-11-01T14:07:10.686Z" }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload-time = "2024-11-01T14:07:11.845Z" }, ] [[package]] name = "webencodings" version = "0.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, ] [[package]] @@ -2814,96 +2814,96 @@ dependencies = [ { name = "multidict" }, { name = "propcache" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b7/9d/4b94a8e6d2b51b599516a5cb88e5bc99b4d8d4583e468057eaa29d5f0918/yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1", size = 181062 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/98/e005bc608765a8a5569f58e650961314873c8469c333616eb40bff19ae97/yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34", size = 141458 }, - { url = "https://files.pythonhosted.org/packages/df/5d/f8106b263b8ae8a866b46d9be869ac01f9b3fb7f2325f3ecb3df8003f796/yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7", size = 94365 }, - { url = "https://files.pythonhosted.org/packages/56/3e/d8637ddb9ba69bf851f765a3ee288676f7cf64fb3be13760c18cbc9d10bd/yarl-1.18.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:602d98f2c2d929f8e697ed274fbadc09902c4025c5a9963bf4e9edfc3ab6f7ed", size = 92181 }, - { url = "https://files.pythonhosted.org/packages/76/f9/d616a5c2daae281171de10fba41e1c0e2d8207166fc3547252f7d469b4e1/yarl-1.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c654d5207c78e0bd6d749f6dae1dcbbfde3403ad3a4b11f3c5544d9906969dde", size = 315349 }, - { url = "https://files.pythonhosted.org/packages/bb/b4/3ea5e7b6f08f698b3769a06054783e434f6d59857181b5c4e145de83f59b/yarl-1.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5094d9206c64181d0f6e76ebd8fb2f8fe274950a63890ee9e0ebfd58bf9d787b", size = 330494 }, - { url = "https://files.pythonhosted.org/packages/55/f1/e0fc810554877b1b67420568afff51b967baed5b53bcc983ab164eebf9c9/yarl-1.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35098b24e0327fc4ebdc8ffe336cee0a87a700c24ffed13161af80124b7dc8e5", size = 326927 }, - { url = "https://files.pythonhosted.org/packages/a9/42/b1753949b327b36f210899f2dd0a0947c0c74e42a32de3f8eb5c7d93edca/yarl-1.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3236da9272872443f81fedc389bace88408f64f89f75d1bdb2256069a8730ccc", size = 319703 }, - { url = "https://files.pythonhosted.org/packages/f0/6d/e87c62dc9635daefb064b56f5c97df55a2e9cc947a2b3afd4fd2f3b841c7/yarl-1.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2c08cc9b16f4f4bc522771d96734c7901e7ebef70c6c5c35dd0f10845270bcd", size = 310246 }, - { url = "https://files.pythonhosted.org/packages/e3/ef/e2e8d1785cdcbd986f7622d7f0098205f3644546da7919c24b95790ec65a/yarl-1.18.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80316a8bd5109320d38eef8833ccf5f89608c9107d02d2a7f985f98ed6876990", size = 319730 }, - { url = "https://files.pythonhosted.org/packages/fc/15/8723e22345bc160dfde68c4b3ae8b236e868f9963c74015f1bc8a614101c/yarl-1.18.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c1e1cc06da1491e6734f0ea1e6294ce00792193c463350626571c287c9a704db", size = 321681 }, - { url = "https://files.pythonhosted.org/packages/86/09/bf764e974f1516efa0ae2801494a5951e959f1610dd41edbfc07e5e0f978/yarl-1.18.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fea09ca13323376a2fdfb353a5fa2e59f90cd18d7ca4eaa1fd31f0a8b4f91e62", size = 324812 }, - { url = "https://files.pythonhosted.org/packages/f6/4c/20a0187e3b903c97d857cf0272d687c1b08b03438968ae8ffc50fe78b0d6/yarl-1.18.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e3b9fd71836999aad54084906f8663dffcd2a7fb5cdafd6c37713b2e72be1760", size = 337011 }, - { url = "https://files.pythonhosted.org/packages/c9/71/6244599a6e1cc4c9f73254a627234e0dad3883ece40cc33dce6265977461/yarl-1.18.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:757e81cae69244257d125ff31663249b3013b5dc0a8520d73694aed497fb195b", size = 338132 }, - { url = "https://files.pythonhosted.org/packages/af/f5/e0c3efaf74566c4b4a41cb76d27097df424052a064216beccae8d303c90f/yarl-1.18.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b1771de9944d875f1b98a745bc547e684b863abf8f8287da8466cf470ef52690", size = 331849 }, - { url = "https://files.pythonhosted.org/packages/8a/b8/3d16209c2014c2f98a8f658850a57b716efb97930aebf1ca0d9325933731/yarl-1.18.3-cp310-cp310-win32.whl", hash = "sha256:8874027a53e3aea659a6d62751800cf6e63314c160fd607489ba5c2edd753cf6", size = 84309 }, - { url = "https://files.pythonhosted.org/packages/fd/b7/2e9a5b18eb0fe24c3a0e8bae994e812ed9852ab4fd067c0107fadde0d5f0/yarl-1.18.3-cp310-cp310-win_amd64.whl", hash = "sha256:93b2e109287f93db79210f86deb6b9bbb81ac32fc97236b16f7433db7fc437d8", size = 90484 }, - { url = "https://files.pythonhosted.org/packages/40/93/282b5f4898d8e8efaf0790ba6d10e2245d2c9f30e199d1a85cae9356098c/yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069", size = 141555 }, - { url = "https://files.pythonhosted.org/packages/6d/9c/0a49af78df099c283ca3444560f10718fadb8a18dc8b3edf8c7bd9fd7d89/yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193", size = 94351 }, - { url = "https://files.pythonhosted.org/packages/5a/a1/205ab51e148fdcedad189ca8dd587794c6f119882437d04c33c01a75dece/yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889", size = 92286 }, - { url = "https://files.pythonhosted.org/packages/ed/fe/88b690b30f3f59275fb674f5f93ddd4a3ae796c2b62e5bb9ece8a4914b83/yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8", size = 340649 }, - { url = "https://files.pythonhosted.org/packages/07/eb/3b65499b568e01f36e847cebdc8d7ccb51fff716dbda1ae83c3cbb8ca1c9/yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca", size = 356623 }, - { url = "https://files.pythonhosted.org/packages/33/46/f559dc184280b745fc76ec6b1954de2c55595f0ec0a7614238b9ebf69618/yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8", size = 354007 }, - { url = "https://files.pythonhosted.org/packages/af/ba/1865d85212351ad160f19fb99808acf23aab9a0f8ff31c8c9f1b4d671fc9/yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae", size = 344145 }, - { url = "https://files.pythonhosted.org/packages/94/cb/5c3e975d77755d7b3d5193e92056b19d83752ea2da7ab394e22260a7b824/yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3", size = 336133 }, - { url = "https://files.pythonhosted.org/packages/19/89/b77d3fd249ab52a5c40859815765d35c91425b6bb82e7427ab2f78f5ff55/yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb", size = 347967 }, - { url = "https://files.pythonhosted.org/packages/35/bd/f6b7630ba2cc06c319c3235634c582a6ab014d52311e7d7c22f9518189b5/yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e", size = 346397 }, - { url = "https://files.pythonhosted.org/packages/18/1a/0b4e367d5a72d1f095318344848e93ea70da728118221f84f1bf6c1e39e7/yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59", size = 350206 }, - { url = "https://files.pythonhosted.org/packages/b5/cf/320fff4367341fb77809a2d8d7fe75b5d323a8e1b35710aafe41fdbf327b/yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d", size = 362089 }, - { url = "https://files.pythonhosted.org/packages/57/cf/aadba261d8b920253204085268bad5e8cdd86b50162fcb1b10c10834885a/yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e", size = 366267 }, - { url = "https://files.pythonhosted.org/packages/54/58/fb4cadd81acdee6dafe14abeb258f876e4dd410518099ae9a35c88d8097c/yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a", size = 359141 }, - { url = "https://files.pythonhosted.org/packages/9a/7a/4c571597589da4cd5c14ed2a0b17ac56ec9ee7ee615013f74653169e702d/yarl-1.18.3-cp311-cp311-win32.whl", hash = "sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1", size = 84402 }, - { url = "https://files.pythonhosted.org/packages/ae/7b/8600250b3d89b625f1121d897062f629883c2f45339623b69b1747ec65fa/yarl-1.18.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5", size = 91030 }, - { url = "https://files.pythonhosted.org/packages/33/85/bd2e2729752ff4c77338e0102914897512e92496375e079ce0150a6dc306/yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50", size = 142644 }, - { url = "https://files.pythonhosted.org/packages/ff/74/1178322cc0f10288d7eefa6e4a85d8d2e28187ccab13d5b844e8b5d7c88d/yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576", size = 94962 }, - { url = "https://files.pythonhosted.org/packages/be/75/79c6acc0261e2c2ae8a1c41cf12265e91628c8c58ae91f5ff59e29c0787f/yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640", size = 92795 }, - { url = "https://files.pythonhosted.org/packages/6b/32/927b2d67a412c31199e83fefdce6e645247b4fb164aa1ecb35a0f9eb2058/yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2", size = 332368 }, - { url = "https://files.pythonhosted.org/packages/19/e5/859fca07169d6eceeaa4fde1997c91d8abde4e9a7c018e371640c2da2b71/yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75", size = 342314 }, - { url = "https://files.pythonhosted.org/packages/08/75/76b63ccd91c9e03ab213ef27ae6add2e3400e77e5cdddf8ed2dbc36e3f21/yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512", size = 341987 }, - { url = "https://files.pythonhosted.org/packages/1a/e1/a097d5755d3ea8479a42856f51d97eeff7a3a7160593332d98f2709b3580/yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba", size = 336914 }, - { url = "https://files.pythonhosted.org/packages/0b/42/e1b4d0e396b7987feceebe565286c27bc085bf07d61a59508cdaf2d45e63/yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb", size = 325765 }, - { url = "https://files.pythonhosted.org/packages/7e/18/03a5834ccc9177f97ca1bbb245b93c13e58e8225276f01eedc4cc98ab820/yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272", size = 344444 }, - { url = "https://files.pythonhosted.org/packages/c8/03/a713633bdde0640b0472aa197b5b86e90fbc4c5bc05b727b714cd8a40e6d/yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6", size = 340760 }, - { url = "https://files.pythonhosted.org/packages/eb/99/f6567e3f3bbad8fd101886ea0276c68ecb86a2b58be0f64077396cd4b95e/yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e", size = 346484 }, - { url = "https://files.pythonhosted.org/packages/8e/a9/84717c896b2fc6cb15bd4eecd64e34a2f0a9fd6669e69170c73a8b46795a/yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb", size = 359864 }, - { url = "https://files.pythonhosted.org/packages/1e/2e/d0f5f1bef7ee93ed17e739ec8dbcb47794af891f7d165fa6014517b48169/yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393", size = 364537 }, - { url = "https://files.pythonhosted.org/packages/97/8a/568d07c5d4964da5b02621a517532adb8ec5ba181ad1687191fffeda0ab6/yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285", size = 357861 }, - { url = "https://files.pythonhosted.org/packages/7d/e3/924c3f64b6b3077889df9a1ece1ed8947e7b61b0a933f2ec93041990a677/yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2", size = 84097 }, - { url = "https://files.pythonhosted.org/packages/34/45/0e055320daaabfc169b21ff6174567b2c910c45617b0d79c68d7ab349b02/yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477", size = 90399 }, - { url = "https://files.pythonhosted.org/packages/30/c7/c790513d5328a8390be8f47be5d52e141f78b66c6c48f48d241ca6bd5265/yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb", size = 140789 }, - { url = "https://files.pythonhosted.org/packages/30/aa/a2f84e93554a578463e2edaaf2300faa61c8701f0898725842c704ba5444/yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa", size = 94144 }, - { url = "https://files.pythonhosted.org/packages/c6/fc/d68d8f83714b221a85ce7866832cba36d7c04a68fa6a960b908c2c84f325/yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782", size = 91974 }, - { url = "https://files.pythonhosted.org/packages/56/4e/d2563d8323a7e9a414b5b25341b3942af5902a2263d36d20fb17c40411e2/yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0", size = 333587 }, - { url = "https://files.pythonhosted.org/packages/25/c9/cfec0bc0cac8d054be223e9f2c7909d3e8442a856af9dbce7e3442a8ec8d/yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482", size = 344386 }, - { url = "https://files.pythonhosted.org/packages/ab/5d/4c532190113b25f1364d25f4c319322e86232d69175b91f27e3ebc2caf9a/yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186", size = 345421 }, - { url = "https://files.pythonhosted.org/packages/23/d1/6cdd1632da013aa6ba18cee4d750d953104a5e7aac44e249d9410a972bf5/yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58", size = 339384 }, - { url = "https://files.pythonhosted.org/packages/9a/c4/6b3c39bec352e441bd30f432cda6ba51681ab19bb8abe023f0d19777aad1/yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53", size = 326689 }, - { url = "https://files.pythonhosted.org/packages/23/30/07fb088f2eefdc0aa4fc1af4e3ca4eb1a3aadd1ce7d866d74c0f124e6a85/yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2", size = 345453 }, - { url = "https://files.pythonhosted.org/packages/63/09/d54befb48f9cd8eec43797f624ec37783a0266855f4930a91e3d5c7717f8/yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8", size = 341872 }, - { url = "https://files.pythonhosted.org/packages/91/26/fd0ef9bf29dd906a84b59f0cd1281e65b0c3e08c6aa94b57f7d11f593518/yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1", size = 347497 }, - { url = "https://files.pythonhosted.org/packages/d9/b5/14ac7a256d0511b2ac168d50d4b7d744aea1c1aa20c79f620d1059aab8b2/yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a", size = 359981 }, - { url = "https://files.pythonhosted.org/packages/ca/b3/d493221ad5cbd18bc07e642894030437e405e1413c4236dd5db6e46bcec9/yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10", size = 366229 }, - { url = "https://files.pythonhosted.org/packages/04/56/6a3e2a5d9152c56c346df9b8fb8edd2c8888b1e03f96324d457e5cf06d34/yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8", size = 360383 }, - { url = "https://files.pythonhosted.org/packages/fd/b7/4b3c7c7913a278d445cc6284e59b2e62fa25e72758f888b7a7a39eb8423f/yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d", size = 310152 }, - { url = "https://files.pythonhosted.org/packages/f5/d5/688db678e987c3e0fb17867970700b92603cadf36c56e5fb08f23e822a0c/yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c", size = 315723 }, - { url = "https://files.pythonhosted.org/packages/6a/3b/fec4b08f5e88f68e56ee698a59284a73704df2e0e0b5bdf6536c86e76c76/yarl-1.18.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:61e5e68cb65ac8f547f6b5ef933f510134a6bf31bb178be428994b0cb46c2a04", size = 142780 }, - { url = "https://files.pythonhosted.org/packages/ed/85/796b0d6a22d536ec8e14bdbb86519250bad980cec450b6e299b1c2a9079e/yarl-1.18.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe57328fbc1bfd0bd0514470ac692630f3901c0ee39052ae47acd1d90a436719", size = 94981 }, - { url = "https://files.pythonhosted.org/packages/ee/0e/a830fd2238f7a29050f6dd0de748b3d6f33a7dbb67dbbc081a970b2bbbeb/yarl-1.18.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a440a2a624683108a1b454705ecd7afc1c3438a08e890a1513d468671d90a04e", size = 92789 }, - { url = "https://files.pythonhosted.org/packages/0f/4f/438c9fd668954779e48f08c0688ee25e0673380a21bb1e8ccc56de5b55d7/yarl-1.18.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c7907c8548bcd6ab860e5f513e727c53b4a714f459b084f6580b49fa1b9cee", size = 317327 }, - { url = "https://files.pythonhosted.org/packages/bd/79/a78066f06179b4ed4581186c136c12fcfb928c475cbeb23743e71a991935/yarl-1.18.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4f6450109834af88cb4cc5ecddfc5380ebb9c228695afc11915a0bf82116789", size = 336999 }, - { url = "https://files.pythonhosted.org/packages/55/02/527963cf65f34a06aed1e766ff9a3b3e7d0eaa1c90736b2948a62e528e1d/yarl-1.18.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9ca04806f3be0ac6d558fffc2fdf8fcef767e0489d2684a21912cc4ed0cd1b8", size = 331693 }, - { url = "https://files.pythonhosted.org/packages/a2/2a/167447ae39252ba624b98b8c13c0ba35994d40d9110e8a724c83dbbb5822/yarl-1.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77a6e85b90a7641d2e07184df5557132a337f136250caafc9ccaa4a2a998ca2c", size = 321473 }, - { url = "https://files.pythonhosted.org/packages/55/03/07955fabb20082373be311c91fd78abe458bc7ff9069d34385e8bddad20e/yarl-1.18.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6333c5a377c8e2f5fae35e7b8f145c617b02c939d04110c76f29ee3676b5f9a5", size = 313571 }, - { url = "https://files.pythonhosted.org/packages/95/e2/67c8d3ec58a8cd8ddb1d63bd06eb7e7b91c9f148707a3eeb5a7ed87df0ef/yarl-1.18.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0b3c92fa08759dbf12b3a59579a4096ba9af8dd344d9a813fc7f5070d86bbab1", size = 325004 }, - { url = "https://files.pythonhosted.org/packages/06/43/51ceb3e427368fe6ccd9eccd162be227fd082523e02bad1fd3063daf68da/yarl-1.18.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ac515b860c36becb81bb84b667466885096b5fc85596948548b667da3bf9f24", size = 322677 }, - { url = "https://files.pythonhosted.org/packages/e4/0e/7ef286bfb23267739a703f7b967a858e2128c10bea898de8fa027e962521/yarl-1.18.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:045b8482ce9483ada4f3f23b3774f4e1bf4f23a2d5c912ed5170f68efb053318", size = 332806 }, - { url = "https://files.pythonhosted.org/packages/c8/94/2d1f060f4bfa47c8bd0bcb652bfe71fba881564bcac06ebb6d8ced9ac3bc/yarl-1.18.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:a4bb030cf46a434ec0225bddbebd4b89e6471814ca851abb8696170adb163985", size = 339919 }, - { url = "https://files.pythonhosted.org/packages/8e/8d/73b5f9a6ab69acddf1ca1d5e7bc92f50b69124512e6c26b36844531d7f23/yarl-1.18.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:54d6921f07555713b9300bee9c50fb46e57e2e639027089b1d795ecd9f7fa910", size = 340960 }, - { url = "https://files.pythonhosted.org/packages/41/13/ce6bc32be4476b60f4f8694831f49590884b2c975afcffc8d533bf2be7ec/yarl-1.18.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1d407181cfa6e70077df3377938c08012d18893f9f20e92f7d2f314a437c30b1", size = 336592 }, - { url = "https://files.pythonhosted.org/packages/81/d5/6e0460292d6299ac3919945f912b16b104f4e81ab20bf53e0872a1296daf/yarl-1.18.3-cp39-cp39-win32.whl", hash = "sha256:ac36703a585e0929b032fbaab0707b75dc12703766d0b53486eabd5139ebadd5", size = 84833 }, - { url = "https://files.pythonhosted.org/packages/b2/fc/a8aef69156ad5508165d8ae956736d55c3a68890610834bd985540966008/yarl-1.18.3-cp39-cp39-win_amd64.whl", hash = "sha256:ba87babd629f8af77f557b61e49e7c7cac36f22f871156b91e10a6e9d4f829e9", size = 90968 }, - { url = "https://files.pythonhosted.org/packages/f5/4b/a06e0ec3d155924f77835ed2d167ebd3b211a7b0853da1cf8d8414d784ef/yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b", size = 45109 }, +sdist = { url = "https://files.pythonhosted.org/packages/b7/9d/4b94a8e6d2b51b599516a5cb88e5bc99b4d8d4583e468057eaa29d5f0918/yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1", size = 181062, upload-time = "2024-12-01T20:35:23.292Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/98/e005bc608765a8a5569f58e650961314873c8469c333616eb40bff19ae97/yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34", size = 141458, upload-time = "2024-12-01T20:32:32.604Z" }, + { url = "https://files.pythonhosted.org/packages/df/5d/f8106b263b8ae8a866b46d9be869ac01f9b3fb7f2325f3ecb3df8003f796/yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7", size = 94365, upload-time = "2024-12-01T20:32:35.736Z" }, + { url = "https://files.pythonhosted.org/packages/56/3e/d8637ddb9ba69bf851f765a3ee288676f7cf64fb3be13760c18cbc9d10bd/yarl-1.18.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:602d98f2c2d929f8e697ed274fbadc09902c4025c5a9963bf4e9edfc3ab6f7ed", size = 92181, upload-time = "2024-12-01T20:32:37.944Z" }, + { url = "https://files.pythonhosted.org/packages/76/f9/d616a5c2daae281171de10fba41e1c0e2d8207166fc3547252f7d469b4e1/yarl-1.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c654d5207c78e0bd6d749f6dae1dcbbfde3403ad3a4b11f3c5544d9906969dde", size = 315349, upload-time = "2024-12-01T20:32:40.126Z" }, + { url = "https://files.pythonhosted.org/packages/bb/b4/3ea5e7b6f08f698b3769a06054783e434f6d59857181b5c4e145de83f59b/yarl-1.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5094d9206c64181d0f6e76ebd8fb2f8fe274950a63890ee9e0ebfd58bf9d787b", size = 330494, upload-time = "2024-12-01T20:32:41.833Z" }, + { url = "https://files.pythonhosted.org/packages/55/f1/e0fc810554877b1b67420568afff51b967baed5b53bcc983ab164eebf9c9/yarl-1.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35098b24e0327fc4ebdc8ffe336cee0a87a700c24ffed13161af80124b7dc8e5", size = 326927, upload-time = "2024-12-01T20:32:43.73Z" }, + { url = "https://files.pythonhosted.org/packages/a9/42/b1753949b327b36f210899f2dd0a0947c0c74e42a32de3f8eb5c7d93edca/yarl-1.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3236da9272872443f81fedc389bace88408f64f89f75d1bdb2256069a8730ccc", size = 319703, upload-time = "2024-12-01T20:32:46.131Z" }, + { url = "https://files.pythonhosted.org/packages/f0/6d/e87c62dc9635daefb064b56f5c97df55a2e9cc947a2b3afd4fd2f3b841c7/yarl-1.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2c08cc9b16f4f4bc522771d96734c7901e7ebef70c6c5c35dd0f10845270bcd", size = 310246, upload-time = "2024-12-01T20:32:48.577Z" }, + { url = "https://files.pythonhosted.org/packages/e3/ef/e2e8d1785cdcbd986f7622d7f0098205f3644546da7919c24b95790ec65a/yarl-1.18.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80316a8bd5109320d38eef8833ccf5f89608c9107d02d2a7f985f98ed6876990", size = 319730, upload-time = "2024-12-01T20:32:50.209Z" }, + { url = "https://files.pythonhosted.org/packages/fc/15/8723e22345bc160dfde68c4b3ae8b236e868f9963c74015f1bc8a614101c/yarl-1.18.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c1e1cc06da1491e6734f0ea1e6294ce00792193c463350626571c287c9a704db", size = 321681, upload-time = "2024-12-01T20:32:52.498Z" }, + { url = "https://files.pythonhosted.org/packages/86/09/bf764e974f1516efa0ae2801494a5951e959f1610dd41edbfc07e5e0f978/yarl-1.18.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fea09ca13323376a2fdfb353a5fa2e59f90cd18d7ca4eaa1fd31f0a8b4f91e62", size = 324812, upload-time = "2024-12-01T20:32:54.947Z" }, + { url = "https://files.pythonhosted.org/packages/f6/4c/20a0187e3b903c97d857cf0272d687c1b08b03438968ae8ffc50fe78b0d6/yarl-1.18.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e3b9fd71836999aad54084906f8663dffcd2a7fb5cdafd6c37713b2e72be1760", size = 337011, upload-time = "2024-12-01T20:32:57.692Z" }, + { url = "https://files.pythonhosted.org/packages/c9/71/6244599a6e1cc4c9f73254a627234e0dad3883ece40cc33dce6265977461/yarl-1.18.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:757e81cae69244257d125ff31663249b3013b5dc0a8520d73694aed497fb195b", size = 338132, upload-time = "2024-12-01T20:33:00.247Z" }, + { url = "https://files.pythonhosted.org/packages/af/f5/e0c3efaf74566c4b4a41cb76d27097df424052a064216beccae8d303c90f/yarl-1.18.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b1771de9944d875f1b98a745bc547e684b863abf8f8287da8466cf470ef52690", size = 331849, upload-time = "2024-12-01T20:33:02.492Z" }, + { url = "https://files.pythonhosted.org/packages/8a/b8/3d16209c2014c2f98a8f658850a57b716efb97930aebf1ca0d9325933731/yarl-1.18.3-cp310-cp310-win32.whl", hash = "sha256:8874027a53e3aea659a6d62751800cf6e63314c160fd607489ba5c2edd753cf6", size = 84309, upload-time = "2024-12-01T20:33:04.832Z" }, + { url = "https://files.pythonhosted.org/packages/fd/b7/2e9a5b18eb0fe24c3a0e8bae994e812ed9852ab4fd067c0107fadde0d5f0/yarl-1.18.3-cp310-cp310-win_amd64.whl", hash = "sha256:93b2e109287f93db79210f86deb6b9bbb81ac32fc97236b16f7433db7fc437d8", size = 90484, upload-time = "2024-12-01T20:33:06.615Z" }, + { url = "https://files.pythonhosted.org/packages/40/93/282b5f4898d8e8efaf0790ba6d10e2245d2c9f30e199d1a85cae9356098c/yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069", size = 141555, upload-time = "2024-12-01T20:33:08.819Z" }, + { url = "https://files.pythonhosted.org/packages/6d/9c/0a49af78df099c283ca3444560f10718fadb8a18dc8b3edf8c7bd9fd7d89/yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193", size = 94351, upload-time = "2024-12-01T20:33:10.609Z" }, + { url = "https://files.pythonhosted.org/packages/5a/a1/205ab51e148fdcedad189ca8dd587794c6f119882437d04c33c01a75dece/yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889", size = 92286, upload-time = "2024-12-01T20:33:12.322Z" }, + { url = "https://files.pythonhosted.org/packages/ed/fe/88b690b30f3f59275fb674f5f93ddd4a3ae796c2b62e5bb9ece8a4914b83/yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8", size = 340649, upload-time = "2024-12-01T20:33:13.842Z" }, + { url = "https://files.pythonhosted.org/packages/07/eb/3b65499b568e01f36e847cebdc8d7ccb51fff716dbda1ae83c3cbb8ca1c9/yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca", size = 356623, upload-time = "2024-12-01T20:33:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/33/46/f559dc184280b745fc76ec6b1954de2c55595f0ec0a7614238b9ebf69618/yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8", size = 354007, upload-time = "2024-12-01T20:33:17.518Z" }, + { url = "https://files.pythonhosted.org/packages/af/ba/1865d85212351ad160f19fb99808acf23aab9a0f8ff31c8c9f1b4d671fc9/yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae", size = 344145, upload-time = "2024-12-01T20:33:20.071Z" }, + { url = "https://files.pythonhosted.org/packages/94/cb/5c3e975d77755d7b3d5193e92056b19d83752ea2da7ab394e22260a7b824/yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3", size = 336133, upload-time = "2024-12-01T20:33:22.515Z" }, + { url = "https://files.pythonhosted.org/packages/19/89/b77d3fd249ab52a5c40859815765d35c91425b6bb82e7427ab2f78f5ff55/yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb", size = 347967, upload-time = "2024-12-01T20:33:24.139Z" }, + { url = "https://files.pythonhosted.org/packages/35/bd/f6b7630ba2cc06c319c3235634c582a6ab014d52311e7d7c22f9518189b5/yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e", size = 346397, upload-time = "2024-12-01T20:33:26.205Z" }, + { url = "https://files.pythonhosted.org/packages/18/1a/0b4e367d5a72d1f095318344848e93ea70da728118221f84f1bf6c1e39e7/yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59", size = 350206, upload-time = "2024-12-01T20:33:27.83Z" }, + { url = "https://files.pythonhosted.org/packages/b5/cf/320fff4367341fb77809a2d8d7fe75b5d323a8e1b35710aafe41fdbf327b/yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d", size = 362089, upload-time = "2024-12-01T20:33:29.565Z" }, + { url = "https://files.pythonhosted.org/packages/57/cf/aadba261d8b920253204085268bad5e8cdd86b50162fcb1b10c10834885a/yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e", size = 366267, upload-time = "2024-12-01T20:33:31.449Z" }, + { url = "https://files.pythonhosted.org/packages/54/58/fb4cadd81acdee6dafe14abeb258f876e4dd410518099ae9a35c88d8097c/yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a", size = 359141, upload-time = "2024-12-01T20:33:33.79Z" }, + { url = "https://files.pythonhosted.org/packages/9a/7a/4c571597589da4cd5c14ed2a0b17ac56ec9ee7ee615013f74653169e702d/yarl-1.18.3-cp311-cp311-win32.whl", hash = "sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1", size = 84402, upload-time = "2024-12-01T20:33:35.689Z" }, + { url = "https://files.pythonhosted.org/packages/ae/7b/8600250b3d89b625f1121d897062f629883c2f45339623b69b1747ec65fa/yarl-1.18.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5", size = 91030, upload-time = "2024-12-01T20:33:37.511Z" }, + { url = "https://files.pythonhosted.org/packages/33/85/bd2e2729752ff4c77338e0102914897512e92496375e079ce0150a6dc306/yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50", size = 142644, upload-time = "2024-12-01T20:33:39.204Z" }, + { url = "https://files.pythonhosted.org/packages/ff/74/1178322cc0f10288d7eefa6e4a85d8d2e28187ccab13d5b844e8b5d7c88d/yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576", size = 94962, upload-time = "2024-12-01T20:33:40.808Z" }, + { url = "https://files.pythonhosted.org/packages/be/75/79c6acc0261e2c2ae8a1c41cf12265e91628c8c58ae91f5ff59e29c0787f/yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640", size = 92795, upload-time = "2024-12-01T20:33:42.322Z" }, + { url = "https://files.pythonhosted.org/packages/6b/32/927b2d67a412c31199e83fefdce6e645247b4fb164aa1ecb35a0f9eb2058/yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2", size = 332368, upload-time = "2024-12-01T20:33:43.956Z" }, + { url = "https://files.pythonhosted.org/packages/19/e5/859fca07169d6eceeaa4fde1997c91d8abde4e9a7c018e371640c2da2b71/yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75", size = 342314, upload-time = "2024-12-01T20:33:46.046Z" }, + { url = "https://files.pythonhosted.org/packages/08/75/76b63ccd91c9e03ab213ef27ae6add2e3400e77e5cdddf8ed2dbc36e3f21/yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512", size = 341987, upload-time = "2024-12-01T20:33:48.352Z" }, + { url = "https://files.pythonhosted.org/packages/1a/e1/a097d5755d3ea8479a42856f51d97eeff7a3a7160593332d98f2709b3580/yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba", size = 336914, upload-time = "2024-12-01T20:33:50.875Z" }, + { url = "https://files.pythonhosted.org/packages/0b/42/e1b4d0e396b7987feceebe565286c27bc085bf07d61a59508cdaf2d45e63/yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb", size = 325765, upload-time = "2024-12-01T20:33:52.641Z" }, + { url = "https://files.pythonhosted.org/packages/7e/18/03a5834ccc9177f97ca1bbb245b93c13e58e8225276f01eedc4cc98ab820/yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272", size = 344444, upload-time = "2024-12-01T20:33:54.395Z" }, + { url = "https://files.pythonhosted.org/packages/c8/03/a713633bdde0640b0472aa197b5b86e90fbc4c5bc05b727b714cd8a40e6d/yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6", size = 340760, upload-time = "2024-12-01T20:33:56.286Z" }, + { url = "https://files.pythonhosted.org/packages/eb/99/f6567e3f3bbad8fd101886ea0276c68ecb86a2b58be0f64077396cd4b95e/yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e", size = 346484, upload-time = "2024-12-01T20:33:58.375Z" }, + { url = "https://files.pythonhosted.org/packages/8e/a9/84717c896b2fc6cb15bd4eecd64e34a2f0a9fd6669e69170c73a8b46795a/yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb", size = 359864, upload-time = "2024-12-01T20:34:00.22Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2e/d0f5f1bef7ee93ed17e739ec8dbcb47794af891f7d165fa6014517b48169/yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393", size = 364537, upload-time = "2024-12-01T20:34:03.54Z" }, + { url = "https://files.pythonhosted.org/packages/97/8a/568d07c5d4964da5b02621a517532adb8ec5ba181ad1687191fffeda0ab6/yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285", size = 357861, upload-time = "2024-12-01T20:34:05.73Z" }, + { url = "https://files.pythonhosted.org/packages/7d/e3/924c3f64b6b3077889df9a1ece1ed8947e7b61b0a933f2ec93041990a677/yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2", size = 84097, upload-time = "2024-12-01T20:34:07.664Z" }, + { url = "https://files.pythonhosted.org/packages/34/45/0e055320daaabfc169b21ff6174567b2c910c45617b0d79c68d7ab349b02/yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477", size = 90399, upload-time = "2024-12-01T20:34:09.61Z" }, + { url = "https://files.pythonhosted.org/packages/30/c7/c790513d5328a8390be8f47be5d52e141f78b66c6c48f48d241ca6bd5265/yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb", size = 140789, upload-time = "2024-12-01T20:34:11.414Z" }, + { url = "https://files.pythonhosted.org/packages/30/aa/a2f84e93554a578463e2edaaf2300faa61c8701f0898725842c704ba5444/yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa", size = 94144, upload-time = "2024-12-01T20:34:13.485Z" }, + { url = "https://files.pythonhosted.org/packages/c6/fc/d68d8f83714b221a85ce7866832cba36d7c04a68fa6a960b908c2c84f325/yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782", size = 91974, upload-time = "2024-12-01T20:34:15.234Z" }, + { url = "https://files.pythonhosted.org/packages/56/4e/d2563d8323a7e9a414b5b25341b3942af5902a2263d36d20fb17c40411e2/yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0", size = 333587, upload-time = "2024-12-01T20:34:17.358Z" }, + { url = "https://files.pythonhosted.org/packages/25/c9/cfec0bc0cac8d054be223e9f2c7909d3e8442a856af9dbce7e3442a8ec8d/yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482", size = 344386, upload-time = "2024-12-01T20:34:19.842Z" }, + { url = "https://files.pythonhosted.org/packages/ab/5d/4c532190113b25f1364d25f4c319322e86232d69175b91f27e3ebc2caf9a/yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186", size = 345421, upload-time = "2024-12-01T20:34:21.975Z" }, + { url = "https://files.pythonhosted.org/packages/23/d1/6cdd1632da013aa6ba18cee4d750d953104a5e7aac44e249d9410a972bf5/yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58", size = 339384, upload-time = "2024-12-01T20:34:24.717Z" }, + { url = "https://files.pythonhosted.org/packages/9a/c4/6b3c39bec352e441bd30f432cda6ba51681ab19bb8abe023f0d19777aad1/yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53", size = 326689, upload-time = "2024-12-01T20:34:26.886Z" }, + { url = "https://files.pythonhosted.org/packages/23/30/07fb088f2eefdc0aa4fc1af4e3ca4eb1a3aadd1ce7d866d74c0f124e6a85/yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2", size = 345453, upload-time = "2024-12-01T20:34:29.605Z" }, + { url = "https://files.pythonhosted.org/packages/63/09/d54befb48f9cd8eec43797f624ec37783a0266855f4930a91e3d5c7717f8/yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8", size = 341872, upload-time = "2024-12-01T20:34:31.454Z" }, + { url = "https://files.pythonhosted.org/packages/91/26/fd0ef9bf29dd906a84b59f0cd1281e65b0c3e08c6aa94b57f7d11f593518/yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1", size = 347497, upload-time = "2024-12-01T20:34:34.004Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b5/14ac7a256d0511b2ac168d50d4b7d744aea1c1aa20c79f620d1059aab8b2/yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a", size = 359981, upload-time = "2024-12-01T20:34:36.624Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b3/d493221ad5cbd18bc07e642894030437e405e1413c4236dd5db6e46bcec9/yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10", size = 366229, upload-time = "2024-12-01T20:34:38.657Z" }, + { url = "https://files.pythonhosted.org/packages/04/56/6a3e2a5d9152c56c346df9b8fb8edd2c8888b1e03f96324d457e5cf06d34/yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8", size = 360383, upload-time = "2024-12-01T20:34:40.501Z" }, + { url = "https://files.pythonhosted.org/packages/fd/b7/4b3c7c7913a278d445cc6284e59b2e62fa25e72758f888b7a7a39eb8423f/yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d", size = 310152, upload-time = "2024-12-01T20:34:42.814Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d5/688db678e987c3e0fb17867970700b92603cadf36c56e5fb08f23e822a0c/yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c", size = 315723, upload-time = "2024-12-01T20:34:44.699Z" }, + { url = "https://files.pythonhosted.org/packages/6a/3b/fec4b08f5e88f68e56ee698a59284a73704df2e0e0b5bdf6536c86e76c76/yarl-1.18.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:61e5e68cb65ac8f547f6b5ef933f510134a6bf31bb178be428994b0cb46c2a04", size = 142780, upload-time = "2024-12-01T20:34:47.312Z" }, + { url = "https://files.pythonhosted.org/packages/ed/85/796b0d6a22d536ec8e14bdbb86519250bad980cec450b6e299b1c2a9079e/yarl-1.18.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe57328fbc1bfd0bd0514470ac692630f3901c0ee39052ae47acd1d90a436719", size = 94981, upload-time = "2024-12-01T20:34:49.264Z" }, + { url = "https://files.pythonhosted.org/packages/ee/0e/a830fd2238f7a29050f6dd0de748b3d6f33a7dbb67dbbc081a970b2bbbeb/yarl-1.18.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a440a2a624683108a1b454705ecd7afc1c3438a08e890a1513d468671d90a04e", size = 92789, upload-time = "2024-12-01T20:34:51.009Z" }, + { url = "https://files.pythonhosted.org/packages/0f/4f/438c9fd668954779e48f08c0688ee25e0673380a21bb1e8ccc56de5b55d7/yarl-1.18.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c7907c8548bcd6ab860e5f513e727c53b4a714f459b084f6580b49fa1b9cee", size = 317327, upload-time = "2024-12-01T20:34:53.621Z" }, + { url = "https://files.pythonhosted.org/packages/bd/79/a78066f06179b4ed4581186c136c12fcfb928c475cbeb23743e71a991935/yarl-1.18.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4f6450109834af88cb4cc5ecddfc5380ebb9c228695afc11915a0bf82116789", size = 336999, upload-time = "2024-12-01T20:34:56.171Z" }, + { url = "https://files.pythonhosted.org/packages/55/02/527963cf65f34a06aed1e766ff9a3b3e7d0eaa1c90736b2948a62e528e1d/yarl-1.18.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9ca04806f3be0ac6d558fffc2fdf8fcef767e0489d2684a21912cc4ed0cd1b8", size = 331693, upload-time = "2024-12-01T20:34:58.258Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2a/167447ae39252ba624b98b8c13c0ba35994d40d9110e8a724c83dbbb5822/yarl-1.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77a6e85b90a7641d2e07184df5557132a337f136250caafc9ccaa4a2a998ca2c", size = 321473, upload-time = "2024-12-01T20:35:00.207Z" }, + { url = "https://files.pythonhosted.org/packages/55/03/07955fabb20082373be311c91fd78abe458bc7ff9069d34385e8bddad20e/yarl-1.18.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6333c5a377c8e2f5fae35e7b8f145c617b02c939d04110c76f29ee3676b5f9a5", size = 313571, upload-time = "2024-12-01T20:35:02.192Z" }, + { url = "https://files.pythonhosted.org/packages/95/e2/67c8d3ec58a8cd8ddb1d63bd06eb7e7b91c9f148707a3eeb5a7ed87df0ef/yarl-1.18.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0b3c92fa08759dbf12b3a59579a4096ba9af8dd344d9a813fc7f5070d86bbab1", size = 325004, upload-time = "2024-12-01T20:35:04.044Z" }, + { url = "https://files.pythonhosted.org/packages/06/43/51ceb3e427368fe6ccd9eccd162be227fd082523e02bad1fd3063daf68da/yarl-1.18.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ac515b860c36becb81bb84b667466885096b5fc85596948548b667da3bf9f24", size = 322677, upload-time = "2024-12-01T20:35:05.916Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0e/7ef286bfb23267739a703f7b967a858e2128c10bea898de8fa027e962521/yarl-1.18.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:045b8482ce9483ada4f3f23b3774f4e1bf4f23a2d5c912ed5170f68efb053318", size = 332806, upload-time = "2024-12-01T20:35:08.43Z" }, + { url = "https://files.pythonhosted.org/packages/c8/94/2d1f060f4bfa47c8bd0bcb652bfe71fba881564bcac06ebb6d8ced9ac3bc/yarl-1.18.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:a4bb030cf46a434ec0225bddbebd4b89e6471814ca851abb8696170adb163985", size = 339919, upload-time = "2024-12-01T20:35:10.548Z" }, + { url = "https://files.pythonhosted.org/packages/8e/8d/73b5f9a6ab69acddf1ca1d5e7bc92f50b69124512e6c26b36844531d7f23/yarl-1.18.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:54d6921f07555713b9300bee9c50fb46e57e2e639027089b1d795ecd9f7fa910", size = 340960, upload-time = "2024-12-01T20:35:12.761Z" }, + { url = "https://files.pythonhosted.org/packages/41/13/ce6bc32be4476b60f4f8694831f49590884b2c975afcffc8d533bf2be7ec/yarl-1.18.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1d407181cfa6e70077df3377938c08012d18893f9f20e92f7d2f314a437c30b1", size = 336592, upload-time = "2024-12-01T20:35:14.649Z" }, + { url = "https://files.pythonhosted.org/packages/81/d5/6e0460292d6299ac3919945f912b16b104f4e81ab20bf53e0872a1296daf/yarl-1.18.3-cp39-cp39-win32.whl", hash = "sha256:ac36703a585e0929b032fbaab0707b75dc12703766d0b53486eabd5139ebadd5", size = 84833, upload-time = "2024-12-01T20:35:17.17Z" }, + { url = "https://files.pythonhosted.org/packages/b2/fc/a8aef69156ad5508165d8ae956736d55c3a68890610834bd985540966008/yarl-1.18.3-cp39-cp39-win_amd64.whl", hash = "sha256:ba87babd629f8af77f557b61e49e7c7cac36f22f871156b91e10a6e9d4f829e9", size = 90968, upload-time = "2024-12-01T20:35:18.962Z" }, + { url = "https://files.pythonhosted.org/packages/f5/4b/a06e0ec3d155924f77835ed2d167ebd3b211a7b0853da1cf8d8414d784ef/yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b", size = 45109, upload-time = "2024-12-01T20:35:20.834Z" }, ] [[package]] name = "zipp" version = "3.21.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/50/bad581df71744867e9468ebd0bcd6505de3b275e06f202c2cb016e3ff56f/zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4", size = 24545 } +sdist = { url = "https://files.pythonhosted.org/packages/3f/50/bad581df71744867e9468ebd0bcd6505de3b275e06f202c2cb016e3ff56f/zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4", size = 24545, upload-time = "2024-11-10T15:05:20.202Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630 }, + { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630, upload-time = "2024-11-10T15:05:19.275Z" }, ] From 18050bdad7a6fc57198680d785fc880509195f5d Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Sun, 18 May 2025 19:31:15 +0200 Subject: [PATCH 056/106] Fix light/dark mode documentation toggle (#11871) --- mkdocs.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 9b4445ad028..b26a8ebeaed 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -8,25 +8,24 @@ theme: custom_dir: 'docs/theme' palette: - media: "(prefers-color-scheme)" - scheme: default primary: pink accent: pink toggle: - icon: material/lightbulb + icon: material/brightness-auto name: "Switch to light mode" - media: "(prefers-color-scheme: light)" scheme: default primary: pink accent: pink toggle: - icon: material/lightbulb-outline + icon: material/brightness-7 name: "Switch to dark mode" - media: "(prefers-color-scheme: dark)" scheme: slate primary: pink accent: pink toggle: - icon: material/lightbulb-auto-outline + icon: material/brightness-4 name: "Switch to system preference" features: - content.tabs.link From aadf00e2904767488cb98e2f5aa933fc274fe0e7 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Sun, 18 May 2025 19:31:25 +0200 Subject: [PATCH 057/106] Fix missing link in documentation (#11869) --- docs/concepts/types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/types.md b/docs/concepts/types.md index 85d51140816..c163c05f365 100644 --- a/docs/concepts/types.md +++ b/docs/concepts/types.md @@ -197,7 +197,7 @@ two reasons: * In most cases, [recursive type aliases](#named-recursive-types) won't work. By leveraging the new [`type` statement](https://typing.readthedocs.io/en/latest/spec/aliases.html#type-statement) -(introduced in [PEP 695]), you can define aliases as follows: +(introduced in [PEP 695](https://peps.python.org/pep-0695/)), you can define aliases as follows: === "Python 3.9 and above" From 53f460c9b0b36755f8044efe744551f29cb71b1c Mon Sep 17 00:00:00 2001 From: Stanislav Zmiev Date: Mon, 19 May 2025 14:36:00 +0400 Subject: [PATCH 058/106] Add cadwyn to the third-party test suite (#11861) Co-authored-by: Victorien <65306057+Viicos@users.noreply.github.com> --- .github/workflows/third-party.yml | 45 ++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/.github/workflows/third-party.yml b/.github/workflows/third-party.yml index d39121ae091..42c4220ed7c 100644 --- a/.github/workflows/third-party.yml +++ b/.github/workflows/third-party.yml @@ -597,6 +597,47 @@ jobs: - name: Run Dify unit tests run: uv run --project api bash dev/pytest/pytest_unit_tests.sh + test-cadwyn: + name: Test Cadwyn (main branch) on Python ${{ matrix.python-version }} + # If 'schedule' was the trigger, don't run it on contributors' forks + if: | + github.event_name == 'workflow_dispatch' || + (github.event_name == 'schedule' && github.repository == 'pydantic/pydantic') || + (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'third-party-tests')) + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + steps: + - name: Checkout Cadwyn + uses: actions/checkout@v4 + with: + repository: zmievsa/cadwyn + + - name: Checkout Pydantic + uses: actions/checkout@v4 + with: + path: pydantic-latest + + - uses: astral-sh/setup-uv@v6 + with: + python-version: ${{ matrix.python-version }} + activate-environment: true + + - name: Install Cadwyn dependencies + run: | + uv sync --dev --all-extras + uv pip install -e ./pydantic-latest + + - name: List installed dependencies + run: uv pip list + + - name: Run Cadwyn tests + run: uv run --no-project pytest tests docs_src + + create-issue-on-failure: name: Create an issue if tests failed runs-on: ubuntu-latest @@ -612,6 +653,7 @@ jobs: - test-semantic-kernel - test-langchain - test-dify + - test-cadwyn # Issue report disabled for now due to flakiness: if: | always() && @@ -629,7 +671,8 @@ jobs: needs.test-semantic-kernel.result == 'failure' || needs.test-bentoml.result == 'failure' || needs.test-langchain.result == 'failure' || - needs.test-dify.result == 'failure' + needs.test-dify.result == 'failure' || + needs.test-cadwyn.result == 'failure' ) permissions: issues: write From f165eacd6e5e142f6c1fa537c7efbcc429634f25 Mon Sep 17 00:00:00 2001 From: A_A <21040751+Otto-AA@users.noreply.github.com> Date: Tue, 20 May 2025 14:52:56 +0200 Subject: [PATCH 059/106] Update documentation about `@dataclass_transform` support (#11860) Co-authored-by: Victorien <65306057+Viicos@users.noreply.github.com> --- docs/integrations/visual_studio_code.md | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/docs/integrations/visual_studio_code.md b/docs/integrations/visual_studio_code.md index 2bf7e69494c..dc3ce79c565 100644 --- a/docs/integrations/visual_studio_code.md +++ b/docs/integrations/visual_studio_code.md @@ -283,16 +283,7 @@ This is a limitation of dataclass transforms and cannot be fixed in pydantic. These details are only useful for other library authors, etc. -This additional editor support works by implementing the proposed draft standard for [Dataclass Transform (PEP 681)](https://peps.python.org/pep-0681/). +This additional editor support works by making use of the [`@dataclass_transform` decorator](https://typing.python.org/en/latest/spec/dataclasses.html#the-dataclass-transform-decorator) +(introduced by [PEP 681](https://peps.python.org/pep-0681/)). -The proposed draft standard is written by Eric Traut, from the Microsoft team, the same author of the open source package Pyright (used by Pylance to provide Python support in VS Code). - -The intention of the standard is to provide a way for libraries like Pydantic and others to tell editors and tools that they (the editors) should treat these libraries (e.g. Pydantic) as if they were `dataclasses`, providing autocompletion, type checks, etc. - -The draft standard also includes an [Alternate Form](https://github.com/microsoft/pyright/blob/master/specs/dataclass_transforms.md#alternate-form) for early adopters, like Pydantic, to add support for it right away, even before the new draft standard is finished and approved. - -This new draft standard, with the Alternate Form, is already supported by Pyright, so it can be used via Pylance in VS Code. - -As it is being proposed as an official standard for Python, other editors can also easily add support for it. - -And authors of other libraries similar to Pydantic can also easily adopt the standard right away (using the "Alternate Form") and get the benefits of these additional editor features. +The standard provides a way for libraries like Pydantic and others to tell editors and tools that they (the editors) should treat these libraries (e.g. Pydantic) as if they were [dataclasses][dataclasses], providing autocompletion, type checks, etc. From 944674a5c0e89f34a91f0bbefd524c89a4196403 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 20 May 2025 14:59:59 +0200 Subject: [PATCH 060/106] Remove `typing_extensions` version check in tests (#11830) --- docs/concepts/fields.md | 63 ++++++++++++++++++++------------- docs/concepts/models.md | 2 ++ mkdocs.yml | 1 + tests/test_deprecated_fields.py | 10 ------ tests/test_json_schema.py | 14 -------- 5 files changed, 42 insertions(+), 48 deletions(-) diff --git a/docs/concepts/fields.md b/docs/concepts/fields.md index c483b2a9692..936e35eea0b 100644 --- a/docs/concepts/fields.md +++ b/docs/concepts/fields.md @@ -804,16 +804,15 @@ See the [Serialization] section for more details. The `deprecated` parameter can be used to mark a field as being deprecated. Doing so will result in: * a runtime deprecation warning emitted when accessing the field. -* `"deprecated": true` being set in the generated JSON schema. +* The [deprecated](https://json-schema.org/draft/2020-12/json-schema-validation#section-9.3) keyword + being set in the generated JSON schema. -You can set the `deprecated` parameter as one of: - -* A string, which will be used as the deprecation message. -* An instance of the `warnings.deprecated` decorator (or the `typing_extensions` backport). -* A boolean, which will be used to mark the field as deprecated with a default `'deprecated'` deprecation message. +This parameter accepts different types, described below. ### `deprecated` as a string +The value will be used as the deprecation message. + ```python from typing import Annotated @@ -828,30 +827,50 @@ print(Model.model_json_schema()['properties']['deprecated_field']) #> {'deprecated': True, 'title': 'Deprecated Field', 'type': 'integer'} ``` -### `deprecated` via the `warnings.deprecated` decorator +### `deprecated` via the `@warnings.deprecated` decorator -!!! note - You can only use the `deprecated` decorator in this way if you have - `typing_extensions` >= 4.9.0 installed. +The [`@warnings.deprecated`][warnings.deprecated] decorator (or the +[`typing_extensions` backport][typing_extensions.deprecated] on Python +3.12 and lower) can be used as an instance. -```python {test="skip"} -import importlib.metadata -from typing import Annotated, deprecated + -from packaging.version import Version +=== "Python 3.9 and above" -from pydantic import BaseModel, Field + ```python + from typing import Annotated + + from typing_extensions import deprecated + + from pydantic import BaseModel, Field -if Version(importlib.metadata.version('typing_extensions')) >= Version('4.9'): class Model(BaseModel): deprecated_field: Annotated[int, deprecated('This is deprecated')] # Or explicitly using `Field`: - alt_form: Annotated[ - int, Field(deprecated=deprecated('This is deprecated')) - ] -``` + alt_form: Annotated[int, Field(deprecated=deprecated('This is deprecated'))] + ``` + +=== "Python 3.13 and above" + + ```python {requires="3.13"} + from typing import Annotated + from warnings import deprecated + + from pydantic import BaseModel, Field + + + class Model(BaseModel): + deprecated_field: Annotated[int, deprecated('This is deprecated')] + + # Or explicitly using `Field`: + alt_form: Annotated[int, Field(deprecated=deprecated('This is deprecated'))] + ``` + +!!! note "Support for `category` and `stacklevel`" + The current implementation of this feature does not take into account the `category` and `stacklevel` + arguments to the `deprecated` decorator. This might land in a future version of Pydantic. ### `deprecated` as a boolean @@ -869,10 +888,6 @@ print(Model.model_json_schema()['properties']['deprecated_field']) #> {'deprecated': True, 'title': 'Deprecated Field', 'type': 'integer'} ``` -!!! note "Support for `category` and `stacklevel`" - The current implementation of this feature does not take into account the `category` and `stacklevel` - arguments to the `deprecated` decorator. This might land in a future version of Pydantic. - !!! warning "Accessing a deprecated field in validators" When accessing a deprecated field inside a validator, the deprecation warning will be emitted. You can use [`catch_warnings`][warnings.catch_warnings] to explicitly ignore it: diff --git a/docs/concepts/models.md b/docs/concepts/models.md index 49021140e80..7de694afedf 100644 --- a/docs/concepts/models.md +++ b/docs/concepts/models.md @@ -705,6 +705,8 @@ for more details). Here is an example using a generic Pydantic model to create an easily-reused HTTP response payload wrapper: + + === "Python 3.9 and above" ```python {upgrade="skip"} diff --git a/mkdocs.yml b/mkdocs.yml index b26a8ebeaed..588de0c61a3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -256,6 +256,7 @@ plugins: import: - url: https://docs.python.org/3/objects.inv domains: [py, std] + - url: https://typing-extensions.readthedocs.io/en/latest/objects.inv - redirects: redirect_maps: 'usage/mypy.md': 'integrations/mypy.md' diff --git a/tests/test_deprecated_fields.py b/tests/test_deprecated_fields.py index bfcf4049357..ec26fe2625f 100644 --- a/tests/test_deprecated_fields.py +++ b/tests/test_deprecated_fields.py @@ -1,8 +1,6 @@ -import importlib.metadata from typing import Annotated import pytest -from packaging.version import Version from typing_extensions import Self, deprecated from pydantic import BaseModel, Field, computed_field, field_validator, model_validator @@ -35,10 +33,6 @@ class Model(BaseModel): assert b == 1 -@pytest.mark.skipif( - Version(importlib.metadata.version('typing_extensions')) < Version('4.9'), - reason='`deprecated` type annotation requires typing_extensions>=4.9', -) def test_deprecated_fields_deprecated_class(): class Model(BaseModel): a: Annotated[int, deprecated('')] @@ -164,10 +158,6 @@ def p5(self) -> int: assert p3 == 1 -@pytest.mark.skipif( - Version(importlib.metadata.version('typing_extensions')) < Version('4.9'), - reason='`deprecated` type annotation requires typing_extensions>=4.9', -) def test_computed_field_deprecated_deprecated_class(): class Model(BaseModel): @computed_field(deprecated=deprecated('This is deprecated')) diff --git a/tests/test_json_schema.py b/tests/test_json_schema.py index aef227260ac..452b0d4912a 100644 --- a/tests/test_json_schema.py +++ b/tests/test_json_schema.py @@ -1,5 +1,4 @@ import dataclasses -import importlib.metadata import json import math import re @@ -30,7 +29,6 @@ import pytest from dirty_equals import HasRepr -from packaging.version import Version from pydantic_core import CoreSchema, SchemaValidator, core_schema, to_jsonable_python from pydantic_core.core_schema import ValidatorFunctionWrapHandler from typing_extensions import TypeAliasType, TypedDict, deprecated @@ -6213,20 +6211,12 @@ class MyTypedDict(TypedDict): ] -@pytest.mark.skipif( - Version(importlib.metadata.version('typing_extensions')) < Version('4.9'), - reason='`deprecated` type annotation requires typing_extensions>=4.9', -) @pytest.mark.parametrize('cls', _generate_deprecated_classes()) def test_deprecated_classes_json_schema(cls): assert hasattr(cls, '__deprecated__') assert TypeAdapter(cls).json_schema()['deprecated'] -@pytest.mark.skipif( - Version(importlib.metadata.version('typing_extensions')) < Version('4.9'), - reason='`deprecated` type annotation requires typing_extensions>=4.9', -) @pytest.mark.parametrize('cls', _generate_deprecated_classes()) def test_deprecated_subclasses_json_schema(cls): class Model(BaseModel): @@ -6241,10 +6231,6 @@ class Model(BaseModel): } -@pytest.mark.skipif( - Version(importlib.metadata.version('typing_extensions')) < Version('4.9'), - reason='`deprecated` type annotation requires typing_extensions>=4.9', -) @pytest.mark.parametrize('cls', _generate_deprecated_classes()) def test_deprecated_class_usage_warns(cls): if issubclass(cls, dict): From e92ad791031e60b791d9c724be688f7adc3b336a Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 21 May 2025 10:06:36 +0200 Subject: [PATCH 061/106] Check if `FieldInfo` is complete after applying type variable map (#11855) --- pydantic/_internal/_fields.py | 3 +++ pydantic/fields.py | 8 ++++++-- tests/test_forward_ref.py | 25 ++++++++++++++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/pydantic/_internal/_fields.py b/pydantic/_internal/_fields.py index 072e395604a..f81968c4489 100644 --- a/pydantic/_internal/_fields.py +++ b/pydantic/_internal/_fields.py @@ -411,6 +411,9 @@ def rebuild_model_fields( This function should be called whenever a model with incomplete fields is encountered. + Raises: + NameError: If one of the annotations failed to evaluate. + Note: This function *doesn't* mutate the model fields in place, as it can be called during schema generation, where you don't want to mutate other model's fields. diff --git a/pydantic/fields.py b/pydantic/fields.py index 7de98ba0f72..cdcd5d56e00 100644 --- a/pydantic/fields.py +++ b/pydantic/fields.py @@ -693,8 +693,12 @@ def apply_typevars_map( pydantic._internal._generics.replace_types is used for replacing the typevars with their concrete types. """ - annotation, _ = _typing_extra.try_eval_type(self.annotation, globalns, localns) - self.annotation = _generics.replace_types(annotation, typevars_map) + annotation = _generics.replace_types(self.annotation, typevars_map) + annotation, evaluated = _typing_extra.try_eval_type(annotation, globalns, localns) + self.annotation = annotation + if not evaluated: + self._complete = False + self._original_annotation = self.annotation def __repr_args__(self) -> ReprArgs: yield 'annotation', _repr.PlainRepr(_repr.display_as_type(self.annotation)) diff --git a/tests/test_forward_ref.py b/tests/test_forward_ref.py index 1187d642b77..10736083f4f 100644 --- a/tests/test_forward_ref.py +++ b/tests/test_forward_ref.py @@ -3,7 +3,7 @@ import re import sys import typing -from typing import Any, Optional +from typing import Any, Generic, Optional, TypeVar import pytest @@ -1232,6 +1232,29 @@ class SubChild(Child): ) +@pytest.mark.skipif( + sys.version_info < (3, 11), + reason=( + 'Forward refs inside PEP 585 generics are not evaluated (see https://github.com/python/cpython/pull/30900).' + ), +) +def test_forward_ref_in_class_parameter() -> None: + """https://github.com/pydantic/pydantic/issues/11854""" + T = TypeVar('T') + + class Model(BaseModel, Generic[T]): + f: T + + M = Model[list['Undefined']] + + assert not M.__pydantic_fields_complete__ + + M.model_rebuild(_types_namespace={'Undefined': int}) + + assert M.__pydantic_fields_complete__ + assert M.model_fields['f'].annotation == list[int] + + def test_uses_the_local_namespace_when_generating_schema(): def func(): A = int From 0a21ab14ecc200923102e3f831cb26b0282899e9 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 21 May 2025 10:11:12 +0200 Subject: [PATCH 062/106] Do not delete mock validator/serializer in `model_rebuild()` (#11890) --- pydantic/main.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pydantic/main.py b/pydantic/main.py index 80939082b15..138acf42a0a 100644 --- a/pydantic/main.py +++ b/pydantic/main.py @@ -620,9 +620,11 @@ def model_rebuild( cls.__pydantic_complete__ = False for attr in ('__pydantic_core_schema__', '__pydantic_validator__', '__pydantic_serializer__'): - if attr in cls.__dict__: + if attr in cls.__dict__ and not isinstance(getattr(cls, attr), _mock_val_ser.MockValSer): # Deleting the validator/serializer is necessary as otherwise they can get reused in - # pydantic-core. Same applies for the core schema that can be reused in schema generation. + # pydantic-core. We do so only if they aren't mock instances, otherwise — as `model_rebuild()` + # isn't thread-safe — concurrent model instantiations can lead to the parent validator being used. + # Same applies for the core schema that can be reused in schema generation. delattr(cls, attr) if _types_namespace is not None: From 1f967d7ae1003c9c8cd8baefaff41535e4f81b70 Mon Sep 17 00:00:00 2001 From: Bartosz Karwacki <44468031+karta9821@users.noreply.github.com> Date: Thu, 22 May 2025 17:45:13 +0200 Subject: [PATCH 063/106] Add YAML, XML, INI file format and RabbitMQ & ARQ queue documentation examples (#11838) --- docs/examples/files.md | 112 +++++++++++++++++++++++++-- docs/examples/queues.md | 165 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 271 insertions(+), 6 deletions(-) diff --git a/docs/examples/files.md b/docs/examples/files.md index 9a223d1c018..7f91f8d5669 100644 --- a/docs/examples/files.md +++ b/docs/examples/files.md @@ -35,8 +35,8 @@ class Person(BaseModel): json_string = pathlib.Path('person.json').read_text() person = Person.model_validate_json(json_string) -print(repr(person)) -#> Person(name='John Doe', age=30, email='john@example.com') +print(person) +#> name='John Doe' age=30 email='john@example.com' ``` If the data in the file is not valid, `pydantic` will raise a [`ValidationError`][pydantic_core.ValidationError]. @@ -229,8 +229,110 @@ with open('person.toml', 'rb') as f: data = tomllib.load(f) person = Person.model_validate(data) -print(repr(person)) -#> Person(name='John Doe', age=30, email='john@example.com') +print(person) +#> name='John Doe' age=30 email='john@example.com' ``` - +## YAML files + +YAML (YAML Ain't Markup Language) is a human-readable data serialization format that is often used for configuration files. + +Consider the following YAML file: + +```yaml +name: John Doe +age: 30 +email: john@example.com +``` + +Here's how we validate that data: + +```python {test="skip"} +import yaml + +from pydantic import BaseModel, EmailStr, PositiveInt + + +class Person(BaseModel): + name: str + age: PositiveInt + email: EmailStr + + +with open('person.yaml') as f: + data = yaml.safe_load(f) + +person = Person.model_validate(data) +print(person) +#> name='John Doe' age=30 email='john@example.com' +``` + +## XML files + +XML (eXtensible Markup Language) is a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. + +Consider the following XML file: + +```xml + + + John Doe + 30 + john@example.com + +``` + +Here's how we validate that data: + +```python {test="skip"} +import xml.etree.ElementTree as ET + +from pydantic import BaseModel, EmailStr, PositiveInt + + +class Person(BaseModel): + name: str + age: PositiveInt + email: EmailStr + + +tree = ET.parse('person.xml').getroot() +data = {child.tag: child.text for child in tree} +person = Person.model_validate(data) +print(person) +#> name='John Doe' age=30 email='john@example.com' +``` + +## INI files + +INI files are a simple configuration file format that uses sections and key-value pairs. They are commonly used in Windows applications and older software. + +Consider the following INI file: + +```ini +[PERSON] +name = John Doe +age = 30 +email = john@example.com +``` + +Here's how we validate that data: + +```python {test="skip"} +import configparser + +from pydantic import BaseModel, EmailStr, PositiveInt + + +class Person(BaseModel): + name: str + age: PositiveInt + email: EmailStr + + +config = configparser.ConfigParser() +config.read('person.ini') +person = Person.model_validate(config['PERSON']) +print(person) +#> name='John Doe' age=30 email='john@example.com' +``` diff --git a/docs/examples/queues.md b/docs/examples/queues.md index 37a78b349b7..07761f2f980 100644 --- a/docs/examples/queues.md +++ b/docs/examples/queues.md @@ -65,4 +65,167 @@ pop_from_queue() #> Queue is empty ``` - +## RabbitMQ + +RabbitMQ is a popular message broker that implements the AMQP protocol. + +In order to run this example locally, you'll first need to [install RabbitMQ](https://www.rabbitmq.com/download.html) and start your server. + +Here's a simple example of how you can use Pydantic to: + +1. Serialize data to push to the queue +2. Deserialize and validate data when it's popped from the queue + +First, let's create a sender script. + +```python {test="skip"} +import pika + +from pydantic import BaseModel, EmailStr + + +class User(BaseModel): + id: int + name: str + email: EmailStr + + +connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) +channel = connection.channel() +QUEUE_NAME = 'user_queue' +channel.queue_declare(queue=QUEUE_NAME) + + +def push_to_queue(user_data: User) -> None: + serialized_data = user_data.model_dump_json() + channel.basic_publish( + exchange='', + routing_key=QUEUE_NAME, + body=serialized_data, + ) + print(f'Added to queue: {serialized_data}') + + +user1 = User(id=1, name='John Doe', email='john@example.com') +user2 = User(id=2, name='Jane Doe', email='jane@example.com') + +push_to_queue(user1) +#> Added to queue: {"id":1,"name":"John Doe","email":"john@example.com"} + +push_to_queue(user2) +#> Added to queue: {"id":2,"name":"Jane Doe","email":"jane@example.com"} + +connection.close() +``` + +And here's the receiver script. + +```python {test="skip"} +import pika + +from pydantic import BaseModel, EmailStr + + +class User(BaseModel): + id: int + name: str + email: EmailStr + + +def main(): + connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) + channel = connection.channel() + QUEUE_NAME = 'user_queue' + channel.queue_declare(queue=QUEUE_NAME) + + def process_message( + ch: pika.channel.Channel, + method: pika.spec.Basic.Deliver, + properties: pika.spec.BasicProperties, + body: bytes, + ): + user = User.model_validate_json(body) + print(f'Validated user: {repr(user)}') + ch.basic_ack(delivery_tag=method.delivery_tag) + + channel.basic_consume(queue=QUEUE_NAME, on_message_callback=process_message) + channel.start_consuming() + + +if __name__ == '__main__': + try: + main() + except KeyboardInterrupt: + pass +``` + +To test this example: + +1. Run the receiver script in one terminal to start the consumer. +2. Run the sender script in another terminal to send messages. + +## ARQ + +ARQ is a fast Redis-based job queue for Python. +It's built on top of Redis and provides a simple way to handle background tasks. + +In order to run this example locally, you’ll need to [Install Redis](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/) and start your server. + +Here's a simple example of how you can use Pydantic with ARQ to: + +1. Define a model for your job data +2. Serialize data when enqueueing jobs +3. Validate and deserialize data when processing jobs + +```python {test="skip"} +import asyncio +from typing import Any + +from arq import create_pool +from arq.connections import RedisSettings + +from pydantic import BaseModel, EmailStr + + +class User(BaseModel): + id: int + name: str + email: EmailStr + + +REDIS_SETTINGS = RedisSettings() + + +async def process_user(ctx: dict[str, Any], user_data: dict[str, Any]) -> None: + user = User.model_validate(user_data) + print(f'Processing user: {repr(user)}') + + +async def enqueue_jobs(redis): + user1 = User(id=1, name='John Doe', email='john@example.com') + user2 = User(id=2, name='Jane Doe', email='jane@example.com') + + await redis.enqueue_job('process_user', user1.model_dump()) + print(f'Enqueued user: {repr(user1)}') + + await redis.enqueue_job('process_user', user2.model_dump()) + print(f'Enqueued user: {repr(user2)}') + + +class WorkerSettings: + functions = [process_user] + redis_settings = REDIS_SETTINGS + + +async def main(): + redis = await create_pool(REDIS_SETTINGS) + await enqueue_jobs(redis) + + +if __name__ == '__main__': + asyncio.run(main()) +``` + +This script is complete. +It should run "as is" both to enqueue jobs and to process them. + From 2c38bf402c2a7ebadfcf2d1ccf8718513f9dc969 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Fri, 23 May 2025 10:59:12 +0200 Subject: [PATCH 064/106] Prepare release v2.11.5 (#11904) --- CITATION.cff | 4 ++-- HISTORY.md | 12 ++++++++++++ pydantic/version.py | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 3c2d2e4e71c..3b099f3c0c9 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -44,5 +44,5 @@ keywords: - hints - typing license: MIT -version: v2.11.4 -date-released: 2025-04-29 +version: v2.11.5 +date-released: 2025-05-22 diff --git a/HISTORY.md b/HISTORY.md index 20e99c412c7..28fe085eff1 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,18 @@ +## v2.11.5 (2025-05-22) + +[GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.5) + +### What's Changed + +#### Fixes + +* Check if `FieldInfo` is complete after applying type variable map by @Viicos in [#11855](https://github.com/pydantic/pydantic/pull/11855) +* Do not delete mock validator/serializer in `model_rebuild()` by @Viicos in [#11890](https://github.com/pydantic/pydantic/pull/11890) +* Do not duplicate metadata on model rebuild by @Viicos in [#11902](https://github.com/pydantic/pydantic/pull/11902) + ## v2.11.4 (2025-04-29) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.4) diff --git a/pydantic/version.py b/pydantic/version.py index 847284cee28..3f783d75358 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -6,7 +6,7 @@ __all__ = 'VERSION', 'version_info' -VERSION = '2.11.4' +VERSION = '2.11.5' """The version of Pydantic.""" From c597a9db285b340f372869a03a8204afd9e211c8 Mon Sep 17 00:00:00 2001 From: Kinuax Date: Sun, 1 Jun 2025 10:43:19 +0200 Subject: [PATCH 065/106] Cleanup `core_schema` import in `functional_validators.py` (#11928) --- pydantic/functional_validators.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/pydantic/functional_validators.py b/pydantic/functional_validators.py index 67e65ebd90c..c3dad674216 100644 --- a/pydantic/functional_validators.py +++ b/pydantic/functional_validators.py @@ -9,7 +9,6 @@ from typing import TYPE_CHECKING, Annotated, Any, Callable, Literal, TypeVar, Union, cast, overload from pydantic_core import PydanticUndefined, core_schema -from pydantic_core import core_schema as _core_schema from typing_extensions import Self, TypeAlias from ._internal import _decorators, _generics, _internal_dataclass @@ -329,33 +328,33 @@ class _OnlyValueValidatorClsMethod(Protocol): def __call__(self, cls: Any, value: Any, /) -> Any: ... class _V2ValidatorClsMethod(Protocol): - def __call__(self, cls: Any, value: Any, info: _core_schema.ValidationInfo, /) -> Any: ... + def __call__(self, cls: Any, value: Any, info: core_schema.ValidationInfo, /) -> Any: ... class _OnlyValueWrapValidatorClsMethod(Protocol): - def __call__(self, cls: Any, value: Any, handler: _core_schema.ValidatorFunctionWrapHandler, /) -> Any: ... + def __call__(self, cls: Any, value: Any, handler: core_schema.ValidatorFunctionWrapHandler, /) -> Any: ... class _V2WrapValidatorClsMethod(Protocol): def __call__( self, cls: Any, value: Any, - handler: _core_schema.ValidatorFunctionWrapHandler, - info: _core_schema.ValidationInfo, + handler: core_schema.ValidatorFunctionWrapHandler, + info: core_schema.ValidationInfo, /, ) -> Any: ... _V2Validator = Union[ _V2ValidatorClsMethod, - _core_schema.WithInfoValidatorFunction, + core_schema.WithInfoValidatorFunction, _OnlyValueValidatorClsMethod, - _core_schema.NoInfoValidatorFunction, + core_schema.NoInfoValidatorFunction, ] _V2WrapValidator = Union[ _V2WrapValidatorClsMethod, - _core_schema.WithInfoWrapValidatorFunction, + core_schema.WithInfoWrapValidatorFunction, _OnlyValueWrapValidatorClsMethod, - _core_schema.NoInfoWrapValidatorFunction, + core_schema.NoInfoWrapValidatorFunction, ] _PartialClsOrStaticMethod: TypeAlias = Union[classmethod[Any, Any, Any], staticmethod[Any, Any], partialmethod[Any]] @@ -516,7 +515,7 @@ def dec( _ModelTypeCo = TypeVar('_ModelTypeCo', covariant=True) -class ModelWrapValidatorHandler(_core_schema.ValidatorFunctionWrapHandler, Protocol[_ModelTypeCo]): +class ModelWrapValidatorHandler(core_schema.ValidatorFunctionWrapHandler, Protocol[_ModelTypeCo]): """`@model_validator` decorated function handler argument type. This is used when `mode='wrap'`.""" def __call__( # noqa: D102 @@ -556,7 +555,7 @@ def __call__( # noqa: D102 # thus validators _must_ handle all cases value: Any, handler: ModelWrapValidatorHandler[_ModelType], - info: _core_schema.ValidationInfo, + info: core_schema.ValidationInfo, /, ) -> _ModelType: ... @@ -601,7 +600,7 @@ def __call__( # noqa: D102 # or anything else that gets passed to validate_python # thus validators _must_ handle all cases value: Any, - info: _core_schema.ValidationInfo, + info: core_schema.ValidationInfo, /, ) -> Any: ... @@ -616,7 +615,7 @@ def __call__( # noqa: D102 # or anything else that gets passed to validate_python # thus validators _must_ handle all cases value: Any, - info: _core_schema.ValidationInfo, + info: core_schema.ValidationInfo, /, ) -> Any: ... @@ -626,7 +625,7 @@ def __call__( # noqa: D102 have info argument. """ -ModelAfterValidator = Callable[[_ModelType, _core_schema.ValidationInfo], _ModelType] +ModelAfterValidator = Callable[[_ModelType, core_schema.ValidationInfo], _ModelType] """A `@model_validator` decorated function signature. This is used when `mode='after'`.""" _AnyModelWrapValidator = Union[ModelWrapValidator[_ModelType], ModelWrapValidatorWithoutInfo[_ModelType]] From 88c75cd5adbfbfea4ff1aceb597c93f238db8dcb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 10:18:03 +0200 Subject: [PATCH 066/106] Bump dawidd6/action-download-artifact from 9 to 10 (#11938) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/upload-previews.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/upload-previews.yml b/.github/workflows/upload-previews.yml index 6f408366061..1db04b6f173 100644 --- a/.github/workflows/upload-previews.yml +++ b/.github/workflows/upload-previews.yml @@ -20,7 +20,7 @@ jobs: - run: pip install smokeshow - - uses: dawidd6/action-download-artifact@v9 + - uses: dawidd6/action-download-artifact@v10 with: workflow: ci.yml commit: ${{ github.event.workflow_run.head_sha }} From e1f9d15a5ed59d4b6f495154e2410823bdf55a3a Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 11 Jun 2025 18:23:03 +0200 Subject: [PATCH 067/106] Bump `pydantic-core` to v2.35.1 (#11963) --- docs/api/standard_library_types.md | 2 +- docs/why.md | 2 +- pydantic/_internal/_core_utils.py | 8 - pydantic/_internal/_generate_schema.py | 5 +- pydantic/functional_serializers.py | 4 +- pydantic/functional_validators.py | 10 +- pydantic/main.py | 4 + pydantic/type_adapter.py | 3 + pydantic/version.py | 2 +- pyproject.toml | 4 +- tests/typechecking/decorators.py | 79 +++++++-- uv.lock | 220 +++++++++++++------------ 12 files changed, 203 insertions(+), 140 deletions(-) diff --git a/docs/api/standard_library_types.md b/docs/api/standard_library_types.md index 7d0b79b810a..d0798230e2e 100644 --- a/docs/api/standard_library_types.md +++ b/docs/api/standard_library_types.md @@ -81,7 +81,7 @@ event = Event(dt='2032-04-23T10:20:30.400+02:30') print(event.model_dump()) """ -{'dt': datetime.datetime(2032, 4, 23, 10, 20, 30, 400000, tzinfo=TzInfo(+02:30))} +{'dt': datetime.datetime(2032, 4, 23, 10, 20, 30, 400000, tzinfo=TzInfo(9000))} """ ``` diff --git a/docs/why.md b/docs/why.md index adef22d0f0f..1620241f870 100644 --- a/docs/why.md +++ b/docs/why.md @@ -363,7 +363,7 @@ Functional validators and serializers, as well as a powerful protocol for custom print(Meeting(when='2020-01-01T12:00+01:00')) - #> when=datetime.datetime(2020, 1, 1, 12, 0, tzinfo=TzInfo(+01:00)) + #> when=datetime.datetime(2020, 1, 1, 12, 0, tzinfo=TzInfo(3600)) print(Meeting(when='now')) #> when=datetime.datetime(2032, 1, 2, 3, 4, 5, 6) print(Meeting(when='2020-01-01T12:00')) diff --git a/pydantic/_internal/_core_utils.py b/pydantic/_internal/_core_utils.py index cf8cf7c5f07..caa51e8c463 100644 --- a/pydantic/_internal/_core_utils.py +++ b/pydantic/_internal/_core_utils.py @@ -1,12 +1,10 @@ from __future__ import annotations import inspect -import os from collections.abc import Mapping, Sequence from typing import TYPE_CHECKING, Any, Union from pydantic_core import CoreSchema, core_schema -from pydantic_core import validate_core_schema as _validate_core_schema from typing_extensions import TypeGuard, get_args, get_origin from typing_inspection import typing_objects @@ -109,12 +107,6 @@ def get_ref(s: core_schema.CoreSchema) -> None | str: return s.get('ref', None) -def validate_core_schema(schema: CoreSchema) -> CoreSchema: - if os.getenv('PYDANTIC_VALIDATE_CORE_SCHEMAS'): - return _validate_core_schema(schema) - return schema - - def _clean_schema_for_pretty_print(obj: Any, strip_metadata: bool = True) -> Any: # pragma: no cover """A utility function to remove irrelevant information from a core schema.""" if isinstance(obj, Mapping): diff --git a/pydantic/_internal/_generate_schema.py b/pydantic/_internal/_generate_schema.py index 9bac622c97e..0767a4b09e1 100644 --- a/pydantic/_internal/_generate_schema.py +++ b/pydantic/_internal/_generate_schema.py @@ -70,7 +70,6 @@ get_ref, get_type_ref, is_list_like_schema_with_items_schema, - validate_core_schema, ) from ._decorators import ( Decorator, @@ -655,9 +654,7 @@ def _apply_discriminator_to_union( return schema def clean_schema(self, schema: CoreSchema) -> CoreSchema: - schema = self.defs.finalize_schema(schema) - schema = validate_core_schema(schema) - return schema + return self.defs.finalize_schema(schema) def _add_js_function(self, metadata_schema: CoreSchema, js_function: Callable[..., Any]) -> None: metadata = metadata_schema.get('metadata', {}) diff --git a/pydantic/functional_serializers.py b/pydantic/functional_serializers.py index 4b065e49a19..ba2f342b8da 100644 --- a/pydantic/functional_serializers.py +++ b/pydantic/functional_serializers.py @@ -300,7 +300,7 @@ def dec(f: FieldSerializer) -> _decorators.PydanticDescriptorProxy[Any]: if TYPE_CHECKING: # The first argument in the following callables represent the `self` type: - ModelPlainSerializerWithInfo: TypeAlias = Callable[[Any, SerializationInfo], Any] + ModelPlainSerializerWithInfo: TypeAlias = Callable[[Any, SerializationInfo[Any]], Any] """A model serializer method with the `info` argument, in `plain` mode.""" ModelPlainSerializerWithoutInfo: TypeAlias = Callable[[Any], Any] @@ -309,7 +309,7 @@ def dec(f: FieldSerializer) -> _decorators.PydanticDescriptorProxy[Any]: ModelPlainSerializer: TypeAlias = 'ModelPlainSerializerWithInfo | ModelPlainSerializerWithoutInfo' """A model serializer method in `plain` mode.""" - ModelWrapSerializerWithInfo: TypeAlias = Callable[[Any, SerializerFunctionWrapHandler, SerializationInfo], Any] + ModelWrapSerializerWithInfo: TypeAlias = Callable[[Any, SerializerFunctionWrapHandler, SerializationInfo[Any]], Any] """A model serializer method with the `info` argument, in `wrap` mode.""" ModelWrapSerializerWithoutInfo: TypeAlias = Callable[[Any, SerializerFunctionWrapHandler], Any] diff --git a/pydantic/functional_validators.py b/pydantic/functional_validators.py index c3dad674216..a7da43bd470 100644 --- a/pydantic/functional_validators.py +++ b/pydantic/functional_validators.py @@ -328,7 +328,7 @@ class _OnlyValueValidatorClsMethod(Protocol): def __call__(self, cls: Any, value: Any, /) -> Any: ... class _V2ValidatorClsMethod(Protocol): - def __call__(self, cls: Any, value: Any, info: core_schema.ValidationInfo, /) -> Any: ... + def __call__(self, cls: Any, value: Any, info: core_schema.ValidationInfo[Any], /) -> Any: ... class _OnlyValueWrapValidatorClsMethod(Protocol): def __call__(self, cls: Any, value: Any, handler: core_schema.ValidatorFunctionWrapHandler, /) -> Any: ... @@ -339,7 +339,7 @@ def __call__( cls: Any, value: Any, handler: core_schema.ValidatorFunctionWrapHandler, - info: core_schema.ValidationInfo, + info: core_schema.ValidationInfo[Any], /, ) -> Any: ... @@ -600,7 +600,7 @@ def __call__( # noqa: D102 # or anything else that gets passed to validate_python # thus validators _must_ handle all cases value: Any, - info: core_schema.ValidationInfo, + info: core_schema.ValidationInfo[Any], /, ) -> Any: ... @@ -615,7 +615,7 @@ def __call__( # noqa: D102 # or anything else that gets passed to validate_python # thus validators _must_ handle all cases value: Any, - info: core_schema.ValidationInfo, + info: core_schema.ValidationInfo[Any], /, ) -> Any: ... @@ -625,7 +625,7 @@ def __call__( # noqa: D102 have info argument. """ -ModelAfterValidator = Callable[[_ModelType, core_schema.ValidationInfo], _ModelType] +ModelAfterValidator = Callable[[_ModelType, core_schema.ValidationInfo[Any]], _ModelType] """A `@model_validator` decorated function signature. This is used when `mode='after'`.""" _AnyModelWrapValidator = Union[ModelWrapValidator[_ModelType], ModelWrapValidatorWithoutInfo[_ModelType]] diff --git a/pydantic/main.py b/pydantic/main.py index 138acf42a0a..ea8940bf622 100644 --- a/pydantic/main.py +++ b/pydantic/main.py @@ -480,6 +480,7 @@ def model_dump_json( self, *, indent: int | None = None, + ensure_ascii: bool = False, include: IncEx | None = None, exclude: IncEx | None = None, context: Any | None = None, @@ -499,6 +500,8 @@ def model_dump_json( Args: indent: Indentation to use in the JSON output. If None is passed, the output will be compact. + ensure_ascii: If `True`, the output is guaranteed to have all incoming non-ASCII characters escaped. + If `False` (the default), these characters will be output as-is. include: Field(s) to include in the JSON output. exclude: Field(s) to exclude from the JSON output. context: Additional context to pass to the serializer. @@ -519,6 +522,7 @@ def model_dump_json( return self.__pydantic_serializer__.to_json( self, indent=indent, + ensure_ascii=ensure_ascii, include=include, exclude=exclude, context=context, diff --git a/pydantic/type_adapter.py b/pydantic/type_adapter.py index a6cdaba84b0..ae7efd13c5c 100644 --- a/pydantic/type_adapter.py +++ b/pydantic/type_adapter.py @@ -591,6 +591,7 @@ def dump_json( /, *, indent: int | None = None, + ensure_ascii: bool = False, include: IncEx | None = None, exclude: IncEx | None = None, by_alias: bool | None = None, @@ -611,6 +612,8 @@ def dump_json( Args: instance: The instance to be serialized. indent: Number of spaces for JSON indentation. + ensure_ascii: If `True`, the output is guaranteed to have all incoming non-ASCII characters escaped. + If `False` (the default), these characters will be output as-is. include: Fields to include. exclude: Fields to exclude. by_alias: Whether to use alias names for field names. diff --git a/pydantic/version.py b/pydantic/version.py index 3f783d75358..468c2542625 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -66,7 +66,7 @@ def version_info() -> str: def check_pydantic_core_version() -> bool: """Check that the installed `pydantic-core` dependency is compatible.""" # Keep this in sync with the version constraint in the `pyproject.toml` dependencies: - return __pydantic_core_version__ == '2.34.1' + return __pydantic_core_version__ == '2.35.1' def parse_mypy_version(version: str) -> tuple[int, int, int]: diff --git a/pyproject.toml b/pyproject.toml index 4f073adaa8b..344ed27eeaa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,10 +44,10 @@ classifiers = [ ] requires-python = '>=3.9' dependencies = [ - 'typing-extensions>=4.12.2', + 'typing-extensions>=4.13.0', 'annotated-types>=0.6.0', # Keep this in sync with the version in the `check_pydantic_core_version()` function: - 'pydantic-core==2.34.1', + 'pydantic-core==2.35.1', 'typing-inspection>=0.4.0', ] dynamic = ['version', 'readme'] diff --git a/tests/typechecking/decorators.py b/tests/typechecking/decorators.py index 28f0e6031fa..273d0dea0e2 100644 --- a/tests/typechecking/decorators.py +++ b/tests/typechecking/decorators.py @@ -31,12 +31,24 @@ def valid_method(self, value: Any) -> Any: """TODO This shouldn't be valid. At runtime, `self` is the actual value and `value` is the `ValidationInfo` instance.""" @model_validator(mode='before') - def valid_method_info(self, value: Any, info: ValidationInfo) -> Any: ... + def valid_method_info_default(self, value: Any, info: ValidationInfo) -> Any: ... + + @model_validator(mode='before') + def valid_method_info(self, value: Any, info: ValidationInfo[int]) -> Any: + assert_type(info.context, int) @model_validator(mode='before') @classmethod def valid_classmethod(cls, value: Any) -> Any: ... + @model_validator(mode='before') + @classmethod + def valid_classmethod_info_default(cls, value: Any, info: ValidationInfo) -> Any: ... + + @model_validator(mode='before') + @classmethod + def valid_classmethod_info(cls, value: Any, info: ValidationInfo[int]) -> Any: ... + @model_validator(mode='before') @staticmethod def valid_staticmethod(value: Any) -> Any: ... @@ -91,7 +103,10 @@ def missing_return_value(self) -> None: ... def valid_method_no_info(self) -> Self: ... @model_validator(mode='after') - def valid_method_info(self, info: ValidationInfo) -> Self: ... + def valid_method_info_default(self, info: ValidationInfo) -> Self: ... + + @model_validator(mode='after') + def valid_method_info(self, info: ValidationInfo[int]) -> Self: ... class BeforeFieldValidator(BaseModel): @@ -114,7 +129,11 @@ def invalid_with_info(cls, value: Any, info: int) -> Any: ... @field_validator('foo', mode='before', json_schema_input_type=int) # `json_schema_input_type` allowed here. @classmethod - def valid_with_info(cls, value: Any, info: ValidationInfo) -> Any: ... + def valid_with_info_default(cls, value: Any, info: ValidationInfo) -> Any: ... + + @field_validator('foo', mode='before', json_schema_input_type=int) # `json_schema_input_type` allowed here. + @classmethod + def valid_with_info(cls, value: Any, info: ValidationInfo[int]) -> Any: ... class AfterFieldValidator(BaseModel): @@ -122,6 +141,14 @@ class AfterFieldValidator(BaseModel): @classmethod def valid_classmethod(cls, value: Any) -> Any: ... + @field_validator('foo', mode='after') + @classmethod + def valid_classmethod_info_default(cls, value: Any, info: ValidationInfo) -> Any: ... + + @field_validator('foo', mode='after') + @classmethod + def valid_classmethod_info(cls, value: Any, info: ValidationInfo[int]) -> Any: ... + @field_validator('foo', mode='after', json_schema_input_type=int) # type: ignore[call-overload] # pyright: ignore[reportCallIssue, reportArgumentType] @classmethod def invalid_input_type_not_allowed(cls, value: Any) -> Any: ... @@ -148,7 +175,13 @@ def valid_no_info(cls, value: Any, handler: ValidatorFunctionWrapHandler) -> Any @field_validator('foo', mode='wrap', json_schema_input_type=int) # `json_schema_input_type` allowed here. @classmethod - def valid_with_info(cls, value: Any, handler: ValidatorFunctionWrapHandler, info: ValidationInfo) -> Any: ... + def valid_with_info_default( + cls, value: Any, handler: ValidatorFunctionWrapHandler, info: ValidationInfo + ) -> Any: ... + + @field_validator('foo', mode='wrap', json_schema_input_type=int) # `json_schema_input_type` allowed here. + @classmethod + def valid_with_info(cls, value: Any, handler: ValidatorFunctionWrapHandler, info: ValidationInfo[int]) -> Any: ... class PlainModelSerializer(BaseModel): @@ -162,7 +195,10 @@ def valid_plain_serializer_1(self) -> Any: ... def valid_plain_serializer_2(self) -> Any: ... @model_serializer(mode='plain') - def valid_plain_serializer_info(self, info: SerializationInfo) -> Any: ... + def valid_plain_serializer_info_default(self, info: SerializationInfo) -> Any: ... + + @model_serializer(mode='plain') + def valid_plain_serializer_info(self, info: SerializationInfo[int]) -> Any: ... class WrapModelSerializer(BaseModel): @@ -175,7 +211,12 @@ def valid_no_info(self, handler: SerializerFunctionWrapHandler) -> Any: return value @model_serializer(mode='wrap') - def valid_info(self, handler: SerializerFunctionWrapHandler, info: SerializationInfo) -> Any: + def valid_info_default(self, handler: SerializerFunctionWrapHandler, info: SerializationInfo) -> Any: + value = handler(self) + return value + + @model_serializer(mode='wrap') + def valid_info(self, handler: SerializerFunctionWrapHandler, info: SerializationInfo[int]) -> Any: value = handler(self) return value @@ -205,7 +246,10 @@ def invalid_method_info_2(self, value: Any, info: SerializationInfo) -> Any: """ @field_serializer('a', mode='plain') - def valid_method_info(self, value: Any, info: FieldSerializationInfo) -> Any: ... + def valid_method_info_default(self, value: Any, info: FieldSerializationInfo) -> Any: ... + + @field_serializer('a', mode='plain') + def valid_method_info(self, value: Any, info: FieldSerializationInfo[int]) -> Any: ... @field_serializer('a', mode='plain') @staticmethod @@ -213,7 +257,11 @@ def valid_staticmethod_no_info(value: Any) -> Any: ... @field_serializer('a', mode='plain') @staticmethod - def valid_staticmethod_info(value: Any, info: FieldSerializationInfo) -> Any: ... + def valid_staticmethod_info_default(value: Any, info: FieldSerializationInfo) -> Any: ... + + @field_serializer('a', mode='plain') + @staticmethod + def valid_staticmethod_info(value: Any, info: FieldSerializationInfo[int]) -> Any: ... @field_serializer('a', mode='plain') @classmethod @@ -221,7 +269,11 @@ def valid_classmethod_no_info(cls, value: Any) -> Any: ... @field_serializer('a', mode='plain') @classmethod - def valid_classmethod_info(cls, value: Any, info: FieldSerializationInfo) -> Any: ... + def valid_classmethod_info_default(cls, value: Any, info: FieldSerializationInfo) -> Any: ... + + @field_serializer('a', mode='plain') + @classmethod + def valid_classmethod_info(cls, value: Any, info: FieldSerializationInfo[int]) -> Any: ... partial_ = field_serializer('a', mode='plain')(partial(lambda v, x: v, x=1)) @@ -250,4 +302,11 @@ def staticmethod_no_handler(value: Any) -> Any: ... def valid_no_info(self, value: Any, handler: SerializerFunctionWrapHandler) -> Any: ... @field_serializer('a', mode='wrap') - def valid_info(self, value: Any, handler: SerializerFunctionWrapHandler, info: FieldSerializationInfo) -> Any: ... + def valid_info_default( + self, value: Any, handler: SerializerFunctionWrapHandler, info: FieldSerializationInfo + ) -> Any: ... + + @field_serializer('a', mode='wrap') + def valid_info( + self, value: Any, handler: SerializerFunctionWrapHandler, info: FieldSerializationInfo[int] + ) -> Any: ... diff --git a/uv.lock b/uv.lock index 5d101cc8df3..8ccf284f781 100644 --- a/uv.lock +++ b/uv.lock @@ -1784,8 +1784,8 @@ typechecking = [ requires-dist = [ { name = "annotated-types", specifier = ">=0.6.0" }, { name = "email-validator", marker = "extra == 'email'", specifier = ">=2.0.0" }, - { name = "pydantic-core", specifier = "==2.34.1" }, - { name = "typing-extensions", specifier = ">=4.12.2" }, + { name = "pydantic-core", specifier = "==2.35.1" }, + { name = "typing-extensions", specifier = ">=4.13.0" }, { name = "typing-inspection", specifier = ">=0.4.0" }, { name = "tzdata", marker = "python_full_version >= '3.9' and sys_platform == 'win32' and extra == 'timezone'" }, ] @@ -1881,111 +1881,119 @@ typechecking = [ [[package]] name = "pydantic-core" -version = "2.34.1" +version = "2.35.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/fa/5f682f3db14e14f7b5b7f5008ac24594b93943d1da4facbacff5876624cf/pydantic_core-2.34.1.tar.gz", hash = "sha256:6bf31628ab6d0e7c7c0372419898c52ef0a447b33ab47c7f62053bd013cc5b09", size = 435281, upload-time = "2025-04-17T20:34:06.041Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/10/d950f249c9e50048890a515a4bad7e98c44ec4cde78ff4d6e37bfa022a19/pydantic_core-2.34.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:54f6bd146247c62b243fae34b535069614b255453fb1405c17b7d01d00976af7", size = 2038087, upload-time = "2025-04-17T20:30:40.982Z" }, - { url = "https://files.pythonhosted.org/packages/f5/6c/9177d1b5f9aac2775979b5d0a7f03589919dba05caf4d11d4ba9292ce105/pydantic_core-2.34.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9db4dab51a6515d7eb0763f200f4784075952b2a0afe84ce7048da3da70a51cb", size = 1864646, upload-time = "2025-04-17T20:30:43.485Z" }, - { url = "https://files.pythonhosted.org/packages/0a/36/8428d9848cfec707247d7d082deda2d20c8a6be8939c70adb228d9f9251d/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1444714e5c04dc20ad8246f8fd32b7ef4aef34f2fc7b349f71ae365ceb51e66", size = 1906297, upload-time = "2025-04-17T20:30:44.872Z" }, - { url = "https://files.pythonhosted.org/packages/74/53/d0c33441434a3c2ea79ad5b0c8063f5c55a1173ecf38a0a5632c18205df3/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fffe3dd67708719a59e82ae36d6b431e2fb4e11b14f36f173c93e448ba963825", size = 1991861, upload-time = "2025-04-17T20:30:46.677Z" }, - { url = "https://files.pythonhosted.org/packages/35/9b/e19d326eeb1bf83f1f9d5f98a1e244da3441258824ae410b0dfb06c1ab5b/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91f64f2f538d8da4a61d1d7dd515dfa535375bddfa1de0b543af650f2a9ae0a8", size = 2142095, upload-time = "2025-04-17T20:30:48.499Z" }, - { url = "https://files.pythonhosted.org/packages/de/25/b68f48ff4b3a7e3b3fb23cc1cd0dd12c024eabfa3641116dc984ff92222f/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d17f447fffbef877aab4bca91c65d0ccdb3ef776c3db24f88c499565568a489", size = 2745180, upload-time = "2025-04-17T20:30:49.86Z" }, - { url = "https://files.pythonhosted.org/packages/76/07/671c2c3876bd5f8a446d8264bc4832d23d2589786c6bd132b29181a1aa4a/pydantic_core-2.34.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a44cd4d7651a586344cdd474e0740a8d2ee9dba9d1169f980b479b14a8b4891", size = 2015014, upload-time = "2025-04-17T20:30:51.775Z" }, - { url = "https://files.pythonhosted.org/packages/0b/33/47970d638c0db6b1087fc8ecaae0abc1cb67c7010e316560d1ef6ab4c664/pydantic_core-2.34.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:564b56ce0e64a48ec338b06205b8753cc648133ec3f9c9af9dcfd403fc7af040", size = 2120837, upload-time = "2025-04-17T20:30:53.303Z" }, - { url = "https://files.pythonhosted.org/packages/76/0b/7ce9448cfe087d5a4a084d067c317b92a631e10c6ed4a11687bb841f6296/pydantic_core-2.34.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:def02d3a0296a171d6723f97cc135ae827bdaca24c9f0665d23ad6f8096334d1", size = 2083217, upload-time = "2025-04-17T20:30:54.645Z" }, - { url = "https://files.pythonhosted.org/packages/47/ca/13426f6593baff1dd544f6f884ce03f43133ef3787640e816fdc8ac5ec1f/pydantic_core-2.34.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:b72c63ed0399fdb7f45b7985025aa851d6c964801b1ad7c58f3ce8f75bc4e070", size = 2254441, upload-time = "2025-04-17T20:30:56.516Z" }, - { url = "https://files.pythonhosted.org/packages/7c/7d/ecd2d9661000981f511ec996548024abdd3fcdd37a3582d4f30572f94651/pydantic_core-2.34.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eae6a05d4612d15ba5e22879b710d770d310dbdac6edc53126b86a3be4fe78b5", size = 2252748, upload-time = "2025-04-17T20:30:58.303Z" }, - { url = "https://files.pythonhosted.org/packages/17/2f/baeda4059c46361a917973fb938e6564c0b9970113dba4f126c2dcc32595/pydantic_core-2.34.1-cp310-cp310-win32.whl", hash = "sha256:51aae06a854be524f7a33fd2ccc54a37577a7b37c77813794483cbb00829d646", size = 1918465, upload-time = "2025-04-17T20:31:00.108Z" }, - { url = "https://files.pythonhosted.org/packages/e3/93/156001796df52ed6738fe1cd394a6741737260fec318ab4b97085edd9909/pydantic_core-2.34.1-cp310-cp310-win_amd64.whl", hash = "sha256:4f3044c1626b46d5c21e67d9fd16fd854e2847b23e7ebda75689733050959023", size = 1960435, upload-time = "2025-04-17T20:31:02.617Z" }, - { url = "https://files.pythonhosted.org/packages/c7/48/79d53d1822736d8304adb7bf12842c880a576fa53e670a4e0bcc9ebc7458/pydantic_core-2.34.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:922d7931884fbd5f46785d3e6998c58d1ee3a381b4714d1b5a95da5f41795b7c", size = 2037938, upload-time = "2025-04-17T20:31:04.26Z" }, - { url = "https://files.pythonhosted.org/packages/57/33/bd9ee10002c5dacc954624443f2b6ec0d90f1a72ea24479fd70f1c00bba2/pydantic_core-2.34.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ca84244021b9d88bd979cb062c58fe7bd00689371b538284f00582781fd1047e", size = 1865764, upload-time = "2025-04-17T20:31:06.19Z" }, - { url = "https://files.pythonhosted.org/packages/86/1f/b01bf845616c590895a1edb3daf6749d641209374e65712e2b6174a98fa2/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61f5536849eac65c638e47b7ed69ca9b8f353247936feea3862ff773d0f3e349", size = 1906063, upload-time = "2025-04-17T20:31:07.803Z" }, - { url = "https://files.pythonhosted.org/packages/56/a6/fb1f3495dadf291be196e2907b084519e982dd5c762898dcfc05a8bdb80e/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8dbb8babb10c418ca18a149ee27a4df06db5ee4acc30c0576e8c35d9d3a9e9d3", size = 1993222, upload-time = "2025-04-17T20:31:09.488Z" }, - { url = "https://files.pythonhosted.org/packages/b1/53/766c15b82e67a8e5f6a26e30c80f9cb18f68145021ecb337e8124b7b7b4c/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec8ce161786818229e96774f4d9159df80589d89b7bc64f3251c57c3fb133289", size = 2142103, upload-time = "2025-04-17T20:31:11.505Z" }, - { url = "https://files.pythonhosted.org/packages/04/80/fdb17009b0b78c4cdbd7ce33fc434f45c34f5edd95fed9b3f76b01dc93e1/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8d59fcb88752869183b0685e3e6a9d46cb3109280fa452ede7994b9ccff734e", size = 2738738, upload-time = "2025-04-17T20:31:13.191Z" }, - { url = "https://files.pythonhosted.org/packages/17/2d/499578ff0d40d411d094fbc35a3d8709dbe7a3e48bc99e6caf9fbbf5ded7/pydantic_core-2.34.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff39a5611d098fcd821dacdfb01dabb434054867d3df646e7b11981a6770a195", size = 2012075, upload-time = "2025-04-17T20:31:14.95Z" }, - { url = "https://files.pythonhosted.org/packages/03/ff/8528ba1261d0d548d88200b9b887633a8599c2baf4326872e7a2d838bdd2/pydantic_core-2.34.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6194d491d34ee7667a71cb51f107c9c9266608f86d7fef1e9644acfc7f3e189a", size = 2121560, upload-time = "2025-04-17T20:31:16.668Z" }, - { url = "https://files.pythonhosted.org/packages/13/23/7314c1a12db9d3bc7036d94d5c78c81701d9149299f1db0fecbe9a3ed71c/pydantic_core-2.34.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c59c3cadc8a0ae1ac9bed2d7e78f93e71e5d99bba5f9f121c5d7bd41f1faa89a", size = 2083123, upload-time = "2025-04-17T20:31:18.316Z" }, - { url = "https://files.pythonhosted.org/packages/90/75/40f499b653bd745a23e5e7deda21171b559014b41d676ec14f2acc1418fd/pydantic_core-2.34.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:e331d7ec5ec582c5078db948eca25d637c0a7f88a037b5016c48cb7c63f7da2c", size = 2255737, upload-time = "2025-04-17T20:31:19.932Z" }, - { url = "https://files.pythonhosted.org/packages/64/b0/6440bbaea7b5bb53dd40e1b725cf06356d01820feb0cb9ffb0b0fd2db125/pydantic_core-2.34.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:71c2d7cb5c9087301f5d2a488ce51e090bd682849b5a59cf4f75a9ce08044f64", size = 2252186, upload-time = "2025-04-17T20:31:21.587Z" }, - { url = "https://files.pythonhosted.org/packages/bf/43/6fe3ed2bfbf2068c42d0de892ba5f9b7bdadd494268f56b13bebd592d384/pydantic_core-2.34.1-cp311-cp311-win32.whl", hash = "sha256:dbec17f32828541af5bcebe0ea124235fc620bb5e5d56bf76e38b5b0ad37299d", size = 1917814, upload-time = "2025-04-17T20:31:23.723Z" }, - { url = "https://files.pythonhosted.org/packages/c2/57/b39a659a2b5a9c76e239720db257bb1c930349d5094dce93d1b022d2e17b/pydantic_core-2.34.1-cp311-cp311-win_amd64.whl", hash = "sha256:91175524a4cb485333d4119454645c7adefeda34845e66ade277cae670ad8b58", size = 1957753, upload-time = "2025-04-17T20:31:25.474Z" }, - { url = "https://files.pythonhosted.org/packages/e5/1d/da4c39b0ee8033f783df8bd7b41e662fadfa8d1be629d74b8e5ff5bfe97e/pydantic_core-2.34.1-cp311-cp311-win_arm64.whl", hash = "sha256:d9cb67f2d7d1f129af7e05dbf4fe209f4df043ea1245086bce2a5ee00ca2f5cc", size = 1905663, upload-time = "2025-04-17T20:31:27.298Z" }, - { url = "https://files.pythonhosted.org/packages/ee/44/be71fcdaabc51210171ad47ba58667f5389b55029f2c04a8e009b0cd3bd6/pydantic_core-2.34.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:406f85849878788a3fd4b73410955dbbb038a70a8c0d7bb9201084242b035bb5", size = 2019724, upload-time = "2025-04-17T20:31:29.008Z" }, - { url = "https://files.pythonhosted.org/packages/3f/dd/c8d5dafae46eacd3a619fe7476794acbbfc5ec170993bce4aed1e6e5773c/pydantic_core-2.34.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a953737ad0ce8a6b0130fa77851ab639c576e2c11e16a417392e04f8ec1d40dd", size = 1851663, upload-time = "2025-04-17T20:31:31.086Z" }, - { url = "https://files.pythonhosted.org/packages/e6/3a/5f64080cba0002600b7254ecb61a54fbff3ef74023322e3625d95ae8a44a/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e12b71b0ed28cc751e59653d0415aded476f255984dbf0f99d6880342d1911db", size = 1889055, upload-time = "2025-04-17T20:31:32.895Z" }, - { url = "https://files.pythonhosted.org/packages/2b/86/6ef6b3820fd52cba959e1b1b109734de99339fcbe78de6f22cb84a1ba568/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c6fe9cb158200d9a83a38fed3c2cb6766a98adc5f61940ccdd41a75231762e89", size = 1976847, upload-time = "2025-04-17T20:31:34.605Z" }, - { url = "https://files.pythonhosted.org/packages/7c/93/e4d8c3ce244a528e226e4276c973f1b222ca3bc09e3660506f0b707896aa/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:448a11df0edc8a1a4072a13d34ad7e048e7c7941635432ffc39036e8bf4454a3", size = 2128118, upload-time = "2025-04-17T20:31:36.419Z" }, - { url = "https://files.pythonhosted.org/packages/5e/91/a05cfdaebc9b0e72848dd20b0461a2f3d70cf7578763db8bf077031a83b1/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:642ca6940d2bc027d8ac8ddd4c1c7e7ae3dbb0277e26ab2c42a562cc96f9f048", size = 2686857, upload-time = "2025-04-17T20:31:38.219Z" }, - { url = "https://files.pythonhosted.org/packages/37/c7/aa7eb3c22a12fbac158835c5fbd62d2059405838c977a61ba90fb3d9214a/pydantic_core-2.34.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7126ea9858f9c23a3ec7cd9ecc18be93d1546fe76bc7b331389caf29c4d411f", size = 2013073, upload-time = "2025-04-17T20:31:39.993Z" }, - { url = "https://files.pythonhosted.org/packages/0a/14/98d941d9af7d0860884223919c513d2b3b87eec121f3fc9d8864e984ea01/pydantic_core-2.34.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d74a8e53545bcfd0515754ece2b018fabfb81c0e49d825f8cc1dba09c911f404", size = 2107513, upload-time = "2025-04-17T20:31:41.817Z" }, - { url = "https://files.pythonhosted.org/packages/e9/97/84d36d0c8f92c84ca515e634838f4db29db336d14a65350274ec39927609/pydantic_core-2.34.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:edc0c6d41431849c6f2f6301f713af730884136c06613a41fd6778446b5bc7c5", size = 2066685, upload-time = "2025-04-17T20:31:44.34Z" }, - { url = "https://files.pythonhosted.org/packages/2c/5a/1a8d8e3690b595787ab041c0ebab2af6a47dda4df3e087c58ea92cef134c/pydantic_core-2.34.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:f5ee164fb0be1a56c7639794b400815ce36eeb14cdf0a914527c80481b43b43c", size = 2239959, upload-time = "2025-04-17T20:31:46.185Z" }, - { url = "https://files.pythonhosted.org/packages/68/72/559845386d05391b5f180711e23efe03811d0b3f9b5a75295da8b2dd8dd4/pydantic_core-2.34.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b5beed6e1f3ee3d20a93b02bdb28dcc94bd192c09f433cd114efcf8ad13829f0", size = 2241120, upload-time = "2025-04-17T20:31:48.007Z" }, - { url = "https://files.pythonhosted.org/packages/57/8b/3ff432a0d84037df43cdca3cb16ba416cb622b619755fe2bbea6b48dd101/pydantic_core-2.34.1-cp312-cp312-win32.whl", hash = "sha256:00d7e7b6a0b2d2294e3dc2d2b170fa860577fc0e286460d7cfd0e90c1a2a1267", size = 1900094, upload-time = "2025-04-17T20:31:49.755Z" }, - { url = "https://files.pythonhosted.org/packages/4b/a8/5560b14afe572e6bdc5e7f0067717a7269e45225d9762dd7b57be0babdc0/pydantic_core-2.34.1-cp312-cp312-win_amd64.whl", hash = "sha256:4122151c1f4eb883556adc9e624564731872eb1647f5408028649d69b8565879", size = 1972744, upload-time = "2025-04-17T20:31:51.603Z" }, - { url = "https://files.pythonhosted.org/packages/65/ec/64cc90d57bc109f1147f1b3d64439420948a1a0cbee83aeedda6af0d06d0/pydantic_core-2.34.1-cp312-cp312-win_arm64.whl", hash = "sha256:59054ba986777afb760c3283fcf0bfe27a6a1be970f6c7b3bcfde33985a69823", size = 1896488, upload-time = "2025-04-17T20:31:53.469Z" }, - { url = "https://files.pythonhosted.org/packages/84/c2/60c310e7d471d590adce553bb0788256ad749bbf4f95f8c1e780e83b4ac6/pydantic_core-2.34.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:a7385b01cb068b87b35a95799b4e2b1c6456269d7b9a5e8b4dcfe2547bdaccaf", size = 2026574, upload-time = "2025-04-17T20:31:55.401Z" }, - { url = "https://files.pythonhosted.org/packages/e0/51/8f8af7364febb498856bee3f1cc4c4cba45fcaf00622ade3839cb93e8023/pydantic_core-2.34.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d26e1ba192c3207fa2a3d1e049ad7710ace1f09e67ae70e52495db70292cc12d", size = 1851446, upload-time = "2025-04-17T20:31:57.765Z" }, - { url = "https://files.pythonhosted.org/packages/54/26/93f8fb98f73043e22aa35a3384044694f7fcf2ef7d3031e9ddb47941c4ef/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abdefd076e7857f23caa4cfeacdae831d5e948ac227125b4d35b92b5fb77976c", size = 1893875, upload-time = "2025-04-17T20:31:59.626Z" }, - { url = "https://files.pythonhosted.org/packages/35/d3/ae4b5b05b25768252a39f5835a3a4906ca4778a922a2e227a0775ce39c46/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6beb001b3dfc3a6705fd0bec935cf77e99ad37e43f4e82b15495c2c2e678d005", size = 1985569, upload-time = "2025-04-17T20:32:01.502Z" }, - { url = "https://files.pythonhosted.org/packages/24/3c/361f8a0edc2b40a746fb19b97d13847e843b474fbcb2654e4df25d1a19a9/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:502c81a0e3db1010aabdb309456c7217151e94bb20abdbeb766b2df25be84320", size = 2128538, upload-time = "2025-04-17T20:32:03.387Z" }, - { url = "https://files.pythonhosted.org/packages/1f/06/edc987266114e25550845c9602f28234721475a7efa84aa9b3cfaafa3d0c/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df50a223e1a8e8a066a806267b11ffc47fd797736ffafa70734629305b1b6fe6", size = 2687776, upload-time = "2025-04-17T20:32:05.385Z" }, - { url = "https://files.pythonhosted.org/packages/c4/a6/a339a95abd8f65ece666147d3457c81abb7c35621c855f02703185b1fa7a/pydantic_core-2.34.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54e31294764110fc266111f49d5ddd9356773b13fdf848cc261ef07a18de2568", size = 2010400, upload-time = "2025-04-17T20:32:07.318Z" }, - { url = "https://files.pythonhosted.org/packages/86/7d/4c4c0e072829588d931162c8371de2cad68f067e9564c8fad49b0516e813/pydantic_core-2.34.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3bb7a0d84fea2629d10adcf46470ef48ac786976f6c3130a441a260beb4dbad", size = 2115352, upload-time = "2025-04-17T20:32:09.293Z" }, - { url = "https://files.pythonhosted.org/packages/89/7b/c899ecad0773d1de65e531bb7432886d5d83eeed56e2ccebe0b0434eddeb/pydantic_core-2.34.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:596ea8427dde3721b829ce37e9166efb65c01e25e1977008702b5b081124cec5", size = 2070414, upload-time = "2025-04-17T20:32:11.714Z" }, - { url = "https://files.pythonhosted.org/packages/ed/6c/b866f1568d436b5f74289225d9e0a5904c9d56ac4fb1929893e7a05253e4/pydantic_core-2.34.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:b50cd1cd02c525c44d0b4127833436b491f71a6a2ef93d503e29b0b672fe5acb", size = 2248628, upload-time = "2025-04-17T20:32:14.159Z" }, - { url = "https://files.pythonhosted.org/packages/09/5b/bd0efb630476c01f46fc9de8af59a1261bd2e17a8d6e70be2166ce68bd42/pydantic_core-2.34.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a4a44c73e5e58113c1b6a4fe2ab7a151a9d6a0ab612a8e107a6d557c980853f1", size = 2248738, upload-time = "2025-04-17T20:32:16.007Z" }, - { url = "https://files.pythonhosted.org/packages/7b/c2/3542e28e1238cef011f0058d156c4473e921f6ea08cd2c4f9bf77bec1492/pydantic_core-2.34.1-cp313-cp313-win32.whl", hash = "sha256:6d908cdc6ee50c463f64792892b7980bad8eea0c231fd09a7db7d8375aeb350e", size = 1906826, upload-time = "2025-04-17T20:32:18.386Z" }, - { url = "https://files.pythonhosted.org/packages/2b/ac/713daff8e6df9ac565a44ea066dd37c3a3ae7171ef93329f7c782cff9bae/pydantic_core-2.34.1-cp313-cp313-win_amd64.whl", hash = "sha256:83343e0a9b0e929231bde8d2d7d5dd93dd3af22556bc9a538d729a9ba6824cf4", size = 1971800, upload-time = "2025-04-17T20:32:20.698Z" }, - { url = "https://files.pythonhosted.org/packages/99/7d/7df9b739c42e499acc832e6a06fd27b97cc6f374224e9053140c2245edc0/pydantic_core-2.34.1-cp313-cp313-win_arm64.whl", hash = "sha256:92757e71447ff68fa63091c5c4a5f595225fba3f427e987516db56f39568b38e", size = 1903059, upload-time = "2025-04-17T20:32:22.62Z" }, - { url = "https://files.pythonhosted.org/packages/c1/ee/9db88f26f7f284550dfa7467533e37392ed007b641d95e34bc259ad00895/pydantic_core-2.34.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:32ff9e9e07f80815115466a586f5b437679802cdc79ff58935fc0a4b4b6de77f", size = 1811340, upload-time = "2025-04-17T20:32:24.513Z" }, - { url = "https://files.pythonhosted.org/packages/bd/83/8c64954765295648af41130f04fb7f490c11e89cdfe1f06a9767fa8bf485/pydantic_core-2.34.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00643ebd798a05111218e9fe17f8b0f782e7cb94cd427b3118938563a81872a5", size = 1986955, upload-time = "2025-04-17T20:32:26.45Z" }, - { url = "https://files.pythonhosted.org/packages/ac/41/eaa43c0b1a506aba0fae4dae8095cb363caf5b79e9aad284f09aafd2b0eb/pydantic_core-2.34.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b1f5392e6a615a93f8ba2f71454c096798dd4d944ca27bbca793cfb0e3faaf1d", size = 1942120, upload-time = "2025-04-17T20:32:28.7Z" }, - { url = "https://files.pythonhosted.org/packages/2d/4a/0500862bd02a0c0f6517a266dddd587e299a4ac9cf6715b1a10565fa3078/pydantic_core-2.34.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:8a7b34f16772a7b02944c1910125fb0b0c89d34c5045e6ea0746044722b592d3", size = 2038228, upload-time = "2025-04-17T20:32:30.702Z" }, - { url = "https://files.pythonhosted.org/packages/60/1a/3cbff2c0ad96f78b38118dc6a347c0e12a7aede8dd9ad67d52651b5fc9f4/pydantic_core-2.34.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6e1af10b5c6b91732bc8385b472b8b68c120dab52564a0f195409a7020ad3f58", size = 1872870, upload-time = "2025-04-17T20:32:32.78Z" }, - { url = "https://files.pythonhosted.org/packages/e1/cd/7a6bb217ad3b7f730dff4abd36f1e7cf6032025408d15dcef01e0d3d9a97/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03c1722c3755b7fbaafcf7e8d331803c6109f96b4df52eb91ea9e1e5f24ee96a", size = 1906430, upload-time = "2025-04-17T20:32:35.319Z" }, - { url = "https://files.pythonhosted.org/packages/d6/b2/54ab389304567b841d6f366e6da2ca53e9b0c923da4029da351c9a545dc3/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:967a7dc51597a1cc6a0782abf069e549e183101cb3c129a5a37a8e12a956306f", size = 1992407, upload-time = "2025-04-17T20:32:37.384Z" }, - { url = "https://files.pythonhosted.org/packages/3c/8f/50e4985198fd00af37c697d4d8b98eaf8a2abf5e28a9e4c8945d964c3e97/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b20ff6e14af8c5e3073304c4ec818a9f20bd92ce9d6d5716982803a5bb0851b6", size = 2142490, upload-time = "2025-04-17T20:32:39.69Z" }, - { url = "https://files.pythonhosted.org/packages/8d/51/ba611f3d687e58fa85246edaa806a916e1694afaeba7bce540504e2b23ad/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c21506d9761d51972d3408c45e38ab44e7bdd244cc7e1e2fcd4af0cd6322cb33", size = 2744301, upload-time = "2025-04-17T20:32:41.803Z" }, - { url = "https://files.pythonhosted.org/packages/f9/09/39e701ce1a5ae6548ac41922ed42da1511827a835a21ed1d5a461e49fb0a/pydantic_core-2.34.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57e914ce885275b5c9d9641aabc30f2e70945eec65e0e1a915b0242c58a0a5fe", size = 2016408, upload-time = "2025-04-17T20:32:44.355Z" }, - { url = "https://files.pythonhosted.org/packages/c1/03/ce681227b9d4ad410936b2a6c0cb20cf201a2d0332c337828440b31338f9/pydantic_core-2.34.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:390c1c17c3eb47ccb0180af002881294d87203fd01ab617902a6eb740713c017", size = 2121256, upload-time = "2025-04-17T20:32:46.444Z" }, - { url = "https://files.pythonhosted.org/packages/cf/55/8a9cc2104acb11b76de2765c7969bfc79bd7d86b89cb07d783ed14d68f3b/pydantic_core-2.34.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d38504ecbf67b7fe60ae2db028e1b1a54df92a2b899628c82b3edfe885a88059", size = 2083871, upload-time = "2025-04-17T20:32:48.801Z" }, - { url = "https://files.pythonhosted.org/packages/4b/89/07b245b60c3add551d20338bd6cda7005be98f5c8ec1062834726fe89f66/pydantic_core-2.34.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:b010fd1d65b536552fc07633b84538300847dc0544ebfea06986017909b4b65e", size = 2254926, upload-time = "2025-04-17T20:32:50.949Z" }, - { url = "https://files.pythonhosted.org/packages/77/cc/6cef2ec380e57e20bae11c92495267cb46cff1df28a7a6e278b92532ed0c/pydantic_core-2.34.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8da35468c5b54142f503b2a7edb0a2252cb6e21206371ab56cb709f064215500", size = 2253401, upload-time = "2025-04-17T20:32:53.415Z" }, - { url = "https://files.pythonhosted.org/packages/81/60/10f517468900879f6dc0afae282d278d0b793e623858210e25933ae1d01c/pydantic_core-2.34.1-cp39-cp39-win32.whl", hash = "sha256:4b667f9285c0ffccd17d1ac668da776c5da4c3957391c98a0c4c8ff5f378f040", size = 1918322, upload-time = "2025-04-17T20:32:55.552Z" }, - { url = "https://files.pythonhosted.org/packages/5f/58/1e0cfd39b72a52fed5220b5ed5bbba1924d1c0c3cce5e0836a693bb6e26d/pydantic_core-2.34.1-cp39-cp39-win_amd64.whl", hash = "sha256:648a65762994cab52b14c40058290fe0dbbd2ce907b42d7ab7b565fffcfc8617", size = 1962585, upload-time = "2025-04-17T20:32:57.72Z" }, - { url = "https://files.pythonhosted.org/packages/bf/f8/50803d0099af8f490bb6bcdecbe220df24c6472f19bc6adbc4af4ca5103a/pydantic_core-2.34.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:66406c996569bfaa9d6938ccbc43695bc19ee3185dd7ba3e08615e04ca3a0fbe", size = 2035023, upload-time = "2025-04-17T20:33:00.212Z" }, - { url = "https://files.pythonhosted.org/packages/33/1a/6073fd39aa6460d6890a3a84e277393b45765f2c872fd633374b3c6d08f7/pydantic_core-2.34.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a1215a14a145630ce00135d9ea696b5c587f0d166579cef541e8743530dbe134", size = 1867929, upload-time = "2025-04-17T20:33:02.274Z" }, - { url = "https://files.pythonhosted.org/packages/b0/4b/4f96ef0786bc7176f26e67f809e7350ea887598a2372b9e69bb9fec00f48/pydantic_core-2.34.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb5882ad329cec0b58f006840be4b981938303de5ec72e61160b66f86515bd58", size = 1900902, upload-time = "2025-04-17T20:33:04.371Z" }, - { url = "https://files.pythonhosted.org/packages/5d/ca/c9e790808f0b217234f79c8a379c5783a6cc5350504e614f24f01b0d66aa/pydantic_core-2.34.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:215e185af1ace9682dcaf3bde93d2c78256016ebcfb736b47ed4f58defcfd7bf", size = 2077429, upload-time = "2025-04-17T20:33:06.469Z" }, - { url = "https://files.pythonhosted.org/packages/6b/b8/f1cb581892dc96820967a894a0205ebf405f3aff73a08dea6312d223c5a7/pydantic_core-2.34.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:911024e92269e0da607eeee32ab5f6e460e8afe74e0859a353d8f77a09440ab2", size = 2116895, upload-time = "2025-04-17T20:33:08.642Z" }, - { url = "https://files.pythonhosted.org/packages/e4/37/555f5cbe5d62457260e85cf91525bd1186f697303db0056d9ae664292cdc/pydantic_core-2.34.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b1073b3688aa0b1834e54a2e4f1aaa72306bbe72138983a0bd4bf3c8ac9751d5", size = 2077587, upload-time = "2025-04-17T20:33:10.731Z" }, - { url = "https://files.pythonhosted.org/packages/b5/a0/b0a359ee9b3bb9d0a838b9891bd3f5d2ff3afe993500860c4b29111c6812/pydantic_core-2.34.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:16c73d64c4ff64a8c107bd779dfc957f6d5add4f14d348441a836ec23d620cf4", size = 2247416, upload-time = "2025-04-17T20:33:13.261Z" }, - { url = "https://files.pythonhosted.org/packages/33/cf/b03a86dbc7f00fdac44ac11045ceb80db04fa91a477fa23562ea1a1bc142/pydantic_core-2.34.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ca7d1b95b1bca481fb6a8c0ae684a053eef0d6da9e819f6361fd1da7bc1c54ad", size = 2248907, upload-time = "2025-04-17T20:33:15.472Z" }, - { url = "https://files.pythonhosted.org/packages/a4/88/7031a9395b20093e128676bf697b6dc96c07b21ae2c5611ef4e70fad8631/pydantic_core-2.34.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:286981cc3a187e128d5223f37b5660dcf7021f16f4164dee28c4ff78e0fcd040", size = 2075820, upload-time = "2025-04-17T20:33:17.624Z" }, - { url = "https://files.pythonhosted.org/packages/04/b2/27724854768e29f8f6c9975dc94851cbf579ef4ca6063e046b7a91ffb79f/pydantic_core-2.34.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7c848c98ceaf3d1d6369814565da0b2f4aa1cd8b3bf28767261f54a13b8b387d", size = 2036183, upload-time = "2025-04-17T20:33:19.883Z" }, - { url = "https://files.pythonhosted.org/packages/c6/18/ff9d9e91d333ba93ea55477196b28f9cbc712668a84817c1ae5da10bb69f/pydantic_core-2.34.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:c80e6d594122345b41659e5d5ad9cb5d732d81a1da83c336e1b13f55794abafe", size = 1868773, upload-time = "2025-04-17T20:33:22.224Z" }, - { url = "https://files.pythonhosted.org/packages/10/49/5ec5bb4c7c530853e54ec4f1fde0ec216c44abb3b7b70c8e2e63e21b60c3/pydantic_core-2.34.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64b8fa876a63cf806ad0d13dc7205b47512c90f192df2c1ad6a7f49a90015003", size = 1900859, upload-time = "2025-04-17T20:33:24.777Z" }, - { url = "https://files.pythonhosted.org/packages/93/84/9ee32d2468d0f7df469d7f927d63950ebbf4493898c4f8e88f363c505828/pydantic_core-2.34.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2d8176efe66d54a5f7d3052b394ede8c0d2bb80144d1bf6c9b30a9d1fdfaea", size = 2077388, upload-time = "2025-04-17T20:33:27.004Z" }, - { url = "https://files.pythonhosted.org/packages/01/56/b43444372fb9fd88ae867d907b184b8776e353dacf6d4c1f80a350bc4f82/pydantic_core-2.34.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:69eb11a0bcbdb49c04494980206e9449d361b78b35ad64478d9ab15db837bec9", size = 2117737, upload-time = "2025-04-17T20:33:31.284Z" }, - { url = "https://files.pythonhosted.org/packages/a0/37/1b5da00af59ed09eafebda1d8bc3c816b2777b64d054f9203d05c6445630/pydantic_core-2.34.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b30d9d48390deb789c84205fc76ad6c27b00819d60dc955186e9387c55370413", size = 2077383, upload-time = "2025-04-17T20:33:33.736Z" }, - { url = "https://files.pythonhosted.org/packages/2e/ac/de6883ac0617243370cfed67ba785aaae27bea5e3369ed329ddadbba360b/pydantic_core-2.34.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e3da84e67845c83e88c7e96df3e487a16752753f19241d17e887f1f39b7a851c", size = 2248548, upload-time = "2025-04-17T20:33:35.971Z" }, - { url = "https://files.pythonhosted.org/packages/c3/9e/3b4f95aca1742eaa064e402f2388a2f1013f2214f7fb0f4f6155eff3dec3/pydantic_core-2.34.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:9b3946e2fb4a7821b59a70193530f463dd532fd6d25f13e9c6521df736906777", size = 2248760, upload-time = "2025-04-17T20:33:38.572Z" }, - { url = "https://files.pythonhosted.org/packages/f8/4d/06e5db4b171a708c35149b475aa8823a3553c9d4b8b3d6afc1736d5665bc/pydantic_core-2.34.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:46b2ae1824bb07939f77d4a390a1a0a5b0838e34ac9427cf21c89a7a925f1ad7", size = 2075955, upload-time = "2025-04-17T20:33:40.8Z" }, - { url = "https://files.pythonhosted.org/packages/01/a7/3d3347ef8685efd48f0f9044e2ab44a33865ba2bd48e9c297aab9990a636/pydantic_core-2.34.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9fd3ae017ad680b744ffe257627c3503889d2a6ef2b7d1493483e9faccf7abc7", size = 2035248, upload-time = "2025-04-17T20:33:43.189Z" }, - { url = "https://files.pythonhosted.org/packages/7c/00/3f8e0632c27ce1d969b5e9caf8d5d609719c2951df786ad5616f7e8c1b34/pydantic_core-2.34.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:18ff148029c246e3ca36164ca07fa3d0d7c99d2feab98e12bce97da63e67bcdb", size = 1868441, upload-time = "2025-04-17T20:33:45.485Z" }, - { url = "https://files.pythonhosted.org/packages/0d/0a/2f02f1e1aed3d3aebbabe560a6e0ca5de7ea080aeebded29a4c5cf05c99d/pydantic_core-2.34.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7c7ac737d1544615403e8a98956fc02b7505f713c531eab7c4b265618e82af3", size = 1901157, upload-time = "2025-04-17T20:33:48.441Z" }, - { url = "https://files.pythonhosted.org/packages/0e/cd/f601db334adf27808b6179415538cc3581f542daacd3eb931a3b32d1a100/pydantic_core-2.34.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d8f64e49175f98416b7193c818741916dc29783256f684324cee262a1b35d57", size = 2078186, upload-time = "2025-04-17T20:33:51.228Z" }, - { url = "https://files.pythonhosted.org/packages/b2/35/7c5bf738ce45ad9943aca8d6fde04db9e43c5cb17b7248e2d07cb1546458/pydantic_core-2.34.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e19bb6d38d5259b20de62618928fe33d60c4b15975f891503e0703776d23e9f7", size = 2117064, upload-time = "2025-04-17T20:33:53.934Z" }, - { url = "https://files.pythonhosted.org/packages/bb/5d/ff9d24da5991f22ce44e6b101c672a439f97be1f3f0f433334d945ae7aa2/pydantic_core-2.34.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ee4491ebcee7f58054585fedeaca653e9822b97445e9b1700ed29846a963f210", size = 2078212, upload-time = "2025-04-17T20:33:56.604Z" }, - { url = "https://files.pythonhosted.org/packages/0b/b7/71cda0671a13529f9d5d2b2c92113e40eb759cdcc661abd921393344ed47/pydantic_core-2.34.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:08a5b5da50a28a5bae06120aaae7ff086b19a870c74f6ab110326893252822f8", size = 2247591, upload-time = "2025-04-17T20:33:58.967Z" }, - { url = "https://files.pythonhosted.org/packages/c0/20/2a2199fd7b2b3b238df64bf42198450a45d7891a1115e539a99d6b4ed5d8/pydantic_core-2.34.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:a85f3126af1cf983f252738209713f625982ede1557e1991feb6e817c1116b23", size = 2249304, upload-time = "2025-04-17T20:34:01.38Z" }, - { url = "https://files.pythonhosted.org/packages/ea/09/3404f068c7b4884e6c9c557dac52a04e575b1bf25911e99a70b34ac2daf7/pydantic_core-2.34.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:6074b7d2bc969caf9669303e815f52a448ed8f107f17e2905474e7b956a64481", size = 2076010, upload-time = "2025-04-17T20:34:03.771Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/de/b1/44463b3e108acca6678ce1eb516998df704dd4005e289091d57bde89ede7/pydantic_core-2.35.1.tar.gz", hash = "sha256:54d93282d8307dcd504a645326b92414364ff75c0f3909bdf00016c82f66c96c", size = 437737, upload-time = "2025-06-11T12:28:19.819Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/df/ae4924970a0a51443ab1f9ce93247fc3c7bb350c4b6889f25fe998baab5b/pydantic_core-2.35.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:8b647419a794028748bc065108f7868b675346fbcd817e1112d874028feb1f67", size = 2096817, upload-time = "2025-06-11T12:25:05.467Z" }, + { url = "https://files.pythonhosted.org/packages/c2/14/bd4edc676ba388bee7cc2f55ac46bded27a6b7d6361ab8e6ee2cd06f1d61/pydantic_core-2.35.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5acd0bba05903caea01613fad88dac5bcf1e76f845bbfcdcf6be493d5053a480", size = 1860252, upload-time = "2025-06-11T12:25:08.194Z" }, + { url = "https://files.pythonhosted.org/packages/15/d9/c977a397348b094d46a65439fde5617637addfd006d035d1b570fb197390/pydantic_core-2.35.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b997d3e48d87d26dbd7fb39e11241dde4c504d976dfcca6d66c095f598903fc", size = 1950402, upload-time = "2025-06-11T12:25:09.436Z" }, + { url = "https://files.pythonhosted.org/packages/c7/36/5c23e89022707e12e5604a181f5b360faaf6344005ee3053565aae62d512/pydantic_core-2.35.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4fc43c35dad95517acf0c9891c7b97aba87e4c4ab665f243ccb91a7b1a76eb1a", size = 2028640, upload-time = "2025-06-11T12:25:11.024Z" }, + { url = "https://files.pythonhosted.org/packages/1f/5e/973991a288599a1809e21f2cbf1c0f5d09855739c6bcfff423dcb357c34b/pydantic_core-2.35.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed71b6190a6d93bc86790d267848853610ceae74aa41b88782b15d0ef98e2ab2", size = 2213935, upload-time = "2025-06-11T12:25:12.279Z" }, + { url = "https://files.pythonhosted.org/packages/6a/44/e4087819cc29e742ad03fd12fdef416122c34f82d415a46316dd7006d608/pydantic_core-2.35.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c4a1749091b8d08585ea958f26e339a5dd41451c4fa4bad861a366f3b513d679", size = 2304104, upload-time = "2025-06-11T12:25:13.517Z" }, + { url = "https://files.pythonhosted.org/packages/e9/34/976d89f213b95d36e2279da599f5aad97453bf6b69e44e50a7d51a0260d5/pydantic_core-2.35.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e828e04224b0f4bb16afe8426af591ab58bb8a2e978e9c3bfc7bab28c461a49", size = 2016781, upload-time = "2025-06-11T12:25:14.829Z" }, + { url = "https://files.pythonhosted.org/packages/b1/6d/b39d177295c7c14bd002b2c40bf1436f087b7d238b3c6016eb385cbea2ad/pydantic_core-2.35.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e45d2835a7c5c1eb63b6cbd26096a43dc7a302b6b8592fc1c0446b877a9c50ef", size = 2164416, upload-time = "2025-06-11T12:25:16.364Z" }, + { url = "https://files.pythonhosted.org/packages/25/ec/749552cca2cd0f848b0af83a8af5390009f194f588fde78831aa037c5303/pydantic_core-2.35.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1d36c6885bbe50151b0f6dc6dffa405bbe548e9b02b517b7e84f2cf30a4ee128", size = 2127398, upload-time = "2025-06-11T12:25:17.98Z" }, + { url = "https://files.pythonhosted.org/packages/62/5b/03a97599356b305ba1b6db3bd97a03d2d136a8b55edf7c1d9b722d417d18/pydantic_core-2.35.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:379bf304d6bfc83cfb6bfff093888992ac2a484bfa839629e4862058263ff54c", size = 2289528, upload-time = "2025-06-11T12:25:19.269Z" }, + { url = "https://files.pythonhosted.org/packages/1f/ac/f44654b4dc499526b9f5ef16f46531c4bf2f251bda2cdab41b092e46cbc7/pydantic_core-2.35.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f1395b268c825e48571c609edc7540e294f20a85b44e2a195d9cb3d53a0bdccf", size = 2307950, upload-time = "2025-06-11T12:25:20.561Z" }, + { url = "https://files.pythonhosted.org/packages/30/51/04c44bc7062c35da12a1e888bdddca463b3d684ecd0ffd4c774a24e1f94f/pydantic_core-2.35.1-cp310-cp310-win32.whl", hash = "sha256:8d2a5a9612931a8adf4d399ec97cc5e47769611bef5d1af81cedb45b6bebee9e", size = 1947692, upload-time = "2025-06-11T12:25:21.971Z" }, + { url = "https://files.pythonhosted.org/packages/7f/ff/8e2f256612b8e3eb5c4923b6751da223f0209dab2b5e26ab104dbdda0939/pydantic_core-2.35.1-cp310-cp310-win_amd64.whl", hash = "sha256:257776e5d7a80abee5ae1124d7d82f363bc2bddc1e1eab13d3d957ab7d3d099a", size = 1972598, upload-time = "2025-06-11T12:25:23.254Z" }, + { url = "https://files.pythonhosted.org/packages/16/fa/72d083424212bf0562892ea3fb5f9ba902ea0759ec5b5542bc44d739573e/pydantic_core-2.35.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:1890e19f243e83a663f75f17cde380cc06c4d210a995ef84ed54135624b95cae", size = 2096628, upload-time = "2025-06-11T12:25:24.602Z" }, + { url = "https://files.pythonhosted.org/packages/b5/5a/520f474ac9c21ba96320045c02b61b4b5ee0233605b4bbedad8c9d53f422/pydantic_core-2.35.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:45656f289c2a4e8b58e6838d844c270c8d7cf770bf7bc51f41baf22cd65b4d2d", size = 1857169, upload-time = "2025-06-11T12:25:26.045Z" }, + { url = "https://files.pythonhosted.org/packages/ef/c9/c6b633bdc68f2035f18f66a57957e3a1b46cb5ca26aa0f8a6db3f1d7552c/pydantic_core-2.35.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be957688fbd6cd88d0b281564d8c887f65fa04ec3c96c7dcbd25ff209587e7c8", size = 1950266, upload-time = "2025-06-11T12:25:27.83Z" }, + { url = "https://files.pythonhosted.org/packages/3f/7d/3a5d0443e341f5aa61459cd15c883d7d9600f9728ad408c30e329900121d/pydantic_core-2.35.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:577d407a8506d0ecd324c2067fc08f3ae4e6df4777f3378eadbbb30f92c6481d", size = 2029310, upload-time = "2025-06-11T12:25:29.154Z" }, + { url = "https://files.pythonhosted.org/packages/6d/14/35f1d6070afb9e720d1102943fb8a9ca826d8efc2ddc1aa2654369b6b6c9/pydantic_core-2.35.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0687de276b0de329faa2d7697148343c72b61d41d11b58e55af3ded338554c0", size = 2214447, upload-time = "2025-06-11T12:25:30.933Z" }, + { url = "https://files.pythonhosted.org/packages/be/86/620e144ffe576a728655b04b18a8ffc816fc61774f29fd125cc260feabaa/pydantic_core-2.35.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72e80d1b60b88697d7802456e6225e61b82667fbb00fa7f3b90505fec0a5f0d8", size = 2303007, upload-time = "2025-06-11T12:25:32.289Z" }, + { url = "https://files.pythonhosted.org/packages/7c/6c/c877b45f1463e37c11d045404e684fe93c4c44003e072df8ca8d3792e0c7/pydantic_core-2.35.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7513301947ec044bc30b94f98370b74757a63f557eea88141f6407aab5b738e9", size = 2014661, upload-time = "2025-06-11T12:25:33.937Z" }, + { url = "https://files.pythonhosted.org/packages/4b/95/79c414fe8da493cdeed68f1867424d5bb96d366f7742e161bc8d37e54893/pydantic_core-2.35.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bac4a92df466497b671538400c5b4acdf4eb6800cc07df2e410c07ac5c3adc70", size = 2165426, upload-time = "2025-06-11T12:25:35.689Z" }, + { url = "https://files.pythonhosted.org/packages/b6/c6/bd864b03c412cf87efa4a1f8ffb3118cc170939e59ad6d98dc2268ea3e43/pydantic_core-2.35.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0076916204e37c7d780349f84843d8aeaf7988851adfa4210631d2b91f8a35b3", size = 2126622, upload-time = "2025-06-11T12:25:39.248Z" }, + { url = "https://files.pythonhosted.org/packages/bd/e7/0be66d3b0f9617900fe39986337a0bf3b5e6c20be78d0ca7a577e2eb2e7b/pydantic_core-2.35.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:26ab8c37358fdffb524f7c35ec1722057a0c05f3f8ed00e853c4ebd56fc19e28", size = 2290530, upload-time = "2025-06-11T12:25:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/10/eb/225f0f8193bf11bf060524a8bfaec12857d2d1273647c90b7962d1adbe6b/pydantic_core-2.35.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:58d52a64d185575326772a0db02d42a535f8ea3146ac1e07b0d88ed53f2389fa", size = 2307306, upload-time = "2025-06-11T12:25:41.902Z" }, + { url = "https://files.pythonhosted.org/packages/5b/73/1a9bb502477689ae05a4a237b1ebc60a1e4e3ee7718a48d98cb397adf9d0/pydantic_core-2.35.1-cp311-cp311-win32.whl", hash = "sha256:805c43fb6d06da34eb080f380f62e3f511fed6be8eca8b277e7947bf47a0f9ca", size = 1947651, upload-time = "2025-06-11T12:25:43.387Z" }, + { url = "https://files.pythonhosted.org/packages/ee/79/ac9a7c603e50d8972c431a2293ecb437860ee34b4fed110988f9da1851fb/pydantic_core-2.35.1-cp311-cp311-win_amd64.whl", hash = "sha256:803902755bcef766c25afee0a7b3f5e709f5445f387888087cb0bffd99ded9e6", size = 1971009, upload-time = "2025-06-11T12:25:44.95Z" }, + { url = "https://files.pythonhosted.org/packages/9b/30/0502f8eee3db6463c9bf753b0d6ba90e04d2190a76ca49901a8a28cc8f94/pydantic_core-2.35.1-cp311-cp311-win_arm64.whl", hash = "sha256:9b81bf0b4903ca0b2e884b2252c941f37145973fa193fa6099f0acf18584af2f", size = 1952792, upload-time = "2025-06-11T12:25:46.429Z" }, + { url = "https://files.pythonhosted.org/packages/79/e0/db8b2501d44d630a07e650322eea6af6e29bce107852f45a722f1abc0f6c/pydantic_core-2.35.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d9fd22bdb2dc3d18660ee36af43ea198c1296011d16cbbd4ee6e5c3d07fcabf0", size = 2066136, upload-time = "2025-06-11T12:25:47.834Z" }, + { url = "https://files.pythonhosted.org/packages/69/02/425e9fe79276a137d13aca5279bd241cb71a9e33cd48b82cf4e9b8fd88df/pydantic_core-2.35.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2893800628d5cf15f669f084cc44d8bfad9fe97992453d0d678b29f635aa6019", size = 1856402, upload-time = "2025-06-11T12:25:49.469Z" }, + { url = "https://files.pythonhosted.org/packages/f6/12/8f7a3a211c8c4bb6c3fab628ee0214cbb17414bac34bad5d9d2829d2d0d9/pydantic_core-2.35.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ffb0045571ca255949c9e47068cda7b511fda24b8c89d1334afa521ff9ff77", size = 1923269, upload-time = "2025-06-11T12:25:51.339Z" }, + { url = "https://files.pythonhosted.org/packages/b7/a2/af13d877eac6ef7b95a9405427fd0ef3ead279646a5d9149376c8356902d/pydantic_core-2.35.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4927a4795bf00a770cb5d1acc086002f5a5b3d6ec80839bb44e3d99896136e5b", size = 2005723, upload-time = "2025-06-11T12:25:52.76Z" }, + { url = "https://files.pythonhosted.org/packages/90/a9/76eaa613b36e0fbf7f60550045181930c8b1d19afe52163f088ff987cbd3/pydantic_core-2.35.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21dce7e75e47859239c5e64e6db67af78045112e5fc0923c2610ecc2a44c5eb4", size = 2176167, upload-time = "2025-06-11T12:25:54.157Z" }, + { url = "https://files.pythonhosted.org/packages/84/5d/6ee15214dfcc807de4c8790da6e47a3d1b0bbb4fbbc76fe953c0c8cdc600/pydantic_core-2.35.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b030ce1cb2b6cd111b1f46f05eff6c5eec82df738f3cdaef304118806afd9292", size = 2292206, upload-time = "2025-06-11T12:25:56.036Z" }, + { url = "https://files.pythonhosted.org/packages/d7/d9/559fa50241070ef9945f80f8b6feca55956acf9d0411ebce776791d410a2/pydantic_core-2.35.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68db1ac1fd2a35a2967e696cb82f5b8d8c780b80bf2f2d9e9aeb2d7d3cd6d2ae", size = 2022850, upload-time = "2025-06-11T12:25:57.481Z" }, + { url = "https://files.pythonhosted.org/packages/e7/71/db3eda424d9b702615c77ae50df14f17f5189a9198274aec994f8da30e23/pydantic_core-2.35.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2daea8e75b3d86d385ef351e06e575fd0e253620d06154b557c274bd53d09ab9", size = 2145298, upload-time = "2025-06-11T12:25:59.36Z" }, + { url = "https://files.pythonhosted.org/packages/5e/02/810723db2f81ebb9c62db6680d64aa7778180b11c476751cdbb82736d573/pydantic_core-2.35.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:45b123e9dd870687f001a3b73db7285ba8077e15b6f1523ea604ec8cfd235784", size = 2102544, upload-time = "2025-06-11T12:26:00.893Z" }, + { url = "https://files.pythonhosted.org/packages/ce/dc/930c5baa8dc60f0f8307eb3f1f58059065d461a3ab1f1d607402485c7fe2/pydantic_core-2.35.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:bdc4bee29f211ed8ee5e417b0d6ce002aafe4bc4d7a849670a19cd232428978a", size = 2267755, upload-time = "2025-06-11T12:26:02.382Z" }, + { url = "https://files.pythonhosted.org/packages/49/47/bb245d6c22246885737b5ad929bec3e29a7d8078a4f734d3da741aab694d/pydantic_core-2.35.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3812567e431d00e6cbdf3d066abeb488ec4b6135395d2280d99f630c9acba8fa", size = 2286666, upload-time = "2025-06-11T12:26:03.874Z" }, + { url = "https://files.pythonhosted.org/packages/a5/bc/cdf079707ddf9d7a1828771a4c69d4381190f28e4bc94800e01ad3155db9/pydantic_core-2.35.1-cp312-cp312-win32.whl", hash = "sha256:b8098c00443d3dcdb33f3c6a0079c52eb721461d4429cae6e3165118fe5ecc46", size = 1921629, upload-time = "2025-06-11T12:26:05.381Z" }, + { url = "https://files.pythonhosted.org/packages/ac/15/b17c22ade13555a66c1017f1d610581473c648bffaaa3b3bfc386463ad60/pydantic_core-2.35.1-cp312-cp312-win_amd64.whl", hash = "sha256:44f8acc6108726cc90bcd08605d610e0b49736636854cf74eb2e3ce1df7242a8", size = 1980769, upload-time = "2025-06-11T12:26:07.365Z" }, + { url = "https://files.pythonhosted.org/packages/ae/7a/fb20fa55822c2808b7d3ee7350925271b7be41e29d2f9b39d6d3bd1cc14a/pydantic_core-2.35.1-cp312-cp312-win_arm64.whl", hash = "sha256:bba5c93dd92d8dd1cb5b95a19f4f27a353e5141694537781fd0359085ebf1e2d", size = 1933830, upload-time = "2025-06-11T12:26:09.295Z" }, + { url = "https://files.pythonhosted.org/packages/66/a1/9bbf3fc49322117084bc5e1aa510a1074b4d7eb5ced47b65dcbb8f6ae467/pydantic_core-2.35.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:461f2f770bab73a54cd4fa55da27c90f3840a6cd50ff77995642ebf3b9bad56c", size = 2071386, upload-time = "2025-06-11T12:26:10.847Z" }, + { url = "https://files.pythonhosted.org/packages/b7/df/1277a938e7a58e0865ebd374e8c6277b176d36b63f2935ef45d6f929ce4d/pydantic_core-2.35.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:767a6dadf1fcc6b7e41dd6d4920621256e0a477fb16f7e7fcea7dd1b64452c23", size = 1855096, upload-time = "2025-06-11T12:26:12.81Z" }, + { url = "https://files.pythonhosted.org/packages/b4/70/e4454c6b971982c3a0be7dcfb342c9ae096ce16e13e581318b98a1783ec5/pydantic_core-2.35.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c48328867d681916394731c62f479677dde07fc264488d492eefb221eece96e", size = 1926903, upload-time = "2025-06-11T12:26:14.349Z" }, + { url = "https://files.pythonhosted.org/packages/d4/2a/c1fa172ecb6fc8005c2f9b4aa83d2b36b3789f72507ec9dbe4f4cf7c4100/pydantic_core-2.35.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8f53822e5e2633fcff4fa07515d3f1b77ead733e9b9e98178cc1d625896623f2", size = 2014882, upload-time = "2025-06-11T12:26:15.889Z" }, + { url = "https://files.pythonhosted.org/packages/8a/1e/c3a08a435bbf860f2bf59b8fa8f0857fed5fb0b42233142a8d549e49cff9/pydantic_core-2.35.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:437726d7acbcf504e92ef817c7845c4230e06eb5793f49db0729d148543db9a9", size = 2179854, upload-time = "2025-06-11T12:26:17.492Z" }, + { url = "https://files.pythonhosted.org/packages/c3/1e/eca89d4dd50f6bb066d03cd23a055b05842a9fe03ab9f8283f0b3d7d60ab/pydantic_core-2.35.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b409369664f49beb41a3c2c92d0e1af4729f8884550d0b01dd81463d3c22c7", size = 2290727, upload-time = "2025-06-11T12:26:21.021Z" }, + { url = "https://files.pythonhosted.org/packages/a9/b7/f9a5dcb090ea6b7c5db0bfbbabb5ea1e327f1b3c485719b8095333b83e36/pydantic_core-2.35.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:634643a71266f1f49587aa6a675d05a0ad0f7ab92e58c5db801330f88bbe7d21", size = 2021039, upload-time = "2025-06-11T12:26:22.782Z" }, + { url = "https://files.pythonhosted.org/packages/6e/1c/e06fc0769e753b486bf4521c1d6d8275e75a9569e50d49b4996eea8c5269/pydantic_core-2.35.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c7e932521333b8529c9b41c7b49016c1a58ddd9f7b1370e6edf06d4f64ae989e", size = 2151451, upload-time = "2025-06-11T12:26:24.394Z" }, + { url = "https://files.pythonhosted.org/packages/2f/16/d8ddab7a0b33c61de7ed2c6e08a83e45f257206362b4dbe0b26b42060ee7/pydantic_core-2.35.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:1afc5a25f2e11c790f2a244538c42fd67b870cf070dac509996801f2455c17a2", size = 2105668, upload-time = "2025-06-11T12:26:26.661Z" }, + { url = "https://files.pythonhosted.org/packages/09/8e/8d6b13835884bfdb5c739ffe9c209746ca47a1fbf029b3dec89b855764ec/pydantic_core-2.35.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:cbf218e9589a5d4f1469f7af8a4bd8721d3db3bb1ef06bb001b54f3cc138532a", size = 2276617, upload-time = "2025-06-11T12:26:28.398Z" }, + { url = "https://files.pythonhosted.org/packages/23/01/3e4b49ee9186e56cbf183f23956a1fc9de538ab1f84624da5e11f2ffbc8b/pydantic_core-2.35.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:6431cb2c129bfb419ffef43cc915f13b2b855b80351b17fa6d0174908fb5dbd2", size = 2292685, upload-time = "2025-06-11T12:26:29.984Z" }, + { url = "https://files.pythonhosted.org/packages/26/ef/e4aaeb93bee1e8353e7bd2cf510cc453bda271b0c2db0502210ca3129145/pydantic_core-2.35.1-cp313-cp313-win32.whl", hash = "sha256:dbd775058ce2949bbdddc5e025fa7f5b52589f5c3254a6b6334ca60239e4ff56", size = 1930953, upload-time = "2025-06-11T12:26:31.713Z" }, + { url = "https://files.pythonhosted.org/packages/e7/d9/d34fb5d2ee0a19c27f7572076fbc3b716b27a9787f66beff57289c0f4e61/pydantic_core-2.35.1-cp313-cp313-win_amd64.whl", hash = "sha256:867fc87ec1c07e57eabbabce6fd63633f23977a2fac7606c66222d35d197b13e", size = 1980844, upload-time = "2025-06-11T12:26:33.602Z" }, + { url = "https://files.pythonhosted.org/packages/43/a8/a905194e9188b2580beebcd067b853e50e25a1888b21ef3c6c0a9adbd8d6/pydantic_core-2.35.1-cp313-cp313-win_arm64.whl", hash = "sha256:24005cd95198ca35b4d9a6b6d713502c3e2e9ec111abc99e4c69502618b2c6d8", size = 1940587, upload-time = "2025-06-11T12:26:35.763Z" }, + { url = "https://files.pythonhosted.org/packages/2a/0f/fb8a3bd86a09c6cc31c70f107a80cdd3536bdf5c7f6e23aa7d4bfd0ccc32/pydantic_core-2.35.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b8e69498fc8c1f6a9776779960da12d399a2a826d9f857723a022300dfdd9b4c", size = 1811516, upload-time = "2025-06-11T12:26:37.449Z" }, + { url = "https://files.pythonhosted.org/packages/db/9f/b97630373dc794c5463fab5df0942e6723f5096000be0fc4788aecd09bdd/pydantic_core-2.35.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26bf77255a1dc1d3f44927d35b64cd1034fba661b8740f00187378bd66bb0960", size = 1992413, upload-time = "2025-06-11T12:26:39.15Z" }, + { url = "https://files.pythonhosted.org/packages/a3/f9/ef42798818c247d9947ad24e3855ef4052bd2fcd6a3303aaf824618b127c/pydantic_core-2.35.1-cp313-cp313t-win_amd64.whl", hash = "sha256:ccf06a595368498a6be792b1b6f2ed3034423872657a1c84ff578825ec91cd89", size = 1944044, upload-time = "2025-06-11T12:26:40.906Z" }, + { url = "https://files.pythonhosted.org/packages/c5/6c/11aa67b2b3c19a473c851f4375ca6b8120a63a3783e2e89df2e1e52217ec/pydantic_core-2.35.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:549bf60752000998d2f894d142e632c3acdbcb1fa86cf365c7f7b7fb72d33cab", size = 2074973, upload-time = "2025-06-11T12:26:42.6Z" }, + { url = "https://files.pythonhosted.org/packages/ed/50/647acc440e5ec2eb72dfec111eec41e8c4e4e743ac549453d3b00d1aafdb/pydantic_core-2.35.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:5544fa4465f6c362d23120bed096436188217da43678617cc0958359049b816b", size = 1847944, upload-time = "2025-06-11T12:26:44.364Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1e/675ef7b162321957633440cf753c294402dcfc2a31f2b1c5e055dcfadb21/pydantic_core-2.35.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16c2f3624b222a5f3f0db601c7982d991550682f248f2b299c8def6b29eca1c5", size = 1924902, upload-time = "2025-06-11T12:26:46.076Z" }, + { url = "https://files.pythonhosted.org/packages/4f/d8/9eea60bc8d556d5137026e2944ffe37b5f3846a69d432a9208e9f07bb78a/pydantic_core-2.35.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a4ae43172e78dcd84d99e484038f6f84f7c677b4e2b8df01deb7f022903bb07c", size = 2017394, upload-time = "2025-06-11T12:26:48.094Z" }, + { url = "https://files.pythonhosted.org/packages/5e/75/5b8b740be488225520e42dc090dcf9c52c7b5a98e5c37d3905104d56020c/pydantic_core-2.35.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d1f242aaaa2b8931108d9890eabd194c412e0b5a10651ed631f685d46987f2e", size = 2180462, upload-time = "2025-06-11T12:26:49.914Z" }, + { url = "https://files.pythonhosted.org/packages/72/d7/6487a0e5581767c1494913b34795c015834f69ddf810519058190b75cb2a/pydantic_core-2.35.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f30321014ea6ee252ebc43f848bae6bde6e379f689b1cdb38087ce57cd31be", size = 2294552, upload-time = "2025-06-11T12:26:51.672Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b7/0575551861923caafc3a22c0eaeced8950e6df7b21f4aa93bc4d9810c3ce/pydantic_core-2.35.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8926dad1ac18f4668250ef62354b3535bd09869783511ddac0a0403dc90b10e7", size = 2017990, upload-time = "2025-06-11T12:26:53.408Z" }, + { url = "https://files.pythonhosted.org/packages/d9/bb/ad2c1d5ac08f7ef2009427ccfe4f50daa4332f114f997c63f659bf9a68c2/pydantic_core-2.35.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3c77ca9027604cb90471a45b642763478f337e477e9c3c9698c409d64303b70", size = 2153347, upload-time = "2025-06-11T12:26:55.2Z" }, + { url = "https://files.pythonhosted.org/packages/f0/df/dfcb2ed7454f177d6e068d586defaad1f4fff73823a1e185fd117daee7b1/pydantic_core-2.35.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:e48d89eb0fab2944362b387c6c942e48a735f1a6a90a8a77815c5410253cc4f7", size = 2104105, upload-time = "2025-06-11T12:26:56.983Z" }, + { url = "https://files.pythonhosted.org/packages/35/f8/553f0260b60eea962bdb49e4774522fdac3352504500ed0ad7c3e971299c/pydantic_core-2.35.1-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:8522ada751d21693d6758c7c5757de744fd62a91a374deb08dc173fb738655f7", size = 2279255, upload-time = "2025-06-11T12:26:58.85Z" }, + { url = "https://files.pythonhosted.org/packages/33/a6/41a3d82790c11880f2ca5a3a4e0c0c418b3b5101eac2ed0dfe0df5293ac5/pydantic_core-2.35.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:c8a1383d0a62622f9b1888e11b6c7e9ecd584d80e9e6fc2da0a8a1eec6365503", size = 2293867, upload-time = "2025-06-11T12:27:00.737Z" }, + { url = "https://files.pythonhosted.org/packages/00/99/9a0b6d814545944a9b7cccaf764a3745eb2da015ea46f1bb1606fbf36d21/pydantic_core-2.35.1-cp314-cp314-win32.whl", hash = "sha256:4d25858b79222eb8e0b3078858a2780f5e7a2b9742f8ba42308e6874b654b42e", size = 1933566, upload-time = "2025-06-11T12:27:02.528Z" }, + { url = "https://files.pythonhosted.org/packages/86/b5/97870eaad658cf5a501b008c07252ace6031b88b741c4e2afcf229740cc4/pydantic_core-2.35.1-cp314-cp314-win_amd64.whl", hash = "sha256:f57e0ab3db0ed2397b33ed88965f7aa71509bbeed7dee993555bb9194b57c5a0", size = 1975308, upload-time = "2025-06-11T12:27:04.362Z" }, + { url = "https://files.pythonhosted.org/packages/69/8b/557593ce15a5ab81eb0752428d697ee7ade497d3fce981f0611e1c919a70/pydantic_core-2.35.1-cp314-cp314-win_arm64.whl", hash = "sha256:c106e5c8377b7066232e7cb6e432bf5d94c55a135a082e160c29d8d350fcfdde", size = 1941096, upload-time = "2025-06-11T12:27:06.184Z" }, + { url = "https://files.pythonhosted.org/packages/60/e2/0320e3116098f39db38c64cc11cc948f757aa1524a5cbe815b3075f2e784/pydantic_core-2.35.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6a04af9b37d3be241a2f2b10c3db0abeaadaff818f8c96ff7ae9ad9ac78ab287", size = 1812480, upload-time = "2025-06-11T12:27:08.088Z" }, + { url = "https://files.pythonhosted.org/packages/9b/5d/49147336ab78db14c7d26685fb678d029fb6a47f2dbc5c4dccd1950e8f06/pydantic_core-2.35.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71c312eb422177818f31fed80e23606a02ab87f540327992b5cd10879a238ec8", size = 1992353, upload-time = "2025-06-11T12:27:09.962Z" }, + { url = "https://files.pythonhosted.org/packages/aa/90/35fd107cdffdadef00ea1f1e5288923e1f1df120abcbedc6d2854aa47378/pydantic_core-2.35.1-cp314-cp314t-win_amd64.whl", hash = "sha256:ae8fc5835a2e7134145a2f5f30a93a79a15ca2df140d9cff39b6a02d41834f8c", size = 1945328, upload-time = "2025-06-11T12:27:11.855Z" }, + { url = "https://files.pythonhosted.org/packages/ba/0e/bb8b9896313e20d0d346d2995d30421db7d0c1a3b3ee9229aa9913bc5bbd/pydantic_core-2.35.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:2db99237bbf87364e5d42d50b17234126b6f903f5183eb8a81efb9945c16878e", size = 2096856, upload-time = "2025-06-11T12:27:13.693Z" }, + { url = "https://files.pythonhosted.org/packages/a0/8d/ae5b382204a91d2e445714dd52caf318b7733c727d386b96b53f9347e809/pydantic_core-2.35.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3ff01c4690743e48a45d34f6dd038a2b05f5be2c7112aa68a8d6241483f5f153", size = 1913028, upload-time = "2025-06-11T12:27:15.576Z" }, + { url = "https://files.pythonhosted.org/packages/b3/c6/c8d9150642da8ba6d96cc6aaf628e146d6586d5753d4d7df006ffedcfb53/pydantic_core-2.35.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:945b99d199eea4e7bf13a3e0db4dfdfa90258b6890e4582c898dc6a8fa6ddc98", size = 1951188, upload-time = "2025-06-11T12:27:17.856Z" }, + { url = "https://files.pythonhosted.org/packages/c6/df/c1dab83bd64ac5ca0d69b539a5f575a1a51e9cecac9aba53818f7f97f9c2/pydantic_core-2.35.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ad47ce0ca62ac335c28a8f5ac5095dc9946776091a9381810933aa1aea7b5235", size = 2028941, upload-time = "2025-06-11T12:27:19.765Z" }, + { url = "https://files.pythonhosted.org/packages/45/b6/30a06882e504a6f3ad02d9bfa7fd439b8eef4ea00a2b3543faa2a37603a5/pydantic_core-2.35.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c85c72358aae138fcfa8ab1f6dfed37d4b6d948769856530bd1a2a8121d06a56", size = 2214758, upload-time = "2025-06-11T12:27:21.643Z" }, + { url = "https://files.pythonhosted.org/packages/96/86/6412d3504dcfcb5b09ef6547e84b7d39cca9e0592dee0bc947db50916b96/pydantic_core-2.35.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8cfcb78a0186eab12bee07af5c93fd043760fd88ee19bb55ba67f8234a6b73d", size = 2309010, upload-time = "2025-06-11T12:27:24.742Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c3/c275c315c33b01dd29ba4a4799b12b85148bcf993c53f39372ba15581b87/pydantic_core-2.35.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3790afd8b75634ba8f998019883d63d0cd2750ad9825b2bf08295b7a84d3aba7", size = 2018712, upload-time = "2025-06-11T12:27:26.68Z" }, + { url = "https://files.pythonhosted.org/packages/ad/46/5f8a45477aa8661b6e9c9f92763b510a136d7d42030ebc66d46ca37d7f10/pydantic_core-2.35.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:69009e2f298c21d7e4387c3f4fb70e8e6056be56a413083c3865b53339beae6d", size = 2164608, upload-time = "2025-06-11T12:27:28.597Z" }, + { url = "https://files.pythonhosted.org/packages/28/f3/cfdff118bff7f0703d430b0d73f8581121872aa0afc6c1b886eecd0ef6c8/pydantic_core-2.35.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:dac412e47641df63180e2b402ae9ed83e5c5c224f88c38f7df792fa0353ffe9b", size = 2128057, upload-time = "2025-06-11T12:27:30.509Z" }, + { url = "https://files.pythonhosted.org/packages/c3/4b/9157b57570a93c059955a6d024b9ef706dd451041f208300ec3c744944be/pydantic_core-2.35.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:716e5c98a5ada34dbd05c6a39e14f993e86edfc9c199a945ce67c544333751d6", size = 2289865, upload-time = "2025-06-11T12:27:32.849Z" }, + { url = "https://files.pythonhosted.org/packages/d8/a2/5187ddf19999fb0efbdc417dadc1ce76e50043a1408ebc90d3fab0c70b5e/pydantic_core-2.35.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a40a8395f56a511a353f0b867bf728a39e19dc9eb16c99c7e5786b110451c4c6", size = 2308446, upload-time = "2025-06-11T12:27:34.764Z" }, + { url = "https://files.pythonhosted.org/packages/d2/d4/5f1b0340f5aa0618678b44238935d16b255ed0f2778ef630bebe8c189463/pydantic_core-2.35.1-cp39-cp39-win32.whl", hash = "sha256:c6aea20e870f9dc38a5b657d3f691768f1703d557d6dbe03888336b1e8896ab7", size = 1947659, upload-time = "2025-06-11T12:27:36.683Z" }, + { url = "https://files.pythonhosted.org/packages/a1/b7/35a313b741fd32f29d936d281bd4712230567941d3aec991e7628ed22f87/pydantic_core-2.35.1-cp39-cp39-win_amd64.whl", hash = "sha256:c09cc83b0bb2a1858993134e4d292cd3df7e054240cc3ddb86db5cdb8a6ee254", size = 1974346, upload-time = "2025-06-11T12:27:38.709Z" }, + { url = "https://files.pythonhosted.org/packages/d9/b6/6cefe81e58d119dd409bd6e39e44e8894da6de8e5fbd0303f8b890ac1199/pydantic_core-2.35.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d0d0eb401dcf8518d23ab8417bab789b54464dd748b9a8bd36444989d04b10cf", size = 2095437, upload-time = "2025-06-11T12:27:40.652Z" }, + { url = "https://files.pythonhosted.org/packages/81/2b/6ed393422d33c37f7792c76acd20a05ddda66a0212494031a9a772925a34/pydantic_core-2.35.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3e8f3127c28f3ebe1fa807477a88607e1710720b6fc75454c5b35532b6161875", size = 1914563, upload-time = "2025-06-11T12:27:42.645Z" }, + { url = "https://files.pythonhosted.org/packages/17/a7/3253305cc2e8aef6c069fbbb34df85916f23d736e7fe10edbe840ab59303/pydantic_core-2.35.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29596424cf5890e45249c7b210dce07e49db6d8ba732ce5b93774f20058e8d90", size = 1951113, upload-time = "2025-06-11T12:27:44.68Z" }, + { url = "https://files.pythonhosted.org/packages/48/58/b8caed97556c422011ed6b5937a59fcf929be9fd76206e59c98d8c9f1fba/pydantic_core-2.35.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cb7d92170a2ee5734addebc68c8800146ecdb92bd17f416b22b998b42ceb075", size = 2138591, upload-time = "2025-06-11T12:27:46.835Z" }, + { url = "https://files.pythonhosted.org/packages/2d/f2/a9127f7c37a5d68cda715ae3879cfaa6c2ecbdbc430101df5e2f46c78a29/pydantic_core-2.35.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4a0ddee49f7ea6ae7ca96f4bd9500e2d43ea847cbd86a2383036f6641b2858ec", size = 2158957, upload-time = "2025-06-11T12:27:48.833Z" }, + { url = "https://files.pythonhosted.org/packages/2e/89/9fb1108e999352b8a92530cfcbe49b8eaf4be5e6503ef10585ed9616a088/pydantic_core-2.35.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:9ea864e96f5ca519573fb7527c210fc2250e24ce03c13b903ec4ec25a5ed13b8", size = 2126571, upload-time = "2025-06-11T12:27:50.826Z" }, + { url = "https://files.pythonhosted.org/packages/51/73/34a6e71cd1637620fd75a5d09b1154939ebb72b3154eacea395d8a9adf5d/pydantic_core-2.35.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:c57064f3a5139c52861cd2df67b91a09a6cb84da0fd0b41acf2f219caa8ebd02", size = 2289826, upload-time = "2025-06-11T12:27:53.197Z" }, + { url = "https://files.pythonhosted.org/packages/f1/45/f9ab68d14500384613b28b29e0bd8ebc0da750c23231ad19c28b5a0e1caa/pydantic_core-2.35.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d26792671413a35404f1c32f542a85d5b7c5b0d5f1b6581051e7404d7c73c8fb", size = 2309018, upload-time = "2025-06-11T12:27:55.19Z" }, + { url = "https://files.pythonhosted.org/packages/c1/83/93b912d0a1afc8fbfbab1512a058ab9652d2a6880116e6ec6fdb22741527/pydantic_core-2.35.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:934b9955053a3d788913767b298e0fd5053406fe4424553c1eeeab33ccd36aa8", size = 2130590, upload-time = "2025-06-11T12:27:57.225Z" }, + { url = "https://files.pythonhosted.org/packages/c4/27/e5a5f3bc8c3a8bf73ddf65335716b173100c0ba81795b45d4e54b6a71cb2/pydantic_core-2.35.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5ea03e36e9354613c59d0722c18fa14f49360a1a6127cebb1ea7d5d3f1ff11f7", size = 2096105, upload-time = "2025-06-11T12:27:59.65Z" }, + { url = "https://files.pythonhosted.org/packages/a2/7f/d1d7fdbf6018111f905ab3caffa565b7932e83b4ab9032ace0a386aa8a6a/pydantic_core-2.35.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:056ea807cc16c5d95ef99ba4d0f2142704fd0e0431143f4866ce188c6071a497", size = 1915042, upload-time = "2025-06-11T12:28:01.812Z" }, + { url = "https://files.pythonhosted.org/packages/3e/5f/e87aab572df29fb4c0691d8961358f8f3e0c74de0cdc01badfff9cc3353f/pydantic_core-2.35.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cba3b38293e6c83877cf080f7a6018c0829cf49ae7a774256709b86733676eb", size = 1950422, upload-time = "2025-06-11T12:28:03.899Z" }, + { url = "https://files.pythonhosted.org/packages/8c/7d/e44cd7d31d8356515a3e8ecba6b50cfb1421015ae8c684b0dfac409e58eb/pydantic_core-2.35.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd6de8f5480f65d1d07b14df7279a58b4815f9c793ddab82d17acf3fedf54f3b", size = 2138095, upload-time = "2025-06-11T12:28:06.01Z" }, + { url = "https://files.pythonhosted.org/packages/7e/39/0eb8e09434812f2efacb081c313c553f59bbaced9bd335e129ba5fc21234/pydantic_core-2.35.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e2d18bf5ac8128739627b57e39584d339cd1af81e10479299e650026f9c30f2d", size = 2160415, upload-time = "2025-06-11T12:28:08.526Z" }, + { url = "https://files.pythonhosted.org/packages/07/d8/fef1e4e8ebb53ece9987a5287f6abc93d4fdb6a0adc304ce8bc885eb3a91/pydantic_core-2.35.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b4da655303e05e475441036dc4336b9508b8830ea55ff269438589756ce6430d", size = 2126116, upload-time = "2025-06-11T12:28:10.756Z" }, + { url = "https://files.pythonhosted.org/packages/d8/81/22e58f8bceadbcae03c54a0c2fc6defa89216ab4adbe0a9356962e473700/pydantic_core-2.35.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:c0605a8b7edcbbe0a001b39e3b56db3beb71a924967db269983abd23feef313e", size = 2290771, upload-time = "2025-06-11T12:28:12.872Z" }, + { url = "https://files.pythonhosted.org/packages/6e/cf/0365333fab096477bb5736b4d87d4a86fccb6be96d0bfce2975f1c711dcf/pydantic_core-2.35.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:9cb6bbbd7e23258aafb4e10f6fddcc08ecb2f9d1cd0094be51c3a53804c24d95", size = 2308595, upload-time = "2025-06-11T12:28:14.969Z" }, + { url = "https://files.pythonhosted.org/packages/2e/76/6167f3f7f71db5002c6012456f051c3484b9e194c5f3bd0924205f1c3e46/pydantic_core-2.35.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c8596ed58dd7ec027603fe90d6c7cf6af1cf3d0807cfd6e679db7964c5934cf5", size = 2130669, upload-time = "2025-06-11T12:28:17.387Z" }, ] [[package]] @@ -2704,11 +2712,11 @@ wheels = [ [[package]] name = "typing-extensions" -version = "4.12.2" +version = "4.14.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321, upload-time = "2024-06-07T18:52:15.995Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d1/bc/51647cd02527e87d05cb083ccc402f93e441606ff1f01739a62c8ad09ba5/typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4", size = 107423, upload-time = "2025-06-02T14:52:11.399Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438, upload-time = "2024-06-07T18:52:13.582Z" }, + { url = "https://files.pythonhosted.org/packages/69/e0/552843e0d356fbb5256d21449fa957fa4eff3bbc135a74a691ee70c7c5da/typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af", size = 43839, upload-time = "2025-06-02T14:52:10.026Z" }, ] [[package]] From 43bbdc00373cdd7b208d67cfb61ec0c1678e4073 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 12 Jun 2025 21:25:04 +0200 Subject: [PATCH 068/106] Rebuild dataclass fields before schema generation (#11949) This applying roughly the same logic from #11388 for dataclasses. Also fix third-party tests using uv. --- .github/workflows/third-party.yml | 50 ++++++++++++----------- pydantic/_internal/_dataclasses.py | 3 ++ pydantic/_internal/_fields.py | 56 +++++++++++++++++++++++++- pydantic/_internal/_generate_schema.py | 30 ++++++++++---- pydantic/dataclasses.py | 9 +++++ tests/test_dataclasses.py | 20 +++++++++ 6 files changed, 135 insertions(+), 33 deletions(-) diff --git a/.github/workflows/third-party.yml b/.github/workflows/third-party.yml index 42c4220ed7c..461bdb388a8 100644 --- a/.github/workflows/third-party.yml +++ b/.github/workflows/third-party.yml @@ -8,6 +8,8 @@ # - Make sure Pydantic is installed in editable mode (e.g. `uv pip install -e ./pydantic-latest`) # so that the path appears in the `pip list` output (and so we can be assured Pydantic was properly # installed from the provided path). +# - If using `uv run`, make use to use the `--no-sync`, because uv has the nasty habit of syncing the venv +# on each `uv run` invocation, which will reinstall the locked `pydantic`/`pydantic-core` version. name: Third party tests on: @@ -61,14 +63,14 @@ jobs: - name: Install FastAPI dependencies run: | uv venv --python ${{ matrix.python-version }} - uv pip install -r requirements-tests.txt + uv pip install --no-progress -r requirements-tests.txt uv pip install -e ./pydantic-latest - name: List installed dependencies run: uv pip list - name: Run FastAPI tests - run: PYTHONPATH=./docs_src uv run --no-project pytest tests + run: PYTHONPATH=./docs_src uv run --no-project --no-sync pytest tests test-sqlmodel: name: Test SQLModel (main branch) on Python ${{ matrix.python-version }} @@ -101,14 +103,14 @@ jobs: - name: Install SQLModel dependencies run: | uv venv --python ${{ matrix.python-version }} - uv pip install -r requirements-tests.txt + uv pip install --no-progress -r requirements-tests.txt uv pip install -e ./pydantic-latest - name: List installed dependencies run: uv pip list - name: Run SQLModel tests - run: uv run --no-project pytest tests + run: uv run --no-project --no-sync pytest tests test-beanie: name: Test Beanie (main branch) on Python ${{ matrix.python-version }} @@ -232,7 +234,7 @@ jobs: - name: Install Pandera dependencies run: | pip install uv - uv sync --extra pandas --extra fastapi --extra pandas --group dev --group testing --group docs + uv sync --no-progress --extra pandas --extra fastapi --extra pandas --group dev --group testing --group docs uv pip uninstall --system pydantic pydantic-core uv pip install --system -e ./pydantic-latest @@ -242,7 +244,7 @@ jobs: - name: Run Pandera tests # Pandera's CI uses nox sessions which encapsulate the logic to install a specific Pydantic version. # Instead, manually run pytest (we run core, pandas and FastAPI tests): - run: uv run pytest tests/base tests/pandas tests/fastapi + run: uv run --no-sync pytest tests/base tests/pandas tests/fastapi test-odmantic: name: Test ODMantic (main branch) on Python ${{ matrix.python-version }} @@ -394,10 +396,10 @@ jobs: - name: šŸ”§ uv install working-directory: ./server run: | - uv sync --dev + uv sync --no-progress --dev uv pip uninstall pydantic uv pip install -e ./../pydantic-latest - uv run task generate_dev_jwks + uv run --no-sync task generate_dev_jwks - name: List installed dependencies working-directory: ./server @@ -405,15 +407,15 @@ jobs: - name: āš—ļø alembic migrate working-directory: ./server - run: uv run task db_migrate + run: uv run --no-sync task db_migrate - name: āš—ļø alembic check working-directory: ./server - run: uv run alembic check + run: uv run --no-sync alembic check - name: šŸ Run polar tests (pytest) working-directory: ./server - run: uv run pytest -n auto --no-cov + run: uv run --no-sync pytest -n auto --no-cov test-bentoml: name: Test BentoML (main branch) on Python ${{ matrix.python-version }} @@ -486,7 +488,7 @@ jobs: with: path: pydantic-latest - - name: Install UV + - name: Install uv uses: astral-sh/setup-uv@v6 with: python-version: ${{ matrix.python-version }} @@ -495,7 +497,7 @@ jobs: - name: Install Semantic Kernel dependencies working-directory: ./python run: | - uv sync --all-extras --dev --prerelease=if-necessary-or-explicit + uv sync --no-progress --all-extras --dev --prerelease=if-necessary-or-explicit uv pip uninstall pydantic uv pip install -e ../pydantic-latest @@ -505,7 +507,7 @@ jobs: - name: Run Semantic Kernel tests working-directory: ./python - run: uv run --frozen pytest ./tests/unit + run: uv run --frozen --no-sync pytest ./tests/unit test-langchain: name: Test LangChain (main branch) on Python ${{ matrix.python-version }} @@ -531,14 +533,16 @@ jobs: with: path: pydantic-latest - - name: Install UV + - name: Install uv uses: astral-sh/setup-uv@v6 with: python-version: ${{ matrix.python-version }} - name: Install LangChain dependencies run: | - uv sync --group test + uv sync --no-progress --group test + uv sync --no-progress --directory ./libs/core --group test + uv sync --no-progress --directory ./libs/langchain --group test uv pip uninstall pydantic uv pip install -e ./pydantic-latest @@ -547,11 +551,11 @@ jobs: - name: Run LangChain core tests working-directory: ./libs/core - run: make test + run: UV_NO_SYNC=1 make test - name: Run LangChain main tests working-directory: ./libs/langchain - run: make test + run: UV_NO_SYNC=1 make test test-dify: name: Test Dify (main branch) on Python ${{ matrix.python-version }} @@ -583,11 +587,11 @@ jobs: - name: Install uv shell: bash - run: pip install uv~=0.6.14 + run: pip install uv~=0.7.0 - name: Install Dify dependencies run: | - uv sync --directory api --dev + uv sync --no-progress --directory api --dev uv pip --directory api uninstall pydantic uv pip --directory api install -e ../pydantic-latest @@ -595,7 +599,7 @@ jobs: run: uv pip --directory api list - name: Run Dify unit tests - run: uv run --project api bash dev/pytest/pytest_unit_tests.sh + run: uv run --no-sync --project api bash dev/pytest/pytest_unit_tests.sh test-cadwyn: name: Test Cadwyn (main branch) on Python ${{ matrix.python-version }} @@ -628,14 +632,14 @@ jobs: - name: Install Cadwyn dependencies run: | - uv sync --dev --all-extras + uv sync --no-progress --dev --all-extras uv pip install -e ./pydantic-latest - name: List installed dependencies run: uv pip list - name: Run Cadwyn tests - run: uv run --no-project pytest tests docs_src + run: uv run --no-project --no-sync pytest tests docs_src create-issue-on-failure: diff --git a/pydantic/_internal/_dataclasses.py b/pydantic/_internal/_dataclasses.py index c3e4cc93618..97bbdf8bf09 100644 --- a/pydantic/_internal/_dataclasses.py +++ b/pydantic/_internal/_dataclasses.py @@ -54,6 +54,9 @@ class PydanticDataclass(StandardDataclass, typing.Protocol): __pydantic_serializer__: ClassVar[SchemaSerializer] __pydantic_validator__: ClassVar[SchemaValidator | PluggableSchemaValidator] + @classmethod + def __pydantic_fields_complete__(self) -> bool: ... + else: # See PyCharm issues https://youtrack.jetbrains.com/issue/PY-21915 # and https://youtrack.jetbrains.com/issue/PY-51428 diff --git a/pydantic/_internal/_fields.py b/pydantic/_internal/_fields.py index f81968c4489..224f6545f90 100644 --- a/pydantic/_internal/_fields.py +++ b/pydantic/_internal/_fields.py @@ -33,7 +33,7 @@ from ..fields import FieldInfo from ..main import BaseModel - from ._dataclasses import StandardDataclass + from ._dataclasses import PydanticDataclass, StandardDataclass from ._decorators import DecoratorInfos @@ -485,7 +485,7 @@ def collect_dataclass_fields( continue globalns, localns = ns_resolver.types_namespace - ann_type, _ = _typing_extra.try_eval_type(dataclass_field.type, globalns, localns) + ann_type, evaluated = _typing_extra.try_eval_type(dataclass_field.type, globalns, localns) if _typing_extra.is_classvar_annotation(ann_type): continue @@ -512,10 +512,16 @@ def collect_dataclass_fields( field_info = FieldInfo_.from_annotated_attribute( ann_type, dataclass_field.default, _source=AnnotationSource.DATACLASS ) + field_info._original_assignment = dataclass_field.default else: field_info = FieldInfo_.from_annotated_attribute( ann_type, dataclass_field, _source=AnnotationSource.DATACLASS ) + field_info._original_assignment = dataclass_field + + if not evaluated: + field_info._complete = False + field_info._original_annotation = ann_type fields[ann_name] = field_info update_field_from_config(config_wrapper, ann_name, field_info) @@ -545,6 +551,52 @@ def collect_dataclass_fields( return fields +def rebuild_dataclass_fields( + cls: type[PydanticDataclass], + *, + config_wrapper: ConfigWrapper, + ns_resolver: NsResolver, + typevars_map: Mapping[TypeVar, Any], +) -> dict[str, FieldInfo]: + """Rebuild the (already present) dataclass fields by trying to reevaluate annotations. + + This function should be called whenever a dataclass with incomplete fields is encountered. + + Raises: + NameError: If one of the annotations failed to evaluate. + + Note: + This function *doesn't* mutate the dataclass fields in place, as it can be called during + schema generation, where you don't want to mutate other dataclass's fields. + """ + FieldInfo_ = import_cached_field_info() + + rebuilt_fields: dict[str, FieldInfo] = {} + with ns_resolver.push(cls): + for f_name, field_info in cls.__pydantic_fields__.items(): + if field_info._complete: + rebuilt_fields[f_name] = field_info + else: + existing_desc = field_info.description + ann = _typing_extra.eval_type( + field_info._original_annotation, + *ns_resolver.types_namespace, + ) + ann = _generics.replace_types(ann, typevars_map) + new_field = FieldInfo_.from_annotated_attribute( + ann, + field_info._original_assignment, + _source=AnnotationSource.DATACLASS, + ) + + # The description might come from the docstring if `use_attribute_docstrings` was `True`: + new_field.description = new_field.description if new_field.description is not None else existing_desc + update_field_from_config(config_wrapper, f_name, new_field) + rebuilt_fields[f_name] = new_field + + return rebuilt_fields + + def is_valid_field_name(name: str) -> bool: return not name.startswith('_') diff --git a/pydantic/_internal/_generate_schema.py b/pydantic/_internal/_generate_schema.py index 0767a4b09e1..68bebd4b335 100644 --- a/pydantic/_internal/_generate_schema.py +++ b/pydantic/_internal/_generate_schema.py @@ -88,6 +88,7 @@ from ._docs_extraction import extract_docstrings_from_cls from ._fields import ( collect_dataclass_fields, + rebuild_dataclass_fields, rebuild_model_fields, takes_validated_data_argument, update_field_from_config, @@ -1779,14 +1780,27 @@ def _dataclass_schema( with self._ns_resolver.push(dataclass), self._config_wrapper_stack.push(config): if is_pydantic_dataclass(dataclass): - # Copy the field info instances to avoid mutating the `FieldInfo` instances - # of the generic dataclass generic origin (e.g. `apply_typevars_map` below). - # Note that we don't apply `deepcopy` on `__pydantic_fields__` because we - # don't want to copy the `FieldInfo` attributes: - fields = {f_name: copy(field_info) for f_name, field_info in dataclass.__pydantic_fields__.items()} - if typevars_map: - for field in fields.values(): - field.apply_typevars_map(typevars_map, *self._types_namespace) + if dataclass.__pydantic_fields_complete__(): + # Copy the field info instances to avoid mutating the `FieldInfo` instances + # of the generic dataclass generic origin (e.g. `apply_typevars_map` below). + # Note that we don't apply `deepcopy` on `__pydantic_fields__` because we + # don't want to copy the `FieldInfo` attributes: + fields = { + f_name: copy(field_info) for f_name, field_info in dataclass.__pydantic_fields__.items() + } + if typevars_map: + for field in fields.values(): + field.apply_typevars_map(typevars_map, *self._types_namespace) + else: + try: + fields = rebuild_dataclass_fields( + dataclass, + config_wrapper=self._config_wrapper, + ns_resolver=self._ns_resolver, + typevars_map=typevars_map or {}, + ) + except NameError as e: + raise PydanticUndefinedAnnotation.from_name_error(e) from e else: fields = collect_dataclass_fields( dataclass, diff --git a/pydantic/dataclasses.py b/pydantic/dataclasses.py index f6d817d8143..a2b092e7f49 100644 --- a/pydantic/dataclasses.py +++ b/pydantic/dataclasses.py @@ -309,6 +309,7 @@ def _dataclass_setstate(self: Any, state: list[Any]) -> None: original_cls.__firstlineno__ = firstlineno cls.__firstlineno__ = firstlineno cls.__qualname__ = original_cls.__qualname__ + cls.__pydantic_fields_complete__ = classmethod(_pydantic_fields_complete) cls.__pydantic_complete__ = False # `complete_dataclass` will set it to `True` if successful. # TODO `parent_namespace` is currently None, but we could do the same thing as Pydantic models: # fetch the parent ns using `parent_frame_namespace` (if the dataclass was defined in a function), @@ -319,6 +320,14 @@ def _dataclass_setstate(self: Any, state: list[Any]) -> None: return create_dataclass if _cls is None else create_dataclass(_cls) +def _pydantic_fields_complete(cls: type[PydanticDataclass]) -> bool: + """Return whether the fields where successfully collected (i.e. type hints were successfully resolves). + + This is a private property, not meant to be used outside Pydantic. + """ + return all(field_info._complete for field_info in cls.__pydantic_fields__.values()) + + __getattr__ = getattr_migration(__name__) if sys.version_info < (3, 11): diff --git a/tests/test_dataclasses.py b/tests/test_dataclasses.py index c5456003ef3..63e653c67b7 100644 --- a/tests/test_dataclasses.py +++ b/tests/test_dataclasses.py @@ -3129,3 +3129,23 @@ class A: a: int assert 'a' in A.__pydantic_fields__ # pyright: ignore[reportAttributeAccessIssue] + + +def test_dataclass_fields_rebuilt_before_schema_generation() -> None: + """https://github.com/pydantic/pydantic/issues/11947""" + + def update_schema(schema: dict[str, Any]) -> None: + schema['test'] = schema['title'] + + @pydantic.dataclasses.dataclass + class A: + a: """Annotated[ + Forward, + Field(field_title_generator=lambda name, _: name, json_schema_extra=update_schema) + ]""" = True + + Forward = bool + + ta = TypeAdapter(A) + + assert ta.json_schema()['properties']['a']['test'] == 'a' From bcd10f7e93ea06137a904dde3834b35c0ee941bb Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 12 Jun 2025 21:25:50 +0200 Subject: [PATCH 069/106] Always store the original field assignment on `FieldInfo` (#11946) --- pydantic/_internal/_fields.py | 7 ++++--- tests/test_forward_ref.py | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pydantic/_internal/_fields.py b/pydantic/_internal/_fields.py index 224f6545f90..a862f60ffeb 100644 --- a/pydantic/_internal/_fields.py +++ b/pydantic/_internal/_fields.py @@ -334,12 +334,13 @@ def collect_model_fields( # noqa: C901 ) field_info = FieldInfo_.from_annotated_attribute(ann_type, assigned_value, _source=AnnotationSource.CLASS) + # Store the original annotation and assignment value that should be used to rebuild the field info later. + # Note that the assignment is always stored as the annotation might contain a type var that is later + # parameterized with an unknown forward reference (and we'll need it to rebuild the field info): + field_info._original_assignment = original_assignment if not evaluated: field_info._complete = False - # Store the original annotation and assignment value that should be used to rebuild - # the field info later: field_info._original_annotation = ann_type - field_info._original_assignment = original_assignment elif 'final' in field_info._qualifiers and not field_info.is_required(): warnings.warn( f'Annotation {ann_name!r} is marked as final and has a default value. Pydantic treats {ann_name!r} as a ' diff --git a/tests/test_forward_ref.py b/tests/test_forward_ref.py index 10736083f4f..6f149652121 100644 --- a/tests/test_forward_ref.py +++ b/tests/test_forward_ref.py @@ -7,7 +7,7 @@ import pytest -from pydantic import BaseModel, PydanticUserError, TypeAdapter, ValidationError +from pydantic import BaseModel, Field, PydanticUserError, TypeAdapter, ValidationError def test_postponed_annotations(create_module): @@ -1239,11 +1239,11 @@ class SubChild(Child): ), ) def test_forward_ref_in_class_parameter() -> None: - """https://github.com/pydantic/pydantic/issues/11854""" + """https://github.com/pydantic/pydantic/issues/11854, https://github.com/pydantic/pydantic/issues/11920""" T = TypeVar('T') class Model(BaseModel, Generic[T]): - f: T + f: T = Field(json_schema_extra={'extra': 'value'}) M = Model[list['Undefined']] @@ -1253,6 +1253,7 @@ class Model(BaseModel, Generic[T]): assert M.__pydantic_fields_complete__ assert M.model_fields['f'].annotation == list[int] + assert M.model_fields['f'].json_schema_extra == {'extra': 'value'} def test_uses_the_local_namespace_when_generating_schema(): From de217f484600973c8bcba6a0f149ce2d5322739c Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 12 Jun 2025 21:43:36 +0200 Subject: [PATCH 070/106] Improve `PlainValidator` example (#11954) --- docs/migration.md | 2 +- pydantic/functional_validators.py | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/migration.md b/docs/migration.md index b3508118388..089d541ac28 100644 --- a/docs/migration.md +++ b/docs/migration.md @@ -447,7 +447,7 @@ However, in Pydantic V2, when a `TypeError` is raised in a validator, it is no l ```python import pytest -from pydantic import BaseModel, field_validator # or validator +from pydantic import BaseModel, field_validator class Model(BaseModel): diff --git a/pydantic/functional_validators.py b/pydantic/functional_validators.py index a7da43bd470..c299b4cbdab 100644 --- a/pydantic/functional_validators.py +++ b/pydantic/functional_validators.py @@ -174,11 +174,15 @@ class PlainValidator: from pydantic import BaseModel, PlainValidator + def validate(v: object) -> int: + if not isinstance(v, (int, str)): + raise ValueError(f'Expected int or str, go {type(v)}') + + return int(v) + 1 + MyInt = Annotated[ int, - PlainValidator( - lambda v: int(v) + 1, json_schema_input_type=Union[str, int] # (1)! - ), + PlainValidator(validate, json_schema_input_type=Union[str, int]), # (1)! ] class Model(BaseModel): @@ -192,7 +196,7 @@ class Model(BaseModel): ``` 1. In this example, we've specified the `json_schema_input_type` as `Union[str, int]` which indicates to the JSON schema - generator that in validation mode, the input type for the `a` field can be either a `str` or an `int`. + generator that in validation mode, the input type for the `a` field can be either a [`str`][] or an [`int`][]. """ func: core_schema.NoInfoValidatorFunction | core_schema.WithInfoValidatorFunction From f0e1d049fde6f9c4c0ce9b873b9f3a2040e4d7b2 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 12 Jun 2025 21:49:18 +0200 Subject: [PATCH 071/106] Do not implicitly convert after model validators to class methods (#11957) --- pydantic/functional_validators.py | 5 +++-- tests/test_model_validator.py | 12 +++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/pydantic/functional_validators.py b/pydantic/functional_validators.py index c299b4cbdab..6dfea7f32ef 100644 --- a/pydantic/functional_validators.py +++ b/pydantic/functional_validators.py @@ -716,8 +716,9 @@ def verify_square(self) -> Self: """ def dec(f: Any) -> _decorators.PydanticDescriptorProxy[Any]: - # auto apply the @classmethod decorator - f = _decorators.ensure_classmethod_based_on_signature(f) + # auto apply the @classmethod decorator (except for *after* validators, which should be instance methods): + if mode != 'after': + f = _decorators.ensure_classmethod_based_on_signature(f) dec_info = _decorators.ModelValidatorDecoratorInfo(mode=mode) return _decorators.PydanticDescriptorProxy(f, dec_info) diff --git a/tests/test_model_validator.py b/tests/test_model_validator.py index d4e9f8bcc48..dfca96c7461 100644 --- a/tests/test_model_validator.py +++ b/tests/test_model_validator.py @@ -4,7 +4,7 @@ import pytest -from pydantic import BaseModel, ValidationInfo, ValidatorFunctionWrapHandler, model_validator +from pydantic import BaseModel, PydanticUserError, ValidationInfo, ValidatorFunctionWrapHandler, model_validator def test_model_validator_wrap() -> None: @@ -136,3 +136,13 @@ def validate_model_after(self) -> Model: Model.model_validate({'inner': {'inner': {'inner': None}}}) assert calls == ['before'] * 3 + ['after'] * 3 calls.clear() + + +def test_after_validator_wrong_signature() -> None: + with pytest.raises(PydanticUserError): + + class Model(BaseModel): + @model_validator(mode='after') + # This used to be converted into a classmethod, resulting + # in this inconsistent signature still accepted: + def validator(cls, model, info): ... From fb6117acda60ea9ea0e933eb9df1ddf95aa646e7 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 12 Jun 2025 21:50:38 +0200 Subject: [PATCH 072/106] Remove unneeded logic in `UuidVersion` (#11940) --- pydantic/types.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/pydantic/types.py b/pydantic/types.py index b5c4fd6060b..28718c433db 100644 --- a/pydantic/types.py +++ b/pydantic/types.py @@ -1142,7 +1142,7 @@ class UuidVersion: Use this class as an annotation via [`Annotated`](https://docs.python.org/3/library/typing.html#typing.Annotated), as seen below. Attributes: - uuid_version: The version of the UUID. Must be one of 1, 3, 4, 5, or 7. + uuid_version: The version of the UUID. Must be one of 1, 3, 4, 5, 6, 7 or 8. Example: ```python @@ -1166,15 +1166,10 @@ def __get_pydantic_json_schema__( return field_schema def __get_pydantic_core_schema__(self, source: Any, handler: GetCoreSchemaHandler) -> core_schema.CoreSchema: - if isinstance(self, source): - # used directly as a type - return core_schema.uuid_schema(version=self.uuid_version) - else: - # update existing schema with self.uuid_version - schema = handler(source) - _check_annotated_type(schema['type'], 'uuid', self.__class__.__name__) - schema['version'] = self.uuid_version # type: ignore - return schema + schema = handler(source) + _check_annotated_type(schema['type'], 'uuid', self.__class__.__name__) + schema['version'] = self.uuid_version # type: ignore + return schema def __hash__(self) -> int: return hash(type(self.uuid_version)) From 9d6b2bfd74c8f42cac5a17c8031ff08d50bf5579 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Fri, 13 Jun 2025 09:55:01 +0200 Subject: [PATCH 073/106] Prepare release v2.11.6 (#11974) --- CITATION.cff | 4 ++-- HISTORY.md | 11 +++++++++++ pydantic/version.py | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 3b099f3c0c9..545dc131ccc 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -44,5 +44,5 @@ keywords: - hints - typing license: MIT -version: v2.11.5 -date-released: 2025-05-22 +version: v2.11.6 +date-released: 2025-06-13 diff --git a/HISTORY.md b/HISTORY.md index 28fe085eff1..7f19611062c 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,17 @@ +## v2.11.6 (2025-06-13) + +[GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.6) + +### What's Changed + +#### Fixes + +* Rebuild dataclass fields before schema generation by @Viicos in [#11949](https://github.com/pydantic/pydantic/pull/11949) +* Always store the original field assignment on `FieldInfo` by @Viicos in [#11946](https://github.com/pydantic/pydantic/pull/11946) + ## v2.11.5 (2025-05-22) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.5) diff --git a/pydantic/version.py b/pydantic/version.py index 468c2542625..df087ff921f 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -6,7 +6,7 @@ __all__ = 'VERSION', 'version_info' -VERSION = '2.11.5' +VERSION = '2.11.6' """The version of Pydantic.""" From 638d04757f18aa8157c0fd3890127f5a7fac3aa1 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Fri, 13 Jun 2025 17:55:11 +0200 Subject: [PATCH 074/106] Do not use deprecated methods as default field values (#11914) --- pydantic/_internal/_fields.py | 31 +++++++++++++++++++++++++++++++ tests/test_main.py | 15 +++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/pydantic/_internal/_fields.py b/pydantic/_internal/_fields.py index a862f60ffeb..e99640631d9 100644 --- a/pydantic/_internal/_fields.py +++ b/pydantic/_internal/_fields.py @@ -199,6 +199,22 @@ def update_field_from_config(config_wrapper: ConfigWrapper, field_name: str, fie _apply_alias_generator_to_field_info(config_wrapper.alias_generator, field_name, field_info) +_deprecated_method_names = {'dict', 'json', 'copy', '_iter', '_copy_and_set_values', '_calculate_keys'} + +_deprecated_classmethod_names = { + 'parse_obj', + 'parse_raw', + 'parse_file', + 'from_orm', + 'construct', + 'schema', + 'schema_json', + 'validate', + 'update_forward_refs', + '_get_value', +} + + def collect_model_fields( # noqa: C901 cls: type[BaseModel], config_wrapper: ConfigWrapper, @@ -231,6 +247,7 @@ def collect_model_fields( # noqa: C901 - If a field shadows an attribute in the parent model. """ FieldInfo_ = import_cached_field_info() + BaseModel_ = import_cached_base_model() bases = cls.__bases__ parent_fields_lookup: dict[str, FieldInfo] = {} @@ -265,6 +282,20 @@ def collect_model_fields( # noqa: C901 continue assigned_value = getattr(cls, ann_name, PydanticUndefined) + if assigned_value is not PydanticUndefined and ( + # One of the deprecated instance methods was used as a field name (e.g. `dict()`): + any(getattr(BaseModel_, depr_name, None) is assigned_value for depr_name in _deprecated_method_names) + # One of the deprecated class methods was used as a field name (e.g. `schema()`): + or ( + hasattr(assigned_value, '__func__') + and any( + getattr(getattr(BaseModel_, depr_name, None), '__func__', None) is assigned_value.__func__ # pyright: ignore[reportAttributeAccessIssue] + for depr_name in _deprecated_classmethod_names + ) + ) + ): + # Then `assigned_value` would be the method, even though no default was specified: + assigned_value = PydanticUndefined if not is_valid_field_name(ann_name): continue diff --git a/tests/test_main.py b/tests/test_main.py index faeb30b5797..accd2ccca50 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -3498,6 +3498,21 @@ class ChildWithRedefinedField(BaseModel, Parent): foo: bool = True +def test_field_name_deprecated_method_name() -> None: + """https://github.com/pydantic/pydantic/issues/11912""" + + with pytest.warns(UserWarning): + + class Model(BaseModel): + # `collect_model_fields()` will special case these to not use + # the deprecated methods as default values: + dict: int + schema: str + + assert Model.model_fields['dict'].is_required() + assert Model.model_fields['schema'].is_required() + + def test_eval_type_backport(): class Model(BaseModel): foo: 'list[int | str]' From 11a24efffa70f0cd7447ff9ef897d329b9f2a184 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Sat, 14 Jun 2025 10:17:22 +0200 Subject: [PATCH 075/106] Prepare release v2.11.7 (#11981) --- CITATION.cff | 4 ++-- HISTORY.md | 10 ++++++++++ pydantic/version.py | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 545dc131ccc..3dd131fa610 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -44,5 +44,5 @@ keywords: - hints - typing license: MIT -version: v2.11.6 -date-released: 2025-06-13 +version: v2.11.7 +date-released: 2025-06-14 diff --git a/HISTORY.md b/HISTORY.md index 7f19611062c..b2c5b5052d6 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,16 @@ +## v2.11.7 (2025-06-14) + +[GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.7) + +### What's Changed + +#### Fixes + +* Copy `FieldInfo` instance if necessary during `FieldInfo` build by @Viicos in [#11898](https://github.com/pydantic/pydantic/pull/11898) + ## v2.11.6 (2025-06-13) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.6) diff --git a/pydantic/version.py b/pydantic/version.py index df087ff921f..9ce824ee013 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -6,7 +6,7 @@ __all__ = 'VERSION', 'version_info' -VERSION = '2.11.6' +VERSION = '2.11.7' """The version of Pydantic.""" From 565cea9547bd36238ce155087785042e2f976f35 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Sat, 14 Jun 2025 10:45:01 +0200 Subject: [PATCH 076/106] Refactor `FieldInfo` creation implementation (#11898) The main thing being done here is the added `_construct()` classmethod, that centralizes most of the merging logic and avoids repetition (which actually wasn't mirrored in every code path, that's why many inconsistencies existed depending on whether you assigned a Field() to an attribute). We avoid copying `FieldInfo` instances everywhere, and doing buggy metadata handling. - Bump `typing-inspection` (Required to fix a type checking issue) - Centralize `FieldInfo` building logic in a `_construct()` method - Update `json_schema_extra` warning test The existing implementation did not warn when a callable was used first, then a dict. Also use a plain `UserWarning` as `PydanticJsonSchemaWarning` is meant to be used *during* JSON Schema generation. - Remove assignment copy hack in model fields collection - Fix `FieldInfo` copy implementation - Mark `FieldInfo` as `@final`, deprecate `merge_field_infos()` (only for type checkers) - Special case FastAPI - Update and add many regression tests --- pydantic/_internal/_fields.py | 11 +- pydantic/fields.py | 216 ++++++++++++++++++++---------- tests/test_annotated.py | 22 --- tests/test_deprecated_fields.py | 13 +- tests/test_discriminated_union.py | 44 ++++++ tests/test_fields.py | 93 ++++++++++++- tests/test_json_schema.py | 11 +- uv.lock | 6 +- 8 files changed, 303 insertions(+), 113 deletions(-) diff --git a/pydantic/_internal/_fields.py b/pydantic/_internal/_fields.py index e99640631d9..ed64bb3b375 100644 --- a/pydantic/_internal/_fields.py +++ b/pydantic/_internal/_fields.py @@ -357,18 +357,15 @@ def collect_model_fields( # noqa: C901 # Note that we only do this for method descriptors for now, we might want to # extend this to any descriptor in the future (by simply checking for # `hasattr(assigned_value.default, '__get__')`). - assigned_value.default = assigned_value.default.__get__(None, cls) - - # The `from_annotated_attribute()` call below mutates the assigned `Field()`, so make a copy: - original_assignment = ( - copy(assigned_value) if not evaluated and isinstance(assigned_value, FieldInfo_) else assigned_value - ) + default = assigned_value.default.__get__(None, cls) + assigned_value.default = default + assigned_value._attributes_set['default'] = default field_info = FieldInfo_.from_annotated_attribute(ann_type, assigned_value, _source=AnnotationSource.CLASS) # Store the original annotation and assignment value that should be used to rebuild the field info later. # Note that the assignment is always stored as the annotation might contain a type var that is later # parameterized with an unknown forward reference (and we'll need it to rebuild the field info): - field_info._original_assignment = original_assignment + field_info._original_assignment = assigned_value if not evaluated: field_info._complete = False field_info._original_annotation = ann_type diff --git a/pydantic/fields.py b/pydantic/fields.py index cdcd5d56e00..7b0b73f73fc 100644 --- a/pydantic/fields.py +++ b/pydantic/fields.py @@ -10,13 +10,13 @@ from copy import copy from dataclasses import Field as DataclassField from functools import cached_property -from typing import Annotated, Any, ClassVar, Literal, TypeVar, cast, overload +from typing import Annotated, Any, ClassVar, Literal, TypeVar, cast, final, overload from warnings import warn import annotated_types import typing_extensions from pydantic_core import PydanticUndefined -from typing_extensions import TypeAlias, Unpack, deprecated +from typing_extensions import Self, TypeAlias, Unpack, deprecated from typing_inspection import typing_objects from typing_inspection.introspection import UNKNOWN, AnnotationSource, ForbiddenQualifier, Qualifier, inspect_annotation @@ -97,6 +97,7 @@ class _FieldInfoInputs(_FromFieldInfoInputs, total=False): default: Any +@final class FieldInfo(_repr.Representation): """This class holds information about a field. @@ -213,7 +214,7 @@ def __init__(self, **kwargs: Unpack[_FieldInfoInputs]) -> None: See the signature of `pydantic.fields.Field` for more details about the expected arguments. """ - self._attributes_set = {k: v for k, v in kwargs.items() if v is not _Unset} + self._attributes_set = {k: v for k, v in kwargs.items() if v is not _Unset and k not in self.metadata_lookup} kwargs = {k: _DefaultValues.get(k) if v is _Unset else v for k, v in kwargs.items()} # type: ignore self.annotation = kwargs.get('annotation') @@ -340,30 +341,12 @@ class MyModel(pydantic.BaseModel): final = 'final' in inspected_ann.qualifiers metadata = inspected_ann.metadata - if not metadata: - # No metadata, e.g. `field: int`, or `field: Final[str]`: - field_info = FieldInfo(annotation=type_expr, frozen=final or None) - field_info._qualifiers = inspected_ann.qualifiers - return field_info - - # With metadata, e.g. `field: Annotated[int, Field(...), Gt(1)]`: - field_info_annotations = [a for a in metadata if isinstance(a, FieldInfo)] - field_info = FieldInfo.merge_field_infos(*field_info_annotations, annotation=type_expr) - - new_field_info = copy(field_info) - new_field_info.annotation = type_expr - new_field_info.frozen = final or field_info.frozen - field_metadata: list[Any] = [] - for a in metadata: - if typing_objects.is_deprecated(a): - new_field_info.deprecated = a.message - elif not isinstance(a, FieldInfo): - field_metadata.append(a) - else: - field_metadata.extend(a.metadata) - new_field_info.metadata = field_metadata - new_field_info._qualifiers = inspected_ann.qualifiers - return new_field_info + attr_overrides = {'annotation': type_expr} + if final: + attr_overrides['frozen'] = True + field_info = FieldInfo._construct(metadata, **attr_overrides) + field_info._qualifiers = inspected_ann.qualifiers + return field_info @staticmethod def from_annotated_attribute( @@ -417,58 +400,130 @@ class MyModel(pydantic.BaseModel): final = 'final' in inspected_ann.qualifiers metadata = inspected_ann.metadata - if isinstance(default, FieldInfo): - # e.g. `field: int = Field(...)` - default.annotation = type_expr - default.metadata += metadata - merged_default = FieldInfo.merge_field_infos( - *[x for x in metadata if isinstance(x, FieldInfo)], - default, - annotation=default.annotation, - ) - merged_default.frozen = final or merged_default.frozen - merged_default._qualifiers = inspected_ann.qualifiers - return merged_default - - if isinstance(default, dataclasses.Field): - # `collect_dataclass_fields()` passes the dataclass Field as a default. - pydantic_field = FieldInfo._from_dataclass_field(default) - pydantic_field.annotation = type_expr - pydantic_field.metadata += metadata - pydantic_field = FieldInfo.merge_field_infos( - *[x for x in metadata if isinstance(x, FieldInfo)], - pydantic_field, - annotation=pydantic_field.annotation, - ) - pydantic_field.frozen = final or pydantic_field.frozen - pydantic_field.init_var = 'init_var' in inspected_ann.qualifiers - pydantic_field.init = getattr(default, 'init', None) - pydantic_field.kw_only = getattr(default, 'kw_only', None) - pydantic_field._qualifiers = inspected_ann.qualifiers - return pydantic_field - - if not metadata: - # No metadata, e.g. `field: int = ...`, or `field: Final[str] = ...`: - field_info = FieldInfo(annotation=type_expr, default=default, frozen=final or None) - field_info._qualifiers = inspected_ann.qualifiers + # HACK 1: the order in which the metadata is merged is inconsistent; we need to prepend + # metadata from the assignment at the beginning of the metadata. Changing this is only + # possible in v3 (at least). See https://github.com/pydantic/pydantic/issues/10507 + prepend_metadata: list[Any] | None = None + attr_overrides = {'annotation': type_expr} + if final: + attr_overrides['frozen'] = True + + # HACK 2: FastAPI is subclassing `FieldInfo` and historically expected the actual + # instance's type to be preserved when constructing new models with its subclasses as assignments. + # This code is never reached by Pydantic itself, and in an ideal world this shouldn't be necessary. + if not metadata and isinstance(default, FieldInfo) and type(default) is not FieldInfo: + field_info = default._copy() + field_info._attributes_set.update(attr_overrides) + for k, v in attr_overrides.items(): + setattr(field_info, k, v) return field_info - # With metadata, e.g. `field: Annotated[int, Field(...), Gt(1)] = ...`: - field_infos = [a for a in metadata if isinstance(a, FieldInfo)] - field_info = FieldInfo.merge_field_infos(*field_infos, annotation=type_expr, default=default) - field_metadata: list[Any] = [] - for a in metadata: - if typing_objects.is_deprecated(a): - field_info.deprecated = a.message - elif not isinstance(a, FieldInfo): - field_metadata.append(a) - else: - field_metadata.extend(a.metadata) - field_info.metadata = field_metadata + if isinstance(default, FieldInfo): + default_copy = default._copy() # Copy unnecessary when we remove HACK 1. + prepend_metadata = default_copy.metadata + default_copy.metadata = [] + metadata = metadata + [default_copy] + elif isinstance(default, dataclasses.Field): + from_field = FieldInfo._from_dataclass_field(default) + prepend_metadata = from_field.metadata # Unnecessary when we remove HACK 1. + from_field.metadata = [] + metadata = metadata + [from_field] + if 'init_var' in inspected_ann.qualifiers: + attr_overrides['init_var'] = True + if (init := getattr(default, 'init', None)) is not None: + attr_overrides['init'] = init + if (kw_only := getattr(default, 'kw_only', None)) is not None: + attr_overrides['kw_only'] = kw_only + else: + # `default` is the actual default value + attr_overrides['default'] = default + + field_info = FieldInfo._construct( + prepend_metadata + metadata if prepend_metadata is not None else metadata, **attr_overrides + ) field_info._qualifiers = inspected_ann.qualifiers return field_info + @classmethod + def _construct(cls, metadata: list[Any], **attr_overrides: Any) -> Self: + """Construct the final `FieldInfo` instance, by merging the possibly existing `FieldInfo` instances from the metadata. + + With the following example: + + ```python {test="skip" lint="skip"} + class Model(BaseModel): + f: Annotated[int, Gt(1), Field(description='desc', lt=2)] + ``` + + `metadata` refers to the metadata elements of the `Annotated` form. This metadata is iterated over from left to right: + + - If the element is a `Field()` function (which is itself a `FieldInfo` instance), the field attributes (such as + `description`) are saved to be set on the final `FieldInfo` instance. + On the other hand, some kwargs (such as `lt`) are stored as `metadata` (see `FieldInfo.__init__()`, calling + `FieldInfo._collect_metadata()`). In this case, the final metadata list is extended with the one from this instance. + - Else, the element is considered as a single metadata object, and is appended to the final metadata list. + + Args: + metadata: The list of metadata elements to merge together. If the `FieldInfo` instance to be constructed is for + a field with an assigned `Field()`, this `Field()` assignment should be added as the last element of the + provided metadata. + **attr_overrides: Extra attributes that should be set on the final merged `FieldInfo` instance. + + Returns: + The final merged `FieldInfo` instance. + """ + merged_metadata: list[Any] = [] + merged_kwargs: dict[str, Any] = {} + + for meta in metadata: + if isinstance(meta, FieldInfo): + merged_metadata.extend(meta.metadata) + + new_js_extra: JsonDict | None = None + current_js_extra = meta.json_schema_extra + if current_js_extra is not None and 'json_schema_extra' in merged_kwargs: + # We need to merge `json_schema_extra`'s: + existing_js_extra = merged_kwargs['json_schema_extra'] + if isinstance(existing_js_extra, dict): + if isinstance(current_js_extra, dict): + new_js_extra = { + **existing_js_extra, + **current_js_extra, + } + elif callable(current_js_extra): + warn( + 'Composing `dict` and `callable` type `json_schema_extra` is not supported. ' + 'The `callable` type is being ignored. ' + "If you'd like support for this behavior, please open an issue on pydantic.", + UserWarning, + ) + elif callable(existing_js_extra) and isinstance(current_js_extra, dict): + warn( + 'Composing `dict` and `callable` type `json_schema_extra` is not supported. ' + 'The `callable` type is being ignored. ' + "If you'd like support for this behavior, please open an issue on pydantic.", + UserWarning, + ) + + merged_kwargs.update(meta._attributes_set) + if new_js_extra is not None: + merged_kwargs['json_schema_extra'] = new_js_extra + elif typing_objects.is_deprecated(meta): + merged_kwargs['deprecated'] = meta + else: + merged_metadata.append(meta) + + merged_kwargs.update(attr_overrides) + merged_field_info = cls(**merged_kwargs) + merged_field_info.metadata = merged_metadata + return merged_field_info + @staticmethod + @typing_extensions.deprecated( + "The 'merge_field_infos()' method is deprecated and will be removed in a future version. " + 'If you relied on this method, please open an issue in the Pydantic issue tracker.', + category=None, + ) def merge_field_infos(*field_infos: FieldInfo, **overrides: Any) -> FieldInfo: """Merge `FieldInfo` instances keeping only explicitly set attributes. @@ -479,7 +534,7 @@ def merge_field_infos(*field_infos: FieldInfo, **overrides: Any) -> FieldInfo: """ if len(field_infos) == 1: # No merging necessary, but we still need to make a copy and apply the overrides - field_info = copy(field_infos[0]) + field_info = field_infos[0]._copy() field_info._attributes_set.update(overrides) default_override = overrides.pop('default', PydanticUndefined) @@ -700,6 +755,19 @@ def apply_typevars_map( self._complete = False self._original_annotation = self.annotation + def _copy(self) -> Self: + """Return a copy of the `FieldInfo` instance.""" + # Note: we can't define a custom `__copy__()`, as `FieldInfo` is being subclassed + # by some third-party libraries with extra attributes defined (and as `FieldInfo` + # is slotted, we can't make a copy of the `__dict__`). + copied = copy(self) + for attr_name in ('metadata', '_attributes_set', '_qualifiers'): + # Apply "deep-copy" behavior on collections attributes: + value = getattr(copied, attr_name).copy() + setattr(copied, attr_name, value) + + return copied + def __repr_args__(self) -> ReprArgs: yield 'annotation', _repr.PlainRepr(_repr.display_as_type(self.annotation)) yield 'required', self.is_required() diff --git a/tests/test_annotated.py b/tests/test_annotated.py index 52e09d8b8ac..48cb2d94242 100644 --- a/tests/test_annotated.py +++ b/tests/test_annotated.py @@ -505,28 +505,6 @@ class AnnotatedFieldModel(BaseModel): } ] - # Ensure that the inner annotation does not override the outer, even for metadata: - class AnnotatedFieldModel2(BaseModel): - foo: 'Annotated[String, Field(min_length=3)]' = Field(description='hello', min_length=2) - - AnnotatedFieldModel2(foo='00') - - class AnnotatedFieldModel4(BaseModel): - foo: 'Annotated[String, Field(min_length=3)]' = Field(description='hello', min_length=4) - - with pytest.raises(ValidationError) as exc_info: - AnnotatedFieldModel4(foo='00') - - assert exc_info.value.errors(include_url=False) == [ - { - 'loc': ('foo',), - 'input': '00', - 'ctx': {'min_length': 4}, - 'msg': 'String should have at least 4 characters', - 'type': 'string_too_short', - } - ] - def test_tzinfo_validator_example_pattern() -> None: """Test that tzinfo custom validator pattern works as explained in the examples/validators docs.""" diff --git a/tests/test_deprecated_fields.py b/tests/test_deprecated_fields.py index ec26fe2625f..b17f037ede2 100644 --- a/tests/test_deprecated_fields.py +++ b/tests/test_deprecated_fields.py @@ -252,8 +252,19 @@ class Model(BaseModel): Test = int Model.model_rebuild() - assert Model.model_fields['a'].deprecated == 'test' + assert isinstance(Model.model_fields['a'].deprecated, deprecated) + assert Model.model_fields['a'].deprecated.message == 'test' m = Model() pytest.warns(DeprecationWarning, lambda: m.a, match='test') + + +def test_deprecated_field_with_assignment() -> None: + class Model(BaseModel): + # A buggy implementation made it so that deprecated wouldn't + # appear on the `FieldInfo`: + a: Annotated[int, deprecated('test')] = Field(default=1) + + assert isinstance(Model.model_fields['a'].deprecated, deprecated) + assert Model.model_fields['a'].deprecated.message == 'test' diff --git a/tests/test_discriminated_union.py b/tests/test_discriminated_union.py index fe21fabf4fc..41eecf04491 100644 --- a/tests/test_discriminated_union.py +++ b/tests/test_discriminated_union.py @@ -2254,3 +2254,47 @@ class Bar(BaseModel): final_schema = gen_schema.clean_schema(disc_union_ref) assert final_schema['type'] == 'tagged-union' + + +def test_recursive_discriminated_union() -> None: + """https://github.com/pydantic/pydantic/issues/11978""" + + F = TypeVar('F', bound=BaseModel) + + class Not(BaseModel, Generic[F]): + operand: F = Field() + + class Label(BaseModel): + prop: Literal['label'] = 'label' + + def filter_discriminator(v): + if isinstance(v, dict): + if 'not' in v: + return 'not' + else: + return v.get('prop') + + if isinstance(v, Not): + return 'not' + else: + return getattr(v, 'prop', None) + + ParagraphFilterExpression = Annotated[ + Union[ + Annotated[Not['ParagraphFilterExpression'], Tag('not')], + Annotated[Label, Tag('label')], + ], + Discriminator(filter_discriminator), + ] + + FieldFilterExpression = Annotated[ + Union[ + Annotated[Not['FieldFilterExpression'], Tag('not')], + Annotated[Label, Tag('label')], + ], + Discriminator(filter_discriminator), + ] + + class FilterExpression(BaseModel): + field: FieldFilterExpression + paragraph: ParagraphFilterExpression diff --git a/tests/test_fields.py b/tests/test_fields.py index 1a50ff2a45d..db5b3883b6f 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -1,9 +1,23 @@ -from typing import Union +from typing import Annotated, Final, Union import pytest +from annotated_types import Gt +from pydantic_core import PydanticUndefined import pydantic.dataclasses -from pydantic import BaseModel, ConfigDict, Field, PydanticUserError, RootModel, ValidationError, computed_field, fields +from pydantic import ( + AfterValidator, + BaseModel, + ConfigDict, + Field, + PydanticUserError, + RootModel, + ValidationError, + computed_field, + create_model, + fields, +) +from pydantic.fields import FieldInfo def test_field_info_annotation_keyword_argument(): @@ -188,3 +202,78 @@ class Model(BaseModel): Model.model_rebuild() assert Model.model_fields['f'].description == 'test doc' + + +def test_final_to_frozen_with_assignment() -> None: + class Model(BaseModel): + # A buggy implementation made it so that `frozen` wouldn't + # be set on the `FieldInfo`: + b: Annotated[Final[int], ...] = Field(alias='test') + + assert Model.model_fields['b'].frozen + + +def test_metadata_preserved_with_assignment() -> None: + def func1(v): + pass + + def func2(v): + pass + + class Model(BaseModel): + # A buggy implementation made it so that the first validator + # would be dropped: + a: Annotated[int, AfterValidator(func1), Field(gt=1), AfterValidator(func2)] = Field(...) + + metadata = Model.model_fields['a'].metadata + + assert isinstance(metadata[0], AfterValidator) + assert isinstance(metadata[1], Gt) + assert isinstance(metadata[2], AfterValidator) + + +def test_reused_field_not_mutated() -> None: + """https://github.com/pydantic/pydantic/issues/11876""" + + Ann = Annotated[int, Field()] + + class Foo(BaseModel): + f: Ann = 50 + + class Bar(BaseModel): + f: Annotated[Ann, Field()] + + assert Bar.model_fields['f'].default is PydanticUndefined + + +def test_no_duplicate_metadata_with_assignment_and_rebuild() -> None: + """https://github.com/pydantic/pydantic/issues/11870""" + + class Model(BaseModel): + f: Annotated['Int', Gt(1)] = Field() + + Int = int + + Model.model_rebuild() + + assert len(Model.model_fields['f'].metadata) == 1 + + +def test_fastapi_compatibility_hack() -> None: + class Body(FieldInfo): + """A reproduction of the FastAPI's `Body` param.""" + + pass + + field = Body() + # Assigning after doesn't update `_attributes_set`, which is currently + # relied on to merge `FieldInfo` instances during field creation. + # This is also what the FastAPI code is doing in some places. + # The FastAPI compatibility hack makes it so that it still works. + field.default = 1 + + Model = create_model('Model', f=(int, field)) + model_field = Model.model_fields['f'] + + assert isinstance(model_field, Body) + assert not model_field.is_required() diff --git a/tests/test_json_schema.py b/tests/test_json_schema.py index 452b0d4912a..0ebbaa3a8ab 100644 --- a/tests/test_json_schema.py +++ b/tests/test_json_schema.py @@ -6679,13 +6679,16 @@ class Model(BaseModel): def test_warn_on_mixed_compose() -> None: - with pytest.warns( - PydanticJsonSchemaWarning, match='Composing `dict` and `callable` type `json_schema_extra` is not supported.' - ): + with pytest.warns(UserWarning, match='Composing `dict` and `callable` type `json_schema_extra` is not supported.'): - class Model(BaseModel): + class Model1(BaseModel): field: Annotated[int, Field(json_schema_extra={'a': 'dict'}), Field(json_schema_extra=lambda x: x.pop('a'))] # type: ignore + with pytest.warns(UserWarning, match='Composing `dict` and `callable` type `json_schema_extra` is not supported.'): + + class Model2(BaseModel): + field: Annotated[int, Field(json_schema_extra=lambda x: x.pop('a')), Field(json_schema_extra={'a': 'dict'})] # type: ignore + def test_blank_title_is_respected() -> None: class Model(BaseModel): diff --git a/uv.lock b/uv.lock index 8ccf284f781..636c39143e0 100644 --- a/uv.lock +++ b/uv.lock @@ -2721,14 +2721,14 @@ wheels = [ [[package]] name = "typing-inspection" -version = "0.4.0" +version = "0.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222, upload-time = "2025-02-25T17:27:59.638Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125, upload-time = "2025-02-25T17:27:57.754Z" }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, ] [[package]] From ddb1a68118f6c4e1d5bc4c59a2479afe36bb5165 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Sat, 14 Jun 2025 10:45:37 +0200 Subject: [PATCH 077/106] Allow callable discriminator to be applied on PEP 695 type aliases (#11941) --- pydantic/types.py | 27 +++++++++++++++++++++------ tests/test_discriminated_union.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/pydantic/types.py b/pydantic/types.py index 28718c433db..d34bc780d0c 100644 --- a/pydantic/types.py +++ b/pydantic/types.py @@ -3069,9 +3069,11 @@ def __get_pydantic_core_schema__(self, source_type: Any, handler: GetCoreSchemaH return handler(Annotated[source_type, Field(discriminator=self.discriminator)]) else: original_schema = handler(source_type) - return self._convert_schema(original_schema) + return self._convert_schema(original_schema, handler) - def _convert_schema(self, original_schema: core_schema.CoreSchema) -> core_schema.TaggedUnionSchema: + def _convert_schema( + self, original_schema: core_schema.CoreSchema, handler: GetCoreSchemaHandler | None = None + ) -> core_schema.TaggedUnionSchema: if original_schema['type'] != 'union': # This likely indicates that the schema was a single-item union that was simplified. # In this case, we do the same thing we do in @@ -3088,10 +3090,23 @@ def _convert_schema(self, original_schema: core_schema.CoreSchema) -> core_schem if metadata is not None: tag = metadata.get('pydantic_internal_union_tag_key') or tag if tag is None: - raise PydanticUserError( - f'`Tag` not provided for choice {choice} used with `Discriminator`', - code='callable-discriminator-no-tag', - ) + # `handler` is None when this method is called from `apply_discriminator()` (deferred discriminators) + if handler is not None and choice['type'] == 'definition-ref': + # If choice was built from a PEP 695 type alias, try to resolve the def: + try: + choice = handler.resolve_ref_schema(choice) + except LookupError: + pass + else: + metadata = cast('CoreMetadata | None', choice.get('metadata')) + if metadata is not None: + tag = metadata.get('pydantic_internal_union_tag_key') + + if tag is None: + raise PydanticUserError( + f'`Tag` not provided for choice {choice} used with `Discriminator`', + code='callable-discriminator-no-tag', + ) tagged_union_choices[tag] = choice # Have to do these verbose checks to ensure falsy values ('' and {}) don't get ignored diff --git a/tests/test_discriminated_union.py b/tests/test_discriminated_union.py index 41eecf04491..fcd507f6267 100644 --- a/tests/test_discriminated_union.py +++ b/tests/test_discriminated_union.py @@ -2203,6 +2203,34 @@ class Reference(BaseModel): assert Base.__pydantic_core_schema__ == base_schema +def test_tagged_discriminator_type_alias() -> None: + """https://github.com/pydantic/pydantic/issues/11930""" + + class Pie(BaseModel): + pass + + class ApplePie(Pie): + fruit: Literal['apple'] = 'apple' + + class PumpkinPie(Pie): + filling: Literal['pumpkin'] = 'pumpkin' + + def get_discriminator_value(v): + return v.get('fruit', v.get('filling')) + + TaggedApplePie = TypeAliasType('TaggedApplePie', Annotated[ApplePie, Tag('apple')]) + + class ThanksgivingDinner(BaseModel): + dessert: Annotated[ + Union[TaggedApplePie, Annotated[PumpkinPie, Tag('pumpkin')]], + Discriminator(get_discriminator_value), + ] + + inst = ThanksgivingDinner(dessert={'fruit': 'apple'}) + + assert isinstance(inst.dessert, ApplePie) + + def test_discriminated_union_type_alias_type() -> None: """https://github.com/pydantic/pydantic/issues/11661 From 0c4a22b64b23dfad27387750cf07487efc45eb05 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sun, 15 Jun 2025 20:08:01 +0200 Subject: [PATCH 078/106] Add `flake8-pie` Ruff rules (#11982) Co-authored-by: Victorien <65306057+Viicos@users.noreply.github.com> --- pydantic/main.py | 3 --- pydantic/plugin/__init__.py | 3 --- pyproject.toml | 5 ++++- tests/test_docs.py | 2 +- tests/test_fields.py | 2 -- tests/test_generics.py | 2 +- tests/test_serialize.py | 2 +- tests/test_titles.py | 2 -- tests/test_validators.py | 2 +- tests/typechecking/decorators.py | 2 +- 10 files changed, 9 insertions(+), 16 deletions(-) diff --git a/pydantic/main.py b/pydantic/main.py index ea8940bf622..fde9d26bab0 100644 --- a/pydantic/main.py +++ b/pydantic/main.py @@ -591,7 +591,6 @@ def model_post_init(self, context: Any, /) -> None: """Override this method to perform additional initialization after `__init__` and `model_construct`. This is useful if you want to do some validation that requires the entire model to be initialized. """ - pass @classmethod def model_rebuild( @@ -837,7 +836,6 @@ def __pydantic_init_subclass__(cls, **kwargs: Any) -> None: You may want to override [`__pydantic_on_complete__()`][pydantic.main.BaseModel.__pydantic_on_complete__] instead, which is called once the class and its fields are fully initialized and ready for validation. """ - pass @classmethod def __pydantic_on_complete__(cls) -> None: @@ -849,7 +847,6 @@ def __pydantic_on_complete__(cls) -> None: In that case, it will be called later, when the model is rebuilt automatically or explicitly using [`model_rebuild()`][pydantic.main.BaseModel.model_rebuild]. """ - pass def __class_getitem__( cls, typevar_values: type[Any] | tuple[type[Any], ...] diff --git a/pydantic/plugin/__init__.py b/pydantic/plugin/__init__.py index 362030584fc..3c860432709 100644 --- a/pydantic/plugin/__init__.py +++ b/pydantic/plugin/__init__.py @@ -131,7 +131,6 @@ def on_enter( by_alias: Whether to use the field's alias to match the input data to an attribute. by_name: Whether to use the field's name to match the input data to an attribute. """ - pass class ValidateJsonHandlerProtocol(BaseValidateHandlerProtocol, Protocol): @@ -158,7 +157,6 @@ def on_enter( by_alias: Whether to use the field's alias to match the input data to an attribute. by_name: Whether to use the field's name to match the input data to an attribute. """ - pass StringInput: TypeAlias = 'dict[str, StringInput]' @@ -185,4 +183,3 @@ def on_enter( by_alias: Whether to use the field's alias to match the input data to an attribute. by_name: Whether to use the field's name to match the input data to an attribute. """ - pass diff --git a/pyproject.toml b/pyproject.toml index 344ed27eeaa..a9ed0ac89b2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -207,12 +207,13 @@ select = [ 'T10', # flake8-debugger 'T20', # flake8-print 'C4', # flake8-comprehensions + 'PIE', # flake8-pie 'PYI006', # flake8-pyi 'PYI062', # flake8-pyi 'PYI063', # flake8-pyi 'PYI066', # flake8-pyi ] -ignore = ['D105', 'D107', 'D205', 'D415', 'E501', 'B011', 'B028', 'B904'] +ignore = ['D105', 'D107', 'D205', 'D415', 'E501', 'B011', 'B028', 'B904', 'PIE804'] flake8-quotes = {inline-quotes = 'single', multiline-quotes = 'double'} isort = { known-first-party = ['pydantic', 'tests'] } mccabe = { max-complexity = 14 } @@ -222,7 +223,9 @@ pydocstyle = { convention = 'google' } 'docs/*' = ['D'] 'pydantic/__init__.py' = ['F405', 'F403', 'D'] 'tests/test_forward_ref.py' = ['F821'] +'tests/test_main.py' = ['PIE807'] 'tests/*' = ['D', 'B', 'C4'] +'pydantic/_internal/_known_annotated_metadata.py' = ['PIE800'] 'pydantic/deprecated/*' = ['D', 'PYI'] 'pydantic/color.py' = ['PYI'] 'pydantic/_internal/_decorators_v1.py' = ['PYI'] diff --git a/tests/test_docs.py b/tests/test_docs.py index 16006dbeb30..e15b3c4af3b 100644 --- a/tests/test_docs.py +++ b/tests/test_docs.py @@ -95,7 +95,7 @@ def run_example(example: CodeExample, eval_example: EvalExample, mocker: Any) -> group_name = prefix_settings.get('group') - eval_example.set_config(ruff_ignore=['D', 'T', 'B', 'C4', 'E721', 'Q001'], line_length=LINE_LENGTH) + eval_example.set_config(ruff_ignore=['D', 'T', 'B', 'C4', 'E721', 'Q001', 'PIE790'], line_length=LINE_LENGTH) if '# ignore-above' in example.source: eval_example.set_config(ruff_ignore=eval_example.config.ruff_ignore + ['E402'], line_length=LINE_LENGTH) if group_name: diff --git a/tests/test_fields.py b/tests/test_fields.py index db5b3883b6f..af74acf336f 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -263,8 +263,6 @@ def test_fastapi_compatibility_hack() -> None: class Body(FieldInfo): """A reproduction of the FastAPI's `Body` param.""" - pass - field = Body() # Assigning after doesn't update `_attributes_set`, which is currently # relied on to merge `FieldInfo` instances during field creation. diff --git a/tests/test_generics.py b/tests/test_generics.py index 42992660f60..192a7d6c06d 100644 --- a/tests/test_generics.py +++ b/tests/test_generics.py @@ -321,7 +321,7 @@ class Model(BaseModel, Generic[T, S]): # This error message, which comes from `typing`, changed 'parameters' to 'arguments' in 3.11 error_message = str(exc_info.value) - assert error_message.startswith('Too many parameters') or error_message.startswith('Too many arguments') + assert error_message.startswith(('Too many parameters', 'Too many arguments')) assert error_message.endswith( " for .Model'>; actual 3, expected 2" ) diff --git a/tests/test_serialize.py b/tests/test_serialize.py index 0fe7180f3f2..9c006526c29 100644 --- a/tests/test_serialize.py +++ b/tests/test_serialize.py @@ -778,7 +778,7 @@ class Model(BaseModel): y: int ser_x = field_serializer('x')(ser1) - ser_x = field_serializer('y')(ser2) + ser_x = field_serializer('y')(ser2) # noqa: PIE794 assert Model(x=1, y=2).model_dump() == {'x': 1, 'y': 'ser2'} diff --git a/tests/test_titles.py b/tests/test_titles.py index 2796b10a38f..be894d71794 100644 --- a/tests/test_titles.py +++ b/tests/test_titles.py @@ -207,7 +207,6 @@ class MyDataclass: def test_typeddict_model_title_generator(model_title_generator, TypedDict): class MyTypedDict(TypedDict): __pydantic_config__ = ConfigDict(model_title_generator=model_title_generator) - pass assert TypeAdapter(MyTypedDict).json_schema() == { 'properties': {}, @@ -429,7 +428,6 @@ class MyDataclass: class MyTypedDict(TypedDict): __pydantic_config__ = ConfigDict(model_title_generator=lambda m: invalid_return_value) - pass TypeAdapter(MyTypedDict).json_schema() diff --git a/tests/test_validators.py b/tests/test_validators.py index 3b16a68d8d5..d3b5ce2f879 100644 --- a/tests/test_validators.py +++ b/tests/test_validators.py @@ -2545,7 +2545,7 @@ class Model(BaseModel): y: int val_x = field_validator('x')(val1) - val_x = field_validator('y')(val2) + val_x = field_validator('y')(val2) # noqa: PIE794 assert Model(x=1, y=2).model_dump() == {'x': 1, 'y': 4} diff --git a/tests/typechecking/decorators.py b/tests/typechecking/decorators.py index 273d0dea0e2..6f8677acafc 100644 --- a/tests/typechecking/decorators.py +++ b/tests/typechecking/decorators.py @@ -77,7 +77,7 @@ def incompatible_type_var(cls, value: Any, handler: ModelWrapValidatorHandler[in the `_ModelType` type var will thus bind to `Self`. It is then expected to have `handler: ModelWrapValidatorHandler[_ModelType]` and the return type as `-> _ModelType`. """ - ... + ... # noqa: PIE790 @model_validator(mode='wrap') @classmethod From 188dc9a0bc3424102ecfab6624c28a80bbdcf81f Mon Sep 17 00:00:00 2001 From: Yogesh Kumar Date: Mon, 23 Jun 2025 11:42:50 +0200 Subject: [PATCH 079/106] Suppress core schema generation warning when using `SkipValidation` (#12002) Co-authored-by: Victorien <65306057+Viicos@users.noreply.github.com> --- pydantic/_internal/_generate_schema.py | 4 ++-- pydantic/functional_validators.py | 6 +++++- pydantic/warnings.py | 4 ++++ tests/test_types.py | 16 ++++++++++++++++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/pydantic/_internal/_generate_schema.py b/pydantic/_internal/_generate_schema.py index 68bebd4b335..d2ea60d09ff 100644 --- a/pydantic/_internal/_generate_schema.py +++ b/pydantic/_internal/_generate_schema.py @@ -62,7 +62,7 @@ from ..functional_validators import AfterValidator, BeforeValidator, FieldValidatorModes, PlainValidator, WrapValidator from ..json_schema import JsonSchemaValue from ..version import version_short -from ..warnings import PydanticDeprecatedSince20 +from ..warnings import PydanticArbitraryTypeWarning, PydanticDeprecatedSince20 from . import _decorators, _discriminated_union, _known_annotated_metadata, _repr, _typing_extra from ._config import ConfigWrapper, ConfigWrapperStack from ._core_metadata import CoreMetadata, update_core_metadata @@ -619,7 +619,7 @@ def _arbitrary_type_schema(self, tp: Any) -> CoreSchema: ' Pydantic will allow any object with no validation since we cannot even' ' enforce that the input is an instance of the given type.' ' To get rid of this error wrap the type with `pydantic.SkipValidation`.', - UserWarning, + PydanticArbitraryTypeWarning, ) return core_schema.any_schema() return core_schema.is_instance_schema(tp) diff --git a/pydantic/functional_validators.py b/pydantic/functional_validators.py index 6dfea7f32ef..cae054633a8 100644 --- a/pydantic/functional_validators.py +++ b/pydantic/functional_validators.py @@ -4,6 +4,7 @@ import dataclasses import sys +import warnings from functools import partialmethod from types import FunctionType from typing import TYPE_CHECKING, Annotated, Any, Callable, Literal, TypeVar, Union, cast, overload @@ -14,6 +15,7 @@ from ._internal import _decorators, _generics, _internal_dataclass from .annotated_handlers import GetCoreSchemaHandler from .errors import PydanticUserError +from .warnings import PydanticArbitraryTypeWarning if sys.version_info < (3, 11): from typing_extensions import Protocol @@ -817,7 +819,9 @@ def __class_getitem__(cls, item: Any) -> Any: @classmethod def __get_pydantic_core_schema__(cls, source: Any, handler: GetCoreSchemaHandler) -> core_schema.CoreSchema: - original_schema = handler(source) + with warnings.catch_warnings(): + warnings.simplefilter('ignore', PydanticArbitraryTypeWarning) + original_schema = handler(source) metadata = {'pydantic_js_annotation_functions': [lambda _c, h: h(original_schema)]} return core_schema.any_schema( metadata=metadata, diff --git a/pydantic/warnings.py b/pydantic/warnings.py index 6e874dd12c6..f32d7f22aef 100644 --- a/pydantic/warnings.py +++ b/pydantic/warnings.py @@ -94,3 +94,7 @@ class PydanticExperimentalWarning(Warning): This warning is raised when using experimental functionality in Pydantic. It is raised to warn users that the functionality may change or be removed in future versions of Pydantic. """ + + +class PydanticArbitraryTypeWarning(UserWarning): + """Warning raised when Pydantic fails to generate a core schema for an arbitrary type.""" diff --git a/tests/test_types.py b/tests/test_types.py index 1c5952f9cd4..283ac418840 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -9,6 +9,7 @@ import sys import typing import uuid +import warnings from collections import Counter, OrderedDict, UserDict, defaultdict, deque from collections.abc import Iterable, Mapping, MutableMapping, Sequence from dataclasses import dataclass @@ -6016,6 +6017,21 @@ class A(BaseModel): } +@pytest.mark.skipif(sys.version_info < (3, 12), reason="`Annotated` doesn't allow instances in <3.12") +def test_skip_validation_arbitrary_type_object() -> None: + """https://github.com/pydantic/pydantic/issues/11997. + + Using an arbitrary object (and not a type) normally raises a warning, + which should be suppressed when using `SkipValidation`. + """ + + with warnings.catch_warnings(): + warnings.simplefilter('error') + + class Model(BaseModel, arbitrary_types_allowed=True): + field: Annotated[object(), SkipValidation] + + def test_transform_schema(): ValidateStrAsInt = Annotated[str, GetPydanticSchema(lambda _s, h: core_schema.int_schema())] From 42298a08b4cb999242b2ce231adda03539858567 Mon Sep 17 00:00:00 2001 From: lluk Date: Thu, 26 Jun 2025 08:45:23 +0200 Subject: [PATCH 080/106] Set back default target of Makefile (#12015) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 36c5b1e7582..a7b9401fac3 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# .DEFAULT_GOAL := all +.DEFAULT_GOAL := all sources = pydantic tests docs/plugins NUM_THREADS?=1 From c6d94466a9f94c740f52d7824e28f3a0d7a6fe3c Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:12:07 +0200 Subject: [PATCH 081/106] Fix Pyright warning (#11985) --- pydantic/_internal/_dataclasses.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydantic/_internal/_dataclasses.py b/pydantic/_internal/_dataclasses.py index 97bbdf8bf09..b96870dfb62 100644 --- a/pydantic/_internal/_dataclasses.py +++ b/pydantic/_internal/_dataclasses.py @@ -55,7 +55,7 @@ class PydanticDataclass(StandardDataclass, typing.Protocol): __pydantic_validator__: ClassVar[SchemaValidator | PluggableSchemaValidator] @classmethod - def __pydantic_fields_complete__(self) -> bool: ... + def __pydantic_fields_complete__(cls) -> bool: ... else: # See PyCharm issues https://youtrack.jetbrains.com/issue/PY-21915 From 568509c04355c0fa518d9c657a078eb8a595d3f5 Mon Sep 17 00:00:00 2001 From: Fabian Keller Date: Tue, 1 Jul 2025 16:44:16 +0200 Subject: [PATCH 082/106] Make `Secret` covariant (#12008) Co-authored-by: Victorien <65306057+Viicos@users.noreply.github.com> --- pydantic/types.py | 3 ++- tests/typechecking/secret.py | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 tests/typechecking/secret.py diff --git a/pydantic/types.py b/pydantic/types.py index d34bc780d0c..6daf98d056c 100644 --- a/pydantic/types.py +++ b/pydantic/types.py @@ -1530,7 +1530,8 @@ def __eq__(self, other: Any) -> bool: # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SECRET TYPES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -SecretType = TypeVar('SecretType') +# The `Secret` class being conceptually immutable, make the type variable covariant: +SecretType = TypeVar('SecretType', covariant=True) class _SecretBase(Generic[SecretType]): diff --git a/tests/typechecking/secret.py b/tests/typechecking/secret.py new file mode 100644 index 00000000000..091f2ae6d6e --- /dev/null +++ b/tests/typechecking/secret.py @@ -0,0 +1,9 @@ +from pydantic import Secret + + +def takes_secret(scalar_secret: Secret[str | int | float | bool]) -> None: ... + + +def secret_usage() -> None: + secret: Secret[str] = Secret('my secret') + takes_secret(secret) From 5b4144991eb1f938f8da1eebbfc3c58820ec60fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Jul 2025 09:26:57 +0200 Subject: [PATCH 083/106] Bump dawidd6/action-download-artifact from 10 to 11 (#12033) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/upload-previews.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/upload-previews.yml b/.github/workflows/upload-previews.yml index 1db04b6f173..368a3574588 100644 --- a/.github/workflows/upload-previews.yml +++ b/.github/workflows/upload-previews.yml @@ -20,7 +20,7 @@ jobs: - run: pip install smokeshow - - uses: dawidd6/action-download-artifact@v10 + - uses: dawidd6/action-download-artifact@v11 with: workflow: ci.yml commit: ${{ github.event.workflow_run.head_sha }} From dac3c437870a056839c0a485ae3112c76d5e4a7f Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 2 Jul 2025 20:53:10 +0200 Subject: [PATCH 084/106] Do not emit typechecking error for invalid `Field()` default with `validate_default` set to `True` (#11988) --- pydantic/fields.py | 86 ++++++++++++++++++++++++++++++++++-- tests/typechecking/fields.py | 6 +++ 2 files changed, 88 insertions(+), 4 deletions(-) diff --git a/pydantic/fields.py b/pydantic/fields.py index 7b0b73f73fc..8ba4632d487 100644 --- a/pydantic/fields.py +++ b/pydantic/fields.py @@ -887,7 +887,46 @@ def Field( fail_fast: bool | None = _Unset, **extra: Unpack[_EmptyKwargs], ) -> Any: ... -@overload # `default` argument set +@overload # `default` argument set, validate_default=True (no type checking on the default value) +def Field( + default: Any, + *, + alias: str | None = _Unset, + alias_priority: int | None = _Unset, + validation_alias: str | AliasPath | AliasChoices | None = _Unset, + serialization_alias: str | None = _Unset, + title: str | None = _Unset, + field_title_generator: Callable[[str, FieldInfo], str] | None = _Unset, + description: str | None = _Unset, + examples: list[Any] | None = _Unset, + exclude: bool | None = _Unset, + discriminator: str | types.Discriminator | None = _Unset, + deprecated: Deprecated | str | bool | None = _Unset, + json_schema_extra: JsonDict | Callable[[JsonDict], None] | None = _Unset, + frozen: bool | None = _Unset, + validate_default: Literal[True], + repr: bool = _Unset, + init: bool | None = _Unset, + init_var: bool | None = _Unset, + kw_only: bool | None = _Unset, + pattern: str | typing.Pattern[str] | None = _Unset, + strict: bool | None = _Unset, + coerce_numbers_to_str: bool | None = _Unset, + gt: annotated_types.SupportsGt | None = _Unset, + ge: annotated_types.SupportsGe | None = _Unset, + lt: annotated_types.SupportsLt | None = _Unset, + le: annotated_types.SupportsLe | None = _Unset, + multiple_of: float | None = _Unset, + allow_inf_nan: bool | None = _Unset, + max_digits: int | None = _Unset, + decimal_places: int | None = _Unset, + min_length: int | None = _Unset, + max_length: int | None = _Unset, + union_mode: Literal['smart', 'left_to_right'] = _Unset, + fail_fast: bool | None = _Unset, + **extra: Unpack[_EmptyKwargs], +) -> Any: ... +@overload # `default` argument set, validate_default=False or unset def Field( default: _T, *, @@ -904,7 +943,7 @@ def Field( deprecated: Deprecated | str | bool | None = _Unset, json_schema_extra: JsonDict | Callable[[JsonDict], None] | None = _Unset, frozen: bool | None = _Unset, - validate_default: bool | None = _Unset, + validate_default: Literal[False] = ..., repr: bool = _Unset, init: bool | None = _Unset, init_var: bool | None = _Unset, @@ -926,7 +965,46 @@ def Field( fail_fast: bool | None = _Unset, **extra: Unpack[_EmptyKwargs], ) -> _T: ... -@overload # `default_factory` argument set +@overload # `default_factory` argument set, validate_default=True (no type checking on the default value) +def Field( # pyright: ignore[reportOverlappingOverload] + *, + default_factory: Callable[[], Any] | Callable[[dict[str, Any]], Any], + alias: str | None = _Unset, + alias_priority: int | None = _Unset, + validation_alias: str | AliasPath | AliasChoices | None = _Unset, + serialization_alias: str | None = _Unset, + title: str | None = _Unset, + field_title_generator: Callable[[str, FieldInfo], str] | None = _Unset, + description: str | None = _Unset, + examples: list[Any] | None = _Unset, + exclude: bool | None = _Unset, + discriminator: str | types.Discriminator | None = _Unset, + deprecated: Deprecated | str | bool | None = _Unset, + json_schema_extra: JsonDict | Callable[[JsonDict], None] | None = _Unset, + frozen: bool | None = _Unset, + validate_default: Literal[True], + repr: bool = _Unset, + init: bool | None = _Unset, + init_var: bool | None = _Unset, + kw_only: bool | None = _Unset, + pattern: str | typing.Pattern[str] | None = _Unset, + strict: bool | None = _Unset, + coerce_numbers_to_str: bool | None = _Unset, + gt: annotated_types.SupportsGt | None = _Unset, + ge: annotated_types.SupportsGe | None = _Unset, + lt: annotated_types.SupportsLt | None = _Unset, + le: annotated_types.SupportsLe | None = _Unset, + multiple_of: float | None = _Unset, + allow_inf_nan: bool | None = _Unset, + max_digits: int | None = _Unset, + decimal_places: int | None = _Unset, + min_length: int | None = _Unset, + max_length: int | None = _Unset, + union_mode: Literal['smart', 'left_to_right'] = _Unset, + fail_fast: bool | None = _Unset, + **extra: Unpack[_EmptyKwargs], +) -> Any: ... +@overload # `default_factory` argument set, validate_default=False or unset def Field( *, default_factory: Callable[[], _T] | Callable[[dict[str, Any]], _T], @@ -943,7 +1021,7 @@ def Field( deprecated: Deprecated | str | bool | None = _Unset, json_schema_extra: JsonDict | Callable[[JsonDict], None] | None = _Unset, frozen: bool | None = _Unset, - validate_default: bool | None = _Unset, + validate_default: Literal[False] | None = _Unset, repr: bool = _Unset, init: bool | None = _Unset, init_var: bool | None = _Unset, diff --git a/tests/typechecking/fields.py b/tests/typechecking/fields.py index 38721d730e5..aeab74553eb 100644 --- a/tests/typechecking/fields.py +++ b/tests/typechecking/fields.py @@ -38,3 +38,9 @@ class Model(BaseModel): # Do not error on the ellipsis: f13: int = Field(...) + + # Do not error for invalid assignments when validate_default=True + f14: int = Field(default='1', validate_default=True) + f15: int = Field(default_factory=str, validate_default=True) + f16: int = Field(default='1', validate_default=False) # type: ignore[assignment] # pyright: ignore[reportAssignmentType] + f17: int = Field(default_factory=str, validate_default=False) # type: ignore[assignment] # pyright: ignore[reportAssignmentType] From 9452e13c571db7d31051768c3b4d47a6e2ceea7d Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Thu, 10 Jul 2025 11:31:03 +0200 Subject: [PATCH 085/106] Add initial support for Python 3.14 (#11991) Adds basic support for Python 3.14. Deferred annotations work for simple cases, but will need to be improved in the future. --- .github/workflows/ci.yml | 11 +- .github/workflows/integration.yml | 4 +- docs/migration.md | 4 +- pydantic/_internal/_config.py | 10 +- pydantic/_internal/_fields.py | 7 +- pydantic/_internal/_generics.py | 7 +- pydantic/_internal/_model_construction.py | 24 +- pydantic/_internal/_typing_extra.py | 36 +- pydantic/dataclasses.py | 13 +- pyproject.toml | 3 + tests/test_dataclasses.py | 11 +- tests/test_deferred_annotations.py | 81 ++++ tests/test_forward_ref.py | 15 - tests/test_model_signature.py | 2 +- tests/test_pickle.py | 12 +- tests/test_v1.py | 2 + uv.lock | 512 ++++++++++++---------- 17 files changed, 469 insertions(+), 285 deletions(-) create mode 100644 tests/test_deferred_annotations.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 16dbda9b2b4..7088958c4cc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v4 @@ -87,7 +87,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-13, macos-latest, windows-latest] - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.13t'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14', '3.14t'] include: # no pydantic-core binaries for pypy on windows, so tests take absolute ages # macos tests with pypy take ages (>10mins) since pypy is very slow @@ -140,6 +140,11 @@ jobs: COVERAGE_FILE: coverage/.coverage.${{ runner.os }}-py${{ matrix.python-version }}-without-deps CONTEXT: ${{ runner.os }}-py${{ matrix.python-version }}-without-deps + # TODO remove when memray supports 3.14: + - name: Install memray system dependencies + if: ${{ matrix.python-version == '3.14' && matrix.os == 'ubuntu-latest' }} + run: sudo apt-get install libunwind-dev libdebuginfod-dev + - name: Install extra dependencies # Skip free threaded, we can't install memray if: ${{ !endsWith(matrix.python-version, 't') }} @@ -299,7 +304,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 6d4d4c12f87..cf9335b3e17 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v4 @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v4 diff --git a/docs/migration.md b/docs/migration.md index 089d541ac28..3991c0210cb 100644 --- a/docs/migration.md +++ b/docs/migration.md @@ -188,7 +188,7 @@ to help ease migration, but calling them will emit `DeprecationWarning`s. If you'd still like to use said arguments, you can use [this workaround](https://github.com/pydantic/pydantic/issues/8825#issuecomment-1946206415). * JSON serialization of non-string key values is generally done with `str(key)`, leading to some changes in behavior such as the following: -```python +```python {test="skip"} from typing import Optional from pydantic import BaseModel as V2BaseModel @@ -218,7 +218,7 @@ print(v2_model.model_dump_json()) * `model_dump_json()` results are compacted in order to save space, and don't always exactly match that of `json.dumps()` output. That being said, you can easily modify the separators used in `json.dumps()` results in order to align the two outputs: -```python +```python {test="skip"} import json from pydantic import BaseModel as V2BaseModel diff --git a/pydantic/_internal/_config.py b/pydantic/_internal/_config.py index fe712646337..cb18ba50c60 100644 --- a/pydantic/_internal/_config.py +++ b/pydantic/_internal/_config.py @@ -98,7 +98,13 @@ def __init__(self, config: ConfigDict | dict[str, Any] | type[Any] | None, *, ch self.config_dict = cast(ConfigDict, config) @classmethod - def for_model(cls, bases: tuple[type[Any], ...], namespace: dict[str, Any], kwargs: dict[str, Any]) -> Self: + def for_model( + cls, + bases: tuple[type[Any], ...], + namespace: dict[str, Any], + raw_annotations: dict[str, Any], + kwargs: dict[str, Any], + ) -> Self: """Build a new `ConfigWrapper` instance for a `BaseModel`. The config wrapper built based on (in descending order of priority): @@ -109,6 +115,7 @@ def for_model(cls, bases: tuple[type[Any], ...], namespace: dict[str, Any], kwar Args: bases: A tuple of base classes. namespace: The namespace of the class being created. + raw_annotations: The (non-evaluated) annotations of the model. kwargs: The kwargs passed to the class being created. Returns: @@ -123,7 +130,6 @@ def for_model(cls, bases: tuple[type[Any], ...], namespace: dict[str, Any], kwar config_class_from_namespace = namespace.get('Config') config_dict_from_namespace = namespace.get('model_config') - raw_annotations = namespace.get('__annotations__', {}) if raw_annotations.get('model_config') and config_dict_from_namespace is None: raise PydanticUserError( '`model_config` cannot be used as a model field name. Use `model_config` for model configuration.', diff --git a/pydantic/_internal/_fields.py b/pydantic/_internal/_fields.py index ed64bb3b375..e60a9a4aff2 100644 --- a/pydantic/_internal/_fields.py +++ b/pydantic/_internal/_fields.py @@ -259,7 +259,8 @@ def collect_model_fields( # noqa: C901 # https://docs.python.org/3/howto/annotations.html#accessing-the-annotations-dict-of-an-object-in-python-3-9-and-older # annotations is only used for finding fields in parent classes - annotations = cls.__dict__.get('__annotations__', {}) + annotations = _typing_extra.safe_get_annotations(cls) + fields: dict[str, FieldInfo] = {} class_vars: set[str] = set() @@ -508,7 +509,9 @@ def collect_dataclass_fields( with ns_resolver.push(base): for ann_name, dataclass_field in dataclass_fields.items(): - if ann_name not in base.__dict__.get('__annotations__', {}): + base_anns = _typing_extra.safe_get_annotations(base) + + if ann_name not in base_anns: # `__dataclass_fields__`contains every field, even the ones from base classes. # Only collect the ones defined on `base`. continue diff --git a/pydantic/_internal/_generics.py b/pydantic/_internal/_generics.py index 80136766612..9df5e522b37 100644 --- a/pydantic/_internal/_generics.py +++ b/pydantic/_internal/_generics.py @@ -1,5 +1,6 @@ from __future__ import annotations +import operator import sys import types import typing @@ -7,6 +8,7 @@ from collections.abc import Iterator, Mapping from contextlib import contextmanager from contextvars import ContextVar +from functools import reduce from itertools import zip_longest from types import prepare_class from typing import TYPE_CHECKING, Annotated, Any, TypeVar @@ -21,9 +23,6 @@ from ._forward_ref import PydanticRecursiveRef from ._utils import all_identical, is_model_class -if sys.version_info >= (3, 10): - from typing import _UnionGenericAlias # type: ignore[attr-defined] - if TYPE_CHECKING: from ..main import BaseModel @@ -311,7 +310,7 @@ def replace_types(type_: Any, type_map: Mapping[TypeVar, Any] | None) -> Any: # PEP-604 syntax (Ex.: list | str) is represented with a types.UnionType object that does not have __getitem__. # We also cannot use isinstance() since we have to compare types. if sys.version_info >= (3, 10) and origin_type is types.UnionType: - return _UnionGenericAlias(origin_type, resolved_type_args) + return reduce(operator.or_, resolved_type_args) # NotRequired[T] and Required[T] don't support tuple type resolved_type_args, hence the condition below return origin_type[resolved_type_args[0] if len(resolved_type_args) == 1 else resolved_type_args] diff --git a/pydantic/_internal/_model_construction.py b/pydantic/_internal/_model_construction.py index 533f178862a..db5c7ffd3ac 100644 --- a/pydantic/_internal/_model_construction.py +++ b/pydantic/_internal/_model_construction.py @@ -105,12 +105,29 @@ def __new__( # that `BaseModel` itself won't have any bases, but any subclass of it will, to determine whether the `__new__` # call we're in the middle of is for the `BaseModel` class. if bases: + raw_annotations: dict[str, Any] + if sys.version_info >= (3, 14): + if ( + '__annotations__' in namespace + ): # `from __future__ import annotations` was used in the model's module + raw_annotations = namespace['__annotations__'] + else: + # See https://docs.python.org/3.14/library/annotationlib.html#using-annotations-in-a-metaclass: + from annotationlib import Format, call_annotate_function, get_annotate_from_class_namespace + + if annotate := get_annotate_from_class_namespace(namespace): + raw_annotations = call_annotate_function(annotate, format=Format.FORWARDREF) + else: + raw_annotations = {} + else: + raw_annotations = namespace.get('__annotations__', {}) + base_field_names, class_vars, base_private_attributes = mcs._collect_bases_data(bases) - config_wrapper = ConfigWrapper.for_model(bases, namespace, kwargs) + config_wrapper = ConfigWrapper.for_model(bases, namespace, raw_annotations, kwargs) namespace['model_config'] = config_wrapper.config_dict private_attributes = inspect_namespace( - namespace, config_wrapper.ignored_types, class_vars, base_field_names + namespace, raw_annotations, config_wrapper.ignored_types, class_vars, base_field_names ) if private_attributes or base_private_attributes: original_model_post_init = get_model_post_init(namespace, bases) @@ -363,6 +380,7 @@ def get_model_post_init(namespace: dict[str, Any], bases: tuple[type[Any], ...]) def inspect_namespace( # noqa C901 namespace: dict[str, Any], + raw_annotations: dict[str, Any], ignored_types: tuple[type[Any], ...], base_class_vars: set[str], base_class_fields: set[str], @@ -373,6 +391,7 @@ def inspect_namespace( # noqa C901 Args: namespace: The attribute dictionary of the class to be created. + raw_annotations: The (non-evaluated) annotations of the model. ignored_types: A tuple of ignore types. base_class_vars: A set of base class class variables. base_class_fields: A set of base class fields. @@ -394,7 +413,6 @@ def inspect_namespace( # noqa C901 all_ignored_types = ignored_types + default_ignored_types() private_attributes: dict[str, ModelPrivateAttr] = {} - raw_annotations = namespace.get('__annotations__', {}) if '__root__' in raw_annotations or '__root__' in namespace: raise TypeError("To define root models, use `pydantic.RootModel` rather than a field called '__root__'") diff --git a/pydantic/_internal/_typing_extra.py b/pydantic/_internal/_typing_extra.py index 4be1a09cb32..258668c29b0 100644 --- a/pydantic/_internal/_typing_extra.py +++ b/pydantic/_internal/_typing_extra.py @@ -26,6 +26,9 @@ from types import EllipsisType as EllipsisType from types import NoneType as NoneType +if sys.version_info >= (3, 14): + import annotationlib + if TYPE_CHECKING: from pydantic import BaseModel @@ -289,6 +292,19 @@ def _type_convert(arg: Any) -> Any: return arg +def safe_get_annotations(cls: type[Any]) -> dict[str, Any]: + """Get the annotations for the provided class, accounting for potential deferred forward references. + + Starting with Python 3.14, accessing the `__annotations__` attribute might raise a `NameError` if + a referenced symbol isn't defined yet. In this case, we return the annotation in the *forward ref* + format. + """ + if sys.version_info >= (3, 14): + return annotationlib.get_annotations(cls, format=annotationlib.Format.FORWARDREF) + else: + return cls.__dict__.get('__annotations__', {}) + + def get_model_type_hints( obj: type[BaseModel], *, @@ -309,9 +325,14 @@ def get_model_type_hints( ns_resolver = ns_resolver or NsResolver() for base in reversed(obj.__mro__): - ann: dict[str, Any] | None = base.__dict__.get('__annotations__') - if not ann or isinstance(ann, types.GetSetDescriptorType): + # For Python 3.14, we could also use `Format.VALUE` and pass the globals/locals + # from the ns_resolver, but we want to be able to know which specific field failed + # to evaluate: + ann = safe_get_annotations(base) + + if not ann: continue + with ns_resolver.push(base): globalns, localns = ns_resolver.types_namespace for name, value in ann.items(): @@ -341,13 +362,18 @@ def get_cls_type_hints( obj: The class to inspect. ns_resolver: A namespace resolver instance to use. Defaults to an empty instance. """ - hints: dict[str, Any] | dict[str, tuple[Any, bool]] = {} + hints: dict[str, Any] = {} ns_resolver = ns_resolver or NsResolver() for base in reversed(obj.__mro__): - ann: dict[str, Any] | None = base.__dict__.get('__annotations__') - if not ann or isinstance(ann, types.GetSetDescriptorType): + # For Python 3.14, we could also use `Format.VALUE` and pass the globals/locals + # from the ns_resolver, but we want to be able to know which specific field failed + # to evaluate: + ann = safe_get_annotations(base) + + if not ann: continue + with ns_resolver.push(base): globalns, localns = ns_resolver.types_namespace for name, value in ann.items(): diff --git a/pydantic/dataclasses.py b/pydantic/dataclasses.py index a2b092e7f49..5995b01694a 100644 --- a/pydantic/dataclasses.py +++ b/pydantic/dataclasses.py @@ -158,7 +158,12 @@ def make_pydantic_fields_compatible(cls: type[Any]) -> None: `x: int = dataclasses.field(default=pydantic.Field(..., kw_only=True), kw_only=True)` """ for annotation_cls in cls.__mro__: - annotations: dict[str, Any] = getattr(annotation_cls, '__annotations__', {}) + if sys.version_info >= (3, 14): + from annotationlib import Format, get_annotations + + annotations = get_annotations(annotation_cls, format=Format.FORWARDREF) + else: + annotations: dict[str, Any] = getattr(annotation_cls, '__annotations__', {}) for field_name in annotations: field_value = getattr(cls, field_name, None) # Process only if this is an instance of `FieldInfo`. @@ -177,9 +182,9 @@ def make_pydantic_fields_compatible(cls: type[Any]) -> None: field_args['repr'] = field_value.repr setattr(cls, field_name, dataclasses.field(**field_args)) - # In Python 3.9, when subclassing, information is pulled from cls.__dict__['__annotations__'] - # for annotations, so we must make sure it's initialized before we add to it. - if cls.__dict__.get('__annotations__') is None: + if sys.version_info < (3, 10) and cls.__dict__.get('__annotations__') is None: + # In Python 3.9, when a class doesn't have any annotations, accessing `__annotations__` + # raises an `AttributeError`. cls.__annotations__ = {} cls.__annotations__[field_name] = annotations[field_name] diff --git a/pyproject.toml b/pyproject.toml index a9ed0ac89b2..f44eca72f0c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,6 +34,7 @@ classifiers = [ 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', 'Intended Audience :: Developers', 'Intended Audience :: Information Technology', 'Operating System :: OS Independent', @@ -223,6 +224,8 @@ pydocstyle = { convention = 'google' } 'docs/*' = ['D'] 'pydantic/__init__.py' = ['F405', 'F403', 'D'] 'tests/test_forward_ref.py' = ['F821'] +# We can't configure a specific Python version per file (this one only supports 3.14+): +'tests/test_deferred_annotations.py' = ['F821', 'F841'] 'tests/test_main.py' = ['PIE807'] 'tests/*' = ['D', 'B', 'C4'] 'pydantic/_internal/_known_annotated_metadata.py' = ['PIE800'] diff --git a/tests/test_dataclasses.py b/tests/test_dataclasses.py index 63e653c67b7..530920af010 100644 --- a/tests/test_dataclasses.py +++ b/tests/test_dataclasses.py @@ -30,6 +30,7 @@ BaseModel, BeforeValidator, ConfigDict, + Field, PydanticDeprecatedSince20, PydanticUndefinedAnnotation, PydanticUserError, @@ -45,7 +46,6 @@ ) from pydantic._internal._mock_val_ser import MockValSer from pydantic.dataclasses import is_pydantic_dataclass, rebuild_dataclass -from pydantic.fields import Field, FieldInfo from pydantic.json_schema import model_json_schema @@ -2098,15 +2098,14 @@ def child_val_after(cls, v: list[str]): def test_dataclasses_inheritance_default_value_is_not_deleted( decorator1: Callable[[Any], Any], default: Literal[1] ) -> None: - if decorator1 is dataclasses.dataclass and isinstance(default, FieldInfo): - pytest.skip(reason="stdlib dataclasses don't support Pydantic fields") - @decorator1 class Parent: a: int = default - assert Parent.a == 1 - assert Parent().a == 1 + # stdlib dataclasses don't support Pydantic's `Field()`: + if decorator1 is pydantic.dataclasses.dataclass: + assert Parent.a == 1 + assert Parent().a == 1 @pydantic.dataclasses.dataclass class Child(Parent): diff --git a/tests/test_deferred_annotations.py b/tests/test_deferred_annotations.py new file mode 100644 index 00000000000..58bbc6e96d5 --- /dev/null +++ b/tests/test_deferred_annotations.py @@ -0,0 +1,81 @@ +"""Tests related to deferred evaluation of annotations introduced in Python 3.14 by PEP 649 and 749.""" + +import sys +from dataclasses import field +from typing import Annotated + +import pytest +from annotated_types import MaxLen + +from pydantic import BaseModel, Field, ValidationError +from pydantic.dataclasses import dataclass + +pytestmark = pytest.mark.skipif( + sys.version_info < (3, 14), reason='Requires deferred evaluation of annotations introduced in Python 3.14' +) + + +def test_deferred_annotations_model() -> None: + class Model(BaseModel): + a: Int + b: Str = 'a' + + Int = int + Str = str + + inst = Model(a='1', b=b'test') + assert inst.a == 1 + assert inst.b == 'test' + + +@pytest.mark.xfail( + reason=( + 'When rebuilding model fields, we individually re-evaluate all fields (using `_eval_type()`) ' + "and as such we don't benefit from PEP 649's capabilities." + ), +) +def test_deferred_annotations_nested_model() -> None: + def outer(): + def inner(): + class Model(BaseModel): + ann: Annotated[List[Dict[str, str]], MaxLen(1)] + + Dict = dict + + return Model + + List = list + + Model = inner() + + return Model + + Model = outer() + + with pytest.raises(ValidationError) as exc_info: + Model(ann=[{'a': 'b'}, {'c': 'd'}]) + + assert exc_info.value.errors()[0]['type'] == 'too_long' + + +def test_deferred_annotations_pydantic_dataclass() -> None: + @dataclass + class A: + a: Int = field(default=1) + + Int = int + + assert A(a='1').a == 1 + + +@pytest.mark.xfail( + reason="To support Pydantic's `Field()` function in dataclasses, we directly write to `__annotations__`" +) +def test_deferred_annotations_pydantic_dataclass_pydantic_field() -> None: + @dataclass + class A: + a: Int = Field(default=1) + + Int = int + + assert A(a='1').a == 1 diff --git a/tests/test_forward_ref.py b/tests/test_forward_ref.py index 6f149652121..35a5363b064 100644 --- a/tests/test_forward_ref.py +++ b/tests/test_forward_ref.py @@ -74,21 +74,6 @@ class Bar(BaseModel): assert f.model_dump() == {'a': {'b': {'a': {'b': {'a': None}}}}} -def test_forward_ref_one_of_fields_not_defined(create_module): - @create_module - def module(): - from pydantic import BaseModel - - class Foo(BaseModel): - foo: 'Foo' - bar: 'Bar' - - assert {k: repr(v) for k, v in module.Foo.model_fields.items()} == { - 'foo': 'FieldInfo(annotation=Foo, required=True)', - 'bar': "FieldInfo(annotation=ForwardRef('Bar'), required=True)", - } - - def test_basic_forward_ref(create_module): @create_module def module(): diff --git a/tests/test_model_signature.py b/tests/test_model_signature.py index b84bfc8ca77..6465b02d8d8 100644 --- a/tests/test_model_signature.py +++ b/tests/test_model_signature.py @@ -184,7 +184,7 @@ class Model(BaseModel): assert typing_objects.is_annotated(get_origin(sig.parameters['foo'].annotation)) -@pytest.mark.skipif(sys.version_info < (3, 10), reason='repr different on older versions') +@pytest.mark.skipif(sys.version_info < (3, 10), sys.version_info >= (3, 14), reason='repr different on older versions') def test_annotated_optional_field(): from annotated_types import Gt diff --git a/tests/test_pickle.py b/tests/test_pickle.py index 3e947fc5296..d6256065278 100644 --- a/tests/test_pickle.py +++ b/tests/test_pickle.py @@ -1,6 +1,7 @@ import dataclasses import gc import pickle +import sys from typing import Optional import pytest @@ -17,6 +18,11 @@ pytestmark = pytest.mark.skipif(cloudpickle is None, reason='cloudpickle is not installed') +cloudpickle_xfail = pytest.mark.xfail( + condition=sys.version_info >= (3, 14), + reason='Cloudpickle issue: https://github.com/cloudpipe/cloudpickle/issues/572', +) + class IntWrapper: def __init__(self, v: int): @@ -88,7 +94,7 @@ class NonImportableModel(BaseModel): (ImportableModel, False), (ImportableModel, True), # Locally-defined model can only be pickled with cloudpickle. - (model_factory(), True), + pytest.param(model_factory(), True, marks=cloudpickle_xfail), ], ) def test_pickle_model(model_type: type, use_cloudpickle: bool): @@ -133,7 +139,7 @@ class NonImportableNestedModel(BaseModel): (ImportableNestedModel, False), (ImportableNestedModel, True), # Locally-defined model can only be pickled with cloudpickle. - (nested_model_factory(), True), + pytest.param(nested_model_factory(), True, marks=cloudpickle_xfail), ], ) def test_pickle_nested_model(model_type: type, use_cloudpickle: bool): @@ -264,7 +270,7 @@ class NonImportableNestedDataclassModel(BaseModel): (ImportableNestedDataclassModel, False), (ImportableNestedDataclassModel, True), # Locally-defined model can only be pickled with cloudpickle. - (nested_dataclass_model_factory(), True), + pytest.param(nested_dataclass_model_factory(), True, marks=cloudpickle_xfail), ], ) def test_pickle_dataclass_nested_in_model(model_type: type, use_cloudpickle: bool): diff --git a/tests/test_v1.py b/tests/test_v1.py index 63fb022afd7..bca6d4b72cd 100644 --- a/tests/test_v1.py +++ b/tests/test_v1.py @@ -1,3 +1,4 @@ +import sys import warnings import pytest @@ -14,6 +15,7 @@ def test_version(): assert V1_VERSION != VERSION +@pytest.mark.skipif(sys.version_info >= (3, 14), reason='Python 3.14+ not supported') @pytest.mark.thread_unsafe(reason='Mutates the value') def test_root_validator(): class Model(V1BaseModel): diff --git a/uv.lock b/uv.lock index 636c39143e0..59d861677fa 100644 --- a/uv.lock +++ b/uv.lock @@ -4,16 +4,16 @@ requires-python = ">=3.9" [[package]] name = "aiohappyeyeballs" -version = "2.4.6" +version = "2.6.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/08/07/508f9ebba367fc3370162e53a3cfd12f5652ad79f0e0bfdf9f9847c6f159/aiohappyeyeballs-2.4.6.tar.gz", hash = "sha256:9b05052f9042985d32ecbe4b59a77ae19c006a78f1344d7fdad69d28ded3d0b0", size = 21726, upload-time = "2025-02-07T17:53:12.277Z" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/4c/03fb05f56551828ec67ceb3665e5dc51638042d204983a03b0a1541475b6/aiohappyeyeballs-2.4.6-py3-none-any.whl", hash = "sha256:147ec992cf873d74f5062644332c539fcd42956dc69453fe5204195e560517e1", size = 14543, upload-time = "2025-02-07T17:53:10.304Z" }, + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, ] [[package]] name = "aiohttp" -version = "3.11.12" +version = "3.12.13" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohappyeyeballs" }, @@ -25,88 +25,93 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/37/4b/952d49c73084fb790cb5c6ead50848c8e96b4980ad806cf4d2ad341eaa03/aiohttp-3.11.12.tar.gz", hash = "sha256:7603ca26d75b1b86160ce1bbe2787a0b706e592af5b2504e12caa88a217767b0", size = 7673175, upload-time = "2025-02-06T00:28:47.88Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/65/42/3880e133590820aa7bc6d068eb7d8e0ad9fdce9b4663f92b821d3f6b5601/aiohttp-3.11.12-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aa8a8caca81c0a3e765f19c6953416c58e2f4cc1b84829af01dd1c771bb2f91f", size = 708721, upload-time = "2025-02-06T00:25:21.091Z" }, - { url = "https://files.pythonhosted.org/packages/d8/8c/04869803bed108b25afad75f94c651b287851843caacbec6677d8f2d572b/aiohttp-3.11.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:84ede78acde96ca57f6cf8ccb8a13fbaf569f6011b9a52f870c662d4dc8cd854", size = 468596, upload-time = "2025-02-06T00:25:25.357Z" }, - { url = "https://files.pythonhosted.org/packages/4f/f4/9074011f0d1335b161c953fb32545b6667cf24465e1932b9767874995c7e/aiohttp-3.11.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:584096938a001378484aa4ee54e05dc79c7b9dd933e271c744a97b3b6f644957", size = 455758, upload-time = "2025-02-06T00:25:28.221Z" }, - { url = "https://files.pythonhosted.org/packages/fd/68/06298c57ef8f534065930b805e6dbd83613f0534447922782fb9920fce28/aiohttp-3.11.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:392432a2dde22b86f70dd4a0e9671a349446c93965f261dbaecfaf28813e5c42", size = 1584797, upload-time = "2025-02-06T00:25:31.02Z" }, - { url = "https://files.pythonhosted.org/packages/bd/1e/cee6b51fcb3b1c4185a7dc62b3113bc136fae07f39386c88c90b7f79f199/aiohttp-3.11.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88d385b8e7f3a870146bf5ea31786ef7463e99eb59e31db56e2315535d811f55", size = 1632535, upload-time = "2025-02-06T00:25:33.003Z" }, - { url = "https://files.pythonhosted.org/packages/71/1f/42424462b7a09da362e1711090db9f8d68a37a33f0aab51307335517c599/aiohttp-3.11.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b10a47e5390c4b30a0d58ee12581003be52eedd506862ab7f97da7a66805befb", size = 1668484, upload-time = "2025-02-06T00:25:35.083Z" }, - { url = "https://files.pythonhosted.org/packages/f6/79/0e25542bbe3c2bfd7a12c7a49c7bce73b09a836f65079e4b77bc2bafc89e/aiohttp-3.11.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b5263dcede17b6b0c41ef0c3ccce847d82a7da98709e75cf7efde3e9e3b5cae", size = 1589708, upload-time = "2025-02-06T00:25:39.127Z" }, - { url = "https://files.pythonhosted.org/packages/d1/13/93ae26b75e23f7d3a613872e472fae836ca100dc5bde5936ebc93ada8890/aiohttp-3.11.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50c5c7b8aa5443304c55c262c5693b108c35a3b61ef961f1e782dd52a2f559c7", size = 1544752, upload-time = "2025-02-06T00:25:41.032Z" }, - { url = "https://files.pythonhosted.org/packages/cf/5e/48847fad1b014ef92ef18ea1339a3b58eb81d3bc717b94c3627f5d2a42c5/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d1c031a7572f62f66f1257db37ddab4cb98bfaf9b9434a3b4840bf3560f5e788", size = 1529417, upload-time = "2025-02-06T00:25:43.639Z" }, - { url = "https://files.pythonhosted.org/packages/ae/56/fbd4ea019303f4877f0e0b8c9de92e9db24338e7545570d3f275f3c74c53/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:7e44eba534381dd2687be50cbd5f2daded21575242ecfdaf86bbeecbc38dae8e", size = 1557808, upload-time = "2025-02-06T00:25:46.281Z" }, - { url = "https://files.pythonhosted.org/packages/f1/43/112189cf6b3c482ecdd6819b420eaa0c2033426f28d741bb7f19db5dd2bb/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:145a73850926018ec1681e734cedcf2716d6a8697d90da11284043b745c286d5", size = 1536765, upload-time = "2025-02-06T00:25:48.707Z" }, - { url = "https://files.pythonhosted.org/packages/30/12/59986547de8306e06c7b30e547ccda02d29636e152366caba2dd8627bfe1/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:2c311e2f63e42c1bf86361d11e2c4a59f25d9e7aabdbdf53dc38b885c5435cdb", size = 1607621, upload-time = "2025-02-06T00:25:51.505Z" }, - { url = "https://files.pythonhosted.org/packages/aa/9b/af3b323b20df3318ed20d701d8242e523d59c842ca93f23134b05c9d5054/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ea756b5a7bac046d202a9a3889b9a92219f885481d78cd318db85b15cc0b7bcf", size = 1628977, upload-time = "2025-02-06T00:25:54.804Z" }, - { url = "https://files.pythonhosted.org/packages/36/62/adf5a331a7bda475cc326dde393fa2bc5849060b1b37ac3d1bee1953f2cd/aiohttp-3.11.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:526c900397f3bbc2db9cb360ce9c35134c908961cdd0ac25b1ae6ffcaa2507ff", size = 1564455, upload-time = "2025-02-06T00:25:56.692Z" }, - { url = "https://files.pythonhosted.org/packages/90/c4/4a24291f22f111a854dfdb54dc94d4e0a5229ccbb7bc7f0bed972aa50410/aiohttp-3.11.12-cp310-cp310-win32.whl", hash = "sha256:b8d3bb96c147b39c02d3db086899679f31958c5d81c494ef0fc9ef5bb1359b3d", size = 416768, upload-time = "2025-02-06T00:26:01.155Z" }, - { url = "https://files.pythonhosted.org/packages/51/69/5221c8006acb7bb10d9e8e2238fb216571bddc2e00a8d95bcfbe2f579c57/aiohttp-3.11.12-cp310-cp310-win_amd64.whl", hash = "sha256:7fe3d65279bfbee8de0fb4f8c17fc4e893eed2dba21b2f680e930cc2b09075c5", size = 442170, upload-time = "2025-02-06T00:26:03.616Z" }, - { url = "https://files.pythonhosted.org/packages/9c/38/35311e70196b6a63cfa033a7f741f800aa8a93f57442991cbe51da2394e7/aiohttp-3.11.12-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:87a2e00bf17da098d90d4145375f1d985a81605267e7f9377ff94e55c5d769eb", size = 708797, upload-time = "2025-02-06T00:26:08.81Z" }, - { url = "https://files.pythonhosted.org/packages/44/3e/46c656e68cbfc4f3fc7cb5d2ba4da6e91607fe83428208028156688f6201/aiohttp-3.11.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b34508f1cd928ce915ed09682d11307ba4b37d0708d1f28e5774c07a7674cac9", size = 468669, upload-time = "2025-02-06T00:26:10.475Z" }, - { url = "https://files.pythonhosted.org/packages/a0/d6/2088fb4fd1e3ac2bfb24bc172223babaa7cdbb2784d33c75ec09e66f62f8/aiohttp-3.11.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:936d8a4f0f7081327014742cd51d320296b56aa6d324461a13724ab05f4b2933", size = 455739, upload-time = "2025-02-06T00:26:11.974Z" }, - { url = "https://files.pythonhosted.org/packages/e7/dc/c443a6954a56f4a58b5efbfdf23cc6f3f0235e3424faf5a0c56264d5c7bb/aiohttp-3.11.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de1378f72def7dfb5dbd73d86c19eda0ea7b0a6873910cc37d57e80f10d64e1", size = 1685858, upload-time = "2025-02-06T00:26:13.654Z" }, - { url = "https://files.pythonhosted.org/packages/25/67/2d5b3aaade1d5d01c3b109aa76e3aa9630531252cda10aa02fb99b0b11a1/aiohttp-3.11.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9d45dbb3aaec05cf01525ee1a7ac72de46a8c425cb75c003acd29f76b1ffe94", size = 1743829, upload-time = "2025-02-06T00:26:15.481Z" }, - { url = "https://files.pythonhosted.org/packages/90/9b/9728fe9a3e1b8521198455d027b0b4035522be18f504b24c5d38d59e7278/aiohttp-3.11.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:930ffa1925393381e1e0a9b82137fa7b34c92a019b521cf9f41263976666a0d6", size = 1785587, upload-time = "2025-02-06T00:26:17.171Z" }, - { url = "https://files.pythonhosted.org/packages/ce/cf/28fbb43d4ebc1b4458374a3c7b6db3b556a90e358e9bbcfe6d9339c1e2b6/aiohttp-3.11.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8340def6737118f5429a5df4e88f440746b791f8f1c4ce4ad8a595f42c980bd5", size = 1675319, upload-time = "2025-02-06T00:26:19.951Z" }, - { url = "https://files.pythonhosted.org/packages/e5/d2/006c459c11218cabaa7bca401f965c9cc828efbdea7e1615d4644eaf23f7/aiohttp-3.11.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4016e383f91f2814e48ed61e6bda7d24c4d7f2402c75dd28f7e1027ae44ea204", size = 1619982, upload-time = "2025-02-06T00:26:21.705Z" }, - { url = "https://files.pythonhosted.org/packages/9d/83/ca425891ebd37bee5d837110f7fddc4d808a7c6c126a7d1b5c3ad72fc6ba/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c0600bcc1adfaaac321422d615939ef300df81e165f6522ad096b73439c0f58", size = 1654176, upload-time = "2025-02-06T00:26:23.607Z" }, - { url = "https://files.pythonhosted.org/packages/25/df/047b1ce88514a1b4915d252513640184b63624e7914e41d846668b8edbda/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:0450ada317a65383b7cce9576096150fdb97396dcfe559109b403c7242faffef", size = 1660198, upload-time = "2025-02-06T00:26:26.686Z" }, - { url = "https://files.pythonhosted.org/packages/d3/cc/6ecb8e343f0902528620b9dbd567028a936d5489bebd7dbb0dd0914f4fdb/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:850ff6155371fd802a280f8d369d4e15d69434651b844bde566ce97ee2277420", size = 1650186, upload-time = "2025-02-06T00:26:28.479Z" }, - { url = "https://files.pythonhosted.org/packages/f8/f8/453df6dd69256ca8c06c53fc8803c9056e2b0b16509b070f9a3b4bdefd6c/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8fd12d0f989c6099e7b0f30dc6e0d1e05499f3337461f0b2b0dadea6c64b89df", size = 1733063, upload-time = "2025-02-06T00:26:31.136Z" }, - { url = "https://files.pythonhosted.org/packages/55/f8/540160787ff3000391de0e5d0d1d33be4c7972f933c21991e2ea105b2d5e/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:76719dd521c20a58a6c256d058547b3a9595d1d885b830013366e27011ffe804", size = 1755306, upload-time = "2025-02-06T00:26:34.133Z" }, - { url = "https://files.pythonhosted.org/packages/30/7d/49f3bfdfefd741576157f8f91caa9ff61a6f3d620ca6339268327518221b/aiohttp-3.11.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:97fe431f2ed646a3b56142fc81d238abcbaff08548d6912acb0b19a0cadc146b", size = 1692909, upload-time = "2025-02-06T00:26:37.281Z" }, - { url = "https://files.pythonhosted.org/packages/40/9c/8ce00afd6f6112ce9a2309dc490fea376ae824708b94b7b5ea9cba979d1d/aiohttp-3.11.12-cp311-cp311-win32.whl", hash = "sha256:e10c440d142fa8b32cfdb194caf60ceeceb3e49807072e0dc3a8887ea80e8c16", size = 416584, upload-time = "2025-02-06T00:26:39.946Z" }, - { url = "https://files.pythonhosted.org/packages/35/97/4d3c5f562f15830de472eb10a7a222655d750839943e0e6d915ef7e26114/aiohttp-3.11.12-cp311-cp311-win_amd64.whl", hash = "sha256:246067ba0cf5560cf42e775069c5d80a8989d14a7ded21af529a4e10e3e0f0e6", size = 442674, upload-time = "2025-02-06T00:26:42.193Z" }, - { url = "https://files.pythonhosted.org/packages/4d/d0/94346961acb476569fca9a644cc6f9a02f97ef75961a6b8d2b35279b8d1f/aiohttp-3.11.12-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e392804a38353900c3fd8b7cacbea5132888f7129f8e241915e90b85f00e3250", size = 704837, upload-time = "2025-02-06T00:26:44.812Z" }, - { url = "https://files.pythonhosted.org/packages/a9/af/05c503f1cc8f97621f199ef4b8db65fb88b8bc74a26ab2adb74789507ad3/aiohttp-3.11.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8fa1510b96c08aaad49303ab11f8803787c99222288f310a62f493faf883ede1", size = 464218, upload-time = "2025-02-06T00:26:46.533Z" }, - { url = "https://files.pythonhosted.org/packages/f2/48/b9949eb645b9bd699153a2ec48751b985e352ab3fed9d98c8115de305508/aiohttp-3.11.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dc065a4285307607df3f3686363e7f8bdd0d8ab35f12226362a847731516e42c", size = 456166, upload-time = "2025-02-06T00:26:48.142Z" }, - { url = "https://files.pythonhosted.org/packages/14/fb/980981807baecb6f54bdd38beb1bd271d9a3a786e19a978871584d026dcf/aiohttp-3.11.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddb31f8474695cd61fc9455c644fc1606c164b93bff2490390d90464b4655df", size = 1682528, upload-time = "2025-02-06T00:26:49.985Z" }, - { url = "https://files.pythonhosted.org/packages/90/cb/77b1445e0a716914e6197b0698b7a3640590da6c692437920c586764d05b/aiohttp-3.11.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dec0000d2d8621d8015c293e24589d46fa218637d820894cb7356c77eca3259", size = 1737154, upload-time = "2025-02-06T00:26:51.913Z" }, - { url = "https://files.pythonhosted.org/packages/ff/24/d6fb1f4cede9ccbe98e4def6f3ed1e1efcb658871bbf29f4863ec646bf38/aiohttp-3.11.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3552fe98e90fdf5918c04769f338a87fa4f00f3b28830ea9b78b1bdc6140e0d", size = 1793435, upload-time = "2025-02-06T00:26:56.182Z" }, - { url = "https://files.pythonhosted.org/packages/17/e2/9f744cee0861af673dc271a3351f59ebd5415928e20080ab85be25641471/aiohttp-3.11.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfe7f984f28a8ae94ff3a7953cd9678550dbd2a1f9bda5dd9c5ae627744c78e", size = 1692010, upload-time = "2025-02-06T00:26:58.504Z" }, - { url = "https://files.pythonhosted.org/packages/90/c4/4a1235c1df544223eb57ba553ce03bc706bdd065e53918767f7fa1ff99e0/aiohttp-3.11.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a481a574af914b6e84624412666cbfbe531a05667ca197804ecc19c97b8ab1b0", size = 1619481, upload-time = "2025-02-06T00:27:01.477Z" }, - { url = "https://files.pythonhosted.org/packages/60/70/cf12d402a94a33abda86dd136eb749b14c8eb9fec1e16adc310e25b20033/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1987770fb4887560363b0e1a9b75aa303e447433c41284d3af2840a2f226d6e0", size = 1641578, upload-time = "2025-02-06T00:27:06.151Z" }, - { url = "https://files.pythonhosted.org/packages/1b/25/7211973fda1f5e833fcfd98ccb7f9ce4fbfc0074e3e70c0157a751d00db8/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a4ac6a0f0f6402854adca4e3259a623f5c82ec3f0c049374133bcb243132baf9", size = 1684463, upload-time = "2025-02-06T00:27:08.336Z" }, - { url = "https://files.pythonhosted.org/packages/93/60/b5905b4d0693f6018b26afa9f2221fefc0dcbd3773fe2dff1a20fb5727f1/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c96a43822f1f9f69cc5c3706af33239489a6294be486a0447fb71380070d4d5f", size = 1646691, upload-time = "2025-02-06T00:27:11.232Z" }, - { url = "https://files.pythonhosted.org/packages/b4/fc/ba1b14d6fdcd38df0b7c04640794b3683e949ea10937c8a58c14d697e93f/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a5e69046f83c0d3cb8f0d5bd9b8838271b1bc898e01562a04398e160953e8eb9", size = 1702269, upload-time = "2025-02-06T00:27:13.639Z" }, - { url = "https://files.pythonhosted.org/packages/5e/39/18c13c6f658b2ba9cc1e0c6fb2d02f98fd653ad2addcdf938193d51a9c53/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:68d54234c8d76d8ef74744f9f9fc6324f1508129e23da8883771cdbb5818cbef", size = 1734782, upload-time = "2025-02-06T00:27:15.651Z" }, - { url = "https://files.pythonhosted.org/packages/9f/d2/ccc190023020e342419b265861877cd8ffb75bec37b7ddd8521dd2c6deb8/aiohttp-3.11.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9fd9dcf9c91affe71654ef77426f5cf8489305e1c66ed4816f5a21874b094b9", size = 1694740, upload-time = "2025-02-06T00:27:18.882Z" }, - { url = "https://files.pythonhosted.org/packages/3f/54/186805bcada64ea90ea909311ffedcd74369bfc6e880d39d2473314daa36/aiohttp-3.11.12-cp312-cp312-win32.whl", hash = "sha256:0ed49efcd0dc1611378beadbd97beb5d9ca8fe48579fc04a6ed0844072261b6a", size = 411530, upload-time = "2025-02-06T00:27:20.899Z" }, - { url = "https://files.pythonhosted.org/packages/3d/63/5eca549d34d141bcd9de50d4e59b913f3641559460c739d5e215693cb54a/aiohttp-3.11.12-cp312-cp312-win_amd64.whl", hash = "sha256:54775858c7f2f214476773ce785a19ee81d1294a6bedc5cc17225355aab74802", size = 437860, upload-time = "2025-02-06T00:27:23.674Z" }, - { url = "https://files.pythonhosted.org/packages/c3/9b/cea185d4b543ae08ee478373e16653722c19fcda10d2d0646f300ce10791/aiohttp-3.11.12-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:413ad794dccb19453e2b97c2375f2ca3cdf34dc50d18cc2693bd5aed7d16f4b9", size = 698148, upload-time = "2025-02-06T00:27:25.478Z" }, - { url = "https://files.pythonhosted.org/packages/91/5c/80d47fe7749fde584d1404a68ade29bcd7e58db8fa11fa38e8d90d77e447/aiohttp-3.11.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a93d28ed4b4b39e6f46fd240896c29b686b75e39cc6992692e3922ff6982b4c", size = 460831, upload-time = "2025-02-06T00:27:28.252Z" }, - { url = "https://files.pythonhosted.org/packages/8e/f9/de568f8a8ca6b061d157c50272620c53168d6e3eeddae78dbb0f7db981eb/aiohttp-3.11.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d589264dbba3b16e8951b6f145d1e6b883094075283dafcab4cdd564a9e353a0", size = 453122, upload-time = "2025-02-06T00:27:30.143Z" }, - { url = "https://files.pythonhosted.org/packages/8b/fd/b775970a047543bbc1d0f66725ba72acef788028fce215dc959fd15a8200/aiohttp-3.11.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5148ca8955affdfeb864aca158ecae11030e952b25b3ae15d4e2b5ba299bad2", size = 1665336, upload-time = "2025-02-06T00:27:31.982Z" }, - { url = "https://files.pythonhosted.org/packages/82/9b/aff01d4f9716245a1b2965f02044e4474fadd2bcfe63cf249ca788541886/aiohttp-3.11.12-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:525410e0790aab036492eeea913858989c4cb070ff373ec3bc322d700bdf47c1", size = 1718111, upload-time = "2025-02-06T00:27:33.983Z" }, - { url = "https://files.pythonhosted.org/packages/e0/a9/166fd2d8b2cc64f08104aa614fad30eee506b563154081bf88ce729bc665/aiohttp-3.11.12-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bd8695be2c80b665ae3f05cb584093a1e59c35ecb7d794d1edd96e8cc9201d7", size = 1775293, upload-time = "2025-02-06T00:27:36.105Z" }, - { url = "https://files.pythonhosted.org/packages/13/c5/0d3c89bd9e36288f10dc246f42518ce8e1c333f27636ac78df091c86bb4a/aiohttp-3.11.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0203433121484b32646a5f5ea93ae86f3d9559d7243f07e8c0eab5ff8e3f70e", size = 1677338, upload-time = "2025-02-06T00:27:38.238Z" }, - { url = "https://files.pythonhosted.org/packages/72/b2/017db2833ef537be284f64ead78725984db8a39276c1a9a07c5c7526e238/aiohttp-3.11.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40cd36749a1035c34ba8d8aaf221b91ca3d111532e5ccb5fa8c3703ab1b967ed", size = 1603365, upload-time = "2025-02-06T00:27:41.281Z" }, - { url = "https://files.pythonhosted.org/packages/fc/72/b66c96a106ec7e791e29988c222141dd1219d7793ffb01e72245399e08d2/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7442662afebbf7b4c6d28cb7aab9e9ce3a5df055fc4116cc7228192ad6cb484", size = 1618464, upload-time = "2025-02-06T00:27:43.379Z" }, - { url = "https://files.pythonhosted.org/packages/3f/50/e68a40f267b46a603bab569d48d57f23508801614e05b3369898c5b2910a/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8a2fb742ef378284a50766e985804bd6adb5adb5aa781100b09befdbfa757b65", size = 1657827, upload-time = "2025-02-06T00:27:45.982Z" }, - { url = "https://files.pythonhosted.org/packages/c5/1d/aafbcdb1773d0ba7c20793ebeedfaba1f3f7462f6fc251f24983ed738aa7/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2cee3b117a8d13ab98b38d5b6bdcd040cfb4181068d05ce0c474ec9db5f3c5bb", size = 1616700, upload-time = "2025-02-06T00:27:48.17Z" }, - { url = "https://files.pythonhosted.org/packages/b0/5e/6cd9724a2932f36e2a6b742436a36d64784322cfb3406ca773f903bb9a70/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f6a19bcab7fbd8f8649d6595624856635159a6527861b9cdc3447af288a00c00", size = 1685643, upload-time = "2025-02-06T00:27:51.183Z" }, - { url = "https://files.pythonhosted.org/packages/8b/38/ea6c91d5c767fd45a18151675a07c710ca018b30aa876a9f35b32fa59761/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e4cecdb52aaa9994fbed6b81d4568427b6002f0a91c322697a4bfcc2b2363f5a", size = 1715487, upload-time = "2025-02-06T00:27:53.431Z" }, - { url = "https://files.pythonhosted.org/packages/8e/24/e9edbcb7d1d93c02e055490348df6f955d675e85a028c33babdcaeda0853/aiohttp-3.11.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:30f546358dfa0953db92ba620101fefc81574f87b2346556b90b5f3ef16e55ce", size = 1672948, upload-time = "2025-02-06T00:27:56.137Z" }, - { url = "https://files.pythonhosted.org/packages/25/be/0b1fb737268e003198f25c3a68c2135e76e4754bf399a879b27bd508a003/aiohttp-3.11.12-cp313-cp313-win32.whl", hash = "sha256:ce1bb21fc7d753b5f8a5d5a4bae99566386b15e716ebdb410154c16c91494d7f", size = 410396, upload-time = "2025-02-06T00:27:58.292Z" }, - { url = "https://files.pythonhosted.org/packages/68/fd/677def96a75057b0a26446b62f8fbb084435b20a7d270c99539c26573bfd/aiohttp-3.11.12-cp313-cp313-win_amd64.whl", hash = "sha256:f7914ab70d2ee8ab91c13e5402122edbc77821c66d2758abb53aabe87f013287", size = 436234, upload-time = "2025-02-06T00:28:01.693Z" }, - { url = "https://files.pythonhosted.org/packages/a7/bd/358c7032c43d4875dcbedc9113b087ef8bc619bee034f9423335698631e3/aiohttp-3.11.12-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c3623053b85b4296cd3925eeb725e386644fd5bc67250b3bb08b0f144803e7b", size = 709588, upload-time = "2025-02-06T00:28:04.576Z" }, - { url = "https://files.pythonhosted.org/packages/9f/87/9e4700a56722c139b6ed4ad9be926183545a1b55e82babd9b082be3ef4c5/aiohttp-3.11.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67453e603cea8e85ed566b2700efa1f6916aefbc0c9fcb2e86aaffc08ec38e78", size = 469076, upload-time = "2025-02-06T00:28:06.953Z" }, - { url = "https://files.pythonhosted.org/packages/c0/fa/585b66076795911800f8f16f0f93ea8fb9bfa5d8fd757bbf78f32d17c2d9/aiohttp-3.11.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6130459189e61baac5a88c10019b21e1f0c6d00ebc770e9ce269475650ff7f73", size = 456148, upload-time = "2025-02-06T00:28:10.646Z" }, - { url = "https://files.pythonhosted.org/packages/ba/6b/a1fe710860b10d83799af8c63cf2ffb63eac4edaa42d76e9540679545951/aiohttp-3.11.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9060addfa4ff753b09392efe41e6af06ea5dd257829199747b9f15bfad819460", size = 1587566, upload-time = "2025-02-06T00:28:13.63Z" }, - { url = "https://files.pythonhosted.org/packages/31/78/ab78f36b44c7239c953afd9bb331edf2b3977925de2ce98545d62e415565/aiohttp-3.11.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34245498eeb9ae54c687a07ad7f160053911b5745e186afe2d0c0f2898a1ab8a", size = 1636411, upload-time = "2025-02-06T00:28:16.28Z" }, - { url = "https://files.pythonhosted.org/packages/e1/5c/b316b559dde4ae983e725132a2fa2518532ad56ca4698d4b71f42af48722/aiohttp-3.11.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dc0fba9a74b471c45ca1a3cb6e6913ebfae416678d90529d188886278e7f3f6", size = 1672484, upload-time = "2025-02-06T00:28:19.936Z" }, - { url = "https://files.pythonhosted.org/packages/90/08/8c409ab4040276a8c9944d5e444121a2f34151872440b3c69f31c35edf18/aiohttp-3.11.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a478aa11b328983c4444dacb947d4513cb371cd323f3845e53caeda6be5589d5", size = 1589689, upload-time = "2025-02-06T00:28:22.937Z" }, - { url = "https://files.pythonhosted.org/packages/e0/25/53b4ceffaac5dcaf4772be41f4f06e7201be5407aa743758e1a37f7d1b63/aiohttp-3.11.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c160a04283c8c6f55b5bf6d4cad59bb9c5b9c9cd08903841b25f1f7109ef1259", size = 1544225, upload-time = "2025-02-06T00:28:25.025Z" }, - { url = "https://files.pythonhosted.org/packages/4a/40/769d221f4067a05974b3352ffa228041bcda72c487689ab4030791691861/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:edb69b9589324bdc40961cdf0657815df674f1743a8d5ad9ab56a99e4833cfdd", size = 1530391, upload-time = "2025-02-06T00:28:27.202Z" }, - { url = "https://files.pythonhosted.org/packages/14/48/22527fadfdfca85fb585870ffd98aece982606775fd2f4ee80270f5c85a0/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ee84c2a22a809c4f868153b178fe59e71423e1f3d6a8cd416134bb231fbf6d3", size = 1559005, upload-time = "2025-02-06T00:28:29.853Z" }, - { url = "https://files.pythonhosted.org/packages/fd/0e/72144954bae5d80a8857dca18b8ed8e2ef76acf557465545ad5b5b9bfb58/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bf4480a5438f80e0f1539e15a7eb8b5f97a26fe087e9828e2c0ec2be119a9f72", size = 1536244, upload-time = "2025-02-06T00:28:32.084Z" }, - { url = "https://files.pythonhosted.org/packages/60/db/a2cfb5565f5e5870757e2d3099f8e24640e746ff2ba9ea899b35b6acad3f/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:e6b2732ef3bafc759f653a98881b5b9cdef0716d98f013d376ee8dfd7285abf1", size = 1607092, upload-time = "2025-02-06T00:28:34.331Z" }, - { url = "https://files.pythonhosted.org/packages/b0/31/87e869650c5532876e83c7c7d9d3f5505c5a738abe991f3ac2264070ee81/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f752e80606b132140883bb262a457c475d219d7163d996dc9072434ffb0784c4", size = 1629268, upload-time = "2025-02-06T00:28:38.134Z" }, - { url = "https://files.pythonhosted.org/packages/d2/73/25fb4d2d259caf4cf23035204315665976a66292a1055d0937c62273675a/aiohttp-3.11.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ab3247d58b393bda5b1c8f31c9edece7162fc13265334217785518dd770792b8", size = 1567511, upload-time = "2025-02-06T00:28:40.42Z" }, - { url = "https://files.pythonhosted.org/packages/a3/59/ef91da9971e187033476945cd18bebc3974930bde81cdf66099b318df7a6/aiohttp-3.11.12-cp39-cp39-win32.whl", hash = "sha256:0d5176f310a7fe6f65608213cc74f4228e4f4ce9fd10bcb2bb6da8fc66991462", size = 417082, upload-time = "2025-02-06T00:28:42.589Z" }, - { url = "https://files.pythonhosted.org/packages/e0/fa/6cfc042c0f59d1fa6eaeeb678b9f13b2c0bf1d7803dae81b93ca55ac6288/aiohttp-3.11.12-cp39-cp39-win_amd64.whl", hash = "sha256:74bd573dde27e58c760d9ca8615c41a57e719bff315c9adb6f2a4281a28e8798", size = 442385, upload-time = "2025-02-06T00:28:45.326Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/42/6e/ab88e7cb2a4058bed2f7870276454f85a7c56cd6da79349eb314fc7bbcaa/aiohttp-3.12.13.tar.gz", hash = "sha256:47e2da578528264a12e4e3dd8dd72a7289e5f812758fe086473fab037a10fcce", size = 7819160, upload-time = "2025-06-14T15:15:41.354Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/2d/27e4347660723738b01daa3f5769d56170f232bf4695dd4613340da135bb/aiohttp-3.12.13-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5421af8f22a98f640261ee48aae3a37f0c41371e99412d55eaf2f8a46d5dad29", size = 702090, upload-time = "2025-06-14T15:12:58.938Z" }, + { url = "https://files.pythonhosted.org/packages/10/0b/4a8e0468ee8f2b9aff3c05f2c3a6be1dfc40b03f68a91b31041d798a9510/aiohttp-3.12.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fcda86f6cb318ba36ed8f1396a6a4a3fd8f856f84d426584392083d10da4de0", size = 478440, upload-time = "2025-06-14T15:13:02.981Z" }, + { url = "https://files.pythonhosted.org/packages/b9/c8/2086df2f9a842b13feb92d071edf756be89250f404f10966b7bc28317f17/aiohttp-3.12.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4cd71c9fb92aceb5a23c4c39d8ecc80389c178eba9feab77f19274843eb9412d", size = 466215, upload-time = "2025-06-14T15:13:04.817Z" }, + { url = "https://files.pythonhosted.org/packages/a7/3d/d23e5bd978bc8012a65853959b13bd3b55c6e5afc172d89c26ad6624c52b/aiohttp-3.12.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34ebf1aca12845066c963016655dac897651e1544f22a34c9b461ac3b4b1d3aa", size = 1648271, upload-time = "2025-06-14T15:13:06.532Z" }, + { url = "https://files.pythonhosted.org/packages/31/31/e00122447bb137591c202786062f26dd383574c9f5157144127077d5733e/aiohttp-3.12.13-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:893a4639694c5b7edd4bdd8141be296042b6806e27cc1d794e585c43010cc294", size = 1622329, upload-time = "2025-06-14T15:13:08.394Z" }, + { url = "https://files.pythonhosted.org/packages/04/01/caef70be3ac38986969045f21f5fb802ce517b3f371f0615206bf8aa6423/aiohttp-3.12.13-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:663d8ee3ffb3494502ebcccb49078faddbb84c1d870f9c1dd5a29e85d1f747ce", size = 1694734, upload-time = "2025-06-14T15:13:09.979Z" }, + { url = "https://files.pythonhosted.org/packages/3f/15/328b71fedecf69a9fd2306549b11c8966e420648a3938d75d3ed5bcb47f6/aiohttp-3.12.13-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0f8f6a85a0006ae2709aa4ce05749ba2cdcb4b43d6c21a16c8517c16593aabe", size = 1737049, upload-time = "2025-06-14T15:13:11.672Z" }, + { url = "https://files.pythonhosted.org/packages/e6/7a/d85866a642158e1147c7da5f93ad66b07e5452a84ec4258e5f06b9071e92/aiohttp-3.12.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1582745eb63df267c92d8b61ca655a0ce62105ef62542c00a74590f306be8cb5", size = 1641715, upload-time = "2025-06-14T15:13:13.548Z" }, + { url = "https://files.pythonhosted.org/packages/14/57/3588800d5d2f5f3e1cb6e7a72747d1abc1e67ba5048e8b845183259c2e9b/aiohttp-3.12.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d59227776ee2aa64226f7e086638baa645f4b044f2947dbf85c76ab11dcba073", size = 1581836, upload-time = "2025-06-14T15:13:15.086Z" }, + { url = "https://files.pythonhosted.org/packages/2f/55/c913332899a916d85781aa74572f60fd98127449b156ad9c19e23135b0e4/aiohttp-3.12.13-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06b07c418bde1c8e737d8fa67741072bd3f5b0fb66cf8c0655172188c17e5fa6", size = 1625685, upload-time = "2025-06-14T15:13:17.163Z" }, + { url = "https://files.pythonhosted.org/packages/4c/34/26cded195f3bff128d6a6d58d7a0be2ae7d001ea029e0fe9008dcdc6a009/aiohttp-3.12.13-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:9445c1842680efac0f81d272fd8db7163acfcc2b1436e3f420f4c9a9c5a50795", size = 1636471, upload-time = "2025-06-14T15:13:19.086Z" }, + { url = "https://files.pythonhosted.org/packages/19/21/70629ca006820fccbcec07f3cd5966cbd966e2d853d6da55339af85555b9/aiohttp-3.12.13-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:09c4767af0b0b98c724f5d47f2bf33395c8986995b0a9dab0575ca81a554a8c0", size = 1611923, upload-time = "2025-06-14T15:13:20.997Z" }, + { url = "https://files.pythonhosted.org/packages/31/80/7fa3f3bebf533aa6ae6508b51ac0de9965e88f9654fa679cc1a29d335a79/aiohttp-3.12.13-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f3854fbde7a465318ad8d3fc5bef8f059e6d0a87e71a0d3360bb56c0bf87b18a", size = 1691511, upload-time = "2025-06-14T15:13:22.54Z" }, + { url = "https://files.pythonhosted.org/packages/0f/7a/359974653a3cdd3e9cee8ca10072a662c3c0eb46a359c6a1f667b0296e2f/aiohttp-3.12.13-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2332b4c361c05ecd381edb99e2a33733f3db906739a83a483974b3df70a51b40", size = 1714751, upload-time = "2025-06-14T15:13:24.366Z" }, + { url = "https://files.pythonhosted.org/packages/2d/24/0aa03d522171ce19064347afeefadb008be31ace0bbb7d44ceb055700a14/aiohttp-3.12.13-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1561db63fa1b658cd94325d303933553ea7d89ae09ff21cc3bcd41b8521fbbb6", size = 1643090, upload-time = "2025-06-14T15:13:26.231Z" }, + { url = "https://files.pythonhosted.org/packages/86/2e/7d4b0026a41e4b467e143221c51b279083b7044a4b104054f5c6464082ff/aiohttp-3.12.13-cp310-cp310-win32.whl", hash = "sha256:a0be857f0b35177ba09d7c472825d1b711d11c6d0e8a2052804e3b93166de1ad", size = 427526, upload-time = "2025-06-14T15:13:27.988Z" }, + { url = "https://files.pythonhosted.org/packages/17/de/34d998da1e7f0de86382160d039131e9b0af1962eebfe53dda2b61d250e7/aiohttp-3.12.13-cp310-cp310-win_amd64.whl", hash = "sha256:fcc30ad4fb5cb41a33953292d45f54ef4066746d625992aeac33b8c681173178", size = 450734, upload-time = "2025-06-14T15:13:29.394Z" }, + { url = "https://files.pythonhosted.org/packages/6a/65/5566b49553bf20ffed6041c665a5504fb047cefdef1b701407b8ce1a47c4/aiohttp-3.12.13-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7c229b1437aa2576b99384e4be668af1db84b31a45305d02f61f5497cfa6f60c", size = 709401, upload-time = "2025-06-14T15:13:30.774Z" }, + { url = "https://files.pythonhosted.org/packages/14/b5/48e4cc61b54850bdfafa8fe0b641ab35ad53d8e5a65ab22b310e0902fa42/aiohttp-3.12.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:04076d8c63471e51e3689c93940775dc3d12d855c0c80d18ac5a1c68f0904358", size = 481669, upload-time = "2025-06-14T15:13:32.316Z" }, + { url = "https://files.pythonhosted.org/packages/04/4f/e3f95c8b2a20a0437d51d41d5ccc4a02970d8ad59352efb43ea2841bd08e/aiohttp-3.12.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:55683615813ce3601640cfaa1041174dc956d28ba0511c8cbd75273eb0587014", size = 469933, upload-time = "2025-06-14T15:13:34.104Z" }, + { url = "https://files.pythonhosted.org/packages/41/c9/c5269f3b6453b1cfbd2cfbb6a777d718c5f086a3727f576c51a468b03ae2/aiohttp-3.12.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:921bc91e602d7506d37643e77819cb0b840d4ebb5f8d6408423af3d3bf79a7b7", size = 1740128, upload-time = "2025-06-14T15:13:35.604Z" }, + { url = "https://files.pythonhosted.org/packages/6f/49/a3f76caa62773d33d0cfaa842bdf5789a78749dbfe697df38ab1badff369/aiohttp-3.12.13-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e72d17fe0974ddeae8ed86db297e23dba39c7ac36d84acdbb53df2e18505a013", size = 1688796, upload-time = "2025-06-14T15:13:37.125Z" }, + { url = "https://files.pythonhosted.org/packages/ad/e4/556fccc4576dc22bf18554b64cc873b1a3e5429a5bdb7bbef7f5d0bc7664/aiohttp-3.12.13-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0653d15587909a52e024a261943cf1c5bdc69acb71f411b0dd5966d065a51a47", size = 1787589, upload-time = "2025-06-14T15:13:38.745Z" }, + { url = "https://files.pythonhosted.org/packages/b9/3d/d81b13ed48e1a46734f848e26d55a7391708421a80336e341d2aef3b6db2/aiohttp-3.12.13-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a77b48997c66722c65e157c06c74332cdf9c7ad00494b85ec43f324e5c5a9b9a", size = 1826635, upload-time = "2025-06-14T15:13:40.733Z" }, + { url = "https://files.pythonhosted.org/packages/75/a5/472e25f347da88459188cdaadd1f108f6292f8a25e62d226e63f860486d1/aiohttp-3.12.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6946bae55fd36cfb8e4092c921075cde029c71c7cb571d72f1079d1e4e013bc", size = 1729095, upload-time = "2025-06-14T15:13:42.312Z" }, + { url = "https://files.pythonhosted.org/packages/b9/fe/322a78b9ac1725bfc59dfc301a5342e73d817592828e4445bd8f4ff83489/aiohttp-3.12.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f95db8c8b219bcf294a53742c7bda49b80ceb9d577c8e7aa075612b7f39ffb7", size = 1666170, upload-time = "2025-06-14T15:13:44.884Z" }, + { url = "https://files.pythonhosted.org/packages/7a/77/ec80912270e231d5e3839dbd6c065472b9920a159ec8a1895cf868c2708e/aiohttp-3.12.13-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:03d5eb3cfb4949ab4c74822fb3326cd9655c2b9fe22e4257e2100d44215b2e2b", size = 1714444, upload-time = "2025-06-14T15:13:46.401Z" }, + { url = "https://files.pythonhosted.org/packages/21/b2/fb5aedbcb2b58d4180e58500e7c23ff8593258c27c089abfbcc7db65bd40/aiohttp-3.12.13-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:6383dd0ffa15515283c26cbf41ac8e6705aab54b4cbb77bdb8935a713a89bee9", size = 1709604, upload-time = "2025-06-14T15:13:48.377Z" }, + { url = "https://files.pythonhosted.org/packages/e3/15/a94c05f7c4dc8904f80b6001ad6e07e035c58a8ebfcc15e6b5d58500c858/aiohttp-3.12.13-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6548a411bc8219b45ba2577716493aa63b12803d1e5dc70508c539d0db8dbf5a", size = 1689786, upload-time = "2025-06-14T15:13:50.401Z" }, + { url = "https://files.pythonhosted.org/packages/1d/fd/0d2e618388f7a7a4441eed578b626bda9ec6b5361cd2954cfc5ab39aa170/aiohttp-3.12.13-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:81b0fcbfe59a4ca41dc8f635c2a4a71e63f75168cc91026c61be665945739e2d", size = 1783389, upload-time = "2025-06-14T15:13:51.945Z" }, + { url = "https://files.pythonhosted.org/packages/a6/6b/6986d0c75996ef7e64ff7619b9b7449b1d1cbbe05c6755e65d92f1784fe9/aiohttp-3.12.13-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:6a83797a0174e7995e5edce9dcecc517c642eb43bc3cba296d4512edf346eee2", size = 1803853, upload-time = "2025-06-14T15:13:53.533Z" }, + { url = "https://files.pythonhosted.org/packages/21/65/cd37b38f6655d95dd07d496b6d2f3924f579c43fd64b0e32b547b9c24df5/aiohttp-3.12.13-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a5734d8469a5633a4e9ffdf9983ff7cdb512524645c7a3d4bc8a3de45b935ac3", size = 1716909, upload-time = "2025-06-14T15:13:55.148Z" }, + { url = "https://files.pythonhosted.org/packages/fd/20/2de7012427dc116714c38ca564467f6143aec3d5eca3768848d62aa43e62/aiohttp-3.12.13-cp311-cp311-win32.whl", hash = "sha256:fef8d50dfa482925bb6b4c208b40d8e9fa54cecba923dc65b825a72eed9a5dbd", size = 427036, upload-time = "2025-06-14T15:13:57.076Z" }, + { url = "https://files.pythonhosted.org/packages/f8/b6/98518bcc615ef998a64bef371178b9afc98ee25895b4f476c428fade2220/aiohttp-3.12.13-cp311-cp311-win_amd64.whl", hash = "sha256:9a27da9c3b5ed9d04c36ad2df65b38a96a37e9cfba6f1381b842d05d98e6afe9", size = 451427, upload-time = "2025-06-14T15:13:58.505Z" }, + { url = "https://files.pythonhosted.org/packages/b4/6a/ce40e329788013cd190b1d62bbabb2b6a9673ecb6d836298635b939562ef/aiohttp-3.12.13-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0aa580cf80558557285b49452151b9c69f2fa3ad94c5c9e76e684719a8791b73", size = 700491, upload-time = "2025-06-14T15:14:00.048Z" }, + { url = "https://files.pythonhosted.org/packages/28/d9/7150d5cf9163e05081f1c5c64a0cdf3c32d2f56e2ac95db2a28fe90eca69/aiohttp-3.12.13-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b103a7e414b57e6939cc4dece8e282cfb22043efd0c7298044f6594cf83ab347", size = 475104, upload-time = "2025-06-14T15:14:01.691Z" }, + { url = "https://files.pythonhosted.org/packages/f8/91/d42ba4aed039ce6e449b3e2db694328756c152a79804e64e3da5bc19dffc/aiohttp-3.12.13-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78f64e748e9e741d2eccff9597d09fb3cd962210e5b5716047cbb646dc8fe06f", size = 467948, upload-time = "2025-06-14T15:14:03.561Z" }, + { url = "https://files.pythonhosted.org/packages/99/3b/06f0a632775946981d7c4e5a865cddb6e8dfdbaed2f56f9ade7bb4a1039b/aiohttp-3.12.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c955989bf4c696d2ededc6b0ccb85a73623ae6e112439398935362bacfaaf6", size = 1714742, upload-time = "2025-06-14T15:14:05.558Z" }, + { url = "https://files.pythonhosted.org/packages/92/a6/2552eebad9ec5e3581a89256276009e6a974dc0793632796af144df8b740/aiohttp-3.12.13-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d640191016763fab76072c87d8854a19e8e65d7a6fcfcbf017926bdbbb30a7e5", size = 1697393, upload-time = "2025-06-14T15:14:07.194Z" }, + { url = "https://files.pythonhosted.org/packages/d8/9f/bd08fdde114b3fec7a021381b537b21920cdd2aa29ad48c5dffd8ee314f1/aiohttp-3.12.13-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4dc507481266b410dede95dd9f26c8d6f5a14315372cc48a6e43eac652237d9b", size = 1752486, upload-time = "2025-06-14T15:14:08.808Z" }, + { url = "https://files.pythonhosted.org/packages/f7/e1/affdea8723aec5bd0959171b5490dccd9a91fcc505c8c26c9f1dca73474d/aiohttp-3.12.13-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8a94daa873465d518db073bd95d75f14302e0208a08e8c942b2f3f1c07288a75", size = 1798643, upload-time = "2025-06-14T15:14:10.767Z" }, + { url = "https://files.pythonhosted.org/packages/f3/9d/666d856cc3af3a62ae86393baa3074cc1d591a47d89dc3bf16f6eb2c8d32/aiohttp-3.12.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177f52420cde4ce0bb9425a375d95577fe082cb5721ecb61da3049b55189e4e6", size = 1718082, upload-time = "2025-06-14T15:14:12.38Z" }, + { url = "https://files.pythonhosted.org/packages/f3/ce/3c185293843d17be063dada45efd2712bb6bf6370b37104b4eda908ffdbd/aiohttp-3.12.13-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f7df1f620ec40f1a7fbcb99ea17d7326ea6996715e78f71a1c9a021e31b96b8", size = 1633884, upload-time = "2025-06-14T15:14:14.415Z" }, + { url = "https://files.pythonhosted.org/packages/3a/5b/f3413f4b238113be35dfd6794e65029250d4b93caa0974ca572217745bdb/aiohttp-3.12.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3062d4ad53b36e17796dce1c0d6da0ad27a015c321e663657ba1cc7659cfc710", size = 1694943, upload-time = "2025-06-14T15:14:16.48Z" }, + { url = "https://files.pythonhosted.org/packages/82/c8/0e56e8bf12081faca85d14a6929ad5c1263c146149cd66caa7bc12255b6d/aiohttp-3.12.13-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:8605e22d2a86b8e51ffb5253d9045ea73683d92d47c0b1438e11a359bdb94462", size = 1716398, upload-time = "2025-06-14T15:14:18.589Z" }, + { url = "https://files.pythonhosted.org/packages/ea/f3/33192b4761f7f9b2f7f4281365d925d663629cfaea093a64b658b94fc8e1/aiohttp-3.12.13-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:54fbbe6beafc2820de71ece2198458a711e224e116efefa01b7969f3e2b3ddae", size = 1657051, upload-time = "2025-06-14T15:14:20.223Z" }, + { url = "https://files.pythonhosted.org/packages/5e/0b/26ddd91ca8f84c48452431cb4c5dd9523b13bc0c9766bda468e072ac9e29/aiohttp-3.12.13-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:050bd277dfc3768b606fd4eae79dd58ceda67d8b0b3c565656a89ae34525d15e", size = 1736611, upload-time = "2025-06-14T15:14:21.988Z" }, + { url = "https://files.pythonhosted.org/packages/c3/8d/e04569aae853302648e2c138a680a6a2f02e374c5b6711732b29f1e129cc/aiohttp-3.12.13-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2637a60910b58f50f22379b6797466c3aa6ae28a6ab6404e09175ce4955b4e6a", size = 1764586, upload-time = "2025-06-14T15:14:23.979Z" }, + { url = "https://files.pythonhosted.org/packages/ac/98/c193c1d1198571d988454e4ed75adc21c55af247a9fda08236602921c8c8/aiohttp-3.12.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e986067357550d1aaa21cfe9897fa19e680110551518a5a7cf44e6c5638cb8b5", size = 1724197, upload-time = "2025-06-14T15:14:25.692Z" }, + { url = "https://files.pythonhosted.org/packages/e7/9e/07bb8aa11eec762c6b1ff61575eeeb2657df11ab3d3abfa528d95f3e9337/aiohttp-3.12.13-cp312-cp312-win32.whl", hash = "sha256:ac941a80aeea2aaae2875c9500861a3ba356f9ff17b9cb2dbfb5cbf91baaf5bf", size = 421771, upload-time = "2025-06-14T15:14:27.364Z" }, + { url = "https://files.pythonhosted.org/packages/52/66/3ce877e56ec0813069cdc9607cd979575859c597b6fb9b4182c6d5f31886/aiohttp-3.12.13-cp312-cp312-win_amd64.whl", hash = "sha256:671f41e6146a749b6c81cb7fd07f5a8356d46febdaaaf07b0e774ff04830461e", size = 447869, upload-time = "2025-06-14T15:14:29.05Z" }, + { url = "https://files.pythonhosted.org/packages/11/0f/db19abdf2d86aa1deec3c1e0e5ea46a587b97c07a16516b6438428b3a3f8/aiohttp-3.12.13-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d4a18e61f271127465bdb0e8ff36e8f02ac4a32a80d8927aa52371e93cd87938", size = 694910, upload-time = "2025-06-14T15:14:30.604Z" }, + { url = "https://files.pythonhosted.org/packages/d5/81/0ab551e1b5d7f1339e2d6eb482456ccbe9025605b28eed2b1c0203aaaade/aiohttp-3.12.13-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:532542cb48691179455fab429cdb0d558b5e5290b033b87478f2aa6af5d20ace", size = 472566, upload-time = "2025-06-14T15:14:32.275Z" }, + { url = "https://files.pythonhosted.org/packages/34/3f/6b7d336663337672d29b1f82d1f252ec1a040fe2d548f709d3f90fa2218a/aiohttp-3.12.13-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d7eea18b52f23c050ae9db5d01f3d264ab08f09e7356d6f68e3f3ac2de9dfabb", size = 464856, upload-time = "2025-06-14T15:14:34.132Z" }, + { url = "https://files.pythonhosted.org/packages/26/7f/32ca0f170496aa2ab9b812630fac0c2372c531b797e1deb3deb4cea904bd/aiohttp-3.12.13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad7c8e5c25f2a26842a7c239de3f7b6bfb92304593ef997c04ac49fb703ff4d7", size = 1703683, upload-time = "2025-06-14T15:14:36.034Z" }, + { url = "https://files.pythonhosted.org/packages/ec/53/d5513624b33a811c0abea8461e30a732294112318276ce3dbf047dbd9d8b/aiohttp-3.12.13-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6af355b483e3fe9d7336d84539fef460120c2f6e50e06c658fe2907c69262d6b", size = 1684946, upload-time = "2025-06-14T15:14:38Z" }, + { url = "https://files.pythonhosted.org/packages/37/72/4c237dd127827b0247dc138d3ebd49c2ded6114c6991bbe969058575f25f/aiohttp-3.12.13-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a95cf9f097498f35c88e3609f55bb47b28a5ef67f6888f4390b3d73e2bac6177", size = 1737017, upload-time = "2025-06-14T15:14:39.951Z" }, + { url = "https://files.pythonhosted.org/packages/0d/67/8a7eb3afa01e9d0acc26e1ef847c1a9111f8b42b82955fcd9faeb84edeb4/aiohttp-3.12.13-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8ed8c38a1c584fe99a475a8f60eefc0b682ea413a84c6ce769bb19a7ff1c5ef", size = 1786390, upload-time = "2025-06-14T15:14:42.151Z" }, + { url = "https://files.pythonhosted.org/packages/48/19/0377df97dd0176ad23cd8cad4fd4232cfeadcec6c1b7f036315305c98e3f/aiohttp-3.12.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a0b9170d5d800126b5bc89d3053a2363406d6e327afb6afaeda2d19ee8bb103", size = 1708719, upload-time = "2025-06-14T15:14:44.039Z" }, + { url = "https://files.pythonhosted.org/packages/61/97/ade1982a5c642b45f3622255173e40c3eed289c169f89d00eeac29a89906/aiohttp-3.12.13-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:372feeace612ef8eb41f05ae014a92121a512bd5067db8f25101dd88a8db11da", size = 1622424, upload-time = "2025-06-14T15:14:45.945Z" }, + { url = "https://files.pythonhosted.org/packages/99/ab/00ad3eea004e1d07ccc406e44cfe2b8da5acb72f8c66aeeb11a096798868/aiohttp-3.12.13-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a946d3702f7965d81f7af7ea8fb03bb33fe53d311df48a46eeca17e9e0beed2d", size = 1675447, upload-time = "2025-06-14T15:14:47.911Z" }, + { url = "https://files.pythonhosted.org/packages/3f/fe/74e5ce8b2ccaba445fe0087abc201bfd7259431d92ae608f684fcac5d143/aiohttp-3.12.13-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:a0c4725fae86555bbb1d4082129e21de7264f4ab14baf735278c974785cd2041", size = 1707110, upload-time = "2025-06-14T15:14:50.334Z" }, + { url = "https://files.pythonhosted.org/packages/ef/c4/39af17807f694f7a267bd8ab1fbacf16ad66740862192a6c8abac2bff813/aiohttp-3.12.13-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9b28ea2f708234f0a5c44eb6c7d9eb63a148ce3252ba0140d050b091b6e842d1", size = 1649706, upload-time = "2025-06-14T15:14:52.378Z" }, + { url = "https://files.pythonhosted.org/packages/38/e8/f5a0a5f44f19f171d8477059aa5f28a158d7d57fe1a46c553e231f698435/aiohttp-3.12.13-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d4f5becd2a5791829f79608c6f3dc745388162376f310eb9c142c985f9441cc1", size = 1725839, upload-time = "2025-06-14T15:14:54.617Z" }, + { url = "https://files.pythonhosted.org/packages/fd/ac/81acc594c7f529ef4419d3866913f628cd4fa9cab17f7bf410a5c3c04c53/aiohttp-3.12.13-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:60f2ce6b944e97649051d5f5cc0f439360690b73909230e107fd45a359d3e911", size = 1759311, upload-time = "2025-06-14T15:14:56.597Z" }, + { url = "https://files.pythonhosted.org/packages/38/0d/aabe636bd25c6ab7b18825e5a97d40024da75152bec39aa6ac8b7a677630/aiohttp-3.12.13-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:69fc1909857401b67bf599c793f2183fbc4804717388b0b888f27f9929aa41f3", size = 1708202, upload-time = "2025-06-14T15:14:58.598Z" }, + { url = "https://files.pythonhosted.org/packages/1f/ab/561ef2d8a223261683fb95a6283ad0d36cb66c87503f3a7dde7afe208bb2/aiohttp-3.12.13-cp313-cp313-win32.whl", hash = "sha256:7d7e68787a2046b0e44ba5587aa723ce05d711e3a3665b6b7545328ac8e3c0dd", size = 420794, upload-time = "2025-06-14T15:15:00.939Z" }, + { url = "https://files.pythonhosted.org/packages/9d/47/b11d0089875a23bff0abd3edb5516bcd454db3fefab8604f5e4b07bd6210/aiohttp-3.12.13-cp313-cp313-win_amd64.whl", hash = "sha256:5a178390ca90419bfd41419a809688c368e63c86bd725e1186dd97f6b89c2706", size = 446735, upload-time = "2025-06-14T15:15:02.858Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/0f6b2b4797ac364b6ecc9176bb2dd24d4a9aeaa77ecb093c7f87e44dfbd6/aiohttp-3.12.13-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:36f6c973e003dc9b0bb4e8492a643641ea8ef0e97ff7aaa5c0f53d68839357b4", size = 704988, upload-time = "2025-06-14T15:15:04.705Z" }, + { url = "https://files.pythonhosted.org/packages/52/38/d51ea984c777b203959030895c1c8b1f9aac754f8e919e4942edce05958e/aiohttp-3.12.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6cbfc73179bd67c229eb171e2e3745d2afd5c711ccd1e40a68b90427f282eab1", size = 479967, upload-time = "2025-06-14T15:15:06.575Z" }, + { url = "https://files.pythonhosted.org/packages/9d/0a/62f1c2914840eb2184939e773b65e1e5d6b651b78134798263467f0d2467/aiohttp-3.12.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1e8b27b2d414f7e3205aa23bb4a692e935ef877e3a71f40d1884f6e04fd7fa74", size = 467373, upload-time = "2025-06-14T15:15:08.788Z" }, + { url = "https://files.pythonhosted.org/packages/7b/4e/327a4b56bb940afb03ee45d5fd1ef7dae5ed6617889d61ed8abf0548310b/aiohttp-3.12.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eabded0c2b2ef56243289112c48556c395d70150ce4220d9008e6b4b3dd15690", size = 1642326, upload-time = "2025-06-14T15:15:10.74Z" }, + { url = "https://files.pythonhosted.org/packages/55/5d/f0277aad4d85a56cd6102335d5111c7c6d1f98cb760aa485e4fe11a24f52/aiohttp-3.12.13-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:003038e83f1a3ff97409999995ec02fe3008a1d675478949643281141f54751d", size = 1616820, upload-time = "2025-06-14T15:15:12.77Z" }, + { url = "https://files.pythonhosted.org/packages/f2/ff/909193459a6d32ee806d9f7ae2342c940ee97d2c1416140c5aec3bd6bfc0/aiohttp-3.12.13-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b6f46613031dbc92bdcaad9c4c22c7209236ec501f9c0c5f5f0b6a689bf50f3", size = 1690448, upload-time = "2025-06-14T15:15:14.754Z" }, + { url = "https://files.pythonhosted.org/packages/45/e7/14d09183849e9bd69d8d5bf7df0ab7603996b83b00540e0890eeefa20e1e/aiohttp-3.12.13-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c332c6bb04650d59fb94ed96491f43812549a3ba6e7a16a218e612f99f04145e", size = 1729763, upload-time = "2025-06-14T15:15:16.783Z" }, + { url = "https://files.pythonhosted.org/packages/55/01/07b980d6226574cc2d157fa4978a3d77270a4e860193a579630a81b30e30/aiohttp-3.12.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fea41a2c931fb582cb15dc86a3037329e7b941df52b487a9f8b5aa960153cbd", size = 1636002, upload-time = "2025-06-14T15:15:18.871Z" }, + { url = "https://files.pythonhosted.org/packages/73/cf/20a1f75ca3d8e48065412e80b79bb1c349e26a4fa51d660be186a9c0c1e3/aiohttp-3.12.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:846104f45d18fb390efd9b422b27d8f3cf8853f1218c537f36e71a385758c896", size = 1571003, upload-time = "2025-06-14T15:15:20.95Z" }, + { url = "https://files.pythonhosted.org/packages/e1/99/09520d83e5964d6267074be9c66698e2003dfe8c66465813f57b029dec8c/aiohttp-3.12.13-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d6c85ac7dd350f8da2520bac8205ce99df4435b399fa7f4dc4a70407073e390", size = 1618964, upload-time = "2025-06-14T15:15:23.155Z" }, + { url = "https://files.pythonhosted.org/packages/3a/01/c68f2c7632441fbbfc4a835e003e61eb1d63531857b0a2b73c9698846fa8/aiohttp-3.12.13-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5a1ecce0ed281bec7da8550da052a6b89552db14d0a0a45554156f085a912f48", size = 1629103, upload-time = "2025-06-14T15:15:25.209Z" }, + { url = "https://files.pythonhosted.org/packages/fb/fe/f9540bf12fa443d8870ecab70260c02140ed8b4c37884a2e1050bdd689a2/aiohttp-3.12.13-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:5304d74867028cca8f64f1cc1215eb365388033c5a691ea7aa6b0dc47412f495", size = 1605745, upload-time = "2025-06-14T15:15:27.604Z" }, + { url = "https://files.pythonhosted.org/packages/91/d7/526f1d16ca01e0c995887097b31e39c2e350dc20c1071e9b2dcf63a86fcd/aiohttp-3.12.13-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:64d1f24ee95a2d1e094a4cd7a9b7d34d08db1bbcb8aa9fb717046b0a884ac294", size = 1693348, upload-time = "2025-06-14T15:15:30.151Z" }, + { url = "https://files.pythonhosted.org/packages/cd/0a/c103fdaab6fbde7c5f10450b5671dca32cea99800b1303ee8194a799bbb9/aiohttp-3.12.13-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:119c79922a7001ca6a9e253228eb39b793ea994fd2eccb79481c64b5f9d2a055", size = 1709023, upload-time = "2025-06-14T15:15:32.881Z" }, + { url = "https://files.pythonhosted.org/packages/2f/bc/b8d14e754b5e0bf9ecf6df4b930f2cbd6eaaafcdc1b2f9271968747fb6e3/aiohttp-3.12.13-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:bb18f00396d22e2f10cd8825d671d9f9a3ba968d708a559c02a627536b36d91c", size = 1638691, upload-time = "2025-06-14T15:15:35.033Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7b/44b77bf4c48d95d81af5c57e79337d0d51350a85a84e9997a99a6205c441/aiohttp-3.12.13-cp39-cp39-win32.whl", hash = "sha256:0022de47ef63fd06b065d430ac79c6b0bd24cdae7feaf0e8c6bac23b805a23a8", size = 428365, upload-time = "2025-06-14T15:15:37.369Z" }, + { url = "https://files.pythonhosted.org/packages/e5/cb/aaa022eb993e7d51928dc22d743ed17addb40142250e829701c5e6679615/aiohttp-3.12.13-cp39-cp39-win_amd64.whl", hash = "sha256:29e08111ccf81b2734ae03f1ad1cb03b9615e7d8f616764f22f71209c094f122", size = 451652, upload-time = "2025-06-14T15:15:39.079Z" }, ] [[package]] @@ -875,7 +880,7 @@ wheels = [ [[package]] name = "jsonschema" -version = "4.23.0" +version = "4.24.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -883,9 +888,9 @@ dependencies = [ { name = "referencing" }, { name = "rpds-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778, upload-time = "2024-07-08T18:40:05.546Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload-time = "2025-05-26T18:48:10.459Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462, upload-time = "2024-07-08T18:40:00.165Z" }, + { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload-time = "2025-05-26T18:48:08.417Z" }, ] [[package]] @@ -1062,47 +1067,47 @@ wheels = [ [[package]] name = "memray" -version = "1.15.0" +version = "1.17.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jinja2" }, { name = "rich" }, { name = "textual" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e8/d3/b2a01137e2391917928187c4c2837c2750cc832c99a6aecd6e0d6ea07c58/memray-1.15.0.tar.gz", hash = "sha256:1beffa2bcba3dbe0f095d547927286eca46e272798b83026dd1b5db58e16ed56", size = 1025344, upload-time = "2024-12-03T22:50:12.589Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/91/17/f7913c0303ff9769d7961a9390cb02fa109c8c7b2e502eea72883ca5ecb4/memray-1.15.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:9b623c0c651d611dd068236566a8a202250e3d59307c3a3f241acc47835e73eb", size = 923273, upload-time = "2024-12-03T22:48:46.378Z" }, - { url = "https://files.pythonhosted.org/packages/e9/78/790f486c107131a20ec4748dd789bce5a287f9b30266dbff65a6ec2e1ed7/memray-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74765f92887b7eed152e3b9f14c147c43bf0247417b18c7ea0dec173cd01633c", size = 898482, upload-time = "2024-12-03T22:48:48.971Z" }, - { url = "https://files.pythonhosted.org/packages/f9/4c/b99fcfd7dfc6be4c689abcb38bdfb196ae2ab22ddb3e637802574fa046fe/memray-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:a5c6be5f9c2280b5ba077cbfec4706f209f9c0c2cd3a53d949ab9f4ee1f6a255", size = 8248988, upload-time = "2024-12-03T22:48:51.062Z" }, - { url = "https://files.pythonhosted.org/packages/8a/31/902f8d0306a4291a808bbb81b28f72ecec9cda83102cd1b1deb6fa2bea26/memray-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:68bdad519b644539440914e1f6a04995631d0e31311ebe0977d949f2125bb579", size = 8320210, upload-time = "2024-12-03T22:48:53.458Z" }, - { url = "https://files.pythonhosted.org/packages/04/06/4766c52243eca97faaa90e37d1f1fbba63b3280d0794ec1302921e37ae98/memray-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4964c6bd555a0f1755dfdb97a8d9864e646054594449c66757441f7d7682405", size = 7944032, upload-time = "2024-12-03T22:48:55.865Z" }, - { url = "https://files.pythonhosted.org/packages/a4/27/2c4fabe6d5b77307dfeef0657ab99701e6f0f88f51b1f24f8fd79254e911/memray-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:92212b85c7d843126e4d343c8ca024f4a57537017b9ac7611864963b322aafae", size = 8278957, upload-time = "2024-12-03T22:48:58.17Z" }, - { url = "https://files.pythonhosted.org/packages/f9/a0/9c56b524fe5adfc642b8fe4db70625f061d791f5112de71f9a02ea62f153/memray-1.15.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:cb8997e113378b9ac8bbd9b17f4f867fc5c1eea1980d873be3ebe4c2f1176784", size = 927483, upload-time = "2024-12-03T22:49:01.358Z" }, - { url = "https://files.pythonhosted.org/packages/53/ec/e5baba698b616276006a027f020d9d62ce17ea8cded8b46d422e8d0a4b62/memray-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ee45d919d81bfeb33677357dd5d248f3cad1d56be2ebd1853d4615a9f965b11", size = 901485, upload-time = "2024-12-03T22:49:03.298Z" }, - { url = "https://files.pythonhosted.org/packages/1d/2b/ebda2035c3c5512a0ace12fd0ef7bc05ea3fd34b4088492ebbb54e3b326d/memray-1.15.0-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a6b740aad69e7e5f82ffff53a8edef1313ff0b5e9b7253912da16e905dcb1dcb", size = 8437653, upload-time = "2024-12-03T22:49:05.347Z" }, - { url = "https://files.pythonhosted.org/packages/76/55/f01ab44fa26d41ea2dd3b24423886b47959c03daad5d86248809e0bdf521/memray-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0045611f2da496e35d37a5ddfa2b6a74bbc82e47087924c07b3f520448297b26", size = 8065095, upload-time = "2024-12-03T22:49:07.986Z" }, - { url = "https://files.pythonhosted.org/packages/53/a4/c4765074938fe605941f36aa5bc7e0ccc709c8bf5e96dbf2839fe981324e/memray-1.15.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca5688e33a833de604d0e2de01b5bf11a4ac1d768998f8831a375a343dc7acaf", size = 8160735, upload-time = "2024-12-03T22:49:10.226Z" }, - { url = "https://files.pythonhosted.org/packages/40/d4/af8c74a8a4c8dc6ae83e46e018309ea41db1595720081ee1ffe8704e81e2/memray-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bbad938c3fdcebe0cf3c568fb8f8633ab37ab08ad4db167e0991e214d6f595b", size = 8441391, upload-time = "2024-12-03T22:49:12.421Z" }, - { url = "https://files.pythonhosted.org/packages/36/43/a156f7c7aa27603e5fe1e0d0ce43d4d9864c47ca9160f87e675727ad07df/memray-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4eb50295bd87a091a85ec71f0ee612c5d709df490fea8a3adc4410f5da4f695", size = 8405459, upload-time = "2024-12-03T22:49:15.192Z" }, - { url = "https://files.pythonhosted.org/packages/46/87/9c62e12fa59967852d41df32fe5a0117d2bcd789b72960051c22a2052782/memray-1.15.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:d13554a25129593872b5fbcd55ac34453239e51d9b6ace258329596ccce22bb3", size = 927561, upload-time = "2024-12-03T22:49:17.894Z" }, - { url = "https://files.pythonhosted.org/packages/0a/9e/8f88ef0e037ca9f11fd1e25e5abcc220bd368adfd9185630b37c405e6aa7/memray-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8cfe15962a9002ede8b1f8b4f045d95855100a8a60a9bf0d9f2b92950f914189", size = 899042, upload-time = "2024-12-03T22:49:19.24Z" }, - { url = "https://files.pythonhosted.org/packages/06/ae/107ce4d557b6a6598c6a037108b5591abcdde48d92470d722b4a63e82cac/memray-1.15.0-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e84b39adca05e720bdbf950cc92ef4bafefa2d6160111e5fc427cf59c6c16d1a", size = 8417003, upload-time = "2024-12-03T22:49:20.734Z" }, - { url = "https://files.pythonhosted.org/packages/46/35/151684bd2635f955f3381e0739e3abd13baa621e855bc3cc8a336f5e9587/memray-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7745d2c58dfc33ef77f8827053cb957131420051b67e2d5642b605d0e65a586", size = 8015335, upload-time = "2024-12-03T22:49:22.802Z" }, - { url = "https://files.pythonhosted.org/packages/e9/17/b30e0bcb799bf2b7383d2133067ee50aee7312cdd785c3a7347b7a7db6bf/memray-1.15.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:412225d85db0ec22142a82646d85ecc1e8680d33adbfd15789c7eaa356ad4107", size = 8133111, upload-time = "2024-12-03T22:49:25.32Z" }, - { url = "https://files.pythonhosted.org/packages/03/13/71ad108bece1c13e876a8d103dfafb9cebef66f799719ff2c12d1d5f5446/memray-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25ab7a7e32fedab46219121dfb6ec3e42c66984b217572fdd4cddc37359c521", size = 8405380, upload-time = "2024-12-03T22:49:26.865Z" }, - { url = "https://files.pythonhosted.org/packages/6f/01/eafaa4f9fed4d03c5817965f22dac280de0f1e58f9c0c9654c119ab42ad3/memray-1.15.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fb885f92833279d34addc607831352e91267b8e547ea861ad561a3dba64f6757", size = 8357767, upload-time = "2024-12-03T22:49:28.857Z" }, - { url = "https://files.pythonhosted.org/packages/b9/c2/a4b5cabfe1389dffbc724e21dac2b454cf76e4e9446e2ec50d74124fd666/memray-1.15.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:c1308e6a5fc5bc4e183bc0fdf5e241ddd9fb374338f32d77a4d5e74ccf611ef1", size = 922782, upload-time = "2024-12-03T22:49:31.071Z" }, - { url = "https://files.pythonhosted.org/packages/53/5d/c2968656dc33cc7ef9121b6b30da5a37a0497fe526ff0818d3ce06418085/memray-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0794227dfa4b86a56137211fd5b8ec131e0bc4a5dc41c2f5a318ca56a22c9331", size = 894514, upload-time = "2024-12-03T22:49:32.436Z" }, - { url = "https://files.pythonhosted.org/packages/8a/59/10efbb5e35221fe2097717391bece4bcc089f0c7cdc77c7d285f9dc0a4b0/memray-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f184e82debd4f0c8ecf8e6034efddccdd9fac22909553a7f094eabf0902cd53f", size = 8006898, upload-time = "2024-12-03T22:49:33.941Z" }, - { url = "https://files.pythonhosted.org/packages/3e/96/7cc05356c2e4e1b1965c2fcd6ad89307dadb7bc531c8da44abcea94b213e/memray-1.15.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3493c5ac1ae1353fd0d24481bc9f30da8960ef703bf4af966cefff9dd1234d38", size = 8126116, upload-time = "2024-12-03T22:49:36.171Z" }, - { url = "https://files.pythonhosted.org/packages/fa/ba/7056f86ee16b8598288f652edc5c3c7df51eda15d3ecfc5c9f5bf7c578d3/memray-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:145a3062d8bf631aa8dc4b0928585e201282634afc369799dae1a0b9ece59fd4", size = 8397263, upload-time = "2024-12-03T22:49:38.77Z" }, - { url = "https://files.pythonhosted.org/packages/c5/30/8410d26b9ea64c942a23fcd9e46c6daae841bc7b451676e5b671346d4955/memray-1.15.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:59a4ade09cfe46e85cdb3a1976e9768e4674a6e448533c415dbe84e5a834f7c3", size = 8340658, upload-time = "2024-12-03T22:49:41.496Z" }, - { url = "https://files.pythonhosted.org/packages/9d/6d/27e1a2476860aae4de97abcf9cb8c26d10efcc5c9f8bbf82c4207f4b4b96/memray-1.15.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:ce28c6a4d89349c43d76ad35ff1c21057230086cfcf18c6f4c2305df108bf0cd", size = 924474, upload-time = "2024-12-03T22:50:01.307Z" }, - { url = "https://files.pythonhosted.org/packages/06/53/535979ceda74dce99fd7c8892680d4b405012f4de394dae6cd02901680ff/memray-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:671c2fd8c835caad80c2023baf6cdc4326c0f6dd4ae8bf1d7dbf6ad700c13625", size = 899745, upload-time = "2024-12-03T22:50:03.947Z" }, - { url = "https://files.pythonhosted.org/packages/c8/b8/05175a39b4d56698a80c20b7d3b3061245d6ca45010604bf61e8cea8c051/memray-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8404f3969e071e35364fd99d238da8ef245cf7ee2c790f3d46cd5b41cbac0541", size = 8249681, upload-time = "2024-12-03T22:50:05.407Z" }, - { url = "https://files.pythonhosted.org/packages/5d/b3/7f9a1ea61bb36c715165ea5757d05b0538eef3db137b06e0d3954fe3c1fd/memray-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a3e4c940deae29ea64d8dd4ffaee804f541a413c3c3c061a469837ed35d486b7", size = 8319734, upload-time = "2024-12-03T22:50:07.466Z" }, - { url = "https://files.pythonhosted.org/packages/45/04/5628b637c1280080ef3fbb41ecacb14b8a77733e8ab0a855565c0bb8c629/memray-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36720d9ee97dee6cd51b230cbd2556cc3e0215c5a569b97c1faebc927ac3c505", size = 7939758, upload-time = "2024-12-03T22:50:09.163Z" }, - { url = "https://files.pythonhosted.org/packages/70/37/9351b7ae8a9367230a4f8a89bbe5980363ef8f7eec0c504321cee9982afe/memray-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cba7727bfdee596f71323195af0262508ed0aec7ebbf67d98de0b959d9b8cf02", size = 8283123, upload-time = "2024-12-03T22:50:11.078Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/df/40/66e6ae86c0a22b8b998779fa8d6c0ab9ee63f0943198adcf714934286cbf/memray-1.17.2.tar.gz", hash = "sha256:eb75c075874a6eccddf361513d9d4a9223dd940580c6370a6ba5339bae5d0ba2", size = 1025995, upload-time = "2025-05-09T02:03:29.899Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/c2/99a7403b8ba5224c0329ff0a4f574a7d1267797e336d624fa106658d671e/memray-1.17.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:892af080c2c136449663f34d3790c663311c915d9757b96871cfb967af9e5bc1", size = 878243, upload-time = "2025-05-09T02:02:22.949Z" }, + { url = "https://files.pythonhosted.org/packages/ad/3a/fb4d5b2a98da26497ecf159cf9a72ac7721970da4e83563ade9b094c41f0/memray-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8faf2da8fb9b942c1a1553171b802905f64a9272afd8ef5dedfde3f2582afcfc", size = 854192, upload-time = "2025-05-09T02:02:24.959Z" }, + { url = "https://files.pythonhosted.org/packages/7d/42/7d6a05268c79ed03b524c4891df83bb54ecd9b65f55b24dce0b39db651d6/memray-1.17.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4e5f3d505166263a9b6e00eec2351e217cc17156024dc53af09bf901e57e7eba", size = 8157662, upload-time = "2025-05-09T02:02:26.502Z" }, + { url = "https://files.pythonhosted.org/packages/4c/ff/957f855498c14fb166da39ff36e77cc97f12467fd60e414163c0ae7c1f37/memray-1.17.2-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f9493852bc69a7a88991593146109be809777b852b12fb8dade1a6e00bc9f5ce", size = 8207661, upload-time = "2025-05-09T02:02:28.364Z" }, + { url = "https://files.pythonhosted.org/packages/cf/40/9528823926a207b9d92485b2820df63550b9d0752b6a3d16103adfcdfadf/memray-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1323a83c120b18f4347bcc36e170203a435c7fe891e72ea887c4ab36a5d815ff", size = 7845312, upload-time = "2025-05-09T02:02:30.092Z" }, + { url = "https://files.pythonhosted.org/packages/30/41/4810cbb275037dc40044cb7204d0db603f342ed178f2f0909e63eac49c09/memray-1.17.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2df9aad85f4d5aa7aeb6f4ab3cf66ec1af064f0de41754c6413d1f7fe498c5e", size = 8164114, upload-time = "2025-05-09T02:02:31.416Z" }, + { url = "https://files.pythonhosted.org/packages/ab/53/fb5abeb10adbcbdef4a14b36e84b88162f2f38b718340c70ada0a7e37c93/memray-1.17.2-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:cfe93ee7a40e7901858469431b00c54280868bce108e360faf6834d36cb842f4", size = 882573, upload-time = "2025-05-09T02:02:33.316Z" }, + { url = "https://files.pythonhosted.org/packages/5a/6f/10a1de9e1c406e29a10e6b3ef5f79d2569c9823b792e109e92bfef0f856f/memray-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ba7518281c05c1469a5db43a6ea8d77d5467484f240e9d18d162e7fe758272b", size = 858602, upload-time = "2025-05-09T02:02:34.828Z" }, + { url = "https://files.pythonhosted.org/packages/ea/95/a469f99b02a5f6efbb0de52d203c377217f220a6f829d86eaf74f3c42dec/memray-1.17.2-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3efa65884d1775a27cb8d5faee3a54fd3b22be55e33c3a8f0c1d8293314770c0", size = 8307429, upload-time = "2025-05-09T02:02:36.43Z" }, + { url = "https://files.pythonhosted.org/packages/70/62/40c0df25dfc305dfb18248207b11c440557b0afbe05f6a1d98572c5fbc03/memray-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8288a9262a5323d489afd837477dec52b4ee184eb462434a2ccea97d9c05b94e", size = 7921668, upload-time = "2025-05-09T02:02:38.877Z" }, + { url = "https://files.pythonhosted.org/packages/b3/e7/adc3e08ae252b7d2bdfee501b7ea49cbeb625f29438f716b60d273908d0f/memray-1.17.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1516956ff88a5dc106366a55554c930a51df25fdc8bf2ca105c8d220744eb23e", size = 7997217, upload-time = "2025-05-09T02:02:40.377Z" }, + { url = "https://files.pythonhosted.org/packages/74/f3/77731e6dda59e96ce3ba8ea369c047d368a3250ea4963a35c7ab90841504/memray-1.17.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3eade446e1c0d9631d15fb90f9298bf84ebbfa1b2aac64bb9cbcda600ca7f25c", size = 8255393, upload-time = "2025-05-09T02:02:42.241Z" }, + { url = "https://files.pythonhosted.org/packages/56/36/b9858456988a87b8744f500660343eb5b11f22cae7ed42a14d9585cff641/memray-1.17.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0f6298f00fb53f024f67a1cae2bd54389641e10e3364167e5d0f33f58d9f6777", size = 8242670, upload-time = "2025-05-09T02:02:44.006Z" }, + { url = "https://files.pythonhosted.org/packages/10/43/64bee789ca9213249d38e04618fcfbd0232fb3f1ea6a0fc8d7aacb804534/memray-1.17.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:1a16437bae39515b8c179432b647e9db445bf0e29b14a2b4bf7eefa2cdc7bbf7", size = 882938, upload-time = "2025-05-09T02:02:45.258Z" }, + { url = "https://files.pythonhosted.org/packages/ed/a3/8373a8622fa568845b6e5c7d6bb451d372f0411f1997cc9f81f9725a5bc4/memray-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:36784036e0c89f29f9f460871d2214cd17435d839ac8300a2dbea69463d134d1", size = 860937, upload-time = "2025-05-09T02:02:46.341Z" }, + { url = "https://files.pythonhosted.org/packages/1c/89/fe12e6371777e24d9dcc618171ca6f4ed710afcd0ed177276edceba4bf09/memray-1.17.2-cp312-cp312-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7c6bc6cd4ea58d1291e27e31302ad1e01500a08191c0265da8e5552368f6996a", size = 8297399, upload-time = "2025-05-09T02:02:47.553Z" }, + { url = "https://files.pythonhosted.org/packages/4c/d6/c81637b20dfb63b9442d59f5ff77c6ad255bda8dbe9e265dc7cdfba56d56/memray-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2aa66358b2bddd8acc80ac04d65217cbe4d9a8d525b22f2a28f87c324addf945", size = 7882221, upload-time = "2025-05-09T02:02:49.401Z" }, + { url = "https://files.pythonhosted.org/packages/9d/29/2639c54251b81fa4f222b9eafcd7af5ccee65ed7aa7549ce235f989dc356/memray-1.17.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:53b81a3c850c88d20b5b9feaa30687c8438274cc0051706435967b2a02b9e314", size = 7970207, upload-time = "2025-05-09T02:02:50.892Z" }, + { url = "https://files.pythonhosted.org/packages/c8/3e/cfd3e5db2f4a8378285e0952eef64c265e94d3d1e2e35e4cf066beaf8339/memray-1.17.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d57c58b3a2ef52d9efb0e17940eb5db43317e536735260ce718e36dfdd0c51f5", size = 8243458, upload-time = "2025-05-09T02:02:52.927Z" }, + { url = "https://files.pythonhosted.org/packages/05/d1/e339f6f3ee34b157615797069f21a0f8e27fb24b4c53abc19bcea030b78c/memray-1.17.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:85704bce4548b519af5499e8cb01ddd7eaed12b3a2056c841d3745b55dc1de9a", size = 8204284, upload-time = "2025-05-09T02:02:54.284Z" }, + { url = "https://files.pythonhosted.org/packages/39/36/5ccb56f1a8f39e24025c2b8203b68980607810731735a33b14b5db3823f4/memray-1.17.2-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:aa655a28d10958a6a4feb98f123e4d7bbf156a7fef79edebbfca6198509aada2", size = 880681, upload-time = "2025-05-09T02:02:55.6Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b2/1f74ee01af4c7eedf94ad12e48e40f96ef522141d5c2efaf7282a971c256/memray-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b7d9c90ab17629a0b38851fd004c5301de0f3c4668a88986da22dd016c4416cd", size = 857837, upload-time = "2025-05-09T02:02:56.664Z" }, + { url = "https://files.pythonhosted.org/packages/75/30/62b2da40ef34afefe0df91a9d098bcaed46e9848d8e74c8742a11684d325/memray-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e816e7157b4e2e17ec3fa08fa59a058a5ba264dddd35e04e44862e7800db07f3", size = 7885010, upload-time = "2025-05-09T02:02:57.818Z" }, + { url = "https://files.pythonhosted.org/packages/a6/74/9f5fb772cdb7b203ece295dc429507a28e0ecda9fef6c3dc2fdf02c7f1cd/memray-1.17.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48fe99afa391bdc67f2415b968b31c1ace5d045a0af91312a8e24cfa4ff577c6", size = 7956125, upload-time = "2025-05-09T02:02:59.351Z" }, + { url = "https://files.pythonhosted.org/packages/b9/69/06c3b2776c90257354176d6a3caf3c4a74f2d2920c96c456b149109a6456/memray-1.17.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e871af5a88006f9c0d16cb234e9d18244ffeb28f5c8aa17bd6babc8418fdda1d", size = 8235642, upload-time = "2025-05-09T02:03:00.913Z" }, + { url = "https://files.pythonhosted.org/packages/a6/d4/7adf788b3bb1652131bdd086434ec4e337c46fc8df9809a8d0887aebd400/memray-1.17.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:63f0a8d5d9d179648e7e336f8a185e8f4a1b70f28ec62476e193c024aa992313", size = 8183003, upload-time = "2025-05-09T02:03:02.792Z" }, + { url = "https://files.pythonhosted.org/packages/34/68/0a04232850150516c5ce11fdf3223fdbd50eb0746ed2a35d7990256693e7/memray-1.17.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:fa6a156511beab1232462a092a868864efd9ef6fa623169fe8bbd01294a5f842", size = 879938, upload-time = "2025-05-09T02:03:20.868Z" }, + { url = "https://files.pythonhosted.org/packages/d9/7f/d6ec324a474963da50cef725138d5f864792eae8f724173d677a674600b9/memray-1.17.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:151e8e65c353f0247f5d6517ba831df0742bc375afda4ba884ac3d9073fbf611", size = 856008, upload-time = "2025-05-09T02:03:21.979Z" }, + { url = "https://files.pythonhosted.org/packages/fc/a9/66f79575fbf5e39669d4270429bdca0a6f86819920590ea8c6c316e6ee38/memray-1.17.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:094e3f819b41576a106eff57d3e5d45b6a424f8764d68698c09fd4514c4c06e5", size = 8158688, upload-time = "2025-05-09T02:03:23.276Z" }, + { url = "https://files.pythonhosted.org/packages/69/c3/ad1c2d9619db975cfa04fffb47f22c04e62cabfa8b1bcdc636504115eb02/memray-1.17.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b092978e7aa69a96a5391b56624ca2ee477cfa000eb97eb315db8d13c2da20d0", size = 8206218, upload-time = "2025-05-09T02:03:24.696Z" }, + { url = "https://files.pythonhosted.org/packages/4f/d1/15e40b9dc5b0007173fae6650fd13f5058880fa631d810afd47d3a047b5a/memray-1.17.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14e62dd31a014f4050d65c6b742bf9f7ac166c4d519164a00b2d5636f21d04b8", size = 7841224, upload-time = "2025-05-09T02:03:26.674Z" }, + { url = "https://files.pythonhosted.org/packages/ec/88/e6d594dba5df956264fd06f4d83b659a518d72a6d36962bcf9be1558901d/memray-1.17.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:78d541228f6f46e05a296aa333a9674a2dfff3c6e9ff2f4432a0d0374a4c33f9", size = 8161781, upload-time = "2025-05-09T02:03:28.575Z" }, ] [[package]] @@ -2077,7 +2082,7 @@ wheels = [ [[package]] name = "pytest" -version = "8.3.4" +version = "8.3.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -2087,9 +2092,9 @@ dependencies = [ { name = "pluggy" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919, upload-time = "2024-12-01T12:54:25.98Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083, upload-time = "2024-12-01T12:54:19.735Z" }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, ] [[package]] @@ -2431,112 +2436,153 @@ wheels = [ [[package]] name = "rpds-py" -version = "0.22.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/80/cce854d0921ff2f0a9fa831ba3ad3c65cee3a46711addf39a2af52df2cfd/rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d", size = 26771, upload-time = "2024-12-04T15:34:14.949Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/42/2a/ead1d09e57449b99dcc190d8d2323e3a167421d8f8fdf0f217c6f6befe47/rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967", size = 359514, upload-time = "2024-12-04T15:31:31.341Z" }, - { url = "https://files.pythonhosted.org/packages/8f/7e/1254f406b7793b586c68e217a6a24ec79040f85e030fff7e9049069284f4/rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37", size = 349031, upload-time = "2024-12-04T15:31:32.973Z" }, - { url = "https://files.pythonhosted.org/packages/aa/da/17c6a2c73730d426df53675ff9cc6653ac7a60b6438d03c18e1c822a576a/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24", size = 381485, upload-time = "2024-12-04T15:31:34.586Z" }, - { url = "https://files.pythonhosted.org/packages/aa/13/2dbacd820466aa2a3c4b747afb18d71209523d353cf865bf8f4796c969ea/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff", size = 386794, upload-time = "2024-12-04T15:31:37.237Z" }, - { url = "https://files.pythonhosted.org/packages/6d/62/96905d0a35ad4e4bc3c098b2f34b2e7266e211d08635baa690643d2227be/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c", size = 423523, upload-time = "2024-12-04T15:31:39.259Z" }, - { url = "https://files.pythonhosted.org/packages/eb/1b/d12770f2b6a9fc2c3ec0d810d7d440f6d465ccd8b7f16ae5385952c28b89/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e", size = 446695, upload-time = "2024-12-04T15:31:40.477Z" }, - { url = "https://files.pythonhosted.org/packages/4d/cf/96f1fd75512a017f8e07408b6d5dbeb492d9ed46bfe0555544294f3681b3/rpds_py-0.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec", size = 381959, upload-time = "2024-12-04T15:31:41.665Z" }, - { url = "https://files.pythonhosted.org/packages/ab/f0/d1c5b501c8aea85aeb938b555bfdf7612110a2f8cdc21ae0482c93dd0c24/rpds_py-0.22.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c", size = 410420, upload-time = "2024-12-04T15:31:43.407Z" }, - { url = "https://files.pythonhosted.org/packages/33/3b/45b6c58fb6aad5a569ae40fb890fc494c6b02203505a5008ee6dc68e65f7/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09", size = 557620, upload-time = "2024-12-04T15:31:45.271Z" }, - { url = "https://files.pythonhosted.org/packages/83/62/3fdd2d3d47bf0bb9b931c4c73036b4ab3ec77b25e016ae26fab0f02be2af/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00", size = 584202, upload-time = "2024-12-04T15:31:47.21Z" }, - { url = "https://files.pythonhosted.org/packages/04/f2/5dced98b64874b84ca824292f9cee2e3f30f3bcf231d15a903126684f74d/rpds_py-0.22.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf", size = 552787, upload-time = "2024-12-04T15:31:49.142Z" }, - { url = "https://files.pythonhosted.org/packages/67/13/2273dea1204eda0aea0ef55145da96a9aa28b3f88bb5c70e994f69eda7c3/rpds_py-0.22.3-cp310-cp310-win32.whl", hash = "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652", size = 220088, upload-time = "2024-12-04T15:31:51.303Z" }, - { url = "https://files.pythonhosted.org/packages/4e/80/8c8176b67ad7f4a894967a7a4014ba039626d96f1d4874d53e409b58d69f/rpds_py-0.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8", size = 231737, upload-time = "2024-12-04T15:31:52.611Z" }, - { url = "https://files.pythonhosted.org/packages/15/ad/8d1ddf78f2805a71253fcd388017e7b4a0615c22c762b6d35301fef20106/rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f", size = 359773, upload-time = "2024-12-04T15:31:53.773Z" }, - { url = "https://files.pythonhosted.org/packages/c8/75/68c15732293a8485d79fe4ebe9045525502a067865fa4278f178851b2d87/rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a", size = 349214, upload-time = "2024-12-04T15:31:57.443Z" }, - { url = "https://files.pythonhosted.org/packages/3c/4c/7ce50f3070083c2e1b2bbd0fb7046f3da55f510d19e283222f8f33d7d5f4/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5", size = 380477, upload-time = "2024-12-04T15:31:58.713Z" }, - { url = "https://files.pythonhosted.org/packages/9a/e9/835196a69cb229d5c31c13b8ae603bd2da9a6695f35fe4270d398e1db44c/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb", size = 386171, upload-time = "2024-12-04T15:32:01.33Z" }, - { url = "https://files.pythonhosted.org/packages/f9/8e/33fc4eba6683db71e91e6d594a2cf3a8fbceb5316629f0477f7ece5e3f75/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2", size = 422676, upload-time = "2024-12-04T15:32:03.223Z" }, - { url = "https://files.pythonhosted.org/packages/37/47/2e82d58f8046a98bb9497a8319604c92b827b94d558df30877c4b3c6ccb3/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0", size = 446152, upload-time = "2024-12-04T15:32:05.109Z" }, - { url = "https://files.pythonhosted.org/packages/e1/78/79c128c3e71abbc8e9739ac27af11dc0f91840a86fce67ff83c65d1ba195/rpds_py-0.22.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1", size = 381300, upload-time = "2024-12-04T15:32:06.404Z" }, - { url = "https://files.pythonhosted.org/packages/c9/5b/2e193be0e8b228c1207f31fa3ea79de64dadb4f6a4833111af8145a6bc33/rpds_py-0.22.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d", size = 409636, upload-time = "2024-12-04T15:32:07.568Z" }, - { url = "https://files.pythonhosted.org/packages/c2/3f/687c7100b762d62186a1c1100ffdf99825f6fa5ea94556844bbbd2d0f3a9/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648", size = 556708, upload-time = "2024-12-04T15:32:09.141Z" }, - { url = "https://files.pythonhosted.org/packages/8c/a2/c00cbc4b857e8b3d5e7f7fc4c81e23afd8c138b930f4f3ccf9a41a23e9e4/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74", size = 583554, upload-time = "2024-12-04T15:32:11.17Z" }, - { url = "https://files.pythonhosted.org/packages/d0/08/696c9872cf56effdad9ed617ac072f6774a898d46b8b8964eab39ec562d2/rpds_py-0.22.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a", size = 552105, upload-time = "2024-12-04T15:32:12.701Z" }, - { url = "https://files.pythonhosted.org/packages/18/1f/4df560be1e994f5adf56cabd6c117e02de7c88ee238bb4ce03ed50da9d56/rpds_py-0.22.3-cp311-cp311-win32.whl", hash = "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64", size = 220199, upload-time = "2024-12-04T15:32:13.903Z" }, - { url = "https://files.pythonhosted.org/packages/b8/1b/c29b570bc5db8237553002788dc734d6bd71443a2ceac2a58202ec06ef12/rpds_py-0.22.3-cp311-cp311-win_amd64.whl", hash = "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c", size = 231775, upload-time = "2024-12-04T15:32:15.137Z" }, - { url = "https://files.pythonhosted.org/packages/75/47/3383ee3bd787a2a5e65a9b9edc37ccf8505c0a00170e3a5e6ea5fbcd97f7/rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e", size = 352334, upload-time = "2024-12-04T15:32:16.432Z" }, - { url = "https://files.pythonhosted.org/packages/40/14/aa6400fa8158b90a5a250a77f2077c0d0cd8a76fce31d9f2b289f04c6dec/rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56", size = 342111, upload-time = "2024-12-04T15:32:18.336Z" }, - { url = "https://files.pythonhosted.org/packages/7d/06/395a13bfaa8a28b302fb433fb285a67ce0ea2004959a027aea8f9c52bad4/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45", size = 384286, upload-time = "2024-12-04T15:32:19.589Z" }, - { url = "https://files.pythonhosted.org/packages/43/52/d8eeaffab047e6b7b7ef7f00d5ead074a07973968ffa2d5820fa131d7852/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e", size = 391739, upload-time = "2024-12-04T15:32:20.772Z" }, - { url = "https://files.pythonhosted.org/packages/83/31/52dc4bde85c60b63719610ed6f6d61877effdb5113a72007679b786377b8/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d", size = 427306, upload-time = "2024-12-04T15:32:23.138Z" }, - { url = "https://files.pythonhosted.org/packages/70/d5/1bab8e389c2261dba1764e9e793ed6830a63f830fdbec581a242c7c46bda/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38", size = 442717, upload-time = "2024-12-04T15:32:24.399Z" }, - { url = "https://files.pythonhosted.org/packages/82/a1/a45f3e30835b553379b3a56ea6c4eb622cf11e72008229af840e4596a8ea/rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15", size = 385721, upload-time = "2024-12-04T15:32:26.464Z" }, - { url = "https://files.pythonhosted.org/packages/a6/27/780c942de3120bdd4d0e69583f9c96e179dfff082f6ecbb46b8d6488841f/rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059", size = 415824, upload-time = "2024-12-04T15:32:27.742Z" }, - { url = "https://files.pythonhosted.org/packages/94/0b/aa0542ca88ad20ea719b06520f925bae348ea5c1fdf201b7e7202d20871d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e", size = 561227, upload-time = "2024-12-04T15:32:29.722Z" }, - { url = "https://files.pythonhosted.org/packages/0d/92/3ed77d215f82c8f844d7f98929d56cc321bb0bcfaf8f166559b8ec56e5f1/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61", size = 587424, upload-time = "2024-12-04T15:32:31.039Z" }, - { url = "https://files.pythonhosted.org/packages/09/42/cacaeb047a22cab6241f107644f230e2935d4efecf6488859a7dd82fc47d/rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7", size = 555953, upload-time = "2024-12-04T15:32:32.486Z" }, - { url = "https://files.pythonhosted.org/packages/e6/52/c921dc6d5f5d45b212a456c1f5b17df1a471127e8037eb0972379e39dff4/rpds_py-0.22.3-cp312-cp312-win32.whl", hash = "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627", size = 221339, upload-time = "2024-12-04T15:32:33.768Z" }, - { url = "https://files.pythonhosted.org/packages/f2/c7/f82b5be1e8456600395366f86104d1bd8d0faed3802ad511ef6d60c30d98/rpds_py-0.22.3-cp312-cp312-win_amd64.whl", hash = "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4", size = 235786, upload-time = "2024-12-04T15:32:34.985Z" }, - { url = "https://files.pythonhosted.org/packages/d0/bf/36d5cc1f2c609ae6e8bf0fc35949355ca9d8790eceb66e6385680c951e60/rpds_py-0.22.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84", size = 351657, upload-time = "2024-12-04T15:32:36.241Z" }, - { url = "https://files.pythonhosted.org/packages/24/2a/f1e0fa124e300c26ea9382e59b2d582cba71cedd340f32d1447f4f29fa4e/rpds_py-0.22.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25", size = 341829, upload-time = "2024-12-04T15:32:37.607Z" }, - { url = "https://files.pythonhosted.org/packages/cf/c2/0da1231dd16953845bed60d1a586fcd6b15ceaeb965f4d35cdc71f70f606/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4", size = 384220, upload-time = "2024-12-04T15:32:38.854Z" }, - { url = "https://files.pythonhosted.org/packages/c7/73/a4407f4e3a00a9d4b68c532bf2d873d6b562854a8eaff8faa6133b3588ec/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5", size = 391009, upload-time = "2024-12-04T15:32:40.137Z" }, - { url = "https://files.pythonhosted.org/packages/a9/c3/04b7353477ab360fe2563f5f0b176d2105982f97cd9ae80a9c5a18f1ae0f/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc", size = 426989, upload-time = "2024-12-04T15:32:41.325Z" }, - { url = "https://files.pythonhosted.org/packages/8d/e6/e4b85b722bcf11398e17d59c0f6049d19cd606d35363221951e6d625fcb0/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b", size = 441544, upload-time = "2024-12-04T15:32:42.589Z" }, - { url = "https://files.pythonhosted.org/packages/27/fc/403e65e56f65fff25f2973216974976d3f0a5c3f30e53758589b6dc9b79b/rpds_py-0.22.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518", size = 385179, upload-time = "2024-12-04T15:32:44.331Z" }, - { url = "https://files.pythonhosted.org/packages/57/9b/2be9ff9700d664d51fd96b33d6595791c496d2778cb0b2a634f048437a55/rpds_py-0.22.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd", size = 415103, upload-time = "2024-12-04T15:32:46.599Z" }, - { url = "https://files.pythonhosted.org/packages/bb/a5/03c2ad8ca10994fcf22dd2150dd1d653bc974fa82d9a590494c84c10c641/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2", size = 560916, upload-time = "2024-12-04T15:32:47.916Z" }, - { url = "https://files.pythonhosted.org/packages/ba/2e/be4fdfc8b5b576e588782b56978c5b702c5a2307024120d8aeec1ab818f0/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16", size = 587062, upload-time = "2024-12-04T15:32:49.274Z" }, - { url = "https://files.pythonhosted.org/packages/67/e0/2034c221937709bf9c542603d25ad43a68b4b0a9a0c0b06a742f2756eb66/rpds_py-0.22.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f", size = 555734, upload-time = "2024-12-04T15:32:50.528Z" }, - { url = "https://files.pythonhosted.org/packages/ea/ce/240bae07b5401a22482b58e18cfbabaa392409b2797da60223cca10d7367/rpds_py-0.22.3-cp313-cp313-win32.whl", hash = "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de", size = 220663, upload-time = "2024-12-04T15:32:51.878Z" }, - { url = "https://files.pythonhosted.org/packages/cb/f0/d330d08f51126330467edae2fa4efa5cec8923c87551a79299380fdea30d/rpds_py-0.22.3-cp313-cp313-win_amd64.whl", hash = "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9", size = 235503, upload-time = "2024-12-04T15:32:53.195Z" }, - { url = "https://files.pythonhosted.org/packages/f7/c4/dbe1cc03df013bf2feb5ad00615038050e7859f381e96fb5b7b4572cd814/rpds_py-0.22.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b", size = 347698, upload-time = "2024-12-04T15:32:54.569Z" }, - { url = "https://files.pythonhosted.org/packages/a4/3a/684f66dd6b0f37499cad24cd1c0e523541fd768576fa5ce2d0a8799c3cba/rpds_py-0.22.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b", size = 337330, upload-time = "2024-12-04T15:32:55.993Z" }, - { url = "https://files.pythonhosted.org/packages/82/eb/e022c08c2ce2e8f7683baa313476492c0e2c1ca97227fe8a75d9f0181e95/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1", size = 380022, upload-time = "2024-12-04T15:32:57.374Z" }, - { url = "https://files.pythonhosted.org/packages/e4/21/5a80e653e4c86aeb28eb4fea4add1f72e1787a3299687a9187105c3ee966/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83", size = 390754, upload-time = "2024-12-04T15:32:58.726Z" }, - { url = "https://files.pythonhosted.org/packages/37/a4/d320a04ae90f72d080b3d74597074e62be0a8ecad7d7321312dfe2dc5a6a/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd", size = 423840, upload-time = "2024-12-04T15:32:59.997Z" }, - { url = "https://files.pythonhosted.org/packages/87/70/674dc47d93db30a6624279284e5631be4c3a12a0340e8e4f349153546728/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1", size = 438970, upload-time = "2024-12-04T15:33:02.057Z" }, - { url = "https://files.pythonhosted.org/packages/3f/64/9500f4d66601d55cadd21e90784cfd5d5f4560e129d72e4339823129171c/rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3", size = 383146, upload-time = "2024-12-04T15:33:03.414Z" }, - { url = "https://files.pythonhosted.org/packages/4d/45/630327addb1d17173adcf4af01336fd0ee030c04798027dfcb50106001e0/rpds_py-0.22.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130", size = 408294, upload-time = "2024-12-04T15:33:05.504Z" }, - { url = "https://files.pythonhosted.org/packages/5f/ef/8efb3373cee54ea9d9980b772e5690a0c9e9214045a4e7fa35046e399fee/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c", size = 556345, upload-time = "2024-12-04T15:33:06.9Z" }, - { url = "https://files.pythonhosted.org/packages/54/01/151d3b9ef4925fc8f15bfb131086c12ec3c3d6dd4a4f7589c335bf8e85ba/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b", size = 582292, upload-time = "2024-12-04T15:33:08.304Z" }, - { url = "https://files.pythonhosted.org/packages/30/89/35fc7a6cdf3477d441c7aca5e9bbf5a14e0f25152aed7f63f4e0b141045d/rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333", size = 553855, upload-time = "2024-12-04T15:33:10Z" }, - { url = "https://files.pythonhosted.org/packages/8f/e0/830c02b2457c4bd20a8c5bb394d31d81f57fbefce2dbdd2e31feff4f7003/rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730", size = 219100, upload-time = "2024-12-04T15:33:11.343Z" }, - { url = "https://files.pythonhosted.org/packages/f8/30/7ac943f69855c2db77407ae363484b915d861702dbba1aa82d68d57f42be/rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf", size = 233794, upload-time = "2024-12-04T15:33:12.888Z" }, - { url = "https://files.pythonhosted.org/packages/db/0f/a8ad17ddac7c880f48d5da50733dd25bfc35ba2be1bec9f23453e8c7a123/rpds_py-0.22.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:378753b4a4de2a7b34063d6f95ae81bfa7b15f2c1a04a9518e8644e81807ebea", size = 359735, upload-time = "2024-12-04T15:33:14.251Z" }, - { url = "https://files.pythonhosted.org/packages/0c/41/430903669397ea3ee76865e0b53ea236e8dc0ffbecde47b2c4c783ad6759/rpds_py-0.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3445e07bf2e8ecfeef6ef67ac83de670358abf2996916039b16a218e3d95e97e", size = 348724, upload-time = "2024-12-04T15:33:15.67Z" }, - { url = "https://files.pythonhosted.org/packages/c9/5c/3496f4f0ee818297544f2d5f641c49dde8ae156392e6834b79c0609ba006/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b2513ba235829860b13faa931f3b6846548021846ac808455301c23a101689d", size = 381782, upload-time = "2024-12-04T15:33:17.133Z" }, - { url = "https://files.pythonhosted.org/packages/b6/dc/db0523ce0cd16ce579185cc9aa9141992de956d0a9c469ecfd1fb5d54ddc/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eaf16ae9ae519a0e237a0f528fd9f0197b9bb70f40263ee57ae53c2b8d48aeb3", size = 387036, upload-time = "2024-12-04T15:33:18.555Z" }, - { url = "https://files.pythonhosted.org/packages/85/2a/9525c2427d2c257f877348918136a5d4e1b945c205a256e53bec61e54551/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:583f6a1993ca3369e0f80ba99d796d8e6b1a3a2a442dd4e1a79e652116413091", size = 424566, upload-time = "2024-12-04T15:33:20.475Z" }, - { url = "https://files.pythonhosted.org/packages/b9/1c/f8c012a39794b84069635709f559c0309103d5d74b3f5013916e6ca4f174/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4617e1915a539a0d9a9567795023de41a87106522ff83fbfaf1f6baf8e85437e", size = 447203, upload-time = "2024-12-04T15:33:21.846Z" }, - { url = "https://files.pythonhosted.org/packages/93/f5/c1c772364570d35b98ba64f36ec90c3c6d0b932bc4d8b9b4efef6dc64b07/rpds_py-0.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c150c7a61ed4a4f4955a96626574e9baf1adf772c2fb61ef6a5027e52803543", size = 382283, upload-time = "2024-12-04T15:33:23.292Z" }, - { url = "https://files.pythonhosted.org/packages/10/06/f94f61313f94fc75c3c3aa74563f80bbd990e5b25a7c1a38cee7d5d0309b/rpds_py-0.22.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fa4331c200c2521512595253f5bb70858b90f750d39b8cbfd67465f8d1b596d", size = 410022, upload-time = "2024-12-04T15:33:24.585Z" }, - { url = "https://files.pythonhosted.org/packages/3f/b0/37ab416a9528419920dfb64886c220f58fcbd66b978e0a91b66e9ee9a993/rpds_py-0.22.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:214b7a953d73b5e87f0ebece4a32a5bd83c60a3ecc9d4ec8f1dca968a2d91e99", size = 557817, upload-time = "2024-12-04T15:33:26.379Z" }, - { url = "https://files.pythonhosted.org/packages/2c/5d/9daa18adcd676dd3b2817c8a7cec3f3ebeeb0ce0d05a1b63bf994fc5114f/rpds_py-0.22.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f47ad3d5f3258bd7058d2d506852217865afefe6153a36eb4b6928758041d831", size = 585099, upload-time = "2024-12-04T15:33:27.794Z" }, - { url = "https://files.pythonhosted.org/packages/41/3f/ad4e58035d3f848410aa3d59857b5f238bafab81c8b4a844281f80445d62/rpds_py-0.22.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f276b245347e6e36526cbd4a266a417796fc531ddf391e43574cf6466c492520", size = 552818, upload-time = "2024-12-04T15:33:29.249Z" }, - { url = "https://files.pythonhosted.org/packages/b8/19/123acae8f4cab3c9463097c3ced3cc87c46f405056e249c874940e045309/rpds_py-0.22.3-cp39-cp39-win32.whl", hash = "sha256:bbb232860e3d03d544bc03ac57855cd82ddf19c7a07651a7c0fdb95e9efea8b9", size = 220246, upload-time = "2024-12-04T15:33:30.672Z" }, - { url = "https://files.pythonhosted.org/packages/8b/8d/9db93e48d96ace1f6713c71ce72e2d94b71d82156c37b6a54e0930486f00/rpds_py-0.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:cfbc454a2880389dbb9b5b398e50d439e2e58669160f27b60e5eca11f68ae17c", size = 231932, upload-time = "2024-12-04T15:33:32.092Z" }, - { url = "https://files.pythonhosted.org/packages/8b/63/e29f8ee14fcf383574f73b6bbdcbec0fbc2e5fc36b4de44d1ac389b1de62/rpds_py-0.22.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d", size = 360786, upload-time = "2024-12-04T15:33:33.635Z" }, - { url = "https://files.pythonhosted.org/packages/d3/e0/771ee28b02a24e81c8c0e645796a371350a2bb6672753144f36ae2d2afc9/rpds_py-0.22.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd", size = 350589, upload-time = "2024-12-04T15:33:35.159Z" }, - { url = "https://files.pythonhosted.org/packages/cf/49/abad4c4a1e6f3adf04785a99c247bfabe55ed868133e2d1881200aa5d381/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493", size = 381848, upload-time = "2024-12-04T15:33:36.736Z" }, - { url = "https://files.pythonhosted.org/packages/3a/7d/f4bc6d6fbe6af7a0d2b5f2ee77079efef7c8528712745659ec0026888998/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96", size = 387879, upload-time = "2024-12-04T15:33:38.057Z" }, - { url = "https://files.pythonhosted.org/packages/13/b0/575c797377fdcd26cedbb00a3324232e4cb2c5d121f6e4b0dbf8468b12ef/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123", size = 423916, upload-time = "2024-12-04T15:33:39.696Z" }, - { url = "https://files.pythonhosted.org/packages/54/78/87157fa39d58f32a68d3326f8a81ad8fb99f49fe2aa7ad9a1b7d544f9478/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad", size = 448410, upload-time = "2024-12-04T15:33:41.729Z" }, - { url = "https://files.pythonhosted.org/packages/59/69/860f89996065a88be1b6ff2d60e96a02b920a262d8aadab99e7903986597/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9", size = 382841, upload-time = "2024-12-04T15:33:43.169Z" }, - { url = "https://files.pythonhosted.org/packages/bd/d7/bc144e10d27e3cb350f98df2492a319edd3caaf52ddfe1293f37a9afbfd7/rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e", size = 409662, upload-time = "2024-12-04T15:33:44.748Z" }, - { url = "https://files.pythonhosted.org/packages/14/2a/6bed0b05233c291a94c7e89bc76ffa1c619d4e1979fbfe5d96024020c1fb/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338", size = 558221, upload-time = "2024-12-04T15:33:46.459Z" }, - { url = "https://files.pythonhosted.org/packages/11/23/cd8f566de444a137bc1ee5795e47069a947e60810ba4152886fe5308e1b7/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566", size = 583780, upload-time = "2024-12-04T15:33:48.247Z" }, - { url = "https://files.pythonhosted.org/packages/8d/63/79c3602afd14d501f751e615a74a59040328da5ef29ed5754ae80d236b84/rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe", size = 553619, upload-time = "2024-12-04T15:33:50.449Z" }, - { url = "https://files.pythonhosted.org/packages/9f/2e/c5c1689e80298d4e94c75b70faada4c25445739d91b94c211244a3ed7ed1/rpds_py-0.22.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d", size = 233338, upload-time = "2024-12-04T15:33:51.954Z" }, - { url = "https://files.pythonhosted.org/packages/bc/b7/d2c205723e3b4d75b03215694f0297a1b4b395bf834cb5896ad9bbb90f90/rpds_py-0.22.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bb47271f60660803ad11f4c61b42242b8c1312a31c98c578f79ef9387bbde21c", size = 360594, upload-time = "2024-12-04T15:33:53.482Z" }, - { url = "https://files.pythonhosted.org/packages/d8/8f/c3515f5234cf6055046d4cfe9c80a3742a20acfa7d0b1b290f0d7f56a8db/rpds_py-0.22.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:70fb28128acbfd264eda9bf47015537ba3fe86e40d046eb2963d75024be4d055", size = 349594, upload-time = "2024-12-04T15:33:54.96Z" }, - { url = "https://files.pythonhosted.org/packages/6b/98/5b487cb06afc484befe350c87fda37f4ce11333f04f3380aba43dcf5bce2/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44d61b4b7d0c2c9ac019c314e52d7cbda0ae31078aabd0f22e583af3e0d79723", size = 381138, upload-time = "2024-12-04T15:33:57.074Z" }, - { url = "https://files.pythonhosted.org/packages/5e/3a/12308d2c51b3fdfc173619943b7dc5ba41b4850c47112eeda38d9c54ed12/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f0e260eaf54380380ac3808aa4ebe2d8ca28b9087cf411649f96bad6900c728", size = 387828, upload-time = "2024-12-04T15:33:59.232Z" }, - { url = "https://files.pythonhosted.org/packages/17/b2/c242241ab5a2a206e093f24ccbfa519c4bbf10a762ac90bffe1766c225e0/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b25bc607423935079e05619d7de556c91fb6adeae9d5f80868dde3468657994b", size = 424634, upload-time = "2024-12-04T15:34:01.019Z" }, - { url = "https://files.pythonhosted.org/packages/d5/c7/52a1b15012139f3ba740f291f1d03c6b632938ba61bc605f24c101952493/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb6116dfb8d1925cbdb52595560584db42a7f664617a1f7d7f6e32f138cdf37d", size = 447862, upload-time = "2024-12-04T15:34:03.302Z" }, - { url = "https://files.pythonhosted.org/packages/55/3e/4d3ed8fd01bad77e8ed101116fe63b03f1011940d9596a8f4d82ac80cacd/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a63cbdd98acef6570c62b92a1e43266f9e8b21e699c363c0fef13bd530799c11", size = 382506, upload-time = "2024-12-04T15:34:04.847Z" }, - { url = "https://files.pythonhosted.org/packages/30/78/df59d6f92470a84369a3757abeae1cfd7f7239c8beb6d948949bf78317d2/rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b8f60e1b739a74bab7e01fcbe3dddd4657ec685caa04681df9d562ef15b625f", size = 410534, upload-time = "2024-12-04T15:34:06.506Z" }, - { url = "https://files.pythonhosted.org/packages/38/97/ea45d1edd9b753b20084b52dd5db6ee5e1ac3e036a27149972398a413858/rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2e8b55d8517a2fda8d95cb45d62a5a8bbf9dd0ad39c5b25c8833efea07b880ca", size = 557453, upload-time = "2024-12-04T15:34:08.069Z" }, - { url = "https://files.pythonhosted.org/packages/08/cd/3a1b35eb9da27ffbb981cfffd32a01c7655c4431ccb278cb3064f8887462/rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:2de29005e11637e7a2361fa151f780ff8eb2543a0da1413bb951e9f14b699ef3", size = 584412, upload-time = "2024-12-04T15:34:09.616Z" }, - { url = "https://files.pythonhosted.org/packages/87/91/31d1c5aeb1606f71188259e0ba6ed6f5c21a3c72f58b51db6a8bd0aa2b5d/rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:666ecce376999bf619756a24ce15bb14c5bfaf04bf00abc7e663ce17c3f34fe7", size = 553446, upload-time = "2024-12-04T15:34:11.215Z" }, - { url = "https://files.pythonhosted.org/packages/e7/ad/03b5ccd1ab492c9dece85b3bf1c96453ab8c47983936fae6880f688f60b3/rpds_py-0.22.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5246b14ca64a8675e0a7161f7af68fe3e910e6b90542b4bfb5439ba752191df6", size = 233013, upload-time = "2024-12-04T15:34:12.743Z" }, +version = "0.26.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385, upload-time = "2025-07-01T15:57:13.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/31/1459645f036c3dfeacef89e8e5825e430c77dde8489f3b99eaafcd4a60f5/rpds_py-0.26.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4c70c70f9169692b36307a95f3d8c0a9fcd79f7b4a383aad5eaa0e9718b79b37", size = 372466, upload-time = "2025-07-01T15:53:40.55Z" }, + { url = "https://files.pythonhosted.org/packages/dd/ff/3d0727f35836cc8773d3eeb9a46c40cc405854e36a8d2e951f3a8391c976/rpds_py-0.26.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:777c62479d12395bfb932944e61e915741e364c843afc3196b694db3d669fcd0", size = 357825, upload-time = "2025-07-01T15:53:42.247Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ce/badc5e06120a54099ae287fa96d82cbb650a5f85cf247ffe19c7b157fd1f/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec671691e72dff75817386aa02d81e708b5a7ec0dec6669ec05213ff6b77e1bd", size = 381530, upload-time = "2025-07-01T15:53:43.585Z" }, + { url = "https://files.pythonhosted.org/packages/1e/a5/fa5d96a66c95d06c62d7a30707b6a4cfec696ab8ae280ee7be14e961e118/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6a1cb5d6ce81379401bbb7f6dbe3d56de537fb8235979843f0d53bc2e9815a79", size = 396933, upload-time = "2025-07-01T15:53:45.78Z" }, + { url = "https://files.pythonhosted.org/packages/00/a7/7049d66750f18605c591a9db47d4a059e112a0c9ff8de8daf8fa0f446bba/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f789e32fa1fb6a7bf890e0124e7b42d1e60d28ebff57fe806719abb75f0e9a3", size = 513973, upload-time = "2025-07-01T15:53:47.085Z" }, + { url = "https://files.pythonhosted.org/packages/0e/f1/528d02c7d6b29d29fac8fd784b354d3571cc2153f33f842599ef0cf20dd2/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c55b0a669976cf258afd718de3d9ad1b7d1fe0a91cd1ab36f38b03d4d4aeaaf", size = 402293, upload-time = "2025-07-01T15:53:48.117Z" }, + { url = "https://files.pythonhosted.org/packages/15/93/fde36cd6e4685df2cd08508f6c45a841e82f5bb98c8d5ecf05649522acb5/rpds_py-0.26.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c70d9ec912802ecfd6cd390dadb34a9578b04f9bcb8e863d0a7598ba5e9e7ccc", size = 383787, upload-time = "2025-07-01T15:53:50.874Z" }, + { url = "https://files.pythonhosted.org/packages/69/f2/5007553aaba1dcae5d663143683c3dfd03d9395289f495f0aebc93e90f24/rpds_py-0.26.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3021933c2cb7def39d927b9862292e0f4c75a13d7de70eb0ab06efed4c508c19", size = 416312, upload-time = "2025-07-01T15:53:52.046Z" }, + { url = "https://files.pythonhosted.org/packages/8f/a7/ce52c75c1e624a79e48a69e611f1c08844564e44c85db2b6f711d76d10ce/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8a7898b6ca3b7d6659e55cdac825a2e58c638cbf335cde41f4619e290dd0ad11", size = 558403, upload-time = "2025-07-01T15:53:53.192Z" }, + { url = "https://files.pythonhosted.org/packages/79/d5/e119db99341cc75b538bf4cb80504129fa22ce216672fb2c28e4a101f4d9/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:12bff2ad9447188377f1b2794772f91fe68bb4bbfa5a39d7941fbebdbf8c500f", size = 588323, upload-time = "2025-07-01T15:53:54.336Z" }, + { url = "https://files.pythonhosted.org/packages/93/94/d28272a0b02f5fe24c78c20e13bbcb95f03dc1451b68e7830ca040c60bd6/rpds_py-0.26.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:191aa858f7d4902e975d4cf2f2d9243816c91e9605070aeb09c0a800d187e323", size = 554541, upload-time = "2025-07-01T15:53:55.469Z" }, + { url = "https://files.pythonhosted.org/packages/93/e0/8c41166602f1b791da892d976057eba30685486d2e2c061ce234679c922b/rpds_py-0.26.0-cp310-cp310-win32.whl", hash = "sha256:b37a04d9f52cb76b6b78f35109b513f6519efb481d8ca4c321f6a3b9580b3f45", size = 220442, upload-time = "2025-07-01T15:53:56.524Z" }, + { url = "https://files.pythonhosted.org/packages/87/f0/509736bb752a7ab50fb0270c2a4134d671a7b3038030837e5536c3de0e0b/rpds_py-0.26.0-cp310-cp310-win_amd64.whl", hash = "sha256:38721d4c9edd3eb6670437d8d5e2070063f305bfa2d5aa4278c51cedcd508a84", size = 231314, upload-time = "2025-07-01T15:53:57.842Z" }, + { url = "https://files.pythonhosted.org/packages/09/4c/4ee8f7e512030ff79fda1df3243c88d70fc874634e2dbe5df13ba4210078/rpds_py-0.26.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:9e8cb77286025bdb21be2941d64ac6ca016130bfdcd228739e8ab137eb4406ed", size = 372610, upload-time = "2025-07-01T15:53:58.844Z" }, + { url = "https://files.pythonhosted.org/packages/fa/9d/3dc16be00f14fc1f03c71b1d67c8df98263ab2710a2fbd65a6193214a527/rpds_py-0.26.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5e09330b21d98adc8ccb2dbb9fc6cb434e8908d4c119aeaa772cb1caab5440a0", size = 358032, upload-time = "2025-07-01T15:53:59.985Z" }, + { url = "https://files.pythonhosted.org/packages/e7/5a/7f1bf8f045da2866324a08ae80af63e64e7bfaf83bd31f865a7b91a58601/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9c1b92b774b2e68d11193dc39620d62fd8ab33f0a3c77ecdabe19c179cdbc1", size = 381525, upload-time = "2025-07-01T15:54:01.162Z" }, + { url = "https://files.pythonhosted.org/packages/45/8a/04479398c755a066ace10e3d158866beb600867cacae194c50ffa783abd0/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:824e6d3503ab990d7090768e4dfd9e840837bae057f212ff9f4f05ec6d1975e7", size = 397089, upload-time = "2025-07-01T15:54:02.319Z" }, + { url = "https://files.pythonhosted.org/packages/72/88/9203f47268db488a1b6d469d69c12201ede776bb728b9d9f29dbfd7df406/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ad7fd2258228bf288f2331f0a6148ad0186b2e3643055ed0db30990e59817a6", size = 514255, upload-time = "2025-07-01T15:54:03.38Z" }, + { url = "https://files.pythonhosted.org/packages/f5/b4/01ce5d1e853ddf81fbbd4311ab1eff0b3cf162d559288d10fd127e2588b5/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dc23bbb3e06ec1ea72d515fb572c1fea59695aefbffb106501138762e1e915e", size = 402283, upload-time = "2025-07-01T15:54:04.923Z" }, + { url = "https://files.pythonhosted.org/packages/34/a2/004c99936997bfc644d590a9defd9e9c93f8286568f9c16cdaf3e14429a7/rpds_py-0.26.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d80bf832ac7b1920ee29a426cdca335f96a2b5caa839811803e999b41ba9030d", size = 383881, upload-time = "2025-07-01T15:54:06.482Z" }, + { url = "https://files.pythonhosted.org/packages/05/1b/ef5fba4a8f81ce04c427bfd96223f92f05e6cd72291ce9d7523db3b03a6c/rpds_py-0.26.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0919f38f5542c0a87e7b4afcafab6fd2c15386632d249e9a087498571250abe3", size = 415822, upload-time = "2025-07-01T15:54:07.605Z" }, + { url = "https://files.pythonhosted.org/packages/16/80/5c54195aec456b292f7bd8aa61741c8232964063fd8a75fdde9c1e982328/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d422b945683e409000c888e384546dbab9009bb92f7c0b456e217988cf316107", size = 558347, upload-time = "2025-07-01T15:54:08.591Z" }, + { url = "https://files.pythonhosted.org/packages/f2/1c/1845c1b1fd6d827187c43afe1841d91678d7241cbdb5420a4c6de180a538/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a7711fa562ba2da1aa757e11024ad6d93bad6ad7ede5afb9af144623e5f76a", size = 587956, upload-time = "2025-07-01T15:54:09.963Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ff/9e979329dd131aa73a438c077252ddabd7df6d1a7ad7b9aacf6261f10faa/rpds_py-0.26.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:238e8c8610cb7c29460e37184f6799547f7e09e6a9bdbdab4e8edb90986a2318", size = 554363, upload-time = "2025-07-01T15:54:11.073Z" }, + { url = "https://files.pythonhosted.org/packages/00/8b/d78cfe034b71ffbe72873a136e71acc7a831a03e37771cfe59f33f6de8a2/rpds_py-0.26.0-cp311-cp311-win32.whl", hash = "sha256:893b022bfbdf26d7bedb083efeea624e8550ca6eb98bf7fea30211ce95b9201a", size = 220123, upload-time = "2025-07-01T15:54:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/94/c1/3c8c94c7dd3905dbfde768381ce98778500a80db9924731d87ddcdb117e9/rpds_py-0.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:87a5531de9f71aceb8af041d72fc4cab4943648d91875ed56d2e629bef6d4c03", size = 231732, upload-time = "2025-07-01T15:54:13.434Z" }, + { url = "https://files.pythonhosted.org/packages/67/93/e936fbed1b734eabf36ccb5d93c6a2e9246fbb13c1da011624b7286fae3e/rpds_py-0.26.0-cp311-cp311-win_arm64.whl", hash = "sha256:de2713f48c1ad57f89ac25b3cb7daed2156d8e822cf0eca9b96a6f990718cc41", size = 221917, upload-time = "2025-07-01T15:54:14.559Z" }, + { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933, upload-time = "2025-07-01T15:54:15.734Z" }, + { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447, upload-time = "2025-07-01T15:54:16.922Z" }, + { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711, upload-time = "2025-07-01T15:54:18.101Z" }, + { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865, upload-time = "2025-07-01T15:54:19.295Z" }, + { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763, upload-time = "2025-07-01T15:54:20.858Z" }, + { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651, upload-time = "2025-07-01T15:54:22.508Z" }, + { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079, upload-time = "2025-07-01T15:54:23.987Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379, upload-time = "2025-07-01T15:54:25.073Z" }, + { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033, upload-time = "2025-07-01T15:54:26.225Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639, upload-time = "2025-07-01T15:54:27.424Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105, upload-time = "2025-07-01T15:54:29.93Z" }, + { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272, upload-time = "2025-07-01T15:54:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995, upload-time = "2025-07-01T15:54:32.195Z" }, + { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198, upload-time = "2025-07-01T15:54:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917, upload-time = "2025-07-01T15:54:34.755Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073, upload-time = "2025-07-01T15:54:36.292Z" }, + { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214, upload-time = "2025-07-01T15:54:37.469Z" }, + { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113, upload-time = "2025-07-01T15:54:38.954Z" }, + { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189, upload-time = "2025-07-01T15:54:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998, upload-time = "2025-07-01T15:54:43.025Z" }, + { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903, upload-time = "2025-07-01T15:54:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785, upload-time = "2025-07-01T15:54:46.043Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329, upload-time = "2025-07-01T15:54:47.64Z" }, + { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875, upload-time = "2025-07-01T15:54:48.9Z" }, + { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636, upload-time = "2025-07-01T15:54:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663, upload-time = "2025-07-01T15:54:52.023Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428, upload-time = "2025-07-01T15:54:53.692Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571, upload-time = "2025-07-01T15:54:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475, upload-time = "2025-07-01T15:54:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692, upload-time = "2025-07-01T15:54:58.561Z" }, + { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415, upload-time = "2025-07-01T15:54:59.751Z" }, + { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783, upload-time = "2025-07-01T15:55:00.898Z" }, + { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844, upload-time = "2025-07-01T15:55:02.201Z" }, + { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105, upload-time = "2025-07-01T15:55:03.698Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440, upload-time = "2025-07-01T15:55:05.398Z" }, + { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759, upload-time = "2025-07-01T15:55:08.316Z" }, + { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032, upload-time = "2025-07-01T15:55:09.52Z" }, + { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416, upload-time = "2025-07-01T15:55:11.216Z" }, + { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049, upload-time = "2025-07-01T15:55:13.004Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428, upload-time = "2025-07-01T15:55:14.486Z" }, + { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524, upload-time = "2025-07-01T15:55:15.745Z" }, + { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292, upload-time = "2025-07-01T15:55:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334, upload-time = "2025-07-01T15:55:18.922Z" }, + { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875, upload-time = "2025-07-01T15:55:20.399Z" }, + { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993, upload-time = "2025-07-01T15:55:21.729Z" }, + { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683, upload-time = "2025-07-01T15:55:22.918Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825, upload-time = "2025-07-01T15:55:24.207Z" }, + { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292, upload-time = "2025-07-01T15:55:25.554Z" }, + { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435, upload-time = "2025-07-01T15:55:27.798Z" }, + { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410, upload-time = "2025-07-01T15:55:29.057Z" }, + { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724, upload-time = "2025-07-01T15:55:30.719Z" }, + { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285, upload-time = "2025-07-01T15:55:31.981Z" }, + { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459, upload-time = "2025-07-01T15:55:33.312Z" }, + { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083, upload-time = "2025-07-01T15:55:34.933Z" }, + { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291, upload-time = "2025-07-01T15:55:36.202Z" }, + { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445, upload-time = "2025-07-01T15:55:37.483Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206, upload-time = "2025-07-01T15:55:38.828Z" }, + { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330, upload-time = "2025-07-01T15:55:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254, upload-time = "2025-07-01T15:55:42.015Z" }, + { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094, upload-time = "2025-07-01T15:55:43.603Z" }, + { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889, upload-time = "2025-07-01T15:55:45.275Z" }, + { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301, upload-time = "2025-07-01T15:55:47.098Z" }, + { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891, upload-time = "2025-07-01T15:55:48.412Z" }, + { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044, upload-time = "2025-07-01T15:55:49.816Z" }, + { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774, upload-time = "2025-07-01T15:55:51.192Z" }, + { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886, upload-time = "2025-07-01T15:55:52.541Z" }, + { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027, upload-time = "2025-07-01T15:55:53.874Z" }, + { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821, upload-time = "2025-07-01T15:55:55.167Z" }, + { url = "https://files.pythonhosted.org/packages/fb/74/846ab687119c9d31fc21ab1346ef9233c31035ce53c0e2d43a130a0c5a5e/rpds_py-0.26.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:7a48af25d9b3c15684059d0d1fc0bc30e8eee5ca521030e2bffddcab5be40226", size = 372786, upload-time = "2025-07-01T15:55:56.512Z" }, + { url = "https://files.pythonhosted.org/packages/33/02/1f9e465cb1a6032d02b17cd117c7bd9fb6156bc5b40ffeb8053d8a2aa89c/rpds_py-0.26.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0c71c2f6bf36e61ee5c47b2b9b5d47e4d1baad6426bfed9eea3e858fc6ee8806", size = 358062, upload-time = "2025-07-01T15:55:58.084Z" }, + { url = "https://files.pythonhosted.org/packages/2a/49/81a38e3c67ac943907a9711882da3d87758c82cf26b2120b8128e45d80df/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d815d48b1804ed7867b539236b6dd62997850ca1c91cad187f2ddb1b7bbef19", size = 381576, upload-time = "2025-07-01T15:55:59.422Z" }, + { url = "https://files.pythonhosted.org/packages/14/37/418f030a76ef59f41e55f9dc916af8afafa3c9e3be38df744b2014851474/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84cfbd4d4d2cdeb2be61a057a258d26b22877266dd905809e94172dff01a42ae", size = 397062, upload-time = "2025-07-01T15:56:00.868Z" }, + { url = "https://files.pythonhosted.org/packages/47/e3/9090817a8f4388bfe58e28136e9682fa7872a06daff2b8a2f8c78786a6e1/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fbaa70553ca116c77717f513e08815aec458e6b69a028d4028d403b3bc84ff37", size = 516277, upload-time = "2025-07-01T15:56:02.672Z" }, + { url = "https://files.pythonhosted.org/packages/3f/3a/1ec3dd93250fb8023f27d49b3f92e13f679141f2e59a61563f88922c2821/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39bfea47c375f379d8e87ab4bb9eb2c836e4f2069f0f65731d85e55d74666387", size = 402604, upload-time = "2025-07-01T15:56:04.453Z" }, + { url = "https://files.pythonhosted.org/packages/f2/98/9133c06e42ec3ce637936263c50ac647f879b40a35cfad2f5d4ad418a439/rpds_py-0.26.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1533b7eb683fb5f38c1d68a3c78f5fdd8f1412fa6b9bf03b40f450785a0ab915", size = 383664, upload-time = "2025-07-01T15:56:05.823Z" }, + { url = "https://files.pythonhosted.org/packages/a9/10/a59ce64099cc77c81adb51f06909ac0159c19a3e2c9d9613bab171f4730f/rpds_py-0.26.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5ab0ee51f560d179b057555b4f601b7df909ed31312d301b99f8b9fc6028284", size = 415944, upload-time = "2025-07-01T15:56:07.132Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f1/ae0c60b3be9df9d5bef3527d83b8eb4b939e3619f6dd8382840e220a27df/rpds_py-0.26.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e5162afc9e0d1f9cae3b577d9c29ddbab3505ab39012cb794d94a005825bde21", size = 558311, upload-time = "2025-07-01T15:56:08.484Z" }, + { url = "https://files.pythonhosted.org/packages/fb/2b/bf1498ebb3ddc5eff2fe3439da88963d1fc6e73d1277fa7ca0c72620d167/rpds_py-0.26.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:43f10b007033f359bc3fa9cd5e6c1e76723f056ffa9a6b5c117cc35720a80292", size = 587928, upload-time = "2025-07-01T15:56:09.946Z" }, + { url = "https://files.pythonhosted.org/packages/b6/eb/e6b949edf7af5629848c06d6e544a36c9f2781e2d8d03b906de61ada04d0/rpds_py-0.26.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e3730a48e5622e598293eee0762b09cff34dd3f271530f47b0894891281f051d", size = 554554, upload-time = "2025-07-01T15:56:11.775Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1c/aa0298372ea898620d4706ad26b5b9e975550a4dd30bd042b0fe9ae72cce/rpds_py-0.26.0-cp39-cp39-win32.whl", hash = "sha256:4b1f66eb81eab2e0ff5775a3a312e5e2e16bf758f7b06be82fb0d04078c7ac51", size = 220273, upload-time = "2025-07-01T15:56:13.273Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b0/8b3bef6ad0b35c172d1c87e2e5c2bb027d99e2a7bc7a16f744e66cf318f3/rpds_py-0.26.0-cp39-cp39-win_amd64.whl", hash = "sha256:519067e29f67b5c90e64fb1a6b6e9d2ec0ba28705c51956637bac23a2f4ddae1", size = 231627, upload-time = "2025-07-01T15:56:14.853Z" }, + { url = "https://files.pythonhosted.org/packages/ef/9a/1f033b0b31253d03d785b0cd905bc127e555ab496ea6b4c7c2e1f951f2fd/rpds_py-0.26.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0909c5234543ada2515c05dc08595b08d621ba919629e94427e8e03539c958", size = 373226, upload-time = "2025-07-01T15:56:16.578Z" }, + { url = "https://files.pythonhosted.org/packages/58/29/5f88023fd6aaaa8ca3c4a6357ebb23f6f07da6079093ccf27c99efce87db/rpds_py-0.26.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c1fb0cda2abcc0ac62f64e2ea4b4e64c57dfd6b885e693095460c61bde7bb18e", size = 359230, upload-time = "2025-07-01T15:56:17.978Z" }, + { url = "https://files.pythonhosted.org/packages/6c/6c/13eaebd28b439da6964dde22712b52e53fe2824af0223b8e403249d10405/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84d142d2d6cf9b31c12aa4878d82ed3b2324226270b89b676ac62ccd7df52d08", size = 382363, upload-time = "2025-07-01T15:56:19.977Z" }, + { url = "https://files.pythonhosted.org/packages/55/fc/3bb9c486b06da19448646f96147796de23c5811ef77cbfc26f17307b6a9d/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a547e21c5610b7e9093d870be50682a6a6cf180d6da0f42c47c306073bfdbbf6", size = 397146, upload-time = "2025-07-01T15:56:21.39Z" }, + { url = "https://files.pythonhosted.org/packages/15/18/9d1b79eb4d18e64ba8bba9e7dec6f9d6920b639f22f07ee9368ca35d4673/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:35e9a70a0f335371275cdcd08bc5b8051ac494dd58bff3bbfb421038220dc871", size = 514804, upload-time = "2025-07-01T15:56:22.78Z" }, + { url = "https://files.pythonhosted.org/packages/4f/5a/175ad7191bdbcd28785204621b225ad70e85cdfd1e09cc414cb554633b21/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0dfa6115c6def37905344d56fb54c03afc49104e2ca473d5dedec0f6606913b4", size = 402820, upload-time = "2025-07-01T15:56:24.584Z" }, + { url = "https://files.pythonhosted.org/packages/11/45/6a67ecf6d61c4d4aff4bc056e864eec4b2447787e11d1c2c9a0242c6e92a/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:313cfcd6af1a55a286a3c9a25f64af6d0e46cf60bc5798f1db152d97a216ff6f", size = 384567, upload-time = "2025-07-01T15:56:26.064Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ba/16589da828732b46454c61858950a78fe4c931ea4bf95f17432ffe64b241/rpds_py-0.26.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f7bf2496fa563c046d05e4d232d7b7fd61346e2402052064b773e5c378bf6f73", size = 416520, upload-time = "2025-07-01T15:56:27.608Z" }, + { url = "https://files.pythonhosted.org/packages/81/4b/00092999fc7c0c266045e984d56b7314734cc400a6c6dc4d61a35f135a9d/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:aa81873e2c8c5aa616ab8e017a481a96742fdf9313c40f14338ca7dbf50cb55f", size = 559362, upload-time = "2025-07-01T15:56:29.078Z" }, + { url = "https://files.pythonhosted.org/packages/96/0c/43737053cde1f93ac4945157f7be1428724ab943e2132a0d235a7e161d4e/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:68ffcf982715f5b5b7686bdd349ff75d422e8f22551000c24b30eaa1b7f7ae84", size = 588113, upload-time = "2025-07-01T15:56:30.485Z" }, + { url = "https://files.pythonhosted.org/packages/46/46/8e38f6161466e60a997ed7e9951ae5de131dedc3cf778ad35994b4af823d/rpds_py-0.26.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6188de70e190847bb6db3dc3981cbadff87d27d6fe9b4f0e18726d55795cee9b", size = 555429, upload-time = "2025-07-01T15:56:31.956Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ac/65da605e9f1dd643ebe615d5bbd11b6efa1d69644fc4bf623ea5ae385a82/rpds_py-0.26.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1c962145c7473723df9722ba4c058de12eb5ebedcb4e27e7d902920aa3831ee8", size = 231950, upload-time = "2025-07-01T15:56:33.337Z" }, + { url = "https://files.pythonhosted.org/packages/51/f2/b5c85b758a00c513bb0389f8fc8e61eb5423050c91c958cdd21843faa3e6/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f61a9326f80ca59214d1cceb0a09bb2ece5b2563d4e0cd37bfd5515c28510674", size = 373505, upload-time = "2025-07-01T15:56:34.716Z" }, + { url = "https://files.pythonhosted.org/packages/23/e0/25db45e391251118e915e541995bb5f5ac5691a3b98fb233020ba53afc9b/rpds_py-0.26.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:183f857a53bcf4b1b42ef0f57ca553ab56bdd170e49d8091e96c51c3d69ca696", size = 359468, upload-time = "2025-07-01T15:56:36.219Z" }, + { url = "https://files.pythonhosted.org/packages/0b/73/dd5ee6075bb6491be3a646b301dfd814f9486d924137a5098e61f0487e16/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:941c1cfdf4799d623cf3aa1d326a6b4fdb7a5799ee2687f3516738216d2262fb", size = 382680, upload-time = "2025-07-01T15:56:37.644Z" }, + { url = "https://files.pythonhosted.org/packages/2f/10/84b522ff58763a5c443f5bcedc1820240e454ce4e620e88520f04589e2ea/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72a8d9564a717ee291f554eeb4bfeafe2309d5ec0aa6c475170bdab0f9ee8e88", size = 397035, upload-time = "2025-07-01T15:56:39.241Z" }, + { url = "https://files.pythonhosted.org/packages/06/ea/8667604229a10a520fcbf78b30ccc278977dcc0627beb7ea2c96b3becef0/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:511d15193cbe013619dd05414c35a7dedf2088fcee93c6bbb7c77859765bd4e8", size = 514922, upload-time = "2025-07-01T15:56:40.645Z" }, + { url = "https://files.pythonhosted.org/packages/24/e6/9ed5b625c0661c4882fc8cdf302bf8e96c73c40de99c31e0b95ed37d508c/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aea1f9741b603a8d8fedb0ed5502c2bc0accbc51f43e2ad1337fe7259c2b77a5", size = 402822, upload-time = "2025-07-01T15:56:42.137Z" }, + { url = "https://files.pythonhosted.org/packages/8a/58/212c7b6fd51946047fb45d3733da27e2fa8f7384a13457c874186af691b1/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4019a9d473c708cf2f16415688ef0b4639e07abaa569d72f74745bbeffafa2c7", size = 384336, upload-time = "2025-07-01T15:56:44.239Z" }, + { url = "https://files.pythonhosted.org/packages/aa/f5/a40ba78748ae8ebf4934d4b88e77b98497378bc2c24ba55ebe87a4e87057/rpds_py-0.26.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:093d63b4b0f52d98ebae33b8c50900d3d67e0666094b1be7a12fffd7f65de74b", size = 416871, upload-time = "2025-07-01T15:56:46.284Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a6/33b1fc0c9f7dcfcfc4a4353daa6308b3ece22496ceece348b3e7a7559a09/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2abe21d8ba64cded53a2a677e149ceb76dcf44284202d737178afe7ba540c1eb", size = 559439, upload-time = "2025-07-01T15:56:48.549Z" }, + { url = "https://files.pythonhosted.org/packages/71/2d/ceb3f9c12f8cfa56d34995097f6cd99da1325642c60d1b6680dd9df03ed8/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:4feb7511c29f8442cbbc28149a92093d32e815a28aa2c50d333826ad2a20fdf0", size = 588380, upload-time = "2025-07-01T15:56:50.086Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ed/9de62c2150ca8e2e5858acf3f4f4d0d180a38feef9fdab4078bea63d8dba/rpds_py-0.26.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e99685fc95d386da368013e7fb4269dd39c30d99f812a8372d62f244f662709c", size = 555334, upload-time = "2025-07-01T15:56:51.703Z" }, + { url = "https://files.pythonhosted.org/packages/7e/78/a08e2f28e91c7e45db1150813c6d760a0fb114d5652b1373897073369e0d/rpds_py-0.26.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a90a13408a7a856b87be8a9f008fff53c5080eea4e4180f6c2e546e4a972fb5d", size = 373157, upload-time = "2025-07-01T15:56:53.291Z" }, + { url = "https://files.pythonhosted.org/packages/52/01/ddf51517497c8224fb0287e9842b820ed93748bc28ea74cab56a71e3dba4/rpds_py-0.26.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ac51b65e8dc76cf4949419c54c5528adb24fc721df722fd452e5fbc236f5c40", size = 358827, upload-time = "2025-07-01T15:56:54.963Z" }, + { url = "https://files.pythonhosted.org/packages/4d/f4/acaefa44b83705a4fcadd68054280127c07cdb236a44a1c08b7c5adad40b/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59b2093224a18c6508d95cfdeba8db9cbfd6f3494e94793b58972933fcee4c6d", size = 382182, upload-time = "2025-07-01T15:56:56.474Z" }, + { url = "https://files.pythonhosted.org/packages/e9/a2/d72ac03d37d33f6ff4713ca4c704da0c3b1b3a959f0bf5eb738c0ad94ea2/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f01a5d6444a3258b00dc07b6ea4733e26f8072b788bef750baa37b370266137", size = 397123, upload-time = "2025-07-01T15:56:58.272Z" }, + { url = "https://files.pythonhosted.org/packages/74/58/c053e9d1da1d3724434dd7a5f506623913e6404d396ff3cf636a910c0789/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6e2c12160c72aeda9d1283e612f68804621f448145a210f1bf1d79151c47090", size = 516285, upload-time = "2025-07-01T15:57:00.283Z" }, + { url = "https://files.pythonhosted.org/packages/94/41/c81e97ee88b38b6d1847c75f2274dee8d67cb8d5ed7ca8c6b80442dead75/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb28c1f569f8d33b2b5dcd05d0e6ef7005d8639c54c2f0be824f05aedf715255", size = 402182, upload-time = "2025-07-01T15:57:02.587Z" }, + { url = "https://files.pythonhosted.org/packages/74/74/38a176b34ce5197b4223e295f36350dd90713db13cf3c3b533e8e8f7484e/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1766b5724c3f779317d5321664a343c07773c8c5fd1532e4039e6cc7d1a815be", size = 384436, upload-time = "2025-07-01T15:57:04.125Z" }, + { url = "https://files.pythonhosted.org/packages/e4/21/f40b9a5709d7078372c87fd11335469dc4405245528b60007cd4078ed57a/rpds_py-0.26.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b6d9e5a2ed9c4988c8f9b28b3bc0e3e5b1aaa10c28d210a594ff3a8c02742daf", size = 417039, upload-time = "2025-07-01T15:57:05.608Z" }, + { url = "https://files.pythonhosted.org/packages/02/ee/ed835925731c7e87306faa80a3a5e17b4d0f532083155e7e00fe1cd4e242/rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b5f7a446ddaf6ca0fad9a5535b56fbfc29998bf0e0b450d174bbec0d600e1d72", size = 559111, upload-time = "2025-07-01T15:57:07.371Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/d6e9e686b8ffb6139b82eb1c319ef32ae99aeb21f7e4bf45bba44a760d09/rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:eed5ac260dd545fbc20da5f4f15e7efe36a55e0e7cf706e4ec005b491a9546a0", size = 588609, upload-time = "2025-07-01T15:57:09.319Z" }, + { url = "https://files.pythonhosted.org/packages/e5/96/09bcab08fa12a69672716b7f86c672ee7f79c5319f1890c5a79dcb8e0df2/rpds_py-0.26.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:582462833ba7cee52e968b0341b85e392ae53d44c0f9af6a5927c80e539a8b67", size = 555212, upload-time = "2025-07-01T15:57:10.905Z" }, + { url = "https://files.pythonhosted.org/packages/2c/07/c554b6ed0064b6e0350a622714298e930b3cf5a3d445a2e25c412268abcf/rpds_py-0.26.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69a607203441e07e9a8a529cff1d5b73f6a160f22db1097211e6212a68567d11", size = 232048, upload-time = "2025-07-01T15:57:12.473Z" }, ] [[package]] From 4057cd2b629724da3e75569e0af472c49a361b62 Mon Sep 17 00:00:00 2001 From: Dima Bulavenko <92375510+Dima-Bulavenko@users.noreply.github.com> Date: Fri, 11 Jul 2025 12:52:12 +0100 Subject: [PATCH 086/106] Add regex patterns to JSON schema for `Decimal` type (#11987) The regex pattern may be different depending on whether `max_digits` and/or `decimal_places` are used. Co-authored-by: Jack --- docs/concepts/json_schema.md | 17 ++- pydantic/json_schema.py | 44 +++++- tests/test_json_schema.py | 275 +++++++++++++++++++++++++++++++++-- 3 files changed, 318 insertions(+), 18 deletions(-) diff --git a/docs/concepts/json_schema.md b/docs/concepts/json_schema.md index b982476edcd..ded07b32032 100644 --- a/docs/concepts/json_schema.md +++ b/docs/concepts/json_schema.md @@ -276,7 +276,13 @@ print(Model.model_json_schema(mode='validation')) { 'properties': { 'a': { - 'anyOf': [{'type': 'number'}, {'type': 'string'}], + 'anyOf': [ + {'type': 'number'}, + { + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + 'type': 'string', + }, + ], 'default': '12.34', 'title': 'A', } @@ -289,7 +295,14 @@ print(Model.model_json_schema(mode='validation')) print(Model.model_json_schema(mode='serialization')) """ { - 'properties': {'a': {'default': '12.34', 'title': 'A', 'type': 'string'}}, + 'properties': { + 'a': { + 'default': '12.34', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + 'title': 'A', + 'type': 'string', + } + }, 'title': 'Model', 'type': 'object', } diff --git a/pydantic/json_schema.py b/pydantic/json_schema.py index d50510d376d..d0b7e914db7 100644 --- a/pydantic/json_schema.py +++ b/pydantic/json_schema.py @@ -674,7 +674,49 @@ def decimal_schema(self, schema: core_schema.DecimalSchema) -> JsonSchemaValue: Returns: The generated JSON schema. """ - json_schema = self.str_schema(core_schema.str_schema()) + + def get_decimal_pattern(schema: core_schema.DecimalSchema) -> str: + max_digits = schema.get('max_digits') + decimal_places = schema.get('decimal_places') + + pattern = ( + r'^(?!^[-+.]*$)[+-]?0*' # check it is not empty string and not one or sequence of ".+-" characters. + ) + + # Case 1: Both max_digits and decimal_places are set + if max_digits is not None and decimal_places is not None: + integer_places = max(0, max_digits - decimal_places) + pattern += ( + rf'(?:' + rf'\d{{0,{integer_places}}}' + rf'|' + rf'(?=[\d.]{{1,{max_digits + 1}}}0*$)' + rf'\d{{0,{integer_places}}}\.\d{{0,{decimal_places}}}0*$' + rf')' + ) + + # Case 2: Only max_digits is set + elif max_digits is not None and decimal_places is None: + pattern += ( + rf'(?:' + rf'\d{{0,{max_digits}}}' + rf'|' + rf'(?=[\d.]{{1,{max_digits + 1}}}0*$)' + rf'\d*\.\d*0*$' + rf')' + ) + + # Case 3: Only decimal_places is set + elif max_digits is None and decimal_places is not None: + pattern += rf'\d*\.?\d{{0,{decimal_places}}}0*$' + + # Case 4: Both are None (no restrictions) + else: + pattern += r'\d*\.?\d*$' # look for arbitrary integer or decimal + + return pattern + + json_schema = self.str_schema(core_schema.str_schema(pattern=get_decimal_pattern(schema))) if self.mode == 'validation': multiple_of = schema.get('multiple_of') le = schema.get('le') diff --git a/tests/test_json_schema.py b/tests/test_json_schema.py index 0ebbaa3a8ab..1993bb826df 100644 --- a/tests/test_json_schema.py +++ b/tests/test_json_schema.py @@ -525,7 +525,17 @@ class Model(BaseModel): assert model_json_schema_validation == { 'properties': { 'a': {'default': 'foobar', 'format': 'binary', 'title': 'A', 'type': 'string'}, - 'b': {'anyOf': [{'type': 'number'}, {'type': 'string'}], 'default': '12.34', 'title': 'B'}, + 'b': { + 'anyOf': [ + {'type': 'number'}, + { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ], + 'default': '12.34', + 'title': 'B', + }, }, 'title': 'Model', 'type': 'object', @@ -533,7 +543,12 @@ class Model(BaseModel): assert model_json_schema_serialization == { 'properties': { 'a': {'default': 'foobar', 'format': 'binary', 'title': 'A', 'type': 'string'}, - 'b': {'default': '12.34', 'title': 'B', 'type': 'string'}, + 'b': { + 'default': '12.34', + 'title': 'B', + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, }, 'title': 'Model', 'type': 'object', @@ -1038,6 +1053,7 @@ class Model(BaseModel): assert Model.model_json_schema() == base_schema +# ADDTESTS: add test cases to check max_digits and decimal_places @pytest.mark.parametrize( 'field_type,expected_schema', [ @@ -1053,7 +1069,18 @@ class Model(BaseModel): base_schema = { 'title': 'Model', 'type': 'object', - 'properties': {'a': {'anyOf': [{'type': 'number'}, {'type': 'string'}], 'title': 'A'}}, + 'properties': { + 'a': { + 'anyOf': [ + {'type': 'number'}, + { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ], + 'title': 'A', + } + }, 'required': ['a'], } base_schema['properties']['a']['anyOf'][0].update(expected_schema) @@ -1984,6 +2011,7 @@ class A(BaseModel): assert A.model_json_schema()['description'] == description +# ADDTESTS: add test cases to check max_digits and decimal_places constrains @pytest.mark.parametrize( 'kwargs,type_,expected_extra', [ @@ -2006,11 +2034,71 @@ class A(BaseModel): ({'ge': -math.inf}, float, {'type': 'number'}), ({'le': math.inf}, float, {'type': 'number'}), ({'multiple_of': 5}, float, {'type': 'number', 'multipleOf': 5}), - ({'gt': 2}, Decimal, {'anyOf': [{'exclusiveMinimum': 2.0, 'type': 'number'}, {'type': 'string'}]}), - ({'lt': 5}, Decimal, {'anyOf': [{'type': 'number', 'exclusiveMaximum': 5}, {'type': 'string'}]}), - ({'ge': 2}, Decimal, {'anyOf': [{'type': 'number', 'minimum': 2}, {'type': 'string'}]}), - ({'le': 5}, Decimal, {'anyOf': [{'type': 'number', 'maximum': 5}, {'type': 'string'}]}), - ({'multiple_of': 5}, Decimal, {'anyOf': [{'type': 'number', 'multipleOf': 5}, {'type': 'string'}]}), + ( + {'gt': 2}, + Decimal, + { + 'anyOf': [ + {'exclusiveMinimum': 2.0, 'type': 'number'}, + { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ] + }, + ), + ( + {'lt': 5}, + Decimal, + { + 'anyOf': [ + {'type': 'number', 'exclusiveMaximum': 5}, + { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ] + }, + ), + ( + {'ge': 2}, + Decimal, + { + 'anyOf': [ + {'type': 'number', 'minimum': 2}, + { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ] + }, + ), + ( + {'le': 5}, + Decimal, + { + 'anyOf': [ + {'type': 'number', 'maximum': 5}, + { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ] + }, + ), + ( + {'multiple_of': 5}, + Decimal, + { + 'anyOf': [ + {'type': 'number', 'multipleOf': 5}, + { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ] + }, + ), ], ) def test_constraints_schema_validation(kwargs, type_, expected_extra): @@ -2027,6 +2115,7 @@ class Foo(BaseModel): assert Foo.model_json_schema(mode='validation') == expected_schema +# ADDTESTS: add test cases to check max_digits and decimal_places constrains @pytest.mark.parametrize( 'kwargs,type_,expected_extra', [ @@ -2049,11 +2138,46 @@ class Foo(BaseModel): ({'ge': -math.inf}, float, {'type': 'number'}), ({'le': math.inf}, float, {'type': 'number'}), ({'multiple_of': 5}, float, {'type': 'number', 'multipleOf': 5}), - ({'gt': 2}, Decimal, {'type': 'string'}), - ({'lt': 5}, Decimal, {'type': 'string'}), - ({'ge': 2}, Decimal, {'type': 'string'}), - ({'le': 5}, Decimal, {'type': 'string'}), - ({'multiple_of': 5}, Decimal, {'type': 'string'}), + ( + {'gt': 2}, + Decimal, + { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ), + ( + {'lt': 5}, + Decimal, + { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ), + ( + {'ge': 2}, + Decimal, + { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ), + ( + {'le': 5}, + Decimal, + { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ), + ( + {'multiple_of': 5}, + Decimal, + { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ), ], ) def test_constraints_schema_serialization(kwargs, type_, expected_extra): @@ -5734,8 +5858,19 @@ class Model(BaseModel): ) assert result == ( { - ('Decimal', 'serialization'): {'type': 'string'}, - ('Decimal', 'validation'): {'anyOf': [{'type': 'number'}, {'type': 'string'}]}, + ('Decimal', 'serialization'): { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ('Decimal', 'validation'): { + 'anyOf': [ + {'type': 'number'}, + { + 'type': 'string', + 'pattern': '^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$', + }, + ] + }, ('Model', 'validation'): {'$ref': '#/$defs/Model'}, }, {'Model': {'properties': {}, 'title': 'Model', 'type': 'object'}}, @@ -6814,3 +6949,113 @@ def test_json_schema_arguments_v3_aliases() -> None: }, 'required': ['b'], } + + +@pytest.fixture +def get_decimal_pattern(): + def pattern(max_digits=None, decimal_places=None) -> str: + filed = TypeAdapter(Annotated[Decimal, Field(max_digits=max_digits, decimal_places=decimal_places)]) + return filed.json_schema()['anyOf'][1]['pattern'] + + return pattern + + +@pytest.mark.parametrize('valid_decimal', ['0.1', '0000.1', '11.1', '001.1', '11111111.1', '0.100000', '0.01', '0.11']) +def test_decimal_pattern_with_only_decimal_places_set(valid_decimal, get_decimal_pattern) -> None: + decimal_places = 2 + pattern = get_decimal_pattern(decimal_places=decimal_places) + + assert re.fullmatch(pattern, valid_decimal) is not None + + +@pytest.mark.parametrize( + 'invalid_decimal', ['0.001', '0000.001', '11.001', '001.001', '11111111.001', '0.00100000', '0.011', '0.111'] +) +def test_decimal_pattern_reject_invalid_values_with_only_decimal_places_set( + invalid_decimal, get_decimal_pattern +) -> None: + decimal_places = 2 + pattern = get_decimal_pattern(decimal_places=decimal_places) + + assert re.fullmatch(pattern, invalid_decimal) is None + + +@pytest.mark.parametrize('valid_decimal', ['0.1', '000.1', '0.001000', '0000.001000', '111', '100', '00100', '011.10']) +def test_decimal_pattern_with_only_max_digit_set(valid_decimal, get_decimal_pattern) -> None: + max_digits = 3 + pattern = get_decimal_pattern(max_digits=max_digits) + + assert re.fullmatch(pattern, valid_decimal) is not None + + +@pytest.mark.parametrize( + 'valid_decimal', ['0.0001', '111.1', '0.0001000', '0001.001000', '1111', '1000', '001000', '011.110'] +) +def test_decimal_pattern_reject_invalid_values_with_only_max_digit_set(valid_decimal, get_decimal_pattern) -> None: + max_digits = 3 + pattern = get_decimal_pattern(max_digits=max_digits) + + assert re.fullmatch(pattern, valid_decimal) is None + + +@pytest.mark.parametrize( + 'valid_decimal', ['11111111', '1111.11111', '0.00000001', '11.', '.11', '000', '0', '-.0', '-.1', '-1.', '-0.'] +) +def test_decimal_pattern_with_decimal_places_max_digits_unset(valid_decimal, get_decimal_pattern) -> None: + pattern = get_decimal_pattern() + + assert re.fullmatch(pattern, valid_decimal) is not None + + +@pytest.mark.parametrize('invalid_decimal', ['.', '-.', '..', '1.1.1', '0.0.0', '1..1', '-', '--']) +def test_decimal_pattern_reject_invalid_with_decimal_places_max_digits_unset( + invalid_decimal, get_decimal_pattern +) -> None: + pattern = get_decimal_pattern() + + assert re.fullmatch(pattern, invalid_decimal) is None + + +@pytest.mark.parametrize( + 'valid_decimal', ['10.01', '11.11', '010.010', '011.110', '11', '0011', '001.100', '.1', '.11000', '00011.'] +) +def test_decimal_pattern_with_decimal_places_max_digits_set(valid_decimal, get_decimal_pattern) -> None: + pattern = get_decimal_pattern(max_digits=4, decimal_places=2) + + assert re.fullmatch(pattern, valid_decimal) is not None + + +@pytest.mark.parametrize( + 'invalid_decimal', + ['10.001', '111', '0100.0010', '011.0110', '111.1', '1111', '001.11100', '.111', '.111000', '000111.', '1100'], +) +def test_decimal_pattern_reject_invalid_with_decimal_places_max_digits_set( + invalid_decimal, get_decimal_pattern +) -> None: + pattern = get_decimal_pattern(max_digits=4, decimal_places=2) + + assert re.fullmatch(pattern, invalid_decimal) is None + + +@pytest.mark.parametrize('valid_value', ['0.34', '0000.2', '0.3333', '000.3333000', '+000.000100', '0.1']) +def test_decimal_pattern_with_max_digits_and_decimal_places_equal(valid_value, get_decimal_pattern) -> None: + pattern = get_decimal_pattern(max_digits=4, decimal_places=4) + + assert re.fullmatch(pattern, valid_value) is not None + + +@pytest.mark.parametrize('invalid_value', ['120.34', '1.222', '0.33333', '0001.1', '0010.00100', '1.']) +def test_decimal_pattern_reject_invalid_with_max_digits_and_decimal_places_equal( + invalid_value, get_decimal_pattern +) -> None: + pattern = get_decimal_pattern(max_digits=4, decimal_places=4) + + assert re.fullmatch(pattern, invalid_value) is None + + +@pytest.mark.parametrize('invalid_decimal', ['', ' ', ' ', '.', '..', '...', '+', '-', '++', '--', 'a', 'a.1', '1.a']) +def test_decimal_pattern_reject_invalid_not_numerical_values_with_decimal_places_max_digits_set( + invalid_decimal, get_decimal_pattern +) -> None: + pattern = get_decimal_pattern() + assert re.fullmatch(pattern, invalid_decimal) is None From d156ba08c140ee1e2b931120cb150080843476fe Mon Sep 17 00:00:00 2001 From: Herman Semykozov Date: Tue, 15 Jul 2025 18:37:37 +0300 Subject: [PATCH 087/106] Migrate branding (#12050) Co-authored-by: Marcelo Trylesinski --- CITATION.cff | 8 ++++---- README.md | 2 +- docs/extra/tweaks.css | 2 +- docs/favicon.png | Bin 594 -> 876 bytes docs/index.md | 6 +++--- docs/why.md | 2 +- mkdocs.yml | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 3dd131fa610..9444425442d 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -1,5 +1,5 @@ cff-version: 1.2.0 -title: Pydantic +title: Pydantic Validation message: 'If you use this software, please cite it as below.' type: software authors: @@ -30,12 +30,12 @@ authors: repository-code: 'https://github.com/pydantic/pydantic' url: 'https://docs.pydantic.dev/latest/' abstract: >- - Pydantic is the most widely used data validation library + Pydantic Validation is the most widely used data validation library for Python. - Fast and extensible, Pydantic plays nicely with your + Fast and extensible, Pydantic Validation plays nicely with your linters/IDE/brain. Define how data should be in pure, - canonical Python 3.9+; validate it with Pydantic. + canonical Python 3.9+; validate it with Pydantic Validation. keywords: - python - validation diff --git a/README.md b/README.md index f4f9b1afc94..fc920f69ba9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Pydantic +# Pydantic Validation [![CI](https://img.shields.io/github/actions/workflow/status/pydantic/pydantic/ci.yml?branch=main&logo=github&label=CI)](https://github.com/pydantic/pydantic/actions?query=event%3Apush+branch%3Amain+workflow%3ACI) [![Coverage](https://coverage-badge.samuelcolvin.workers.dev/pydantic/pydantic.svg)](https://coverage-badge.samuelcolvin.workers.dev/redirect/pydantic/pydantic) diff --git a/docs/extra/tweaks.css b/docs/extra/tweaks.css index 855855db4bd..d06b5185816 100644 --- a/docs/extra/tweaks.css +++ b/docs/extra/tweaks.css @@ -113,7 +113,7 @@ aside.blog img { /* Logfire link admonition */ :root { - --md-admonition-icon--logfire: url('data:image/svg+xml;charset=utf-8, ') + --md-admonition-icon--logfire: url('data:image/svg+xml;utf8,'); } .md-typeset .admonition.logfire, .md-typeset details.logfire { border-color: #e620e9; diff --git a/docs/favicon.png b/docs/favicon.png index dac6c4765ca8a5bb1905e83120355a43317c82e6..4a3bdb09b06728ed6583136c9556fa4032718758 100644 GIT binary patch delta 864 zcmV-m1E2iT1ndTo8Gi-<0047(dh`GQ010qNS#tmY0*wFw0*wJueKO+!00SOLL_t(o zh3!{MXcJKs9slB@eo$0wbKk@uXb~4xM3K5s5d;xeF4W?(3yVuBD7aG8m0jq@mF`6m zrHi^yM5Go(hzPZ|G|hc;Z#wj&XzO?6PUhES(k5w|g?Qn?WPj$(Ip^KE_q-Rw_#ah< zPU#H@^ag=@<=UucIEJ%G13%J=9T}+TsoblZ094%JlLsP9K3^AdO43fPcq+egevgXN zo`@-VwxHxgFtkzwzjFzJr$-d;vYM=Bt@v9YXfv)_FafCePWauqBkq%+qT35Xt|4~} z75#}Tx|pIoQGZkNOryO;1CP4kz(gi(ES!VeaJ^Q9c@Z>*Nles)+%cTRT5*rJvfpUZ zky3ND${mzBd7<>&F`Omy7J$H=L27|+`1jL0(#uitQ5pTI{uO};pzGm$?wl97PLA$I zpdVgZ`|On6kTtF22y_pDCL%uY6@edX#ce|{z6OC`dw+s|W`XuqMQ*3;22?Zb_VUy?`)5~w@;P2GNx#*5_6TDvv4wHO91KkR{Au>!lQx-Wl@m2(yjI6Xvt6ZyeLv&uDfa1={wYp-0_N7U| zo|W7&oPVWS@vESK3V_QMFe96$-s2atY~Rv7B?V|j*TS^XrP;)mE5O6O9KpR>Vp6UZ z75(yx>cw0pQi%ZhB&hhAZ)Vv99hxy=I5DwS0}p!&$F zR}cI!08`efxxlIsAb~(9BmVHj-Ow~pd!$|NmVX0OtpEw(i1osKOu_aKFW#9VZO8*uq+{G}TKwGtJ|{I&sQ`IL-gWl~;OSyxbIqzPG>*h* z3j$x!Kp%^&)a?#>iHa^T@TO7%GL4ya0_u@|FJ2U7#GJAw9Tv}tO_vmgrL4UObQ2X1 z##xKup1kD-z+G}LXyY04c~G`-!K~`&ZZ%oWZe|pHm}@7Dl8Qjt8*2K0!3xFn#gKmT qNsW4h2E82>Uz8!&bs;tW#rO*!Lh!lM=;X=(0000wT?FIsUSH3WFXKoxphK|w590IJzMYp|9j2g$}6s@ty_ctaC~u3+ZCKx zuY3B}8h%&9nm_gIZ|vR%7Bx(NU%K_+!-n3fY&zM*e6%a+$!X>SiM4!4a{ULT^C8=bc5)W*Je87~K~ z#*Hl|`6u<;qbI$QT9F%-KYwqW%;Ktjw~O!X-j^=%{L_;SZ63D~^0}Hp>8Z1-XI}chbI<2rY$A6Q Vo6icy$pIsU!PC{xWt~$(696Q74le)z diff --git a/docs/index.md b/docs/index.md index 84910f6ee53..9167ff069c7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,4 +1,4 @@ -# Pydantic +# Pydantic Validation [![CI](https://img.shields.io/github/actions/workflow/status/pydantic/pydantic/ci.yml?branch=main&logo=github&label=CI)](https://github.com/pydantic/pydantic/actions?query=event%3Apush+branch%3Amain+workflow%3ACI) [![Coverage](https://coverage-badge.samuelcolvin.workers.dev/pydantic/pydantic.svg)](https://github.com/pydantic/pydantic/actions?query=event%3Apush+branch%3Amain+workflow%3ACI)
@@ -14,8 +14,8 @@ Pydantic is the most widely used data validation library for Python. Fast and extensible, Pydantic plays nicely with your linters/IDE/brain. Define how data should be in pure, canonical Python 3.9+; validate it with Pydantic. -!!! logfire "Monitor Pydantic with Logfire :fire:" - Built by the same team as Pydantic, **[Logfire](https://pydantic.dev/logfire)** is an application monitoring tool that is as simple to use and powerful as Pydantic itself. +!!! logfire "Monitor Pydantic with Pydantic Logfire :fire:" + **[Pydantic Logfire](https://pydantic.dev/logfire)** is an application monitoring tool that is as simple to use and powerful as Pydantic itself. Logfire integrates with many popular Python libraries including FastAPI, OpenAI and Pydantic itself, so you can use Logfire to monitor Pydantic validations and understand why some inputs fail validation: diff --git a/docs/why.md b/docs/why.md index 1620241f870..8a4d32c733d 100644 --- a/docs/why.md +++ b/docs/why.md @@ -1,4 +1,4 @@ -# Why use Pydantic? +# Why use Pydantic Validation? Today, Pydantic is downloaded many times a month and used by some of the largest and most recognisable organisations in the world. diff --git a/mkdocs.yml b/mkdocs.yml index 588de0c61a3..8cfea35943a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,4 +1,4 @@ -site_name: Pydantic +site_name: Pydantic Validation site_description: Data validation using Python type hints strict: true site_url: https://docs.pydantic.dev/ From 3a7fe26ad40a49c1e7130224c2fb00188180fe63 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Fri, 18 Jul 2025 10:22:28 +0200 Subject: [PATCH 088/106] Emit warning when field-specific metadata is used in invalid contexts (#12028) --- docs/concepts/types.md | 4 +- pydantic/_internal/_fields.py | 20 +---- pydantic/_internal/_generate_schema.py | 115 ++++++++++++++++++++++--- pydantic/functional_validators.py | 4 +- pydantic/warnings.py | 14 ++- tests/test_annotated.py | 12 --- tests/test_fields.py | 69 ++++++++++++++- 7 files changed, 186 insertions(+), 52 deletions(-) diff --git a/docs/concepts/types.md b/docs/concepts/types.md index c163c05f365..cc2dcc7b79a 100644 --- a/docs/concepts/types.md +++ b/docs/concepts/types.md @@ -288,7 +288,7 @@ By leveraging the new [`type` statement](https://typing.readthedocs.io/en/latest === "Python 3.9 and above" - ```python + ```python {test="skip"} from typing import Annotated from typing_extensions import TypeAliasType @@ -304,7 +304,7 @@ By leveraging the new [`type` statement](https://typing.readthedocs.io/en/latest === "Python 3.12 and above (new syntax)" - ```python {requires="3.12" upgrade="skip" lint="skip"} + ```python {requires="3.12" upgrade="skip" lint="skip" test="skip"} from typing import Annotated from pydantic import BaseModel, Field diff --git a/pydantic/_internal/_fields.py b/pydantic/_internal/_fields.py index e60a9a4aff2..e25ef74cf1b 100644 --- a/pydantic/_internal/_fields.py +++ b/pydantic/_internal/_fields.py @@ -12,8 +12,7 @@ from typing import TYPE_CHECKING, Any, Callable, TypeVar from pydantic_core import PydanticUndefined -from typing_extensions import TypeIs, get_origin -from typing_inspection import typing_objects +from typing_extensions import TypeIs from typing_inspection.introspection import AnnotationSource from pydantic import PydanticDeprecatedSince211 @@ -351,7 +350,6 @@ def collect_model_fields( # noqa: C901 field_info = copy(parent_fields_lookup[ann_name]) else: # An assigned value is present (either the default value, or a `Field()` function) - _warn_on_nested_alias_in_annotation(ann_type, ann_name) if isinstance(assigned_value, FieldInfo_) and ismethoddescriptor(assigned_value.default): # `assigned_value` was fetched using `getattr`, which triggers a call to `__get__` # for descriptors, so we do the same if the `= field(default=...)` form is used. @@ -414,22 +412,6 @@ def collect_model_fields( # noqa: C901 return fields, class_vars -def _warn_on_nested_alias_in_annotation(ann_type: type[Any], ann_name: str) -> None: - FieldInfo = import_cached_field_info() - - args = getattr(ann_type, '__args__', None) - if args: - for anno_arg in args: - if typing_objects.is_annotated(get_origin(anno_arg)): - for anno_type_arg in _typing_extra.get_args(anno_arg): - if isinstance(anno_type_arg, FieldInfo) and anno_type_arg.alias is not None: - warnings.warn( - f'`alias` specification on field "{ann_name}" must be set on outermost annotation to take effect.', - UserWarning, - ) - return - - def rebuild_model_fields( cls: type[BaseModel], *, diff --git a/pydantic/_internal/_generate_schema.py b/pydantic/_internal/_generate_schema.py index d2ea60d09ff..34f9e91d430 100644 --- a/pydantic/_internal/_generate_schema.py +++ b/pydantic/_internal/_generate_schema.py @@ -37,7 +37,6 @@ overload, ) from uuid import UUID -from warnings import warn from zoneinfo import ZoneInfo import typing_extensions @@ -62,7 +61,7 @@ from ..functional_validators import AfterValidator, BeforeValidator, FieldValidatorModes, PlainValidator, WrapValidator from ..json_schema import JsonSchemaValue from ..version import version_short -from ..warnings import PydanticArbitraryTypeWarning, PydanticDeprecatedSince20 +from ..warnings import ArbitraryTypeWarning, PydanticDeprecatedSince20, UnsupportedFieldAttributeWarning from . import _decorators, _discriminated_union, _known_annotated_metadata, _repr, _typing_extra from ._config import ConfigWrapper, ConfigWrapperStack from ._core_metadata import CoreMetadata, update_core_metadata @@ -164,6 +163,24 @@ ] VALIDATE_CALL_SUPPORTED_TYPES = get_args(ValidateCallSupportedTypes) +UNSUPPORTED_STANDALONE_FIELDINFO_ATTRIBUTES = [ + ('alias', None), + ('validation_alias', None), + ('serialization_alias', None), + # will be set if any alias is set, so disable it to avoid double warnings: + # 'alias_priority', + ('default', PydanticUndefined), + ('default_factory', None), + ('exclude', None), + ('deprecated', None), + ('repr', True), + ('validate_default', None), + ('frozen', None), + ('init', None), + ('init_var', None), + ('kw_only', None), +] +"""`FieldInfo` attributes (and their default value) that can't be used outside of a model (e.g. in a type adapter or a PEP 695 type alias).""" _mode_to_validator: dict[ FieldValidatorModes, type[BeforeValidator | AfterValidator | PlainValidator | WrapValidator] @@ -562,7 +579,15 @@ def _mapping_schema(self, tp: Any, keys_type: Any, values_type: Any) -> CoreSche mapped_origin = MAPPING_ORIGIN_MAP[tp] keys_schema = self.generate_schema(keys_type) - values_schema = self.generate_schema(values_type) + with warnings.catch_warnings(): + # We kind of abused `Field()` default factories to be able to specify + # the `defaultdict`'s `default_factory`. As a consequence, we get warnings + # as normally `FieldInfo.default_factory` is unsupported in the context where + # `Field()` is used and our only solution is to ignore them (note that this might + # wrongfully ignore valid warnings, e.g. if the `value_type` is a PEP 695 type alias + # with unsupported metadata). + warnings.simplefilter('ignore', category=UnsupportedFieldAttributeWarning) + values_schema = self.generate_schema(values_type) dict_schema = core_schema.dict_schema(keys_schema, values_schema, strict=False) if mapped_origin is dict: @@ -614,12 +639,12 @@ def _fraction_schema(self) -> CoreSchema: def _arbitrary_type_schema(self, tp: Any) -> CoreSchema: if not isinstance(tp, type): - warn( + warnings.warn( f'{tp!r} is not a Python type (it may be an instance of an object),' ' Pydantic will allow any object with no validation since we cannot even' ' enforce that the input is an instance of the given type.' ' To get rid of this error wrap the type with `pydantic.SkipValidation`.', - PydanticArbitraryTypeWarning, + ArbitraryTypeWarning, ) return core_schema.any_schema() return core_schema.is_instance_schema(tp) @@ -903,12 +928,12 @@ def _generate_schema_from_get_schema_method(self, obj: Any, source: Any) -> core from pydantic.v1 import BaseModel as BaseModelV1 if issubclass(obj, BaseModelV1): - warn( + warnings.warn( f'Mixing V1 models and V2 models (or constructs, like `TypeAdapter`) is not supported. Please upgrade `{obj.__name__}` to V2.', UserWarning, ) else: - warn( + warnings.warn( '`__get_validators__` is deprecated and will be removed, use `__get_pydantic_core_schema__` instead.', PydanticDeprecatedSince20, ) @@ -1525,7 +1550,14 @@ def _generate_parameter_schema( update_field_from_config(self._config_wrapper, name, field) with self.field_name_stack.push(name): - schema = self._apply_annotations(field.annotation, [field]) + schema = self._apply_annotations( + field.annotation, + [field], + # Because we pass `field` as metadata above (required for attributes relevant for + # JSON Scheme generation), we need to ignore the potential warnings about `FieldInfo` + # attributes that will not be used: + check_unsupported_field_info_attributes=False, + ) if not field.is_required(): schema = wrap_default(field, schema) @@ -1567,7 +1599,14 @@ def _generate_parameter_v3_schema( update_field_from_config(self._config_wrapper, name, field) with self.field_name_stack.push(name): - schema = self._apply_annotations(field.annotation, [field]) + schema = self._apply_annotations( + field.annotation, + [field], + # Because we pass `field` as metadata above (required for attributes relevant for + # JSON Scheme generation), we need to ignore the potential warnings about `FieldInfo` + # attributes that will not be used: + check_unsupported_field_info_attributes=False, + ) if not field.is_required(): schema = wrap_default(field, schema) @@ -2120,6 +2159,7 @@ def _apply_annotations( source_type: Any, annotations: list[Any], transform_inner_schema: Callable[[CoreSchema], CoreSchema] = lambda x: x, + check_unsupported_field_info_attributes: bool = True, ) -> CoreSchema: """Apply arguments from `Annotated` or from `FieldInfo` to a schema. @@ -2150,7 +2190,10 @@ def inner_handler(obj: Any) -> CoreSchema: if annotation is None: continue get_inner_schema = self._get_wrapped_inner_schema( - get_inner_schema, annotation, pydantic_js_annotation_functions + get_inner_schema, + annotation, + pydantic_js_annotation_functions, + check_unsupported_field_info_attributes=check_unsupported_field_info_attributes, ) schema = get_inner_schema(source_type) @@ -2159,10 +2202,31 @@ def inner_handler(obj: Any) -> CoreSchema: update_core_metadata(core_metadata, pydantic_js_annotation_functions=pydantic_js_annotation_functions) return _add_custom_serialization_from_json_encoders(self._config_wrapper.json_encoders, source_type, schema) - def _apply_single_annotation(self, schema: core_schema.CoreSchema, metadata: Any) -> core_schema.CoreSchema: + def _apply_single_annotation( + self, + schema: core_schema.CoreSchema, + metadata: Any, + check_unsupported_field_info_attributes: bool = True, + ) -> core_schema.CoreSchema: FieldInfo = import_cached_field_info() if isinstance(metadata, FieldInfo): + if ( + check_unsupported_field_info_attributes + # HACK: we don't want to emit the warning for `FieldInfo` subclasses, because FastAPI does weird manipulations + # with its subclasses and their annotations: + and type(metadata) is FieldInfo + and (unsupported_attributes := self._get_unsupported_field_info_attributes(metadata)) + ): + for attr, value in unsupported_attributes: + warnings.warn( + f'The {attr!r} attribute with value {value!r} was provided to the `Field()` function, ' + f'which has no effect in the context it was used. {attr!r} is field-specific metadata, ' + 'and can only be attached to a model field using `Annotated` metadata or by assignment. ' + 'This may have happened because an `Annotated` type alias using the `type` statement was ' + 'used, or if the `Field()` function was attached to a single member of a union type.', + category=UnsupportedFieldAttributeWarning, + ) for field_metadata in metadata.metadata: schema = self._apply_single_annotation(schema, field_metadata) @@ -2217,11 +2281,34 @@ def _apply_single_annotation_json_schema( ) return schema + def _get_unsupported_field_info_attributes(self, field_info: FieldInfo) -> list[tuple[str, Any]]: + """Get the list of unsupported `FieldInfo` attributes when not directly used in `Annotated` for field annotations.""" + unused_metadata: list[tuple[str, Any]] = [] + for unused_metadata_name, unset_value in UNSUPPORTED_STANDALONE_FIELDINFO_ATTRIBUTES: + if ( + (unused_metadata_value := getattr(field_info, unused_metadata_name)) is not unset_value + # `default` and `default_factory` can still be used with a type adapter, so only include them + # if used with a model-like class: + and ( + unused_metadata_name not in ('default', 'default_factory') + or self.model_type_stack.get() is not None + ) + ): + # Setting `alias` will set `validation/serialization_alias` as well, so we want to avoid duplicate warnings: + if ( + unused_metadata_name not in ('validation_alias', 'serialization_alias') + or 'alias' not in field_info._attributes_set + ): + unused_metadata.append((unused_metadata_name, unused_metadata_value)) + + return unused_metadata + def _get_wrapped_inner_schema( self, get_inner_schema: GetCoreSchemaHandler, annotation: Any, pydantic_js_annotation_functions: list[GetJsonSchemaFunction], + check_unsupported_field_info_attributes: bool = False, ) -> CallbackGetCoreSchemaHandler: annotation_get_schema: GetCoreSchemaFunction | None = getattr(annotation, '__get_pydantic_core_schema__', None) @@ -2230,7 +2317,11 @@ def new_handler(source: Any) -> core_schema.CoreSchema: schema = annotation_get_schema(source, get_inner_schema) else: schema = get_inner_schema(source) - schema = self._apply_single_annotation(schema, annotation) + schema = self._apply_single_annotation( + schema, + annotation, + check_unsupported_field_info_attributes=check_unsupported_field_info_attributes, + ) schema = self._apply_single_annotation_json_schema(schema, annotation) metadata_js_function = _extract_get_pydantic_json_schema(annotation) diff --git a/pydantic/functional_validators.py b/pydantic/functional_validators.py index cae054633a8..6d9b7e20d0d 100644 --- a/pydantic/functional_validators.py +++ b/pydantic/functional_validators.py @@ -15,7 +15,7 @@ from ._internal import _decorators, _generics, _internal_dataclass from .annotated_handlers import GetCoreSchemaHandler from .errors import PydanticUserError -from .warnings import PydanticArbitraryTypeWarning +from .warnings import ArbitraryTypeWarning if sys.version_info < (3, 11): from typing_extensions import Protocol @@ -820,7 +820,7 @@ def __class_getitem__(cls, item: Any) -> Any: @classmethod def __get_pydantic_core_schema__(cls, source: Any, handler: GetCoreSchemaHandler) -> core_schema.CoreSchema: with warnings.catch_warnings(): - warnings.simplefilter('ignore', PydanticArbitraryTypeWarning) + warnings.simplefilter('ignore', ArbitraryTypeWarning) original_schema = handler(source) metadata = {'pydantic_js_annotation_functions': [lambda _c, h: h(original_schema)]} return core_schema.any_schema( diff --git a/pydantic/warnings.py b/pydantic/warnings.py index f32d7f22aef..13cb6acbb67 100644 --- a/pydantic/warnings.py +++ b/pydantic/warnings.py @@ -12,6 +12,8 @@ 'PydanticDeprecatedSince211', 'PydanticDeprecationWarning', 'PydanticExperimentalWarning', + 'ArbitraryTypeWarning', + 'UnsupportedFieldAttributeWarning', ) @@ -96,5 +98,13 @@ class PydanticExperimentalWarning(Warning): """ -class PydanticArbitraryTypeWarning(UserWarning): - """Warning raised when Pydantic fails to generate a core schema for an arbitrary type.""" +class CoreSchemaGenerationWarning(UserWarning): + """A warning raised during core schema generation.""" + + +class ArbitraryTypeWarning(CoreSchemaGenerationWarning): + """A warning raised when Pydantic fails to generate a core schema for an arbitrary type.""" + + +class UnsupportedFieldAttributeWarning(CoreSchemaGenerationWarning): + """A warning raised when a `Field()` attribute isn't supported in the context it is used.""" diff --git a/tests/test_annotated.py b/tests/test_annotated.py index 48cb2d94242..0cb639034f3 100644 --- a/tests/test_annotated.py +++ b/tests/test_annotated.py @@ -251,18 +251,6 @@ class _(BaseModel): calls.clear() -def test_annotated_alias_at_low_level() -> None: - with pytest.warns( - UserWarning, - match=r'`alias` specification on field "low_level_alias_field" must be set on outermost annotation to take effect.', - ): - - class Model(BaseModel): - low_level_alias_field: Optional[Annotated[int, Field(alias='field_alias')]] = None - - assert Model(field_alias=1).low_level_alias_field is None - - def test_get_pydantic_core_schema_source_type() -> None: types: set[Any] = set() diff --git a/tests/test_fields.py b/tests/test_fields.py index af74acf336f..71d9dbb7575 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -1,8 +1,9 @@ -from typing import Annotated, Final, Union +from typing import Annotated, Any, Final, Union import pytest from annotated_types import Gt from pydantic_core import PydanticUndefined +from typing_extensions import TypeAliasType import pydantic.dataclasses from pydantic import ( @@ -15,9 +16,10 @@ ValidationError, computed_field, create_model, - fields, + validate_call, ) from pydantic.fields import FieldInfo +from pydantic.warnings import UnsupportedFieldAttributeWarning def test_field_info_annotation_keyword_argument(): @@ -28,7 +30,7 @@ def test_field_info_annotation_keyword_argument(): third-party tools. """ with pytest.raises(TypeError) as e: - fields.FieldInfo.from_field(annotation=()) + FieldInfo.from_field(annotation=()) assert e.value.args == ('"annotation" is not permitted as a Field keyword argument',) @@ -275,3 +277,64 @@ class Body(FieldInfo): assert isinstance(model_field, Body) assert not model_field.is_required() + + +_unsupported_standalone_fieldinfo_attributes = ( + ('alias', 'alias'), + ('validation_alias', 'alias'), + ('serialization_alias', 'alias'), + ('default', 1), + ('default_factory', lambda: 1), + ('exclude', True), + ('deprecated', True), + ('repr', False), + ('validate_default', True), + ('frozen', True), + ('init', True), + ('init_var', True), + ('kw_only', True), +) + + +@pytest.mark.parametrize( + ['attribute', 'value'], + _unsupported_standalone_fieldinfo_attributes, +) +def test_unsupported_field_attribute_type_alias(attribute: str, value: Any) -> None: + TestType = TypeAliasType('TestType', Annotated[int, Field(**{attribute: value})]) + + with pytest.warns(UnsupportedFieldAttributeWarning): + + class Model(BaseModel): + f: TestType + + +@pytest.mark.parametrize( + ['attribute', 'value'], + _unsupported_standalone_fieldinfo_attributes, +) +def test_unsupported_field_attribute_nested(attribute: str, value: Any) -> None: + TestType = TypeAliasType('TestType', Annotated[int, Field(**{attribute: value})]) + + with pytest.warns(UnsupportedFieldAttributeWarning): + + class Model(BaseModel): + f: list[TestType] + + +@pytest.mark.parametrize( + ['attribute', 'value'], + [ + (attr, value) + for attr, value in _unsupported_standalone_fieldinfo_attributes + if attr not in ('default', 'default_factory') + ], +) +def test_unsupported_field_attribute_nested_with_function(attribute: str, value: Any) -> None: + TestType = TypeAliasType('TestType', Annotated[int, Field(**{attribute: value})]) + + with pytest.warns(UnsupportedFieldAttributeWarning): + + @validate_call + def func(a: list[TestType]) -> None: + return None From a59dab907cdc63ae78d8634a2c11a453a826f41f Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Mon, 21 Jul 2025 15:14:28 +0200 Subject: [PATCH 089/106] Refactor logic to support Pydantic's `Field()` function in dataclasses (#12051) Instead of writing directly to `__annotations__` (which isn't safe anymore since 3.14), we temporarily monkeypatch base stdlib dataclasses to expose a modified version of its fields. This isn't an ideal approach, but is the only one we can use (considering it also fixes inconsistencies introduced by the old logic). --- pydantic/_internal/_dataclasses.py | 113 ++++++++++++++++++++++++++++- pydantic/dataclasses.py | 79 +++++++------------- tests/test_dataclasses.py | 43 +++++++++++ tests/test_deferred_annotations.py | 7 +- 4 files changed, 185 insertions(+), 57 deletions(-) diff --git a/pydantic/_internal/_dataclasses.py b/pydantic/_internal/_dataclasses.py index b96870dfb62..d369e4f0a97 100644 --- a/pydantic/_internal/_dataclasses.py +++ b/pydantic/_internal/_dataclasses.py @@ -2,10 +2,15 @@ from __future__ import annotations as _annotations +import copy +import dataclasses +import sys import typing import warnings +from collections.abc import Generator +from contextlib import contextmanager from functools import partial -from typing import Any, ClassVar +from typing import Any, ClassVar, cast from pydantic_core import ( ArgsKwargs, @@ -13,9 +18,10 @@ SchemaValidator, core_schema, ) -from typing_extensions import TypeIs +from typing_extensions import TypeAlias, TypeIs from ..errors import PydanticUndefinedAnnotation +from ..fields import FieldInfo from ..plugin._schema_validator import PluggableSchemaValidator, create_schema_validator from ..warnings import PydanticDeprecatedSince20 from . import _config, _decorators @@ -31,7 +37,6 @@ from _typeshed import DataclassInstance as StandardDataclass from ..config import ConfigDict - from ..fields import FieldInfo class PydanticDataclass(StandardDataclass, typing.Protocol): """A protocol containing attributes only available once a class has been decorated as a Pydantic dataclass. @@ -203,3 +208,105 @@ def is_stdlib_dataclass(cls: type[Any], /) -> TypeIs[type[StandardDataclass]]: `True` if the class is a stdlib dataclass, `False` otherwise. """ return '__dataclass_fields__' in cls.__dict__ and not hasattr(cls, '__pydantic_validator__') + + +def as_dataclass_field(pydantic_field: FieldInfo) -> dataclasses.Field[Any]: + field_args: dict[str, Any] = {'default': pydantic_field} + + if sys.version_info >= (3, 10) and pydantic_field.kw_only: + field_args['kw_only'] = True + + if pydantic_field.repr is not True: + field_args['repr'] = pydantic_field.repr + + return dataclasses.field(**field_args) + + +DcFields: TypeAlias = dict[str, dataclasses.Field[Any]] + + +@contextmanager +def patch_base_fields(cls: type[Any]) -> Generator[None]: + """Temporarily patch the stdlib dataclasses bases of `cls` if the Pydantic `Field()` function is used. + + When creating a Pydantic dataclass, it is possible to inherit from stdlib dataclasses, where + the Pydantic `Field()` function is used. To create this Pydantic dataclass, we first apply + the stdlib `@dataclass` decorator on it. During the construction of the stdlib dataclass, + the `kw_only` and `repr` field arguments need to be understood by the stdlib *during* the + dataclass construction. To do so, we temporarily patch the fields dictionary of the affected + bases. + + For instance, with the following example: + + ```python {test="skip" lint="skip"} + import dataclasses as stdlib_dc + + import pydantic + import pydantic.dataclasses as pydantic_dc + + @stdlib_dc.dataclass + class A: + a: int = pydantic.Field(repr=False) + + # Notice that the `repr` attribute of the dataclass field is `True`: + A.__dataclass_fields__['a'] + #> dataclass.Field(default=FieldInfo(repr=False), repr=True, ...) + + @pydantic_dc.dataclass + class B(A): + b: int = pydantic.Field(repr=False) + ``` + + When passing `B` to the stdlib `@dataclass` decorator, it will look for fields in the parent classes + and reuse them directly. When this context manager is active, `A` will be temporarily patched to be + equivalent to: + + ```python {test="skip" lint="skip"} + @stdlib_dc.dataclass + class A: + a: int = stdlib_dc.field(default=Field(repr=False), repr=False) + ``` + + !!! note + This is only applied to the bases of `cls`, and not `cls` itself. The reason is that the Pydantic + dataclass decorator "owns" `cls` (in the previous example, `B`). As such, we instead modify the fields + directly (in the previous example, we simply do `setattr(B, 'b', as_dataclass_field(pydantic_field))`). + + !!! note + This approach is far from ideal, and can probably be the source of unwanted side effects/race conditions. + The previous implemented approach was mutating the `__annotations__` dict of `cls`, which is no longer a + safe operation in Python 3.14+, and resulted in unexpected behavior with field ordering anyway. + """ + # A list of two-tuples, the first element being a reference to the + # dataclass fields dictionary, the second element being a mapping between + # the field names that were modified, and their original `Field`: + original_fields_list: list[tuple[DcFields, DcFields]] = [] + + for base in cls.__mro__[1:]: + dc_fields: dict[str, dataclasses.Field[Any]] = base.__dict__.get('__dataclass_fields__', {}) + dc_fields_with_pydantic_field_defaults = { + field_name: field + for field_name, field in dc_fields.items() + if isinstance(field.default, FieldInfo) + # Only do the patching if one of the affected attributes is set: + and (field.default.kw_only or field.default.repr is not True) + } + if dc_fields_with_pydantic_field_defaults: + original_fields_list.append((dc_fields, dc_fields_with_pydantic_field_defaults)) + for field_name, field in dc_fields_with_pydantic_field_defaults.items(): + default = cast(FieldInfo, field.default) + # `dataclasses.Field` isn't documented as working with `copy.copy()`. + # It is a class with `__slots__`, so should work (and we hope for the best): + new_dc_field = copy.copy(field) + if default.kw_only: + new_dc_field.kw_only = True + if default.repr is not True: + new_dc_field.repr = default.repr + dc_fields[field_name] = new_dc_field + + try: + yield + finally: + for fields, original_fields in original_fields_list: + for field_name, original_field in original_fields.items(): + fields[field_name] = original_field diff --git a/pydantic/dataclasses.py b/pydantic/dataclasses.py index 5995b01694a..e4b42c0275e 100644 --- a/pydantic/dataclasses.py +++ b/pydantic/dataclasses.py @@ -150,44 +150,6 @@ def dataclass( else: kwargs = {} - def make_pydantic_fields_compatible(cls: type[Any]) -> None: - """Make sure that stdlib `dataclasses` understands `Field` kwargs like `kw_only` - To do that, we simply change - `x: int = pydantic.Field(..., kw_only=True)` - into - `x: int = dataclasses.field(default=pydantic.Field(..., kw_only=True), kw_only=True)` - """ - for annotation_cls in cls.__mro__: - if sys.version_info >= (3, 14): - from annotationlib import Format, get_annotations - - annotations = get_annotations(annotation_cls, format=Format.FORWARDREF) - else: - annotations: dict[str, Any] = getattr(annotation_cls, '__annotations__', {}) - for field_name in annotations: - field_value = getattr(cls, field_name, None) - # Process only if this is an instance of `FieldInfo`. - if not isinstance(field_value, FieldInfo): - continue - - # Initialize arguments for the standard `dataclasses.field`. - field_args: dict = {'default': field_value} - - # Handle `kw_only` for Python 3.10+ - if sys.version_info >= (3, 10) and field_value.kw_only: - field_args['kw_only'] = True - - # Set `repr` attribute if it's explicitly specified to be not `True`. - if field_value.repr is not True: - field_args['repr'] = field_value.repr - - setattr(cls, field_name, dataclasses.field(**field_args)) - if sys.version_info < (3, 10) and cls.__dict__.get('__annotations__') is None: - # In Python 3.9, when a class doesn't have any annotations, accessing `__annotations__` - # raises an `AttributeError`. - cls.__annotations__ = {} - cls.__annotations__[field_name] = annotations[field_name] - def create_dataclass(cls: type[Any]) -> type[PydanticDataclass]: """Create a Pydantic dataclass from a regular dataclass. @@ -243,8 +205,6 @@ def create_dataclass(cls: type[Any]) -> type[PydanticDataclass]: bases = bases + (generic_base,) cls = types.new_class(cls.__name__, bases) - make_pydantic_fields_compatible(cls) - # Respect frozen setting from dataclass constructor and fallback to config setting if not provided if frozen is not None: frozen_ = frozen @@ -259,17 +219,34 @@ def create_dataclass(cls: type[Any]) -> type[PydanticDataclass]: else: frozen_ = config_wrapper.frozen or False - cls = dataclasses.dataclass( # type: ignore[call-overload] - cls, - # the value of init here doesn't affect anything except that it makes it easier to generate a signature - init=True, - repr=repr, - eq=eq, - order=order, - unsafe_hash=unsafe_hash, - frozen=frozen_, - **kwargs, - ) + # Make Pydantic's `Field()` function compatible with stdlib dataclasses. As we'll decorate + # `cls` with the stdlib `@dataclass` decorator first, there are two attributes, `kw_only` and + # `repr` that need to be understood *during* the stdlib creation. We do so in two steps: + + # 1. On the decorated class, wrap `Field()` assignment with `dataclass.field()`, with the + # two attributes set (done in `as_dataclass_field()`) + cls_anns = _typing_extra.safe_get_annotations(cls) + for field_name in cls_anns: + # We should look for assignments in `__dict__` instead, but for now we follow + # the same behavior as stdlib dataclasses (see https://github.com/python/cpython/issues/88609) + field_value = getattr(cls, field_name, None) + if isinstance(field_value, FieldInfo): + setattr(cls, field_name, _pydantic_dataclasses.as_dataclass_field(field_value)) + + # 2. For bases of `cls` that are stdlib dataclasses, we temporarily patch their fields + # (see the docstring of the context manager): + with _pydantic_dataclasses.patch_base_fields(cls): + cls = dataclasses.dataclass( # pyright: ignore[reportCallIssue] + cls, + # the value of init here doesn't affect anything except that it makes it easier to generate a signature + init=True, + repr=repr, + eq=eq, + order=order, + unsafe_hash=unsafe_hash, + frozen=frozen_, + **kwargs, + ) if config_wrapper.validate_assignment: diff --git a/tests/test_dataclasses.py b/tests/test_dataclasses.py index 530920af010..3946e6235b1 100644 --- a/tests/test_dataclasses.py +++ b/tests/test_dataclasses.py @@ -1841,6 +1841,18 @@ class Child(Parent): assert child.y == 1 +def test_repr_inheritance() -> None: + @dataclasses.dataclass + class A: + a: int = Field(repr=False) + + @pydantic.dataclasses.dataclass + class B(A): + pass + + assert repr(B(a=1)).endswith('B()') + + def test_extra_forbid_list_no_error(): @pydantic.dataclasses.dataclass(config=dict(extra='forbid')) class Bar: ... @@ -2115,6 +2127,37 @@ class Child(Parent): assert Child().a == 1 +def test_dataclasses_inheritance_bare_class_not_used() -> None: + """https://github.com/pydantic/pydantic/issues/12045""" + + class BareClass: + a: int = Field(kw_only=True) + + @pydantic.dataclasses.dataclass + class DC(BareClass): + pass + + assert len(DC.__dataclass_fields__) == 0 + assert len(DC.__pydantic_fields__) == 0 + + +def test_dataclasses_type_override_pydantic_field() -> None: + """https://github.com/pydantic/pydantic/issues/12045. + + `B.a` used to be typed as `str`, only if `pydantic.Field()` was being used on `A.a`. + """ + + @dataclasses.dataclass + class A: + a: int = Field() + + @pydantic.dataclasses.dataclass + class B(A): + a: str = dataclasses.field() + + assert B(a='test').a == 'test' + + def test_dataclass_config_validate_default(): @pydantic.dataclasses.dataclass class Model: diff --git a/tests/test_deferred_annotations.py b/tests/test_deferred_annotations.py index 58bbc6e96d5..1b2ae48e5d4 100644 --- a/tests/test_deferred_annotations.py +++ b/tests/test_deferred_annotations.py @@ -68,10 +68,11 @@ class A: assert A(a='1').a == 1 -@pytest.mark.xfail( - reason="To support Pydantic's `Field()` function in dataclasses, we directly write to `__annotations__`" -) def test_deferred_annotations_pydantic_dataclass_pydantic_field() -> None: + """When initial support for Python 3.14 was added, this failed as support for the Pydantic + `Field()` function was implemented by writing directly to `__annotations__`. + """ + @dataclass class A: a: Int = Field(default=1) From 702aaa6354cc30ae815676c57a8bbb4557ccb295 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 22 Jul 2025 16:58:05 +0200 Subject: [PATCH 090/106] Update mypy to 1.17.0 (#12076) --- .../mypy-default_ini/plugin_success.py | 2 +- .../plugin_success_baseConfig.py | 2 +- tests/typechecking/decorators.py | 4 +- tests/typechecking/fields.py | 3 +- uv.lock | 69 ++++++++++--------- 5 files changed, 39 insertions(+), 41 deletions(-) diff --git a/tests/mypy/outputs/mypy-default_ini/plugin_success.py b/tests/mypy/outputs/mypy-default_ini/plugin_success.py index 5a9d54c2d1c..b4db3ff4dc4 100644 --- a/tests/mypy/outputs/mypy-default_ini/plugin_success.py +++ b/tests/mypy/outputs/mypy-default_ini/plugin_success.py @@ -86,7 +86,7 @@ class KwargsNoMutationModel(BaseModel, frozen=True): class KwargsMutationModel(KwargsNoMutationModel, frozen=False, from_attributes=True): -# MYPY: error: Cannot inherit non-frozen dataclass from a frozen one [misc] +# MYPY: error: Non-frozen dataclass cannot inherit from a frozen dataclass [misc] a: int = 1 diff --git a/tests/mypy/outputs/mypy-default_ini/plugin_success_baseConfig.py b/tests/mypy/outputs/mypy-default_ini/plugin_success_baseConfig.py index 3f574f81683..29fd3e33f90 100644 --- a/tests/mypy/outputs/mypy-default_ini/plugin_success_baseConfig.py +++ b/tests/mypy/outputs/mypy-default_ini/plugin_success_baseConfig.py @@ -89,7 +89,7 @@ class KwargsNoMutationModel(BaseModel, frozen=True): class KwargsMutationModel(KwargsNoMutationModel, frozen=False, from_attributes=True): -# MYPY: error: Cannot inherit non-frozen dataclass from a frozen one [misc] +# MYPY: error: Non-frozen dataclass cannot inherit from a frozen dataclass [misc] a: int = 1 diff --git a/tests/typechecking/decorators.py b/tests/typechecking/decorators.py index 6f8677acafc..95f4f9752f2 100644 --- a/tests/typechecking/decorators.py +++ b/tests/typechecking/decorators.py @@ -57,9 +57,7 @@ def valid_staticmethod(value: Any) -> Any: ... class WrapModelValidator(BaseModel): - # mypy randomly does not catch the type error here (https://github.com/python/mypy/issues/18125) - # so we also ignore the `unused-ignore` code: - @model_validator(mode='wrap') # type: ignore[arg-type, unused-ignore] # pyright: ignore[reportArgumentType] + @model_validator(mode='wrap') # type: ignore[arg-type] # pyright: ignore[reportArgumentType] def no_classmethod(cls, value: Any, handler: ModelWrapValidatorHandler[Self]) -> Self: ... @model_validator(mode='wrap') # type: ignore[arg-type] # pyright: ignore[reportArgumentType] diff --git a/tests/typechecking/fields.py b/tests/typechecking/fields.py index aeab74553eb..de2e12c0b52 100644 --- a/tests/typechecking/fields.py +++ b/tests/typechecking/fields.py @@ -32,9 +32,8 @@ class Model(BaseModel): f10: int = Field(default_factory=lambda: 123) # Note: mypy may require a different error code for `f12` (see https://github.com/python/mypy/issues/17986). - # Seems like this is not the case anymore. But could pop up at any time. f11: list[str] = Field(default_factory=new_list) # type: ignore[arg-type] # pyright: ignore[reportAssignmentType] - f12: int = Field(default_factory=list) # type: ignore[arg-type] # pyright: ignore[reportAssignmentType] + f12: int = Field(default_factory=list) # type: ignore[arg-type, assignment, unused-ignore] # pyright: ignore[reportAssignmentType] # Do not error on the ellipsis: f13: int = Field(...) diff --git a/uv.lock b/uv.lock index 59d861677fa..17492226012 100644 --- a/uv.lock +++ b/uv.lock @@ -1388,46 +1388,47 @@ wheels = [ [[package]] name = "mypy" -version = "1.15.0" +version = "1.17.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mypy-extensions" }, + { name = "pathspec" }, { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717, upload-time = "2025-02-05T03:50:34.655Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/f8/65a7ce8d0e09b6329ad0c8d40330d100ea343bd4dd04c4f8ae26462d0a17/mypy-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:979e4e1a006511dacf628e36fadfecbcc0160a8af6ca7dad2f5025529e082c13", size = 10738433, upload-time = "2025-02-05T03:49:29.145Z" }, - { url = "https://files.pythonhosted.org/packages/b4/95/9c0ecb8eacfe048583706249439ff52105b3f552ea9c4024166c03224270/mypy-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4bb0e1bd29f7d34efcccd71cf733580191e9a264a2202b0239da95984c5b559", size = 9861472, upload-time = "2025-02-05T03:49:16.986Z" }, - { url = "https://files.pythonhosted.org/packages/84/09/9ec95e982e282e20c0d5407bc65031dfd0f0f8ecc66b69538296e06fcbee/mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b", size = 11611424, upload-time = "2025-02-05T03:49:46.908Z" }, - { url = "https://files.pythonhosted.org/packages/78/13/f7d14e55865036a1e6a0a69580c240f43bc1f37407fe9235c0d4ef25ffb0/mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3", size = 12365450, upload-time = "2025-02-05T03:50:05.89Z" }, - { url = "https://files.pythonhosted.org/packages/48/e1/301a73852d40c241e915ac6d7bcd7fedd47d519246db2d7b86b9d7e7a0cb/mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b", size = 12551765, upload-time = "2025-02-05T03:49:33.56Z" }, - { url = "https://files.pythonhosted.org/packages/77/ba/c37bc323ae5fe7f3f15a28e06ab012cd0b7552886118943e90b15af31195/mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828", size = 9274701, upload-time = "2025-02-05T03:49:38.981Z" }, - { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338, upload-time = "2025-02-05T03:50:17.287Z" }, - { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540, upload-time = "2025-02-05T03:49:51.21Z" }, - { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051, upload-time = "2025-02-05T03:50:20.885Z" }, - { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751, upload-time = "2025-02-05T03:49:42.408Z" }, - { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783, upload-time = "2025-02-05T03:49:07.707Z" }, - { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618, upload-time = "2025-02-05T03:49:54.581Z" }, - { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981, upload-time = "2025-02-05T03:50:28.25Z" }, - { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175, upload-time = "2025-02-05T03:50:13.411Z" }, - { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675, upload-time = "2025-02-05T03:50:31.421Z" }, - { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020, upload-time = "2025-02-05T03:48:48.705Z" }, - { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582, upload-time = "2025-02-05T03:49:03.628Z" }, - { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614, upload-time = "2025-02-05T03:50:00.313Z" }, - { url = "https://files.pythonhosted.org/packages/6a/9b/fd2e05d6ffff24d912f150b87db9e364fa8282045c875654ce7e32fffa66/mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445", size = 10788592, upload-time = "2025-02-05T03:48:55.789Z" }, - { url = "https://files.pythonhosted.org/packages/74/37/b246d711c28a03ead1fd906bbc7106659aed7c089d55fe40dd58db812628/mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d", size = 9753611, upload-time = "2025-02-05T03:48:44.581Z" }, - { url = "https://files.pythonhosted.org/packages/a6/ac/395808a92e10cfdac8003c3de9a2ab6dc7cde6c0d2a4df3df1b815ffd067/mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5", size = 11438443, upload-time = "2025-02-05T03:49:25.514Z" }, - { url = "https://files.pythonhosted.org/packages/d2/8b/801aa06445d2de3895f59e476f38f3f8d610ef5d6908245f07d002676cbf/mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036", size = 12402541, upload-time = "2025-02-05T03:49:57.623Z" }, - { url = "https://files.pythonhosted.org/packages/c7/67/5a4268782eb77344cc613a4cf23540928e41f018a9a1ec4c6882baf20ab8/mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357", size = 12494348, upload-time = "2025-02-05T03:48:52.361Z" }, - { url = "https://files.pythonhosted.org/packages/83/3e/57bb447f7bbbfaabf1712d96f9df142624a386d98fb026a761532526057e/mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf", size = 9373648, upload-time = "2025-02-05T03:49:11.395Z" }, - { url = "https://files.pythonhosted.org/packages/5a/fa/79cf41a55b682794abe71372151dbbf856e3008f6767057229e6649d294a/mypy-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e601a7fa172c2131bff456bb3ee08a88360760d0d2f8cbd7a75a65497e2df078", size = 10737129, upload-time = "2025-02-05T03:50:24.509Z" }, - { url = "https://files.pythonhosted.org/packages/d3/33/dd8feb2597d648de29e3da0a8bf4e1afbda472964d2a4a0052203a6f3594/mypy-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:712e962a6357634fef20412699a3655c610110e01cdaa6180acec7fc9f8513ba", size = 9856335, upload-time = "2025-02-05T03:49:36.398Z" }, - { url = "https://files.pythonhosted.org/packages/e4/b5/74508959c1b06b96674b364ffeb7ae5802646b32929b7701fc6b18447592/mypy-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95579473af29ab73a10bada2f9722856792a36ec5af5399b653aa28360290a5", size = 11611935, upload-time = "2025-02-05T03:49:14.154Z" }, - { url = "https://files.pythonhosted.org/packages/6c/53/da61b9d9973efcd6507183fdad96606996191657fe79701b2c818714d573/mypy-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f8722560a14cde92fdb1e31597760dc35f9f5524cce17836c0d22841830fd5b", size = 12365827, upload-time = "2025-02-05T03:48:59.458Z" }, - { url = "https://files.pythonhosted.org/packages/c1/72/965bd9ee89540c79a25778cc080c7e6ef40aa1eeac4d52cec7eae6eb5228/mypy-1.15.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fbb8da62dc352133d7d7ca90ed2fb0e9d42bb1a32724c287d3c76c58cbaa9c2", size = 12541924, upload-time = "2025-02-05T03:50:03.12Z" }, - { url = "https://files.pythonhosted.org/packages/46/d0/f41645c2eb263e6c77ada7d76f894c580c9ddb20d77f0c24d34273a4dab2/mypy-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:d10d994b41fb3497719bbf866f227b3489048ea4bbbb5015357db306249f7980", size = 9271176, upload-time = "2025-02-05T03:50:10.86Z" }, - { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777, upload-time = "2025-02-05T03:50:08.348Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/1e/e3/034322d5a779685218ed69286c32faa505247f1f096251ef66c8fd203b08/mypy-1.17.0.tar.gz", hash = "sha256:e5d7ccc08ba089c06e2f5629c660388ef1fee708444f1dee0b9203fa031dee03", size = 3352114, upload-time = "2025-07-14T20:34:30.181Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/31/e762baa3b73905c856d45ab77b4af850e8159dffffd86a52879539a08c6b/mypy-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8e08de6138043108b3b18f09d3f817a4783912e48828ab397ecf183135d84d6", size = 10998313, upload-time = "2025-07-14T20:33:24.519Z" }, + { url = "https://files.pythonhosted.org/packages/1c/c1/25b2f0d46fb7e0b5e2bee61ec3a47fe13eff9e3c2f2234f144858bbe6485/mypy-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce4a17920ec144647d448fc43725b5873548b1aae6c603225626747ededf582d", size = 10128922, upload-time = "2025-07-14T20:34:06.414Z" }, + { url = "https://files.pythonhosted.org/packages/02/78/6d646603a57aa8a2886df1b8881fe777ea60f28098790c1089230cd9c61d/mypy-1.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ff25d151cc057fdddb1cb1881ef36e9c41fa2a5e78d8dd71bee6e4dcd2bc05b", size = 11913524, upload-time = "2025-07-14T20:33:19.109Z" }, + { url = "https://files.pythonhosted.org/packages/4f/19/dae6c55e87ee426fb76980f7e78484450cad1c01c55a1dc4e91c930bea01/mypy-1.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93468cf29aa9a132bceb103bd8475f78cacde2b1b9a94fd978d50d4bdf616c9a", size = 12650527, upload-time = "2025-07-14T20:32:44.095Z" }, + { url = "https://files.pythonhosted.org/packages/86/e1/f916845a235235a6c1e4d4d065a3930113767001d491b8b2e1b61ca56647/mypy-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:98189382b310f16343151f65dd7e6867386d3e35f7878c45cfa11383d175d91f", size = 12897284, upload-time = "2025-07-14T20:33:38.168Z" }, + { url = "https://files.pythonhosted.org/packages/ae/dc/414760708a4ea1b096bd214d26a24e30ac5e917ef293bc33cdb6fe22d2da/mypy-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:c004135a300ab06a045c1c0d8e3f10215e71d7b4f5bb9a42ab80236364429937", size = 9506493, upload-time = "2025-07-14T20:34:01.093Z" }, + { url = "https://files.pythonhosted.org/packages/d4/24/82efb502b0b0f661c49aa21cfe3e1999ddf64bf5500fc03b5a1536a39d39/mypy-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9d4fe5c72fd262d9c2c91c1117d16aac555e05f5beb2bae6a755274c6eec42be", size = 10914150, upload-time = "2025-07-14T20:31:51.985Z" }, + { url = "https://files.pythonhosted.org/packages/03/96/8ef9a6ff8cedadff4400e2254689ca1dc4b420b92c55255b44573de10c54/mypy-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96b196e5c16f41b4f7736840e8455958e832871990c7ba26bf58175e357ed61", size = 10039845, upload-time = "2025-07-14T20:32:30.527Z" }, + { url = "https://files.pythonhosted.org/packages/df/32/7ce359a56be779d38021d07941cfbb099b41411d72d827230a36203dbb81/mypy-1.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:73a0ff2dd10337ceb521c080d4147755ee302dcde6e1a913babd59473904615f", size = 11837246, upload-time = "2025-07-14T20:32:01.28Z" }, + { url = "https://files.pythonhosted.org/packages/82/16/b775047054de4d8dbd668df9137707e54b07fe18c7923839cd1e524bf756/mypy-1.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24cfcc1179c4447854e9e406d3af0f77736d631ec87d31c6281ecd5025df625d", size = 12571106, upload-time = "2025-07-14T20:34:26.942Z" }, + { url = "https://files.pythonhosted.org/packages/a1/cf/fa33eaf29a606102c8d9ffa45a386a04c2203d9ad18bf4eef3e20c43ebc8/mypy-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:3c56f180ff6430e6373db7a1d569317675b0a451caf5fef6ce4ab365f5f2f6c3", size = 12759960, upload-time = "2025-07-14T20:33:42.882Z" }, + { url = "https://files.pythonhosted.org/packages/94/75/3f5a29209f27e739ca57e6350bc6b783a38c7621bdf9cac3ab8a08665801/mypy-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:eafaf8b9252734400f9b77df98b4eee3d2eecab16104680d51341c75702cad70", size = 9503888, upload-time = "2025-07-14T20:32:34.392Z" }, + { url = "https://files.pythonhosted.org/packages/12/e9/e6824ed620bbf51d3bf4d6cbbe4953e83eaf31a448d1b3cfb3620ccb641c/mypy-1.17.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f986f1cab8dbec39ba6e0eaa42d4d3ac6686516a5d3dccd64be095db05ebc6bb", size = 11086395, upload-time = "2025-07-14T20:34:11.452Z" }, + { url = "https://files.pythonhosted.org/packages/ba/51/a4afd1ae279707953be175d303f04a5a7bd7e28dc62463ad29c1c857927e/mypy-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:51e455a54d199dd6e931cd7ea987d061c2afbaf0960f7f66deef47c90d1b304d", size = 10120052, upload-time = "2025-07-14T20:33:09.897Z" }, + { url = "https://files.pythonhosted.org/packages/8a/71/19adfeac926ba8205f1d1466d0d360d07b46486bf64360c54cb5a2bd86a8/mypy-1.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3204d773bab5ff4ebbd1f8efa11b498027cd57017c003ae970f310e5b96be8d8", size = 11861806, upload-time = "2025-07-14T20:32:16.028Z" }, + { url = "https://files.pythonhosted.org/packages/0b/64/d6120eca3835baf7179e6797a0b61d6c47e0bc2324b1f6819d8428d5b9ba/mypy-1.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1051df7ec0886fa246a530ae917c473491e9a0ba6938cfd0ec2abc1076495c3e", size = 12744371, upload-time = "2025-07-14T20:33:33.503Z" }, + { url = "https://files.pythonhosted.org/packages/1f/dc/56f53b5255a166f5bd0f137eed960e5065f2744509dfe69474ff0ba772a5/mypy-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f773c6d14dcc108a5b141b4456b0871df638eb411a89cd1c0c001fc4a9d08fc8", size = 12914558, upload-time = "2025-07-14T20:33:56.961Z" }, + { url = "https://files.pythonhosted.org/packages/69/ac/070bad311171badc9add2910e7f89271695a25c136de24bbafc7eded56d5/mypy-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:1619a485fd0e9c959b943c7b519ed26b712de3002d7de43154a489a2d0fd817d", size = 9585447, upload-time = "2025-07-14T20:32:20.594Z" }, + { url = "https://files.pythonhosted.org/packages/be/7b/5f8ab461369b9e62157072156935cec9d272196556bdc7c2ff5f4c7c0f9b/mypy-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c41aa59211e49d717d92b3bb1238c06d387c9325d3122085113c79118bebb06", size = 11070019, upload-time = "2025-07-14T20:32:07.99Z" }, + { url = "https://files.pythonhosted.org/packages/9c/f8/c49c9e5a2ac0badcc54beb24e774d2499748302c9568f7f09e8730e953fa/mypy-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e69db1fb65b3114f98c753e3930a00514f5b68794ba80590eb02090d54a5d4a", size = 10114457, upload-time = "2025-07-14T20:33:47.285Z" }, + { url = "https://files.pythonhosted.org/packages/89/0c/fb3f9c939ad9beed3e328008b3fb90b20fda2cddc0f7e4c20dbefefc3b33/mypy-1.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:03ba330b76710f83d6ac500053f7727270b6b8553b0423348ffb3af6f2f7b889", size = 11857838, upload-time = "2025-07-14T20:33:14.462Z" }, + { url = "https://files.pythonhosted.org/packages/4c/66/85607ab5137d65e4f54d9797b77d5a038ef34f714929cf8ad30b03f628df/mypy-1.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:037bc0f0b124ce46bfde955c647f3e395c6174476a968c0f22c95a8d2f589bba", size = 12731358, upload-time = "2025-07-14T20:32:25.579Z" }, + { url = "https://files.pythonhosted.org/packages/73/d0/341dbbfb35ce53d01f8f2969facbb66486cee9804048bf6c01b048127501/mypy-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c38876106cb6132259683632b287238858bd58de267d80defb6f418e9ee50658", size = 12917480, upload-time = "2025-07-14T20:34:21.868Z" }, + { url = "https://files.pythonhosted.org/packages/64/63/70c8b7dbfc520089ac48d01367a97e8acd734f65bd07813081f508a8c94c/mypy-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:d30ba01c0f151998f367506fab31c2ac4527e6a7b2690107c7a7f9e3cb419a9c", size = 9589666, upload-time = "2025-07-14T20:34:16.841Z" }, + { url = "https://files.pythonhosted.org/packages/9f/a0/6263dd11941231f688f0a8f2faf90ceac1dc243d148d314a089d2fe25108/mypy-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:63e751f1b5ab51d6f3d219fe3a2fe4523eaa387d854ad06906c63883fde5b1ab", size = 10988185, upload-time = "2025-07-14T20:33:04.797Z" }, + { url = "https://files.pythonhosted.org/packages/02/13/b8f16d6b0dc80277129559c8e7dbc9011241a0da8f60d031edb0e6e9ac8f/mypy-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fb09d05e0f1c329a36dcd30e27564a3555717cde87301fae4fb542402ddfad", size = 10120169, upload-time = "2025-07-14T20:32:38.84Z" }, + { url = "https://files.pythonhosted.org/packages/14/ef/978ba79df0d65af680e20d43121363cf643eb79b04bf3880d01fc8afeb6f/mypy-1.17.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b72c34ce05ac3a1361ae2ebb50757fb6e3624032d91488d93544e9f82db0ed6c", size = 11918121, upload-time = "2025-07-14T20:33:52.328Z" }, + { url = "https://files.pythonhosted.org/packages/f4/10/55ef70b104151a0d8280474f05268ff0a2a79be8d788d5e647257d121309/mypy-1.17.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:434ad499ad8dde8b2f6391ddfa982f41cb07ccda8e3c67781b1bfd4e5f9450a8", size = 12648821, upload-time = "2025-07-14T20:32:59.631Z" }, + { url = "https://files.pythonhosted.org/packages/26/8c/7781fcd2e1eef48fbedd3a422c21fe300a8e03ed5be2eb4bd10246a77f4e/mypy-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f105f61a5eff52e137fd73bee32958b2add9d9f0a856f17314018646af838e97", size = 12896955, upload-time = "2025-07-14T20:32:49.543Z" }, + { url = "https://files.pythonhosted.org/packages/78/13/03ac759dabe86e98ca7b6681f114f90ee03f3ff8365a57049d311bd4a4e3/mypy-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:ba06254a5a22729853209550d80f94e28690d5530c661f9416a68ac097b13fc4", size = 9512957, upload-time = "2025-07-14T20:33:28.619Z" }, + { url = "https://files.pythonhosted.org/packages/e3/fc/ee058cc4316f219078464555873e99d170bde1d9569abd833300dbeb484a/mypy-1.17.0-py3-none-any.whl", hash = "sha256:15d9d0018237ab058e5de3d8fce61b6fa72cc59cc78fd91f1b474bce12abf496", size = 2283195, upload-time = "2025-07-14T20:31:54.753Z" }, ] [[package]] From b0175de473823f6f6927b9ecdc8998059727a086 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 23 Jul 2025 12:49:38 +0200 Subject: [PATCH 091/106] Add support for `doc` attribute on dataclass fields (#12077) --- pydantic/_internal/_dataclasses.py | 12 ++++++++++-- pydantic/fields.py | 2 ++ tests/test_dataclasses.py | 23 +++++++++++++++++++++++ tests/test_docs_extraction.py | 27 +++++++++++++++++---------- tests/test_json_schema.py | 13 +++++++++++++ 5 files changed, 65 insertions(+), 12 deletions(-) diff --git a/pydantic/_internal/_dataclasses.py b/pydantic/_internal/_dataclasses.py index d369e4f0a97..d52ff4f61e2 100644 --- a/pydantic/_internal/_dataclasses.py +++ b/pydantic/_internal/_dataclasses.py @@ -213,9 +213,15 @@ def is_stdlib_dataclass(cls: type[Any], /) -> TypeIs[type[StandardDataclass]]: def as_dataclass_field(pydantic_field: FieldInfo) -> dataclasses.Field[Any]: field_args: dict[str, Any] = {'default': pydantic_field} + # Needed because if `doc` is set, the dataclass slots will be a dict (field name -> doc) instead of a tuple: + if sys.version_info >= (3, 14) and pydantic_field.description is not None: + field_args['doc'] = pydantic_field.description + + # Needed as the stdlib dataclass module processes kw_only in a specific way during class construction: if sys.version_info >= (3, 10) and pydantic_field.kw_only: field_args['kw_only'] = True + # Needed as the stdlib dataclass modules generates `__repr__()` during class construction: if pydantic_field.repr is not True: field_args['repr'] = pydantic_field.repr @@ -289,7 +295,7 @@ class A: for field_name, field in dc_fields.items() if isinstance(field.default, FieldInfo) # Only do the patching if one of the affected attributes is set: - and (field.default.kw_only or field.default.repr is not True) + and (field.default.description is not None or field.default.kw_only or field.default.repr is not True) } if dc_fields_with_pydantic_field_defaults: original_fields_list.append((dc_fields, dc_fields_with_pydantic_field_defaults)) @@ -298,7 +304,9 @@ class A: # `dataclasses.Field` isn't documented as working with `copy.copy()`. # It is a class with `__slots__`, so should work (and we hope for the best): new_dc_field = copy.copy(field) - if default.kw_only: + # For base fields, no need to set `doc` from `FieldInfo.description`, this is only relevant + # for the class under construction and handled in `as_dataclass_field()`. + if sys.version_info >= (3, 10) and default.kw_only: new_dc_field.kw_only = True if default.repr is not True: new_dc_field.repr = default.repr diff --git a/pydantic/fields.py b/pydantic/fields.py index 8ba4632d487..1e0b39dec83 100644 --- a/pydantic/fields.py +++ b/pydantic/fields.py @@ -613,6 +613,8 @@ def _from_dataclass_field(dc_field: DataclassField[Any]) -> FieldInfo: # use the `Field` function so in correct kwargs raise the correct `TypeError` dc_field_metadata = {k: v for k, v in dc_field.metadata.items() if k in _FIELD_ARG_NAMES} + if sys.version_info >= (3, 14) and dc_field.doc is not None: + dc_field_metadata['description'] = dc_field.doc return Field(default=default, default_factory=default_factory, repr=dc_field.repr, **dc_field_metadata) # pyright: ignore[reportCallIssue] @staticmethod diff --git a/tests/test_dataclasses.py b/tests/test_dataclasses.py index 3946e6235b1..1ea1612d40f 100644 --- a/tests/test_dataclasses.py +++ b/tests/test_dataclasses.py @@ -1841,6 +1841,20 @@ class Child(Parent): assert child.y == 1 +def test_kw_only_inheritance_on_field() -> None: + @dataclasses.dataclass + class A: + x: int = Field(kw_only=True) + + @pydantic.dataclasses.dataclass + class B(A): + pass + + if sys.version_info >= (3, 10): # On 3.9, we ignore kw_only. + with pytest.raises(ValidationError): + B(1) + + def test_repr_inheritance() -> None: @dataclasses.dataclass class A: @@ -1853,6 +1867,15 @@ class B(A): assert repr(B(a=1)).endswith('B()') +@pytest.mark.skipif(sys.version_info < (3, 14), reason='`doc` added in 3.14') +def test_description_as_doc_in_slots() -> None: + @pydantic.dataclasses.dataclass(slots=True) + class A: + a: int = Field(description='a doc') + + assert A.__slots__ == {'a': 'a doc'} + + def test_extra_forbid_list_no_error(): @pydantic.dataclasses.dataclass(config=dict(extra='forbid')) class Bar: ... diff --git a/tests/test_docs_extraction.py b/tests/test_docs_extraction.py index a17bf9b39a5..8fa82ef85c3 100644 --- a/tests/test_docs_extraction.py +++ b/tests/test_docs_extraction.py @@ -1,6 +1,6 @@ import sys import textwrap -from dataclasses import dataclass +from dataclasses import dataclass, field from typing import Annotated, Generic, TypeVar import pytest @@ -230,30 +230,37 @@ class MyModel: def dummy_method(self) -> None: """Docs for dummy_method that won't be used for d""" - e: int = Field(1, description='Real description') + e: int = Field(1, description='Real description e') """Won't be used""" - f: int = 1 - """F docs""" - - """Useless docs""" + if sys.version_info >= (3, 14): + f: int = field(default=1, doc='Real description f') + """Won't be used""" g: int = 1 """G docs""" - h = 1 + """Useless docs""" + + h: int = 1 """H docs""" - i: Annotated[int, Field(description='Real description')] = 1 + i = 1 + """I docs, not a field""" + + j: Annotated[int, Field(description='Real description j')] = 1 """Won't be used""" assert MyModel.__pydantic_fields__['a'].description == 'A docs' assert MyModel.__pydantic_fields__['b'].description == 'B docs' assert MyModel.__pydantic_fields__['c'].description is None assert MyModel.__pydantic_fields__['d'].description is None - assert MyModel.__pydantic_fields__['e'].description == 'Real description' + assert MyModel.__pydantic_fields__['e'].description == 'Real description e' + if sys.version_info >= (3, 14): + assert MyModel.__pydantic_fields__['f'].description == 'Real description f' assert MyModel.__pydantic_fields__['g'].description == 'G docs' - assert MyModel.__pydantic_fields__['i'].description == 'Real description' + assert MyModel.__pydantic_fields__['h'].description == 'H docs' + assert MyModel.__pydantic_fields__['j'].description == 'Real description j' # https://github.com/pydantic/pydantic/issues/11243: # Even though the `FieldInfo` instances had the correct description set, diff --git a/tests/test_json_schema.py b/tests/test_json_schema.py index 1993bb826df..129bb4b1559 100644 --- a/tests/test_json_schema.py +++ b/tests/test_json_schema.py @@ -2922,6 +2922,19 @@ class Model: } +@pytest.mark.skipif(sys.version_info < (3, 14), reason='`doc` added in 3.14') +@pytest.mark.parametrize( + 'dataclass_decorator', + [dataclass, pydantic.dataclasses.dataclass], +) +def test_dataclass_doc_json_schema(dataclass_decorator) -> None: + @dataclass_decorator + class A: + a: bool = dataclasses.field(doc='a doc') + + assert TypeAdapter(A).json_schema()['properties']['a'] == {'title': 'A', 'type': 'boolean', 'description': 'a doc'} + + def test_schema_attributes(): class ExampleEnum(Enum): """This is a test description.""" From ffc084053b1ed87927c4c10e6dc2d17f6a4f2cac Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 23 Jul 2025 22:45:37 +0200 Subject: [PATCH 092/106] Rewrite serialization documentation (#12018) --- docs/concepts/json.md | 2 +- docs/concepts/models.md | 43 +- docs/concepts/serialization.md | 1062 +++++++++++++--------------- docs/concepts/validators.md | 8 +- docs/migration.md | 5 +- docs/why.md | 3 +- pydantic/functional_serializers.py | 19 +- pydantic/main.py | 6 +- pydantic/version.py | 2 +- pyproject.toml | 2 +- uv.lock | 220 +++--- 11 files changed, 659 insertions(+), 713 deletions(-) diff --git a/docs/concepts/json.md b/docs/concepts/json.md index b216ce0e69c..9a102aa482a 100644 --- a/docs/concepts/json.md +++ b/docs/concepts/json.md @@ -211,4 +211,4 @@ Using the string caching feature results in performance improvements, but increa [`pydantic.type_adapter.TypeAdapter.dump_json`][pydantic.type_adapter.TypeAdapter.dump_json]
[`pydantic_core.to_json`][pydantic_core.to_json]
-For more information on JSON serialization, see the [Serialization Concepts](./serialization.md#modelmodel_dump_json) page. +For more information on JSON serialization, see the [serialization concepts](./serialization.md) page. diff --git a/docs/concepts/models.md b/docs/concepts/models.md index 7de694afedf..39ad9630f7e 100644 --- a/docs/concepts/models.md +++ b/docs/concepts/models.md @@ -155,10 +155,10 @@ Models possess the following methods and attributes: * [`model_construct()`][pydantic.main.BaseModel.model_construct]: Creates models without running validation. See [Creating models without validation](#creating-models-without-validation). * [`model_dump()`][pydantic.main.BaseModel.model_dump]: Returns a dictionary of the model's fields and values. See - [Serialization](serialization.md#model_dump). -* [`model_dump_json()`][pydantic.main.BaseModel.model_dump_json]: Returns a JSON string representation of [`model_dump()`][pydantic.main.BaseModel.model_dump]. See [Serialization](serialization.md#model_dump_json). + [Serialization](serialization.md#python-mode). +* [`model_dump_json()`][pydantic.main.BaseModel.model_dump_json]: Returns a JSON string representation of [`model_dump()`][pydantic.main.BaseModel.model_dump]. See [Serialization](serialization.md#json-mode). * [`model_copy()`][pydantic.main.BaseModel.model_copy]: Returns a copy (by default, shallow copy) of the model. See - [Serialization](serialization.md#model_copy). + [Model copy](#model-copy). * [`model_json_schema()`][pydantic.main.BaseModel.model_json_schema]: Returns a jsonable dictionary representing the model's JSON Schema. See [JSON Schema](json_schema.md). * [`model_fields`][pydantic.main.BaseModel.model_fields]: A mapping between field names and their definitions ([`FieldInfo`][pydantic.fields.FieldInfo] instances). * [`model_computed_fields`][pydantic.main.BaseModel.model_computed_fields]: A mapping between computed field names and their definitions ([`ComputedFieldInfo`][pydantic.fields.ComputedFieldInfo] instances). @@ -695,6 +695,41 @@ Here are some additional notes on the behavior of [`model_construct()`][pydantic not stored in `__pydantic_extra__` or `__dict__` on the instance. * Unlike when instantiating the model with validation, a call to [`model_construct()`][pydantic.main.BaseModel.model_construct] with [`extra`][pydantic.ConfigDict.extra] set to `'forbid'` doesn't raise an error in the presence of data not corresponding to fields. Rather, said input data is simply ignored. +## Model copy + +??? api "API Documentation" + [`pydantic.main.BaseModel.model_copy`][pydantic.main.BaseModel.model_copy]
+ +The [`model_copy()`][pydantic.BaseModel.model_copy] method allows models to be duplicated (with optional updates), +which is particularly useful when working with frozen models. + +```python +from pydantic import BaseModel + + +class BarModel(BaseModel): + whatever: int + + +class FooBarModel(BaseModel): + banana: float + foo: str + bar: BarModel + + +m = FooBarModel(banana=3.14, foo='hello', bar={'whatever': 123}) + +print(m.model_copy(update={'banana': 0})) +#> banana=0 foo='hello' bar=BarModel(whatever=123) + +# normal copy gives the same object reference for bar: +print(id(m.bar) == id(m.model_copy().bar)) +#> True +# deep copy gives a new object reference for `bar`: +print(id(m.bar) == id(m.model_copy(deep=True).bar)) +#> False +``` + ## Generic models Pydantic supports the creation of generic models to make it easier to reuse a common model structure. Both the new @@ -1529,7 +1564,7 @@ Field order affects models in the following ways: * field order is preserved in the model [JSON Schema](json_schema.md) * field order is preserved in [validation errors](#error-handling) -* field order is preserved by [`.model_dump()` and `.model_dump_json()` etc.](serialization.md#model_dump) +* field order is preserved when [serializing data](serialization.md#serializing-data) ```python from pydantic import BaseModel, ValidationError diff --git a/docs/concepts/serialization.md b/docs/concepts/serialization.md index e1cd1049135..757f083a30c 100644 --- a/docs/concepts/serialization.md +++ b/docs/concepts/serialization.md @@ -1,7 +1,8 @@ Beyond accessing model attributes directly via their field names (e.g. `model.foobar`), models can be converted, dumped, -serialized, and exported in a number of ways. +serialized, and exported in a number of ways. Serialization can be customized for the whole model, or on a per-field +or per-type basis. -!!! tip "Serialize versus dump" +??? abstract "Serialize versus dump" Pydantic uses the terms "serialize" and "dump" interchangeably. Both refer to the process of converting a model to a dictionary or JSON-encoded string. @@ -14,36 +15,52 @@ serialized, and exported in a number of ways. primitives and "serialize" when converting to string, for practical purposes, we frequently use the word "serialize" to refer to both of these situations, even though it does not always imply conversion to a string or bytes. -## `model.model_dump(...)`
+!!! tip + Want to quickly jump to the relevant serializer section? -??? api "API Documentation" - [`pydantic.main.BaseModel.model_dump`][pydantic.main.BaseModel.model_dump]
+
-This is the primary way of converting a model to a dictionary. Sub-models will be recursively converted to dictionaries. + * Field serializer -By default, the output may contain non-JSON-serializable Python objects. The `mode` argument can be specified as `'json'` to ensure that the output only contains JSON serializable types. Other parameters exist to include or exclude fields, [including nested fields](#advanced-include-and-exclude), or to further customize the serialization behaviour. + --- -See the available [parameters][pydantic.main.BaseModel.model_dump] for more information. + * [field *plain* serializer](#field-plain-serializer) + * [field *wrap* serializer](#field-wrap-serializer) -!!! note - The one exception to sub-models being converted to dictionaries is that [`RootModel`](models.md#rootmodel-and-custom-root-types) - and its subclasses will have the `root` field value dumped directly, without a wrapping dictionary. This is also - done recursively. + * Model serializer -!!! note - You can use [computed fields](../api/fields.md#pydantic.fields.computed_field) to include `property` and - `cached_property` data in the `model.model_dump(...)` output. + --- -Example: + * [model *plain* serializer](#model-plain-serializer) + * [model *wrap* serializer](#model-wrap-serializer) -```python -from typing import Any, Optional +
+ +## Serializing data + +Pydantic allows models (and any other type using [type adapters](./type_adapter.md)) to be serialized in *two* modes: +[Python](#python-mode) and [JSON](#json-mode). The Python output may contain non-JSON serializable data (although this +can be emulated). -from pydantic import BaseModel, Field, Json + + +[](){#modelmodel_dump} + +### Python mode + +When using the Python mode, Pydantic models (and model-like types such as [dataclasses][]) (1) will be (recursively) converted to dictionaries. This is achievable by using the [`model_dump()`][pydantic.BaseModel.model_dump] method: +{ .annotate } + +1. With the exception of [root models](./models.md#rootmodel-and-custom-root-types), where the root value is dumped directly. + +```python {group="python-dump"} +from typing import Optional + +from pydantic import BaseModel, Field class BarModel(BaseModel): - whatever: int + whatever: tuple[int, ...] class FooBarModel(BaseModel): @@ -52,66 +69,35 @@ class FooBarModel(BaseModel): bar: BarModel -m = FooBarModel(banana=3.14, foo='hello', bar={'whatever': 123}) +m = FooBarModel(banana=3.14, foo='hello', bar={'whatever': (1, 2)}) # returns a dictionary: print(m.model_dump()) -#> {'banana': 3.14, 'foo': 'hello', 'bar': {'whatever': 123}} -print(m.model_dump(include={'foo', 'bar'})) -#> {'foo': 'hello', 'bar': {'whatever': 123}} -print(m.model_dump(exclude={'foo', 'bar'})) -#> {'banana': 3.14} -print(m.model_dump(by_alias=True)) -#> {'banana': 3.14, 'foo_alias': 'hello', 'bar': {'whatever': 123}} -print( - FooBarModel(foo='hello', bar={'whatever': 123}).model_dump( - exclude_unset=True - ) -) -#> {'foo': 'hello', 'bar': {'whatever': 123}} -print( - FooBarModel(banana=1.1, foo='hello', bar={'whatever': 123}).model_dump( - exclude_defaults=True - ) -) -#> {'foo': 'hello', 'bar': {'whatever': 123}} -print( - FooBarModel(foo='hello', bar={'whatever': 123}).model_dump( - exclude_defaults=True - ) -) -#> {'foo': 'hello', 'bar': {'whatever': 123}} -print( - FooBarModel(banana=None, foo='hello', bar={'whatever': 123}).model_dump( - exclude_none=True - ) -) -#> {'foo': 'hello', 'bar': {'whatever': 123}} - +#> {'banana': 3.14, 'foo': 'hello', 'bar': {'whatever': (1, 2)}} -class Model(BaseModel): - x: list[Json[Any]] +print(m.model_dump(by_alias=True)) +#> {'banana': 3.14, 'foo_alias': 'hello', 'bar': {'whatever': (1, 2)}} +``` +Notice that the value of `whatever` was dumped as tuple, which isn't a known JSON type. The `mode` argument can be set to `'json'` +to ensure JSON-compatible types are used: -print(Model(x=['{"a": 1}', '[1, 2]']).model_dump()) -#> {'x': [{'a': 1}, [1, 2]]} -print(Model(x=['{"a": 1}', '[1, 2]']).model_dump(round_trip=True)) -#> {'x': ['{"a":1}', '[1,2]']} +```python {group="python-dump"} +print(m.model_dump(mode='json')) +#> {'banana': 3.14, 'foo': 'hello', 'bar': {'whatever': [1, 2]}} ``` -## `model.model_dump_json(...)` - -??? api "API Documentation" - [`pydantic.main.BaseModel.model_dump_json`][pydantic.main.BaseModel.model_dump_json]
+!!! info "See also" + The [`TypeAdapter.dump_python()`][pydantic.TypeAdapter.dump_python] method, useful when *not* dealing with Pydantic models. -The `.model_dump_json()` method serializes a model directly to a JSON-encoded string -that is equivalent to the result produced by [`.model_dump()`](#modelmodel_dump). + + +[](){#modelmodel_dump_json} -See the available [parameters][pydantic.main.BaseModel.model_dump_json] for more information. +### JSON mode -!!! note - Pydantic can serialize many commonly used types to JSON that would otherwise be incompatible with a simple - `json.dumps(foobar)` (e.g. `datetime`, `date` or `UUID`) . +Pydantic allows data to be serialized directly to a JSON-encoded string, by trying its best to convert Python values to valid +JSON data. This is achievable by using the [`model_dump_json()`][pydantic.BaseModel.model_dump_json] method: ```python from datetime import datetime @@ -120,7 +106,7 @@ from pydantic import BaseModel class BarModel(BaseModel): - whatever: int + whatever: tuple[int, ...] class FooBarModel(BaseModel): @@ -128,29 +114,40 @@ class FooBarModel(BaseModel): bar: BarModel -m = FooBarModel(foo=datetime(2032, 6, 1, 12, 13, 14), bar={'whatever': 123}) -print(m.model_dump_json()) -#> {"foo":"2032-06-01T12:13:14","bar":{"whatever":123}} +m = FooBarModel(foo=datetime(2032, 6, 1, 12, 13, 14), bar={'whatever': (1, 2)}) + print(m.model_dump_json(indent=2)) """ { "foo": "2032-06-01T12:13:14", "bar": { - "whatever": 123 + "whatever": [ + 1, + 2 + ] } } """ ``` -## `dict(model)` and iteration +In addition to the [supported types][json.JSONEncoder] by the standard library [`json`][] module, Pydantic supports a wide +variety of types ([date and time types][datetime], [`UUID`][uuid.UUID] objects, [sets][set], etc). If an unsupported type +is used and can't be serialized to JSON, a [`PydanticSerializationError`][pydantic_core.PydanticSerializationError] exception +is raised. -Pydantic models can also be converted to dictionaries using `dict(model)`, and you can also iterate over a model's -fields using `for field_name, field_value in model:`. With this approach the raw field values are returned, so -sub-models will not be converted to dictionaries. +!!! info "See also" + The [`TypeAdapter.dump_json()`][pydantic.TypeAdapter.dump_json] method, useful when *not* dealing with Pydantic models. -Example: + + +[](){#dictmodel-and-iteration} -```python +## Iterating over models + +Pydantic models can also be iterated over, yielding `(field_name, field_value)` pairs. Note that field values +are left as is, so sub-models will *not* be converted to dictionaries: + +```python {group="iterating-model"} from pydantic import BaseModel @@ -166,8 +163,6 @@ class FooBarModel(BaseModel): m = FooBarModel(banana=3.14, foo='hello', bar={'whatever': 123}) -print(dict(m)) -#> {'banana': 3.14, 'foo': 'hello', 'bar': BarModel(whatever=123)} for name, value in m: print(f'{name}: {value}') #> banana: 3.14 @@ -175,231 +170,402 @@ for name, value in m: #> bar: whatever=123 ``` -Note also that [`RootModel`](models.md#rootmodel-and-custom-root-types) *does* get converted to a dictionary with the key `'root'`. +This means that calling [`dict()`][dict] on a model can be used to construct a dictionary of the model: -## Custom serializers +```python {group="iterating-model"} +print(dict(m)) +#> {'banana': 3.14, 'foo': 'hello', 'bar': BarModel(whatever=123)} +``` -Pydantic provides several [functional serializers][pydantic.functional_serializers] to customise how a model is serialized to a dictionary or JSON. +!!! note + [Root models](models.md#rootmodel-and-custom-root-types) *does* get converted to a dictionary with the key `'root'`. -* [`@field_serializer`][pydantic.functional_serializers.field_serializer] -* [`@model_serializer`][pydantic.functional_serializers.model_serializer] -* [`PlainSerializer`][pydantic.functional_serializers.PlainSerializer] -* [`WrapSerializer`][pydantic.functional_serializers.WrapSerializer] + + +[](){#pickledumpsmodel} -Serialization can be customised on a field using the -[`@field_serializer`][pydantic.functional_serializers.field_serializer] decorator, and on a model using the -[`@model_serializer`][pydantic.functional_serializers.model_serializer] decorator. +## Pickling support -```python -from datetime import datetime, timedelta, timezone -from typing import Any +Pydantic models support efficient pickling and unpickling. -from pydantic import BaseModel, ConfigDict, field_serializer, model_serializer + +```python {test="skip"} +import pickle +from pydantic import BaseModel -class WithCustomEncoders(BaseModel): - model_config = ConfigDict(ser_json_timedelta='iso8601') - dt: datetime - diff: timedelta +class FooBarModel(BaseModel): + a: str + b: int - @field_serializer('dt') - def serialize_dt(self, dt: datetime, _info): - return dt.timestamp() +m = FooBarModel(a='hello', b=123) +print(m) +#> a='hello' b=123 +data = pickle.dumps(m) +print(data[:20]) +#> b'\x80\x04\x95\x95\x00\x00\x00\x00\x00\x00\x00\x8c\x08__main_' +m2 = pickle.loads(data) +print(m2) +#> a='hello' b=123 +``` -m = WithCustomEncoders( - dt=datetime(2032, 6, 1, tzinfo=timezone.utc), diff=timedelta(hours=100) -) -print(m.model_dump_json()) -#> {"dt":1969660800.0,"diff":"P4DT4H"} + + +[](){#custom-serializers} +## Serializers -class Model(BaseModel): - x: str +Similar to [custom validators](./validators.md), you can leverage custom serializers at the field and model levels to further +control the serialization behavior. - @model_serializer - def ser_model(self) -> dict[str, Any]: - return {'x': f'serialized {self.x}'} +!!! warning + Only *one* serializer can be defined per field/model. It is not possible to combine multiple serializers together + (including *plain* and *wrap* serializers). +### Field serializers -print(Model(x='test value').model_dump_json()) -#> {"x":"serialized test value"} -``` +??? api "API Documentation" + [`pydantic.functional_serializers.PlainSerializer`][pydantic.functional_serializers.PlainSerializer]
+ [`pydantic.functional_serializers.WrapSerializer`][pydantic.functional_serializers.WrapSerializer]
+ [`pydantic.functional_serializers.field_serializer`][pydantic.functional_serializers.field_serializer]
-!!! note - A single serializer can also be called on all fields by passing the special value '*' to the [`@field_serializer`][pydantic.functional_serializers.field_serializer] decorator. +In its simplest form, a field serializer is a callable taking the value to be serialized as an argument and +**returning the serialized value**. -In addition, [`PlainSerializer`][pydantic.functional_serializers.PlainSerializer] and -[`WrapSerializer`][pydantic.functional_serializers.WrapSerializer] enable you to use a function to modify the output of serialization. +If the `return_type` argument is provided to the serializer (or if a return type annotation is available on the serializer function), +it will be used to build an extra serializer, to ensure that the serialized field value complies with this return type. -Both serializers accept optional arguments including: +**Two** different types of serializers can be used. They can all be defined using the +[annotated pattern](./fields.md#the-annotated-pattern) or using the +[`@field_serializer`][pydantic.field_serializer] decorator, applied on instance or [static methods][staticmethod]. -* `return_type` specifies the return type for the function. If omitted it will be inferred from the type annotation. -* `when_used` specifies when this serializer should be used. Accepts a string with values 'always', - 'unless-none', 'json', and 'json-unless-none'. Defaults to 'always'. +* ***Plain* serializers**: are called unconditionally to serialize a field. The serialization logic for types supported + by Pydantic will *not* be called. Using such serializers is also useful to specify the logic for arbitrary types. + {#field-plain-serializer} -`PlainSerializer` uses a simple function to modify the output of serialization. + === "Annotated pattern" -```python -from typing import Annotated + ```python + from typing import Annotated, Any -from pydantic import BaseModel -from pydantic.functional_serializers import PlainSerializer + from pydantic import BaseModel, PlainSerializer -FancyInt = Annotated[ - int, PlainSerializer(lambda x: f'{x:,}', return_type=str, when_used='json') -] + def ser_number(value: Any) -> Any: + if isinstance(value, int): + return value * 2 + else: + return value -class MyModel(BaseModel): - x: FancyInt + class Model(BaseModel): + number: Annotated[int, PlainSerializer(ser_number)] -print(MyModel(x=1234).model_dump()) -#> {'x': 1234} -print(MyModel(x=1234).model_dump(mode='json')) -#> {'x': '1,234'} -``` + print(Model(number=4).model_dump()) + #> {'number': 8} + m = Model(number=1) + m.number = 'invalid' + print(m.model_dump()) # (1)! + #> {'number': 'invalid'} + ``` -`WrapSerializer` receives the raw inputs along with a handler function that applies the standard serialization -logic, and can modify the resulting value before returning it as the final output of serialization. + 1. Pydantic will *not* validate that the serialized value complies with the `int` type. -```python -from typing import Annotated, Any + === "Decorator" -from pydantic import BaseModel, SerializerFunctionWrapHandler -from pydantic.functional_serializers import WrapSerializer + ```python + from typing import Any + from pydantic import BaseModel, field_serializer -def ser_wrap(v: Any, nxt: SerializerFunctionWrapHandler) -> str: - return f'{nxt(v + 1):,}' + class Model(BaseModel): + number: int -FancyInt = Annotated[int, WrapSerializer(ser_wrap, when_used='json')] + @field_serializer('number', mode='plain') # (1)! + def ser_number(self, value: Any) -> Any: + if isinstance(value, int): + return value * 2 + else: + return value -class MyModel(BaseModel): - x: FancyInt + print(Model(number=4).model_dump()) + #> {'number': 8} + m = Model(number=1) + m.number = 'invalid' + print(m.model_dump()) # (2)! + #> {'number': 'invalid'} + ``` + 1. `'plain'` is the default mode for the decorator, and can be omitted. + 2. Pydantic will *not* validate that the serialized value complies with the `int` type. -print(MyModel(x=1234).model_dump()) -#> {'x': 1234} +* ***Wrap* serializers**: give more flexibility to customize the serialization behavior. You can run code before or after + the Pydantic serialization logic. + {#field-wrap-serializer} -print(MyModel(x=1234).model_dump(mode='json')) -#> {'x': '1,235'} -``` + Such serializers must be defined with a **mandatory** extra *handler* parameter: a callable taking the value to be serialized + as an argument. Internally, this handler will delegate serialization of the value to Pydantic. You are free to *not* call the + handler at all. + + === "Annotated pattern" + + ```python + from typing import Annotated, Any + + from pydantic import BaseModel, SerializerFunctionWrapHandler, WrapSerializer + + + def ser_number(value: Any, handler: SerializerFunctionWrapHandler) -> int: + return handler(value) + 1 + + + class Model(BaseModel): + number: Annotated[int, WrapSerializer(ser_number)] + + + print(Model(number=4).model_dump()) + #> {'number': 5} + ``` + + === "Decorator" + + ```python + from typing import Any -### Overriding the return type when dumping a model + from pydantic import BaseModel, SerializerFunctionWrapHandler, field_serializer -While the return value of `.model_dump()` can usually be described as `dict[str, Any]`, through the use of -`@model_serializer` you can actually cause it to return a value that doesn't match this signature: + + class Model(BaseModel): + number: int + + @field_serializer('number', mode='wrap') + def ser_number( + self, value: Any, handler: SerializerFunctionWrapHandler + ) -> int: + return handler(value) + 1 + + + print(Model(number=4).model_dump()) + #> {'number': 5} + ``` + + + +#### Which serializer pattern to use + +While both approaches can achieve the same thing, each pattern provides different benefits. + +##### Using the annotated pattern + +One of the key benefits of using the [annotated pattern](./fields.md#the-annotated-pattern) is to make +serializers reusable: ```python -from pydantic import BaseModel, model_serializer +from typing import Annotated +from pydantic import BaseModel, Field, PlainSerializer -class Model(BaseModel): - x: str +DoubleNumber = Annotated[int, PlainSerializer(lambda v: v * 2)] - @model_serializer - def ser_model(self) -> str: - return self.x +class Model1(BaseModel): + my_number: DoubleNumber -print(Model(x='not a dict').model_dump()) -#> not a dict + +class Model2(BaseModel): + other_number: Annotated[DoubleNumber, Field(description='My other number')] + + +class Model3(BaseModel): + list_of_even_numbers: list[DoubleNumber] # (1)! ``` -If you want to do this and still get proper type-checking for this method, you can override `.model_dump()` in an -`if TYPE_CHECKING:` block: +1. As mentioned in the [annotated pattern](./fields.md#the-annotated-pattern) documentation, + we can also make use of serializers for specific parts of the annotation (in this case, + serialization is applied for list items, but not the whole list). -```python -from __future__ import annotations +It is also easier to understand which serializers are applied to a type, by just looking at the field annotation. + +##### Using the decorator pattern -from typing import TYPE_CHECKING, Any, Literal +One of the key benefits of using the [`@field_serializer`][pydantic.field_serializer] decorator is to apply +the function to multiple fields: -from pydantic import BaseModel, model_serializer +```python +from pydantic import BaseModel, field_serializer class Model(BaseModel): - x: str - - @model_serializer - def ser_model(self) -> str: - return self.x - - if TYPE_CHECKING: - # Ensure type checkers see the correct return type - def model_dump( - self, - *, - mode: Literal['json', 'python'] | str = 'python', - include: Any = None, - exclude: Any = None, - by_alias: bool | None = False, - exclude_unset: bool = False, - exclude_defaults: bool = False, - exclude_none: bool = False, - round_trip: bool = False, - warnings: bool = True, - ) -> str: ... + f1: str + f2: str + + @field_serializer('f1', 'f2', mode='plain') + def capitalize(self, value: str) -> str: + return value.capitalize() ``` -This trick is actually used in [`RootModel`](models.md#rootmodel-and-custom-root-types) for precisely this purpose. +Here are a couple additional notes about the decorator usage: -## Serializing subclasses +* If you want the serializer to apply to all fields (including the ones defined in subclasses), you can pass + `'*'` as the field name argument. +* By default, the decorator will ensure the provided field name(s) are defined on the model. If you want to + disable this check during class creation, you can do so by passing `False` to the `check_fields` argument. + This is useful when the field serializer is defined on a base class, and the field is expected to exist on + subclasses. -### Subclasses of standard types +### Model serializers -Subclasses of standard types are automatically dumped like their super-classes: +??? api "API Documentation" + [`pydantic.functional_serializers.model_serializer`][pydantic.functional_serializers.model_serializer]
-```python -from datetime import date, timedelta -from typing import Any +Serialization can also be customized on the entire model using the [`@model_serializer`][pydantic.model_serializer] +decorator. -from pydantic_core import core_schema +If the `return_type` argument is provided to the [`@model_serializer`][pydantic.model_serializer] decorator +(or if a return type annotation is available on the serializer function), it will be used to build an extra serializer, +to ensure that the serialized model value complies with this return type. -from pydantic import BaseModel, GetCoreSchemaHandler +As with [field serializers](#field-serializers), **two** different types of model serializers can be used: +* ***Plain* serializers**: are called unconditionally to serialize the model. + {#model-plain-serializer} -class DayThisYear(date): - """ - Contrived example of a special type of date that - takes an int and interprets it as a day in the current year - """ + ```python + from pydantic import BaseModel, model_serializer + + + class UserModel(BaseModel): + username: str + password: str + + @model_serializer(mode='plain') # (1)! + def serialize_model(self) -> str: # (2)! + return f'{self.username} - {self.password}' + + + print(UserModel(username='foo', password='bar').model_dump()) + #> foo - bar + ``` + + 1. `'plain'` is the default mode for the decorator, and can be omitted. + 2. You are free to return a value that *isn't* a dictionary. + +* ***Wrap* serializers**: give more flexibility to customize the serialization behavior. You can run code before or after + the Pydantic serialization logic. + {#model-wrap-serializer} + + Such serializers must be defined with a **mandatory** extra *handler* parameter: a callable taking the instance of the model + as an argument. Internally, this handler will delegate serialization of the model to Pydantic. You are free to *not* call the + handler at all. + + ```python + from pydantic import BaseModel, SerializerFunctionWrapHandler, model_serializer - @classmethod - def __get_pydantic_core_schema__( - cls, source: type[Any], handler: GetCoreSchemaHandler - ) -> core_schema.CoreSchema: - return core_schema.no_info_after_validator_function( - cls.validate, - core_schema.int_schema(), - serialization=core_schema.format_ser_schema('%Y-%m-%d'), - ) + class UserModel(BaseModel): + username: str + password: str + + @model_serializer(mode='wrap') + def serialize_model( + self, handler: SerializerFunctionWrapHandler + ) -> dict[str, object]: + serialized = handler(self) + serialized['fields'] = list(serialized) + return serialized + + + print(UserModel(username='foo', password='bar').model_dump()) + #> {'username': 'foo', 'password': 'bar', 'fields': ['username', 'password']} + ``` + +## Serialization info + +Both the field and model serializers callables (in all modes) can optionally take an extra `info` argument, +providing useful extra information, such as: + +* [user defined context](#serialization-context) +* the current serialization mode: either `'python'` or `'json'` (see the [`mode`][pydantic.SerializationInfo.mode] property) +* the various parameters set during serialization using the [serialization methods](#serializing-data) + (e.g. [`exclude_unset`][pydantic.SerializationInfo.exclude_unset], [`serialize_as_any`][pydantic.SerializationInfo.serialize_as_any]) +* the current field name, if using a [field serializer](#field-serializers) (see the + [`field_name`][pydantic.FieldSerializationInfo.field_name] property). + +### Serialization context + +You can pass a context object to the [serialization methods](#serializing-data), which can be accessed +inside the serializer functions using the [`context`][pydantic.SerializationInfo.context] property: + +```python +from pydantic import BaseModel, FieldSerializationInfo, field_serializer + + +class Model(BaseModel): + text: str + + @field_serializer('text', mode='plain') @classmethod - def validate(cls, v: int): - return date(2023, 1, 1) + timedelta(days=v) + def remove_stopwords(cls, v: str, info: FieldSerializationInfo) -> str: + if isinstance(info.context, dict): + stopwords = info.context.get('stopwords', set()) + v = ' '.join(w for w in v.split() if w.lower() not in stopwords) + return v + + +model = Model(text='This is an example document') +print(model.model_dump()) # no context +#> {'text': 'This is an example document'} +print(model.model_dump(context={'stopwords': ['this', 'is', 'an']})) +#> {'text': 'example document'} +``` + +Similarly, you can [use a context for validation](../concepts/validators.md#validation-context). + +## Serializing subclasses + + + +[](){#subclasses-of-standard-types} + +### Subclasses of supported types + +Subclasses of supported types are serialized according to their super class: + +```python +from datetime import date + +from pydantic import BaseModel + + +class MyDate(date): + @property + def my_date_format(self) -> str: + return self.strftime('%d/%m/%Y') class FooModel(BaseModel): - date: DayThisYear + date: date -m = FooModel(date=300) +m = FooModel(date=MyDate(2023, 1, 1)) print(m.model_dump_json()) -#> {"date":"2023-10-28"} +#> {"date":"2023-01-01"} ``` -### Subclass instances for fields of `BaseModel`, dataclasses, `TypedDict` + + +[](){#subclass-instances-for-fields-of-basemodel-dataclasses-typeddict} + +### Subclasses of model-like types -When using fields whose annotations are themselves struct-like types (e.g., `BaseModel` subclasses, dataclasses, etc.), -the default behavior is to serialize the attribute value as though it was an instance of the annotated type, -even if it is a subclass. More specifically, only the fields from the *annotated* type will be included in the -dumped object: +When using model-like classes (Pydantic models, dataclasses, etc.) as field annotations, the default behavior is to +serializer the field value as though it was an instance of the class, even if it is a subclass. More specifically, +only the fields declared on the type annotation will be included in the serialization result: ```python from pydantic import BaseModel @@ -422,39 +588,38 @@ user = UserLogin(name='pydantic', password='hunter2') m = OuterModel(user=user) print(m) #> user=UserLogin(name='pydantic', password='hunter2') -print(m.model_dump()) # note: the password field is not included +print(m.model_dump()) # (1)! #> {'user': {'name': 'pydantic'}} ``` +1. Note: the password field is not included + !!! warning "Migration Warning" This behavior is different from how things worked in Pydantic V1, where we would always include - all (subclass) fields when recursively dumping models to dicts. The motivation behind this change in - behavior is that it helps ensure that you know precisely which fields could be included when serializing, + all (subclass) fields when recursively serializing models to dictionaries. The motivation behind this change + in behavior is that it helps ensure that you know precisely which fields could be included when serializing, even if subclasses get passed when instantiating the object. In particular, this can help prevent surprises - when adding sensitive information like secrets as fields of subclasses. - -### Serializing with duck-typing šŸ¦† + when adding sensitive information like secrets as fields of subclasses. To enable the old V1 behavior, refer + to the next section. -!!! question "What is serialization with duck typing?" +### Serializing with duck typing šŸ¦† - Duck-typing serialization is the behavior of serializing an object based on the fields present in the object itself, - rather than the fields present in the schema of the object. This means that when an object is serialized, fields present in - a subclass, but not in the original schema, will be included in the serialized output. +Duck typing serialization is the behavior of serializing a model instance based on the actual field values, rather +than the field definitions. This means that for a field annotated with a model-like class, all the fields present +in subclasses of such class will be included in the serialized output. - This behavior was the default in Pydantic V1, but was changed in V2 to help ensure that you know precisely which - fields would be included when serializing, even if subclasses get passed when instantiating the object. This helps - prevent security risks when serializing subclasses with sensitive information, for example. +This behavior can be configured at the field level and at runtime, for a specific serialization call: -If you want v1-style duck-typing serialization behavior, you can use a runtime setting, or annotate individual types. - -* Field / type level: use the `SerializeAsAny` annotation -* Runtime level: use the `serialize_as_any` flag when calling `model_dump()` or `model_dump_json()` +* Field level: use the [`SerializeAsAny`][pydantic.functional_serializers.SerializeAsAny] annotation. +* Runtime level: use the `serialize_as_any` argument when calling the [serialization methods](#serializing-data). We discuss these options below in more detail: #### `SerializeAsAny` annotation -If you want duck-typing serialization behavior, this can be done using the `SerializeAsAny` annotation on a type: +If you want duck typing serialization behavior, this can be done using the +[`SerializeAsAny`][pydantic.functional_serializers.SerializeAsAny] annotation +on a type: ```python from pydantic import BaseModel, SerializeAsAny @@ -484,31 +649,16 @@ print(OuterModel(as_any=user, as_user=user).model_dump()) """ ``` -When a field is annotated as `SerializeAsAny[]`, the validation behavior will be the same as if it was -annotated as ``, and type-checkers like mypy will treat the attribute as having the appropriate type as well. -But when serializing, the field will be serialized as though the type hint for the field was `Any`, which is where the -name comes from. +When a type is annotated as `SerializeAsAny[]`, the validation behavior will be the same as if it was +annotated as ``, and static type checkers will treat the annotation as if it was simply ``. +When serializing, the field will be serialized as though the type hint for the field was [`Any`][typing.Any], +which is where the name comes from. #### `serialize_as_any` runtime setting The `serialize_as_any` runtime setting can be used to serialize model data with or without duck typed serialization behavior. -`serialize_as_any` can be passed as a keyword argument to the `model_dump()` and `model_dump_json` methods of `BaseModel`s and `RootModel`s. It can also be passed as a keyword argument to the `dump_python()` and `dump_json()` methods of `TypeAdapter`s. - -If `serialize_as_any` is set to `True`, the model will be serialized using duck typed serialization behavior, -which means that the model will ignore the schema and instead ask the object itself how it should be serialized. -In particular, this means that when model subclasses are serialized, fields present in the subclass but not in -the original schema will be included. - -If `serialize_as_any` is set to `False` (which is the default), the model will be serialized using the schema, -which means that fields present in a subclass but not in the original schema will be ignored. - -!!! question "Why is this flag useful?" - Sometimes, you want to make sure that no matter what fields might have been added in subclasses, - the serialized object will only have the fields listed in the original type definition. - This can be useful if you add something like a `password: str` field in a subclass that you don't - want to accidentally include in the serialized output. - -For example: +`serialize_as_any` can be passed as a keyword argument to the various [serialization methods](#serializing-data) (such as +[`model_dump()`][pydantic.BaseModel.model_dump] and [`model_dump_json()`][pydantic.BaseModel.model_dump_json] on Pydantic models). ```python from pydantic import BaseModel @@ -544,133 +694,33 @@ print(outer_model.model_dump(serialize_as_any=False)) # (2)! 1. With `serialize_as_any` set to `True`, the result matches that of V1. 2. With `serialize_as_any` set to `False` (the V2 default), fields present on the subclass, -but not the base class, are not included in serialization. - -This setting even takes effect with nested and recursive patterns as well. For example: - -```python -from pydantic import BaseModel - + but not the base class, are not included in serialization. -class User(BaseModel): - name: str - friends: list['User'] + + +[](){#advanced-include-and-exclude} + +[](){#model-and-field-level-include-and-exclude} +## Field inclusion and exclusion -class UserLogin(User): - password: str +Model fields can be excluded for the serialization output in two ways: +* using the `exclude` parameter on [the `Field()` function](fields.md). +* using the various serialization parameters on the [serialization methods](#serializing-data). -class OuterModel(BaseModel): - user: User - - -user = UserLogin( - name='samuel', - password='pydantic-pw', - friends=[UserLogin(name='sebastian', password='fastapi-pw', friends=[])], -) - -print(OuterModel(user=user).model_dump(serialize_as_any=True)) # (1)! -""" -{ - 'user': { - 'name': 'samuel', - 'friends': [ - {'name': 'sebastian', 'friends': [], 'password': 'fastapi-pw'} - ], - 'password': 'pydantic-pw', - } -} -""" - -print(OuterModel(user=user).model_dump(serialize_as_any=False)) # (2)! -""" -{'user': {'name': 'samuel', 'friends': [{'name': 'sebastian', 'friends': []}]}} -""" -``` - -1. Even nested `User` model instances are dumped with fields unique to `User` subclasses. -2. Even nested `User` model instances are dumped without fields unique to `User` subclasses. - -!!! note - The behavior of the `serialize_as_any` runtime flag is almost the same as the behavior of the `SerializeAsAny` annotation. - There are a few nuanced differences that we're working to resolve, but for the most part, you can expect the same behavior from both. - See more about the differences in this [active issue](https://github.com/pydantic/pydantic/issues/9049) +Setting `exclude` to `True` on the [`Field()`][pydantic.fields.Field] function will unconditionally exclude it from +the output (and this setting takes priority over the runtime parameters described below). -#### Overriding the `serialize_as_any` default (False) - -You can override the default setting for `serialize_as_any` by configuring a subclass of `BaseModel` that overrides the default for the `serialize_as_any` parameter to `model_dump()` and `model_dump_json()`, and then use that as the base class (instead of `pydantic.BaseModel`) for any model you want to have this default behavior. - -For example, you could do the following if you want to use duck-typing serialization by default: - -```python -from typing import Any - -from pydantic import BaseModel, SecretStr - - -class MyBaseModel(BaseModel): - def model_dump(self, **kwargs) -> dict[str, Any]: - return super().model_dump(serialize_as_any=True, **kwargs) - - def model_dump_json(self, **kwargs) -> str: - return super().model_dump_json(serialize_as_any=True, **kwargs) - - -class User(MyBaseModel): - name: str - - -class UserInfo(User): - password: SecretStr - - -class OuterModel(MyBaseModel): - user: User - - -u = OuterModel(user=UserInfo(name='John', password='secret_pw')) -print(u.model_dump_json()) # (1)! -#> {"user":{"name":"John","password":"**********"}} -``` +When using the [serialization methods](#serializing-data) (such as [`model_dump()`][pydantic.BaseModel.model_dump]), +several parameters can be used to exclude or include fields. -1. By default, `model_dump_json` will use duck-typing serialization behavior, which means that the `password` field is included in the output. +### Excluding and including specific fields -## `pickle.dumps(model)` +Consider the following models: -Pydantic models support efficient pickling and unpickling. - - -```python {test="skip"} -import pickle - -from pydantic import BaseModel - - -class FooBarModel(BaseModel): - a: str - b: int - - -m = FooBarModel(a='hello', b=123) -print(m) -#> a='hello' b=123 -data = pickle.dumps(m) -print(data[:20]) -#> b'\x80\x04\x95\x95\x00\x00\x00\x00\x00\x00\x00\x8c\x08__main_' -m2 = pickle.loads(data) -print(m2) -#> a='hello' b=123 -``` - -## Advanced include and exclude - -The `model_dump` and `model_dump_json` methods support `include` and `exclude` parameters which can either be -sets or dictionaries. This allows nested selection of which fields to export: - -```python -from pydantic import BaseModel, SecretStr +```python {group="simple-exclude-include"} +from pydantic import BaseModel, Field, SecretStr class User(BaseModel): @@ -681,21 +731,30 @@ class User(BaseModel): class Transaction(BaseModel): id: str + private_id: str = Field(exclude=True) # (1)! user: User value: int t = Transaction( id='1234567890', + private_id='123', user=User(id=42, username='JohnDoe', password='hashedpassword'), value=9876543210, ) +``` +1. As said above, this field will always be excluded during serialization. + +The `exclude` parameter can be used to specify which fields should be excluded (including the others), and vice-versa +using the `include` parameter. + +```python {group="simple-exclude-include"} # using a set: print(t.model_dump(exclude={'user', 'value'})) #> {'id': '1234567890'} -# using a dict: +# using a dictionary: print(t.model_dump(exclude={'user': {'username', 'password'}, 'value': True})) #> {'id': '1234567890', 'user': {'id': 42}} @@ -703,32 +762,12 @@ print(t.model_dump(include={'id': True, 'user': {'id'}})) #> {'id': '1234567890', 'user': {'id': 42}} ``` -Using `True` indicates that we want to exclude or include an entire key, just as if we included it in a set (note that using `False` isn't supported). -This can be done at any depth level. - -Special care must be taken when including or excluding fields from a list or tuple of submodels or dictionaries. -In this scenario, `model_dump` and related methods expect integer keys for element-wise inclusion or exclusion. -To exclude a field from **every** member of a list or tuple, the dictionary key `'__all__'` can be used, as shown here: - -```python -import datetime - -from pydantic import BaseModel, SecretStr - - -class Country(BaseModel): - name: str - phone_code: int - +Note that using `False` to *include* a field in `exclude` (or to *exclude* a field in `include`) is not supported. -class Address(BaseModel): - post_code: int - country: Country +It is also possible to exclude or include specific items from sequence and dictionaries: - -class CardDetails(BaseModel): - number: SecretStr - expires: datetime.date +```python {group="advanced-include-exclude"} +from pydantic import BaseModel class Hobby(BaseModel): @@ -737,208 +776,75 @@ class Hobby(BaseModel): class User(BaseModel): - first_name: str - second_name: str - address: Address - card_details: CardDetails hobbies: list[Hobby] user = User( - first_name='John', - second_name='Doe', - address=Address( - post_code=123456, country=Country(name='USA', phone_code=1) - ), - card_details=CardDetails( - number='4212934504460000', expires=datetime.date(2020, 5, 1) - ), hobbies=[ Hobby(name='Programming', info='Writing code and stuff'), Hobby(name='Gaming', info='Hell Yeah!!!'), ], ) -exclude_keys = { - 'second_name': True, - 'address': {'post_code': True, 'country': {'phone_code'}}, - 'card_details': True, - # You can exclude fields from specific members of a tuple/list by index: - 'hobbies': {-1: {'info'}}, -} - -include_keys = { - 'first_name': True, - 'address': {'country': {'name'}}, - 'hobbies': {0: True, -1: {'name'}}, -} - -# would be the same as user.model_dump(exclude=exclude_keys) in this case: -print(user.model_dump(include=include_keys)) +print(user.model_dump(exclude={'hobbies': {-1: {'info'}}})) # (1)! """ { - 'first_name': 'John', - 'address': {'country': {'name': 'USA'}}, 'hobbies': [ {'name': 'Programming', 'info': 'Writing code and stuff'}, {'name': 'Gaming'}, - ], -} -""" - -# To exclude a field from all members of a nested list or tuple, use "__all__": -print(user.model_dump(exclude={'hobbies': {'__all__': {'info'}}})) -""" -{ - 'first_name': 'John', - 'second_name': 'Doe', - 'address': { - 'post_code': 123456, - 'country': {'name': 'USA', 'phone_code': 1}, - }, - 'card_details': { - 'number': SecretStr('**********'), - 'expires': datetime.date(2020, 5, 1), - }, - 'hobbies': [{'name': 'Programming'}, {'name': 'Gaming'}], + ] } """ ``` -The same holds for the `model_dump_json` method. - -### Model- and field-level include and exclude - -In addition to the explicit `exclude` and `include` arguments passed to `model_dump` and `model_dump_json` methods, -we can also pass the `exclude: bool` arguments directly to the `Field` constructor: - -Setting `exclude` on the field constructor (`Field(exclude=True)`) takes priority over the -`exclude`/`include` on `model_dump` and `model_dump_json`: - -```python -from pydantic import BaseModel, Field, SecretStr +1. The equivalent call with `include` would be: + ```python {lint="skip" group="advanced-include-exclude"} + user.model_dump( + include={'hobbies': {0: True, -1: {'name'}}} + ) + ``` -class User(BaseModel): - id: int - username: str - password: SecretStr = Field(exclude=True) - - -class Transaction(BaseModel): - id: str - value: int = Field(exclude=True) - - -t = Transaction( - id='1234567890', - value=9876543210, -) - -print(t.model_dump()) -#> {'id': '1234567890'} -print(t.model_dump(include={'id': True, 'value': True})) # (1)! -#> {'id': '1234567890'} -``` - -1. `value` excluded from the output because it excluded in `Field`. - -That being said, setting `exclude` on the field constructor (`Field(exclude=True)`) does not take priority -over the `exclude_unset`, `exclude_none`, and `exclude_default` parameters on `model_dump` and `model_dump_json`: - -```python -from typing import Optional +The special key `'__all__'` can be used to apply an exclusion/inclusion pattern to all members: -from pydantic import BaseModel, Field - - -class Person(BaseModel): - name: str - age: Optional[int] = Field(None, exclude=False) - - -person = Person(name='Jeremy') - -print(person.model_dump()) -#> {'name': 'Jeremy', 'age': None} -print(person.model_dump(exclude_none=True)) # (1)! -#> {'name': 'Jeremy'} -print(person.model_dump(exclude_unset=True)) # (2)! -#> {'name': 'Jeremy'} -print(person.model_dump(exclude_defaults=True)) # (3)! -#> {'name': 'Jeremy'} -``` - -1. `age` excluded from the output because `exclude_none` was set to `True`, and `age` is `None`. -2. `age` excluded from the output because `exclude_unset` was set to `True`, and `age` was not set in the Person constructor. -3. `age` excluded from the output because `exclude_defaults` was set to `True`, and `age` takes the default value of `None`. - -## Serialization Context - -You can pass a context object to the serialization methods which can be accessed from the `info` -parameter to decorated serializer functions. This is useful when you need to dynamically update the -serialization behavior during runtime. For example, if you wanted a field to be dumped depending on -a dynamically controllable set of allowed values, this could be done by passing the allowed values -by context: - -```python -from pydantic import BaseModel, SerializationInfo, field_serializer - - -class Model(BaseModel): - text: str - - @field_serializer('text') - def remove_stopwords(self, v: str, info: SerializationInfo): - context = info.context - if context: - stopwords = context.get('stopwords', set()) - v = ' '.join(w for w in v.split() if w.lower() not in stopwords) - return v - - -model = Model.model_construct(**{'text': 'This is an example document'}) -print(model.model_dump()) # no context -#> {'text': 'This is an example document'} -print(model.model_dump(context={'stopwords': ['this', 'is', 'an']})) -#> {'text': 'example document'} -print(model.model_dump(context={'stopwords': ['document']})) -#> {'text': 'This is an example'} +```python {group="advanced-include-exclude"} +print(user.model_dump(exclude={'hobbies': {'__all__': {'info'}}})) +#> {'hobbies': [{'name': 'Programming'}, {'name': 'Gaming'}]} ``` -Similarly, you can [use a context for validation](../concepts/validators.md#validation-context). +### Excluding and including fields based on their value -## `model_copy(...)` - -??? api "API Documentation" - [`pydantic.main.BaseModel.model_copy`][pydantic.main.BaseModel.model_copy]
+When using the [serialization methods](#serializing-data), it is possible to exclude fields based on their value, +using the following parameters: -`model_copy()` allows models to be duplicated (with optional updates), which is particularly useful when working with frozen models. +* `exclude_defaults`: Exclude all fields whose value compares equal to the equality (`==`) comparison operator. +* `exclude_none`: Exclude all fields whose value is `None`. +* `exclude_unset`: Pydantic keeps track of fields that were *explicitly* set during instantiation (using the + [`model_fields_set`][pydantic.BaseModel.model_fields_set] property). Using `exclude_unset`, any field that + was populated using the default value will be excluded: -Example: + ```python {group="exclude-unset"} + from pydantic import BaseModel -```python -from pydantic import BaseModel + class UserModel(BaseModel): + name: str + age: int = 18 -class BarModel(BaseModel): - whatever: int + user = UserModel(name='John') + print(user.model_fields_set) + #> {'name'} -class FooBarModel(BaseModel): - banana: float - foo: str - bar: BarModel + print(user.model_dump(exclude_unset=True)) + #> {'name': 'John'} + ``` + Note that altering a field *after* the instance have been created will remove it from the unset fields: -m = FooBarModel(banana=3.14, foo='hello', bar={'whatever': 123}) + ```python {group="exclude-unset"} + user.age = 21 -print(m.model_copy(update={'banana': 0})) -#> banana=0 foo='hello' bar=BarModel(whatever=123) -print(id(m.bar) == id(m.model_copy().bar)) -#> True -# normal copy gives the same object reference for bar -print(id(m.bar) == id(m.model_copy(deep=True).bar)) -#> False -# deep copy gives a new object reference for `bar` -``` + print(user.model_dump(exclude_unset=True)) + #> {'name': 'John', 'age': 21} + ``` diff --git a/docs/concepts/validators.md b/docs/concepts/validators.md index 41de519e28e..7a605aa88d2 100644 --- a/docs/concepts/validators.md +++ b/docs/concepts/validators.md @@ -315,7 +315,7 @@ In its simplest form, a field validator is a callable taking the value to be val error. {#field-wrap-validator} - Such validators must be defined with a **mandatory** extra `handler` parameter: a callable taking the value to be validated + Such validators must be defined with a **mandatory** extra *handler* parameter: a callable taking the value to be validated as an argument. Internally, this handler will delegate validation of the value to Pydantic. You are free to wrap the call to the handler in a [`try..except`][handling exceptions] block, or not call it at all. @@ -453,8 +453,8 @@ Here are a couple additional notes about the decorator usage: `'*'` as the field name argument. * By default, the decorator will ensure the provided field name(s) are defined on the model. If you want to disable this check during class creation, you can do so by passing `False` to the `check_fields` argument. - This is useful when the field validator is defined on a base class, and the field is expected to be set - on subclasses. + This is useful when the field validator is defined on a base class, and the field is expected to exist on + subclasses. ## Model validators @@ -600,7 +600,7 @@ Both the field and model validators callables (in all modes) can optionally take * [already validated data](#validation-data) * [user defined context](#validation-context) * the current validation mode: either `'python'` or `'json'` (see the [`mode`][pydantic.ValidationInfo.mode] property) -* the current field name (see the [`field_name`][pydantic.ValidationInfo.field_name] property). +* the current field name, if using a [field validator](#field-validators) (see the [`field_name`][pydantic.ValidationInfo.field_name] property). ### Validation data diff --git a/docs/migration.md b/docs/migration.md index 3991c0210cb..1674170f574 100644 --- a/docs/migration.md +++ b/docs/migration.md @@ -169,7 +169,7 @@ to help ease migration, but calling them will emit `DeprecationWarning`s. [`@model_serializer`](api/functional_serializers.md#pydantic.functional_serializers.model_serializer), and [`@computed_field`](api/fields.md#pydantic.fields.computed_field) decorators, which each address various shortcomings from Pydantic V1. - * See [Custom serializers](concepts/serialization.md#custom-serializers) for the usage docs of these new decorators. + * See [Custom serializers](concepts/serialization.md#serializers) for the usage docs of these new decorators. * Due to performance overhead and implementation complexity, we have now deprecated support for specifying `json_encoders` in the model config. This functionality was originally added for the purpose of achieving custom serialization logic, and we think the new serialization decorators are a better choice in most common scenarios. @@ -177,8 +177,7 @@ to help ease migration, but calling them will emit `DeprecationWarning`s. model. In V1, we would always include all fields from the subclass instance. In V2, when we dump a model, we only include the fields that are defined on the annotated type of the field. This helps prevent some accidental security bugs. You can read more about this (including how to opt out of this behavior) in the - [Subclass instances for fields of BaseModel, dataclasses, TypedDict](concepts/serialization.md#subclass-instances-for-fields-of-basemodel-dataclasses-typeddict) - section of the model exporting docs. + [relevant section](concepts/serialization.md#subclasses-of-model-like-types) of the model exporting docs. * `GetterDict` has been removed as it was just an implementation detail of `orm_mode`, which has been removed. * In many cases, arguments passed to the constructor will be **copied** in order to perform validation and, where necessary, coercion. This is notable in the case of passing mutable objects as arguments to a constructor. diff --git a/docs/why.md b/docs/why.md index 8a4d32c733d..231ee3f064d 100644 --- a/docs/why.md +++ b/docs/why.md @@ -371,7 +371,8 @@ Functional validators and serializers, as well as a powerful protocol for custom ``` !!! tip "Learn more" - See the documentation on [validators](concepts/validators.md), [custom serializers](concepts/serialization.md#custom-serializers), and [custom types](concepts/types.md#custom-types). + See the documentation on [validators](concepts/validators.md), [custom serializers](concepts/serialization.md#serializers), + and [custom types](concepts/types.md#custom-types). ## Ecosystem diff --git a/pydantic/functional_serializers.py b/pydantic/functional_serializers.py index ba2f342b8da..d67773cbdb4 100644 --- a/pydantic/functional_serializers.py +++ b/pydantic/functional_serializers.py @@ -231,6 +231,7 @@ def field_serializer( def field_serializer( *fields: str, mode: Literal['plain', 'wrap'] = 'plain', + # TODO PEP 747 (grep for 'return_type' on the whole code base): return_type: Any = PydanticUndefined, when_used: WhenUsed = 'always', check_fields: bool | None = None, @@ -260,7 +261,7 @@ def serialize_courses_in_order(self, courses: Set[str]): #> {"name":"Jane","courses":["Chemistry","English","Math"]} ``` - See [Custom serializers](../concepts/serialization.md#custom-serializers) for more information. + See [the usage documentation](../concepts/serialization.md#serializers) for more information. Four signatures are supported: @@ -391,7 +392,7 @@ def serialize_model(self): - `(self, nxt: SerializerFunctionWrapHandler)` - `(self, nxt: SerializerFunctionWrapHandler, info: SerializationInfo)` - See [Custom serializers](../concepts/serialization.md#custom-serializers) for more information. + See [the usage documentation](../concepts/serialization.md#serializers) for more information. Args: f: The function to be decorated. @@ -422,15 +423,19 @@ def dec(f: ModelSerializer) -> _decorators.PydanticDescriptorProxy[Any]: if TYPE_CHECKING: SerializeAsAny = Annotated[AnyType, ...] # SerializeAsAny[list[str]] will be treated by type checkers as list[str] - """Force serialization to ignore whatever is defined in the schema and instead ask the object - itself how it should be serialized. - In particular, this means that when model subclasses are serialized, fields present in the subclass - but not in the original schema will be included. + """Annotation used to mark a type as having duck-typing serialization behavior. + + See [usage documentation](../concepts/serialization.md#serializing-with-duck-typing) for more details. """ else: @dataclasses.dataclass(**_internal_dataclass.slots_true) - class SerializeAsAny: # noqa: D101 + class SerializeAsAny: + """Annotation used to mark a type as having duck-typing serialization behavior. + + See [usage documentation](../concepts/serialization.md#serializing-with-duck-typing) for more details. + """ + def __class_getitem__(cls, item: Any) -> Any: return Annotated[item, SerializeAsAny()] diff --git a/pydantic/main.py b/pydantic/main.py index fde9d26bab0..0c510896651 100644 --- a/pydantic/main.py +++ b/pydantic/main.py @@ -386,7 +386,7 @@ def model_construct(cls, _fields_set: set[str] | None = None, **values: Any) -> def model_copy(self, *, update: Mapping[str, Any] | None = None, deep: bool = False) -> Self: """!!! abstract "Usage Documentation" - [`model_copy`](../concepts/serialization.md#model_copy) + [`model_copy`](../concepts/models.md#model-copy) Returns a copy of the model. @@ -435,7 +435,7 @@ def model_dump( serialize_as_any: bool = False, ) -> dict[str, Any]: """!!! abstract "Usage Documentation" - [`model_dump`](../concepts/serialization.md#modelmodel_dump) + [`model_dump`](../concepts/serialization.md#python-mode) Generate a dictionary representation of the model, optionally specifying which fields to include or exclude. @@ -494,7 +494,7 @@ def model_dump_json( serialize_as_any: bool = False, ) -> str: """!!! abstract "Usage Documentation" - [`model_dump_json`](../concepts/serialization.md#modelmodel_dump_json) + [`model_dump_json`](../concepts/serialization.md#json-mode) Generates a JSON representation of the model using Pydantic's `to_json` method. diff --git a/pydantic/version.py b/pydantic/version.py index 9ce824ee013..ad439e95fe7 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -66,7 +66,7 @@ def version_info() -> str: def check_pydantic_core_version() -> bool: """Check that the installed `pydantic-core` dependency is compatible.""" # Keep this in sync with the version constraint in the `pyproject.toml` dependencies: - return __pydantic_core_version__ == '2.35.1' + return __pydantic_core_version__ == '2.35.2' def parse_mypy_version(version: str) -> tuple[int, int, int]: diff --git a/pyproject.toml b/pyproject.toml index f44eca72f0c..ecc004ff096 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,7 +48,7 @@ dependencies = [ 'typing-extensions>=4.13.0', 'annotated-types>=0.6.0', # Keep this in sync with the version in the `check_pydantic_core_version()` function: - 'pydantic-core==2.35.1', + 'pydantic-core==2.35.2', 'typing-inspection>=0.4.0', ] dynamic = ['version', 'readme'] diff --git a/uv.lock b/uv.lock index 17492226012..6ef9dbef022 100644 --- a/uv.lock +++ b/uv.lock @@ -1790,7 +1790,7 @@ typechecking = [ requires-dist = [ { name = "annotated-types", specifier = ">=0.6.0" }, { name = "email-validator", marker = "extra == 'email'", specifier = ">=2.0.0" }, - { name = "pydantic-core", specifier = "==2.35.1" }, + { name = "pydantic-core", specifier = "==2.35.2" }, { name = "typing-extensions", specifier = ">=4.13.0" }, { name = "typing-inspection", specifier = ">=0.4.0" }, { name = "tzdata", marker = "python_full_version >= '3.9' and sys_platform == 'win32' and extra == 'timezone'" }, @@ -1887,119 +1887,119 @@ typechecking = [ [[package]] name = "pydantic-core" -version = "2.35.1" +version = "2.35.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/de/b1/44463b3e108acca6678ce1eb516998df704dd4005e289091d57bde89ede7/pydantic_core-2.35.1.tar.gz", hash = "sha256:54d93282d8307dcd504a645326b92414364ff75c0f3909bdf00016c82f66c96c", size = 437737, upload-time = "2025-06-11T12:28:19.819Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/df/ae4924970a0a51443ab1f9ce93247fc3c7bb350c4b6889f25fe998baab5b/pydantic_core-2.35.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:8b647419a794028748bc065108f7868b675346fbcd817e1112d874028feb1f67", size = 2096817, upload-time = "2025-06-11T12:25:05.467Z" }, - { url = "https://files.pythonhosted.org/packages/c2/14/bd4edc676ba388bee7cc2f55ac46bded27a6b7d6361ab8e6ee2cd06f1d61/pydantic_core-2.35.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5acd0bba05903caea01613fad88dac5bcf1e76f845bbfcdcf6be493d5053a480", size = 1860252, upload-time = "2025-06-11T12:25:08.194Z" }, - { url = "https://files.pythonhosted.org/packages/15/d9/c977a397348b094d46a65439fde5617637addfd006d035d1b570fb197390/pydantic_core-2.35.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b997d3e48d87d26dbd7fb39e11241dde4c504d976dfcca6d66c095f598903fc", size = 1950402, upload-time = "2025-06-11T12:25:09.436Z" }, - { url = "https://files.pythonhosted.org/packages/c7/36/5c23e89022707e12e5604a181f5b360faaf6344005ee3053565aae62d512/pydantic_core-2.35.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4fc43c35dad95517acf0c9891c7b97aba87e4c4ab665f243ccb91a7b1a76eb1a", size = 2028640, upload-time = "2025-06-11T12:25:11.024Z" }, - { url = "https://files.pythonhosted.org/packages/1f/5e/973991a288599a1809e21f2cbf1c0f5d09855739c6bcfff423dcb357c34b/pydantic_core-2.35.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed71b6190a6d93bc86790d267848853610ceae74aa41b88782b15d0ef98e2ab2", size = 2213935, upload-time = "2025-06-11T12:25:12.279Z" }, - { url = "https://files.pythonhosted.org/packages/6a/44/e4087819cc29e742ad03fd12fdef416122c34f82d415a46316dd7006d608/pydantic_core-2.35.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c4a1749091b8d08585ea958f26e339a5dd41451c4fa4bad861a366f3b513d679", size = 2304104, upload-time = "2025-06-11T12:25:13.517Z" }, - { url = "https://files.pythonhosted.org/packages/e9/34/976d89f213b95d36e2279da599f5aad97453bf6b69e44e50a7d51a0260d5/pydantic_core-2.35.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e828e04224b0f4bb16afe8426af591ab58bb8a2e978e9c3bfc7bab28c461a49", size = 2016781, upload-time = "2025-06-11T12:25:14.829Z" }, - { url = "https://files.pythonhosted.org/packages/b1/6d/b39d177295c7c14bd002b2c40bf1436f087b7d238b3c6016eb385cbea2ad/pydantic_core-2.35.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e45d2835a7c5c1eb63b6cbd26096a43dc7a302b6b8592fc1c0446b877a9c50ef", size = 2164416, upload-time = "2025-06-11T12:25:16.364Z" }, - { url = "https://files.pythonhosted.org/packages/25/ec/749552cca2cd0f848b0af83a8af5390009f194f588fde78831aa037c5303/pydantic_core-2.35.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1d36c6885bbe50151b0f6dc6dffa405bbe548e9b02b517b7e84f2cf30a4ee128", size = 2127398, upload-time = "2025-06-11T12:25:17.98Z" }, - { url = "https://files.pythonhosted.org/packages/62/5b/03a97599356b305ba1b6db3bd97a03d2d136a8b55edf7c1d9b722d417d18/pydantic_core-2.35.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:379bf304d6bfc83cfb6bfff093888992ac2a484bfa839629e4862058263ff54c", size = 2289528, upload-time = "2025-06-11T12:25:19.269Z" }, - { url = "https://files.pythonhosted.org/packages/1f/ac/f44654b4dc499526b9f5ef16f46531c4bf2f251bda2cdab41b092e46cbc7/pydantic_core-2.35.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f1395b268c825e48571c609edc7540e294f20a85b44e2a195d9cb3d53a0bdccf", size = 2307950, upload-time = "2025-06-11T12:25:20.561Z" }, - { url = "https://files.pythonhosted.org/packages/30/51/04c44bc7062c35da12a1e888bdddca463b3d684ecd0ffd4c774a24e1f94f/pydantic_core-2.35.1-cp310-cp310-win32.whl", hash = "sha256:8d2a5a9612931a8adf4d399ec97cc5e47769611bef5d1af81cedb45b6bebee9e", size = 1947692, upload-time = "2025-06-11T12:25:21.971Z" }, - { url = "https://files.pythonhosted.org/packages/7f/ff/8e2f256612b8e3eb5c4923b6751da223f0209dab2b5e26ab104dbdda0939/pydantic_core-2.35.1-cp310-cp310-win_amd64.whl", hash = "sha256:257776e5d7a80abee5ae1124d7d82f363bc2bddc1e1eab13d3d957ab7d3d099a", size = 1972598, upload-time = "2025-06-11T12:25:23.254Z" }, - { url = "https://files.pythonhosted.org/packages/16/fa/72d083424212bf0562892ea3fb5f9ba902ea0759ec5b5542bc44d739573e/pydantic_core-2.35.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:1890e19f243e83a663f75f17cde380cc06c4d210a995ef84ed54135624b95cae", size = 2096628, upload-time = "2025-06-11T12:25:24.602Z" }, - { url = "https://files.pythonhosted.org/packages/b5/5a/520f474ac9c21ba96320045c02b61b4b5ee0233605b4bbedad8c9d53f422/pydantic_core-2.35.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:45656f289c2a4e8b58e6838d844c270c8d7cf770bf7bc51f41baf22cd65b4d2d", size = 1857169, upload-time = "2025-06-11T12:25:26.045Z" }, - { url = "https://files.pythonhosted.org/packages/ef/c9/c6b633bdc68f2035f18f66a57957e3a1b46cb5ca26aa0f8a6db3f1d7552c/pydantic_core-2.35.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be957688fbd6cd88d0b281564d8c887f65fa04ec3c96c7dcbd25ff209587e7c8", size = 1950266, upload-time = "2025-06-11T12:25:27.83Z" }, - { url = "https://files.pythonhosted.org/packages/3f/7d/3a5d0443e341f5aa61459cd15c883d7d9600f9728ad408c30e329900121d/pydantic_core-2.35.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:577d407a8506d0ecd324c2067fc08f3ae4e6df4777f3378eadbbb30f92c6481d", size = 2029310, upload-time = "2025-06-11T12:25:29.154Z" }, - { url = "https://files.pythonhosted.org/packages/6d/14/35f1d6070afb9e720d1102943fb8a9ca826d8efc2ddc1aa2654369b6b6c9/pydantic_core-2.35.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0687de276b0de329faa2d7697148343c72b61d41d11b58e55af3ded338554c0", size = 2214447, upload-time = "2025-06-11T12:25:30.933Z" }, - { url = "https://files.pythonhosted.org/packages/be/86/620e144ffe576a728655b04b18a8ffc816fc61774f29fd125cc260feabaa/pydantic_core-2.35.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72e80d1b60b88697d7802456e6225e61b82667fbb00fa7f3b90505fec0a5f0d8", size = 2303007, upload-time = "2025-06-11T12:25:32.289Z" }, - { url = "https://files.pythonhosted.org/packages/7c/6c/c877b45f1463e37c11d045404e684fe93c4c44003e072df8ca8d3792e0c7/pydantic_core-2.35.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7513301947ec044bc30b94f98370b74757a63f557eea88141f6407aab5b738e9", size = 2014661, upload-time = "2025-06-11T12:25:33.937Z" }, - { url = "https://files.pythonhosted.org/packages/4b/95/79c414fe8da493cdeed68f1867424d5bb96d366f7742e161bc8d37e54893/pydantic_core-2.35.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bac4a92df466497b671538400c5b4acdf4eb6800cc07df2e410c07ac5c3adc70", size = 2165426, upload-time = "2025-06-11T12:25:35.689Z" }, - { url = "https://files.pythonhosted.org/packages/b6/c6/bd864b03c412cf87efa4a1f8ffb3118cc170939e59ad6d98dc2268ea3e43/pydantic_core-2.35.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0076916204e37c7d780349f84843d8aeaf7988851adfa4210631d2b91f8a35b3", size = 2126622, upload-time = "2025-06-11T12:25:39.248Z" }, - { url = "https://files.pythonhosted.org/packages/bd/e7/0be66d3b0f9617900fe39986337a0bf3b5e6c20be78d0ca7a577e2eb2e7b/pydantic_core-2.35.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:26ab8c37358fdffb524f7c35ec1722057a0c05f3f8ed00e853c4ebd56fc19e28", size = 2290530, upload-time = "2025-06-11T12:25:40.57Z" }, - { url = "https://files.pythonhosted.org/packages/10/eb/225f0f8193bf11bf060524a8bfaec12857d2d1273647c90b7962d1adbe6b/pydantic_core-2.35.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:58d52a64d185575326772a0db02d42a535f8ea3146ac1e07b0d88ed53f2389fa", size = 2307306, upload-time = "2025-06-11T12:25:41.902Z" }, - { url = "https://files.pythonhosted.org/packages/5b/73/1a9bb502477689ae05a4a237b1ebc60a1e4e3ee7718a48d98cb397adf9d0/pydantic_core-2.35.1-cp311-cp311-win32.whl", hash = "sha256:805c43fb6d06da34eb080f380f62e3f511fed6be8eca8b277e7947bf47a0f9ca", size = 1947651, upload-time = "2025-06-11T12:25:43.387Z" }, - { url = "https://files.pythonhosted.org/packages/ee/79/ac9a7c603e50d8972c431a2293ecb437860ee34b4fed110988f9da1851fb/pydantic_core-2.35.1-cp311-cp311-win_amd64.whl", hash = "sha256:803902755bcef766c25afee0a7b3f5e709f5445f387888087cb0bffd99ded9e6", size = 1971009, upload-time = "2025-06-11T12:25:44.95Z" }, - { url = "https://files.pythonhosted.org/packages/9b/30/0502f8eee3db6463c9bf753b0d6ba90e04d2190a76ca49901a8a28cc8f94/pydantic_core-2.35.1-cp311-cp311-win_arm64.whl", hash = "sha256:9b81bf0b4903ca0b2e884b2252c941f37145973fa193fa6099f0acf18584af2f", size = 1952792, upload-time = "2025-06-11T12:25:46.429Z" }, - { url = "https://files.pythonhosted.org/packages/79/e0/db8b2501d44d630a07e650322eea6af6e29bce107852f45a722f1abc0f6c/pydantic_core-2.35.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d9fd22bdb2dc3d18660ee36af43ea198c1296011d16cbbd4ee6e5c3d07fcabf0", size = 2066136, upload-time = "2025-06-11T12:25:47.834Z" }, - { url = "https://files.pythonhosted.org/packages/69/02/425e9fe79276a137d13aca5279bd241cb71a9e33cd48b82cf4e9b8fd88df/pydantic_core-2.35.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2893800628d5cf15f669f084cc44d8bfad9fe97992453d0d678b29f635aa6019", size = 1856402, upload-time = "2025-06-11T12:25:49.469Z" }, - { url = "https://files.pythonhosted.org/packages/f6/12/8f7a3a211c8c4bb6c3fab628ee0214cbb17414bac34bad5d9d2829d2d0d9/pydantic_core-2.35.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ffb0045571ca255949c9e47068cda7b511fda24b8c89d1334afa521ff9ff77", size = 1923269, upload-time = "2025-06-11T12:25:51.339Z" }, - { url = "https://files.pythonhosted.org/packages/b7/a2/af13d877eac6ef7b95a9405427fd0ef3ead279646a5d9149376c8356902d/pydantic_core-2.35.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4927a4795bf00a770cb5d1acc086002f5a5b3d6ec80839bb44e3d99896136e5b", size = 2005723, upload-time = "2025-06-11T12:25:52.76Z" }, - { url = "https://files.pythonhosted.org/packages/90/a9/76eaa613b36e0fbf7f60550045181930c8b1d19afe52163f088ff987cbd3/pydantic_core-2.35.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21dce7e75e47859239c5e64e6db67af78045112e5fc0923c2610ecc2a44c5eb4", size = 2176167, upload-time = "2025-06-11T12:25:54.157Z" }, - { url = "https://files.pythonhosted.org/packages/84/5d/6ee15214dfcc807de4c8790da6e47a3d1b0bbb4fbbc76fe953c0c8cdc600/pydantic_core-2.35.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b030ce1cb2b6cd111b1f46f05eff6c5eec82df738f3cdaef304118806afd9292", size = 2292206, upload-time = "2025-06-11T12:25:56.036Z" }, - { url = "https://files.pythonhosted.org/packages/d7/d9/559fa50241070ef9945f80f8b6feca55956acf9d0411ebce776791d410a2/pydantic_core-2.35.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68db1ac1fd2a35a2967e696cb82f5b8d8c780b80bf2f2d9e9aeb2d7d3cd6d2ae", size = 2022850, upload-time = "2025-06-11T12:25:57.481Z" }, - { url = "https://files.pythonhosted.org/packages/e7/71/db3eda424d9b702615c77ae50df14f17f5189a9198274aec994f8da30e23/pydantic_core-2.35.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2daea8e75b3d86d385ef351e06e575fd0e253620d06154b557c274bd53d09ab9", size = 2145298, upload-time = "2025-06-11T12:25:59.36Z" }, - { url = "https://files.pythonhosted.org/packages/5e/02/810723db2f81ebb9c62db6680d64aa7778180b11c476751cdbb82736d573/pydantic_core-2.35.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:45b123e9dd870687f001a3b73db7285ba8077e15b6f1523ea604ec8cfd235784", size = 2102544, upload-time = "2025-06-11T12:26:00.893Z" }, - { url = "https://files.pythonhosted.org/packages/ce/dc/930c5baa8dc60f0f8307eb3f1f58059065d461a3ab1f1d607402485c7fe2/pydantic_core-2.35.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:bdc4bee29f211ed8ee5e417b0d6ce002aafe4bc4d7a849670a19cd232428978a", size = 2267755, upload-time = "2025-06-11T12:26:02.382Z" }, - { url = "https://files.pythonhosted.org/packages/49/47/bb245d6c22246885737b5ad929bec3e29a7d8078a4f734d3da741aab694d/pydantic_core-2.35.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3812567e431d00e6cbdf3d066abeb488ec4b6135395d2280d99f630c9acba8fa", size = 2286666, upload-time = "2025-06-11T12:26:03.874Z" }, - { url = "https://files.pythonhosted.org/packages/a5/bc/cdf079707ddf9d7a1828771a4c69d4381190f28e4bc94800e01ad3155db9/pydantic_core-2.35.1-cp312-cp312-win32.whl", hash = "sha256:b8098c00443d3dcdb33f3c6a0079c52eb721461d4429cae6e3165118fe5ecc46", size = 1921629, upload-time = "2025-06-11T12:26:05.381Z" }, - { url = "https://files.pythonhosted.org/packages/ac/15/b17c22ade13555a66c1017f1d610581473c648bffaaa3b3bfc386463ad60/pydantic_core-2.35.1-cp312-cp312-win_amd64.whl", hash = "sha256:44f8acc6108726cc90bcd08605d610e0b49736636854cf74eb2e3ce1df7242a8", size = 1980769, upload-time = "2025-06-11T12:26:07.365Z" }, - { url = "https://files.pythonhosted.org/packages/ae/7a/fb20fa55822c2808b7d3ee7350925271b7be41e29d2f9b39d6d3bd1cc14a/pydantic_core-2.35.1-cp312-cp312-win_arm64.whl", hash = "sha256:bba5c93dd92d8dd1cb5b95a19f4f27a353e5141694537781fd0359085ebf1e2d", size = 1933830, upload-time = "2025-06-11T12:26:09.295Z" }, - { url = "https://files.pythonhosted.org/packages/66/a1/9bbf3fc49322117084bc5e1aa510a1074b4d7eb5ced47b65dcbb8f6ae467/pydantic_core-2.35.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:461f2f770bab73a54cd4fa55da27c90f3840a6cd50ff77995642ebf3b9bad56c", size = 2071386, upload-time = "2025-06-11T12:26:10.847Z" }, - { url = "https://files.pythonhosted.org/packages/b7/df/1277a938e7a58e0865ebd374e8c6277b176d36b63f2935ef45d6f929ce4d/pydantic_core-2.35.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:767a6dadf1fcc6b7e41dd6d4920621256e0a477fb16f7e7fcea7dd1b64452c23", size = 1855096, upload-time = "2025-06-11T12:26:12.81Z" }, - { url = "https://files.pythonhosted.org/packages/b4/70/e4454c6b971982c3a0be7dcfb342c9ae096ce16e13e581318b98a1783ec5/pydantic_core-2.35.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c48328867d681916394731c62f479677dde07fc264488d492eefb221eece96e", size = 1926903, upload-time = "2025-06-11T12:26:14.349Z" }, - { url = "https://files.pythonhosted.org/packages/d4/2a/c1fa172ecb6fc8005c2f9b4aa83d2b36b3789f72507ec9dbe4f4cf7c4100/pydantic_core-2.35.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8f53822e5e2633fcff4fa07515d3f1b77ead733e9b9e98178cc1d625896623f2", size = 2014882, upload-time = "2025-06-11T12:26:15.889Z" }, - { url = "https://files.pythonhosted.org/packages/8a/1e/c3a08a435bbf860f2bf59b8fa8f0857fed5fb0b42233142a8d549e49cff9/pydantic_core-2.35.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:437726d7acbcf504e92ef817c7845c4230e06eb5793f49db0729d148543db9a9", size = 2179854, upload-time = "2025-06-11T12:26:17.492Z" }, - { url = "https://files.pythonhosted.org/packages/c3/1e/eca89d4dd50f6bb066d03cd23a055b05842a9fe03ab9f8283f0b3d7d60ab/pydantic_core-2.35.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b409369664f49beb41a3c2c92d0e1af4729f8884550d0b01dd81463d3c22c7", size = 2290727, upload-time = "2025-06-11T12:26:21.021Z" }, - { url = "https://files.pythonhosted.org/packages/a9/b7/f9a5dcb090ea6b7c5db0bfbbabb5ea1e327f1b3c485719b8095333b83e36/pydantic_core-2.35.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:634643a71266f1f49587aa6a675d05a0ad0f7ab92e58c5db801330f88bbe7d21", size = 2021039, upload-time = "2025-06-11T12:26:22.782Z" }, - { url = "https://files.pythonhosted.org/packages/6e/1c/e06fc0769e753b486bf4521c1d6d8275e75a9569e50d49b4996eea8c5269/pydantic_core-2.35.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c7e932521333b8529c9b41c7b49016c1a58ddd9f7b1370e6edf06d4f64ae989e", size = 2151451, upload-time = "2025-06-11T12:26:24.394Z" }, - { url = "https://files.pythonhosted.org/packages/2f/16/d8ddab7a0b33c61de7ed2c6e08a83e45f257206362b4dbe0b26b42060ee7/pydantic_core-2.35.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:1afc5a25f2e11c790f2a244538c42fd67b870cf070dac509996801f2455c17a2", size = 2105668, upload-time = "2025-06-11T12:26:26.661Z" }, - { url = "https://files.pythonhosted.org/packages/09/8e/8d6b13835884bfdb5c739ffe9c209746ca47a1fbf029b3dec89b855764ec/pydantic_core-2.35.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:cbf218e9589a5d4f1469f7af8a4bd8721d3db3bb1ef06bb001b54f3cc138532a", size = 2276617, upload-time = "2025-06-11T12:26:28.398Z" }, - { url = "https://files.pythonhosted.org/packages/23/01/3e4b49ee9186e56cbf183f23956a1fc9de538ab1f84624da5e11f2ffbc8b/pydantic_core-2.35.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:6431cb2c129bfb419ffef43cc915f13b2b855b80351b17fa6d0174908fb5dbd2", size = 2292685, upload-time = "2025-06-11T12:26:29.984Z" }, - { url = "https://files.pythonhosted.org/packages/26/ef/e4aaeb93bee1e8353e7bd2cf510cc453bda271b0c2db0502210ca3129145/pydantic_core-2.35.1-cp313-cp313-win32.whl", hash = "sha256:dbd775058ce2949bbdddc5e025fa7f5b52589f5c3254a6b6334ca60239e4ff56", size = 1930953, upload-time = "2025-06-11T12:26:31.713Z" }, - { url = "https://files.pythonhosted.org/packages/e7/d9/d34fb5d2ee0a19c27f7572076fbc3b716b27a9787f66beff57289c0f4e61/pydantic_core-2.35.1-cp313-cp313-win_amd64.whl", hash = "sha256:867fc87ec1c07e57eabbabce6fd63633f23977a2fac7606c66222d35d197b13e", size = 1980844, upload-time = "2025-06-11T12:26:33.602Z" }, - { url = "https://files.pythonhosted.org/packages/43/a8/a905194e9188b2580beebcd067b853e50e25a1888b21ef3c6c0a9adbd8d6/pydantic_core-2.35.1-cp313-cp313-win_arm64.whl", hash = "sha256:24005cd95198ca35b4d9a6b6d713502c3e2e9ec111abc99e4c69502618b2c6d8", size = 1940587, upload-time = "2025-06-11T12:26:35.763Z" }, - { url = "https://files.pythonhosted.org/packages/2a/0f/fb8a3bd86a09c6cc31c70f107a80cdd3536bdf5c7f6e23aa7d4bfd0ccc32/pydantic_core-2.35.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b8e69498fc8c1f6a9776779960da12d399a2a826d9f857723a022300dfdd9b4c", size = 1811516, upload-time = "2025-06-11T12:26:37.449Z" }, - { url = "https://files.pythonhosted.org/packages/db/9f/b97630373dc794c5463fab5df0942e6723f5096000be0fc4788aecd09bdd/pydantic_core-2.35.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26bf77255a1dc1d3f44927d35b64cd1034fba661b8740f00187378bd66bb0960", size = 1992413, upload-time = "2025-06-11T12:26:39.15Z" }, - { url = "https://files.pythonhosted.org/packages/a3/f9/ef42798818c247d9947ad24e3855ef4052bd2fcd6a3303aaf824618b127c/pydantic_core-2.35.1-cp313-cp313t-win_amd64.whl", hash = "sha256:ccf06a595368498a6be792b1b6f2ed3034423872657a1c84ff578825ec91cd89", size = 1944044, upload-time = "2025-06-11T12:26:40.906Z" }, - { url = "https://files.pythonhosted.org/packages/c5/6c/11aa67b2b3c19a473c851f4375ca6b8120a63a3783e2e89df2e1e52217ec/pydantic_core-2.35.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:549bf60752000998d2f894d142e632c3acdbcb1fa86cf365c7f7b7fb72d33cab", size = 2074973, upload-time = "2025-06-11T12:26:42.6Z" }, - { url = "https://files.pythonhosted.org/packages/ed/50/647acc440e5ec2eb72dfec111eec41e8c4e4e743ac549453d3b00d1aafdb/pydantic_core-2.35.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:5544fa4465f6c362d23120bed096436188217da43678617cc0958359049b816b", size = 1847944, upload-time = "2025-06-11T12:26:44.364Z" }, - { url = "https://files.pythonhosted.org/packages/a4/1e/675ef7b162321957633440cf753c294402dcfc2a31f2b1c5e055dcfadb21/pydantic_core-2.35.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16c2f3624b222a5f3f0db601c7982d991550682f248f2b299c8def6b29eca1c5", size = 1924902, upload-time = "2025-06-11T12:26:46.076Z" }, - { url = "https://files.pythonhosted.org/packages/4f/d8/9eea60bc8d556d5137026e2944ffe37b5f3846a69d432a9208e9f07bb78a/pydantic_core-2.35.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a4ae43172e78dcd84d99e484038f6f84f7c677b4e2b8df01deb7f022903bb07c", size = 2017394, upload-time = "2025-06-11T12:26:48.094Z" }, - { url = "https://files.pythonhosted.org/packages/5e/75/5b8b740be488225520e42dc090dcf9c52c7b5a98e5c37d3905104d56020c/pydantic_core-2.35.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d1f242aaaa2b8931108d9890eabd194c412e0b5a10651ed631f685d46987f2e", size = 2180462, upload-time = "2025-06-11T12:26:49.914Z" }, - { url = "https://files.pythonhosted.org/packages/72/d7/6487a0e5581767c1494913b34795c015834f69ddf810519058190b75cb2a/pydantic_core-2.35.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f30321014ea6ee252ebc43f848bae6bde6e379f689b1cdb38087ce57cd31be", size = 2294552, upload-time = "2025-06-11T12:26:51.672Z" }, - { url = "https://files.pythonhosted.org/packages/0e/b7/0575551861923caafc3a22c0eaeced8950e6df7b21f4aa93bc4d9810c3ce/pydantic_core-2.35.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8926dad1ac18f4668250ef62354b3535bd09869783511ddac0a0403dc90b10e7", size = 2017990, upload-time = "2025-06-11T12:26:53.408Z" }, - { url = "https://files.pythonhosted.org/packages/d9/bb/ad2c1d5ac08f7ef2009427ccfe4f50daa4332f114f997c63f659bf9a68c2/pydantic_core-2.35.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3c77ca9027604cb90471a45b642763478f337e477e9c3c9698c409d64303b70", size = 2153347, upload-time = "2025-06-11T12:26:55.2Z" }, - { url = "https://files.pythonhosted.org/packages/f0/df/dfcb2ed7454f177d6e068d586defaad1f4fff73823a1e185fd117daee7b1/pydantic_core-2.35.1-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:e48d89eb0fab2944362b387c6c942e48a735f1a6a90a8a77815c5410253cc4f7", size = 2104105, upload-time = "2025-06-11T12:26:56.983Z" }, - { url = "https://files.pythonhosted.org/packages/35/f8/553f0260b60eea962bdb49e4774522fdac3352504500ed0ad7c3e971299c/pydantic_core-2.35.1-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:8522ada751d21693d6758c7c5757de744fd62a91a374deb08dc173fb738655f7", size = 2279255, upload-time = "2025-06-11T12:26:58.85Z" }, - { url = "https://files.pythonhosted.org/packages/33/a6/41a3d82790c11880f2ca5a3a4e0c0c418b3b5101eac2ed0dfe0df5293ac5/pydantic_core-2.35.1-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:c8a1383d0a62622f9b1888e11b6c7e9ecd584d80e9e6fc2da0a8a1eec6365503", size = 2293867, upload-time = "2025-06-11T12:27:00.737Z" }, - { url = "https://files.pythonhosted.org/packages/00/99/9a0b6d814545944a9b7cccaf764a3745eb2da015ea46f1bb1606fbf36d21/pydantic_core-2.35.1-cp314-cp314-win32.whl", hash = "sha256:4d25858b79222eb8e0b3078858a2780f5e7a2b9742f8ba42308e6874b654b42e", size = 1933566, upload-time = "2025-06-11T12:27:02.528Z" }, - { url = "https://files.pythonhosted.org/packages/86/b5/97870eaad658cf5a501b008c07252ace6031b88b741c4e2afcf229740cc4/pydantic_core-2.35.1-cp314-cp314-win_amd64.whl", hash = "sha256:f57e0ab3db0ed2397b33ed88965f7aa71509bbeed7dee993555bb9194b57c5a0", size = 1975308, upload-time = "2025-06-11T12:27:04.362Z" }, - { url = "https://files.pythonhosted.org/packages/69/8b/557593ce15a5ab81eb0752428d697ee7ade497d3fce981f0611e1c919a70/pydantic_core-2.35.1-cp314-cp314-win_arm64.whl", hash = "sha256:c106e5c8377b7066232e7cb6e432bf5d94c55a135a082e160c29d8d350fcfdde", size = 1941096, upload-time = "2025-06-11T12:27:06.184Z" }, - { url = "https://files.pythonhosted.org/packages/60/e2/0320e3116098f39db38c64cc11cc948f757aa1524a5cbe815b3075f2e784/pydantic_core-2.35.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6a04af9b37d3be241a2f2b10c3db0abeaadaff818f8c96ff7ae9ad9ac78ab287", size = 1812480, upload-time = "2025-06-11T12:27:08.088Z" }, - { url = "https://files.pythonhosted.org/packages/9b/5d/49147336ab78db14c7d26685fb678d029fb6a47f2dbc5c4dccd1950e8f06/pydantic_core-2.35.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71c312eb422177818f31fed80e23606a02ab87f540327992b5cd10879a238ec8", size = 1992353, upload-time = "2025-06-11T12:27:09.962Z" }, - { url = "https://files.pythonhosted.org/packages/aa/90/35fd107cdffdadef00ea1f1e5288923e1f1df120abcbedc6d2854aa47378/pydantic_core-2.35.1-cp314-cp314t-win_amd64.whl", hash = "sha256:ae8fc5835a2e7134145a2f5f30a93a79a15ca2df140d9cff39b6a02d41834f8c", size = 1945328, upload-time = "2025-06-11T12:27:11.855Z" }, - { url = "https://files.pythonhosted.org/packages/ba/0e/bb8b9896313e20d0d346d2995d30421db7d0c1a3b3ee9229aa9913bc5bbd/pydantic_core-2.35.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:2db99237bbf87364e5d42d50b17234126b6f903f5183eb8a81efb9945c16878e", size = 2096856, upload-time = "2025-06-11T12:27:13.693Z" }, - { url = "https://files.pythonhosted.org/packages/a0/8d/ae5b382204a91d2e445714dd52caf318b7733c727d386b96b53f9347e809/pydantic_core-2.35.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3ff01c4690743e48a45d34f6dd038a2b05f5be2c7112aa68a8d6241483f5f153", size = 1913028, upload-time = "2025-06-11T12:27:15.576Z" }, - { url = "https://files.pythonhosted.org/packages/b3/c6/c8d9150642da8ba6d96cc6aaf628e146d6586d5753d4d7df006ffedcfb53/pydantic_core-2.35.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:945b99d199eea4e7bf13a3e0db4dfdfa90258b6890e4582c898dc6a8fa6ddc98", size = 1951188, upload-time = "2025-06-11T12:27:17.856Z" }, - { url = "https://files.pythonhosted.org/packages/c6/df/c1dab83bd64ac5ca0d69b539a5f575a1a51e9cecac9aba53818f7f97f9c2/pydantic_core-2.35.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ad47ce0ca62ac335c28a8f5ac5095dc9946776091a9381810933aa1aea7b5235", size = 2028941, upload-time = "2025-06-11T12:27:19.765Z" }, - { url = "https://files.pythonhosted.org/packages/45/b6/30a06882e504a6f3ad02d9bfa7fd439b8eef4ea00a2b3543faa2a37603a5/pydantic_core-2.35.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c85c72358aae138fcfa8ab1f6dfed37d4b6d948769856530bd1a2a8121d06a56", size = 2214758, upload-time = "2025-06-11T12:27:21.643Z" }, - { url = "https://files.pythonhosted.org/packages/96/86/6412d3504dcfcb5b09ef6547e84b7d39cca9e0592dee0bc947db50916b96/pydantic_core-2.35.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8cfcb78a0186eab12bee07af5c93fd043760fd88ee19bb55ba67f8234a6b73d", size = 2309010, upload-time = "2025-06-11T12:27:24.742Z" }, - { url = "https://files.pythonhosted.org/packages/3b/c3/c275c315c33b01dd29ba4a4799b12b85148bcf993c53f39372ba15581b87/pydantic_core-2.35.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3790afd8b75634ba8f998019883d63d0cd2750ad9825b2bf08295b7a84d3aba7", size = 2018712, upload-time = "2025-06-11T12:27:26.68Z" }, - { url = "https://files.pythonhosted.org/packages/ad/46/5f8a45477aa8661b6e9c9f92763b510a136d7d42030ebc66d46ca37d7f10/pydantic_core-2.35.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:69009e2f298c21d7e4387c3f4fb70e8e6056be56a413083c3865b53339beae6d", size = 2164608, upload-time = "2025-06-11T12:27:28.597Z" }, - { url = "https://files.pythonhosted.org/packages/28/f3/cfdff118bff7f0703d430b0d73f8581121872aa0afc6c1b886eecd0ef6c8/pydantic_core-2.35.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:dac412e47641df63180e2b402ae9ed83e5c5c224f88c38f7df792fa0353ffe9b", size = 2128057, upload-time = "2025-06-11T12:27:30.509Z" }, - { url = "https://files.pythonhosted.org/packages/c3/4b/9157b57570a93c059955a6d024b9ef706dd451041f208300ec3c744944be/pydantic_core-2.35.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:716e5c98a5ada34dbd05c6a39e14f993e86edfc9c199a945ce67c544333751d6", size = 2289865, upload-time = "2025-06-11T12:27:32.849Z" }, - { url = "https://files.pythonhosted.org/packages/d8/a2/5187ddf19999fb0efbdc417dadc1ce76e50043a1408ebc90d3fab0c70b5e/pydantic_core-2.35.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a40a8395f56a511a353f0b867bf728a39e19dc9eb16c99c7e5786b110451c4c6", size = 2308446, upload-time = "2025-06-11T12:27:34.764Z" }, - { url = "https://files.pythonhosted.org/packages/d2/d4/5f1b0340f5aa0618678b44238935d16b255ed0f2778ef630bebe8c189463/pydantic_core-2.35.1-cp39-cp39-win32.whl", hash = "sha256:c6aea20e870f9dc38a5b657d3f691768f1703d557d6dbe03888336b1e8896ab7", size = 1947659, upload-time = "2025-06-11T12:27:36.683Z" }, - { url = "https://files.pythonhosted.org/packages/a1/b7/35a313b741fd32f29d936d281bd4712230567941d3aec991e7628ed22f87/pydantic_core-2.35.1-cp39-cp39-win_amd64.whl", hash = "sha256:c09cc83b0bb2a1858993134e4d292cd3df7e054240cc3ddb86db5cdb8a6ee254", size = 1974346, upload-time = "2025-06-11T12:27:38.709Z" }, - { url = "https://files.pythonhosted.org/packages/d9/b6/6cefe81e58d119dd409bd6e39e44e8894da6de8e5fbd0303f8b890ac1199/pydantic_core-2.35.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d0d0eb401dcf8518d23ab8417bab789b54464dd748b9a8bd36444989d04b10cf", size = 2095437, upload-time = "2025-06-11T12:27:40.652Z" }, - { url = "https://files.pythonhosted.org/packages/81/2b/6ed393422d33c37f7792c76acd20a05ddda66a0212494031a9a772925a34/pydantic_core-2.35.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:3e8f3127c28f3ebe1fa807477a88607e1710720b6fc75454c5b35532b6161875", size = 1914563, upload-time = "2025-06-11T12:27:42.645Z" }, - { url = "https://files.pythonhosted.org/packages/17/a7/3253305cc2e8aef6c069fbbb34df85916f23d736e7fe10edbe840ab59303/pydantic_core-2.35.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29596424cf5890e45249c7b210dce07e49db6d8ba732ce5b93774f20058e8d90", size = 1951113, upload-time = "2025-06-11T12:27:44.68Z" }, - { url = "https://files.pythonhosted.org/packages/48/58/b8caed97556c422011ed6b5937a59fcf929be9fd76206e59c98d8c9f1fba/pydantic_core-2.35.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cb7d92170a2ee5734addebc68c8800146ecdb92bd17f416b22b998b42ceb075", size = 2138591, upload-time = "2025-06-11T12:27:46.835Z" }, - { url = "https://files.pythonhosted.org/packages/2d/f2/a9127f7c37a5d68cda715ae3879cfaa6c2ecbdbc430101df5e2f46c78a29/pydantic_core-2.35.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4a0ddee49f7ea6ae7ca96f4bd9500e2d43ea847cbd86a2383036f6641b2858ec", size = 2158957, upload-time = "2025-06-11T12:27:48.833Z" }, - { url = "https://files.pythonhosted.org/packages/2e/89/9fb1108e999352b8a92530cfcbe49b8eaf4be5e6503ef10585ed9616a088/pydantic_core-2.35.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:9ea864e96f5ca519573fb7527c210fc2250e24ce03c13b903ec4ec25a5ed13b8", size = 2126571, upload-time = "2025-06-11T12:27:50.826Z" }, - { url = "https://files.pythonhosted.org/packages/51/73/34a6e71cd1637620fd75a5d09b1154939ebb72b3154eacea395d8a9adf5d/pydantic_core-2.35.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:c57064f3a5139c52861cd2df67b91a09a6cb84da0fd0b41acf2f219caa8ebd02", size = 2289826, upload-time = "2025-06-11T12:27:53.197Z" }, - { url = "https://files.pythonhosted.org/packages/f1/45/f9ab68d14500384613b28b29e0bd8ebc0da750c23231ad19c28b5a0e1caa/pydantic_core-2.35.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d26792671413a35404f1c32f542a85d5b7c5b0d5f1b6581051e7404d7c73c8fb", size = 2309018, upload-time = "2025-06-11T12:27:55.19Z" }, - { url = "https://files.pythonhosted.org/packages/c1/83/93b912d0a1afc8fbfbab1512a058ab9652d2a6880116e6ec6fdb22741527/pydantic_core-2.35.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:934b9955053a3d788913767b298e0fd5053406fe4424553c1eeeab33ccd36aa8", size = 2130590, upload-time = "2025-06-11T12:27:57.225Z" }, - { url = "https://files.pythonhosted.org/packages/c4/27/e5a5f3bc8c3a8bf73ddf65335716b173100c0ba81795b45d4e54b6a71cb2/pydantic_core-2.35.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5ea03e36e9354613c59d0722c18fa14f49360a1a6127cebb1ea7d5d3f1ff11f7", size = 2096105, upload-time = "2025-06-11T12:27:59.65Z" }, - { url = "https://files.pythonhosted.org/packages/a2/7f/d1d7fdbf6018111f905ab3caffa565b7932e83b4ab9032ace0a386aa8a6a/pydantic_core-2.35.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:056ea807cc16c5d95ef99ba4d0f2142704fd0e0431143f4866ce188c6071a497", size = 1915042, upload-time = "2025-06-11T12:28:01.812Z" }, - { url = "https://files.pythonhosted.org/packages/3e/5f/e87aab572df29fb4c0691d8961358f8f3e0c74de0cdc01badfff9cc3353f/pydantic_core-2.35.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cba3b38293e6c83877cf080f7a6018c0829cf49ae7a774256709b86733676eb", size = 1950422, upload-time = "2025-06-11T12:28:03.899Z" }, - { url = "https://files.pythonhosted.org/packages/8c/7d/e44cd7d31d8356515a3e8ecba6b50cfb1421015ae8c684b0dfac409e58eb/pydantic_core-2.35.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd6de8f5480f65d1d07b14df7279a58b4815f9c793ddab82d17acf3fedf54f3b", size = 2138095, upload-time = "2025-06-11T12:28:06.01Z" }, - { url = "https://files.pythonhosted.org/packages/7e/39/0eb8e09434812f2efacb081c313c553f59bbaced9bd335e129ba5fc21234/pydantic_core-2.35.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e2d18bf5ac8128739627b57e39584d339cd1af81e10479299e650026f9c30f2d", size = 2160415, upload-time = "2025-06-11T12:28:08.526Z" }, - { url = "https://files.pythonhosted.org/packages/07/d8/fef1e4e8ebb53ece9987a5287f6abc93d4fdb6a0adc304ce8bc885eb3a91/pydantic_core-2.35.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b4da655303e05e475441036dc4336b9508b8830ea55ff269438589756ce6430d", size = 2126116, upload-time = "2025-06-11T12:28:10.756Z" }, - { url = "https://files.pythonhosted.org/packages/d8/81/22e58f8bceadbcae03c54a0c2fc6defa89216ab4adbe0a9356962e473700/pydantic_core-2.35.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:c0605a8b7edcbbe0a001b39e3b56db3beb71a924967db269983abd23feef313e", size = 2290771, upload-time = "2025-06-11T12:28:12.872Z" }, - { url = "https://files.pythonhosted.org/packages/6e/cf/0365333fab096477bb5736b4d87d4a86fccb6be96d0bfce2975f1c711dcf/pydantic_core-2.35.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:9cb6bbbd7e23258aafb4e10f6fddcc08ecb2f9d1cd0094be51c3a53804c24d95", size = 2308595, upload-time = "2025-06-11T12:28:14.969Z" }, - { url = "https://files.pythonhosted.org/packages/2e/76/6167f3f7f71db5002c6012456f051c3484b9e194c5f3bd0924205f1c3e46/pydantic_core-2.35.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c8596ed58dd7ec027603fe90d6c7cf6af1cf3d0807cfd6e679db7964c5934cf5", size = 2130669, upload-time = "2025-06-11T12:28:17.387Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/39/1a/2601a2cebeb77d88fac128881492553cf8bb3c5b6cfc1d8de7a94df48b95/pydantic_core-2.35.2.tar.gz", hash = "sha256:e010b13ff0d6375ee83f7478fbda42e1fbf55f1b2feef76b673c40861ffd31e6", size = 437878, upload-time = "2025-06-26T09:14:06.412Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/3c/1930a7959c098d61e2507e041489f85c9e5abffb098d0084824d1387834a/pydantic_core-2.35.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4fe195eb157f261f7b96fff22366021b24b5b749cf7c1bfd6f22b55ed564ef3f", size = 2100789, upload-time = "2025-06-26T09:10:51.23Z" }, + { url = "https://files.pythonhosted.org/packages/1a/2f/ce200e552d1200b9f6faa49710a90e4d96d5996551564db3a6517e34ba9c/pydantic_core-2.35.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5de3e08ba94dca56b5b4e081187a0d3d048402d70720f04dfe346fcf82c46766", size = 1866441, upload-time = "2025-06-26T09:10:53.154Z" }, + { url = "https://files.pythonhosted.org/packages/9c/c1/f248b6843554feab0ec7771af6ae2ad3e5b8fffe93a7bcfb766e433a2f54/pydantic_core-2.35.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d4b2690407802eb226ec2f2b6db41eb4addebaa708b498069b5f1065efe03c5", size = 1957394, upload-time = "2025-06-26T09:10:54.435Z" }, + { url = "https://files.pythonhosted.org/packages/d4/a5/4fd6f987305675addcd600e33b6872dcb513d83f2f8cba868d656cd8ba64/pydantic_core-2.35.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:233fa378e9619923ff2e59db894b66ba7d2218c4bb2a585cad2f55579fa021a1", size = 2032545, upload-time = "2025-06-26T09:10:55.947Z" }, + { url = "https://files.pythonhosted.org/packages/23/a0/bd0a989330006b2bf16095e6b85233ab0443ccfa0934e50a352df5c7f8f6/pydantic_core-2.35.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f2043a266b5778eb5810506bccb65b9516cebd9ec47cb4324f5eb34fedf9ea3", size = 2221893, upload-time = "2025-06-26T09:10:57.884Z" }, + { url = "https://files.pythonhosted.org/packages/e1/19/9a7037407fd222b59689c9eefcb077fbc7e53c4911183b87943f384510a8/pydantic_core-2.35.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:605536d022899a25923885fcba8d26440a1e886d1b4a30efe8aab2904df9a19a", size = 2310663, upload-time = "2025-06-26T09:10:59.538Z" }, + { url = "https://files.pythonhosted.org/packages/45/f5/8db4fad46b387c40b13cfd1e170f39044bedc28fa8b845810e5290b031a7/pydantic_core-2.35.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f25a78740b4713a8c82890d1f9ba2aa2981f1289d62b4a64d6133d254077dc4b", size = 2022925, upload-time = "2025-06-26T09:11:01.455Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c0/54b2fee6bbda4242baffe3283450086dddc85b2e9dc12c24b9d7cb83f5fe/pydantic_core-2.35.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ccd99ff21e453a42028019097a6519e5251b3ab4ea487c4746242eb1f4dfbdf5", size = 2162677, upload-time = "2025-06-26T09:11:03.144Z" }, + { url = "https://files.pythonhosted.org/packages/07/2f/277f493a7214dfa426d9b3bb89c1729fe9677fd543e1f5f23bd3ccd6a5e1/pydantic_core-2.35.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9dfa791d24e52cf04f6a2e72126afe56de1e1ac63aa47d6154aa64287c7d2f3b", size = 2134007, upload-time = "2025-06-26T09:11:05.183Z" }, + { url = "https://files.pythonhosted.org/packages/7f/0d/ba94e8feb6e8c1e3d5c291ef66575f6dc8db940ccf92cad9e1deebc6f0f7/pydantic_core-2.35.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:e448877efc56315c90fb21c2a067188e77e2965a522c7fd0c8e9e7b1241aed23", size = 2295959, upload-time = "2025-06-26T09:11:06.826Z" }, + { url = "https://files.pythonhosted.org/packages/98/eb/c82a74a1adb78952560990da0ba37e1f0bd5c9630470c3b4e5b51a5f6663/pydantic_core-2.35.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4ec8f579d35206fe555834653813f9f0e45d317f54fa8cac7d895c4bc3f7d041", size = 2313362, upload-time = "2025-06-26T09:11:08.442Z" }, + { url = "https://files.pythonhosted.org/packages/17/c9/36f4c881b6d5e8cd01d1d84a74a96768aca2e9cb567b87d6a83bc8e30ee7/pydantic_core-2.35.2-cp310-cp310-win32.whl", hash = "sha256:bbd3ece84327c47cffff0bcd443dcc407ee9352bb8e075254a0a4b6abc54d66a", size = 1957916, upload-time = "2025-06-26T09:11:09.822Z" }, + { url = "https://files.pythonhosted.org/packages/c5/70/ff7a04a67b061b644fcdf973d52b2aff4484a463be8b049db4d645862975/pydantic_core-2.35.2-cp310-cp310-win_amd64.whl", hash = "sha256:8ba33dbdc2f6bfb5d358056fba485bac4b7ca0880066fbe24aa6c034d975057e", size = 1980287, upload-time = "2025-06-26T09:11:11.268Z" }, + { url = "https://files.pythonhosted.org/packages/43/9c/f7523880937f7127804221a63e51e02d65b121aeeaa4f0345bf80efebc35/pydantic_core-2.35.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:418aa2d8f09dda756bb3d7fe6febbf0825d2eb9a974b4d2ed6bc9684534f7014", size = 2100218, upload-time = "2025-06-26T09:11:12.981Z" }, + { url = "https://files.pythonhosted.org/packages/67/d0/8b02ae2011ecc63fe1d7d70e8bc3bddac5dc10a75698f3bb46a3e3eab943/pydantic_core-2.35.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a0be0df724926b1e7bee0d798091bb64672bfd754f2ebd30b04b370b597090bb", size = 1864011, upload-time = "2025-06-26T09:11:15.224Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a1/239ba1771df0bd87a9bbf6e99692053386d4c4a492848e09d10dc1699932/pydantic_core-2.35.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f313bdcb843a584756abf3ba8e5f9bde9e77e54dd0d54192ceb3de0121c6cd", size = 1956730, upload-time = "2025-06-26T09:11:17.311Z" }, + { url = "https://files.pythonhosted.org/packages/93/dd/7793f37066eb7c040965f9fcd858fb51a1ba05c52ef3b384ddc4e9fc3283/pydantic_core-2.35.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0e44b9eb71c5f5cfd3104efc26dfb983cd6156211a954fb9a7eb8c9bed15ac2", size = 2033226, upload-time = "2025-06-26T09:11:18.721Z" }, + { url = "https://files.pythonhosted.org/packages/62/b2/dee61b1023f4fa3907feb00a7eb26f4caac0fceb5bcda9022eac764b0f76/pydantic_core-2.35.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44edd82679764e5de486df386ddf640bd9ca9cfca2cccf97f36635c8d68c6648", size = 2222477, upload-time = "2025-06-26T09:11:20.535Z" }, + { url = "https://files.pythonhosted.org/packages/44/f2/2c3082878354cc89714d232456dd1db2b8895c15dc222afaa119afd213e7/pydantic_core-2.35.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3cd7c55b6f98c0118d4e0acc4b13287e4fa1eecacf72ff0a5b6b188a5ac4e2b4", size = 2309898, upload-time = "2025-06-26T09:11:22.243Z" }, + { url = "https://files.pythonhosted.org/packages/79/5b/822df9feb2e54109d0d80fbfff5698975aedc930e88c02f3b1a62252c622/pydantic_core-2.35.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fdc842abb24b14f2e757d0f6dafd292417437dde1f391f7875fb4d03273a26b", size = 2021511, upload-time = "2025-06-26T09:11:24.044Z" }, + { url = "https://files.pythonhosted.org/packages/25/07/1923a0258f7405f8bdaeab7017ad4b3f90802d7afff803a0eb6a33ed06de/pydantic_core-2.35.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ecd87e1b865c3660f1ced84f12a879194d127eb95d84a0653baed2e5b871d215", size = 2163898, upload-time = "2025-06-26T09:11:25.512Z" }, + { url = "https://files.pythonhosted.org/packages/ba/5d/a12afeb9cef9ba359520f550f9210cd98ef78a9cb9a2eaed847771087c68/pydantic_core-2.35.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:218c90e2fca779a198e1273c3addd32ee1c6120a07a58c0cdea9d8688b50073f", size = 2133910, upload-time = "2025-06-26T09:11:27.173Z" }, + { url = "https://files.pythonhosted.org/packages/3f/f6/6aa0fce0c0f1b434b6ea78026e8bf894531b262c939062aa44365b0a2d41/pydantic_core-2.35.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:988d717f73612d82ba73b3a31014564d8de570d411c0a05576756b2105bc2800", size = 2296636, upload-time = "2025-06-26T09:11:28.675Z" }, + { url = "https://files.pythonhosted.org/packages/df/51/8fc6b935d36058dd6726588a568ffd2ae612dee511f02ff14937f791c631/pydantic_core-2.35.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2f10619f4bbfe36abc31dd12804fd4dd6da79db578b4fbcfdbdc0ee56cc9b150", size = 2312542, upload-time = "2025-06-26T09:11:30.095Z" }, + { url = "https://files.pythonhosted.org/packages/3d/34/f76f239e62458d4be48e201195fdf3d77b7f9d75f5628854b727366d5d8b/pydantic_core-2.35.2-cp311-cp311-win32.whl", hash = "sha256:a42825c9d23fdebb1d1ae4a918c8cb8edc5d5f6c041437248b4dec0a322f43f3", size = 1957708, upload-time = "2025-06-26T09:11:31.923Z" }, + { url = "https://files.pythonhosted.org/packages/3a/4a/29f4f6548a0c53a0bf1ae3918e0c8451f5653792f94d2a7d7b7a0b2150f5/pydantic_core-2.35.2-cp311-cp311-win_amd64.whl", hash = "sha256:d536dd9dca75f1dced3fb704c8a5b80a326ed2ca4af2531f6cf6b70f585f747b", size = 1979396, upload-time = "2025-06-26T09:11:33.536Z" }, + { url = "https://files.pythonhosted.org/packages/92/af/20c9f56d0659abfbb89d82b97d60fcbceae4399d0f4a1207ce5f2d685239/pydantic_core-2.35.2-cp311-cp311-win_arm64.whl", hash = "sha256:9027579f64a3f11f812e7db7e0fb834b7994706536ed37101ec218b2755e80d8", size = 1960949, upload-time = "2025-06-26T09:11:35.045Z" }, + { url = "https://files.pythonhosted.org/packages/94/5f/a9063d1f3796f97782558cb662e799fc8d277d62964c3a1f2013706d09e8/pydantic_core-2.35.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:729c3cddd0e853aab1af68553a9ff84f0634ee3e375f5f810ceb18e984079713", size = 2070203, upload-time = "2025-06-26T09:11:36.861Z" }, + { url = "https://files.pythonhosted.org/packages/0d/7f/710de2e14379b50d0ee34aeaf96fb492dacff0c8765e6fc6ed6ab8d6d006/pydantic_core-2.35.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e20698eacfd33677b571ddd3fe9ea7b7391bde3fe8792ab8654f199efe8255b2", size = 1863636, upload-time = "2025-06-26T09:11:38.73Z" }, + { url = "https://files.pythonhosted.org/packages/91/29/5b5ffb0a428c8c01007d2ea57faed79dd0488d927bf51d9c523c44a82fad/pydantic_core-2.35.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1dfdcc070cead35ecf3f7626918152153882564c3ad89a32eda0ae99082881b", size = 1927787, upload-time = "2025-06-26T09:11:40.274Z" }, + { url = "https://files.pythonhosted.org/packages/9b/3f/b72ca0dfcaaab7864fbb749acf7b25c74497593891ce4dbd732e0bd1ea31/pydantic_core-2.35.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c4e02ba313ad4a699540346296b045a2da540b0855557d505cee75a62725c105", size = 2011357, upload-time = "2025-06-26T09:11:41.89Z" }, + { url = "https://files.pythonhosted.org/packages/05/5f/e1c23fd7b498bdbc697d4e4dbe24ba0c9a2a2ac19c86a84a2e7d6d99ee53/pydantic_core-2.35.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d98c0555fc071955e02655ebfe93e3517f4f1078cac24a2a99ae44a22d178297", size = 2183390, upload-time = "2025-06-26T09:11:43.425Z" }, + { url = "https://files.pythonhosted.org/packages/2d/45/9f2fee46079b6a73436ea41788d941acae25ce21a98d1e9de472ff678981/pydantic_core-2.35.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6dcdb03a6c9a54a8a8d31dd8a4360e83480088bc01f39dd418d7ad0038ae749", size = 2302778, upload-time = "2025-06-26T09:11:45.039Z" }, + { url = "https://files.pythonhosted.org/packages/6e/dc/39414460f2fd61c34c765b19977c1bcbe790bed59519f001bbc544ec672c/pydantic_core-2.35.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a36a887d0cf03401899ea645bbae332174261595c130427da09b610db0c28741", size = 2031187, upload-time = "2025-06-26T09:11:47.347Z" }, + { url = "https://files.pythonhosted.org/packages/d7/36/84a0c89f34f47f7ccd2e1e8c45796e1206683c84b2c63ea70eb5fa6d52df/pydantic_core-2.35.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:de60ead6376bcc20740381fd9329184ee89062a4fab3f7d52de8884aa8a44728", size = 2141947, upload-time = "2025-06-26T09:11:49.222Z" }, + { url = "https://files.pythonhosted.org/packages/47/ea/6aba53dc827302828cd143e578b6b3fafdb2904a5f06ecb9473e1782288e/pydantic_core-2.35.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:69c0a2d6be2d4eebd95a34e364488cf5b81424d678902f3ea78fb10a17087fab", size = 2105124, upload-time = "2025-06-26T09:11:51.052Z" }, + { url = "https://files.pythonhosted.org/packages/fb/c4/0567bfbed1aa6e2ba89e02b65756fa497f33e3166b32708a762f1abfec25/pydantic_core-2.35.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:92c2b12b7c009ae08c056b7f02be5bb3a8e6d15d9127f93c8021c1c357766eda", size = 2274169, upload-time = "2025-06-26T09:11:52.527Z" }, + { url = "https://files.pythonhosted.org/packages/46/a8/78e88e813d854a5943c26f21824740c6d420eddeb0f33384b7017170f5ce/pydantic_core-2.35.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:41c9c4fc187c44865b3a8350221ec5ba3b4ee2ddd0519b4adba902005ab0699b", size = 2291682, upload-time = "2025-06-26T09:11:54.191Z" }, + { url = "https://files.pythonhosted.org/packages/e0/fc/20ad4c9c2d0e0792676f827f80debc0acba1d572967b95e78ae686165fbf/pydantic_core-2.35.2-cp312-cp312-win32.whl", hash = "sha256:370f96a267fb7e143ecc72a94300fff3499d876aeeac8e1c40469c8602aec417", size = 1936260, upload-time = "2025-06-26T09:11:55.604Z" }, + { url = "https://files.pythonhosted.org/packages/20/dd/12f4c03bc6e065d4243f5dffb61e2d73a39663ce27a2da1ac68746459308/pydantic_core-2.35.2-cp312-cp312-win_amd64.whl", hash = "sha256:6544065eb63995e6c8f30119c8297acab0426c07231f33b792fb6176c29ba771", size = 1989012, upload-time = "2025-06-26T09:11:57.379Z" }, + { url = "https://files.pythonhosted.org/packages/20/30/0464baddfb951f058c7d0e8b4357d0c50be7fda1a03042fb765057c0435d/pydantic_core-2.35.2-cp312-cp312-win_arm64.whl", hash = "sha256:803b795a036c4c89ad1e8d0131b2a86a17aeee29457ab53de7568e5cd5dea2c0", size = 1941820, upload-time = "2025-06-26T09:11:59.396Z" }, + { url = "https://files.pythonhosted.org/packages/37/47/526a4c40a6d250f1d6374af5c46b2174c52e3c34ca8dfa3a0a5d0413608b/pydantic_core-2.35.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:516daf05b92a9211d0ea0ca26cc0bd5ae4e475dd4a781ae424fbfb68ac74eafa", size = 2075799, upload-time = "2025-06-26T09:12:01.061Z" }, + { url = "https://files.pythonhosted.org/packages/97/04/ad3c36647e19b5f4c2f4fe3e3fe8a8f4f0fcd8a91c1e87095bcd2fabca23/pydantic_core-2.35.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4af1513116437372e30bb46684f1370bfae642d15e122f358c266714653bfbea", size = 1862204, upload-time = "2025-06-26T09:12:02.764Z" }, + { url = "https://files.pythonhosted.org/packages/a4/74/5cbbc96d26a616276b505e9e131df9a127bc198448b2d7104c4a930cf944/pydantic_core-2.35.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d4b28d4d85627b20bcb212c5e1e9b64dd5dd03521827be9215a38cc81d159e9", size = 1931401, upload-time = "2025-06-26T09:12:04.39Z" }, + { url = "https://files.pythonhosted.org/packages/0d/58/c0325e8352432262c5e46f6616cc5cb3ac4948358decb337a6681dc4fb25/pydantic_core-2.35.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e3df7686480d6797b664e304b78e9ef8d2092f65254999791a8935c580010ba5", size = 2019957, upload-time = "2025-06-26T09:12:06.068Z" }, + { url = "https://files.pythonhosted.org/packages/86/fc/48971f4ceb375739ce9fb24fb435a97eceb886bbcf10b44f61a09aba6d39/pydantic_core-2.35.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74d1ea189ab9f0c41bd8d32728f399484aaad2f23b7cc02dc058f055a4bbdcb3", size = 2187652, upload-time = "2025-06-26T09:12:07.8Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b3/6e3db6bc1075189a75f0b7c776a9d3ac99035bff0f15e16ec20e2ad65a6a/pydantic_core-2.35.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:46981f8cc09a05243adf9f0bcbe4107b8dec7988fd49b35b5d82797d1b162a70", size = 2300800, upload-time = "2025-06-26T09:12:09.488Z" }, + { url = "https://files.pythonhosted.org/packages/cc/de/560965eb01915181a0f966c2b567dcb43c70114a7115197f2ef6d9aab9ee/pydantic_core-2.35.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85014d139aeffc3eef49ca31dcfae7e33deb318d98bc91d3641c5237452e9fc2", size = 2029220, upload-time = "2025-06-26T09:12:11.179Z" }, + { url = "https://files.pythonhosted.org/packages/59/08/4263e687d558c6fd4f365f8bf1472af0f8f3c0858a200f3f3f37326cbd6a/pydantic_core-2.35.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:08cf09bfaffe3b263042d1fb6fb3d2c489f5caca35cf75daece350e08dcea0e0", size = 2147526, upload-time = "2025-06-26T09:12:12.817Z" }, + { url = "https://files.pythonhosted.org/packages/ab/5e/214bdff076d40827d154b73b333f6c97c578238dbc8a191092d3831ad932/pydantic_core-2.35.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cfb1b28a1536977a0fc01de3d62701af87b92ed69a87893c766d87a825a136da", size = 2108235, upload-time = "2025-06-26T09:12:14.876Z" }, + { url = "https://files.pythonhosted.org/packages/8a/51/1365cb7520754b1e4de373574b28758613b5adfb97c7ff853151ea124495/pydantic_core-2.35.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:925e8fbd8226c6b89fc98dd5ad4c745674c0d9722a314cea174935cdc4e03aaf", size = 2283149, upload-time = "2025-06-26T09:12:17.029Z" }, + { url = "https://files.pythonhosted.org/packages/5f/ae/7f382d03b5c0afa9b218623719d754442396e9564f2748e8d4b6aac1bf0a/pydantic_core-2.35.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e489d068417e4e4ce2436d90e1d1593eb29dfe444cd2f3b565f4c4558c06350f", size = 2296635, upload-time = "2025-06-26T09:12:18.767Z" }, + { url = "https://files.pythonhosted.org/packages/31/b4/b88244c5419da51e58ecd3248ad429f038b456786433298c330b4a62abef/pydantic_core-2.35.2-cp313-cp313-win32.whl", hash = "sha256:b7d62bd120a3c0d6f8ccfcbe8df4690076289dbbe7435038c076c2db7ee5f241", size = 1944474, upload-time = "2025-06-26T09:12:20.486Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ca/1bb4a1e23abbfa1d2476b6a33494216f62ff41ffcfe10706a2ea15a7ca3e/pydantic_core-2.35.2-cp313-cp313-win_amd64.whl", hash = "sha256:61e801276b7cc7d64866d19fdba58b47d85ce1d3bb74023514871c060f500680", size = 1988649, upload-time = "2025-06-26T09:12:22.246Z" }, + { url = "https://files.pythonhosted.org/packages/70/41/179c19b52cb3753a05f574af46e222f0e1cbd389695b357bdc664a21d017/pydantic_core-2.35.2-cp313-cp313-win_arm64.whl", hash = "sha256:7e4a161d53d7b2b06836624cde0fe7cf250029771510c24e9f036ff8d4232b84", size = 1946561, upload-time = "2025-06-26T09:12:23.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/37/ea7c5cc3f52b05399a4a26f1d81146fb6d2d42b65e240cf873a25adff7c6/pydantic_core-2.35.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f43c7dffa9927a89053c38c6802ee8ca3662a58f590f2af031c440dc6d8c9687", size = 1816447, upload-time = "2025-06-26T09:12:26.166Z" }, + { url = "https://files.pythonhosted.org/packages/61/60/2ae343509a998ac75152a9c1e64f0a9001a00c7f287425a036805408ba6d/pydantic_core-2.35.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70c670c7d6d09c52556063c827ebea052f365c6c00d55d7f797af93d416776b9", size = 1998407, upload-time = "2025-06-26T09:12:29.086Z" }, + { url = "https://files.pythonhosted.org/packages/e7/19/42a9e6bc18782fcfce9644c5dd0e8bfc070c5c76d21da6b5da42c1b8d957/pydantic_core-2.35.2-cp313-cp313t-win_amd64.whl", hash = "sha256:9a5fc71284a976e8567f819e59ae2cfff90b601587391d0ff30753a7cc921ba4", size = 1949976, upload-time = "2025-06-26T09:12:30.893Z" }, + { url = "https://files.pythonhosted.org/packages/a6/00/3c68826f05f52189a27a0632cde09018848b4ef86d8b6101cc500de4534d/pydantic_core-2.35.2-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:c98d315f6bd97d972167da5c0d00c4c10fb1a6466faa7705c90a4e8dd62b283b", size = 2079378, upload-time = "2025-06-26T09:12:32.613Z" }, + { url = "https://files.pythonhosted.org/packages/65/2f/53d88d3c1ca38203d917c48d46eab3877e47d6c959d36d4ca33ad6369919/pydantic_core-2.35.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fbbf234a2dda1a230ca0d322f12ce63d1671e471b81826227533a7a516aca587", size = 1855135, upload-time = "2025-06-26T09:12:34.228Z" }, + { url = "https://files.pythonhosted.org/packages/a0/53/95e89a7667a6baf5d18b84f12858992a33d4e24840a0ecc4cd6c3129704d/pydantic_core-2.35.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cca7e87119a1c692e9b45eb4571ba016850c0d5567a8376f207681f6b1eada9f", size = 1930394, upload-time = "2025-06-26T09:12:36.037Z" }, + { url = "https://files.pythonhosted.org/packages/8d/92/9cdc56f94f7be249332dcd1ce1a8bb9cf3fc9300627961d3aec7283b954d/pydantic_core-2.35.2-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6512ce3ed05be2609527577d7111d7993086945244345192ec74f7184c0afd05", size = 2022239, upload-time = "2025-06-26T09:12:37.666Z" }, + { url = "https://files.pythonhosted.org/packages/cd/ed/01f3ece1ead2996c7aa5b386f2dd520067ac5df8517a559f86e7ca729352/pydantic_core-2.35.2-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c027ebeda7facfb166c7c971c4ff32241b006587bb73aeb5a980a3e183e0b15", size = 2187755, upload-time = "2025-06-26T09:12:39.306Z" }, + { url = "https://files.pythonhosted.org/packages/03/74/fd988f56f1632a4fc029e9497c9408eb6119905204759793370044cf9ee4/pydantic_core-2.35.2-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:777e3ce61788df541616f78a40ac3fb1c2dd7048540f606f8155b0098cf53cda", size = 2304611, upload-time = "2025-06-26T09:12:41.144Z" }, + { url = "https://files.pythonhosted.org/packages/31/13/cb780bc228619f3b2e5e9395a9efad5030fb3fbe658e25856ba270fc0bbd/pydantic_core-2.35.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70bc9c0984b9b6da0f064cd5a1b6b5111637f30dd05999f565faa6d5e10e5e62", size = 2024930, upload-time = "2025-06-26T09:12:42.967Z" }, + { url = "https://files.pythonhosted.org/packages/a7/95/26663d10bbc399491eb59092798fc9208951d4daccd745216668b193606c/pydantic_core-2.35.2-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1d2c4b7b6bc2dcdafd43e5438d3ec07ec946cd0319215e8753044a51f014020b", size = 2149967, upload-time = "2025-06-26T09:12:45.264Z" }, + { url = "https://files.pythonhosted.org/packages/81/7b/ffaa338c91c354713ee1289a8473353e712e9052b2210927d02f8274d599/pydantic_core-2.35.2-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:4ad78aab617fb7dfba6467e74ebb96b0186c674bf4fba62e5d41a17136309cff", size = 2107265, upload-time = "2025-06-26T09:12:47.093Z" }, + { url = "https://files.pythonhosted.org/packages/8f/84/1774de8757af4911cdeb6df4d2d950f9943f8f1550115ff5f86ec53132fe/pydantic_core-2.35.2-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:e0d1595cdd5909fbbaddbea6d75e9c2906ce83987487a6394aef9a5bd183f298", size = 2285357, upload-time = "2025-06-26T09:12:49.41Z" }, + { url = "https://files.pythonhosted.org/packages/f0/83/edf1dfa0d038645a049c7fc25b7cdac67df2175b7a876062a6a3d4f2dd66/pydantic_core-2.35.2-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:fe1759f2b271b08a72067daee979ee901b419fafd2a859ec65188c78055257f2", size = 2296648, upload-time = "2025-06-26T09:12:51.805Z" }, + { url = "https://files.pythonhosted.org/packages/ca/0d/0dd893a4ea3525f64ce5803a71ab5a2b9c60fefd47fef98da8573d1ab8b4/pydantic_core-2.35.2-cp314-cp314-win32.whl", hash = "sha256:aa3f99813b36c31e931158d8f4651b6a43d7f31393160b71b5e3b84b3b63d95d", size = 1946974, upload-time = "2025-06-26T09:12:53.818Z" }, + { url = "https://files.pythonhosted.org/packages/0e/4d/711b0d104c369872798268af12a4f4376d4b654a96ff7b214149ef2287da/pydantic_core-2.35.2-cp314-cp314-win_amd64.whl", hash = "sha256:32db6926f8052156ba1069bb001c6bbde8b313d1bd1588d25a08a6c08f36ce13", size = 1983085, upload-time = "2025-06-26T09:12:56.157Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c5/a283e96df368e83e7b265b7f5468e4a547ec1aab4968d43c319ae057cbb2/pydantic_core-2.35.2-cp314-cp314-win_arm64.whl", hash = "sha256:55caefa09d87be7ed72660cd318ce2ecff8dbac4e0b7f9836d90b3a44435e76c", size = 1946739, upload-time = "2025-06-26T09:12:58.547Z" }, + { url = "https://files.pythonhosted.org/packages/20/da/3a44d1551f3fe1ebfc5532ab9d3c3c6899af08039d7c733056c831909f77/pydantic_core-2.35.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7fe26646e559862b3746a0d041a62e354c726d2748201fa42864350519392186", size = 1817085, upload-time = "2025-06-26T09:13:00.455Z" }, + { url = "https://files.pythonhosted.org/packages/14/61/eb259896e54d6786a846093cc1c520535800ebbd760df1b22ad0e5361758/pydantic_core-2.35.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:658ea74d256197d025cbbc6e02682e57af806e0f63e2db3a96822585b9cb399c", size = 1998543, upload-time = "2025-06-26T09:13:02.429Z" }, + { url = "https://files.pythonhosted.org/packages/01/1a/b114629a36122d8914005d245d755b3dbe4869f4a9eb8b1df6d4966b11d0/pydantic_core-2.35.2-cp314-cp314t-win_amd64.whl", hash = "sha256:723c42a6d1ac459792d514d93c900179f25bcc0f4d9d0d93950f9fca9293c0b6", size = 1951691, upload-time = "2025-06-26T09:13:04.401Z" }, + { url = "https://files.pythonhosted.org/packages/8a/95/af775b412a7cb6140b9a8c8f784e1a032f0cc19b507c80d5917b011e193e/pydantic_core-2.35.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f2b5b458eeac0d932d90146dbe8b565779c017ce12933354589688e54f61bc1a", size = 2100658, upload-time = "2025-06-26T09:13:06.355Z" }, + { url = "https://files.pythonhosted.org/packages/84/e6/4ae7b7fee07f0a4e11749e4ff0c949e91ee1b416fe4ca30e46fdf790d168/pydantic_core-2.35.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:00ce8847af708d99a099f0952e5eebf6ba16314b79ca87615bd086ef459d402a", size = 1918588, upload-time = "2025-06-26T09:13:08.263Z" }, + { url = "https://files.pythonhosted.org/packages/97/b3/5386e721a412871c992a07fc400b2da0c696ade7eac0d8ee60104d54c693/pydantic_core-2.35.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2eec1b73e13b237b66376d4c2c803b0d9721ad9d3369aada3eb4f731b99300d", size = 1957670, upload-time = "2025-06-26T09:13:10.267Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2a/619ce03aca0daa37494519d55645152df6eb57a0da625089914f74869ca2/pydantic_core-2.35.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07b0a61dfc194fb3517b891f84e17218490df1e94bdb70e3e043e1c51c1bdce8", size = 2032811, upload-time = "2025-06-26T09:13:12.316Z" }, + { url = "https://files.pythonhosted.org/packages/91/d6/0d81b7b50d3feb8bda41b8746af2c3994a99d14a49b355f72cdffbf8fbc5/pydantic_core-2.35.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91b82c70c241b6c5b8d1e779ee207439f4b02b3f1a3f25018996a8b8150c6d95", size = 2222434, upload-time = "2025-06-26T09:13:14.37Z" }, + { url = "https://files.pythonhosted.org/packages/48/1f/9afa1b41a6e43d983a8ff09efe8237c30ade57d82fb5de9fd9382ed3ea8b/pydantic_core-2.35.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18332e0d3d8cf56e19215c66e190e9e7ebe3caa1267b93ef3d4307d0b024e231", size = 2315560, upload-time = "2025-06-26T09:13:16.703Z" }, + { url = "https://files.pythonhosted.org/packages/94/a1/c72630705f1ed0bf3ed0c89e140d3c6a36b24e5d7edcba98d2ce6056a534/pydantic_core-2.35.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33c270945ec14c15e4f3018a3df694a772f8bf86f95f6d29eba2973aa8768ae0", size = 2024836, upload-time = "2025-06-26T09:13:18.758Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bf/0dfbf6bb5b9bfdd153c0d38d3351135d54b0119875e5fc1611468bd8ea39/pydantic_core-2.35.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:431c779c16a610af08800dcb9510047b8a79c056998450065cf16d18e1f3116c", size = 2163036, upload-time = "2025-06-26T09:13:20.516Z" }, + { url = "https://files.pythonhosted.org/packages/12/d8/41b2d192093df23aed94a1cdedd3c708ad5d44edf215f25162869b671766/pydantic_core-2.35.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5839f03ee6bfabe9dd2c20713c8f8c8b2afcc6ea1fe2a59d072edd8977f29aab", size = 2134341, upload-time = "2025-06-26T09:13:22.23Z" }, + { url = "https://files.pythonhosted.org/packages/73/c8/f2fcf7b51d26c02ebe11d11a15aea862d628dff0961e1e27288d069f71a0/pydantic_core-2.35.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:a9162c985d319750391294222f72596b40e5aee6f227d304874216b8230fdc4b", size = 2296061, upload-time = "2025-06-26T09:13:23.899Z" }, + { url = "https://files.pythonhosted.org/packages/98/19/c026a9e8b52be6a681d27fb704ff013b7406bd7541665f290a77c805b4be/pydantic_core-2.35.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:84f0e5227f6f0777f72f370f1eb9aa29c125834010f4bd46b1cd44ff62f23a73", size = 2314144, upload-time = "2025-06-26T09:13:25.59Z" }, + { url = "https://files.pythonhosted.org/packages/6f/e7/86d19d1478f92d718d91faae13e4b63cd3d579c45084a75698febcdc55b2/pydantic_core-2.35.2-cp39-cp39-win32.whl", hash = "sha256:0bd6823cef15f84e9c4b2fb020c94811d58bd31b39c40418a6ea861beddb8161", size = 1957696, upload-time = "2025-06-26T09:13:27.304Z" }, + { url = "https://files.pythonhosted.org/packages/97/e0/280e9a647340ac57679b9fc761b9bc41b4211dd08ef1070162e69847b157/pydantic_core-2.35.2-cp39-cp39-win_amd64.whl", hash = "sha256:176e30864db3c41d911a5c9de9483eef67e66948a82a75b82a7d41d539264a01", size = 1982092, upload-time = "2025-06-26T09:13:29.092Z" }, + { url = "https://files.pythonhosted.org/packages/a6/b9/6b1ea767a5b8c2095f0c42d159479bbcc890f63328a96b5cb3eb41a156cd/pydantic_core-2.35.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:efb7e06be8a196787173edd8f391e8d779b67b23a6c075493da6a79dc4eee7d8", size = 2100109, upload-time = "2025-06-26T09:13:30.819Z" }, + { url = "https://files.pythonhosted.org/packages/51/2b/a00dbcb786d2010a10586b93a208e0bb3e8de91b2b83213ce3f03ca08953/pydantic_core-2.35.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:255dbe8107c4fdb77366e4791aec20288e9cae1702340167665d14a9bb28826a", size = 1920643, upload-time = "2025-06-26T09:13:32.556Z" }, + { url = "https://files.pythonhosted.org/packages/11/24/e1d31aa070906e6404ce0750a3a78c1e52b91befa904880180a91b07fdf9/pydantic_core-2.35.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed4896efca4d8e1588c22b621e2501f116f15aa136231309c264baadaae15fb4", size = 1956740, upload-time = "2025-06-26T09:13:34.353Z" }, + { url = "https://files.pythonhosted.org/packages/22/52/df68d234e84589fdf41a0782f0ad316e097ad8c545844fc31debd41b14b1/pydantic_core-2.35.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2438970f0a921509802d983e1f34cc481785e94b7869316c3cbf0b4eb6ede4d9", size = 2144252, upload-time = "2025-06-26T09:13:36.167Z" }, + { url = "https://files.pythonhosted.org/packages/d6/d7/5a662e0b6ab229b964de62c2a3b3374db6315804a868ee03ced40277a0e6/pydantic_core-2.35.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e9cf4c586cfbcab3cab149f66619491ac90ffa263acfdf121a20d3c076c790fa", size = 2158039, upload-time = "2025-06-26T09:13:38.429Z" }, + { url = "https://files.pythonhosted.org/packages/37/b0/4b80dbf945c62c6ce2cab2a38367ef3d5c2f0e4144fd982c4edd93e808c2/pydantic_core-2.35.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:daaabf25ee01056964ae55d1e54d9b5e70c8f5f332c7f8d3886e074e3586b1c1", size = 2133733, upload-time = "2025-06-26T09:13:40.427Z" }, + { url = "https://files.pythonhosted.org/packages/dc/01/8b04f8dbb8bcf45abc4b66c12df7fe4af44d88d044ea1e74632361537ad1/pydantic_core-2.35.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:20f5f887714527feced10a0d990d62fd4ccb0638db24433b0abdfeb5612027e8", size = 2296576, upload-time = "2025-06-26T09:13:42.382Z" }, + { url = "https://files.pythonhosted.org/packages/10/27/f147c780c7bf85e33ca32c9ec4a1dbb62ee748631d5f0f48a0686b4a1a28/pydantic_core-2.35.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c7c181d5f23fd060a883f3676916ce3213420e2a7770df9715299a1d6e2342a8", size = 2312645, upload-time = "2025-06-26T09:13:44.914Z" }, + { url = "https://files.pythonhosted.org/packages/24/b1/40b7eb6a2439fdad61552100302d7a9552b4700f8f0bdc210856b62bc5bd/pydantic_core-2.35.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fff63fe28079e6f292460aaf32e46866782abe5e46736550037d8a0d2ecba602", size = 2133083, upload-time = "2025-06-26T09:13:46.734Z" }, + { url = "https://files.pythonhosted.org/packages/31/7f/7b75e02a65011d6971ac1e5cf3c6c10a6b2bfa80d3a4a4cd7ce9bade645a/pydantic_core-2.35.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c0bf1e8531c3497b6920329efaa84a94a4e679cb838ba9122dce663c9ed3de6e", size = 2100916, upload-time = "2025-06-26T09:13:48.546Z" }, + { url = "https://files.pythonhosted.org/packages/c7/10/d3d55d48010455c772154a5f0cec4dfd859a6ae94e55c69362e8001b58bc/pydantic_core-2.35.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:a20dfdbae8a102bd3a66c69bbdf575ce27b83f7f971525a9040d0ea34a749826", size = 1921294, upload-time = "2025-06-26T09:13:50.71Z" }, + { url = "https://files.pythonhosted.org/packages/a1/a2/c1d7163c7ec7e2eb7c6218e7073baf3875eb663727da2f30d21333b15873/pydantic_core-2.35.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd6df0bfb8517aa87efac1c6a06e6ef0d54e744aa000bfc9bfc35dec2a3cdd49", size = 1956635, upload-time = "2025-06-26T09:13:52.538Z" }, + { url = "https://files.pythonhosted.org/packages/79/3b/e4a8b1463ebccc9a176bf4ed9bbf38b8e44bcdde4a175446d5fcd37edad3/pydantic_core-2.35.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831efa6c2e5de5ec7da51cac90ae10e9e7233033f58bf20f8713c9b433ec3c0f", size = 2143697, upload-time = "2025-06-26T09:13:54.384Z" }, + { url = "https://files.pythonhosted.org/packages/39/3b/29fbd41569d5adb8bc2e8b8fa9b24f0b74397f9c2863b0d8bf920569058b/pydantic_core-2.35.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d8f836abfbec75dd454abc49d45b12e5ab6522fba7530a90a1a60e6e4726f8", size = 2159642, upload-time = "2025-06-26T09:13:56.36Z" }, + { url = "https://files.pythonhosted.org/packages/96/8b/58533c6e2e78d5e3ba50f695bf82892d3c9c60c2a2de9462dc12e23cd85d/pydantic_core-2.35.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:79a7a06006f8c7df6645533cc44573287b02e78b0343444aba4e2c36ad98fbd5", size = 2133360, upload-time = "2025-06-26T09:13:58.894Z" }, + { url = "https://files.pythonhosted.org/packages/a2/ee/fc63689f732616f183a51ddd53585204ff4c12d87cf3e6ed9abca4aa8845/pydantic_core-2.35.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:28dde3a7e0236fb59d939f4e85887845fe9429aae79344c7fd8de4f8ad45bce4", size = 2297529, upload-time = "2025-06-26T09:14:00.7Z" }, + { url = "https://files.pythonhosted.org/packages/68/36/fa2413b797db1ddae26e13c3a6e637a2b332a5ecb6caaef6383a597514c8/pydantic_core-2.35.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:83f8b62a2d6be052a5e0b990f2b317f83c814db51825ccef6f5f5dfee1c06257", size = 2312255, upload-time = "2025-06-26T09:14:02.48Z" }, + { url = "https://files.pythonhosted.org/packages/8f/c3/efd6dc2a27bbe9dd3abcab945ea2fd60a1a94b0e30eb49363e1f88de528e/pydantic_core-2.35.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:d50783e34b634fe11e3f7d329e4a6689965d595e40f9ed22405d3802647cf77f", size = 2133294, upload-time = "2025-06-26T09:14:04.642Z" }, ] [[package]] From de6528bee52f54e287808adb0cae13c070f658e8 Mon Sep 17 00:00:00 2001 From: Hannah Date: Thu, 24 Jul 2025 21:09:36 +0100 Subject: [PATCH 093/106] Add proper `stacklevel` for class-based config deprecation warning (#12082) --- pydantic/_internal/_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydantic/_internal/_config.py b/pydantic/_internal/_config.py index cb18ba50c60..d93a7af96a8 100644 --- a/pydantic/_internal/_config.py +++ b/pydantic/_internal/_config.py @@ -326,7 +326,7 @@ def prepare_config(config: ConfigDict | dict[str, Any] | type[Any] | None) -> Co return ConfigDict() if not isinstance(config, dict): - warnings.warn(DEPRECATION_MESSAGE, DeprecationWarning) + warnings.warn(DEPRECATION_MESSAGE, DeprecationWarning, stacklevel=4) config = {k: getattr(config, k) for k in dir(config) if not k.startswith('__')} config_dict = cast(ConfigDict, config) From 7c40924a3093a3f95847fdbd3df5b76a56db3b2d Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Sat, 26 Jul 2025 13:53:25 +0200 Subject: [PATCH 094/106] Add experimental `MISSING` sentinel (#11883) --- docs/concepts/experimental.md | 46 +++++ docs/errors/validation_errors.md | 21 ++ pydantic/_internal/_generate_schema.py | 3 + pydantic/experimental/missing_sentinel.py | 5 + pydantic/fields.py | 4 +- pydantic/json_schema.py | 15 +- pydantic/version.py | 2 +- pyproject.toml | 2 +- tests/test_missing_sentinel.py | 71 +++++++ uv.lock | 226 +++++++++++----------- 10 files changed, 276 insertions(+), 119 deletions(-) create mode 100644 pydantic/experimental/missing_sentinel.py create mode 100644 tests/test_missing_sentinel.py diff --git a/docs/concepts/experimental.md b/docs/concepts/experimental.md index 0d52a181408..9fb817ffbf5 100644 --- a/docs/concepts/experimental.md +++ b/docs/concepts/experimental.md @@ -501,3 +501,49 @@ args, kwargs = val.validate_json('{"args": ["arg1"], "kwargs": {"extra": 1}}') print(args, kwargs) #> ('arg1',) {'extra': 1} ``` + +## `MISSING` sentinel + +The `MISSING` sentinel is a singleton indicating a field value was not provided during validation. + +This singleton can be used as a default value, as an alternative to `None` when it has an explicit +meaning. During serialization, any field with `MISSING` as a value is excluded from the output. + +```python +from typing import Union + +from pydantic import BaseModel +from pydantic.experimental.missing_sentinel import MISSING + + +class Configuration(BaseModel): + timeout: Union[int, None, MISSING] = MISSING + + +# configuration defaults, stored somewhere else: +defaults = {'timeout': 200} + +conf = Configuration() + +# `timeout` is excluded from the serialization output: +conf.model_dump() +# {} + +# The `MISSING` value doesn't appear in the JSON Schema: +Configuration.model_json_schema()['properties']['timeout'] +#> {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Timeout'}} + + +# `is` can be used to discrimate between the sentinel and other values: +timeout = conf.timeout if conf.timeout is not MISSING else defaults['timeout'] +``` + +This feature is marked as experimental because it relies on the draft [PEP 661](https://peps.python.org/pep-0661/), introducing sentinels in the standard library. + +As such, the following limitations currently apply: + +* Static type checking of sentinels is only supported with Pyright + [1.1.402](https://github.com/microsoft/pyright/releases/tag/1.1.402) + or greater, and the `enableExperimentalFeatures` type evaluation setting + should be enabled. +* Pickling of models containing `MISSING` as a value is not supported. diff --git a/docs/errors/validation_errors.md b/docs/errors/validation_errors.md index 0d09a4fb9cf..c41fa87ea3e 100644 --- a/docs/errors/validation_errors.md +++ b/docs/errors/validation_errors.md @@ -1380,6 +1380,27 @@ except ValidationError as exc: #> 'missing_positional_only_argument' ``` +## `missing_sentinel_error` + +This error is raised when the experimental `MISSING` sentinel is the only value allowed, and wasn't +provided during validation: + +```python +from pydantic import BaseModel, ValidationError +from pydantic.experimental.missing_sentinel import MISSING + + +class Model(BaseModel): + f: MISSING + + +try: + Model(f=1) +except ValidationError as exc: + print(repr(exc.errors()[0]['type'])) + #> 'missing_sentinel_error' +``` + ## `model_attributes_type` This error is raised when the input value is not a valid dictionary, model instance, or instance that fields can be extracted from: diff --git a/pydantic/_internal/_generate_schema.py b/pydantic/_internal/_generate_schema.py index 34f9e91d430..a03cbe6ea61 100644 --- a/pydantic/_internal/_generate_schema.py +++ b/pydantic/_internal/_generate_schema.py @@ -41,6 +41,7 @@ import typing_extensions from pydantic_core import ( + MISSING, CoreSchema, MultiHostUrl, PydanticCustomError, @@ -1068,6 +1069,8 @@ def match_type(self, obj: Any) -> core_schema.CoreSchema: # noqa: C901 return core_schema.multi_host_url_schema() elif obj is None or obj is _typing_extra.NoneType: return core_schema.none_schema() + if obj is MISSING: + return core_schema.missing_sentinel_schema() elif obj in IP_TYPES: return self._ip_schema(obj) elif obj in TUPLE_TYPES: diff --git a/pydantic/experimental/missing_sentinel.py b/pydantic/experimental/missing_sentinel.py new file mode 100644 index 00000000000..3e7f820ceda --- /dev/null +++ b/pydantic/experimental/missing_sentinel.py @@ -0,0 +1,5 @@ +"""Experimental module exposing a function a `MISSING` sentinel.""" + +from pydantic_core import MISSING + +__all__ = ('MISSING',) diff --git a/pydantic/fields.py b/pydantic/fields.py index 1e0b39dec83..393fdbfcaf5 100644 --- a/pydantic/fields.py +++ b/pydantic/fields.py @@ -15,7 +15,7 @@ import annotated_types import typing_extensions -from pydantic_core import PydanticUndefined +from pydantic_core import MISSING, PydanticUndefined from typing_extensions import Self, TypeAlias, Unpack, deprecated from typing_inspection import typing_objects from typing_inspection.introspection import UNKNOWN, AnnotationSource, ForbiddenQualifier, Qualifier, inspect_annotation @@ -376,7 +376,7 @@ class MyModel(pydantic.BaseModel): Returns: A field object with the passed values. """ - if annotation is default: + if annotation is not MISSING and annotation is default: raise PydanticUserError( 'Error when building FieldInfo from annotated attribute. ' "Make sure you don't have any field name clashing with a type annotation.", diff --git a/pydantic/json_schema.py b/pydantic/json_schema.py index d0b7e914db7..d087d0761a2 100644 --- a/pydantic/json_schema.py +++ b/pydantic/json_schema.py @@ -36,7 +36,7 @@ ) import pydantic_core -from pydantic_core import CoreSchema, PydanticOmit, core_schema, to_jsonable_python +from pydantic_core import MISSING, CoreSchema, PydanticOmit, core_schema, to_jsonable_python from pydantic_core.core_schema import ComputedField from typing_extensions import TypeAlias, assert_never, deprecated, final from typing_inspection.introspection import get_literal_values @@ -847,6 +847,17 @@ def literal_schema(self, schema: core_schema.LiteralSchema) -> JsonSchemaValue: result['type'] = 'null' return result + def missing_sentinel_schema(self, schema: core_schema.MissingSentinelSchema) -> JsonSchemaValue: + """Generates a JSON schema that matches the `MISSING` sentinel value. + + Args: + schema: The core schema. + + Returns: + The generated JSON schema. + """ + raise PydanticOmit + def enum_schema(self, schema: core_schema.EnumSchema) -> JsonSchemaValue: """Generates a JSON schema that matches an Enum value. @@ -1151,7 +1162,7 @@ def default_schema(self, schema: core_schema.WithDefaultSchema) -> JsonSchemaVal json_schema = self.generate_inner(schema['schema']) default = self.get_default_value(schema) - if default is NoDefault: + if default is NoDefault or default is MISSING: return json_schema # we reflect the application of custom plain, no-info serializers to defaults for diff --git a/pydantic/version.py b/pydantic/version.py index ad439e95fe7..0fb6064771d 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -66,7 +66,7 @@ def version_info() -> str: def check_pydantic_core_version() -> bool: """Check that the installed `pydantic-core` dependency is compatible.""" # Keep this in sync with the version constraint in the `pyproject.toml` dependencies: - return __pydantic_core_version__ == '2.35.2' + return __pydantic_core_version__ == '2.37.2' def parse_mypy_version(version: str) -> tuple[int, int, int]: diff --git a/pyproject.toml b/pyproject.toml index ecc004ff096..bad8d607c78 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,7 +48,7 @@ dependencies = [ 'typing-extensions>=4.13.0', 'annotated-types>=0.6.0', # Keep this in sync with the version in the `check_pydantic_core_version()` function: - 'pydantic-core==2.35.2', + 'pydantic-core==2.37.2', 'typing-inspection>=0.4.0', ] dynamic = ['version', 'readme'] diff --git a/tests/test_missing_sentinel.py b/tests/test_missing_sentinel.py new file mode 100644 index 00000000000..ffd21a677af --- /dev/null +++ b/tests/test_missing_sentinel.py @@ -0,0 +1,71 @@ +import pickle +from typing import Union + +import pytest +from pydantic_core import MISSING, PydanticSerializationUnexpectedValue + +from pydantic import BaseModel, TypeAdapter, ValidationError + + +def test_missing_sentinel_model() -> None: + class Model(BaseModel): + f: Union[int, MISSING] = MISSING + g: MISSING = MISSING + + m1 = Model() + + assert m1.model_dump() == {} + assert m1.model_dump_json() == '{}' + + m2 = Model.model_validate({'f': MISSING, 'g': MISSING}) + + assert m2.f is MISSING + assert m2.g is MISSING + + m3 = Model(f=1) + + assert m3.model_dump() == {'f': 1} + assert m3.model_dump_json() == '{"f":1}' + + +def test_missing_sentinel_type_adapter() -> None: + """Note that this usage isn't explicitly supported (and useless in practice).""" + + # TODO Remove annotation with PEP 747: + ta: TypeAdapter[object] = TypeAdapter(MISSING) + + assert ta.validate_python(MISSING) is MISSING + + with pytest.raises(ValidationError) as exc_info: + ta.validate_python(1) + + assert exc_info.value.errors()[0]['type'] == 'missing_sentinel_error' + + assert ta.dump_python(MISSING) is MISSING + + with pytest.raises(PydanticSerializationUnexpectedValue): + ta.dump_python(1) + + +# Defined in module to be picklable: +class ModelPickle(BaseModel): + f: Union[int, MISSING] = MISSING + + +@pytest.mark.xfail(reason="PEP 661 sentinels aren't picklable yet in the experimental typing-extensions implementation") +def test_missing_sentinel_pickle() -> None: + m = ModelPickle() + m_reconstructed = pickle.loads(pickle.dumps(m)) + + assert m_reconstructed.f is MISSING + + +def test_missing_sentinel_json_schema() -> None: + class Model(BaseModel): + f: Union[int, MISSING] = MISSING + g: MISSING = MISSING + h: MISSING + + assert Model.model_json_schema()['properties'] == { + 'f': {'title': 'F', 'type': 'integer'}, + } diff --git a/uv.lock b/uv.lock index 6ef9dbef022..d9fbf319e89 100644 --- a/uv.lock +++ b/uv.lock @@ -1790,7 +1790,7 @@ typechecking = [ requires-dist = [ { name = "annotated-types", specifier = ">=0.6.0" }, { name = "email-validator", marker = "extra == 'email'", specifier = ">=2.0.0" }, - { name = "pydantic-core", specifier = "==2.35.2" }, + { name = "pydantic-core", specifier = "==2.37.2" }, { name = "typing-extensions", specifier = ">=4.13.0" }, { name = "typing-inspection", specifier = ">=0.4.0" }, { name = "tzdata", marker = "python_full_version >= '3.9' and sys_platform == 'win32' and extra == 'timezone'" }, @@ -1887,119 +1887,119 @@ typechecking = [ [[package]] name = "pydantic-core" -version = "2.35.2" +version = "2.37.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/1a/2601a2cebeb77d88fac128881492553cf8bb3c5b6cfc1d8de7a94df48b95/pydantic_core-2.35.2.tar.gz", hash = "sha256:e010b13ff0d6375ee83f7478fbda42e1fbf55f1b2feef76b673c40861ffd31e6", size = 437878, upload-time = "2025-06-26T09:14:06.412Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/3c/1930a7959c098d61e2507e041489f85c9e5abffb098d0084824d1387834a/pydantic_core-2.35.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4fe195eb157f261f7b96fff22366021b24b5b749cf7c1bfd6f22b55ed564ef3f", size = 2100789, upload-time = "2025-06-26T09:10:51.23Z" }, - { url = "https://files.pythonhosted.org/packages/1a/2f/ce200e552d1200b9f6faa49710a90e4d96d5996551564db3a6517e34ba9c/pydantic_core-2.35.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5de3e08ba94dca56b5b4e081187a0d3d048402d70720f04dfe346fcf82c46766", size = 1866441, upload-time = "2025-06-26T09:10:53.154Z" }, - { url = "https://files.pythonhosted.org/packages/9c/c1/f248b6843554feab0ec7771af6ae2ad3e5b8fffe93a7bcfb766e433a2f54/pydantic_core-2.35.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d4b2690407802eb226ec2f2b6db41eb4addebaa708b498069b5f1065efe03c5", size = 1957394, upload-time = "2025-06-26T09:10:54.435Z" }, - { url = "https://files.pythonhosted.org/packages/d4/a5/4fd6f987305675addcd600e33b6872dcb513d83f2f8cba868d656cd8ba64/pydantic_core-2.35.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:233fa378e9619923ff2e59db894b66ba7d2218c4bb2a585cad2f55579fa021a1", size = 2032545, upload-time = "2025-06-26T09:10:55.947Z" }, - { url = "https://files.pythonhosted.org/packages/23/a0/bd0a989330006b2bf16095e6b85233ab0443ccfa0934e50a352df5c7f8f6/pydantic_core-2.35.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f2043a266b5778eb5810506bccb65b9516cebd9ec47cb4324f5eb34fedf9ea3", size = 2221893, upload-time = "2025-06-26T09:10:57.884Z" }, - { url = "https://files.pythonhosted.org/packages/e1/19/9a7037407fd222b59689c9eefcb077fbc7e53c4911183b87943f384510a8/pydantic_core-2.35.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:605536d022899a25923885fcba8d26440a1e886d1b4a30efe8aab2904df9a19a", size = 2310663, upload-time = "2025-06-26T09:10:59.538Z" }, - { url = "https://files.pythonhosted.org/packages/45/f5/8db4fad46b387c40b13cfd1e170f39044bedc28fa8b845810e5290b031a7/pydantic_core-2.35.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f25a78740b4713a8c82890d1f9ba2aa2981f1289d62b4a64d6133d254077dc4b", size = 2022925, upload-time = "2025-06-26T09:11:01.455Z" }, - { url = "https://files.pythonhosted.org/packages/6e/c0/54b2fee6bbda4242baffe3283450086dddc85b2e9dc12c24b9d7cb83f5fe/pydantic_core-2.35.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ccd99ff21e453a42028019097a6519e5251b3ab4ea487c4746242eb1f4dfbdf5", size = 2162677, upload-time = "2025-06-26T09:11:03.144Z" }, - { url = "https://files.pythonhosted.org/packages/07/2f/277f493a7214dfa426d9b3bb89c1729fe9677fd543e1f5f23bd3ccd6a5e1/pydantic_core-2.35.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9dfa791d24e52cf04f6a2e72126afe56de1e1ac63aa47d6154aa64287c7d2f3b", size = 2134007, upload-time = "2025-06-26T09:11:05.183Z" }, - { url = "https://files.pythonhosted.org/packages/7f/0d/ba94e8feb6e8c1e3d5c291ef66575f6dc8db940ccf92cad9e1deebc6f0f7/pydantic_core-2.35.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:e448877efc56315c90fb21c2a067188e77e2965a522c7fd0c8e9e7b1241aed23", size = 2295959, upload-time = "2025-06-26T09:11:06.826Z" }, - { url = "https://files.pythonhosted.org/packages/98/eb/c82a74a1adb78952560990da0ba37e1f0bd5c9630470c3b4e5b51a5f6663/pydantic_core-2.35.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4ec8f579d35206fe555834653813f9f0e45d317f54fa8cac7d895c4bc3f7d041", size = 2313362, upload-time = "2025-06-26T09:11:08.442Z" }, - { url = "https://files.pythonhosted.org/packages/17/c9/36f4c881b6d5e8cd01d1d84a74a96768aca2e9cb567b87d6a83bc8e30ee7/pydantic_core-2.35.2-cp310-cp310-win32.whl", hash = "sha256:bbd3ece84327c47cffff0bcd443dcc407ee9352bb8e075254a0a4b6abc54d66a", size = 1957916, upload-time = "2025-06-26T09:11:09.822Z" }, - { url = "https://files.pythonhosted.org/packages/c5/70/ff7a04a67b061b644fcdf973d52b2aff4484a463be8b049db4d645862975/pydantic_core-2.35.2-cp310-cp310-win_amd64.whl", hash = "sha256:8ba33dbdc2f6bfb5d358056fba485bac4b7ca0880066fbe24aa6c034d975057e", size = 1980287, upload-time = "2025-06-26T09:11:11.268Z" }, - { url = "https://files.pythonhosted.org/packages/43/9c/f7523880937f7127804221a63e51e02d65b121aeeaa4f0345bf80efebc35/pydantic_core-2.35.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:418aa2d8f09dda756bb3d7fe6febbf0825d2eb9a974b4d2ed6bc9684534f7014", size = 2100218, upload-time = "2025-06-26T09:11:12.981Z" }, - { url = "https://files.pythonhosted.org/packages/67/d0/8b02ae2011ecc63fe1d7d70e8bc3bddac5dc10a75698f3bb46a3e3eab943/pydantic_core-2.35.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a0be0df724926b1e7bee0d798091bb64672bfd754f2ebd30b04b370b597090bb", size = 1864011, upload-time = "2025-06-26T09:11:15.224Z" }, - { url = "https://files.pythonhosted.org/packages/b4/a1/239ba1771df0bd87a9bbf6e99692053386d4c4a492848e09d10dc1699932/pydantic_core-2.35.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f313bdcb843a584756abf3ba8e5f9bde9e77e54dd0d54192ceb3de0121c6cd", size = 1956730, upload-time = "2025-06-26T09:11:17.311Z" }, - { url = "https://files.pythonhosted.org/packages/93/dd/7793f37066eb7c040965f9fcd858fb51a1ba05c52ef3b384ddc4e9fc3283/pydantic_core-2.35.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0e44b9eb71c5f5cfd3104efc26dfb983cd6156211a954fb9a7eb8c9bed15ac2", size = 2033226, upload-time = "2025-06-26T09:11:18.721Z" }, - { url = "https://files.pythonhosted.org/packages/62/b2/dee61b1023f4fa3907feb00a7eb26f4caac0fceb5bcda9022eac764b0f76/pydantic_core-2.35.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44edd82679764e5de486df386ddf640bd9ca9cfca2cccf97f36635c8d68c6648", size = 2222477, upload-time = "2025-06-26T09:11:20.535Z" }, - { url = "https://files.pythonhosted.org/packages/44/f2/2c3082878354cc89714d232456dd1db2b8895c15dc222afaa119afd213e7/pydantic_core-2.35.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3cd7c55b6f98c0118d4e0acc4b13287e4fa1eecacf72ff0a5b6b188a5ac4e2b4", size = 2309898, upload-time = "2025-06-26T09:11:22.243Z" }, - { url = "https://files.pythonhosted.org/packages/79/5b/822df9feb2e54109d0d80fbfff5698975aedc930e88c02f3b1a62252c622/pydantic_core-2.35.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fdc842abb24b14f2e757d0f6dafd292417437dde1f391f7875fb4d03273a26b", size = 2021511, upload-time = "2025-06-26T09:11:24.044Z" }, - { url = "https://files.pythonhosted.org/packages/25/07/1923a0258f7405f8bdaeab7017ad4b3f90802d7afff803a0eb6a33ed06de/pydantic_core-2.35.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ecd87e1b865c3660f1ced84f12a879194d127eb95d84a0653baed2e5b871d215", size = 2163898, upload-time = "2025-06-26T09:11:25.512Z" }, - { url = "https://files.pythonhosted.org/packages/ba/5d/a12afeb9cef9ba359520f550f9210cd98ef78a9cb9a2eaed847771087c68/pydantic_core-2.35.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:218c90e2fca779a198e1273c3addd32ee1c6120a07a58c0cdea9d8688b50073f", size = 2133910, upload-time = "2025-06-26T09:11:27.173Z" }, - { url = "https://files.pythonhosted.org/packages/3f/f6/6aa0fce0c0f1b434b6ea78026e8bf894531b262c939062aa44365b0a2d41/pydantic_core-2.35.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:988d717f73612d82ba73b3a31014564d8de570d411c0a05576756b2105bc2800", size = 2296636, upload-time = "2025-06-26T09:11:28.675Z" }, - { url = "https://files.pythonhosted.org/packages/df/51/8fc6b935d36058dd6726588a568ffd2ae612dee511f02ff14937f791c631/pydantic_core-2.35.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2f10619f4bbfe36abc31dd12804fd4dd6da79db578b4fbcfdbdc0ee56cc9b150", size = 2312542, upload-time = "2025-06-26T09:11:30.095Z" }, - { url = "https://files.pythonhosted.org/packages/3d/34/f76f239e62458d4be48e201195fdf3d77b7f9d75f5628854b727366d5d8b/pydantic_core-2.35.2-cp311-cp311-win32.whl", hash = "sha256:a42825c9d23fdebb1d1ae4a918c8cb8edc5d5f6c041437248b4dec0a322f43f3", size = 1957708, upload-time = "2025-06-26T09:11:31.923Z" }, - { url = "https://files.pythonhosted.org/packages/3a/4a/29f4f6548a0c53a0bf1ae3918e0c8451f5653792f94d2a7d7b7a0b2150f5/pydantic_core-2.35.2-cp311-cp311-win_amd64.whl", hash = "sha256:d536dd9dca75f1dced3fb704c8a5b80a326ed2ca4af2531f6cf6b70f585f747b", size = 1979396, upload-time = "2025-06-26T09:11:33.536Z" }, - { url = "https://files.pythonhosted.org/packages/92/af/20c9f56d0659abfbb89d82b97d60fcbceae4399d0f4a1207ce5f2d685239/pydantic_core-2.35.2-cp311-cp311-win_arm64.whl", hash = "sha256:9027579f64a3f11f812e7db7e0fb834b7994706536ed37101ec218b2755e80d8", size = 1960949, upload-time = "2025-06-26T09:11:35.045Z" }, - { url = "https://files.pythonhosted.org/packages/94/5f/a9063d1f3796f97782558cb662e799fc8d277d62964c3a1f2013706d09e8/pydantic_core-2.35.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:729c3cddd0e853aab1af68553a9ff84f0634ee3e375f5f810ceb18e984079713", size = 2070203, upload-time = "2025-06-26T09:11:36.861Z" }, - { url = "https://files.pythonhosted.org/packages/0d/7f/710de2e14379b50d0ee34aeaf96fb492dacff0c8765e6fc6ed6ab8d6d006/pydantic_core-2.35.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e20698eacfd33677b571ddd3fe9ea7b7391bde3fe8792ab8654f199efe8255b2", size = 1863636, upload-time = "2025-06-26T09:11:38.73Z" }, - { url = "https://files.pythonhosted.org/packages/91/29/5b5ffb0a428c8c01007d2ea57faed79dd0488d927bf51d9c523c44a82fad/pydantic_core-2.35.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1dfdcc070cead35ecf3f7626918152153882564c3ad89a32eda0ae99082881b", size = 1927787, upload-time = "2025-06-26T09:11:40.274Z" }, - { url = "https://files.pythonhosted.org/packages/9b/3f/b72ca0dfcaaab7864fbb749acf7b25c74497593891ce4dbd732e0bd1ea31/pydantic_core-2.35.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c4e02ba313ad4a699540346296b045a2da540b0855557d505cee75a62725c105", size = 2011357, upload-time = "2025-06-26T09:11:41.89Z" }, - { url = "https://files.pythonhosted.org/packages/05/5f/e1c23fd7b498bdbc697d4e4dbe24ba0c9a2a2ac19c86a84a2e7d6d99ee53/pydantic_core-2.35.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d98c0555fc071955e02655ebfe93e3517f4f1078cac24a2a99ae44a22d178297", size = 2183390, upload-time = "2025-06-26T09:11:43.425Z" }, - { url = "https://files.pythonhosted.org/packages/2d/45/9f2fee46079b6a73436ea41788d941acae25ce21a98d1e9de472ff678981/pydantic_core-2.35.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6dcdb03a6c9a54a8a8d31dd8a4360e83480088bc01f39dd418d7ad0038ae749", size = 2302778, upload-time = "2025-06-26T09:11:45.039Z" }, - { url = "https://files.pythonhosted.org/packages/6e/dc/39414460f2fd61c34c765b19977c1bcbe790bed59519f001bbc544ec672c/pydantic_core-2.35.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a36a887d0cf03401899ea645bbae332174261595c130427da09b610db0c28741", size = 2031187, upload-time = "2025-06-26T09:11:47.347Z" }, - { url = "https://files.pythonhosted.org/packages/d7/36/84a0c89f34f47f7ccd2e1e8c45796e1206683c84b2c63ea70eb5fa6d52df/pydantic_core-2.35.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:de60ead6376bcc20740381fd9329184ee89062a4fab3f7d52de8884aa8a44728", size = 2141947, upload-time = "2025-06-26T09:11:49.222Z" }, - { url = "https://files.pythonhosted.org/packages/47/ea/6aba53dc827302828cd143e578b6b3fafdb2904a5f06ecb9473e1782288e/pydantic_core-2.35.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:69c0a2d6be2d4eebd95a34e364488cf5b81424d678902f3ea78fb10a17087fab", size = 2105124, upload-time = "2025-06-26T09:11:51.052Z" }, - { url = "https://files.pythonhosted.org/packages/fb/c4/0567bfbed1aa6e2ba89e02b65756fa497f33e3166b32708a762f1abfec25/pydantic_core-2.35.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:92c2b12b7c009ae08c056b7f02be5bb3a8e6d15d9127f93c8021c1c357766eda", size = 2274169, upload-time = "2025-06-26T09:11:52.527Z" }, - { url = "https://files.pythonhosted.org/packages/46/a8/78e88e813d854a5943c26f21824740c6d420eddeb0f33384b7017170f5ce/pydantic_core-2.35.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:41c9c4fc187c44865b3a8350221ec5ba3b4ee2ddd0519b4adba902005ab0699b", size = 2291682, upload-time = "2025-06-26T09:11:54.191Z" }, - { url = "https://files.pythonhosted.org/packages/e0/fc/20ad4c9c2d0e0792676f827f80debc0acba1d572967b95e78ae686165fbf/pydantic_core-2.35.2-cp312-cp312-win32.whl", hash = "sha256:370f96a267fb7e143ecc72a94300fff3499d876aeeac8e1c40469c8602aec417", size = 1936260, upload-time = "2025-06-26T09:11:55.604Z" }, - { url = "https://files.pythonhosted.org/packages/20/dd/12f4c03bc6e065d4243f5dffb61e2d73a39663ce27a2da1ac68746459308/pydantic_core-2.35.2-cp312-cp312-win_amd64.whl", hash = "sha256:6544065eb63995e6c8f30119c8297acab0426c07231f33b792fb6176c29ba771", size = 1989012, upload-time = "2025-06-26T09:11:57.379Z" }, - { url = "https://files.pythonhosted.org/packages/20/30/0464baddfb951f058c7d0e8b4357d0c50be7fda1a03042fb765057c0435d/pydantic_core-2.35.2-cp312-cp312-win_arm64.whl", hash = "sha256:803b795a036c4c89ad1e8d0131b2a86a17aeee29457ab53de7568e5cd5dea2c0", size = 1941820, upload-time = "2025-06-26T09:11:59.396Z" }, - { url = "https://files.pythonhosted.org/packages/37/47/526a4c40a6d250f1d6374af5c46b2174c52e3c34ca8dfa3a0a5d0413608b/pydantic_core-2.35.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:516daf05b92a9211d0ea0ca26cc0bd5ae4e475dd4a781ae424fbfb68ac74eafa", size = 2075799, upload-time = "2025-06-26T09:12:01.061Z" }, - { url = "https://files.pythonhosted.org/packages/97/04/ad3c36647e19b5f4c2f4fe3e3fe8a8f4f0fcd8a91c1e87095bcd2fabca23/pydantic_core-2.35.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4af1513116437372e30bb46684f1370bfae642d15e122f358c266714653bfbea", size = 1862204, upload-time = "2025-06-26T09:12:02.764Z" }, - { url = "https://files.pythonhosted.org/packages/a4/74/5cbbc96d26a616276b505e9e131df9a127bc198448b2d7104c4a930cf944/pydantic_core-2.35.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d4b28d4d85627b20bcb212c5e1e9b64dd5dd03521827be9215a38cc81d159e9", size = 1931401, upload-time = "2025-06-26T09:12:04.39Z" }, - { url = "https://files.pythonhosted.org/packages/0d/58/c0325e8352432262c5e46f6616cc5cb3ac4948358decb337a6681dc4fb25/pydantic_core-2.35.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e3df7686480d6797b664e304b78e9ef8d2092f65254999791a8935c580010ba5", size = 2019957, upload-time = "2025-06-26T09:12:06.068Z" }, - { url = "https://files.pythonhosted.org/packages/86/fc/48971f4ceb375739ce9fb24fb435a97eceb886bbcf10b44f61a09aba6d39/pydantic_core-2.35.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74d1ea189ab9f0c41bd8d32728f399484aaad2f23b7cc02dc058f055a4bbdcb3", size = 2187652, upload-time = "2025-06-26T09:12:07.8Z" }, - { url = "https://files.pythonhosted.org/packages/f1/b3/6e3db6bc1075189a75f0b7c776a9d3ac99035bff0f15e16ec20e2ad65a6a/pydantic_core-2.35.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:46981f8cc09a05243adf9f0bcbe4107b8dec7988fd49b35b5d82797d1b162a70", size = 2300800, upload-time = "2025-06-26T09:12:09.488Z" }, - { url = "https://files.pythonhosted.org/packages/cc/de/560965eb01915181a0f966c2b567dcb43c70114a7115197f2ef6d9aab9ee/pydantic_core-2.35.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85014d139aeffc3eef49ca31dcfae7e33deb318d98bc91d3641c5237452e9fc2", size = 2029220, upload-time = "2025-06-26T09:12:11.179Z" }, - { url = "https://files.pythonhosted.org/packages/59/08/4263e687d558c6fd4f365f8bf1472af0f8f3c0858a200f3f3f37326cbd6a/pydantic_core-2.35.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:08cf09bfaffe3b263042d1fb6fb3d2c489f5caca35cf75daece350e08dcea0e0", size = 2147526, upload-time = "2025-06-26T09:12:12.817Z" }, - { url = "https://files.pythonhosted.org/packages/ab/5e/214bdff076d40827d154b73b333f6c97c578238dbc8a191092d3831ad932/pydantic_core-2.35.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cfb1b28a1536977a0fc01de3d62701af87b92ed69a87893c766d87a825a136da", size = 2108235, upload-time = "2025-06-26T09:12:14.876Z" }, - { url = "https://files.pythonhosted.org/packages/8a/51/1365cb7520754b1e4de373574b28758613b5adfb97c7ff853151ea124495/pydantic_core-2.35.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:925e8fbd8226c6b89fc98dd5ad4c745674c0d9722a314cea174935cdc4e03aaf", size = 2283149, upload-time = "2025-06-26T09:12:17.029Z" }, - { url = "https://files.pythonhosted.org/packages/5f/ae/7f382d03b5c0afa9b218623719d754442396e9564f2748e8d4b6aac1bf0a/pydantic_core-2.35.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e489d068417e4e4ce2436d90e1d1593eb29dfe444cd2f3b565f4c4558c06350f", size = 2296635, upload-time = "2025-06-26T09:12:18.767Z" }, - { url = "https://files.pythonhosted.org/packages/31/b4/b88244c5419da51e58ecd3248ad429f038b456786433298c330b4a62abef/pydantic_core-2.35.2-cp313-cp313-win32.whl", hash = "sha256:b7d62bd120a3c0d6f8ccfcbe8df4690076289dbbe7435038c076c2db7ee5f241", size = 1944474, upload-time = "2025-06-26T09:12:20.486Z" }, - { url = "https://files.pythonhosted.org/packages/0b/ca/1bb4a1e23abbfa1d2476b6a33494216f62ff41ffcfe10706a2ea15a7ca3e/pydantic_core-2.35.2-cp313-cp313-win_amd64.whl", hash = "sha256:61e801276b7cc7d64866d19fdba58b47d85ce1d3bb74023514871c060f500680", size = 1988649, upload-time = "2025-06-26T09:12:22.246Z" }, - { url = "https://files.pythonhosted.org/packages/70/41/179c19b52cb3753a05f574af46e222f0e1cbd389695b357bdc664a21d017/pydantic_core-2.35.2-cp313-cp313-win_arm64.whl", hash = "sha256:7e4a161d53d7b2b06836624cde0fe7cf250029771510c24e9f036ff8d4232b84", size = 1946561, upload-time = "2025-06-26T09:12:23.956Z" }, - { url = "https://files.pythonhosted.org/packages/ec/37/ea7c5cc3f52b05399a4a26f1d81146fb6d2d42b65e240cf873a25adff7c6/pydantic_core-2.35.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f43c7dffa9927a89053c38c6802ee8ca3662a58f590f2af031c440dc6d8c9687", size = 1816447, upload-time = "2025-06-26T09:12:26.166Z" }, - { url = "https://files.pythonhosted.org/packages/61/60/2ae343509a998ac75152a9c1e64f0a9001a00c7f287425a036805408ba6d/pydantic_core-2.35.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70c670c7d6d09c52556063c827ebea052f365c6c00d55d7f797af93d416776b9", size = 1998407, upload-time = "2025-06-26T09:12:29.086Z" }, - { url = "https://files.pythonhosted.org/packages/e7/19/42a9e6bc18782fcfce9644c5dd0e8bfc070c5c76d21da6b5da42c1b8d957/pydantic_core-2.35.2-cp313-cp313t-win_amd64.whl", hash = "sha256:9a5fc71284a976e8567f819e59ae2cfff90b601587391d0ff30753a7cc921ba4", size = 1949976, upload-time = "2025-06-26T09:12:30.893Z" }, - { url = "https://files.pythonhosted.org/packages/a6/00/3c68826f05f52189a27a0632cde09018848b4ef86d8b6101cc500de4534d/pydantic_core-2.35.2-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:c98d315f6bd97d972167da5c0d00c4c10fb1a6466faa7705c90a4e8dd62b283b", size = 2079378, upload-time = "2025-06-26T09:12:32.613Z" }, - { url = "https://files.pythonhosted.org/packages/65/2f/53d88d3c1ca38203d917c48d46eab3877e47d6c959d36d4ca33ad6369919/pydantic_core-2.35.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:fbbf234a2dda1a230ca0d322f12ce63d1671e471b81826227533a7a516aca587", size = 1855135, upload-time = "2025-06-26T09:12:34.228Z" }, - { url = "https://files.pythonhosted.org/packages/a0/53/95e89a7667a6baf5d18b84f12858992a33d4e24840a0ecc4cd6c3129704d/pydantic_core-2.35.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cca7e87119a1c692e9b45eb4571ba016850c0d5567a8376f207681f6b1eada9f", size = 1930394, upload-time = "2025-06-26T09:12:36.037Z" }, - { url = "https://files.pythonhosted.org/packages/8d/92/9cdc56f94f7be249332dcd1ce1a8bb9cf3fc9300627961d3aec7283b954d/pydantic_core-2.35.2-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6512ce3ed05be2609527577d7111d7993086945244345192ec74f7184c0afd05", size = 2022239, upload-time = "2025-06-26T09:12:37.666Z" }, - { url = "https://files.pythonhosted.org/packages/cd/ed/01f3ece1ead2996c7aa5b386f2dd520067ac5df8517a559f86e7ca729352/pydantic_core-2.35.2-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c027ebeda7facfb166c7c971c4ff32241b006587bb73aeb5a980a3e183e0b15", size = 2187755, upload-time = "2025-06-26T09:12:39.306Z" }, - { url = "https://files.pythonhosted.org/packages/03/74/fd988f56f1632a4fc029e9497c9408eb6119905204759793370044cf9ee4/pydantic_core-2.35.2-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:777e3ce61788df541616f78a40ac3fb1c2dd7048540f606f8155b0098cf53cda", size = 2304611, upload-time = "2025-06-26T09:12:41.144Z" }, - { url = "https://files.pythonhosted.org/packages/31/13/cb780bc228619f3b2e5e9395a9efad5030fb3fbe658e25856ba270fc0bbd/pydantic_core-2.35.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70bc9c0984b9b6da0f064cd5a1b6b5111637f30dd05999f565faa6d5e10e5e62", size = 2024930, upload-time = "2025-06-26T09:12:42.967Z" }, - { url = "https://files.pythonhosted.org/packages/a7/95/26663d10bbc399491eb59092798fc9208951d4daccd745216668b193606c/pydantic_core-2.35.2-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1d2c4b7b6bc2dcdafd43e5438d3ec07ec946cd0319215e8753044a51f014020b", size = 2149967, upload-time = "2025-06-26T09:12:45.264Z" }, - { url = "https://files.pythonhosted.org/packages/81/7b/ffaa338c91c354713ee1289a8473353e712e9052b2210927d02f8274d599/pydantic_core-2.35.2-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:4ad78aab617fb7dfba6467e74ebb96b0186c674bf4fba62e5d41a17136309cff", size = 2107265, upload-time = "2025-06-26T09:12:47.093Z" }, - { url = "https://files.pythonhosted.org/packages/8f/84/1774de8757af4911cdeb6df4d2d950f9943f8f1550115ff5f86ec53132fe/pydantic_core-2.35.2-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:e0d1595cdd5909fbbaddbea6d75e9c2906ce83987487a6394aef9a5bd183f298", size = 2285357, upload-time = "2025-06-26T09:12:49.41Z" }, - { url = "https://files.pythonhosted.org/packages/f0/83/edf1dfa0d038645a049c7fc25b7cdac67df2175b7a876062a6a3d4f2dd66/pydantic_core-2.35.2-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:fe1759f2b271b08a72067daee979ee901b419fafd2a859ec65188c78055257f2", size = 2296648, upload-time = "2025-06-26T09:12:51.805Z" }, - { url = "https://files.pythonhosted.org/packages/ca/0d/0dd893a4ea3525f64ce5803a71ab5a2b9c60fefd47fef98da8573d1ab8b4/pydantic_core-2.35.2-cp314-cp314-win32.whl", hash = "sha256:aa3f99813b36c31e931158d8f4651b6a43d7f31393160b71b5e3b84b3b63d95d", size = 1946974, upload-time = "2025-06-26T09:12:53.818Z" }, - { url = "https://files.pythonhosted.org/packages/0e/4d/711b0d104c369872798268af12a4f4376d4b654a96ff7b214149ef2287da/pydantic_core-2.35.2-cp314-cp314-win_amd64.whl", hash = "sha256:32db6926f8052156ba1069bb001c6bbde8b313d1bd1588d25a08a6c08f36ce13", size = 1983085, upload-time = "2025-06-26T09:12:56.157Z" }, - { url = "https://files.pythonhosted.org/packages/aa/c5/a283e96df368e83e7b265b7f5468e4a547ec1aab4968d43c319ae057cbb2/pydantic_core-2.35.2-cp314-cp314-win_arm64.whl", hash = "sha256:55caefa09d87be7ed72660cd318ce2ecff8dbac4e0b7f9836d90b3a44435e76c", size = 1946739, upload-time = "2025-06-26T09:12:58.547Z" }, - { url = "https://files.pythonhosted.org/packages/20/da/3a44d1551f3fe1ebfc5532ab9d3c3c6899af08039d7c733056c831909f77/pydantic_core-2.35.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7fe26646e559862b3746a0d041a62e354c726d2748201fa42864350519392186", size = 1817085, upload-time = "2025-06-26T09:13:00.455Z" }, - { url = "https://files.pythonhosted.org/packages/14/61/eb259896e54d6786a846093cc1c520535800ebbd760df1b22ad0e5361758/pydantic_core-2.35.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:658ea74d256197d025cbbc6e02682e57af806e0f63e2db3a96822585b9cb399c", size = 1998543, upload-time = "2025-06-26T09:13:02.429Z" }, - { url = "https://files.pythonhosted.org/packages/01/1a/b114629a36122d8914005d245d755b3dbe4869f4a9eb8b1df6d4966b11d0/pydantic_core-2.35.2-cp314-cp314t-win_amd64.whl", hash = "sha256:723c42a6d1ac459792d514d93c900179f25bcc0f4d9d0d93950f9fca9293c0b6", size = 1951691, upload-time = "2025-06-26T09:13:04.401Z" }, - { url = "https://files.pythonhosted.org/packages/8a/95/af775b412a7cb6140b9a8c8f784e1a032f0cc19b507c80d5917b011e193e/pydantic_core-2.35.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f2b5b458eeac0d932d90146dbe8b565779c017ce12933354589688e54f61bc1a", size = 2100658, upload-time = "2025-06-26T09:13:06.355Z" }, - { url = "https://files.pythonhosted.org/packages/84/e6/4ae7b7fee07f0a4e11749e4ff0c949e91ee1b416fe4ca30e46fdf790d168/pydantic_core-2.35.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:00ce8847af708d99a099f0952e5eebf6ba16314b79ca87615bd086ef459d402a", size = 1918588, upload-time = "2025-06-26T09:13:08.263Z" }, - { url = "https://files.pythonhosted.org/packages/97/b3/5386e721a412871c992a07fc400b2da0c696ade7eac0d8ee60104d54c693/pydantic_core-2.35.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2eec1b73e13b237b66376d4c2c803b0d9721ad9d3369aada3eb4f731b99300d", size = 1957670, upload-time = "2025-06-26T09:13:10.267Z" }, - { url = "https://files.pythonhosted.org/packages/d9/2a/619ce03aca0daa37494519d55645152df6eb57a0da625089914f74869ca2/pydantic_core-2.35.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07b0a61dfc194fb3517b891f84e17218490df1e94bdb70e3e043e1c51c1bdce8", size = 2032811, upload-time = "2025-06-26T09:13:12.316Z" }, - { url = "https://files.pythonhosted.org/packages/91/d6/0d81b7b50d3feb8bda41b8746af2c3994a99d14a49b355f72cdffbf8fbc5/pydantic_core-2.35.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91b82c70c241b6c5b8d1e779ee207439f4b02b3f1a3f25018996a8b8150c6d95", size = 2222434, upload-time = "2025-06-26T09:13:14.37Z" }, - { url = "https://files.pythonhosted.org/packages/48/1f/9afa1b41a6e43d983a8ff09efe8237c30ade57d82fb5de9fd9382ed3ea8b/pydantic_core-2.35.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18332e0d3d8cf56e19215c66e190e9e7ebe3caa1267b93ef3d4307d0b024e231", size = 2315560, upload-time = "2025-06-26T09:13:16.703Z" }, - { url = "https://files.pythonhosted.org/packages/94/a1/c72630705f1ed0bf3ed0c89e140d3c6a36b24e5d7edcba98d2ce6056a534/pydantic_core-2.35.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33c270945ec14c15e4f3018a3df694a772f8bf86f95f6d29eba2973aa8768ae0", size = 2024836, upload-time = "2025-06-26T09:13:18.758Z" }, - { url = "https://files.pythonhosted.org/packages/e7/bf/0dfbf6bb5b9bfdd153c0d38d3351135d54b0119875e5fc1611468bd8ea39/pydantic_core-2.35.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:431c779c16a610af08800dcb9510047b8a79c056998450065cf16d18e1f3116c", size = 2163036, upload-time = "2025-06-26T09:13:20.516Z" }, - { url = "https://files.pythonhosted.org/packages/12/d8/41b2d192093df23aed94a1cdedd3c708ad5d44edf215f25162869b671766/pydantic_core-2.35.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5839f03ee6bfabe9dd2c20713c8f8c8b2afcc6ea1fe2a59d072edd8977f29aab", size = 2134341, upload-time = "2025-06-26T09:13:22.23Z" }, - { url = "https://files.pythonhosted.org/packages/73/c8/f2fcf7b51d26c02ebe11d11a15aea862d628dff0961e1e27288d069f71a0/pydantic_core-2.35.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:a9162c985d319750391294222f72596b40e5aee6f227d304874216b8230fdc4b", size = 2296061, upload-time = "2025-06-26T09:13:23.899Z" }, - { url = "https://files.pythonhosted.org/packages/98/19/c026a9e8b52be6a681d27fb704ff013b7406bd7541665f290a77c805b4be/pydantic_core-2.35.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:84f0e5227f6f0777f72f370f1eb9aa29c125834010f4bd46b1cd44ff62f23a73", size = 2314144, upload-time = "2025-06-26T09:13:25.59Z" }, - { url = "https://files.pythonhosted.org/packages/6f/e7/86d19d1478f92d718d91faae13e4b63cd3d579c45084a75698febcdc55b2/pydantic_core-2.35.2-cp39-cp39-win32.whl", hash = "sha256:0bd6823cef15f84e9c4b2fb020c94811d58bd31b39c40418a6ea861beddb8161", size = 1957696, upload-time = "2025-06-26T09:13:27.304Z" }, - { url = "https://files.pythonhosted.org/packages/97/e0/280e9a647340ac57679b9fc761b9bc41b4211dd08ef1070162e69847b157/pydantic_core-2.35.2-cp39-cp39-win_amd64.whl", hash = "sha256:176e30864db3c41d911a5c9de9483eef67e66948a82a75b82a7d41d539264a01", size = 1982092, upload-time = "2025-06-26T09:13:29.092Z" }, - { url = "https://files.pythonhosted.org/packages/a6/b9/6b1ea767a5b8c2095f0c42d159479bbcc890f63328a96b5cb3eb41a156cd/pydantic_core-2.35.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:efb7e06be8a196787173edd8f391e8d779b67b23a6c075493da6a79dc4eee7d8", size = 2100109, upload-time = "2025-06-26T09:13:30.819Z" }, - { url = "https://files.pythonhosted.org/packages/51/2b/a00dbcb786d2010a10586b93a208e0bb3e8de91b2b83213ce3f03ca08953/pydantic_core-2.35.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:255dbe8107c4fdb77366e4791aec20288e9cae1702340167665d14a9bb28826a", size = 1920643, upload-time = "2025-06-26T09:13:32.556Z" }, - { url = "https://files.pythonhosted.org/packages/11/24/e1d31aa070906e6404ce0750a3a78c1e52b91befa904880180a91b07fdf9/pydantic_core-2.35.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed4896efca4d8e1588c22b621e2501f116f15aa136231309c264baadaae15fb4", size = 1956740, upload-time = "2025-06-26T09:13:34.353Z" }, - { url = "https://files.pythonhosted.org/packages/22/52/df68d234e84589fdf41a0782f0ad316e097ad8c545844fc31debd41b14b1/pydantic_core-2.35.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2438970f0a921509802d983e1f34cc481785e94b7869316c3cbf0b4eb6ede4d9", size = 2144252, upload-time = "2025-06-26T09:13:36.167Z" }, - { url = "https://files.pythonhosted.org/packages/d6/d7/5a662e0b6ab229b964de62c2a3b3374db6315804a868ee03ced40277a0e6/pydantic_core-2.35.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e9cf4c586cfbcab3cab149f66619491ac90ffa263acfdf121a20d3c076c790fa", size = 2158039, upload-time = "2025-06-26T09:13:38.429Z" }, - { url = "https://files.pythonhosted.org/packages/37/b0/4b80dbf945c62c6ce2cab2a38367ef3d5c2f0e4144fd982c4edd93e808c2/pydantic_core-2.35.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:daaabf25ee01056964ae55d1e54d9b5e70c8f5f332c7f8d3886e074e3586b1c1", size = 2133733, upload-time = "2025-06-26T09:13:40.427Z" }, - { url = "https://files.pythonhosted.org/packages/dc/01/8b04f8dbb8bcf45abc4b66c12df7fe4af44d88d044ea1e74632361537ad1/pydantic_core-2.35.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:20f5f887714527feced10a0d990d62fd4ccb0638db24433b0abdfeb5612027e8", size = 2296576, upload-time = "2025-06-26T09:13:42.382Z" }, - { url = "https://files.pythonhosted.org/packages/10/27/f147c780c7bf85e33ca32c9ec4a1dbb62ee748631d5f0f48a0686b4a1a28/pydantic_core-2.35.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c7c181d5f23fd060a883f3676916ce3213420e2a7770df9715299a1d6e2342a8", size = 2312645, upload-time = "2025-06-26T09:13:44.914Z" }, - { url = "https://files.pythonhosted.org/packages/24/b1/40b7eb6a2439fdad61552100302d7a9552b4700f8f0bdc210856b62bc5bd/pydantic_core-2.35.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fff63fe28079e6f292460aaf32e46866782abe5e46736550037d8a0d2ecba602", size = 2133083, upload-time = "2025-06-26T09:13:46.734Z" }, - { url = "https://files.pythonhosted.org/packages/31/7f/7b75e02a65011d6971ac1e5cf3c6c10a6b2bfa80d3a4a4cd7ce9bade645a/pydantic_core-2.35.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c0bf1e8531c3497b6920329efaa84a94a4e679cb838ba9122dce663c9ed3de6e", size = 2100916, upload-time = "2025-06-26T09:13:48.546Z" }, - { url = "https://files.pythonhosted.org/packages/c7/10/d3d55d48010455c772154a5f0cec4dfd859a6ae94e55c69362e8001b58bc/pydantic_core-2.35.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:a20dfdbae8a102bd3a66c69bbdf575ce27b83f7f971525a9040d0ea34a749826", size = 1921294, upload-time = "2025-06-26T09:13:50.71Z" }, - { url = "https://files.pythonhosted.org/packages/a1/a2/c1d7163c7ec7e2eb7c6218e7073baf3875eb663727da2f30d21333b15873/pydantic_core-2.35.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd6df0bfb8517aa87efac1c6a06e6ef0d54e744aa000bfc9bfc35dec2a3cdd49", size = 1956635, upload-time = "2025-06-26T09:13:52.538Z" }, - { url = "https://files.pythonhosted.org/packages/79/3b/e4a8b1463ebccc9a176bf4ed9bbf38b8e44bcdde4a175446d5fcd37edad3/pydantic_core-2.35.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831efa6c2e5de5ec7da51cac90ae10e9e7233033f58bf20f8713c9b433ec3c0f", size = 2143697, upload-time = "2025-06-26T09:13:54.384Z" }, - { url = "https://files.pythonhosted.org/packages/39/3b/29fbd41569d5adb8bc2e8b8fa9b24f0b74397f9c2863b0d8bf920569058b/pydantic_core-2.35.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d8f836abfbec75dd454abc49d45b12e5ab6522fba7530a90a1a60e6e4726f8", size = 2159642, upload-time = "2025-06-26T09:13:56.36Z" }, - { url = "https://files.pythonhosted.org/packages/96/8b/58533c6e2e78d5e3ba50f695bf82892d3c9c60c2a2de9462dc12e23cd85d/pydantic_core-2.35.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:79a7a06006f8c7df6645533cc44573287b02e78b0343444aba4e2c36ad98fbd5", size = 2133360, upload-time = "2025-06-26T09:13:58.894Z" }, - { url = "https://files.pythonhosted.org/packages/a2/ee/fc63689f732616f183a51ddd53585204ff4c12d87cf3e6ed9abca4aa8845/pydantic_core-2.35.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:28dde3a7e0236fb59d939f4e85887845fe9429aae79344c7fd8de4f8ad45bce4", size = 2297529, upload-time = "2025-06-26T09:14:00.7Z" }, - { url = "https://files.pythonhosted.org/packages/68/36/fa2413b797db1ddae26e13c3a6e637a2b332a5ecb6caaef6383a597514c8/pydantic_core-2.35.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:83f8b62a2d6be052a5e0b990f2b317f83c814db51825ccef6f5f5dfee1c06257", size = 2312255, upload-time = "2025-06-26T09:14:02.48Z" }, - { url = "https://files.pythonhosted.org/packages/8f/c3/efd6dc2a27bbe9dd3abcab945ea2fd60a1a94b0e30eb49363e1f88de528e/pydantic_core-2.35.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:d50783e34b634fe11e3f7d329e4a6689965d595e40f9ed22405d3802647cf77f", size = 2133294, upload-time = "2025-06-26T09:14:04.642Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/e6/e3/533de0eacb89752c7536bd6551f622e70953811d4cf33f16765bc768e053/pydantic_core-2.37.2.tar.gz", hash = "sha256:78fb2a749123408fedaf540a22ca6bf0b5ec1f522a14fc00e27ede33d8ac088c", size = 443903, upload-time = "2025-07-26T11:30:10.053Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/f7/648935bc606e9b8a1f961c7f31d0830744e77d8babf09b1071c9f56bb31a/pydantic_core-2.37.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5fe49144cee5f930dbfe9df3d4aaa4ed7dd6bd64cc63096187dace92e5fd2c4e", size = 2113876, upload-time = "2025-07-26T11:26:49.044Z" }, + { url = "https://files.pythonhosted.org/packages/21/ab/0d05135c6bf31052d995c0c06eb9d1f9a55726cf6baec1480f44e190095e/pydantic_core-2.37.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:49e16fa24b0015b5eadfb54cf5ea544a17de618981e5b4d4f4437702e433c11c", size = 1880791, upload-time = "2025-07-26T11:26:50.796Z" }, + { url = "https://files.pythonhosted.org/packages/1a/83/0869c2de4cdf4d0f90b06a9384ffb7e73f667987ae3893ee3a94201560c7/pydantic_core-2.37.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fc32e7e60f2feb2c564079a44e97f4e50be22a52a88fd7eb1c7df4b4d8012db", size = 1964403, upload-time = "2025-07-26T11:26:52.482Z" }, + { url = "https://files.pythonhosted.org/packages/90/20/44f9aafede5c761b979b5d0a79bcca32818fd3b8dbba9f1780f0ff9098ed/pydantic_core-2.37.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:19d804119aa9889bf18d86f8308b87b2dfbec758eb42fdea3094eed7d29242df", size = 2041009, upload-time = "2025-07-26T11:26:53.96Z" }, + { url = "https://files.pythonhosted.org/packages/46/e7/0f53c8e4f3f8b5de93bf584a3e3f0c352046d4262da0777c987102991e3c/pydantic_core-2.37.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:188ef23ea5341c27d307badf9f14caebba36720cb24e1d67b7bfffbee0f36bb4", size = 2228327, upload-time = "2025-07-26T11:26:55.721Z" }, + { url = "https://files.pythonhosted.org/packages/69/3e/43887670f9883a661e97d64decb80214773e77d3d99cec80a01428f3c1de/pydantic_core-2.37.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c066b2f6424e2837d0855131cba3cb2bb6c5229da978f37fc301f577fac74970", size = 2305599, upload-time = "2025-07-26T11:26:57.05Z" }, + { url = "https://files.pythonhosted.org/packages/b0/cc/668e8f22df0a95e3f401acdf6d24954e5238c1d27a75c770fe3cf503d8e4/pydantic_core-2.37.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd3a3680429ba5fdb23f2682188a2acb166a9b96cbecbb1c9a5338acfcdcd6f8", size = 2036594, upload-time = "2025-07-26T11:26:58.736Z" }, + { url = "https://files.pythonhosted.org/packages/c3/15/46f5573f54f5c037274def1da80b6258813c6c684f1d3dea94f863da5de7/pydantic_core-2.37.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0d22cd58bb142164600fbfdaca5a1cc7a76e636e9b29a41a027dfeb2a175fe6b", size = 2179568, upload-time = "2025-07-26T11:27:00.589Z" }, + { url = "https://files.pythonhosted.org/packages/a4/f9/3a93af02eff8df724180b20ca34b20c57e85ad7659c4b9c4ed7a75887958/pydantic_core-2.37.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:15effd30feb00b341cf84b53a14402ecf1177ddf24e940defbacc066bf9b3294", size = 2141727, upload-time = "2025-07-26T11:27:03.2Z" }, + { url = "https://files.pythonhosted.org/packages/bd/4a/7e4c5ddaada092918329cbe3f47c91cf4ca73bc4979cc74e1fa406639f57/pydantic_core-2.37.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:0cdcc3ba7eac65f0cda1aea9da09681c14dc7b052d1028b291efda1710b11a04", size = 2308547, upload-time = "2025-07-26T11:27:05.027Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/05fec5271a891ed026ffeec99dfc5b3b2baed2baf7c4f6dd006f7f4250ec/pydantic_core-2.37.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:807e2a50fc1c99963a2e33490fa0a56b04e47a31534a6389921be9f3fad39a97", size = 2320709, upload-time = "2025-07-26T11:27:06.479Z" }, + { url = "https://files.pythonhosted.org/packages/e9/17/d60b349bf5f5b093ddef6ea2bd838fb09a062013c8d8b33146c9397fc309/pydantic_core-2.37.2-cp310-cp310-win32.whl", hash = "sha256:11349ab788fd56428d01ec0dc0a34d79f97dddc17727875259c9da357b8e968f", size = 1967637, upload-time = "2025-07-26T11:27:07.943Z" }, + { url = "https://files.pythonhosted.org/packages/f4/1a/99aaaef3b6f7d414a0384c2b9c3c9cee44146de442f102ad57ddd29d9e60/pydantic_core-2.37.2-cp310-cp310-win_amd64.whl", hash = "sha256:205257f8f14febda5af04c15d20018ada14ec082486ab9f90510937bdc99089b", size = 1995602, upload-time = "2025-07-26T11:27:09.575Z" }, + { url = "https://files.pythonhosted.org/packages/66/db/e43fc93054e40490dadee46fdad516f0336bd58f74e35849391f8385c14b/pydantic_core-2.37.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f7fd8347b1dbdcd529175c5a9dcb131e964e581bbf4985a2edd184ce4189f8a", size = 2113435, upload-time = "2025-07-26T11:27:11.066Z" }, + { url = "https://files.pythonhosted.org/packages/a3/d2/b777f106c2dafdf5a4320a32be5445873c11c62f57c1d398bcdcff4d9899/pydantic_core-2.37.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce36ad8ed3044dc7f4e1c023b409ba619f1e4b01c3dff2089d15d58ff1be6e85", size = 1878915, upload-time = "2025-07-26T11:27:12.847Z" }, + { url = "https://files.pythonhosted.org/packages/43/65/c910aab41b0d6dc9111322dd005d0c3b02681ccb2fb8fe0998425dbb5897/pydantic_core-2.37.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95458d6ffd174baffa92d1de7f554a5bd241d01ece213610549454df85246977", size = 1964754, upload-time = "2025-07-26T11:27:14.637Z" }, + { url = "https://files.pythonhosted.org/packages/31/4f/8adb11256c145878cfd048b195d829ae028cd6ddd6bf54ad5f2ddd6bc009/pydantic_core-2.37.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:69ca4ad75a16d133418585487a1f411d9e108babfcf16929a1a80e7749679ec5", size = 2042033, upload-time = "2025-07-26T11:27:16.437Z" }, + { url = "https://files.pythonhosted.org/packages/a0/59/5632eacb0a67484972651eba2d2a92d8c3cebfec8b5cdd11929e156e15d5/pydantic_core-2.37.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:471fdd3ce9b6c64ebec530297b89b0bff79f6a09ed8a64da7546c6bcf652fa62", size = 2228995, upload-time = "2025-07-26T11:27:18.012Z" }, + { url = "https://files.pythonhosted.org/packages/16/83/cce6ca6e70cfb595500ceb525d8a5ff7a5a9b6816fd6c8a108ebd7aa3ac3/pydantic_core-2.37.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b3e5c3916f052fa215eaf790dbec963fec112670cdb6b5043023d422c056b5c", size = 2304893, upload-time = "2025-07-26T11:27:19.542Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4e/4003a1096f852c3b4614990aacb1fcec696e6db9ce929d7dfab4466cf644/pydantic_core-2.37.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:673fbca1f76e85172e5a73f2031e281da3a509bb61721e98bf8121893c7c2f9a", size = 2034951, upload-time = "2025-07-26T11:27:21.033Z" }, + { url = "https://files.pythonhosted.org/packages/08/18/9464484912996b5fc6485d5eaa4afed9d51e1b7d95c934e3b8d2bb0d4327/pydantic_core-2.37.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:86173c14c855c7f1ebbdd8a446a985ab829c547206f5a7e6e88ff5571b9de147", size = 2179993, upload-time = "2025-07-26T11:27:22.852Z" }, + { url = "https://files.pythonhosted.org/packages/c2/67/fbe323eea3503e102b807cf5205f9282dc3bed6aa3433184cdf3e9b67bc3/pydantic_core-2.37.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:809212fa54f5940c3658cad730435218c6adfcaadb3b2c7edf4e0ef2dae56cc9", size = 2141531, upload-time = "2025-07-26T11:27:24.428Z" }, + { url = "https://files.pythonhosted.org/packages/d9/8e/8760eb01795c3d1c75e0df7c050e376c8b642fe6b6d75a1700c14f38aed6/pydantic_core-2.37.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:6a99ac69ae60b7e4425162a22342687274133f4ac42df74a8d542f2a10d4a636", size = 2309673, upload-time = "2025-07-26T11:27:26.674Z" }, + { url = "https://files.pythonhosted.org/packages/e1/61/b084ac6ead45d74f1b90d2e3fa30cf54502bf04cbd45d4392b895f98c28d/pydantic_core-2.37.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:21c471185968fab5b4b8848bbe8580b44d52511210547c20c6883b09b19872b7", size = 2320023, upload-time = "2025-07-26T11:27:28.177Z" }, + { url = "https://files.pythonhosted.org/packages/13/5d/4d1e943f76114a2a343c6e398913be5f93c6abdbc4316d7b683b0d8c6011/pydantic_core-2.37.2-cp311-cp311-win32.whl", hash = "sha256:d56baaf071198f8ae9a9fc426021e14cd7324650add0af9265669ccb51e6ca39", size = 1967351, upload-time = "2025-07-26T11:27:29.775Z" }, + { url = "https://files.pythonhosted.org/packages/01/40/7103a2919f57833778692ee5895e5964882eb887a9950334936590652bca/pydantic_core-2.37.2-cp311-cp311-win_amd64.whl", hash = "sha256:606fff9bae16d56a45ea02a7d19ce0756321561febfebe72843bfc8e102dbac7", size = 1994412, upload-time = "2025-07-26T11:27:31.299Z" }, + { url = "https://files.pythonhosted.org/packages/e1/cb/d7284e1affaa422dc0c505f817eee60bceb1cbe4248b73d1498c9fbf9b4c/pydantic_core-2.37.2-cp311-cp311-win_arm64.whl", hash = "sha256:922970c9cf4c5f744aacd992b0ac03ae3ade7dafde3af4ea81cbf617eefb557c", size = 1965525, upload-time = "2025-07-26T11:27:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/a1/c2/f2c4976b36ea1bdc051e33bca8cf230408558cf47c6bd060d418ba222cc4/pydantic_core-2.37.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:35c67588818c8c2bd6b3d75bc7fe49bd3f4ab9c62642d5e7bc4b0af6a5aae923", size = 2088688, upload-time = "2025-07-26T11:27:34.404Z" }, + { url = "https://files.pythonhosted.org/packages/ad/90/8a0c4566ef77bc2fdf08834f085a0f3d419dfe3f811d8333bf4ab021a1e7/pydantic_core-2.37.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:379d5cc78f27d1f3620d09926844f50526a41d92b7e95df73320d47668d2f1fb", size = 1876770, upload-time = "2025-07-26T11:27:36.217Z" }, + { url = "https://files.pythonhosted.org/packages/cd/53/951c17547b03fd631c28f474482dbf0fea67bfc611c9feb3234cfb5b07d6/pydantic_core-2.37.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33025a1e442e301eff4d446625e2ca7897634aa7aeddcd38a34c9d4437cb035b", size = 1932502, upload-time = "2025-07-26T11:27:37.701Z" }, + { url = "https://files.pythonhosted.org/packages/e1/b4/a1b1ccddb9f075e71d19c25d9cf4b535fa8dfa41cc0cabafb340e275cefe/pydantic_core-2.37.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e842b55174d3dea826e4491b47d0b23c219c02c13f3c5f5f03adb7797fc5baad", size = 2022499, upload-time = "2025-07-26T11:27:39.523Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d3/1c516083c71a4f9416147f02899f516c4b16af18289a49145c71d5ac83bb/pydantic_core-2.37.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e8e13418866bf058af9c7df85174cef589d7cf5d396307695e0d9c6f3c77c1db", size = 2189899, upload-time = "2025-07-26T11:27:41.156Z" }, + { url = "https://files.pythonhosted.org/packages/65/cb/de27dc5daa324e1a9b73a29ae37edaaa1e4b70608c511806be2a22a026b8/pydantic_core-2.37.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64e1fb84f8d1892d2b32f370c1eb450902f97da0042f1638749313198453e5bc", size = 2304399, upload-time = "2025-07-26T11:27:43.05Z" }, + { url = "https://files.pythonhosted.org/packages/3a/1a/591b46a452589fe2525584ccf401cea00532b8bffd20640ebebbe71d75d1/pydantic_core-2.37.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1144cc50a3e22e44b72445ed9d946021d91e11919feadc2dfbc183384969293b", size = 2041091, upload-time = "2025-07-26T11:27:44.566Z" }, + { url = "https://files.pythonhosted.org/packages/f7/c8/7ff04f64262a710ab0cc765deeb4bfe65c4f4b89e1728cc672bdefede7bb/pydantic_core-2.37.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4bc376b15d085cf8b42b3e506e4dc15886e358a71fab6fd78d4e260a1c3d8020", size = 2151726, upload-time = "2025-07-26T11:27:46.25Z" }, + { url = "https://files.pythonhosted.org/packages/6e/dc/6b75b0f7590ff425490b1d2e927d2fbec234eabe1f6bd6572d71ff9e974d/pydantic_core-2.37.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:69e85daeb48996505dbe92f94ecefa8db6ac6d7eccbd35d0e43db0c50c7e8356", size = 2113893, upload-time = "2025-07-26T11:27:48.186Z" }, + { url = "https://files.pythonhosted.org/packages/9c/da/c443fb8ba4618e518c85797a0c3e70f39c389c2172ffd256383a62ae86e2/pydantic_core-2.37.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:20386a94fdc0d83fc6b21f6879e88a9fa565763fff00f09cb93244387aeafaf4", size = 2297947, upload-time = "2025-07-26T11:27:49.72Z" }, + { url = "https://files.pythonhosted.org/packages/e9/32/ea2fa758c8b97d3beda11ee02ac84fcae8f0bc6e6d743581672f372e6d0b/pydantic_core-2.37.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ffc850e6eded246e486d17685f9bfb397477032ddb30ba7752a59f6b3f86c943", size = 2300476, upload-time = "2025-07-26T11:27:51.437Z" }, + { url = "https://files.pythonhosted.org/packages/f3/ea/a5a66dc952eee266fa35ab210e521b16ac7cf11219ae08919bcb107b0742/pydantic_core-2.37.2-cp312-cp312-win32.whl", hash = "sha256:c5f13e4bb50a3991731577ce9a0c30750a489c1af0bdcf151798c238c5598108", size = 1947760, upload-time = "2025-07-26T11:27:53.046Z" }, + { url = "https://files.pythonhosted.org/packages/96/34/33bc6b4c57e3ce55169da481d72c08c76b7ec38369d5274f154dd61b94fa/pydantic_core-2.37.2-cp312-cp312-win_amd64.whl", hash = "sha256:9e4ca3155f9b8382b0eeea5f0464cf456f316088177bde5691414230091aa810", size = 2004701, upload-time = "2025-07-26T11:27:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/1d/e7/b5760ccc11cb8778f64ce09ea06f9f79e562a460553f75b4a2e116c63946/pydantic_core-2.37.2-cp312-cp312-win_arm64.whl", hash = "sha256:ca4c5b48e83d1e718eb3d6f25b37f060526e75d5178e1ea79ad3dc183e2372ec", size = 1947616, upload-time = "2025-07-26T11:27:56.561Z" }, + { url = "https://files.pythonhosted.org/packages/b0/99/f85f974b76d9e7f226faca45552b285f1c6e22634187cccb31eeab384711/pydantic_core-2.37.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:544f6430e2fb3e332b9fef44c7709564876e8a56bfe27b7d09e41eae8348b804", size = 2093409, upload-time = "2025-07-26T11:27:58.146Z" }, + { url = "https://files.pythonhosted.org/packages/ff/97/c42cd9235aa2f3d7f1908c17d0913e4b577c0e6a3bb9a4287362903a6271/pydantic_core-2.37.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:33f67465de77043f5382d8a5237b68ca36327ebd8ab726609c66a0e8a383a13f", size = 1876181, upload-time = "2025-07-26T11:27:59.722Z" }, + { url = "https://files.pythonhosted.org/packages/64/ba/d7558ef46460544e6383ad224a1351edde6ec2113df0310e4dd25068a0dc/pydantic_core-2.37.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a686a713976796772f71117249de2bdd55edb0295964426ef2ceaa77c99b711", size = 1937685, upload-time = "2025-07-26T11:28:01.356Z" }, + { url = "https://files.pythonhosted.org/packages/5e/66/d4e5ba678659b6fabc471ce8d4dab61a39b2a0aa70b29c5daed77c47ed74/pydantic_core-2.37.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ebef7afcbb10a1269c6df9571f6a3cdba29d6415e2432a2dec03e6d782d8344e", size = 2031864, upload-time = "2025-07-26T11:28:03.076Z" }, + { url = "https://files.pythonhosted.org/packages/a6/dc/80ed1b744a5e67220822c75ace93109d3cc1c70fa3f6d3a10c6c681ecdc4/pydantic_core-2.37.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0dc5d2620b80126de92da3c2ed8503b9daba5edc8eea3c1823d6fcb188589345", size = 2194693, upload-time = "2025-07-26T11:28:04.734Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3f/7a7669f15837d34b392f87554b120e23d610039894edc137f56db7df3a2e/pydantic_core-2.37.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f80059c7e07d14000a1c59c31e304b0832448cf4cc906f9386cb19047abb681", size = 2303209, upload-time = "2025-07-26T11:28:06.638Z" }, + { url = "https://files.pythonhosted.org/packages/6b/96/0fa9cff2a5a64dfe7680fa47d411eab5eb2965ec81ecdb6584fc9fcee988/pydantic_core-2.37.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a012d9a45382b256500400f36b8cdc8ec96f6d2913b5f8ee8f767b1b092ce8bd", size = 2042003, upload-time = "2025-07-26T11:28:08.181Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a5/0c553a30312b374a371435ba063332e0380bfd7bbc8a8a2279c8ebc483cf/pydantic_core-2.37.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6a4828a9a63168ade035052c5e5d8f2a5f8ed39b3a8d085bd3c0f0577bb2aab5", size = 2157534, upload-time = "2025-07-26T11:28:09.926Z" }, + { url = "https://files.pythonhosted.org/packages/12/c5/6cb6621a1cb36e726848b4f164902450f52bcf8ccdb08199ab7b7d4d7c30/pydantic_core-2.37.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7b0f69cfbe6ab42944d84bea28c9f3a58f63fc1aef728ed176e4319ad36623dd", size = 2117283, upload-time = "2025-07-26T11:28:11.998Z" }, + { url = "https://files.pythonhosted.org/packages/ca/30/300d04f8c0a4c8e7454ea3aed25ab5791ec6bafdcab311409fed979956b7/pydantic_core-2.37.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:3f2f004f0ad41d6fd26b59a41d24c5c01d5f98ccabde338d4a35e76a864dfaf4", size = 2306110, upload-time = "2025-07-26T11:28:13.716Z" }, + { url = "https://files.pythonhosted.org/packages/38/2a/d5fe85e8f99bbd56d8865639aff06b71f1559534572f667fcf719c8a8b94/pydantic_core-2.37.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1e90e7495d50e6063bd7c1cd669a01697ff671719781d095ad1d2966a26b0218", size = 2308043, upload-time = "2025-07-26T11:28:15.518Z" }, + { url = "https://files.pythonhosted.org/packages/48/4b/864da5cee748f83de5cce65d649178856e36c86d8e2245705ced8bc95374/pydantic_core-2.37.2-cp313-cp313-win32.whl", hash = "sha256:c7f7fdef12127c680a892cbad70429a6103fa2eb476897b5f5cca2c25dd50d7e", size = 1955505, upload-time = "2025-07-26T11:28:17.551Z" }, + { url = "https://files.pythonhosted.org/packages/40/33/ea811972701d768af9a0bebbe45db196dc2826ae343b5093832950cb5875/pydantic_core-2.37.2-cp313-cp313-win_amd64.whl", hash = "sha256:0433ad8291d1a0c84dfafc993483edb12280a5ba39c547ab965b4c1f2b78f05e", size = 2004808, upload-time = "2025-07-26T11:28:19.766Z" }, + { url = "https://files.pythonhosted.org/packages/45/15/7e7d6581ef9cb72e8b9a5e0f5940838c0c1f98a26d98767f693582f570ea/pydantic_core-2.37.2-cp313-cp313-win_arm64.whl", hash = "sha256:aa033221b49abe4e91431249ef52c2dfa31f13f3187a1e581586a4cb04567f6e", size = 1953700, upload-time = "2025-07-26T11:28:21.345Z" }, + { url = "https://files.pythonhosted.org/packages/4f/cd/4b4d305cdb334ef77836e6f6898e6426d91a51b27268e03c14f63e09849f/pydantic_core-2.37.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a909d7a8eab6a40801e39651bb4912ae39f655c131928b2c2a56e17216637475", size = 1829454, upload-time = "2025-07-26T11:28:22.998Z" }, + { url = "https://files.pythonhosted.org/packages/6a/7c/09cc9b8fb9fc5bc5cf7e8d8f712acc25d7533ade9f759aa5f70d49e8be42/pydantic_core-2.37.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a945ef942eec1d28a4b67c7a72686eb0d9bc60f6b1d06d3bafcd376c7bffbc80", size = 2007536, upload-time = "2025-07-26T11:28:24.756Z" }, + { url = "https://files.pythonhosted.org/packages/f3/36/4315c3d05fdb34aff9647bb0ca8054a43b620f9d881ad7a644312456763c/pydantic_core-2.37.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2c394c7fc57bbbab24a7c2ff2109ad6a399413f843c418ff0523c7fdd321c09", size = 1961022, upload-time = "2025-07-26T11:28:26.477Z" }, + { url = "https://files.pythonhosted.org/packages/de/19/07e73aba49c1cba4c9131a09f64e9bb419b5ee3e63b60322ea28ac586111/pydantic_core-2.37.2-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:dd2d989d27e15494677cd55512987bde711622e86ede2058444aa8346a15c648", size = 2094344, upload-time = "2025-07-26T11:28:28.215Z" }, + { url = "https://files.pythonhosted.org/packages/97/15/9b7a4d366647e9d27c35fb018e9310a71545f2e1e776573ee77afd00fca6/pydantic_core-2.37.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:3bf27ce2fc6345a7c073786fcc5b68b667c7b4566c774fef9a61bf3611e67d6b", size = 1870386, upload-time = "2025-07-26T11:28:29.891Z" }, + { url = "https://files.pythonhosted.org/packages/3f/15/bfdbcb091b33c0b31563c202e2b4f4376110c56e41e2a4b55ee96a60c82a/pydantic_core-2.37.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d76e1db764c7756281fe17d06d1825610fe8ab3aa4acf1a592e1fb1925a79642", size = 1936224, upload-time = "2025-07-26T11:28:31.686Z" }, + { url = "https://files.pythonhosted.org/packages/26/b8/994c0dff145213e29d59c8c6013984c07abaaa806f609dd9bf6f57267f23/pydantic_core-2.37.2-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ce27109f89e70c6dba047862c07ef326f4a7243f54dd42f5d59cc3dca5e8631f", size = 2033654, upload-time = "2025-07-26T11:28:35.296Z" }, + { url = "https://files.pythonhosted.org/packages/16/69/661ae29dc7a298431f5ddff5b3291124f92b079d6b1801859058ef9e0df5/pydantic_core-2.37.2-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:182a42835e5ad1ac3970785df9dbe25c8418aba03042679b4657bbd992fbfb39", size = 2195866, upload-time = "2025-07-26T11:28:37.086Z" }, + { url = "https://files.pythonhosted.org/packages/2c/59/9904f61abc8c4883303e5164de3c2031ed7d5c5492fe89630306669bea15/pydantic_core-2.37.2-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e51a7b13074fa00d97e5cb60344a71b0923771ffacb01acb0476138b22597e33", size = 2306381, upload-time = "2025-07-26T11:28:38.897Z" }, + { url = "https://files.pythonhosted.org/packages/09/36/7be5601b4933643553fe394f237bbd9f5604cc825b9dab383438d12c97e9/pydantic_core-2.37.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb879dab63b34480a1d28ec54ccbe0f62776f530ae9ad06bf0769bf889662146", size = 2036809, upload-time = "2025-07-26T11:28:40.608Z" }, + { url = "https://files.pythonhosted.org/packages/14/96/a32e9cfddc449e88bed43192f52715aaa88fe04571d7d355083cbae9aea7/pydantic_core-2.37.2-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8b3f68bf55d4e5c7daee7dcc455534af4a95ff5ddff1181f1fcb66278e5ef0e7", size = 2160913, upload-time = "2025-07-26T11:28:43.04Z" }, + { url = "https://files.pythonhosted.org/packages/a9/8c/5fec1161b604b0861cea7c1c158e4fc227977a7dd12a10614e0f96930134/pydantic_core-2.37.2-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:777533bf33f38de0fa95141051faf092378c83e61762636c8d4df9051ebbbded", size = 2116794, upload-time = "2025-07-26T11:28:45.28Z" }, + { url = "https://files.pythonhosted.org/packages/9c/7f/66f4815884845bd8ffb37af25e88ffdae1f6a7ce840dcdb5de2933fb66f7/pydantic_core-2.37.2-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:e935a616dc13c07dcfbe2e57fd2898216a2c8b8c331a4c2be6ac5833c811b6f5", size = 2307258, upload-time = "2025-07-26T11:28:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/cb/2f/8f9eb491985d4959fc1a4def1d5081eb3fdf28f449041918fa35f3afa825/pydantic_core-2.37.2-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:88b1f419faee6d031b595abaa7032399a666672d06636b05e14824452eabfcbd", size = 2308490, upload-time = "2025-07-26T11:28:49.386Z" }, + { url = "https://files.pythonhosted.org/packages/a9/51/69c9e1cbb0a6a6fd79a0d6acad6c3b7ec4778d555d12d73e871a9fa123f4/pydantic_core-2.37.2-cp314-cp314-win32.whl", hash = "sha256:ef57747b2a7df50598d843bf978b245e7d86199eb6ac1cf118151d7015789b31", size = 1959064, upload-time = "2025-07-26T11:28:51.442Z" }, + { url = "https://files.pythonhosted.org/packages/0d/1f/0557c25049631e02f72d7cffa1b71dd49b311e3e18fe9db7267d0e2ba5f3/pydantic_core-2.37.2-cp314-cp314-win_amd64.whl", hash = "sha256:476ca176d01b8fa7fa4adcb7432a4221feb9711675a766618b7fad7878b38f46", size = 1998295, upload-time = "2025-07-26T11:28:53.286Z" }, + { url = "https://files.pythonhosted.org/packages/c8/75/c9bc4797ef55e49272eb1f27cc1d9cd2e1fa7e45d9707d19f29a1fa438e2/pydantic_core-2.37.2-cp314-cp314-win_arm64.whl", hash = "sha256:765519587e15e24535670a3f903ded586bb2ca44ab103d3963f8a8ed6a7c87a2", size = 1952949, upload-time = "2025-07-26T11:28:55.124Z" }, + { url = "https://files.pythonhosted.org/packages/1a/28/689fc6fc953d80f65f35ff72e30db81609b26fd15be54cb3577b8f684f58/pydantic_core-2.37.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:e16d5f519d85acd5deb7d728f22f0433aa80469b3441de24a72a9a8d2561d0d9", size = 1830246, upload-time = "2025-07-26T11:28:56.983Z" }, + { url = "https://files.pythonhosted.org/packages/47/4e/40c30c2de00db6ab11d24b12c3b6bd8e96b4606a0d819bda381a9ed2c0c3/pydantic_core-2.37.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eda70db8850d2cb0ca0d38a5cc5ebfac366cdd36689f128ec4b9fbabbf68973", size = 2008349, upload-time = "2025-07-26T11:28:58.863Z" }, + { url = "https://files.pythonhosted.org/packages/1f/9c/b7248f688933d0340b28f23d78bbc791a51076b9953ae9f0ada4fa7ddcd4/pydantic_core-2.37.2-cp314-cp314t-win_amd64.whl", hash = "sha256:18a0c379bed0c7d05f1ed4de2a2e8dba9a1a21618e8694b8c27be92e46dd3d90", size = 1962545, upload-time = "2025-07-26T11:29:00.644Z" }, + { url = "https://files.pythonhosted.org/packages/d2/e0/4d5c1cc664e8a81649fd3925dd352cc5d095f94aad9645a8ef75eef7ca9a/pydantic_core-2.37.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5e2e9d3f824f33aba2d2c7480f7d02d1a3c949bfb0b0ab855ac8efa9d7ab20db", size = 2113908, upload-time = "2025-07-26T11:29:02.552Z" }, + { url = "https://files.pythonhosted.org/packages/be/0c/7e5b0db48041753ef86a86dbae597005cee21c6fe578bd81defa33598330/pydantic_core-2.37.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:98db57450056f38a409d69ec0125a09fd98bb7274ae7492db148f985bb8c5b37", size = 1931503, upload-time = "2025-07-26T11:29:04.671Z" }, + { url = "https://files.pythonhosted.org/packages/77/cc/e6b9f464a1d67fe3b71b0e26bbac958ba0397428ee60d02fc0c160008f16/pydantic_core-2.37.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5337b71420963ec07102f360fd33bd0fcb6110214dd6bcbc583b082784f7a867", size = 1965470, upload-time = "2025-07-26T11:29:06.487Z" }, + { url = "https://files.pythonhosted.org/packages/0d/38/89095287e9d3a546f55f9302b5d222b5e3500316d8052d7262b4e3f5b7f5/pydantic_core-2.37.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d96e91b1dd8d04a902929c628ffad236e0884f323cada14a61eae2f332d5f1ae", size = 2041298, upload-time = "2025-07-26T11:29:08.328Z" }, + { url = "https://files.pythonhosted.org/packages/e2/fb/8d3311cef11127115134150fc82b37655b2bf0cfe1d0c0faf09aac6f5582/pydantic_core-2.37.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:542ad261ca0e7963179bd2ce71f0ca1dbeb9d6bfe5597e37203aded9cd2d50b1", size = 2228439, upload-time = "2025-07-26T11:29:10.179Z" }, + { url = "https://files.pythonhosted.org/packages/37/87/b9bc31caa7ba490bdc37e6083b9bfb26d6910d1f22f68f2356cca8f2126d/pydantic_core-2.37.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb90f46650df8956d71356b9ed0c4074998e390de2cada4fb01150997e0bf307", size = 2310324, upload-time = "2025-07-26T11:29:12.059Z" }, + { url = "https://files.pythonhosted.org/packages/78/9e/6daf6b8659094d5bcceb1dd6ab5fe9e5181cf5bcccd374b520f77df6c69c/pydantic_core-2.37.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b942f5e21b6c4deb527f20fb9d8dc0bcb07f05deb073aacda33c8906863e45b", size = 2037988, upload-time = "2025-07-26T11:29:14.146Z" }, + { url = "https://files.pythonhosted.org/packages/b9/3d/953b5cb4a8cc9af5e99faa863f3ec1cb8b75055ecc1e4ae1e05e403d2b00/pydantic_core-2.37.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:87145817867430658c98bb1b34cef0f799c92df86229d506c72dd07d048f70a5", size = 2179872, upload-time = "2025-07-26T11:29:16.279Z" }, + { url = "https://files.pythonhosted.org/packages/27/96/96fab6ad65d2d408d33069f50194689e1ba184153a9bc0c4cd7910a6784e/pydantic_core-2.37.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1e1bf4069e7ff52f2248c95ccb4524c4282a5bc03f16c631175d9eecda772483", size = 2142357, upload-time = "2025-07-26T11:29:18.397Z" }, + { url = "https://files.pythonhosted.org/packages/52/cb/17e9d90d54a24512429cd6809f5256bd3533382eb52990b9a921eef7b863/pydantic_core-2.37.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:7ffa484f1fef4a928f85e89e182fc475b9afa1823f02e2650b21185e63ebc48a", size = 2308818, upload-time = "2025-07-26T11:29:20.269Z" }, + { url = "https://files.pythonhosted.org/packages/dd/f9/48787820c01f6d805ea5a43ddc4a377f0cd0e1e85eef2cef3263f99c18db/pydantic_core-2.37.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:06b62ff71e37c26a695af729fa3c30dbd5fe0f3247d624f6212fbb5fc5895f9f", size = 2321379, upload-time = "2025-07-26T11:29:22.666Z" }, + { url = "https://files.pythonhosted.org/packages/a3/da/626fe464e4f2069d64f26f7e3d3c04b0e80b53b71ae0dbf3f6e989c99245/pydantic_core-2.37.2-cp39-cp39-win32.whl", hash = "sha256:f2665ded5fa24194e455458b6e109f4ebb4308ce180595b74b48f0d48b8b9ab2", size = 1967234, upload-time = "2025-07-26T11:29:24.92Z" }, + { url = "https://files.pythonhosted.org/packages/b1/a1/0058dfa346f27996504b5fa0ad5f339cadf768b652e722c184ec6c39e5e9/pydantic_core-2.37.2-cp39-cp39-win_amd64.whl", hash = "sha256:f55fe35c2c9a6de14bc973bf129aa9a0a69aeba70386ed41815e81ff9d30ff7e", size = 1996613, upload-time = "2025-07-26T11:29:27.45Z" }, + { url = "https://files.pythonhosted.org/packages/46/04/f771e10d280821f74bbe610874b4b0eda94a8c46b5fb93fd81821f0e98fb/pydantic_core-2.37.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:46d70f87518f5426790eba9b2000015874ca4b01770929b45a04f2f2ba689b56", size = 2112568, upload-time = "2025-07-26T11:29:29.397Z" }, + { url = "https://files.pythonhosted.org/packages/87/6f/f4a40319e2b263a46f6287465372c6ecb94a50fbf819e9ca8e39af828fdb/pydantic_core-2.37.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:0cb6779157dbbf29ee9cef44599950cb41bec0673c4af37a5b66ccc933a3a55c", size = 1931604, upload-time = "2025-07-26T11:29:31.189Z" }, + { url = "https://files.pythonhosted.org/packages/68/a2/64ecea2b2d3094c432dcb4c51985b14be53294e5c1f35166b6138d53cf64/pydantic_core-2.37.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0792e9dc1e0e1e77ac5b884cb4c1b7965a436215d8a18a553211d24b47cab22", size = 1966031, upload-time = "2025-07-26T11:29:33.113Z" }, + { url = "https://files.pythonhosted.org/packages/5c/85/866ac71c64adcd6e11e72984164e19fc0cb071f0e0f7d80a3cc93eaf6102/pydantic_core-2.37.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1938c7782563cc435469ce7c0d56c2ddbbfdcdc618f81e9240370834532613c3", size = 2153328, upload-time = "2025-07-26T11:29:35.308Z" }, + { url = "https://files.pythonhosted.org/packages/4e/cc/f508e74f394c7f921584704bfed2ebd750c551ebe86c95b4d2916ed0bb58/pydantic_core-2.37.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cd28c154ca44d9dc8cd9e11541ceeab7b68d96b78281a114b7441c779fe2c483", size = 2175566, upload-time = "2025-07-26T11:29:37.167Z" }, + { url = "https://files.pythonhosted.org/packages/94/b3/2df9285fca74c1d2349d9b6d9405450826954c5fc8c39ea86323b4ebaf1c/pydantic_core-2.37.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:005032e79dd34b357d77f6020c7a389a084a9e3953f07b85fa1cfd84f91b4792", size = 2143636, upload-time = "2025-07-26T11:29:39.453Z" }, + { url = "https://files.pythonhosted.org/packages/00/8e/cc2e2ddb578cc9f244968add56cbc992dd0d461b16884c1efbd85d865e97/pydantic_core-2.37.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:794d124d21f7cee72929fac75cd1a110560a9806eee805743e237848f90c54d6", size = 2309589, upload-time = "2025-07-26T11:29:41.763Z" }, + { url = "https://files.pythonhosted.org/packages/e1/d2/987b981cfa4e511646dc54239628cd8629fe7807e73b63d1cb644574ffe0/pydantic_core-2.37.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ae9c016c39f0111009ef34a5554ea204663310706f727bca40f00c9182fcb220", size = 2322421, upload-time = "2025-07-26T11:29:43.926Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2b/93cfc8492a1a9919def29d1714eaaab3ba53c7141d985dce6cdb28a59ba7/pydantic_core-2.37.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e0481c2fe8e1fa7bc4bd45acc4dd96eee7f99ae0c170603161e43dd3886f0333", size = 2148002, upload-time = "2025-07-26T11:29:45.862Z" }, + { url = "https://files.pythonhosted.org/packages/a2/77/c9dab01bc02b771479c6c22af891daf7788b2af6908a2ad4d91aba80bbec/pydantic_core-2.37.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d2b202c7896403c475628e6a6f4b33761ee5e492c9c87a4ca4142324c90308ee", size = 2113400, upload-time = "2025-07-26T11:29:47.813Z" }, + { url = "https://files.pythonhosted.org/packages/1f/93/547d20bd164c8aa061d836f749198ad3083057bcede2e62385eb60213cfc/pydantic_core-2.37.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d15c6a66204100d9dd363ed192971fab906b7ba9d55efe01deaf421ced66c60f", size = 1932076, upload-time = "2025-07-26T11:29:50.282Z" }, + { url = "https://files.pythonhosted.org/packages/73/a5/6402d07e5c3cb5a07b737606098bab0a3379be1927ce2a7799f7e32310cf/pydantic_core-2.37.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23f0f3648bb68a188e15cb99e3d715ba56293d2b8e9984bf3b6d373a9ed5640b", size = 1966050, upload-time = "2025-07-26T11:29:52.775Z" }, + { url = "https://files.pythonhosted.org/packages/f7/65/29621f969c94dbc11e2c20d3043ea4eb1a9303417124c78cd22877f2c471/pydantic_core-2.37.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d030263fcc8520d0fe772caf773e535cc3ff6e4c5d7af2ecb21f1ffee4eed5", size = 2152682, upload-time = "2025-07-26T11:29:55.274Z" }, + { url = "https://files.pythonhosted.org/packages/08/6a/ea938afefa1b59e5ff563c978fbfa4cc888cd287a051165b30e1a5293a3a/pydantic_core-2.37.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9ca7e1d981ea3eac5864f42150f73b805ff5645d2dcb9615f9cc716eb468538a", size = 2176492, upload-time = "2025-07-26T11:29:57.199Z" }, + { url = "https://files.pythonhosted.org/packages/bf/1b/30b1ea0deffbbfa0c1681112029d3a58ea364c61117d528e22e925d48a64/pydantic_core-2.37.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3f68fc979de6881467086bd26490afecf47af691004a6a61bcc5f64ca8f8b556", size = 2143589, upload-time = "2025-07-26T11:29:59.62Z" }, + { url = "https://files.pythonhosted.org/packages/0d/09/48dc1d9170265cfdddc2fe3872702d52b371acfb6270910657e824004b40/pydantic_core-2.37.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2ca5511d4c815269496e577af62fe0ed8dc4fafb1f7d6bd280063f174d9c6c10", size = 2310473, upload-time = "2025-07-26T11:30:01.845Z" }, + { url = "https://files.pythonhosted.org/packages/32/09/f4958da406b4f362d8c086984cccb95a02ff8f415acd87ec20e75f48d7d4/pydantic_core-2.37.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:257dfc9a1a7f9a2ab203423ca13c10e52798a26081f9ffc43d1c0b90897443e2", size = 2322311, upload-time = "2025-07-26T11:30:04.188Z" }, + { url = "https://files.pythonhosted.org/packages/22/d2/d77b3fd4a3a4d0cfd0b66b6c32427100c445c1f6aea543cc533071d2c399/pydantic_core-2.37.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:1fdc045a4ebb04e2218430c7084dd7d30fce601e939c4a0825677dffdf7838b5", size = 2147379, upload-time = "2025-07-26T11:30:06.273Z" }, ] [[package]] @@ -2759,11 +2759,11 @@ wheels = [ [[package]] name = "typing-extensions" -version = "4.14.0" +version = "4.14.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d1/bc/51647cd02527e87d05cb083ccc402f93e441606ff1f01739a62c8ad09ba5/typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4", size = 107423, upload-time = "2025-06-02T14:52:11.399Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload-time = "2025-07-04T13:28:34.16Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/69/e0/552843e0d356fbb5256d21449fa957fa4eff3bbc135a74a691ee70c7c5da/typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af", size = 43839, upload-time = "2025-06-02T14:52:10.026Z" }, + { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" }, ] [[package]] From 2486e068e85c51728c9f2d344cfee2f7e11d555c Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Sat, 26 Jul 2025 20:13:30 +0200 Subject: [PATCH 095/106] Prepare release v2.12.0a1 (#12086) --- CITATION.cff | 4 +-- HISTORY.md | 78 +++++++++++++++++++++++++++++++++++++++++++++ Makefile | 2 +- pydantic/version.py | 11 +++++-- pyproject.toml | 2 +- release/prepare.py | 51 +++++++++-------------------- release/push.py | 19 ++++++----- uv.lock | 2 +- 8 files changed, 118 insertions(+), 51 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 9444425442d..0dd89675fa4 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -44,5 +44,5 @@ keywords: - hints - typing license: MIT -version: v2.11.7 -date-released: 2025-06-14 +version: v2.12.0a1 +date-released: 2025-07-26 diff --git a/HISTORY.md b/HISTORY.md index b2c5b5052d6..c5ce99ee883 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,84 @@ +## v2.12.0a1 (2025-07-26) + +[GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.12.0a1) + +This is the first alpha release of the upcoming 2.12 release, which adds initial support for Python 3.14. + +### What's Changed + +#### New Features + +* Add `__pydantic_on_complete__()` hook that is called once model is fully ready to be used by @DouweM in [#11762](https://github.com/pydantic/pydantic/pull/11762) +* Add initial support for Python 3.14 by @Viicos in [#11991](https://github.com/pydantic/pydantic/pull/11991) +* Add regex patterns to JSON schema for `Decimal` type by @Dima-Bulavenko in [#11987](https://github.com/pydantic/pydantic/pull/11987) +* Add support for `doc` attribute on dataclass fields by @Viicos in [#12077](https://github.com/pydantic/pydantic/pull/12077) +* Add experimental `MISSING` sentinel by @Viicos in [#11883](https://github.com/pydantic/pydantic/pull/11883) + +#### Changes + +* Allow config and bases to be specified together in `create_model()` by @Viicos in [#11714](https://github.com/pydantic/pydantic/pull/11714) +* Move some field logic out of the `GenerateSchema` class by @Viicos in [#11733](https://github.com/pydantic/pydantic/pull/11733) +* Always make use of `inspect.getsourcelines()` for docstring extraction on Python 3.13 and greater by @Viicos in [#11829](https://github.com/pydantic/pydantic/pull/11829) +* Only support the latest Mypy version by @Viicos in [#11832](https://github.com/pydantic/pydantic/pull/11832) +* Do not implicitly convert after model validators to class methods by @Viicos in [#11957](https://github.com/pydantic/pydantic/pull/11957) +* Refactor `FieldInfo` creation implementation by @Viicos in [#11898](https://github.com/pydantic/pydantic/pull/11898) +* Make `Secret` covariant by @bluenote10 in [#12008](https://github.com/pydantic/pydantic/pull/12008) +* Emit warning when field-specific metadata is used in invalid contexts by @Viicos in [#12028](https://github.com/pydantic/pydantic/pull/12028) + +#### Fixes + +* Properly fetch plain serializer function when serializing default value in JSON Schema by @Viicos in [#11721](https://github.com/pydantic/pydantic/pull/11721) +* Remove generics cache workaround by @Viicos in [#11755](https://github.com/pydantic/pydantic/pull/11755) +* Remove coercion of decimal constraints by @Viicos in [#11772](https://github.com/pydantic/pydantic/pull/11772) +* Fix crash when expanding root type in the mypy plugin by @Viicos in [#11735](https://github.com/pydantic/pydantic/pull/11735) +* Only mark model as complete once all fields are complete by @DouweM in [#11759](https://github.com/pydantic/pydantic/pull/11759) +* Do not provide `field_name` in validator core schemas by @DouweM in [#11761](https://github.com/pydantic/pydantic/pull/11761) +* Fix issue with recursive generic models by @Viicos in [#11775](https://github.com/pydantic/pydantic/pull/11775) +* Fix qualified name comparison of private attributes during namespace inspection by @karta9821 in [#11803](https://github.com/pydantic/pydantic/pull/11803) +* Make sure Pydantic dataclasses with slots and `validate_assignment` can be unpickled by @Viicos in [#11769](https://github.com/pydantic/pydantic/pull/11769) +* Traverse `function-before` schemas during schema gathering by @Viicos in [#11801](https://github.com/pydantic/pydantic/pull/11801) +* Fix check for stdlib dataclasses by @Viicos in [#11822](https://github.com/pydantic/pydantic/pull/11822) +* Check if `FieldInfo` is complete after applying type variable map by @Viicos in [#11855](https://github.com/pydantic/pydantic/pull/11855) +* Do not delete mock validator/serializer in `model_rebuild()` by @Viicos in [#11890](https://github.com/pydantic/pydantic/pull/11890) +* Rebuild dataclass fields before schema generation by @Viicos in [#11949](https://github.com/pydantic/pydantic/pull/11949) +* Always store the original field assignment on `FieldInfo` by @Viicos in [#11946](https://github.com/pydantic/pydantic/pull/11946) +* Do not use deprecated methods as default field values by @Viicos in [#11914](https://github.com/pydantic/pydantic/pull/11914) +* Allow callable discriminator to be applied on PEP 695 type aliases by @Viicos in [#11941](https://github.com/pydantic/pydantic/pull/11941) +* Suppress core schema generation warning when using `SkipValidation` by @ygsh0816 in [#12002](https://github.com/pydantic/pydantic/pull/12002) +* Do not emit typechecking error for invalid `Field()` default with `validate_default` set to `True` by @Viicos in [#11988](https://github.com/pydantic/pydantic/pull/11988) +* Refactor logic to support Pydantic's `Field()` function in dataclasses by @Viicos in [#12051](https://github.com/pydantic/pydantic/pull/12051) + +#### Packaging + +* Update project metadata to use PEP 639 by @Viicos in [#11694](https://github.com/pydantic/pydantic/pull/11694) +* Bump `mkdocs-llmstxt` to v0.2.0 by @Viicos in [#11725](https://github.com/pydantic/pydantic/pull/11725) +* Bump `pydantic-core` to v2.35.1 by @Viicos in [#11963](https://github.com/pydantic/pydantic/pull/11963) +* Bump dawidd6/action-download-artifact from 10 to 11 by @dependabot[bot] in [#12033](https://github.com/pydantic/pydantic/pull/12033) +* Bump astral-sh/setup-uv from 5 to 6 by @dependabot[bot] in [#11826](https://github.com/pydantic/pydantic/pull/11826) +* Update mypy to 1.17.0 by @Viicos in [#12076](https://github.com/pydantic/pydantic/pull/12076) + +### New Contributors + +* @parth-paradkar made their first contribution in [#11695](https://github.com/pydantic/pydantic/pull/11695) +* @dqkqd made their first contribution in [#11739](https://github.com/pydantic/pydantic/pull/11739) +* @fhightower made their first contribution in [#11722](https://github.com/pydantic/pydantic/pull/11722) +* @gbaian10 made their first contribution in [#11766](https://github.com/pydantic/pydantic/pull/11766) +* @DouweM made their first contribution in [#11759](https://github.com/pydantic/pydantic/pull/11759) +* @bowenliang123 made their first contribution in [#11719](https://github.com/pydantic/pydantic/pull/11719) +* @rawwar made their first contribution in [#11799](https://github.com/pydantic/pydantic/pull/11799) +* @karta9821 made their first contribution in [#11803](https://github.com/pydantic/pydantic/pull/11803) +* @jinnovation made their first contribution in [#11834](https://github.com/pydantic/pydantic/pull/11834) +* @zmievsa made their first contribution in [#11861](https://github.com/pydantic/pydantic/pull/11861) +* @Otto-AA made their first contribution in [#11860](https://github.com/pydantic/pydantic/pull/11860) +* @ygsh0816 made their first contribution in [#12002](https://github.com/pydantic/pydantic/pull/12002) +* @lukland made their first contribution in [#12015](https://github.com/pydantic/pydantic/pull/12015) +* @Dima-Bulavenko made their first contribution in [#11987](https://github.com/pydantic/pydantic/pull/11987) +* @GSemikozov made their first contribution in [#12050](https://github.com/pydantic/pydantic/pull/12050) +* @hannah-heywa made their first contribution in [#12082](https://github.com/pydantic/pydantic/pull/12082) + ## v2.11.7 (2025-06-14) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.11.7) diff --git a/Makefile b/Makefile index a7b9401fac3..bb3f9ec9440 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ .DEFAULT_GOAL := all -sources = pydantic tests docs/plugins +sources = pydantic tests docs/plugins release/ NUM_THREADS?=1 .PHONY: .uv ## Check that uv is installed diff --git a/pydantic/version.py b/pydantic/version.py index 0fb6064771d..70a0371e079 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -6,8 +6,15 @@ __all__ = 'VERSION', 'version_info' -VERSION = '2.11.7' -"""The version of Pydantic.""" +VERSION = '2.12.0a1' +"""The version of Pydantic. + +This version specifier is guaranteed to be compliant with the [specification], +introduced by [PEP 440]. + +[specification]: https://packaging.python.org/en/latest/specifications/version-specifiers/ +[PEP 440]: https://peps.python.org/pep-0440/ +""" def version_short() -> str: diff --git a/pyproject.toml b/pyproject.toml index bad8d607c78..be28f698727 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,7 +45,7 @@ classifiers = [ ] requires-python = '>=3.9' dependencies = [ - 'typing-extensions>=4.13.0', + 'typing-extensions>=4.14.1', 'annotated-types>=0.6.0', # Keep this in sync with the version in the `check_pydantic_core_version()` function: 'pydantic-core==2.37.2', diff --git a/release/prepare.py b/release/prepare.py index f1ac96b6097..e407a3b8b33 100644 --- a/release/prepare.py +++ b/release/prepare.py @@ -3,7 +3,6 @@ import argparse import json import re -import sys import warnings from datetime import date from pathlib import Path @@ -11,33 +10,31 @@ import requests from release.shared import ( - REPO, GITHUB_TOKEN, HISTORY_FILE, PACKAGE_VERSION_FILE, + REPO, run_command, ) - ROOT_DIR = Path(__file__).parent.parent def update_version(new_version: str, dry_run: bool) -> None: """Update the version in the giving py version file.""" version_file_path = ROOT_DIR / PACKAGE_VERSION_FILE - with open(version_file_path, encoding='utf8') as f: - content = f.read() + content = version_file_path.read_text(encoding='utf-8') # Regex to match the VERSION assignment - pattern = r'(VERSION\s*=\s*)([\'\"])([^\"^\']+)([\'\"])' + pattern = r'(VERSION\s*=\s*[\'\"])([^\"^\']+)([\'\"])' version_stm = re.search(pattern, content) if not version_stm: print( - 'Could not find the version assignment in the version file.' - 'Please make sure the version file has a line like `VERSION = "1.2.3"`.' + 'Could not find the version assignment in the version file. ' + "Please make sure the version file has a line like `VERSION: Final = '1.2.3'`." ) - sys.exit(1) - old_version = version_stm.group(3) + raise SystemExit(1) + old_version = version_stm.group(2) if old_version == new_version: warnings.warn('The new version is the same as the old version. The script might not have any effect.') old_version_stm = ''.join(version_stm.groups()) @@ -51,9 +48,8 @@ def update_version(new_version: str, dry_run: bool) -> None: print(new_version_stm) print('Running in dry mode, lock file is not updated.') return - with open(version_file_path, 'w', encoding='utf8') as f: - new_content = content.replace(old_version_stm, new_version_stm) - f.write(new_content) + + version_file_path.write_text(content.replace(old_version_stm, new_version_stm), encoding='utf-8') run_command('uv', 'lock', '-P', 'pydantic') @@ -62,11 +58,7 @@ def get_notes(new_version: str) -> str: last_tag = run_command('git', 'describe', '--tags', '--abbrev=0') auth_token = GITHUB_TOKEN - data = { - 'target_committish': 'main', - 'previous_tag_name': last_tag, - 'tag_name': f'v{new_version}' - } + data = {'target_committish': 'main', 'previous_tag_name': last_tag, 'tag_name': f'v{new_version}'} response = requests.post( f'https://api.github.com/repos/{REPO}/releases/generate-notes', headers={ @@ -75,7 +67,7 @@ def get_notes(new_version: str) -> str: 'x-github-api-version': '2022-11-28', }, data=json.dumps(data), - timeout=100 + timeout=100, ) response.raise_for_status() @@ -121,13 +113,9 @@ def update_history(new_version: str, dry_run: bool, force_update: bool) -> None: date_today_str = f'{date.today():%Y-%m-%d}' title = f'v{new_version} ({date_today_str})' notes = get_notes(new_version) - new_chunk = ( - f'## {title}\n\n' - f'[GitHub release](https://github.com/{REPO}/releases/tag/v{new_version})\n\n' - f'{notes}\n\n' - ) + new_chunk = f'## {title}\n\n[GitHub release](https://github.com/{REPO}/releases/tag/v{new_version})\n\n{notes}\n\n' if dry_run: - print(f"Would add the following to {history_path}:\n{new_chunk}") + print(f'Would add the following to {history_path}:\n{new_chunk}') history = new_chunk + history_content if not dry_run: @@ -137,23 +125,14 @@ def update_history(new_version: str, dry_run: bool, force_update: bool) -> None: citation_path = ROOT_DIR / 'CITATION.cff' citation_text = citation_path.read_text() - is_release_version = not ('a' in new_version or 'b' in new_version) - if not is_release_version: - version_typ = 'alpha' if 'a' in new_version else 'beta' - warnings.warn( - f'WARNING: not updating CITATION.cff because version is {version_typ} version {new_version}' - ) - return - else: - citation_text = re.sub(r'(?<=\nversion: ).*', f'v{new_version}', citation_text) - citation_text = re.sub(r'(?<=date-released: ).*', date_today_str, citation_text) + citation_text = re.sub(r'(?<=\nversion: ).*', f'v{new_version}', citation_text) + citation_text = re.sub(r'(?<=date-released: ).*', date_today_str, citation_text) if dry_run: print( f'Would update version=v{new_version} and date-released={date_today_str} in ' f'{citation_path.relative_to(ROOT_DIR)}' ) print(f'Updated content:\n{citation_text}') - else: citation_path.write_text(citation_text) print( diff --git a/release/push.py b/release/push.py index 1cd383c5e7f..bfd6edafad5 100644 --- a/release/push.py +++ b/release/push.py @@ -1,16 +1,15 @@ """Automate the release draft + PR creation process.""" import re -import time from pathlib import Path from subprocess import CalledProcessError import requests from release.shared import ( - REPO, GITHUB_TOKEN, HISTORY_FILE, + REPO, run_command, ) @@ -73,16 +72,18 @@ def open_pull_request(rl_version: str): try: response.raise_for_status() except requests.exceptions.HTTPError as e: - print(f"HTTP error occurred: {e}") - print(f"Response content: {response.content.decode()}") + print(f'HTTP error occurred: {e}') + print(f'Response content: {response.content.decode()}') raise e return response.json()['html_url'] + def create_version_tag(rl_version: str): """Create a version tag.""" run_command('git', 'tag', f'v{rl_version}') run_command('git', 'push', 'origin', f'v{rl_version}') + def create_github_release(new_version: str, notes: str): """Create a new release on GitHub.""" url = f'https://api.github.com/repos/{REPO}/releases' @@ -106,10 +107,11 @@ def create_github_release(new_version: str, notes: str): try: response.raise_for_status() except requests.exceptions.HTTPError as e: - print(f"HTTP error occurred: {e}") - print(f"Response content: {response.content.decode()}") + print(f'HTTP error occurred: {e}') + print(f'Response content: {response.content.decode()}') raise e + def create_github_release_draft(rl_version: str, rl_release_notes: str): """Create a GitHub release draft.""" url = f'https://api.github.com/repos/{REPO}/releases' @@ -125,14 +127,15 @@ def create_github_release_draft(rl_version: str, rl_release_notes: str): try: response.raise_for_status() except requests.exceptions.HTTPError as e: - print(f"HTTP error occurred: {e}") - print(f"Response content: {response.content.decode()}") + print(f'HTTP error occurred: {e}') + print(f'Response content: {response.content.decode()}') raise e release_url = response.json()['html_url'] # Publishing happens in the edit page edit_url = release_url.replace('/releases/tag/', '/releases/edit/') return edit_url + if __name__ == '__main__': version = get_latest_version_from_changelog() release_notes = get_latest_release_notes_from_changelog() diff --git a/uv.lock b/uv.lock index d9fbf319e89..8c8b1d7f624 100644 --- a/uv.lock +++ b/uv.lock @@ -1791,7 +1791,7 @@ requires-dist = [ { name = "annotated-types", specifier = ">=0.6.0" }, { name = "email-validator", marker = "extra == 'email'", specifier = ">=2.0.0" }, { name = "pydantic-core", specifier = "==2.37.2" }, - { name = "typing-extensions", specifier = ">=4.13.0" }, + { name = "typing-extensions", specifier = ">=4.14.1" }, { name = "typing-inspection", specifier = ">=0.4.0" }, { name = "tzdata", marker = "python_full_version >= '3.9' and sys_platform == 'win32' and extra == 'timezone'" }, ] From edc0c3a2fd7d6d35a285a0f8ef961c9d0cee3b74 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 29 Jul 2025 12:13:25 +0200 Subject: [PATCH 096/106] Set version post v2.12.0a1 release (#12091) --- CITATION.cff | 2 +- pydantic/version.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 0dd89675fa4..8812d2c26f5 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -44,5 +44,5 @@ keywords: - hints - typing license: MIT -version: v2.12.0a1 +version: v2.12.0a1+dev date-released: 2025-07-26 diff --git a/pydantic/version.py b/pydantic/version.py index 70a0371e079..6a00c94887f 100644 --- a/pydantic/version.py +++ b/pydantic/version.py @@ -6,7 +6,7 @@ __all__ = 'VERSION', 'version_info' -VERSION = '2.12.0a1' +VERSION = '2.12.0a1+dev' """The version of Pydantic. This version specifier is guaranteed to be compliant with the [specification], From be5ca62e8909465349ad1cda7232043866fbac4b Mon Sep 17 00:00:00 2001 From: Mikhail Shagov Date: Tue, 29 Jul 2025 14:35:25 +0300 Subject: [PATCH 097/106] Simplify example documentation (#12098) Co-authored-by: Victorien <65306057+Viicos@users.noreply.github.com> --- docs/examples/queues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/examples/queues.md b/docs/examples/queues.md index 07761f2f980..bbabcbd844c 100644 --- a/docs/examples/queues.md +++ b/docs/examples/queues.md @@ -31,7 +31,7 @@ QUEUE_NAME = 'user_queue' def push_to_queue(user_data: User) -> None: serialized_data = user_data.model_dump_json() - r.rpush(QUEUE_NAME, user_data.model_dump_json()) + r.rpush(QUEUE_NAME, serialized_data) print(f'Added to queue: {serialized_data}') From 9c5eb6e59e3fe3b4f553929c62cd9f578cefc4de Mon Sep 17 00:00:00 2001 From: Sachin Pothukuchi <39584919+raspuchin@users.noreply.github.com> Date: Fri, 1 Aug 2025 03:06:30 -0700 Subject: [PATCH 098/106] Fix `__getattr__()` behavior on Pydantic models when a property raised an `AttributeError` and extra values are present (#12106) --- pydantic/main.py | 7 ++----- tests/test_fields.py | 3 +++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pydantic/main.py b/pydantic/main.py index 0c510896651..85d9f43f0fc 100644 --- a/pydantic/main.py +++ b/pydantic/main.py @@ -979,11 +979,8 @@ def __getattr__(self, item: str) -> Any: except AttributeError: pydantic_extra = None - if pydantic_extra: - try: - return pydantic_extra[item] - except KeyError as exc: - raise AttributeError(f'{type(self).__name__!r} object has no attribute {item!r}') from exc + if pydantic_extra and item in pydantic_extra: + return pydantic_extra[item] else: if hasattr(self.__class__, item): return super().__getattribute__(item) # Raises AttributeError if appropriate diff --git a/tests/test_fields.py b/tests/test_fields.py index 71d9dbb7575..dccce2f3393 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -158,6 +158,9 @@ def prop_field(self): with pytest.raises(AttributeError, match='Property attribute error'): Model().prop_field + with pytest.raises(AttributeError, match='Property attribute error'): + Model(some_extra_field='some value').prop_field + with pytest.raises(AttributeError, match=f"'{Model.__name__}' object has no attribute 'invalid_field'"): Model().invalid_field From 8b19070e14c1f359c8e464711cfce0bab58f5128 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Fri, 1 Aug 2025 15:57:46 +0200 Subject: [PATCH 099/106] Update breaking changes policy (#12111) --- docs/version-policy.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/version-policy.md b/docs/version-policy.md index 2aa526b3d0e..b578f9448ce 100644 --- a/docs/version-policy.md +++ b/docs/version-policy.md @@ -18,6 +18,7 @@ Of course, some apparently safe changes and bug fixes will inevitably break some The following changes will **NOT** be considered breaking changes, and may occur in minor releases: +* Bug fixes that may result in existing code breaking, provided that such code was relying on undocumented features/constructs. * Changing the format of JSON Schema [references](https://json-schema.org/understanding-json-schema/structuring#dollarref). * Changing the `msg`, `ctx`, and `loc` fields of [`ValidationError`][pydantic_core.ValidationError] exceptions. `type` will not change — if you're programmatically parsing error messages, you should use `type`. * Adding new keys to [`ValidationError`][pydantic_core.ValidationError] exceptions — e.g. we intend to add `line_number` and `column_number` to errors when validating JSON once we migrate to a new JSON parser. From 9b52422377d974ffc3de4e8b0bf7faab1acf2ec4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 15:00:22 +0000 Subject: [PATCH 100/106] =?UTF-8?q?=F0=9F=91=A5=20Update=20Pydantic=20Peop?= =?UTF-8?q?le=20(#12113)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: github-actions --- docs/plugins/people.yml | 109 ++++++++++++++++++++++++++-------------- 1 file changed, 70 insertions(+), 39 deletions(-) diff --git a/docs/plugins/people.yml b/docs/plugins/people.yml index 770bf16f330..81c4997e2a1 100644 --- a/docs/plugins/people.yml +++ b/docs/plugins/people.yml @@ -1,22 +1,22 @@ maintainers: -- login: hramezani - answers: 22 - prs: 199 - avatarUrl: https://avatars.githubusercontent.com/u/3122442?u=f387fc2dbc0c681f23e80e2ad705790fafcec9a2&v=4 - url: https://github.com/hramezani - login: adriangb - answers: 41 + answers: 42 prs: 199 avatarUrl: https://avatars.githubusercontent.com/u/1755071?u=612704256e38d6ac9cbed24f10e4b6ac2da74ecb&v=4 url: https://github.com/adriangb -- login: Viicos - answers: 146 - prs: 248 - avatarUrl: https://avatars.githubusercontent.com/u/65306057?u=fcd677dc1b9bef12aa103613e5ccb3f8ce305af9&v=4 - url: https://github.com/Viicos +- login: hramezani + answers: 23 + prs: 199 + avatarUrl: https://avatars.githubusercontent.com/u/3122442?u=f387fc2dbc0c681f23e80e2ad705790fafcec9a2&v=4 + url: https://github.com/hramezani +- login: samuelcolvin + answers: 296 + prs: 408 + avatarUrl: https://avatars.githubusercontent.com/u/4039449?u=42eb3b833047c8c4b4f647a031eaef148c16d93f&v=4 + url: https://github.com/samuelcolvin - login: dmontagu answers: 55 - prs: 315 + prs: 316 avatarUrl: https://avatars.githubusercontent.com/u/35119617?u=540f30c937a6450812628b9592a1dfe91bbe148e&v=4 url: https://github.com/dmontagu - login: davidhewitt @@ -24,26 +24,21 @@ maintainers: prs: 44 avatarUrl: https://avatars.githubusercontent.com/u/1939362?u=b4b48981c3a097daaad16c4c5417aa7a3e5e32d9&v=4 url: https://github.com/davidhewitt -- login: Kludex - answers: 22 - prs: 112 - avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=df8a3f06ba8f55ae1967a3e2d5ed882903a4e330&v=4 - url: https://github.com/Kludex -- login: sydney-runkle - answers: 38 - prs: 380 - avatarUrl: https://avatars.githubusercontent.com/u/54324534?u=3a4ffd00a8270b607922250d3a2d9c9af38b9cf9&v=4 - url: https://github.com/sydney-runkle -- login: samuelcolvin - answers: 295 - prs: 407 - avatarUrl: https://avatars.githubusercontent.com/u/4039449?u=42eb3b833047c8c4b4f647a031eaef148c16d93f&v=4 - url: https://github.com/samuelcolvin - login: alexmojaki answers: 0 prs: 18 avatarUrl: https://avatars.githubusercontent.com/u/3627481?u=9bb2e0cf1c5ef3d0609d2e639a135b7b4ca8b463&v=4 url: https://github.com/alexmojaki +- login: Viicos + answers: 201 + prs: 338 + avatarUrl: https://avatars.githubusercontent.com/u/65306057?u=fcd677dc1b9bef12aa103613e5ccb3f8ce305af9&v=4 + url: https://github.com/Viicos +- login: Kludex + answers: 22 + prs: 112 + avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=df8a3f06ba8f55ae1967a3e2d5ed882903a4e330&v=4 + url: https://github.com/Kludex experts: - login: PrettyWood count: 143 @@ -53,6 +48,10 @@ experts: count: 96 avatarUrl: https://avatars.githubusercontent.com/u/32038156?u=a27b65a9ec3420586a827a0facccbb8b6df1ffb3&v=4 url: https://github.com/uriyyo +- login: sydney-runkle + count: 38 + avatarUrl: https://avatars.githubusercontent.com/u/54324534?u=3a4ffd00a8270b607922250d3a2d9c9af38b9cf9&v=4 + url: https://github.com/sydney-runkle - login: lesnik512 count: 21 avatarUrl: https://avatars.githubusercontent.com/u/2184855?u=5670768b7efda993c4887d91df3cf330dc7bc9de&v=4 @@ -65,12 +64,24 @@ experts: count: 13 avatarUrl: https://avatars.githubusercontent.com/u/4216559?u=360a36fb602cded27273cbfc0afc296eece90662&v=4 url: https://github.com/nymous +- login: janas-adam + count: 12 + avatarUrl: https://avatars.githubusercontent.com/u/48211033?u=51305680dd325d56d5e38d66a82ad530606e3d25&v=4 + url: https://github.com/janas-adam - login: ybressler count: null avatarUrl: https://avatars.githubusercontent.com/u/40807730?v=4 url: https://github.com/ybressler -last_month_active: [] +last_month_active: +- login: janas-adam + count: 3 + avatarUrl: https://avatars.githubusercontent.com/u/48211033?u=51305680dd325d56d5e38d66a82ad530606e3d25&v=4 + url: https://github.com/janas-adam top_contributors: +- login: sydney-runkle + count: 382 + avatarUrl: https://avatars.githubusercontent.com/u/54324534?u=3a4ffd00a8270b607922250d3a2d9c9af38b9cf9&v=4 + url: https://github.com/sydney-runkle - login: PrettyWood count: 122 avatarUrl: https://avatars.githubusercontent.com/u/18406791?u=4853940cf5eeffb5bbb9ba06ad862f28bc68d69e&v=4 @@ -113,7 +124,7 @@ top_contributors: url: https://github.com/uriyyo - login: pilosus count: 12 - avatarUrl: https://avatars.githubusercontent.com/u/6400248?u=2b30c6675f888c2e47640aed2f1c1a956baae224&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/6400248?u=88cadd1dd6376e7000934e93712c5eb0138c1616&v=4 url: https://github.com/pilosus - login: yezz123 count: 12 @@ -175,6 +186,14 @@ top_contributors: count: 5 avatarUrl: https://avatars.githubusercontent.com/u/9677399?u=386c330f212ce467ce7119d9615c75d0e9b9f1ce&v=4 url: https://github.com/ofek +- login: mschoettle + count: 5 + avatarUrl: https://avatars.githubusercontent.com/u/9328433?u=8546519cb04223cd878285d72c27850b5f3f0882&v=4 + url: https://github.com/mschoettle +- login: karta9821 + count: 5 + avatarUrl: https://avatars.githubusercontent.com/u/44468031?u=1590b6d141e6cbcc1862a95959b9a134fdb1f108&v=4 + url: https://github.com/karta9821 - login: hmvp count: 4 avatarUrl: https://avatars.githubusercontent.com/u/1734544?v=4 @@ -189,7 +208,7 @@ top_contributors: url: https://github.com/therefromhere - login: JeanArhancet count: 4 - avatarUrl: https://avatars.githubusercontent.com/u/10811879?u=c0cfe7f7be82474d0deb2ba27601ec96f4f43515&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/10811879?v=4 url: https://github.com/JeanArhancet - login: commonism count: 4 @@ -219,11 +238,11 @@ top_contributors: count: 4 avatarUrl: https://avatars.githubusercontent.com/u/45747761?u=c1515d2ccf4877c0b64b5ea5a8c51631affe35de&v=4 url: https://github.com/dAIsySHEng1 -- login: mschoettle - count: 4 - avatarUrl: https://avatars.githubusercontent.com/u/9328433?u=8546519cb04223cd878285d72c27850b5f3f0882&v=4 - url: https://github.com/mschoettle top_reviewers: +- login: sydney-runkle + count: 691 + avatarUrl: https://avatars.githubusercontent.com/u/54324534?u=3a4ffd00a8270b607922250d3a2d9c9af38b9cf9&v=4 + url: https://github.com/sydney-runkle - login: PrettyWood count: 211 avatarUrl: https://avatars.githubusercontent.com/u/18406791?u=4853940cf5eeffb5bbb9ba06ad862f28bc68d69e&v=4 @@ -237,13 +256,17 @@ top_reviewers: avatarUrl: https://avatars.githubusercontent.com/u/370316?u=eb206070cfe47f242d5fcea2e6c7514f4d0f27f5&v=4 url: https://github.com/tpdorsey - login: hyperlint-ai - count: 56 + count: 57 avatarUrl: https://avatars.githubusercontent.com/in/718456?v=4 url: https://github.com/apps/hyperlint-ai - login: tiangolo count: 44 avatarUrl: https://avatars.githubusercontent.com/u/1326112?u=cb5d06e73a9e1998141b1641aa88e443c6717651&v=4 url: https://github.com/tiangolo +- login: DouweM + count: 32 + avatarUrl: https://avatars.githubusercontent.com/u/159434?v=4 + url: https://github.com/DouweM - login: Bobronium count: 27 avatarUrl: https://avatars.githubusercontent.com/u/36469655?u=f67d8fa6d67d35d2f5ebd5b15e24efeb41036fd3&v=4 @@ -262,7 +285,7 @@ top_reviewers: url: https://github.com/MarkusSintonen - login: ybressler count: 15 - avatarUrl: https://avatars.githubusercontent.com/u/40807730?u=b417e3cea56fd0f67983006108f6a1a83d4652a0&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/40807730?u=fa12d64259ccf9eca18847102335ee6408cb9eaa&v=4 url: https://github.com/ybressler - login: uriyyo count: 11 @@ -294,7 +317,7 @@ top_reviewers: url: https://github.com/kc0506 - login: pilosus count: 6 - avatarUrl: https://avatars.githubusercontent.com/u/6400248?u=2b30c6675f888c2e47640aed2f1c1a956baae224&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/6400248?u=88cadd1dd6376e7000934e93712c5eb0138c1616&v=4 url: https://github.com/pilosus - login: Kilo59 count: 6 @@ -302,7 +325,7 @@ top_reviewers: url: https://github.com/Kilo59 - login: JeanArhancet count: 6 - avatarUrl: https://avatars.githubusercontent.com/u/10811879?u=c0cfe7f7be82474d0deb2ba27601ec96f4f43515&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/10811879?v=4 url: https://github.com/JeanArhancet - login: tlambert03 count: 5 @@ -310,12 +333,16 @@ top_reviewers: url: https://github.com/tlambert03 - login: christianbundy count: 5 - avatarUrl: https://avatars.githubusercontent.com/u/537700?u=7b64bd12eda862fbf72228495aada9c470df7a90&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/537700?u=d6cc48076a656f94710d8e1266c92792b8c9d7c4&v=4 url: https://github.com/christianbundy - login: nix010 count: 5 avatarUrl: https://avatars.githubusercontent.com/u/16438204?u=f700f440b89e715795c3bc091800b8d3f39c58d9&v=4 url: https://github.com/nix010 +- login: karta9821 + count: 5 + avatarUrl: https://avatars.githubusercontent.com/u/44468031?u=1590b6d141e6cbcc1862a95959b9a134fdb1f108&v=4 + url: https://github.com/karta9821 - login: graingert count: 4 avatarUrl: https://avatars.githubusercontent.com/u/413772?v=4 @@ -340,6 +367,10 @@ top_reviewers: count: 4 avatarUrl: https://avatars.githubusercontent.com/u/662249?u=15313dec91bae789685e4abb3c2152251de41948&v=4 url: https://github.com/dimaqq +- login: DetachHead + count: 4 + avatarUrl: https://avatars.githubusercontent.com/u/57028336?u=387c51980cb3734c41543ae2276a23736906bdb9&v=4 + url: https://github.com/DetachHead - login: JensHeinrich count: 4 avatarUrl: https://avatars.githubusercontent.com/u/59469646?u=86d6a20768cc4cc65622eafd86672147321bd8f8&v=4 From 525677ed2c768466281437ad7ee9418bf557aec2 Mon Sep 17 00:00:00 2001 From: Rebecca Chen Date: Tue, 5 Aug 2025 02:59:15 -0700 Subject: [PATCH 101/106] Run Pyrefly over Pydantic's type checking test suite (#12127) --- .github/workflows/ci.yml | 3 +++ Makefile | 4 ++++ pyproject.toml | 3 ++- uv.lock | 22 +++++++++++++++++++++- 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7088958c4cc..61d7590f9dc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -231,6 +231,9 @@ jobs: - name: Run typechecking integration tests (Mypy) run: make test-typechecking-mypy + - name: Run typechecking integration tests (Pyrefly) + run: make test-typechecking-pyrefly + coverage-combine: needs: [test, test-mypy] runs-on: ubuntu-latest diff --git a/Makefile b/Makefile index bb3f9ec9440..3623a51b4d7 100644 --- a/Makefile +++ b/Makefile @@ -54,6 +54,10 @@ test-typechecking-pyright: .uv test-typechecking-mypy: .uv uv run bash -c 'cd tests/typechecking && mypy --version && mypy --cache-dir=/dev/null --config-file pyproject.toml .' +.PHONY: test-typechecking-pyrefly ## Typechecking integration tests (Pyrefly). +test-typechecking-pyrefly: .uv + uv run bash -c 'cd tests/typechecking && pyrefly --version && pyrefly check' + .PHONY: test ## Run all tests, skipping the type-checker integration tests test: .uv uv run coverage run -m pytest --durations=10 --parallel-threads $(NUM_THREADS) diff --git a/pyproject.toml b/pyproject.toml index be28f698727..098017b556b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -120,6 +120,7 @@ testing-extra = [ typechecking = [ 'mypy', 'pyright', + 'pyrefly', 'pydantic-settings', ] @@ -183,7 +184,7 @@ markers = [ [tool.uv] default-groups = ['dev'] -required-version = '>=0.7.2' +required-version = '>=0.8.4' # configuring https://github.com/pydantic/hooky [tool.hooky] diff --git a/uv.lock b/uv.lock index 8c8b1d7f624..b70fd728c51 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 2 +revision = 3 requires-python = ">=3.9" [[package]] @@ -1718,6 +1718,7 @@ all = [ { name = "packaging" }, { name = "pydantic-extra-types" }, { name = "pydantic-settings" }, + { name = "pyrefly" }, { name = "pyright" }, { name = "pytest" }, { name = "pytest-benchmark" }, @@ -1783,6 +1784,7 @@ testing-extra = [ typechecking = [ { name = "mypy" }, { name = "pydantic-settings" }, + { name = "pyrefly" }, { name = "pyright" }, ] @@ -1819,6 +1821,7 @@ all = [ { name = "packaging" }, { name = "pydantic-extra-types", specifier = "==2.10" }, { name = "pydantic-settings" }, + { name = "pyrefly" }, { name = "pyright" }, { name = "pytest" }, { name = "pytest-benchmark" }, @@ -1882,6 +1885,7 @@ testing-extra = [ typechecking = [ { name = "mypy" }, { name = "pydantic-settings" }, + { name = "pyrefly" }, { name = "pyright" }, ] @@ -2068,6 +2072,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl", hash = "sha256:506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1", size = 107716, upload-time = "2024-12-31T20:59:42.738Z" }, ] +[[package]] +name = "pyrefly" +version = "0.27.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/d1/166ce5f5e1e6de8cfcc842d09dae187666a72d76fd2d6db4dff07bcac8c2/pyrefly-0.27.0.tar.gz", hash = "sha256:296671a94b40d91f136575b9fa9458801a747702581cbdb9e971da69f916b4a8", size = 1198185, upload-time = "2025-08-05T03:58:54.696Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/42/02b2092af809b5ddb790a44b009036c2fa5e69a52a84b743e74d369bfd70/pyrefly-0.27.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ad896c2387ff748ed236b9b4ddb0802d2b939947ce7ac1a6c6c67c217d20a958", size = 6305827, upload-time = "2025-08-05T03:58:39.092Z" }, + { url = "https://files.pythonhosted.org/packages/7a/e2/d4ca7ed11d88c6a3cbe9f875a680bb391a3d067089a2b68804dd76d8aceb/pyrefly-0.27.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:06651386b1ce7a40d2bcfcdfded5fb6d53279abffe9aefd4cb1b9720a6c7c77c", size = 5875353, upload-time = "2025-08-05T03:58:41.439Z" }, + { url = "https://files.pythonhosted.org/packages/c0/0f/cd0a910782e7c12dfa19d60052c92e6cc54845b1804621167fa3d619d241/pyrefly-0.27.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12c79a8b19e32441289623d6c8c51aeddb2e81f692492f4bb8e5d405dae9b499", size = 6102678, upload-time = "2025-08-05T03:58:43.228Z" }, + { url = "https://files.pythonhosted.org/packages/6f/4c/068e56e89fae1458f82f9acaf59df53646e7b79725275115440ab015e6b2/pyrefly-0.27.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:199221de8f2832cbeb54f9693c0897c1201c6c602b7b3972964a201c355cb75d", size = 6859138, upload-time = "2025-08-05T03:58:44.809Z" }, + { url = "https://files.pythonhosted.org/packages/ef/1c/a3ec3679f8908994ba4813962e4439e1f538f2159f69483cf5e1e76d4949/pyrefly-0.27.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1086562e4d235114f81fb21b275a3b79377742af90fdde2cf9310f189a21bf1e", size = 6573841, upload-time = "2025-08-05T03:58:46.68Z" }, + { url = "https://files.pythonhosted.org/packages/9e/a8/be7338b925f5d8b1ea16cb9d4ab8fcac94c4f7d0a0d7b5f7e3b61e83f3f6/pyrefly-0.27.0-py3-none-win32.whl", hash = "sha256:9cb3244d0eb1bc61192160e963769554696f50ee940b79ce9812e48fbb55ca1c", size = 6096735, upload-time = "2025-08-05T03:58:49.06Z" }, + { url = "https://files.pythonhosted.org/packages/93/72/55cb0d24875ebd97d43d387777483c58f5942cab02ebecc83d8c52ca47f4/pyrefly-0.27.0-py3-none-win_amd64.whl", hash = "sha256:a93a14915fc3c1ffb7fe0441ac82821494c4fdf70a435b6ae9d1e95d27c2e5ef", size = 6491631, upload-time = "2025-08-05T03:58:50.93Z" }, + { url = "https://files.pythonhosted.org/packages/74/c7/288c464ce5e8ec9c78259437901aac6ebe48b113e0e9bce9a7d8d4226284/pyrefly-0.27.0-py3-none-win_arm64.whl", hash = "sha256:8a0e869beed7517066f3ee8390f1978dde29a8d92fb56ea414af43eb87b28b22", size = 6140536, upload-time = "2025-08-05T03:58:52.936Z" }, +] + [[package]] name = "pyright" version = "1.1.392.post0" From 59b039b51e37eff4aa5a3e922680ca4b6225337e Mon Sep 17 00:00:00 2001 From: Odion Sonny-Egbeahie <99491084+Odion-Sonny@users.noreply.github.com> Date: Wed, 6 Aug 2025 12:44:20 +0100 Subject: [PATCH 102/106] Fix typos in documentation (#12135) --- docs/help_with_pydantic.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/help_with_pydantic.md b/docs/help_with_pydantic.md index b9a8be5b17b..7dbdf07671d 100644 --- a/docs/help_with_pydantic.md +++ b/docs/help_with_pydantic.md @@ -8,7 +8,7 @@ The [usage documentation](concepts/models.md) is the most complete guide on how ## :material-api: API Documentation -The [API documentation](api/base_model.md) give reference docs for all public Pydantic APIs. +The [API documentation](api/base_model.md) gives reference docs for all public Pydantic APIs. ## :simple-github: GitHub Discussions @@ -20,6 +20,6 @@ Use the [`pydantic`](https://stackoverflow.com/questions/tagged/pydantic) tag on ## :simple-youtube: YouTube -Youtube as lots of useful [videos on Pydantic](https://www.youtube.com/results?search_query=pydantic). +Youtube has lots of useful [videos on Pydantic](https://www.youtube.com/results?search_query=pydantic). In particular Marcelo Trylesinski's video ["Pydantic V1 to V2 - The Migration"](https://youtu.be/sD_xpYl4fPU) has helped people a lot when migrating from Pydantic V1 to V2. From a1cbe148d8ba8da578673112a148cbc8ddfce3d3 Mon Sep 17 00:00:00 2001 From: Karen Javadyan Date: Wed, 6 Aug 2025 21:03:31 +0200 Subject: [PATCH 103/106] Fix typo (#12138) --- docs/extra/fluff.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/extra/fluff.js b/docs/extra/fluff.js index e0fb8c0646e..08506559086 100644 --- a/docs/extra/fluff.js +++ b/docs/extra/fluff.js @@ -23,7 +23,7 @@ ['/integrations/logging/', 'std lib logging.'], ['/integrations/django/', 'Django app.'], ['/integrations/anthropic/', 'Anthropic API calls.'], - ['/integrations/fastapi/', 'Flask app.'], + ['/integrations/flask/', 'Flask app.'], ['/integrations/mysql/', 'MySQL queries.'], ['/integrations/sqlalchemy/', 'SQLAlchemy queries.'], ['/integrations/structlog/', 'Structlog logs.'], From 1c79f0e4d3fbdb8b93e837175d7098e016117237 Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 6 Aug 2025 21:03:52 +0200 Subject: [PATCH 104/106] Add test to prevent regression with Pydantic models used as annotated metadata (#12133) --- tests/test_edge_cases.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/test_edge_cases.py b/tests/test_edge_cases.py index 393180c2ccd..334ab138c8d 100644 --- a/tests/test_edge_cases.py +++ b/tests/test_edge_cases.py @@ -3020,6 +3020,11 @@ class Model(BaseModel, validate_assignment=True): assert 'a' in Model.__pydantic_setattr_handlers__ +# The following 3 tests define a `__get_pydantic_core_schema__()` method on Pydantic models. +# This isn't explicitly supported and can lead to unexpected side effects, but are here +# to prevent potential regressions: + + def test_get_pydantic_core_schema_on_referenceable_type() -> None: # This ensures that even if you define the method, it won't actually # be called twice and the cached definition will be used instead. @@ -3078,6 +3083,31 @@ class OuterModel(BaseModel): OuterModel(x=2, y=-1, z=-1) +def test_get_pydantic_core_schema_noop() -> None: + """https://github.com/pydantic/pydantic/issues/12096""" + + class Metadata(BaseModel): + foo: int = 100 + + @classmethod + def __get_pydantic_core_schema__(cls, source_type, handler: GetCoreSchemaHandler) -> CoreSchema: + return handler(source_type) + + class Model1(BaseModel): + f: Annotated[str, Metadata()] + + assert isinstance(Model1.model_fields['f'].metadata[0], Metadata) + assert Model1(f='test').f == 'test' + + class Model2(BaseModel): + f1: Annotated[str, Metadata()] + f2: Annotated[str, Metadata()] = 'f2' + + m2 = Model2(f1='f1') + assert m2.f1 == 'f1' + assert m2.f2 == 'f2' + + def test_validator_and_serializer_not_reused_during_rebuild() -> None: # Make sure validators and serializers are deleted before model rebuild, # so that they don't end up being reused in pydantic-core (since we look From e1168607f66eec8c94750e810d5920eee3eb23d8 Mon Sep 17 00:00:00 2001 From: Peter Bygrave Date: Tue, 12 Aug 2025 10:15:11 +0100 Subject: [PATCH 105/106] Fix use of backtick in Validation Alias docs (#12155) --- docs/concepts/fields.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/fields.md b/docs/concepts/fields.md index 936e35eea0b..cc573abd14d 100644 --- a/docs/concepts/fields.md +++ b/docs/concepts/fields.md @@ -351,7 +351,7 @@ print(user.model_dump(by_alias=True)) # (2)! Even though Pydantic treats `alias` and `validation_alias` the same when creating model instances, type checkers only understand the `alias` field parameter. As a workaround, you can instead specify both an `alias` and - serialization_alias` (identical to the field name), as the `serialization_alias` will override the `alias` during + `serialization_alias` (identical to the field name), as the `serialization_alias` will override the `alias` during serialization: ```python From d5684659df98d55678a450690000346dd326280b Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Tue, 12 Aug 2025 14:24:05 +0200 Subject: [PATCH 106/106] Add newsletter form to docs (#12136) --- docs/index.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/index.md b/docs/index.md index 9167ff069c7..1514fcf48f3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -56,6 +56,26 @@ Fast and extensible, Pydantic plays nicely with your linters/IDE/brain. Define h **[Learn more about Pydantic Logfire](https://logfire.pydantic.dev/docs/)** + **Sign up to *The Pydantic Stack* newsletter, with updates & tutorials on Logfire, Pydantic AI and Pydantic:** + +
+ + + +
+ ## Why use Pydantic? * **Powered by type hints** — with Pydantic, schema validation and serialization are controlled by type annotations; less to learn, less code to write, and integration with your IDE and static analysis tools. [Learn more…](why.md#type-hints)