From 4774aa142f0c7205101ab81d73ec309bc5b1d6b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Apr 2024 09:33:36 -0700 Subject: [PATCH 01/88] Bump orjson from 3.9.15 to 3.10.0 (#636) Bumps [orjson](https://github.com/ijl/orjson) from 3.9.15 to 3.10.0. - [Release notes](https://github.com/ijl/orjson/releases) - [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md) - [Commits](https://github.com/ijl/orjson/compare/3.9.15...3.10.0) --- updated-dependencies: - dependency-name: orjson dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 107 +++++++++++++++++++++++++------------------------ pyproject.toml | 2 +- 2 files changed, 55 insertions(+), 54 deletions(-) diff --git a/poetry.lock b/poetry.lock index c4d4dd8f..72cdb162 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "alabaster" @@ -384,61 +384,62 @@ six = ">=1.8.0" [[package]] name = "orjson" -version = "3.9.15" +version = "3.10.0" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.9.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:d61f7ce4727a9fa7680cd6f3986b0e2c732639f46a5e0156e550e35258aa313a"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4feeb41882e8aa17634b589533baafdceb387e01e117b1ec65534ec724023d04"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fbbeb3c9b2edb5fd044b2a070f127a0ac456ffd079cb82746fc84af01ef021a4"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b66bcc5670e8a6b78f0313bcb74774c8291f6f8aeef10fe70e910b8040f3ab75"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2973474811db7b35c30248d1129c64fd2bdf40d57d84beed2a9a379a6f57d0ab"}, - {file = "orjson-3.9.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fe41b6f72f52d3da4db524c8653e46243c8c92df826ab5ffaece2dba9cccd58"}, - {file = "orjson-3.9.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4228aace81781cc9d05a3ec3a6d2673a1ad0d8725b4e915f1089803e9efd2b99"}, - {file = "orjson-3.9.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:6f7b65bfaf69493c73423ce9db66cfe9138b2f9ef62897486417a8fcb0a92bfe"}, - {file = "orjson-3.9.15-cp310-none-win32.whl", hash = "sha256:2d99e3c4c13a7b0fb3792cc04c2829c9db07838fb6973e578b85c1745e7d0ce7"}, - {file = "orjson-3.9.15-cp310-none-win_amd64.whl", hash = "sha256:b725da33e6e58e4a5d27958568484aa766e825e93aa20c26c91168be58e08cbb"}, - {file = "orjson-3.9.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c8e8fe01e435005d4421f183038fc70ca85d2c1e490f51fb972db92af6e047c2"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87f1097acb569dde17f246faa268759a71a2cb8c96dd392cd25c668b104cad2f"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff0f9913d82e1d1fadbd976424c316fbc4d9c525c81d047bbdd16bd27dd98cfc"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8055ec598605b0077e29652ccfe9372247474375e0e3f5775c91d9434e12d6b1"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6768a327ea1ba44c9114dba5fdda4a214bdb70129065cd0807eb5f010bfcbb5"}, - {file = "orjson-3.9.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12365576039b1a5a47df01aadb353b68223da413e2e7f98c02403061aad34bde"}, - {file = "orjson-3.9.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:71c6b009d431b3839d7c14c3af86788b3cfac41e969e3e1c22f8a6ea13139404"}, - {file = "orjson-3.9.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e18668f1bd39e69b7fed19fa7cd1cd110a121ec25439328b5c89934e6d30d357"}, - {file = "orjson-3.9.15-cp311-none-win32.whl", hash = "sha256:62482873e0289cf7313461009bf62ac8b2e54bc6f00c6fabcde785709231a5d7"}, - {file = "orjson-3.9.15-cp311-none-win_amd64.whl", hash = "sha256:b3d336ed75d17c7b1af233a6561cf421dee41d9204aa3cfcc6c9c65cd5bb69a8"}, - {file = "orjson-3.9.15-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:82425dd5c7bd3adfe4e94c78e27e2fa02971750c2b7ffba648b0f5d5cc016a73"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c51378d4a8255b2e7c1e5cc430644f0939539deddfa77f6fac7b56a9784160a"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6ae4e06be04dc00618247c4ae3f7c3e561d5bc19ab6941427f6d3722a0875ef7"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcef128f970bb63ecf9a65f7beafd9b55e3aaf0efc271a4154050fc15cdb386e"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b72758f3ffc36ca566ba98a8e7f4f373b6c17c646ff8ad9b21ad10c29186f00d"}, - {file = "orjson-3.9.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c57bc7b946cf2efa67ac55766e41764b66d40cbd9489041e637c1304400494"}, - {file = "orjson-3.9.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:946c3a1ef25338e78107fba746f299f926db408d34553b4754e90a7de1d44068"}, - {file = "orjson-3.9.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2f256d03957075fcb5923410058982aea85455d035607486ccb847f095442bda"}, - {file = "orjson-3.9.15-cp312-none-win_amd64.whl", hash = "sha256:5bb399e1b49db120653a31463b4a7b27cf2fbfe60469546baf681d1b39f4edf2"}, - {file = "orjson-3.9.15-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b17f0f14a9c0ba55ff6279a922d1932e24b13fc218a3e968ecdbf791b3682b25"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f6cbd8e6e446fb7e4ed5bac4661a29e43f38aeecbf60c4b900b825a353276a1"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:76bc6356d07c1d9f4b782813094d0caf1703b729d876ab6a676f3aaa9a47e37c"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fdfa97090e2d6f73dced247a2f2d8004ac6449df6568f30e7fa1a045767c69a6"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7413070a3e927e4207d00bd65f42d1b780fb0d32d7b1d951f6dc6ade318e1b5a"}, - {file = "orjson-3.9.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9cf1596680ac1f01839dba32d496136bdd5d8ffb858c280fa82bbfeb173bdd40"}, - {file = "orjson-3.9.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:809d653c155e2cc4fd39ad69c08fdff7f4016c355ae4b88905219d3579e31eb7"}, - {file = "orjson-3.9.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:920fa5a0c5175ab14b9c78f6f820b75804fb4984423ee4c4f1e6d748f8b22bc1"}, - {file = "orjson-3.9.15-cp38-none-win32.whl", hash = "sha256:2b5c0f532905e60cf22a511120e3719b85d9c25d0e1c2a8abb20c4dede3b05a5"}, - {file = "orjson-3.9.15-cp38-none-win_amd64.whl", hash = "sha256:67384f588f7f8daf040114337d34a5188346e3fae6c38b6a19a2fe8c663a2f9b"}, - {file = "orjson-3.9.15-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6fc2fe4647927070df3d93f561d7e588a38865ea0040027662e3e541d592811e"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34cbcd216e7af5270f2ffa63a963346845eb71e174ea530867b7443892d77180"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f541587f5c558abd93cb0de491ce99a9ef8d1ae29dd6ab4dbb5a13281ae04cbd"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92255879280ef9c3c0bcb327c5a1b8ed694c290d61a6a532458264f887f052cb"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:05a1f57fb601c426635fcae9ddbe90dfc1ed42245eb4c75e4960440cac667262"}, - {file = "orjson-3.9.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ede0bde16cc6e9b96633df1631fbcd66491d1063667f260a4f2386a098393790"}, - {file = "orjson-3.9.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e88b97ef13910e5f87bcbc4dd7979a7de9ba8702b54d3204ac587e83639c0c2b"}, - {file = "orjson-3.9.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57d5d8cf9c27f7ef6bc56a5925c7fbc76b61288ab674eb352c26ac780caa5b10"}, - {file = "orjson-3.9.15-cp39-none-win32.whl", hash = "sha256:001f4eb0ecd8e9ebd295722d0cbedf0748680fb9998d3993abaed2f40587257a"}, - {file = "orjson-3.9.15-cp39-none-win_amd64.whl", hash = "sha256:ea0b183a5fe6b2b45f3b854b0d19c4e932d6f5934ae1f723b07cf9560edd4ec7"}, - {file = "orjson-3.9.15.tar.gz", hash = "sha256:95cae920959d772f30ab36d3b25f83bb0f3be671e986c72ce22f8fa700dae061"}, + {file = "orjson-3.10.0-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:47af5d4b850a2d1328660661f0881b67fdbe712aea905dadd413bdea6f792c33"}, + {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c90681333619d78360d13840c7235fdaf01b2b129cb3a4f1647783b1971542b6"}, + {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:400c5b7c4222cb27b5059adf1fb12302eebcabf1978f33d0824aa5277ca899bd"}, + {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5dcb32e949eae80fb335e63b90e5808b4b0f64e31476b3777707416b41682db5"}, + {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7d507c7493252c0a0264b5cc7e20fa2f8622b8a83b04d819b5ce32c97cf57b"}, + {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e286a51def6626f1e0cc134ba2067dcf14f7f4b9550f6dd4535fd9d79000040b"}, + {file = "orjson-3.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8acd4b82a5f3a3ec8b1dc83452941d22b4711964c34727eb1e65449eead353ca"}, + {file = "orjson-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:30707e646080dd3c791f22ce7e4a2fc2438765408547c10510f1f690bd336217"}, + {file = "orjson-3.10.0-cp310-none-win32.whl", hash = "sha256:115498c4ad34188dcb73464e8dc80e490a3e5e88a925907b6fedcf20e545001a"}, + {file = "orjson-3.10.0-cp310-none-win_amd64.whl", hash = "sha256:6735dd4a5a7b6df00a87d1d7a02b84b54d215fb7adac50dd24da5997ffb4798d"}, + {file = "orjson-3.10.0-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9587053e0cefc284e4d1cd113c34468b7d3f17666d22b185ea654f0775316a26"}, + {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bef1050b1bdc9ea6c0d08468e3e61c9386723633b397e50b82fda37b3563d72"}, + {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d16c6963ddf3b28c0d461641517cd312ad6b3cf303d8b87d5ef3fa59d6844337"}, + {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4251964db47ef090c462a2d909f16c7c7d5fe68e341dabce6702879ec26d1134"}, + {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:73bbbdc43d520204d9ef0817ac03fa49c103c7f9ea94f410d2950755be2c349c"}, + {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:414e5293b82373606acf0d66313aecb52d9c8c2404b1900683eb32c3d042dbd7"}, + {file = "orjson-3.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:feaed5bb09877dc27ed0d37f037ddef6cb76d19aa34b108db270d27d3d2ef747"}, + {file = "orjson-3.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5127478260db640323cea131ee88541cb1a9fbce051f0b22fa2f0892f44da302"}, + {file = "orjson-3.10.0-cp311-none-win32.whl", hash = "sha256:b98345529bafe3c06c09996b303fc0a21961820d634409b8639bc16bd4f21b63"}, + {file = "orjson-3.10.0-cp311-none-win_amd64.whl", hash = "sha256:658ca5cee3379dd3d37dbacd43d42c1b4feee99a29d847ef27a1cb18abdfb23f"}, + {file = "orjson-3.10.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4329c1d24fd130ee377e32a72dc54a3c251e6706fccd9a2ecb91b3606fddd998"}, + {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef0f19fdfb6553342b1882f438afd53c7cb7aea57894c4490c43e4431739c700"}, + {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c4f60db24161534764277f798ef53b9d3063092f6d23f8f962b4a97edfa997a0"}, + {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1de3fd5c7b208d836f8ecb4526995f0d5877153a4f6f12f3e9bf11e49357de98"}, + {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f93e33f67729d460a177ba285002035d3f11425ed3cebac5f6ded4ef36b28344"}, + {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:237ba922aef472761acd697eef77fef4831ab769a42e83c04ac91e9f9e08fa0e"}, + {file = "orjson-3.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98c1bfc6a9bec52bc8f0ab9b86cc0874b0299fccef3562b793c1576cf3abb570"}, + {file = "orjson-3.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:30d795a24be16c03dca0c35ca8f9c8eaaa51e3342f2c162d327bd0225118794a"}, + {file = "orjson-3.10.0-cp312-none-win32.whl", hash = "sha256:6a3f53dc650bc860eb26ec293dfb489b2f6ae1cbfc409a127b01229980e372f7"}, + {file = "orjson-3.10.0-cp312-none-win_amd64.whl", hash = "sha256:983db1f87c371dc6ffc52931eb75f9fe17dc621273e43ce67bee407d3e5476e9"}, + {file = "orjson-3.10.0-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9a667769a96a72ca67237224a36faf57db0c82ab07d09c3aafc6f956196cfa1b"}, + {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ade1e21dfde1d37feee8cf6464c20a2f41fa46c8bcd5251e761903e46102dc6b"}, + {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:23c12bb4ced1c3308eff7ba5c63ef8f0edb3e4c43c026440247dd6c1c61cea4b"}, + {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2d014cf8d4dc9f03fc9f870de191a49a03b1bcda51f2a957943fb9fafe55aac"}, + {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eadecaa16d9783affca33597781328e4981b048615c2ddc31c47a51b833d6319"}, + {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd583341218826f48bd7c6ebf3310b4126216920853cbc471e8dbeaf07b0b80e"}, + {file = "orjson-3.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:90bfc137c75c31d32308fd61951d424424426ddc39a40e367704661a9ee97095"}, + {file = "orjson-3.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:13b5d3c795b09a466ec9fcf0bd3ad7b85467d91a60113885df7b8d639a9d374b"}, + {file = "orjson-3.10.0-cp38-none-win32.whl", hash = "sha256:5d42768db6f2ce0162544845facb7c081e9364a5eb6d2ef06cd17f6050b048d8"}, + {file = "orjson-3.10.0-cp38-none-win_amd64.whl", hash = "sha256:33e6655a2542195d6fd9f850b428926559dee382f7a862dae92ca97fea03a5ad"}, + {file = "orjson-3.10.0-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4050920e831a49d8782a1720d3ca2f1c49b150953667eed6e5d63a62e80f46a2"}, + {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1897aa25a944cec774ce4a0e1c8e98fb50523e97366c637b7d0cddabc42e6643"}, + {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9bf565a69e0082ea348c5657401acec3cbbb31564d89afebaee884614fba36b4"}, + {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6ebc17cfbbf741f5c1a888d1854354536f63d84bee537c9a7c0335791bb9009"}, + {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2817877d0b69f78f146ab305c5975d0618df41acf8811249ee64231f5953fee"}, + {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57d017863ec8aa4589be30a328dacd13c2dc49de1c170bc8d8c8a98ece0f2925"}, + {file = "orjson-3.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:22c2f7e377ac757bd3476ecb7480c8ed79d98ef89648f0176deb1da5cd014eb7"}, + {file = "orjson-3.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e62ba42bfe64c60c1bc84799944f80704e996592c6b9e14789c8e2a303279912"}, + {file = "orjson-3.10.0-cp39-none-win32.whl", hash = "sha256:60c0b1bdbccd959ebd1575bd0147bd5e10fc76f26216188be4a36b691c937077"}, + {file = "orjson-3.10.0-cp39-none-win_amd64.whl", hash = "sha256:175a41500ebb2fdf320bf78e8b9a75a1279525b62ba400b2b2444e274c2c8bee"}, + {file = "orjson-3.10.0.tar.gz", hash = "sha256:ba4d8cac5f2e2cff36bea6b6481cdb92b38c202bcec603d6f5ff91960595a1ed"}, ] [[package]] @@ -961,4 +962,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "4411fb69fca534e61c7af60386dc101effb9666f13f3b85a0f148414e0c4cf79" +content-hash = "8da0244cb90aff64d2af412a331650e52939bbabafdfd0ddb4837fdcce83bf4b" diff --git a/pyproject.toml b/pyproject.toml index b69d67ba..198487e9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ sphinx-autodoc-typehints = "^2.0.0" types-certifi = "^2021.10.8" types-setuptools = "^69.2.0" pook = "^1.4.3" -orjson = "^3.9.15" +orjson = "^3.10.0" [build-system] requires = ["poetry-core>=1.0.0"] From dfec73241af21d181476e242aa867999dadbd000 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Apr 2024 18:56:23 -0700 Subject: [PATCH 02/88] Bump idna from 3.4 to 3.7 (#641) Bumps [idna](https://github.com/kjd/idna) from 3.4 to 3.7. - [Release notes](https://github.com/kjd/idna/releases) - [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.rst) - [Commits](https://github.com/kjd/idna/compare/v3.4...v3.7) --- updated-dependencies: - dependency-name: idna dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 72cdb162..66b3bfd2 100644 --- a/poetry.lock +++ b/poetry.lock @@ -166,13 +166,13 @@ six = ">=1.8.0" [[package]] name = "idna" -version = "3.4" +version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] [[package]] From 4a055817bf9a07367f9a0703a285a312c7c1683a Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Fri, 12 Apr 2024 14:01:04 -0700 Subject: [PATCH 03/88] Add flat files stock trades tutorial (#643) * Add flat files stock trades tutorial * Fix linting (ignore imports for examples) --- .../exchange-heatmap.py | 68 ++++++++++++++ .../flatfiles-stock-trades/exchanges-seen.py | 23 +++++ .../tools/flatfiles-stock-trades/heatmap.png | Bin 0 -> 50356 bytes .../flatfiles-stock-trades/histogram.png | Bin 0 -> 68598 bytes .../tools/flatfiles-stock-trades/readme.md | 86 ++++++++++++++++++ .../flatfiles-stock-trades/top-10-tickers.py | 25 +++++ .../trades-histogram.py | 63 +++++++++++++ 7 files changed, 265 insertions(+) create mode 100644 examples/tools/flatfiles-stock-trades/exchange-heatmap.py create mode 100644 examples/tools/flatfiles-stock-trades/exchanges-seen.py create mode 100644 examples/tools/flatfiles-stock-trades/heatmap.png create mode 100644 examples/tools/flatfiles-stock-trades/histogram.png create mode 100644 examples/tools/flatfiles-stock-trades/readme.md create mode 100644 examples/tools/flatfiles-stock-trades/top-10-tickers.py create mode 100644 examples/tools/flatfiles-stock-trades/trades-histogram.py diff --git a/examples/tools/flatfiles-stock-trades/exchange-heatmap.py b/examples/tools/flatfiles-stock-trades/exchange-heatmap.py new file mode 100644 index 00000000..060b6350 --- /dev/null +++ b/examples/tools/flatfiles-stock-trades/exchange-heatmap.py @@ -0,0 +1,68 @@ +# We can use a Python script that aggregates trades by exchange into 30-minute +# chunks, setting the stage for a visual analysis. This approach will highlight +# trade flows, including opening hours and peak activity times, across the +# exchanges. Please see https://polygon.io/blog/insights-from-trade-level-data +# +import pandas as pd # type: ignore +import seaborn as sns # type: ignore +import matplotlib.pyplot as plt # type: ignore +import numpy as np # type: ignore +import pytz # type: ignore + +# Replace '2024-04-05.csv' with the path to your actual file +file_path = "2024-04-05.csv" + +# Load the CSV file into a pandas DataFrame +df = pd.read_csv(file_path) + +# Convert 'participant_timestamp' to datetime (assuming nanoseconds Unix timestamp) +df["participant_timestamp"] = pd.to_datetime( + df["participant_timestamp"], unit="ns", utc=True +) + +# Convert to Eastern Time (ET), accounting for both EST and EDT +df["participant_timestamp"] = df["participant_timestamp"].dt.tz_convert( + "America/New_York" +) + +# Create a new column for 30-minute time intervals, now in ET +df["time_interval"] = df["participant_timestamp"].dt.floor("30T").dt.time + +# Ensure full 24-hour coverage by generating all possible 30-minute intervals +all_intervals = pd.date_range(start="00:00", end="23:59", freq="30T").time +all_exchanges = df["exchange"].unique() +full_index = pd.MultiIndex.from_product( + [all_exchanges, all_intervals], names=["exchange", "time_interval"] +) + +# Group by 'exchange' and 'time_interval', count trades, and reset index +grouped = ( + df.groupby(["exchange", "time_interval"]) + .size() + .reindex(full_index, fill_value=0) + .reset_index(name="trade_count") +) + +# Pivot the DataFrame for the heatmap, ensuring all intervals and exchanges are represented +pivot_table = grouped.pivot("exchange", "time_interval", "trade_count").fillna(0) + +# Apply a log scale transformation to the trade counts + 1 to handle zero trades correctly +log_scale_data = np.log1p(pivot_table.values) + +# Plotting the heatmap using the log scale data +plt.figure(figsize=(20, 10)) +sns.heatmap( + log_scale_data, + annot=False, + cmap="Reds", + linewidths=0.5, + cbar=False, + xticklabels=[t.strftime("%H:%M") for t in all_intervals], + yticklabels=pivot_table.index, +) +plt.title("Trade Count Heatmap by Exchange and Time Interval (Log Scale, ET)") +plt.ylabel("Exchange") +plt.xlabel("Time Interval (ET)") +plt.xticks(rotation=45) +plt.tight_layout() # Adjust layout to not cut off labels +plt.show() diff --git a/examples/tools/flatfiles-stock-trades/exchanges-seen.py b/examples/tools/flatfiles-stock-trades/exchanges-seen.py new file mode 100644 index 00000000..70fb5081 --- /dev/null +++ b/examples/tools/flatfiles-stock-trades/exchanges-seen.py @@ -0,0 +1,23 @@ +# Here's a Python script for analyzing the dataset, that identifies the +# distribution of trades across different exchanges and calculates their +# respective percentages of the total trades. Please see +# https://polygon.io/blog/insights-from-trade-level-data +# +import pandas as pd # type: ignore + +# Replace '2024-04-05.csv' with the path to your actual file +file_path = "2024-04-05.csv" + +# Load the CSV file into a pandas DataFrame +df = pd.read_csv(file_path) + +# Count the number of trades for each exchange +exchange_counts = df["exchange"].value_counts() + +# Calculate the total number of trades +total_trades = exchange_counts.sum() + +# Print out all exchanges and their percentage of total trades +for exchange, count in exchange_counts.items(): + percentage = (count / total_trades) * 100 + print(f"Exchange {exchange}: {count} trades, {percentage:.2f}% of total trades") diff --git a/examples/tools/flatfiles-stock-trades/heatmap.png b/examples/tools/flatfiles-stock-trades/heatmap.png new file mode 100644 index 0000000000000000000000000000000000000000..9cf4c0acda734fe9e6ec970b70e699c8fc4fb1a6 GIT binary patch literal 50356 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 OOYE21UHtT`Z~r%mer(17 literal 0 HcmV?d00001 diff --git a/examples/tools/flatfiles-stock-trades/histogram.png b/examples/tools/flatfiles-stock-trades/histogram.png new file mode 100644 index 0000000000000000000000000000000000000000..1ccb62dd3aa51f1fba666dee55c84904134284fd GIT binary patch literal 68598 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 Date: Mon, 15 Apr 2024 11:39:21 -0700 Subject: [PATCH 04/88] Bump sphinx-autodoc-typehints from 2.0.0 to 2.0.1 (#646) Bumps [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) from 2.0.0 to 2.0.1. - [Release notes](https://github.com/tox-dev/sphinx-autodoc-typehints/releases) - [Changelog](https://github.com/tox-dev/sphinx-autodoc-typehints/blob/main/CHANGELOG.md) - [Commits](https://github.com/tox-dev/sphinx-autodoc-typehints/compare/2.0.0...2.0.1) --- updated-dependencies: - dependency-name: sphinx-autodoc-typehints dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 12 ++++++------ pyproject.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/poetry.lock b/poetry.lock index 66b3bfd2..467f328c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -642,22 +642,22 @@ test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] [[package]] name = "sphinx-autodoc-typehints" -version = "2.0.0" +version = "2.0.1" description = "Type hints (PEP 484) support for the Sphinx autodoc extension" optional = false python-versions = ">=3.8" files = [ - {file = "sphinx_autodoc_typehints-2.0.0-py3-none-any.whl", hash = "sha256:12c0e161f6fe191c2cdfd8fa3caea271f5387d9fbc67ebcd6f4f1f24ce880993"}, - {file = "sphinx_autodoc_typehints-2.0.0.tar.gz", hash = "sha256:7f2cdac2e70fd9787926b6e9e541cd4ded1e838d2b46fda2a1bb0a75ec5b7f3a"}, + {file = "sphinx_autodoc_typehints-2.0.1-py3-none-any.whl", hash = "sha256:f73ae89b43a799e587e39266672c1075b2ef783aeb382d3ebed77c38a3fc0149"}, + {file = "sphinx_autodoc_typehints-2.0.1.tar.gz", hash = "sha256:60ed1e3b2c970acc0aa6e877be42d48029a9faec7378a17838716cacd8c10b12"}, ] [package.dependencies] sphinx = ">=7.1.2" [package.extras] -docs = ["furo (>=2023.9.10)"] +docs = ["furo (>=2024.1.29)"] numpy = ["nptyping (>=2.5)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "sphobjinv (>=2.3.1)", "typing-extensions (>=4.8)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.4.2)", "diff-cover (>=8.0.3)", "pytest (>=8.0.1)", "pytest-cov (>=4.1)", "sphobjinv (>=2.3.1)", "typing-extensions (>=4.9)"] [[package]] name = "sphinx-rtd-theme" @@ -962,4 +962,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "8da0244cb90aff64d2af412a331650e52939bbabafdfd0ddb4837fdcce83bf4b" +content-hash = "8840ed8dcf9efbb53aefef5232d66120141d38783ee9507beb1dbe7f6ba380b8" diff --git a/pyproject.toml b/pyproject.toml index 198487e9..c2b7aa99 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ types-urllib3 = "^1.26.25" Sphinx = "^7.1.2" sphinx-rtd-theme = "^2.0.0" # keep this in sync with docs/requirements.txt for readthedocs.org -sphinx-autodoc-typehints = "^2.0.0" +sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^69.2.0" pook = "^1.4.3" From 549d684b6c5c8879463ca438c99dd125e73ee271 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 11:45:12 -0700 Subject: [PATCH 05/88] Bump types-setuptools from 69.2.0.20240317 to 69.5.0.20240415 (#647) Bumps [types-setuptools](https://github.com/python/typeshed) from 69.2.0.20240317 to 69.5.0.20240415. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 467f328c..357c033c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -805,13 +805,13 @@ files = [ [[package]] name = "types-setuptools" -version = "69.2.0.20240317" +version = "69.5.0.20240415" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-69.2.0.20240317.tar.gz", hash = "sha256:b607c4c48842ef3ee49dc0c7fe9c1bad75700b071e1018bb4d7e3ac492d47048"}, - {file = "types_setuptools-69.2.0.20240317-py3-none-any.whl", hash = "sha256:cf91ff7c87ab7bf0625c3f0d4d90427c9da68561f3b0feab77977aaf0bbf7531"}, + {file = "types-setuptools-69.5.0.20240415.tar.gz", hash = "sha256:ea64af0a96a674f8c40ba34c09c254f3c70bc3f218c6bffa1d0912bd91584a2f"}, + {file = "types_setuptools-69.5.0.20240415-py3-none-any.whl", hash = "sha256:637cdb24a0d48a6ab362c09cfe3b89ecaa1c10666a8ba9452924e9a0ae00fa4a"}, ] [[package]] @@ -962,4 +962,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "8840ed8dcf9efbb53aefef5232d66120141d38783ee9507beb1dbe7f6ba380b8" +content-hash = "806600532f904000271f243073d688b916bf7814886d762f6b88df5a58bfd67e" diff --git a/pyproject.toml b/pyproject.toml index c2b7aa99..5f82ee52 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^2.0.0" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^69.2.0" +types-setuptools = "^69.5.0" pook = "^1.4.3" orjson = "^3.10.0" From 2daa9d2934bb515079a76258506c6995834e5429 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 11:40:10 -0700 Subject: [PATCH 06/88] Bump orjson from 3.10.0 to 3.10.1 (#651) Bumps [orjson](https://github.com/ijl/orjson) from 3.10.0 to 3.10.1. - [Release notes](https://github.com/ijl/orjson/releases) - [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md) - [Commits](https://github.com/ijl/orjson/compare/3.10.0...3.10.1) --- updated-dependencies: - dependency-name: orjson dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 106 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/poetry.lock b/poetry.lock index 357c033c..a2e8ed17 100644 --- a/poetry.lock +++ b/poetry.lock @@ -384,62 +384,62 @@ six = ">=1.8.0" [[package]] name = "orjson" -version = "3.10.0" +version = "3.10.1" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.0-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:47af5d4b850a2d1328660661f0881b67fdbe712aea905dadd413bdea6f792c33"}, - {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c90681333619d78360d13840c7235fdaf01b2b129cb3a4f1647783b1971542b6"}, - {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:400c5b7c4222cb27b5059adf1fb12302eebcabf1978f33d0824aa5277ca899bd"}, - {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5dcb32e949eae80fb335e63b90e5808b4b0f64e31476b3777707416b41682db5"}, - {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7d507c7493252c0a0264b5cc7e20fa2f8622b8a83b04d819b5ce32c97cf57b"}, - {file = "orjson-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e286a51def6626f1e0cc134ba2067dcf14f7f4b9550f6dd4535fd9d79000040b"}, - {file = "orjson-3.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8acd4b82a5f3a3ec8b1dc83452941d22b4711964c34727eb1e65449eead353ca"}, - {file = "orjson-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:30707e646080dd3c791f22ce7e4a2fc2438765408547c10510f1f690bd336217"}, - {file = "orjson-3.10.0-cp310-none-win32.whl", hash = "sha256:115498c4ad34188dcb73464e8dc80e490a3e5e88a925907b6fedcf20e545001a"}, - {file = "orjson-3.10.0-cp310-none-win_amd64.whl", hash = "sha256:6735dd4a5a7b6df00a87d1d7a02b84b54d215fb7adac50dd24da5997ffb4798d"}, - {file = "orjson-3.10.0-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9587053e0cefc284e4d1cd113c34468b7d3f17666d22b185ea654f0775316a26"}, - {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bef1050b1bdc9ea6c0d08468e3e61c9386723633b397e50b82fda37b3563d72"}, - {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d16c6963ddf3b28c0d461641517cd312ad6b3cf303d8b87d5ef3fa59d6844337"}, - {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4251964db47ef090c462a2d909f16c7c7d5fe68e341dabce6702879ec26d1134"}, - {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:73bbbdc43d520204d9ef0817ac03fa49c103c7f9ea94f410d2950755be2c349c"}, - {file = "orjson-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:414e5293b82373606acf0d66313aecb52d9c8c2404b1900683eb32c3d042dbd7"}, - {file = "orjson-3.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:feaed5bb09877dc27ed0d37f037ddef6cb76d19aa34b108db270d27d3d2ef747"}, - {file = "orjson-3.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5127478260db640323cea131ee88541cb1a9fbce051f0b22fa2f0892f44da302"}, - {file = "orjson-3.10.0-cp311-none-win32.whl", hash = "sha256:b98345529bafe3c06c09996b303fc0a21961820d634409b8639bc16bd4f21b63"}, - {file = "orjson-3.10.0-cp311-none-win_amd64.whl", hash = "sha256:658ca5cee3379dd3d37dbacd43d42c1b4feee99a29d847ef27a1cb18abdfb23f"}, - {file = "orjson-3.10.0-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4329c1d24fd130ee377e32a72dc54a3c251e6706fccd9a2ecb91b3606fddd998"}, - {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef0f19fdfb6553342b1882f438afd53c7cb7aea57894c4490c43e4431739c700"}, - {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c4f60db24161534764277f798ef53b9d3063092f6d23f8f962b4a97edfa997a0"}, - {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1de3fd5c7b208d836f8ecb4526995f0d5877153a4f6f12f3e9bf11e49357de98"}, - {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f93e33f67729d460a177ba285002035d3f11425ed3cebac5f6ded4ef36b28344"}, - {file = "orjson-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:237ba922aef472761acd697eef77fef4831ab769a42e83c04ac91e9f9e08fa0e"}, - {file = "orjson-3.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:98c1bfc6a9bec52bc8f0ab9b86cc0874b0299fccef3562b793c1576cf3abb570"}, - {file = "orjson-3.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:30d795a24be16c03dca0c35ca8f9c8eaaa51e3342f2c162d327bd0225118794a"}, - {file = "orjson-3.10.0-cp312-none-win32.whl", hash = "sha256:6a3f53dc650bc860eb26ec293dfb489b2f6ae1cbfc409a127b01229980e372f7"}, - {file = "orjson-3.10.0-cp312-none-win_amd64.whl", hash = "sha256:983db1f87c371dc6ffc52931eb75f9fe17dc621273e43ce67bee407d3e5476e9"}, - {file = "orjson-3.10.0-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9a667769a96a72ca67237224a36faf57db0c82ab07d09c3aafc6f956196cfa1b"}, - {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ade1e21dfde1d37feee8cf6464c20a2f41fa46c8bcd5251e761903e46102dc6b"}, - {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:23c12bb4ced1c3308eff7ba5c63ef8f0edb3e4c43c026440247dd6c1c61cea4b"}, - {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2d014cf8d4dc9f03fc9f870de191a49a03b1bcda51f2a957943fb9fafe55aac"}, - {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eadecaa16d9783affca33597781328e4981b048615c2ddc31c47a51b833d6319"}, - {file = "orjson-3.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd583341218826f48bd7c6ebf3310b4126216920853cbc471e8dbeaf07b0b80e"}, - {file = "orjson-3.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:90bfc137c75c31d32308fd61951d424424426ddc39a40e367704661a9ee97095"}, - {file = "orjson-3.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:13b5d3c795b09a466ec9fcf0bd3ad7b85467d91a60113885df7b8d639a9d374b"}, - {file = "orjson-3.10.0-cp38-none-win32.whl", hash = "sha256:5d42768db6f2ce0162544845facb7c081e9364a5eb6d2ef06cd17f6050b048d8"}, - {file = "orjson-3.10.0-cp38-none-win_amd64.whl", hash = "sha256:33e6655a2542195d6fd9f850b428926559dee382f7a862dae92ca97fea03a5ad"}, - {file = "orjson-3.10.0-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4050920e831a49d8782a1720d3ca2f1c49b150953667eed6e5d63a62e80f46a2"}, - {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1897aa25a944cec774ce4a0e1c8e98fb50523e97366c637b7d0cddabc42e6643"}, - {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9bf565a69e0082ea348c5657401acec3cbbb31564d89afebaee884614fba36b4"}, - {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6ebc17cfbbf741f5c1a888d1854354536f63d84bee537c9a7c0335791bb9009"}, - {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2817877d0b69f78f146ab305c5975d0618df41acf8811249ee64231f5953fee"}, - {file = "orjson-3.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57d017863ec8aa4589be30a328dacd13c2dc49de1c170bc8d8c8a98ece0f2925"}, - {file = "orjson-3.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:22c2f7e377ac757bd3476ecb7480c8ed79d98ef89648f0176deb1da5cd014eb7"}, - {file = "orjson-3.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e62ba42bfe64c60c1bc84799944f80704e996592c6b9e14789c8e2a303279912"}, - {file = "orjson-3.10.0-cp39-none-win32.whl", hash = "sha256:60c0b1bdbccd959ebd1575bd0147bd5e10fc76f26216188be4a36b691c937077"}, - {file = "orjson-3.10.0-cp39-none-win_amd64.whl", hash = "sha256:175a41500ebb2fdf320bf78e8b9a75a1279525b62ba400b2b2444e274c2c8bee"}, - {file = "orjson-3.10.0.tar.gz", hash = "sha256:ba4d8cac5f2e2cff36bea6b6481cdb92b38c202bcec603d6f5ff91960595a1ed"}, + {file = "orjson-3.10.1-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8ec2fc456d53ea4a47768f622bb709be68acd455b0c6be57e91462259741c4f3"}, + {file = "orjson-3.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e900863691d327758be14e2a491931605bd0aded3a21beb6ce133889830b659"}, + {file = "orjson-3.10.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab6ecbd6fe57785ebc86ee49e183f37d45f91b46fc601380c67c5c5e9c0014a2"}, + {file = "orjson-3.10.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8af7c68b01b876335cccfb4eee0beef2b5b6eae1945d46a09a7c24c9faac7a77"}, + {file = "orjson-3.10.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:915abfb2e528677b488a06eba173e9d7706a20fdfe9cdb15890b74ef9791b85e"}, + {file = "orjson-3.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe3fd4a36eff9c63d25503b439531d21828da9def0059c4f472e3845a081aa0b"}, + {file = "orjson-3.10.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d229564e72cfc062e6481a91977a5165c5a0fdce11ddc19ced8471847a67c517"}, + {file = "orjson-3.10.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9e00495b18304173ac843b5c5fbea7b6f7968564d0d49bef06bfaeca4b656f4e"}, + {file = "orjson-3.10.1-cp310-none-win32.whl", hash = "sha256:fd78ec55179545c108174ba19c1795ced548d6cac4d80d014163033c047ca4ea"}, + {file = "orjson-3.10.1-cp310-none-win_amd64.whl", hash = "sha256:50ca42b40d5a442a9e22eece8cf42ba3d7cd4cd0f2f20184b4d7682894f05eec"}, + {file = "orjson-3.10.1-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b345a3d6953628df2f42502297f6c1e1b475cfbf6268013c94c5ac80e8abc04c"}, + {file = "orjson-3.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caa7395ef51af4190d2c70a364e2f42138e0e5fcb4bc08bc9b76997659b27dab"}, + {file = "orjson-3.10.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b01d701decd75ae092e5f36f7b88a1e7a1d3bb7c9b9d7694de850fb155578d5a"}, + {file = "orjson-3.10.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5028981ba393f443d8fed9049211b979cadc9d0afecf162832f5a5b152c6297"}, + {file = "orjson-3.10.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:31ff6a222ea362b87bf21ff619598a4dc1106aaafaea32b1c4876d692891ec27"}, + {file = "orjson-3.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e852a83d7803d3406135fb7a57cf0c1e4a3e73bac80ec621bd32f01c653849c5"}, + {file = "orjson-3.10.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2567bc928ed3c3fcd90998009e8835de7c7dc59aabcf764b8374d36044864f3b"}, + {file = "orjson-3.10.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4ce98cac60b7bb56457bdd2ed7f0d5d7f242d291fdc0ca566c83fa721b52e92d"}, + {file = "orjson-3.10.1-cp311-none-win32.whl", hash = "sha256:813905e111318acb356bb8029014c77b4c647f8b03f314e7b475bd9ce6d1a8ce"}, + {file = "orjson-3.10.1-cp311-none-win_amd64.whl", hash = "sha256:03a3ca0b3ed52bed1a869163a4284e8a7b0be6a0359d521e467cdef7e8e8a3ee"}, + {file = "orjson-3.10.1-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f02c06cee680b1b3a8727ec26c36f4b3c0c9e2b26339d64471034d16f74f4ef5"}, + {file = "orjson-3.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1aa2f127ac546e123283e437cc90b5ecce754a22306c7700b11035dad4ccf85"}, + {file = "orjson-3.10.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2cf29b4b74f585225196944dffdebd549ad2af6da9e80db7115984103fb18a96"}, + {file = "orjson-3.10.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1b130c20b116f413caf6059c651ad32215c28500dce9cd029a334a2d84aa66f"}, + {file = "orjson-3.10.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d31f9a709e6114492136e87c7c6da5e21dfedebefa03af85f3ad72656c493ae9"}, + {file = "orjson-3.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d1d169461726f271ab31633cf0e7e7353417e16fb69256a4f8ecb3246a78d6e"}, + {file = "orjson-3.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:57c294d73825c6b7f30d11c9e5900cfec9a814893af7f14efbe06b8d0f25fba9"}, + {file = "orjson-3.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d7f11dbacfa9265ec76b4019efffabaabba7a7ebf14078f6b4df9b51c3c9a8ea"}, + {file = "orjson-3.10.1-cp312-none-win32.whl", hash = "sha256:d89e5ed68593226c31c76ab4de3e0d35c760bfd3fbf0a74c4b2be1383a1bf123"}, + {file = "orjson-3.10.1-cp312-none-win_amd64.whl", hash = "sha256:aa76c4fe147fd162107ce1692c39f7189180cfd3a27cfbc2ab5643422812da8e"}, + {file = "orjson-3.10.1-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a2c6a85c92d0e494c1ae117befc93cf8e7bca2075f7fe52e32698da650b2c6d1"}, + {file = "orjson-3.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9813f43da955197d36a7365eb99bed42b83680801729ab2487fef305b9ced866"}, + {file = "orjson-3.10.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ec917b768e2b34b7084cb6c68941f6de5812cc26c6f1a9fecb728e36a3deb9e8"}, + {file = "orjson-3.10.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5252146b3172d75c8a6d27ebca59c9ee066ffc5a277050ccec24821e68742fdf"}, + {file = "orjson-3.10.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:536429bb02791a199d976118b95014ad66f74c58b7644d21061c54ad284e00f4"}, + {file = "orjson-3.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dfed3c3e9b9199fb9c3355b9c7e4649b65f639e50ddf50efdf86b45c6de04b5"}, + {file = "orjson-3.10.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2b230ec35f188f003f5b543644ae486b2998f6afa74ee3a98fc8ed2e45960afc"}, + {file = "orjson-3.10.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:01234249ba19c6ab1eb0b8be89f13ea21218b2d72d496ef085cfd37e1bae9dd8"}, + {file = "orjson-3.10.1-cp38-none-win32.whl", hash = "sha256:8a884fbf81a3cc22d264ba780920d4885442144e6acaa1411921260416ac9a54"}, + {file = "orjson-3.10.1-cp38-none-win_amd64.whl", hash = "sha256:dab5f802d52b182163f307d2b1f727d30b1762e1923c64c9c56dd853f9671a49"}, + {file = "orjson-3.10.1-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a51fd55d4486bc5293b7a400f9acd55a2dc3b5fc8420d5ffe9b1d6bb1a056a5e"}, + {file = "orjson-3.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53521542a6db1411b3bfa1b24ddce18605a3abdc95a28a67b33f9145f26aa8f2"}, + {file = "orjson-3.10.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:27d610df96ac18ace4931411d489637d20ab3b8f63562b0531bba16011998db0"}, + {file = "orjson-3.10.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79244b1456e5846d44e9846534bd9e3206712936d026ea8e6a55a7374d2c0694"}, + {file = "orjson-3.10.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d751efaa8a49ae15cbebdda747a62a9ae521126e396fda8143858419f3b03610"}, + {file = "orjson-3.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27ff69c620a4fff33267df70cfd21e0097c2a14216e72943bd5414943e376d77"}, + {file = "orjson-3.10.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ebc58693464146506fde0c4eb1216ff6d4e40213e61f7d40e2f0dde9b2f21650"}, + {file = "orjson-3.10.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5be608c3972ed902e0143a5b8776d81ac1059436915d42defe5c6ae97b3137a4"}, + {file = "orjson-3.10.1-cp39-none-win32.whl", hash = "sha256:4ae10753e7511d359405aadcbf96556c86e9dbf3a948d26c2c9f9a150c52b091"}, + {file = "orjson-3.10.1-cp39-none-win_amd64.whl", hash = "sha256:fb5bc4caa2c192077fdb02dce4e5ef8639e7f20bec4e3a834346693907362932"}, + {file = "orjson-3.10.1.tar.gz", hash = "sha256:a883b28d73370df23ed995c466b4f6c708c1f7a9bdc400fe89165c96c7603204"}, ] [[package]] @@ -962,4 +962,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "806600532f904000271f243073d688b916bf7814886d762f6b88df5a58bfd67e" +content-hash = "9f58c6c6e942ef2437f02f1023dd789bc8387b0388d4086881e5b807cb139165" diff --git a/pyproject.toml b/pyproject.toml index 5f82ee52..6aef3f81 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^69.5.0" pook = "^1.4.3" -orjson = "^3.10.0" +orjson = "^3.10.1" [build-system] requires = ["poetry-core>=1.0.0"] From cc793e7abf6974ff147c3abc1e0e23afc85cbf07 Mon Sep 17 00:00:00 2001 From: Hunter <6395201+HunterL@users.noreply.github.com> Date: Mon, 22 Apr 2024 14:55:13 -0400 Subject: [PATCH 07/88] add CGI to MarketIndices (#652) --- polygon/rest/models/markets.py | 1 + 1 file changed, 1 insertion(+) diff --git a/polygon/rest/models/markets.py b/polygon/rest/models/markets.py index 509caa86..3280cd05 100644 --- a/polygon/rest/models/markets.py +++ b/polygon/rest/models/markets.py @@ -30,6 +30,7 @@ class MarketIndices: "Contains indices market status data." s_and_p: Optional[str] = None societe_generale: Optional[str] = None + cgi: Optional[str] = None msci: Optional[str] = None ftse_russell: Optional[str] = None mstar: Optional[str] = None From 25be6a714670511182a6f72638207ae4859445c0 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Thu, 25 Apr 2024 11:54:04 -0700 Subject: [PATCH 08/88] Updated spec with CGI and other misc updates (#655) --- .polygon/rest.json | 125 +++++++++++++++++---------------------------- 1 file changed, 47 insertions(+), 78 deletions(-) diff --git a/.polygon/rest.json b/.polygon/rest.json index fe330dce..14f9bceb 100644 --- a/.polygon/rest.json +++ b/.polygon/rest.json @@ -12698,6 +12698,10 @@ "description": "The status of Cboe Streaming Market Indices Cryptocurrency (\"CCCY\") indices trading hours.", "type": "string" }, + "cgi": { + "description": "The status of Cboe Global Indices (\"CGI\") trading hours.", + "type": "string" + }, "dow_jones": { "description": "The status of Dow Jones indices trading hours", "type": "string" @@ -26444,6 +26448,10 @@ "description": "The first line of the company's headquarters address.", "type": "string" }, + "address2": { + "description": "The second line of the company's headquarters address, if applicable.", + "type": "string" + }, "city": { "description": "The city of the company's headquarters address.", "type": "string" @@ -26608,7 +26616,7 @@ } }, "text/csv": { - "example": "ticker,name,market,locale,primary_exchange,type,active,currency_name,cik,composite_figi,share_class_figi,share_class_shares_outstanding,weighted_shares_outstanding,round_lot,market_cap,phone_number,address1,city,state,postal_code,sic_code,sic_description,ticker_root,total_employees,list_date,homepage_url,description,branding/logo_url,branding/icon_url\nAAPL,Apple Inc.,stocks,us,XNAS,CS,true,usd,0000320193,BBG000B9XRY4,BBG001S5N8V8,16406400000,16334371000,100,2771126040150,(408) 996-1010,One Apple Park Way,Cupertino,CA,95014,3571,ELECTRONIC COMPUTERS,AAPL,154000,1980-12-12,https://www.apple.com,\"Apple designs a wide variety of consumer electronic devices, including smartphones (iPhone), tablets (iPad), PCs (Mac), smartwatches (Apple Watch), AirPods, and TV boxes (Apple TV), among others. The iPhone makes up the majority of Apple's total revenue. In addition, Apple offers its customers a variety of services such as Apple Music, iCloud, Apple Care, Apple TV+, Apple Arcade, Apple Card, and Apple Pay, among others. Apple's products run internally developed software and semiconductors, and the firm is well known for its integration of hardware, software and services. Apple's products are distributed online as well as through company-owned stores and third-party retailers. The company generates roughly 40% of its revenue from the Americas, with the remainder earned internationally.\",https://api.polygon.io/v1/reference/company-branding/d3d3LmFwcGxlLmNvbQ/images/2022-01-10_logo.svg,https://api.polygon.io/v1/reference/company-branding/d3d3LmFwcGxlLmNvbQ/images/2022-01-10_icon.png\n", + "example": "ticker,name,market,locale,primary_exchange,type,active,currency_name,cik,composite_figi,share_class_figi,share_class_shares_outstanding,weighted_shares_outstanding,round_lot,market_cap,phone_number,address1,address2,city,state,postal_code,sic_code,sic_description,ticker_root,total_employees,list_date,homepage_url,description,branding/logo_url,branding/icon_url\nAAPL,Apple Inc.,stocks,us,XNAS,CS,true,usd,0000320193,BBG000B9XRY4,BBG001S5N8V8,16406400000,16334371000,100,2771126040150,(408) 996-1010,One Apple Park Way,,Cupertino,CA,95014,3571,ELECTRONIC COMPUTERS,AAPL,154000,1980-12-12,https://www.apple.com,\"Apple designs a wide variety of consumer electronic devices, including smartphones (iPhone), tablets (iPad), PCs (Mac), smartwatches (Apple Watch), AirPods, and TV boxes (Apple TV), among others. The iPhone makes up the majority of Apple's total revenue. In addition, Apple offers its customers a variety of services such as Apple Music, iCloud, Apple Care, Apple TV+, Apple Arcade, Apple Card, and Apple Pay, among others. Apple's products run internally developed software and semiconductors, and the firm is well known for its integration of hardware, software and services. Apple's products are distributed online as well as through company-owned stores and third-party retailers. The company generates roughly 40% of its revenue from the Americas, with the remainder earned internationally.\",https://api.polygon.io/v1/reference/company-branding/d3d3LmFwcGxlLmNvbQ/images/2022-01-10_logo.svg,https://api.polygon.io/v1/reference/company-branding/d3d3LmFwcGxlLmNvbQ/images/2022-01-10_icon.png\n", "schema": { "type": "string" } @@ -30323,7 +30331,7 @@ }, "/vX/reference/tickers/taxonomies": { "get": { - "description": "Retrieve taxonomy classifications for one or more tickers.", + "description": "Many investors place a high value on sector data. It is used to measure economic activity, identify peers and competitors, build ETF products, quantify market share, and compare company performance. However, there are some limitations to industry standard sectors:\n* They have difficulty identifying the primary area of activity for large, complex businesses.\n* Studies confirm significant disagreement between classification schemes when attempting to categorize the same companies.\n* The systems' hierarchical nature is inflexible and struggles to convey business nuances.\n
\n
\nAs a result, we've developed a new taxonomy to supplement existing sector classifications. The taxonomy is created by reviewing related 10K filings to create a set of structured categories and tags.\n
\n
\nThe categories are based on company operating models and are industry agnostic. Our current version only supports one category, Revenue Streams, with future plans to support more.\n
\n
\nThe tags define a specific type within the category. Within the Revenue Streams category, for example, tags for \"product sales\" and \"advertising\" may be found. A company may have many tags in a given category. The complete Revenue Streams taxonomy is shown below.\n
\n
\nOur taxonomy is powered by AI and is currently in early beta testing. You should expect some inaccuracies in the responses.\n
\n
\n## **Revenue Streams**\n *Latest Revision (7/7/2023)*\n
\n
\n- **Physical Product Sales:**\n Revenue generated from the sale of tangible goods or physical products to customers, either in-store or online.\n - Consumer Goods\n - Industrial Goods\n - Electronics\n - Vehicles\n - Healthcare Products\n
\n
\n- **Digital Product Sales:**\n Revenue earned from the sale of digital goods or products, such as software licenses, e-books, music downloads, or digital media content. It also includes revenue obtained by selling aggregated, anonymized, or processed data to third parties for market research, analytics, or other purposes.\n - Software\n - E-books and Digital Media\n - Mobile Applications\n - Games\n - Online Courses\n - Market Research Data\n - Customer Behavior Data\n
\n
\n- **Professional Services:**\n Revenue obtained by providing specialized services, expertise, or consulting to clients in exchange for fees. This includes services offered by professionals such as lawyers, accountants, or consultants.\n - Consulting\n - Legal Services\n - Financial Services\n - Marketing Services\n - Construction Services\n - Education & Tutoring\n
\n
\n- **Consumer Services:**\n Revenue earned from providing services directly to consumers, including services like healthcare, personal grooming, fitness, or hospitality.\n - Dining & Hospitality\n - Personal Care\n - Entertainment & Recreation\n - Fitness & Wellness\n - Travel & Tourism\n - Transportation\n - Home Services\n - Child & Family Care\n - Automotive\n
\n
\n- **Subscription-based Revenue:**\n Revenue obtained from recurring fees charged to customers for accessing a product or service over a defined period. This includes revenue from subscription-based models, membership programs, or software-as-a-service (SaaS) offerings.\n - Software as a Service (SaaS)\n - Streaming Services\n - Physical Media\n - Memberships\n
\n
\n- **Licensing and Royalties:**\n Revenue generated from the licensing of intellectual property rights to third parties, including franchise rights, patent licensing, brand licensing, and the receipt of royalties for authorized use of intellectual property like music royalties, book royalties, or patent royalties.\n - Franchise Fees\n - Patent Licensing\n - Brand Licensing\n - Media Royalties\n
\n
\n- **Advertising:**\n Revenue generated by displaying ads or promotional content to customers, whether through traditional or digital advertising channels, including revenue from display ads, sponsored content, or affiliate marketing.\n - Print Advertising\n - Online Display Advertising\n - Social Media Advertising\n - Influencer Marketing\n
\n
\n- **Commission-Based Revenue:**\n Revenue earned by acting as an intermediary and receiving a percentage or commission on sales made on behalf of another party. This includes revenue from affiliate programs, referral fees, or any other commission-based revenue models.\n - Real Estate Commissions\n - Affiliate Marketing Commissions\n - Online Marketplace Commissions\n
\n
\n- **Rentals or Leasing:**\n Revenue earned by leasing or renting out assets, properties, or equipment to customers, including rental income from real estate properties, equipment leasing, or vehicle rentals.\n - Property Rentals\n - Equipment Leasing\n - Vehicle Rentals", "operationId": "ListTickerTaxonomyClassifications", "parameters": [ { @@ -30334,16 +30342,16 @@ }, "x-polygon-filter-field": { "anyOf": { - "description": "Comma separated list of tickers, up to a maximum of 250. If no tickers are passed then all results will be returned in a paginated manner.\n\nWarning: The maximum number of characters allowed in a URL are subject to your technology stack.\n", + "description": "Comma separated list of tickers, up to a maximum of 250.\n\nWarning: The maximum number of characters allowed in a URL are subject to your own technology stack.\n", "enabled": true, - "example": "NCLH,O:SPY250321C00380000,C:EURUSD,X:BTCUSD,I:SPX" + "example": "AAPL,AMD,MSFT" }, "range": true, "type": "string" } }, { - "description": "Filter by taxonomy category.", + "description": "Filter by taxonomy category. The current version of this API supports the following category: revenue_streams", "in": "query", "name": "category", "schema": { @@ -30359,25 +30367,32 @@ } }, { - "description": "Range by ticker.", + "description": "Order results ascending or descending based on the ticker.", "in": "query", - "name": "ticker.gte", + "name": "order", "schema": { + "enum": [ + "asc", + "desc" + ], "type": "string" } }, { - "description": "Range by ticker.", + "description": "Limit the number of results returned. The default is 10 and the max is 250.", "in": "query", - "name": "ticker.gt", + "name": "limit", "schema": { - "type": "string" + "default": 10, + "maximum": 250, + "minimum": 1, + "type": "integer" } }, { "description": "Range by ticker.", "in": "query", - "name": "ticker.lte", + "name": "ticker.gte", "schema": { "type": "string" } @@ -30385,55 +30400,33 @@ { "description": "Range by ticker.", "in": "query", - "name": "ticker.lt", + "name": "ticker.gt", "schema": { "type": "string" } }, { - "description": "Comma separated list of tickers, up to a maximum of 250. If no tickers are passed then all results will be returned in a paginated manner.\n\nWarning: The maximum number of characters allowed in a URL are subject to your technology stack.\n", - "example": "NCLH,O:SPY250321C00380000,C:EURUSD,X:BTCUSD,I:SPX", + "description": "Range by ticker.", "in": "query", - "name": "ticker.any_of", + "name": "ticker.lte", "schema": { "type": "string" } }, { - "description": "Order results based on the `sort` field.", + "description": "Range by ticker.", "in": "query", - "name": "order", + "name": "ticker.lt", "schema": { - "enum": [ - "asc", - "desc" - ], - "example": "asc", "type": "string" } }, { - "description": "Limit the number of results returned, default is 10 and max is 250.", - "in": "query", - "name": "limit", - "schema": { - "default": 10, - "example": 10, - "maximum": 250, - "minimum": 1, - "type": "integer" - } - }, - { - "description": "Sort field used for ordering.", + "description": "Comma separated list of tickers, up to a maximum of 250.\n\nWarning: The maximum number of characters allowed in a URL are subject to your own technology stack.\n", + "example": "AAPL,AMD,MSFT", "in": "query", - "name": "sort", + "name": "ticker.any_of", "schema": { - "default": "ticker", - "enum": [ - "ticker" - ], - "example": "ticker", "type": "string" } } @@ -30443,29 +30436,22 @@ "content": { "application/json": { "example": { - "request_id": "31d59dda-80e5-4721-8496-d0d32a654afe", + "request_id": "a4f9947955398c28905337f003bfee7c", "results": [ { "category": "revenue_streams", - "reason": "Company recognizes revenue from the sales of consumer electronics such as the iPhone and iPad.", - "relevance": 0.99, - "tag": "physical_product_sales_electronics", + "reason": "The text mentions revenue earned from the sale of digital goods or products, such as software licenses, e-books, music downloads, or digital media content.", + "tag": "digital_product_sales", "ticker": "AAPL" }, { "category": "revenue_streams", - "reason": "Company recognizes revenue from the sales of digital products such as digital storage and app store fees.", - "relevance": 0.99, - "tag": "digital_product_sales_software", - "ticker": "AAPL" - }, - { - "category": "cost_structure", - "relevance": 0.86, - "tag": "economies_of_scale", + "reason": "The text mentions revenue generated from the licensing of intellectual property rights to third parties, including franchise rights, patent licensing, brand licensing, and the receipt of royalties for authorized use of intellectual property like music royalties, book royalties, or patent royalties.", + "tag": "licensing_and_royalties", "ticker": "AAPL" } - ] + ], + "status": "OK" }, "schema": { "properties": { @@ -30480,27 +30466,23 @@ "items": { "properties": { "category": { - "description": "The classification category.", + "description": "A dimension of a company\u2019s operating model that is agnostic to industry. Category contains a comprehensive list of tags which reflect defined types within that category. The current version of this API supports the following category: revenue_streams", "type": "string" }, "reason": { - "description": "The reason why the classification was given.", + "description": "The reason why the classification was given. The reason is provided by our AI to help you determine whether or not you agree with its applicability for your uses.", "type": "string" }, - "relevance": { - "description": "The relevance score for the tag. This is a measure of confidence in the tag classification.", - "format": "double", - "type": "number" - }, "tag": { - "description": "The classification tag. Each category has a set of associated tags.", + "description": "A specific type within a category. For example \u201cproduct_sales\u201d is a type of revenue stream. A company may have multiple tags within a given category. A taxonomy of tags are determined based on 10k filings.", "type": "string" }, "ticker": { - "description": "The ticker symbol for the asset.", + "description": "The identifying ticker symbol for the asset.", "type": "string" } }, + "type": "object", "x-polygon-go-type": { "name": "TaxonomyClassificationResult" } @@ -30531,20 +30513,7 @@ "description": "Reference data", "name": "reference" }, - "x-polygon-experimental": {}, - "x-polygon-paginate": { - "limit": { - "default": 10, - "max": 250, - "min": 1 - }, - "sort": { - "default": "ticker", - "enum": [ - "ticker" - ] - } - } + "x-polygon-experimental": {} }, "x-polygon-draft": true }, From 8fb2416e9f468e1acce8ed70e667e723c84a83ab Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Fri, 26 Apr 2024 10:35:20 -0700 Subject: [PATCH 09/88] Update README.md to remove LaunchPad (#654) --- README.md | 48 ------------------------------------------------ 1 file changed, 48 deletions(-) diff --git a/README.md b/README.md index 81494a78..3df6c512 100644 --- a/README.md +++ b/README.md @@ -150,54 +150,6 @@ ws.run(handle_msg=handle_msg) ``` Check out more detailed examples [here](https://github.com/polygon-io/client-python/tree/master/examples/websocket). -## Launchpad REST API Client -Users of the Launchpad product will need to pass in certain headers in order to make API requests using the RequestOptionBuilder. -Example can be found [here](./examples/launchpad). - -Import classes -```python -from polygon import RESTClient -from polygon.rest.models.request import RequestOptionBuilder -``` -### Using the client -Create client and set options -```python -# create client -c = RESTClient(api_key="API_KEY") - -# create request options -options = RequestOptionBuilder().edge_headers( - edge_id="YOUR_EDGE_ID", # required - edge_ip_address="IP_ADDRESS", # required -) -``` -Request data using client methods. -```python -# get response -res = c.get_aggs("AAPL", 1, "day", "2022-04-04", "2022-04-04", options=options) - -# do something with response -``` -Checkout Launchpad readme for more details on RequestOptionBuilder [here](./examples/launchpad) - - -## Launchpad WebSocket Client - -```python -from polygon import WebSocketClient -from polygon.websocket.models import WebSocketMessage -from polygon.websocket.models.common import Feed, Market -from typing import List - -ws = WebSocketClient(api_key="API_KEY",feed=Feed.Launchpad,market=Market.Stocks, subscriptions=["AM.AAPL"]) - -def handle_msg(msg: List[WebSocketMessage]): - for m in msg: - print(m) - -ws.run(handle_msg=handle_msg) -``` - ## Contributing If you found a bug or have an idea for a new feature, please first discuss it with us by From 18d3ba7e0dea57dba2977e2c393e92bf2ba86fb7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 10:03:52 -0700 Subject: [PATCH 10/88] Bump types-setuptools from 69.5.0.20240415 to 69.5.0.20240423 (#660) Bumps [types-setuptools](https://github.com/python/typeshed) from 69.5.0.20240415 to 69.5.0.20240423. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index a2e8ed17..eaae4aae 100644 --- a/poetry.lock +++ b/poetry.lock @@ -805,13 +805,13 @@ files = [ [[package]] name = "types-setuptools" -version = "69.5.0.20240415" +version = "69.5.0.20240423" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-69.5.0.20240415.tar.gz", hash = "sha256:ea64af0a96a674f8c40ba34c09c254f3c70bc3f218c6bffa1d0912bd91584a2f"}, - {file = "types_setuptools-69.5.0.20240415-py3-none-any.whl", hash = "sha256:637cdb24a0d48a6ab362c09cfe3b89ecaa1c10666a8ba9452924e9a0ae00fa4a"}, + {file = "types-setuptools-69.5.0.20240423.tar.gz", hash = "sha256:a7ba908f1746c4337d13f027fa0f4a5bcad6d1d92048219ba792b3295c58586d"}, + {file = "types_setuptools-69.5.0.20240423-py3-none-any.whl", hash = "sha256:a4381e041510755a6c9210e26ad55b1629bc10237aeb9cb8b6bd24996b73db48"}, ] [[package]] From 35b356f51f2e9af0aa49960ecaa65ce858c120d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 10:07:52 -0700 Subject: [PATCH 11/88] Bump mypy from 1.9.0 to 1.10.0 (#659) Bumps [mypy](https://github.com/python/mypy) from 1.9.0 to 1.10.0. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/1.9.0...v1.10.0) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: justinpolygon <123573436+justinpolygon@users.noreply.github.com> --- poetry.lock | 58 +++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/poetry.lock b/poetry.lock index eaae4aae..0e2bfa82 100644 --- a/poetry.lock +++ b/poetry.lock @@ -312,38 +312,38 @@ files = [ [[package]] name = "mypy" -version = "1.9.0" +version = "1.10.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"}, - {file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"}, - {file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"}, - {file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"}, - {file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"}, - {file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"}, - {file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"}, - {file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"}, - {file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"}, - {file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"}, - {file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"}, - {file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"}, - {file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"}, - {file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"}, - {file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"}, - {file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"}, - {file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"}, - {file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"}, - {file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"}, - {file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"}, - {file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"}, - {file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"}, - {file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"}, - {file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"}, - {file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"}, - {file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"}, - {file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"}, + {file = "mypy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2"}, + {file = "mypy-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99"}, + {file = "mypy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2"}, + {file = "mypy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9"}, + {file = "mypy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051"}, + {file = "mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1"}, + {file = "mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee"}, + {file = "mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de"}, + {file = "mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7"}, + {file = "mypy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53"}, + {file = "mypy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b"}, + {file = "mypy-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30"}, + {file = "mypy-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e"}, + {file = "mypy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5"}, + {file = "mypy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda"}, + {file = "mypy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0"}, + {file = "mypy-1.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727"}, + {file = "mypy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4"}, + {file = "mypy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061"}, + {file = "mypy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f"}, + {file = "mypy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976"}, + {file = "mypy-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec"}, + {file = "mypy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821"}, + {file = "mypy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746"}, + {file = "mypy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a"}, + {file = "mypy-1.10.0-py3-none-any.whl", hash = "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee"}, + {file = "mypy-1.10.0.tar.gz", hash = "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131"}, ] [package.dependencies] @@ -962,4 +962,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "9f58c6c6e942ef2437f02f1023dd789bc8387b0388d4086881e5b807cb139165" +content-hash = "1844e10c9359822d125378cc42dbe517f01d9e5cb0dbc1f838ebfbf56c40203b" diff --git a/pyproject.toml b/pyproject.toml index 6aef3f81..c42f4082 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ certifi = ">=2022.5.18,<2025.0.0" [tool.poetry.dev-dependencies] black = "^23.12.1" -mypy = "^1.9" +mypy = "^1.10" types-urllib3 = "^1.26.25" Sphinx = "^7.1.2" sphinx-rtd-theme = "^2.0.0" From 9e83bd8f694f8baea2116e7ce37051785b4bd087 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Mon, 29 Apr 2024 10:49:43 -0700 Subject: [PATCH 12/88] Fix poetry black lint check (#644) * Fix poetry black lint check * Revert formatting changes to ws init --- examples/rest/demo_correlation_matrix.py | 1 + polygon/rest/models/conditions.py | 32 +++--- polygon/rest/models/contracts.py | 8 +- polygon/rest/models/financials.py | 126 ++++++++++++++--------- polygon/rest/models/markets.py | 24 +++-- polygon/rest/models/snapshot.py | 112 ++++++++++++-------- polygon/rest/models/tickers.py | 12 +-- 7 files changed, 192 insertions(+), 123 deletions(-) diff --git a/examples/rest/demo_correlation_matrix.py b/examples/rest/demo_correlation_matrix.py index f056ab6d..df939590 100644 --- a/examples/rest/demo_correlation_matrix.py +++ b/examples/rest/demo_correlation_matrix.py @@ -40,6 +40,7 @@ essential to do your own research or consult a financial advisor for personalized advice when investing. """ + import pandas as pd # type: ignore import numpy as np # type: ignore import seaborn as sns # type: ignore diff --git a/polygon/rest/models/conditions.py b/polygon/rest/models/conditions.py index 3fc0d776..98baa261 100644 --- a/polygon/rest/models/conditions.py +++ b/polygon/rest/models/conditions.py @@ -47,12 +47,16 @@ class UpdateRules: @staticmethod def from_dict(d): return UpdateRules( - consolidated=None - if "consolidated" not in d - else Consolidated.from_dict(d["consolidated"]), - market_center=None - if "market_center" not in d - else MarketCenter.from_dict(d["market_center"]), + consolidated=( + None + if "consolidated" not in d + else Consolidated.from_dict(d["consolidated"]) + ), + market_center=( + None + if "market_center" not in d + else MarketCenter.from_dict(d["market_center"]) + ), ) @@ -82,11 +86,15 @@ def from_dict(d): id=d.get("id", None), legacy=d.get("legacy", None), name=d.get("name", None), - sip_mapping=None - if "sip_mapping" not in d - else SipMapping.from_dict(d["sip_mapping"]), + sip_mapping=( + None + if "sip_mapping" not in d + else SipMapping.from_dict(d["sip_mapping"]) + ), type=d.get("type", None), - update_rules=None - if "update_rules" not in d - else UpdateRules.from_dict(d["update_rules"]), + update_rules=( + None + if "update_rules" not in d + else UpdateRules.from_dict(d["update_rules"]) + ), ) diff --git a/polygon/rest/models/contracts.py b/polygon/rest/models/contracts.py index dc69f614..469779b6 100644 --- a/polygon/rest/models/contracts.py +++ b/polygon/rest/models/contracts.py @@ -32,9 +32,11 @@ class OptionsContract: @staticmethod def from_dict(d): return OptionsContract( - additional_underlyings=None - if "additional_underlyings" not in d - else [Underlying.from_dict(u) for u in d["additional_underlyings"]], + additional_underlyings=( + None + if "additional_underlyings" not in d + else [Underlying.from_dict(u) for u in d["additional_underlyings"]] + ), cfi=d.get("cfi", None), contract_type=d.get("contract_type", None), correction=d.get("correction", None), diff --git a/polygon/rest/models/financials.py b/polygon/rest/models/financials.py index 85a63e37..1a480c48 100644 --- a/polygon/rest/models/financials.py +++ b/polygon/rest/models/financials.py @@ -74,16 +74,22 @@ class CashFlowStatement: @staticmethod def from_dict(d): return CashFlowStatement( - exchange_gains_losses=None - if "exchange_gains_losses" not in d - else ExchangeGainsLosses.from_dict(d["exchange_gains_losses"]), - net_cash_flow=None - if "net_cash_flow" not in d - else NetCashFlow.from_dict(d["net_cash_flow"]), - net_cash_flow_from_financing_activities=None - if "net_cash_flow_from_financing_activities" not in d - else NetCashFlowFromFinancingActivities.from_dict( - d["net_cash_flow_from_financing_activities"] + exchange_gains_losses=( + None + if "exchange_gains_losses" not in d + else ExchangeGainsLosses.from_dict(d["exchange_gains_losses"]) + ), + net_cash_flow=( + None + if "net_cash_flow" not in d + else NetCashFlow.from_dict(d["net_cash_flow"]) + ), + net_cash_flow_from_financing_activities=( + None + if "net_cash_flow_from_financing_activities" not in d + else NetCashFlowFromFinancingActivities.from_dict( + d["net_cash_flow_from_financing_activities"] + ) ), ) @@ -145,18 +151,24 @@ class ComprehensiveIncome: @staticmethod def from_dict(d): return ComprehensiveIncome( - comprehensive_income_loss=None - if "comprehensive_income_loss" not in d - else ComprehensiveIncomeLoss.from_dict(d["comprehensive_income_loss"]), - comprehensive_income_loss_attributable_to_parent=None - if "comprehensive_income_loss_attributable_to_parent" not in d - else ComprehensiveIncomeLossAttributableToParent.from_dict( - d["comprehensive_income_loss_attributable_to_parent"] + comprehensive_income_loss=( + None + if "comprehensive_income_loss" not in d + else ComprehensiveIncomeLoss.from_dict(d["comprehensive_income_loss"]) + ), + comprehensive_income_loss_attributable_to_parent=( + None + if "comprehensive_income_loss_attributable_to_parent" not in d + else ComprehensiveIncomeLossAttributableToParent.from_dict( + d["comprehensive_income_loss_attributable_to_parent"] + ) ), - other_comprehensive_income_loss=None - if "other_comprehensive_income_loss" not in d - else OtherComprehensiveIncomeLoss.from_dict( - d["other_comprehensive_income_loss"] + other_comprehensive_income_loss=( + None + if "other_comprehensive_income_loss" not in d + else OtherComprehensiveIncomeLoss.from_dict( + d["other_comprehensive_income_loss"] + ) ), ) @@ -248,18 +260,26 @@ class IncomeStatement: @staticmethod def from_dict(d): return IncomeStatement( - basic_earnings_per_share=None - if "basic_earnings_per_share" not in d - else BasicEarningsPerShare.from_dict(d["basic_earnings_per_share"]), - cost_of_revenue=None - if "cost_of_revenue" not in d - else CostOfRevenue.from_dict(d["cost_of_revenue"]), - gross_profit=None - if "gross_profit" not in d - else GrossProfit.from_dict(d["gross_profit"]), - operating_expenses=None - if "operating_expenses" not in d - else OperatingExpenses.from_dict(d["operating_expenses"]), + basic_earnings_per_share=( + None + if "basic_earnings_per_share" not in d + else BasicEarningsPerShare.from_dict(d["basic_earnings_per_share"]) + ), + cost_of_revenue=( + None + if "cost_of_revenue" not in d + else CostOfRevenue.from_dict(d["cost_of_revenue"]) + ), + gross_profit=( + None + if "gross_profit" not in d + else GrossProfit.from_dict(d["gross_profit"]) + ), + operating_expenses=( + None + if "operating_expenses" not in d + else OperatingExpenses.from_dict(d["operating_expenses"]) + ), revenues=None if "revenues" not in d else Revenues.from_dict(d["revenues"]), ) @@ -275,18 +295,28 @@ class Financials: @staticmethod def from_dict(d): return Financials( - balance_sheet=None - if "balance_sheet" not in d - else {k: DataPoint.from_dict(v) for (k, v) in d["balance_sheet"].items()}, - cash_flow_statement=None - if "cash_flow_statement" not in d - else CashFlowStatement.from_dict(d["cash_flow_statement"]), - comprehensive_income=None - if "comprehensive_income" not in d - else ComprehensiveIncome.from_dict(d["comprehensive_income"]), - income_statement=None - if "income_statement" not in d - else IncomeStatement.from_dict(d["income_statement"]), + balance_sheet=( + None + if "balance_sheet" not in d + else { + k: DataPoint.from_dict(v) for (k, v) in d["balance_sheet"].items() + } + ), + cash_flow_statement=( + None + if "cash_flow_statement" not in d + else CashFlowStatement.from_dict(d["cash_flow_statement"]) + ), + comprehensive_income=( + None + if "comprehensive_income" not in d + else ComprehensiveIncome.from_dict(d["comprehensive_income"]) + ), + income_statement=( + None + if "income_statement" not in d + else IncomeStatement.from_dict(d["income_statement"]) + ), ) @@ -311,9 +341,9 @@ def from_dict(d): company_name=d.get("company_name", None), end_date=d.get("end_date", None), filing_date=d.get("filing_date", None), - financials=None - if "financials" not in d - else Financials.from_dict(d["financials"]), + financials=( + None if "financials" not in d else Financials.from_dict(d["financials"]) + ), fiscal_period=d.get("fiscal_period", None), fiscal_year=d.get("fiscal_year", None), source_filing_file_url=d.get("source_filing_file_url", None), diff --git a/polygon/rest/models/markets.py b/polygon/rest/models/markets.py index 3280cd05..4e68abd4 100644 --- a/polygon/rest/models/markets.py +++ b/polygon/rest/models/markets.py @@ -74,16 +74,22 @@ class MarketStatus: def from_dict(d): return MarketStatus( after_hours=d.get("afterHours", None), - currencies=None - if "currencies" not in d - else MarketCurrencies.from_dict(d["currencies"]), + currencies=( + None + if "currencies" not in d + else MarketCurrencies.from_dict(d["currencies"]) + ), early_hours=d.get("earlyHours", None), - exchanges=None - if "exchanges" not in d - else MarketExchanges.from_dict(d["exchanges"]), - indicesGroups=None - if "indicesGroups" not in d - else MarketIndices.from_dict(d["indicesGroups"]), + exchanges=( + None + if "exchanges" not in d + else MarketExchanges.from_dict(d["exchanges"]) + ), + indicesGroups=( + None + if "indicesGroups" not in d + else MarketIndices.from_dict(d["indicesGroups"]) + ), market=d.get("market", None), server_time=d.get("serverTime", None), ) diff --git a/polygon/rest/models/snapshot.py b/polygon/rest/models/snapshot.py index d97f17c3..ceb5f7f8 100644 --- a/polygon/rest/models/snapshot.py +++ b/polygon/rest/models/snapshot.py @@ -70,9 +70,9 @@ def from_dict(d): type=d.get("type", None), ticker=d.get("ticker", None), market_status=d.get("market_status", None), - session=None - if "session" not in d - else IndicesSession.from_dict(d["session"]), + session=( + None if "session" not in d else IndicesSession.from_dict(d["session"]) + ), error=d.get("error", None), message=d.get("message", None), ) @@ -96,12 +96,12 @@ class TickerSnapshot: def from_dict(d): return TickerSnapshot( day=None if "day" not in d else Agg.from_dict(d["day"]), - last_quote=None - if "lastQuote" not in d - else LastQuote.from_dict(d["lastQuote"]), - last_trade=None - if "lastTrade" not in d - else LastTrade.from_dict(d["lastTrade"]), + last_quote=( + None if "lastQuote" not in d else LastQuote.from_dict(d["lastQuote"]) + ), + last_trade=( + None if "lastTrade" not in d else LastTrade.from_dict(d["lastTrade"]) + ), min=None if "min" not in d else MinuteSnapshot.from_dict(d["min"]), prev_day=None if "prevDay" not in d else Agg.from_dict(d["prevDay"]), ticker=d.get("ticker", None), @@ -223,24 +223,32 @@ class OptionContractSnapshot: def from_dict(d): return OptionContractSnapshot( break_even_price=d.get("break_even_price", None), - day=None - if "day" not in d - else DayOptionContractSnapshot.from_dict(d["day"]), - details=None - if "details" not in d - else OptionDetails.from_dict(d["details"]), + day=( + None + if "day" not in d + else DayOptionContractSnapshot.from_dict(d["day"]) + ), + details=( + None if "details" not in d else OptionDetails.from_dict(d["details"]) + ), greeks=None if "greeks" not in d else Greeks.from_dict(d["greeks"]), implied_volatility=d.get("implied_volatility", None), - last_quote=None - if "last_quote" not in d - else LastQuoteOptionContractSnapshot.from_dict(d["last_quote"]), - last_trade=None - if "last_trade" not in d - else LastTradeOptionContractSnapshot.from_dict(d["last_trade"]), + last_quote=( + None + if "last_quote" not in d + else LastQuoteOptionContractSnapshot.from_dict(d["last_quote"]) + ), + last_trade=( + None + if "last_trade" not in d + else LastTradeOptionContractSnapshot.from_dict(d["last_trade"]) + ), open_interest=d.get("open_interest", None), - underlying_asset=None - if "underlying_asset" not in d - else UnderlyingAsset.from_dict(d["underlying_asset"]), + underlying_asset=( + None + if "underlying_asset" not in d + else UnderlyingAsset.from_dict(d["underlying_asset"]) + ), fair_market_value=d.get("fmv", None), ) @@ -274,12 +282,16 @@ class SnapshotTickerFullBook: def from_dict(d): return SnapshotTickerFullBook( ticker=d.get("ticker", None), - bids=None - if "bids" not in d - else [OrderBookQuote.from_dict(o) for o in d["bids"]], - asks=None - if "asks" not in d - else [OrderBookQuote.from_dict(o) for o in d["asks"]], + bids=( + None + if "bids" not in d + else [OrderBookQuote.from_dict(o) for o in d["bids"]] + ), + asks=( + None + if "asks" not in d + else [OrderBookQuote.from_dict(o) for o in d["asks"]] + ), bid_count=d.get("bidCount", None), ask_count=d.get("askCount", None), spread=d.get("spread", None), @@ -404,22 +416,32 @@ def from_dict(d): return UniversalSnapshot( ticker=d.get("ticker", None), type=d.get("type", None), - session=None - if "session" not in d - else UniversalSnapshotSession.from_dict(d["session"]), - last_quote=None - if "last_quote" not in d - else UniversalSnapshotLastQuote.from_dict(d["last_quote"]), - last_trade=None - if "last_trade" not in d - else UniversalSnapshotLastTrade.from_dict(d["last_trade"]), + session=( + None + if "session" not in d + else UniversalSnapshotSession.from_dict(d["session"]) + ), + last_quote=( + None + if "last_quote" not in d + else UniversalSnapshotLastQuote.from_dict(d["last_quote"]) + ), + last_trade=( + None + if "last_trade" not in d + else UniversalSnapshotLastTrade.from_dict(d["last_trade"]) + ), greeks=None if "greeks" not in d else Greeks.from_dict(d["greeks"]), - underlying_asset=None - if "underlying_asset" not in d - else UniversalSnapshotUnderlyingAsset.from_dict(d["underlying_asset"]), - details=None - if "details" not in d - else UniversalSnapshotDetails.from_dict(d["details"]), + underlying_asset=( + None + if "underlying_asset" not in d + else UniversalSnapshotUnderlyingAsset.from_dict(d["underlying_asset"]) + ), + details=( + None + if "details" not in d + else UniversalSnapshotDetails.from_dict(d["details"]) + ), break_even_price=d.get("break_even_price", None), implied_volatility=d.get("implied_volatility", None), open_interest=d.get("open_interest", None), diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index 1c2ea947..f7ff2bed 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -108,9 +108,9 @@ class TickerDetails: def from_dict(d): return TickerDetails( active=d.get("active", None), - address=None - if "address" not in d - else CompanyAddress.from_dict(d["address"]), + address=( + None if "address" not in d else CompanyAddress.from_dict(d["address"]) + ), branding=None if "branding" not in d else Branding.from_dict(d["branding"]), cik=d.get("cik", None), composite_figi=d.get("composite_figi", None), @@ -169,9 +169,9 @@ def from_dict(d): image_url=d.get("image_url", None), keywords=d.get("keywords", None), published_utc=d.get("published_utc", None), - publisher=None - if "publisher" not in d - else Publisher.from_dict(d["publisher"]), + publisher=( + None if "publisher" not in d else Publisher.from_dict(d["publisher"]) + ), tickers=d.get("tickers", None), title=d.get("title", None), ) From e7b4566cfea21f63b81aeb4af51281effe210903 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Mon, 29 Apr 2024 12:48:37 -0700 Subject: [PATCH 13/88] Update ws init lint formatting (#661) * Update ws init lint formatting * Added black updates --- poetry.lock | 48 +++++++++++++++++------------------ polygon/websocket/__init__.py | 6 ++--- pyproject.toml | 2 +- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/poetry.lock b/poetry.lock index 0e2bfa82..494086e8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -44,33 +44,33 @@ pytz = ">=2015.7" [[package]] name = "black" -version = "23.12.1" +version = "24.4.2" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" files = [ - {file = "black-23.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0aaf6041986767a5e0ce663c7a2f0e9eaf21e6ff87a5f95cbf3675bfd4c41d2"}, - {file = "black-23.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c88b3711d12905b74206227109272673edce0cb29f27e1385f33b0163c414bba"}, - {file = "black-23.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920b569dc6b3472513ba6ddea21f440d4b4c699494d2e972a1753cdc25df7b0"}, - {file = "black-23.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:3fa4be75ef2a6b96ea8d92b1587dd8cb3a35c7e3d51f0738ced0781c3aa3a5a3"}, - {file = "black-23.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d4df77958a622f9b5a4c96edb4b8c0034f8434032ab11077ec6c56ae9f384ba"}, - {file = "black-23.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:602cfb1196dc692424c70b6507593a2b29aac0547c1be9a1d1365f0d964c353b"}, - {file = "black-23.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c4352800f14be5b4864016882cdba10755bd50805c95f728011bcb47a4afd59"}, - {file = "black-23.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:0808494f2b2df923ffc5723ed3c7b096bd76341f6213989759287611e9837d50"}, - {file = "black-23.12.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:25e57fd232a6d6ff3f4478a6fd0580838e47c93c83eaf1ccc92d4faf27112c4e"}, - {file = "black-23.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d9e13db441c509a3763a7a3d9a49ccc1b4e974a47be4e08ade2a228876500ec"}, - {file = "black-23.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1bd9c210f8b109b1762ec9fd36592fdd528485aadb3f5849b2740ef17e674e"}, - {file = "black-23.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:ae76c22bde5cbb6bfd211ec343ded2163bba7883c7bc77f6b756a1049436fbb9"}, - {file = "black-23.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1fa88a0f74e50e4487477bc0bb900c6781dbddfdfa32691e780bf854c3b4a47f"}, - {file = "black-23.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4d6a9668e45ad99d2f8ec70d5c8c04ef4f32f648ef39048d010b0689832ec6d"}, - {file = "black-23.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b18fb2ae6c4bb63eebe5be6bd869ba2f14fd0259bda7d18a46b764d8fb86298a"}, - {file = "black-23.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:c04b6d9d20e9c13f43eee8ea87d44156b8505ca8a3c878773f68b4e4812a421e"}, - {file = "black-23.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e1b38b3135fd4c025c28c55ddfc236b05af657828a8a6abe5deec419a0b7055"}, - {file = "black-23.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4f0031eaa7b921db76decd73636ef3a12c942ed367d8c3841a0739412b260a54"}, - {file = "black-23.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97e56155c6b737854e60a9ab1c598ff2533d57e7506d97af5481141671abf3ea"}, - {file = "black-23.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:dd15245c8b68fe2b6bd0f32c1556509d11bb33aec9b5d0866dd8e2ed3dba09c2"}, - {file = "black-23.12.1-py3-none-any.whl", hash = "sha256:78baad24af0f033958cad29731e27363183e140962595def56423e626f4bee3e"}, - {file = "black-23.12.1.tar.gz", hash = "sha256:4ce3ef14ebe8d9509188014d96af1c456a910d5b5cbf434a09fef7e024b3d0d5"}, + {file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"}, + {file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"}, + {file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"}, + {file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"}, + {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, + {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, + {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, + {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, + {file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"}, + {file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"}, + {file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"}, + {file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"}, + {file = "black-24.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7"}, + {file = "black-24.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94"}, + {file = "black-24.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8"}, + {file = "black-24.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c"}, + {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, + {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, + {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, + {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, + {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, + {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, ] [package.dependencies] @@ -962,4 +962,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "1844e10c9359822d125378cc42dbe517f01d9e5cb0dbc1f838ebfbf56c40203b" +content-hash = "2cf0c53839df9409c9e91972ef3a7d08c7b98de8fcbdadb5f329d44f6b227b47" \ No newline at end of file diff --git a/polygon/websocket/__init__.py b/polygon/websocket/__init__.py index b9f45a2e..77865d3f 100644 --- a/polygon/websocket/__init__.py +++ b/polygon/websocket/__init__.py @@ -127,9 +127,9 @@ async def connect( self.schedule_resub = False try: - cmsg: Union[ - List[WebSocketMessage], Union[str, bytes] - ] = await asyncio.wait_for(s.recv(), timeout=1) + cmsg: Union[List[WebSocketMessage], Union[str, bytes]] = ( + await asyncio.wait_for(s.recv(), timeout=1) + ) except asyncio.TimeoutError: continue diff --git a/pyproject.toml b/pyproject.toml index c42f4082..149ec167 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ websockets = ">=10.3,<13.0" certifi = ">=2022.5.18,<2025.0.0" [tool.poetry.dev-dependencies] -black = "^23.12.1" +black = "^24.4.2" mypy = "^1.10" types-urllib3 = "^1.26.25" Sphinx = "^7.1.2" From 62b9f2e183aa07197ef2304b96346b35bf15ef92 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 13:44:24 -0700 Subject: [PATCH 14/88] Bump orjson from 3.10.1 to 3.10.3 (#665) Bumps [orjson](https://github.com/ijl/orjson) from 3.10.1 to 3.10.3. - [Release notes](https://github.com/ijl/orjson/releases) - [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md) - [Commits](https://github.com/ijl/orjson/compare/3.10.1...3.10.3) --- updated-dependencies: - dependency-name: orjson dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 101 +++++++++++++++++++++++-------------------------- pyproject.toml | 2 +- 2 files changed, 49 insertions(+), 54 deletions(-) diff --git a/poetry.lock b/poetry.lock index 494086e8..b20352e5 100644 --- a/poetry.lock +++ b/poetry.lock @@ -384,62 +384,57 @@ six = ">=1.8.0" [[package]] name = "orjson" -version = "3.10.1" +version = "3.10.3" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.1-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:8ec2fc456d53ea4a47768f622bb709be68acd455b0c6be57e91462259741c4f3"}, - {file = "orjson-3.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e900863691d327758be14e2a491931605bd0aded3a21beb6ce133889830b659"}, - {file = "orjson-3.10.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab6ecbd6fe57785ebc86ee49e183f37d45f91b46fc601380c67c5c5e9c0014a2"}, - {file = "orjson-3.10.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8af7c68b01b876335cccfb4eee0beef2b5b6eae1945d46a09a7c24c9faac7a77"}, - {file = "orjson-3.10.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:915abfb2e528677b488a06eba173e9d7706a20fdfe9cdb15890b74ef9791b85e"}, - {file = "orjson-3.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe3fd4a36eff9c63d25503b439531d21828da9def0059c4f472e3845a081aa0b"}, - {file = "orjson-3.10.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d229564e72cfc062e6481a91977a5165c5a0fdce11ddc19ced8471847a67c517"}, - {file = "orjson-3.10.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9e00495b18304173ac843b5c5fbea7b6f7968564d0d49bef06bfaeca4b656f4e"}, - {file = "orjson-3.10.1-cp310-none-win32.whl", hash = "sha256:fd78ec55179545c108174ba19c1795ced548d6cac4d80d014163033c047ca4ea"}, - {file = "orjson-3.10.1-cp310-none-win_amd64.whl", hash = "sha256:50ca42b40d5a442a9e22eece8cf42ba3d7cd4cd0f2f20184b4d7682894f05eec"}, - {file = "orjson-3.10.1-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b345a3d6953628df2f42502297f6c1e1b475cfbf6268013c94c5ac80e8abc04c"}, - {file = "orjson-3.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caa7395ef51af4190d2c70a364e2f42138e0e5fcb4bc08bc9b76997659b27dab"}, - {file = "orjson-3.10.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b01d701decd75ae092e5f36f7b88a1e7a1d3bb7c9b9d7694de850fb155578d5a"}, - {file = "orjson-3.10.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5028981ba393f443d8fed9049211b979cadc9d0afecf162832f5a5b152c6297"}, - {file = "orjson-3.10.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:31ff6a222ea362b87bf21ff619598a4dc1106aaafaea32b1c4876d692891ec27"}, - {file = "orjson-3.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e852a83d7803d3406135fb7a57cf0c1e4a3e73bac80ec621bd32f01c653849c5"}, - {file = "orjson-3.10.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2567bc928ed3c3fcd90998009e8835de7c7dc59aabcf764b8374d36044864f3b"}, - {file = "orjson-3.10.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4ce98cac60b7bb56457bdd2ed7f0d5d7f242d291fdc0ca566c83fa721b52e92d"}, - {file = "orjson-3.10.1-cp311-none-win32.whl", hash = "sha256:813905e111318acb356bb8029014c77b4c647f8b03f314e7b475bd9ce6d1a8ce"}, - {file = "orjson-3.10.1-cp311-none-win_amd64.whl", hash = "sha256:03a3ca0b3ed52bed1a869163a4284e8a7b0be6a0359d521e467cdef7e8e8a3ee"}, - {file = "orjson-3.10.1-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f02c06cee680b1b3a8727ec26c36f4b3c0c9e2b26339d64471034d16f74f4ef5"}, - {file = "orjson-3.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1aa2f127ac546e123283e437cc90b5ecce754a22306c7700b11035dad4ccf85"}, - {file = "orjson-3.10.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2cf29b4b74f585225196944dffdebd549ad2af6da9e80db7115984103fb18a96"}, - {file = "orjson-3.10.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1b130c20b116f413caf6059c651ad32215c28500dce9cd029a334a2d84aa66f"}, - {file = "orjson-3.10.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d31f9a709e6114492136e87c7c6da5e21dfedebefa03af85f3ad72656c493ae9"}, - {file = "orjson-3.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d1d169461726f271ab31633cf0e7e7353417e16fb69256a4f8ecb3246a78d6e"}, - {file = "orjson-3.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:57c294d73825c6b7f30d11c9e5900cfec9a814893af7f14efbe06b8d0f25fba9"}, - {file = "orjson-3.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d7f11dbacfa9265ec76b4019efffabaabba7a7ebf14078f6b4df9b51c3c9a8ea"}, - {file = "orjson-3.10.1-cp312-none-win32.whl", hash = "sha256:d89e5ed68593226c31c76ab4de3e0d35c760bfd3fbf0a74c4b2be1383a1bf123"}, - {file = "orjson-3.10.1-cp312-none-win_amd64.whl", hash = "sha256:aa76c4fe147fd162107ce1692c39f7189180cfd3a27cfbc2ab5643422812da8e"}, - {file = "orjson-3.10.1-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a2c6a85c92d0e494c1ae117befc93cf8e7bca2075f7fe52e32698da650b2c6d1"}, - {file = "orjson-3.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9813f43da955197d36a7365eb99bed42b83680801729ab2487fef305b9ced866"}, - {file = "orjson-3.10.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ec917b768e2b34b7084cb6c68941f6de5812cc26c6f1a9fecb728e36a3deb9e8"}, - {file = "orjson-3.10.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5252146b3172d75c8a6d27ebca59c9ee066ffc5a277050ccec24821e68742fdf"}, - {file = "orjson-3.10.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:536429bb02791a199d976118b95014ad66f74c58b7644d21061c54ad284e00f4"}, - {file = "orjson-3.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dfed3c3e9b9199fb9c3355b9c7e4649b65f639e50ddf50efdf86b45c6de04b5"}, - {file = "orjson-3.10.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2b230ec35f188f003f5b543644ae486b2998f6afa74ee3a98fc8ed2e45960afc"}, - {file = "orjson-3.10.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:01234249ba19c6ab1eb0b8be89f13ea21218b2d72d496ef085cfd37e1bae9dd8"}, - {file = "orjson-3.10.1-cp38-none-win32.whl", hash = "sha256:8a884fbf81a3cc22d264ba780920d4885442144e6acaa1411921260416ac9a54"}, - {file = "orjson-3.10.1-cp38-none-win_amd64.whl", hash = "sha256:dab5f802d52b182163f307d2b1f727d30b1762e1923c64c9c56dd853f9671a49"}, - {file = "orjson-3.10.1-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a51fd55d4486bc5293b7a400f9acd55a2dc3b5fc8420d5ffe9b1d6bb1a056a5e"}, - {file = "orjson-3.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53521542a6db1411b3bfa1b24ddce18605a3abdc95a28a67b33f9145f26aa8f2"}, - {file = "orjson-3.10.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:27d610df96ac18ace4931411d489637d20ab3b8f63562b0531bba16011998db0"}, - {file = "orjson-3.10.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79244b1456e5846d44e9846534bd9e3206712936d026ea8e6a55a7374d2c0694"}, - {file = "orjson-3.10.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d751efaa8a49ae15cbebdda747a62a9ae521126e396fda8143858419f3b03610"}, - {file = "orjson-3.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27ff69c620a4fff33267df70cfd21e0097c2a14216e72943bd5414943e376d77"}, - {file = "orjson-3.10.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ebc58693464146506fde0c4eb1216ff6d4e40213e61f7d40e2f0dde9b2f21650"}, - {file = "orjson-3.10.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5be608c3972ed902e0143a5b8776d81ac1059436915d42defe5c6ae97b3137a4"}, - {file = "orjson-3.10.1-cp39-none-win32.whl", hash = "sha256:4ae10753e7511d359405aadcbf96556c86e9dbf3a948d26c2c9f9a150c52b091"}, - {file = "orjson-3.10.1-cp39-none-win_amd64.whl", hash = "sha256:fb5bc4caa2c192077fdb02dce4e5ef8639e7f20bec4e3a834346693907362932"}, - {file = "orjson-3.10.1.tar.gz", hash = "sha256:a883b28d73370df23ed995c466b4f6c708c1f7a9bdc400fe89165c96c7603204"}, + {file = "orjson-3.10.3-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9fb6c3f9f5490a3eb4ddd46fc1b6eadb0d6fc16fb3f07320149c3286a1409dd8"}, + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:252124b198662eee80428f1af8c63f7ff077c88723fe206a25df8dc57a57b1fa"}, + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9f3e87733823089a338ef9bbf363ef4de45e5c599a9bf50a7a9b82e86d0228da"}, + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8334c0d87103bb9fbbe59b78129f1f40d1d1e8355bbed2ca71853af15fa4ed3"}, + {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1952c03439e4dce23482ac846e7961f9d4ec62086eb98ae76d97bd41d72644d7"}, + {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c0403ed9c706dcd2809f1600ed18f4aae50be263bd7112e54b50e2c2bc3ebd6d"}, + {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:382e52aa4270a037d41f325e7d1dfa395b7de0c367800b6f337d8157367bf3a7"}, + {file = "orjson-3.10.3-cp310-none-win32.whl", hash = "sha256:be2aab54313752c04f2cbaab4515291ef5af8c2256ce22abc007f89f42f49109"}, + {file = "orjson-3.10.3-cp310-none-win_amd64.whl", hash = "sha256:416b195f78ae461601893f482287cee1e3059ec49b4f99479aedf22a20b1098b"}, + {file = "orjson-3.10.3-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:73100d9abbbe730331f2242c1fc0bcb46a3ea3b4ae3348847e5a141265479700"}, + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:544a12eee96e3ab828dbfcb4d5a0023aa971b27143a1d35dc214c176fdfb29b3"}, + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:520de5e2ef0b4ae546bea25129d6c7c74edb43fc6cf5213f511a927f2b28148b"}, + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ccaa0a401fc02e8828a5bedfd80f8cd389d24f65e5ca3954d72c6582495b4bcf"}, + {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7bc9e8bc11bac40f905640acd41cbeaa87209e7e1f57ade386da658092dc16"}, + {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3582b34b70543a1ed6944aca75e219e1192661a63da4d039d088a09c67543b08"}, + {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c23dfa91481de880890d17aa7b91d586a4746a4c2aa9a145bebdbaf233768d5"}, + {file = "orjson-3.10.3-cp311-none-win32.whl", hash = "sha256:1770e2a0eae728b050705206d84eda8b074b65ee835e7f85c919f5705b006c9b"}, + {file = "orjson-3.10.3-cp311-none-win_amd64.whl", hash = "sha256:93433b3c1f852660eb5abdc1f4dd0ced2be031ba30900433223b28ee0140cde5"}, + {file = "orjson-3.10.3-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a39aa73e53bec8d410875683bfa3a8edf61e5a1c7bb4014f65f81d36467ea098"}, + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0943a96b3fa09bee1afdfccc2cb236c9c64715afa375b2af296c73d91c23eab2"}, + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e852baafceff8da3c9defae29414cc8513a1586ad93e45f27b89a639c68e8176"}, + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18566beb5acd76f3769c1d1a7ec06cdb81edc4d55d2765fb677e3eaa10fa99e0"}, + {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd2218d5a3aa43060efe649ec564ebedec8ce6ae0a43654b81376216d5ebd42"}, + {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cf20465e74c6e17a104ecf01bf8cd3b7b252565b4ccee4548f18b012ff2f8069"}, + {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ba7f67aa7f983c4345eeda16054a4677289011a478ca947cd69c0a86ea45e534"}, + {file = "orjson-3.10.3-cp312-none-win32.whl", hash = "sha256:17e0713fc159abc261eea0f4feda611d32eabc35708b74bef6ad44f6c78d5ea0"}, + {file = "orjson-3.10.3-cp312-none-win_amd64.whl", hash = "sha256:4c895383b1ec42b017dd2c75ae8a5b862fc489006afde06f14afbdd0309b2af0"}, + {file = "orjson-3.10.3-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:be2719e5041e9fb76c8c2c06b9600fe8e8584e6980061ff88dcbc2691a16d20d"}, + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0175a5798bdc878956099f5c54b9837cb62cfbf5d0b86ba6d77e43861bcec2"}, + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:978be58a68ade24f1af7758626806e13cff7748a677faf95fbb298359aa1e20d"}, + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16bda83b5c61586f6f788333d3cf3ed19015e3b9019188c56983b5a299210eb5"}, + {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ad1f26bea425041e0a1adad34630c4825a9e3adec49079b1fb6ac8d36f8b754"}, + {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9e253498bee561fe85d6325ba55ff2ff08fb5e7184cd6a4d7754133bd19c9195"}, + {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0a62f9968bab8a676a164263e485f30a0b748255ee2f4ae49a0224be95f4532b"}, + {file = "orjson-3.10.3-cp38-none-win32.whl", hash = "sha256:8d0b84403d287d4bfa9bf7d1dc298d5c1c5d9f444f3737929a66f2fe4fb8f134"}, + {file = "orjson-3.10.3-cp38-none-win_amd64.whl", hash = "sha256:8bc7a4df90da5d535e18157220d7915780d07198b54f4de0110eca6b6c11e290"}, + {file = "orjson-3.10.3-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9059d15c30e675a58fdcd6f95465c1522b8426e092de9fff20edebfdc15e1cb0"}, + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d40c7f7938c9c2b934b297412c067936d0b54e4b8ab916fd1a9eb8f54c02294"}, + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a654ec1de8fdaae1d80d55cee65893cb06494e124681ab335218be6a0691e7"}, + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:831c6ef73f9aa53c5f40ae8f949ff7681b38eaddb6904aab89dca4d85099cb78"}, + {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99b880d7e34542db89f48d14ddecbd26f06838b12427d5a25d71baceb5ba119d"}, + {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2e5e176c994ce4bd434d7aafb9ecc893c15f347d3d2bbd8e7ce0b63071c52e25"}, + {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b69a58a37dab856491bf2d3bbf259775fdce262b727f96aafbda359cb1d114d8"}, + {file = "orjson-3.10.3-cp39-none-win32.whl", hash = "sha256:b8d4d1a6868cde356f1402c8faeb50d62cee765a1f7ffcfd6de732ab0581e063"}, + {file = "orjson-3.10.3-cp39-none-win_amd64.whl", hash = "sha256:5102f50c5fc46d94f2033fe00d392588564378260d64377aec702f21a7a22912"}, + {file = "orjson-3.10.3.tar.gz", hash = "sha256:2b166507acae7ba2f7c315dcf185a9111ad5e992ac81f2d507aac39193c2c818"}, ] [[package]] @@ -962,4 +957,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "2cf0c53839df9409c9e91972ef3a7d08c7b98de8fcbdadb5f329d44f6b227b47" \ No newline at end of file +content-hash = "32db9ac6f69fa5b54368d999de836c1c29270ee299e965048f076c692c287ce6" diff --git a/pyproject.toml b/pyproject.toml index 149ec167..d5284711 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^69.5.0" pook = "^1.4.3" -orjson = "^3.10.1" +orjson = "^3.10.3" [build-system] requires = ["poetry-core>=1.0.0"] From 563300ef28beafd018fed70a38329c48f15e26d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 13:48:27 -0700 Subject: [PATCH 15/88] Bump jinja2 from 3.1.3 to 3.1.4 (#666) Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.3 to 3.1.4. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/3.1.3...3.1.4) --- updated-dependencies: - dependency-name: jinja2 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index b20352e5..c93ea0ba 100644 --- a/poetry.lock +++ b/poetry.lock @@ -225,13 +225,13 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec [[package]] name = "jinja2" -version = "3.1.3" +version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, - {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [package.dependencies] From e5ab49d31f3cdfbce3b5a52d959f140e31447a83 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Wed, 8 May 2024 09:34:47 -0700 Subject: [PATCH 16/88] Update ws and rest spec with latest updates (#667) --- .polygon/rest.json | 37 +++++++++++++++++++++++++++++++------ .polygon/websocket.json | 13 ++++++++----- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/.polygon/rest.json b/.polygon/rest.json index 14f9bceb..05bf27c1 100644 --- a/.polygon/rest.json +++ b/.polygon/rest.json @@ -101,6 +101,17 @@ "type": "string" } }, + "CryptoTickersQueryParam": { + "description": "A case-sensitive comma separated list of tickers to get snapshots for. For example, X:BTCUSD, X:ETHBTC, and X:BOBAUSD. Empty string defaults to querying all tickers.", + "in": "query", + "name": "tickers", + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + }, "ForexTickerPathParam": { "description": "The ticker symbol of the currency pair.", "example": "C:EURUSD", @@ -111,6 +122,17 @@ "type": "string" } }, + "ForexTickersQueryParam": { + "description": "A case-sensitive comma separated list of tickers to get snapshots for. For example, C:EURUSD, C:GBPCAD, and C:AUDINR. Empty string defaults to querying all tickers.", + "in": "query", + "name": "tickers", + "schema": { + "items": { + "type": "string" + }, + "type": "array" + } + }, "GeneralTickerPathParam": { "description": "The ticker symbol of the asset.", "example": "AAPL", @@ -6039,7 +6061,7 @@ }, "summary": "Exponential Moving Average (EMA)", "tags": [ - "crpyto:aggregates" + "crypto:aggregates" ], "x-polygon-entitlement-data-type": { "description": "Aggregate data", @@ -9407,7 +9429,7 @@ }, "summary": "Relative Strength Index (RSI)", "tags": [ - "crpyto:aggregates" + "crypto:aggregates" ], "x-polygon-entitlement-data-type": { "description": "Aggregate data", @@ -11003,7 +11025,7 @@ }, "summary": "Simple Moving Average (SMA)", "tags": [ - "crpyto:aggregates" + "crypto:aggregates" ], "x-polygon-entitlement-data-type": { "description": "Aggregate data", @@ -18577,7 +18599,7 @@ "description": "Get the current minute, day, and previous day\u2019s aggregate, as well as the last trade and quote for all traded cryptocurrency symbols.\n
\n
\nNote: Snapshot data is cleared at 12am EST and gets populated as data is received from the exchanges. This can happen as early as 4am EST.\n", "parameters": [ { - "description": "A case-sensitive comma separated list of tickers to get snapshots for. For example, AAPL,TSLA,GOOG. Empty string defaults to querying all tickers.", + "description": "A case-sensitive comma separated list of tickers to get snapshots for. For example, X:BTCUSD, X:ETHBTC, and X:BOBAUSD. Empty string defaults to querying all tickers.", "in": "query", "name": "tickers", "schema": { @@ -19461,6 +19483,9 @@ "tags": [ "crypto:snapshot" ], + "x-polygon-deprecation": { + "date": 1719838800000 + }, "x-polygon-entitlement-allowed-timeframes": [ { "description": "Real Time Data", @@ -19838,7 +19863,7 @@ "description": "Get the current minute, day, and previous day\u2019s aggregate, as well as the last trade and quote for all traded forex symbols.\n
\n
\nNote: Snapshot data is cleared at 12am EST and gets populated as data is received from the exchanges. This can happen as early as 4am EST.\n", "parameters": [ { - "description": "A case-sensitive comma separated list of tickers to get snapshots for. For example, AAPL,TSLA,GOOG. Empty string defaults to querying all tickers.", + "description": "A case-sensitive comma separated list of tickers to get snapshots for. For example, C:EURUSD, C:GBPCAD, and C:AUDINR. Empty string defaults to querying all tickers.", "in": "query", "name": "tickers", "schema": { @@ -21608,7 +21633,7 @@ }, "/v2/snapshot/locale/us/markets/stocks/{direction}": { "get": { - "description": "Get the most up-to-date market data for the current top 20 gainers or losers of the day in the stocks/equities markets.\n
\n
\nTop gainers are those tickers whose price has increased by the highest percentage since the previous day's close.\nTop losers are those tickers whose price has decreased by the highest percentage since the previous day's close.\n
\n
\nNote: Snapshot data is cleared at 3:30am EST and gets populated as data is received from the exchanges.\n", + "description": "Get the most up-to-date market data for the current top 20 gainers or losers of the day in the stocks/equities markets.\n
\n
\nTop gainers are those tickers whose price has increased by the highest percentage since the previous day's close.\nTop losers are those tickers whose price has decreased by the highest percentage since the previous day's close.\nThis output will only include tickers with a trading volume of 10,000 or more.\n
\n
\nNote: Snapshot data is cleared at 3:30am EST and gets populated as data is received from the exchanges.\n", "parameters": [ { "description": "The direction of the snapshot results to return.\n", diff --git a/.polygon/websocket.json b/.polygon/websocket.json index 85245e63..8d7d539b 100644 --- a/.polygon/websocket.json +++ b/.polygon/websocket.json @@ -995,7 +995,7 @@ }, "example": { "ev": "FMV", - "val": 189.22, + "fmv": 189.22, "sym": "AAPL", "t": 1678220098130 } @@ -1761,7 +1761,7 @@ }, "example": { "ev": "FMV", - "val": 7.2, + "fmv": 7.2, "sym": "O:TSLA210903C00700000", "t": 1401715883806000000 } @@ -2331,7 +2331,7 @@ }, "example": { "ev": "FMV", - "val": 1.0631, + "fmv": 1.0631, "sym": "C:EURUSD", "t": 1678220098130 } @@ -2885,7 +2885,10 @@ "name": "realtime", "description": "Real Time Data" } - ] + ], + "x-polygon-deprecation": { + "date": 1719838800000 + } } }, "/crypto/XA": { @@ -3157,7 +3160,7 @@ }, "example": { "ev": "FMV", - "val": 33021.9, + "fmv": 33021.9, "sym": "X:BTC-USD", "t": 1610462007425 } From 850ffafbc83a362b6c74e144facc16c16c6679c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 15:43:55 -0700 Subject: [PATCH 17/88] Bump types-setuptools from 69.5.0.20240423 to 69.5.0.20240513 (#670) Bumps [types-setuptools](https://github.com/python/typeshed) from 69.5.0.20240423 to 69.5.0.20240513. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index c93ea0ba..c695a2de 100644 --- a/poetry.lock +++ b/poetry.lock @@ -800,13 +800,13 @@ files = [ [[package]] name = "types-setuptools" -version = "69.5.0.20240423" +version = "69.5.0.20240513" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-69.5.0.20240423.tar.gz", hash = "sha256:a7ba908f1746c4337d13f027fa0f4a5bcad6d1d92048219ba792b3295c58586d"}, - {file = "types_setuptools-69.5.0.20240423-py3-none-any.whl", hash = "sha256:a4381e041510755a6c9210e26ad55b1629bc10237aeb9cb8b6bd24996b73db48"}, + {file = "types-setuptools-69.5.0.20240513.tar.gz", hash = "sha256:3a8ccea3e3f1f639856a1dd622be282f74e94e00fdc364630240f999cc9594fc"}, + {file = "types_setuptools-69.5.0.20240513-py3-none-any.whl", hash = "sha256:bd3964c08cffd5a057d9cabe61641c86a41a1b5dd2b652b8d371eed64d89d726"}, ] [[package]] From 284ffa00458d54306d1c3243148fb4a735882f6c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 May 2024 06:34:54 -0700 Subject: [PATCH 18/88] --- (#673) updated-dependencies: - dependency-name: requests dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index c695a2de..9b0cbf9c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -559,13 +559,13 @@ files = [ [[package]] name = "requests" -version = "2.31.0" +version = "2.32.0" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.0-py3-none-any.whl", hash = "sha256:f2c3881dddb70d056c5bd7600a4fae312b2a300e39be6a118d30b90bd27262b5"}, + {file = "requests-2.32.0.tar.gz", hash = "sha256:fa5490319474c82ef1d2c9bc459d3652e3ae4ef4c4ebdd18a21145a47ca4b6b8"}, ] [package.dependencies] From b55fa2b4ca16c8b7138b33a7b95fa4d4b3185118 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 May 2024 11:24:53 -0700 Subject: [PATCH 19/88] Bump types-setuptools from 69.5.0.20240513 to 69.5.0.20240519 (#672) Bumps [types-setuptools](https://github.com/python/typeshed) from 69.5.0.20240513 to 69.5.0.20240519. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 9b0cbf9c..0570d0b0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -800,13 +800,13 @@ files = [ [[package]] name = "types-setuptools" -version = "69.5.0.20240513" +version = "69.5.0.20240519" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-69.5.0.20240513.tar.gz", hash = "sha256:3a8ccea3e3f1f639856a1dd622be282f74e94e00fdc364630240f999cc9594fc"}, - {file = "types_setuptools-69.5.0.20240513-py3-none-any.whl", hash = "sha256:bd3964c08cffd5a057d9cabe61641c86a41a1b5dd2b652b8d371eed64d89d726"}, + {file = "types-setuptools-69.5.0.20240519.tar.gz", hash = "sha256:275fb72048b0203d3fbef268298ea78a0913cd114a74872d93f8638ccc5b7c63"}, + {file = "types_setuptools-69.5.0.20240519-py3-none-any.whl", hash = "sha256:52b264eff8913b5d85848d83bd98efea935fc6129d681d370eb957783880b720"}, ] [[package]] From 7834844f4e7e960a67eacec2f9f5c645182849a4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 10:41:09 -0700 Subject: [PATCH 20/88] Bump types-setuptools from 69.5.0.20240519 to 70.0.0.20240524 (#675) Bumps [types-setuptools](https://github.com/python/typeshed) from 69.5.0.20240519 to 70.0.0.20240524. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 0570d0b0..3ece168f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -800,13 +800,13 @@ files = [ [[package]] name = "types-setuptools" -version = "69.5.0.20240519" +version = "70.0.0.20240524" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-69.5.0.20240519.tar.gz", hash = "sha256:275fb72048b0203d3fbef268298ea78a0913cd114a74872d93f8638ccc5b7c63"}, - {file = "types_setuptools-69.5.0.20240519-py3-none-any.whl", hash = "sha256:52b264eff8913b5d85848d83bd98efea935fc6129d681d370eb957783880b720"}, + {file = "types-setuptools-70.0.0.20240524.tar.gz", hash = "sha256:e31fee7b9d15ef53980526579ac6089b3ae51a005a281acf97178e90ac71aff6"}, + {file = "types_setuptools-70.0.0.20240524-py3-none-any.whl", hash = "sha256:8f5379b9948682d72a9ab531fbe52932e84c4f38deda570255f9bae3edd766bc"}, ] [[package]] @@ -957,4 +957,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "32db9ac6f69fa5b54368d999de836c1c29270ee299e965048f076c692c287ce6" +content-hash = "3b55cf4a61207c4b19ab4f5f0735335fa5ff4de2a8f813903a8702311dfc9fbb" diff --git a/pyproject.toml b/pyproject.toml index d5284711..73ccc434 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^2.0.0" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^69.5.0" +types-setuptools = "^70.0.0" pook = "^1.4.3" orjson = "^3.10.3" From 9c2b6c2a8f7cda0c75a07942ae505c4af6620bf9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Jun 2024 08:36:16 -0700 Subject: [PATCH 21/88] Bump certifi from 2024.2.2 to 2024.6.2 (#677) Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.2.2 to 2024.6.2. - [Commits](https://github.com/certifi/python-certifi/compare/2024.02.02...2024.06.02) --- updated-dependencies: - dependency-name: certifi dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3ece168f..8a3dd551 100644 --- a/poetry.lock +++ b/poetry.lock @@ -90,13 +90,13 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.6.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, + {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, ] [[package]] From cef73e13294f20de9e545c717fd96e6ecd3265d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 09:22:40 -0700 Subject: [PATCH 22/88] Bump urllib3 from 1.26.18 to 1.26.19 (#684) Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.18 to 1.26.19. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/1.26.19/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.26.18...1.26.19) --- updated-dependencies: - dependency-name: urllib3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8a3dd551..cd501f92 100644 --- a/poetry.lock +++ b/poetry.lock @@ -833,13 +833,13 @@ files = [ [[package]] name = "urllib3" -version = "1.26.18" +version = "1.26.19" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, - {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, + {file = "urllib3-1.26.19-py2.py3-none-any.whl", hash = "sha256:37a0344459b199fce0e80b0d3569837ec6b6937435c5244e7fd73fa6006830f3"}, + {file = "urllib3-1.26.19.tar.gz", hash = "sha256:3e3d753a8618b86d7de333b4223005f68720bcd6a7d2bcb9fbd2229ec7c1e429"}, ] [package.extras] From 174028a030139811d1fe1fcfdae37ddf9635e27b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 09:32:11 -0700 Subject: [PATCH 23/88] Bump orjson from 3.10.3 to 3.10.5 (#683) Bumps [orjson](https://github.com/ijl/orjson) from 3.10.3 to 3.10.5. - [Release notes](https://github.com/ijl/orjson/releases) - [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md) - [Commits](https://github.com/ijl/orjson/compare/3.10.3...3.10.5) --- updated-dependencies: - dependency-name: orjson dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 96 +++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 49 insertions(+), 49 deletions(-) diff --git a/poetry.lock b/poetry.lock index cd501f92..96a75b32 100644 --- a/poetry.lock +++ b/poetry.lock @@ -384,57 +384,57 @@ six = ">=1.8.0" [[package]] name = "orjson" -version = "3.10.3" +version = "3.10.5" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.3-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9fb6c3f9f5490a3eb4ddd46fc1b6eadb0d6fc16fb3f07320149c3286a1409dd8"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:252124b198662eee80428f1af8c63f7ff077c88723fe206a25df8dc57a57b1fa"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9f3e87733823089a338ef9bbf363ef4de45e5c599a9bf50a7a9b82e86d0228da"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8334c0d87103bb9fbbe59b78129f1f40d1d1e8355bbed2ca71853af15fa4ed3"}, - {file = "orjson-3.10.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1952c03439e4dce23482ac846e7961f9d4ec62086eb98ae76d97bd41d72644d7"}, - {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c0403ed9c706dcd2809f1600ed18f4aae50be263bd7112e54b50e2c2bc3ebd6d"}, - {file = "orjson-3.10.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:382e52aa4270a037d41f325e7d1dfa395b7de0c367800b6f337d8157367bf3a7"}, - {file = "orjson-3.10.3-cp310-none-win32.whl", hash = "sha256:be2aab54313752c04f2cbaab4515291ef5af8c2256ce22abc007f89f42f49109"}, - {file = "orjson-3.10.3-cp310-none-win_amd64.whl", hash = "sha256:416b195f78ae461601893f482287cee1e3059ec49b4f99479aedf22a20b1098b"}, - {file = "orjson-3.10.3-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:73100d9abbbe730331f2242c1fc0bcb46a3ea3b4ae3348847e5a141265479700"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:544a12eee96e3ab828dbfcb4d5a0023aa971b27143a1d35dc214c176fdfb29b3"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:520de5e2ef0b4ae546bea25129d6c7c74edb43fc6cf5213f511a927f2b28148b"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ccaa0a401fc02e8828a5bedfd80f8cd389d24f65e5ca3954d72c6582495b4bcf"}, - {file = "orjson-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7bc9e8bc11bac40f905640acd41cbeaa87209e7e1f57ade386da658092dc16"}, - {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3582b34b70543a1ed6944aca75e219e1192661a63da4d039d088a09c67543b08"}, - {file = "orjson-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1c23dfa91481de880890d17aa7b91d586a4746a4c2aa9a145bebdbaf233768d5"}, - {file = "orjson-3.10.3-cp311-none-win32.whl", hash = "sha256:1770e2a0eae728b050705206d84eda8b074b65ee835e7f85c919f5705b006c9b"}, - {file = "orjson-3.10.3-cp311-none-win_amd64.whl", hash = "sha256:93433b3c1f852660eb5abdc1f4dd0ced2be031ba30900433223b28ee0140cde5"}, - {file = "orjson-3.10.3-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a39aa73e53bec8d410875683bfa3a8edf61e5a1c7bb4014f65f81d36467ea098"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0943a96b3fa09bee1afdfccc2cb236c9c64715afa375b2af296c73d91c23eab2"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e852baafceff8da3c9defae29414cc8513a1586ad93e45f27b89a639c68e8176"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18566beb5acd76f3769c1d1a7ec06cdb81edc4d55d2765fb677e3eaa10fa99e0"}, - {file = "orjson-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd2218d5a3aa43060efe649ec564ebedec8ce6ae0a43654b81376216d5ebd42"}, - {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cf20465e74c6e17a104ecf01bf8cd3b7b252565b4ccee4548f18b012ff2f8069"}, - {file = "orjson-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ba7f67aa7f983c4345eeda16054a4677289011a478ca947cd69c0a86ea45e534"}, - {file = "orjson-3.10.3-cp312-none-win32.whl", hash = "sha256:17e0713fc159abc261eea0f4feda611d32eabc35708b74bef6ad44f6c78d5ea0"}, - {file = "orjson-3.10.3-cp312-none-win_amd64.whl", hash = "sha256:4c895383b1ec42b017dd2c75ae8a5b862fc489006afde06f14afbdd0309b2af0"}, - {file = "orjson-3.10.3-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:be2719e5041e9fb76c8c2c06b9600fe8e8584e6980061ff88dcbc2691a16d20d"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0175a5798bdc878956099f5c54b9837cb62cfbf5d0b86ba6d77e43861bcec2"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:978be58a68ade24f1af7758626806e13cff7748a677faf95fbb298359aa1e20d"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16bda83b5c61586f6f788333d3cf3ed19015e3b9019188c56983b5a299210eb5"}, - {file = "orjson-3.10.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ad1f26bea425041e0a1adad34630c4825a9e3adec49079b1fb6ac8d36f8b754"}, - {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9e253498bee561fe85d6325ba55ff2ff08fb5e7184cd6a4d7754133bd19c9195"}, - {file = "orjson-3.10.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0a62f9968bab8a676a164263e485f30a0b748255ee2f4ae49a0224be95f4532b"}, - {file = "orjson-3.10.3-cp38-none-win32.whl", hash = "sha256:8d0b84403d287d4bfa9bf7d1dc298d5c1c5d9f444f3737929a66f2fe4fb8f134"}, - {file = "orjson-3.10.3-cp38-none-win_amd64.whl", hash = "sha256:8bc7a4df90da5d535e18157220d7915780d07198b54f4de0110eca6b6c11e290"}, - {file = "orjson-3.10.3-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9059d15c30e675a58fdcd6f95465c1522b8426e092de9fff20edebfdc15e1cb0"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d40c7f7938c9c2b934b297412c067936d0b54e4b8ab916fd1a9eb8f54c02294"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a654ec1de8fdaae1d80d55cee65893cb06494e124681ab335218be6a0691e7"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:831c6ef73f9aa53c5f40ae8f949ff7681b38eaddb6904aab89dca4d85099cb78"}, - {file = "orjson-3.10.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99b880d7e34542db89f48d14ddecbd26f06838b12427d5a25d71baceb5ba119d"}, - {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2e5e176c994ce4bd434d7aafb9ecc893c15f347d3d2bbd8e7ce0b63071c52e25"}, - {file = "orjson-3.10.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b69a58a37dab856491bf2d3bbf259775fdce262b727f96aafbda359cb1d114d8"}, - {file = "orjson-3.10.3-cp39-none-win32.whl", hash = "sha256:b8d4d1a6868cde356f1402c8faeb50d62cee765a1f7ffcfd6de732ab0581e063"}, - {file = "orjson-3.10.3-cp39-none-win_amd64.whl", hash = "sha256:5102f50c5fc46d94f2033fe00d392588564378260d64377aec702f21a7a22912"}, - {file = "orjson-3.10.3.tar.gz", hash = "sha256:2b166507acae7ba2f7c315dcf185a9111ad5e992ac81f2d507aac39193c2c818"}, + {file = "orjson-3.10.5-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:545d493c1f560d5ccfc134803ceb8955a14c3fcb47bbb4b2fee0232646d0b932"}, + {file = "orjson-3.10.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4324929c2dd917598212bfd554757feca3e5e0fa60da08be11b4aa8b90013c1"}, + {file = "orjson-3.10.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c13ca5e2ddded0ce6a927ea5a9f27cae77eee4c75547b4297252cb20c4d30e6"}, + {file = "orjson-3.10.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b6c8e30adfa52c025f042a87f450a6b9ea29649d828e0fec4858ed5e6caecf63"}, + {file = "orjson-3.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:338fd4f071b242f26e9ca802f443edc588fa4ab60bfa81f38beaedf42eda226c"}, + {file = "orjson-3.10.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6970ed7a3126cfed873c5d21ece1cd5d6f83ca6c9afb71bbae21a0b034588d96"}, + {file = "orjson-3.10.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:235dadefb793ad12f7fa11e98a480db1f7c6469ff9e3da5e73c7809c700d746b"}, + {file = "orjson-3.10.5-cp310-none-win32.whl", hash = "sha256:be79e2393679eda6a590638abda16d167754393f5d0850dcbca2d0c3735cebe2"}, + {file = "orjson-3.10.5-cp310-none-win_amd64.whl", hash = "sha256:c4a65310ccb5c9910c47b078ba78e2787cb3878cdded1702ac3d0da71ddc5228"}, + {file = "orjson-3.10.5-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:cdf7365063e80899ae3a697def1277c17a7df7ccfc979990a403dfe77bb54d40"}, + {file = "orjson-3.10.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b68742c469745d0e6ca5724506858f75e2f1e5b59a4315861f9e2b1df77775a"}, + {file = "orjson-3.10.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7d10cc1b594951522e35a3463da19e899abe6ca95f3c84c69e9e901e0bd93d38"}, + {file = "orjson-3.10.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dcbe82b35d1ac43b0d84072408330fd3295c2896973112d495e7234f7e3da2e1"}, + {file = "orjson-3.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c0eb7e0c75e1e486c7563fe231b40fdd658a035ae125c6ba651ca3b07936f5"}, + {file = "orjson-3.10.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:53ed1c879b10de56f35daf06dbc4a0d9a5db98f6ee853c2dbd3ee9d13e6f302f"}, + {file = "orjson-3.10.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:099e81a5975237fda3100f918839af95f42f981447ba8f47adb7b6a3cdb078fa"}, + {file = "orjson-3.10.5-cp311-none-win32.whl", hash = "sha256:1146bf85ea37ac421594107195db8bc77104f74bc83e8ee21a2e58596bfb2f04"}, + {file = "orjson-3.10.5-cp311-none-win_amd64.whl", hash = "sha256:36a10f43c5f3a55c2f680efe07aa93ef4a342d2960dd2b1b7ea2dd764fe4a37c"}, + {file = "orjson-3.10.5-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:68f85ecae7af14a585a563ac741b0547a3f291de81cd1e20903e79f25170458f"}, + {file = "orjson-3.10.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28afa96f496474ce60d3340fe8d9a263aa93ea01201cd2bad844c45cd21f5268"}, + {file = "orjson-3.10.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cd684927af3e11b6e754df80b9ffafd9fb6adcaa9d3e8fdd5891be5a5cad51e"}, + {file = "orjson-3.10.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d21b9983da032505f7050795e98b5d9eee0df903258951566ecc358f6696969"}, + {file = "orjson-3.10.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ad1de7fef79736dde8c3554e75361ec351158a906d747bd901a52a5c9c8d24b"}, + {file = "orjson-3.10.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2d97531cdfe9bdd76d492e69800afd97e5930cb0da6a825646667b2c6c6c0211"}, + {file = "orjson-3.10.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d69858c32f09c3e1ce44b617b3ebba1aba030e777000ebdf72b0d8e365d0b2b3"}, + {file = "orjson-3.10.5-cp312-none-win32.whl", hash = "sha256:64c9cc089f127e5875901ac05e5c25aa13cfa5dbbbd9602bda51e5c611d6e3e2"}, + {file = "orjson-3.10.5-cp312-none-win_amd64.whl", hash = "sha256:b2efbd67feff8c1f7728937c0d7f6ca8c25ec81373dc8db4ef394c1d93d13dc5"}, + {file = "orjson-3.10.5-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:03b565c3b93f5d6e001db48b747d31ea3819b89abf041ee10ac6988886d18e01"}, + {file = "orjson-3.10.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:584c902ec19ab7928fd5add1783c909094cc53f31ac7acfada817b0847975f26"}, + {file = "orjson-3.10.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a35455cc0b0b3a1eaf67224035f5388591ec72b9b6136d66b49a553ce9eb1e6"}, + {file = "orjson-3.10.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1670fe88b116c2745a3a30b0f099b699a02bb3482c2591514baf5433819e4f4d"}, + {file = "orjson-3.10.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:185c394ef45b18b9a7d8e8f333606e2e8194a50c6e3c664215aae8cf42c5385e"}, + {file = "orjson-3.10.5-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ca0b3a94ac8d3886c9581b9f9de3ce858263865fdaa383fbc31c310b9eac07c9"}, + {file = "orjson-3.10.5-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dfc91d4720d48e2a709e9c368d5125b4b5899dced34b5400c3837dadc7d6271b"}, + {file = "orjson-3.10.5-cp38-none-win32.whl", hash = "sha256:c05f16701ab2a4ca146d0bca950af254cb7c02f3c01fca8efbbad82d23b3d9d4"}, + {file = "orjson-3.10.5-cp38-none-win_amd64.whl", hash = "sha256:8a11d459338f96a9aa7f232ba95679fc0c7cedbd1b990d736467894210205c09"}, + {file = "orjson-3.10.5-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:85c89131d7b3218db1b24c4abecea92fd6c7f9fab87441cfc342d3acc725d807"}, + {file = "orjson-3.10.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb66215277a230c456f9038d5e2d84778141643207f85336ef8d2a9da26bd7ca"}, + {file = "orjson-3.10.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:51bbcdea96cdefa4a9b4461e690c75ad4e33796530d182bdd5c38980202c134a"}, + {file = "orjson-3.10.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbead71dbe65f959b7bd8cf91e0e11d5338033eba34c114f69078d59827ee139"}, + {file = "orjson-3.10.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5df58d206e78c40da118a8c14fc189207fffdcb1f21b3b4c9c0c18e839b5a214"}, + {file = "orjson-3.10.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c4057c3b511bb8aef605616bd3f1f002a697c7e4da6adf095ca5b84c0fd43595"}, + {file = "orjson-3.10.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b39e006b00c57125ab974362e740c14a0c6a66ff695bff44615dcf4a70ce2b86"}, + {file = "orjson-3.10.5-cp39-none-win32.whl", hash = "sha256:eded5138cc565a9d618e111c6d5c2547bbdd951114eb822f7f6309e04db0fb47"}, + {file = "orjson-3.10.5-cp39-none-win_amd64.whl", hash = "sha256:cc28e90a7cae7fcba2493953cff61da5a52950e78dc2dacfe931a317ee3d8de7"}, + {file = "orjson-3.10.5.tar.gz", hash = "sha256:7a5baef8a4284405d96c90c7c62b755e9ef1ada84c2406c24a9ebec86b89f46d"}, ] [[package]] @@ -957,4 +957,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "3b55cf4a61207c4b19ab4f5f0735335fa5ff4de2a8f813903a8702311dfc9fbb" +content-hash = "ea48357b704e5e10b35e38c07cb576b7be38b843112e7bbc1824da622c6c0070" diff --git a/pyproject.toml b/pyproject.toml index 73ccc434..5918e26c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^70.0.0" pook = "^1.4.3" -orjson = "^3.10.3" +orjson = "^3.10.5" [build-system] requires = ["poetry-core>=1.0.0"] From eda006191463c8d1bc02cc94cce16333ba492425 Mon Sep 17 00:00:00 2001 From: SuperMaZingCoder <55718659+SuperMaZingCoder@users.noreply.github.com> Date: Tue, 18 Jun 2024 12:05:04 -0400 Subject: [PATCH 24/88] Add type hinting for datetime.date objects to get_grouped_daily_aggs and get_daily_open_close_agg (#681) Co-authored-by: justinpolygon <123573436+justinpolygon@users.noreply.github.com> --- polygon/rest/aggs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/polygon/rest/aggs.py b/polygon/rest/aggs.py index 71d05d18..cb874fac 100644 --- a/polygon/rest/aggs.py +++ b/polygon/rest/aggs.py @@ -103,7 +103,7 @@ def get_aggs( # param def get_grouped_daily_aggs( self, - date: str, + date: Union[str, date], adjusted: Optional[bool] = None, params: Optional[Dict[str, Any]] = None, raw: bool = False, @@ -135,7 +135,7 @@ def get_grouped_daily_aggs( def get_daily_open_close_agg( self, ticker: str, - date: str, + date: Union[str, date], adjusted: Optional[bool] = None, params: Optional[Dict[str, Any]] = None, raw: bool = False, From b47b85245c24dcfd116ee93338ceba0c5f341f77 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Fri, 21 Jun 2024 07:21:53 -0700 Subject: [PATCH 25/88] Added support for related companies endpoint (#685) * Added related companies * Fix lint * Fix example --- .polygon/rest.json | 346 +++++++++++++++------- examples/rest/stocks-related_companies.py | 10 + polygon/rest/models/tickers.py | 15 + polygon/rest/reference.py | 27 ++ 4 files changed, 289 insertions(+), 109 deletions(-) create mode 100644 examples/rest/stocks-related_companies.py diff --git a/.polygon/rest.json b/.polygon/rest.json index 05bf27c1..05559f76 100644 --- a/.polygon/rest.json +++ b/.polygon/rest.json @@ -63,7 +63,7 @@ }, "AggregateTimeTo": { "description": "The end of the aggregate time window. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", - "example": "2023-01-09", + "example": "2023-02-10", "in": "path", "name": "to", "required": true, @@ -153,7 +153,7 @@ }, "IndicesAggregateTimeFrom": { "description": "The start of the aggregate time window. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", - "example": "2023-03-10", + "example": "2023-03-13", "in": "path", "name": "from", "required": true, @@ -163,7 +163,7 @@ }, "IndicesAggregateTimeTo": { "description": "The end of the aggregate time window. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", - "example": "2023-03-10", + "example": "2023-03-24", "in": "path", "name": "to", "required": true, @@ -13911,8 +13911,7 @@ "files_count", "source_url", "download_url", - "entities", - "acceptance_datetime" + "entities" ], "type": "object", "x-polygon-go-type": { @@ -13982,121 +13981,125 @@ "example": {}, "schema": { "properties": { - "acceptance_datetime": { - "description": "The datetime when the filing was accepted by EDGAR in EST (format: YYYYMMDDHHMMSS)", - "type": "string" - }, - "accession_number": { - "description": "Filing Accession Number", - "type": "string" - }, - "entities": { - "description": "Entities related to the filing (e.g. the document filers).", - "items": { - "description": "A filing entity (e.g. the document filer).", - "properties": { - "company_data": { + "results": { + "properties": { + "acceptance_datetime": { + "description": "The datetime when the filing was accepted by EDGAR in EST (format: YYYYMMDDHHMMSS)", + "type": "string" + }, + "accession_number": { + "description": "Filing Accession Number", + "type": "string" + }, + "entities": { + "description": "Entities related to the filing (e.g. the document filers).", + "items": { + "description": "A filing entity (e.g. the document filer).", "properties": { - "cik": { - "description": "Central Index Key (CIK) Number", - "type": "string" - }, - "name": { - "example": "Facebook Inc", - "type": "string" - }, - "sic": { - "description": "Standard Industrial Classification (SIC)", - "type": "string" + "company_data": { + "properties": { + "cik": { + "description": "Central Index Key (CIK) Number", + "type": "string" + }, + "name": { + "example": "Facebook Inc", + "type": "string" + }, + "sic": { + "description": "Standard Industrial Classification (SIC)", + "type": "string" + }, + "ticker": { + "description": "Ticker", + "type": "string" + } + }, + "required": [ + "name", + "cik", + "sic" + ], + "type": "object", + "x-polygon-go-type": { + "name": "SECCompanyData", + "path": "github.com/polygon-io/go-lib-models/v2/globals" + } }, - "ticker": { - "description": "Ticker", + "relation": { + "description": "Relationship of this entity to the filing.", + "enum": [ + "filer" + ], "type": "string" } }, "required": [ - "name", - "cik", - "sic" + "relation" ], "type": "object", "x-polygon-go-type": { - "name": "SECCompanyData", + "name": "SECFilingEntity", "path": "github.com/polygon-io/go-lib-models/v2/globals" } }, - "relation": { - "description": "Relationship of this entity to the filing.", - "enum": [ - "filer" - ], - "type": "string" - } + "type": "array" }, - "required": [ - "relation" - ], - "type": "object", - "x-polygon-go-type": { - "name": "SECFilingEntity", - "path": "github.com/polygon-io/go-lib-models/v2/globals" + "files_count": { + "description": "The number of files associated with the filing.", + "format": "int64", + "type": "integer" + }, + "filing_date": { + "description": "The date when the filing was filed in YYYYMMDD format.", + "example": "20210101", + "pattern": "^[0-9]{8}$", + "type": "string" + }, + "id": { + "description": "Unique identifier for the filing.", + "type": "string" + }, + "period_of_report_date": { + "description": "The period of report for the filing in YYYYMMDD format.", + "example": "20210101", + "pattern": "^[0-9]{8}$", + "type": "string" + }, + "source_url": { + "description": "The source URL is a link back to the upstream source for this filing\ndocument.", + "example": "https://www.sec.gov/Archives/edgar/data/0001326801/000132680119000037/0001326801-19-000037-index.html", + "format": "uri", + "type": "string" + }, + "type": { + "description": "Filing Type", + "enum": [ + "10-K", + "10-Q" + ], + "type": "string" } }, - "type": "array" - }, - "files_count": { - "description": "The number of files associated with the filing.", - "format": "int64", - "type": "integer" - }, - "filing_date": { - "description": "The date when the filing was filed in YYYYMMDD format.", - "example": "20210101", - "pattern": "^[0-9]{8}$", - "type": "string" - }, - "id": { - "description": "Unique identifier for the filing.", - "type": "string" - }, - "period_of_report_date": { - "description": "The period of report for the filing in YYYYMMDD format.", - "example": "20210101", - "pattern": "^[0-9]{8}$", - "type": "string" - }, - "source_url": { - "description": "The source URL is a link back to the upstream source for this filing\ndocument.", - "example": "https://www.sec.gov/Archives/edgar/data/0001326801/000132680119000037/0001326801-19-000037-index.html", - "format": "uri", - "type": "string" - }, - "type": { - "description": "Filing Type", - "enum": [ - "10-K", - "10-Q" + "required": [ + "id", + "accession_number", + "type", + "filing_date", + "period_of_report_date", + "files_count", + "source_url", + "download_url", + "entities" ], - "type": "string" + "type": "object", + "x-polygon-go-type": { + "name": "SECFiling", + "path": "github.com/polygon-io/go-lib-models/v2/globals" + } } }, - "required": [ - "id", - "accession_number", - "type", - "filing_date", - "period_of_report_date", - "files_count", - "source_url", - "download_url", - "entities", - "acceptance_datetime" - ], - "type": "object", - "x-polygon-go-type": { - "name": "SECFiling", - "path": "github.com/polygon-io/go-lib-models/v2/globals" - } + "type": "object" } } }, @@ -14487,6 +14490,114 @@ }, "x-polygon-draft": true }, + "/v1/related-companies/{ticker}": { + "get": { + "description": "Get a list of tickers related to the queried ticker based on News and Returns data.", + "operationId": "GetRelatedCompanies", + "parameters": [ + { + "description": "The ticker symbol to search.", + "example": "AAPL", + "in": "path", + "name": "ticker", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "example": { + "request_id": "31d59dda-80e5-4721-8496-d0d32a654afe", + "results": [ + { + "ticker": "MSFT" + }, + { + "ticker": "GOOGL" + }, + { + "ticker": "AMZN" + }, + { + "ticker": "FB" + }, + { + "ticker": "TSLA" + }, + { + "ticker": "NVDA" + }, + { + "ticker": "INTC" + }, + { + "ticker": "ADBE" + }, + { + "ticker": "NFLX" + }, + { + "ticker": "PYPL" + } + ], + "status": "OK", + "stock_symbol": "AAPL" + }, + "schema": { + "properties": { + "request_id": { + "description": "A request id assigned by the server.", + "type": "string" + }, + "results": { + "items": { + "description": "The tickers related to the requested ticker.", + "properties": { + "ticker": { + "description": "A ticker related to the requested ticker.", + "type": "string" + } + }, + "required": [ + "ticker" + ], + "type": "object" + }, + "type": "array" + }, + "status": { + "description": "The status of this request's response.", + "type": "string" + }, + "ticker": { + "description": "The ticker being queried.", + "type": "string" + } + }, + "type": "object" + } + } + }, + "description": "Related Companies." + }, + "401": { + "description": "Unauthorized - Check our API Key and account status" + } + }, + "summary": "Related Companies", + "tags": [ + "reference:related:companies" + ], + "x-polygon-entitlement-data-type": { + "description": "Reference data", + "name": "reference" + } + } + }, "/v1/summaries": { "get": { "description": "Get everything needed to visualize the tick-by-tick movement of a list of tickers.", @@ -15711,7 +15822,7 @@ }, { "description": "The end of the aggregate time window. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", - "example": "2023-01-09", + "example": "2023-02-10", "in": "path", "name": "to", "required": true, @@ -16164,7 +16275,7 @@ }, { "description": "The end of the aggregate time window. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", - "example": "2023-01-09", + "example": "2023-02-10", "in": "path", "name": "to", "required": true, @@ -16560,7 +16671,7 @@ }, { "description": "The start of the aggregate time window. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", - "example": "2023-03-10", + "example": "2023-03-13", "in": "path", "name": "from", "required": true, @@ -16570,7 +16681,7 @@ }, { "description": "The end of the aggregate time window. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", - "example": "2023-03-10", + "example": "2023-03-24", "in": "path", "name": "to", "required": true, @@ -16983,7 +17094,7 @@ }, { "description": "The end of the aggregate time window. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", - "example": "2023-01-09", + "example": "2023-02-10", "in": "path", "name": "to", "required": true, @@ -17431,7 +17542,7 @@ }, { "description": "The end of the aggregate time window. Either a date with the format YYYY-MM-DD or a millisecond timestamp.", - "example": "2023-01-09", + "example": "2023-02-10", "in": "path", "name": "to", "required": true, @@ -22882,6 +22993,8 @@ }, "x-polygon-paginate": { "limit": { + "default": 10, + "example": 10, "max": 50000 }, "order": { @@ -23129,6 +23242,8 @@ }, "x-polygon-paginate": { "limit": { + "default": 10, + "example": 10, "max": 50000 }, "order": { @@ -23430,6 +23545,8 @@ }, "x-polygon-paginate": { "limit": { + "default": 10, + "example": 10, "max": 50000 }, "order": { @@ -25395,7 +25512,7 @@ "parameters": [ { "description": "Query for a contract by options ticker. You can learn more about the structure of options tickers [here](https://polygon.io/blog/how-to-read-a-stock-options-ticker/).", - "example": "O:EVRI240119C00002500", + "example": "O:SPY251219C00650000", "in": "path", "name": "options_ticker", "required": true, @@ -29104,6 +29221,8 @@ }, "x-polygon-paginate": { "limit": { + "default": 10, + "example": 10, "max": 50000 }, "order": { @@ -29356,6 +29475,8 @@ }, "x-polygon-paginate": { "limit": { + "default": 10, + "example": 10, "max": 50000 }, "order": { @@ -29645,6 +29766,8 @@ }, "x-polygon-paginate": { "limit": { + "default": 10, + "example": 10, "max": 50000 }, "order": { @@ -31284,6 +31407,11 @@ "paths": [ "/v3/reference/exchanges" ] + }, + { + "paths": [ + "/v1/related-companies/{ticker}" + ] } ] } diff --git a/examples/rest/stocks-related_companies.py b/examples/rest/stocks-related_companies.py new file mode 100644 index 00000000..84b3a405 --- /dev/null +++ b/examples/rest/stocks-related_companies.py @@ -0,0 +1,10 @@ +from polygon import RESTClient + +# docs +# https://polygon.io/docs/stocks/get_v1_related-companies__ticker + +# client = RESTClient("XXXXXX") # hardcoded api_key is used +client = RESTClient() # POLYGON_API_KEY environment variable is used + +related_companies = client.get_related_companies("AAPL") +print(related_companies) diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index f7ff2bed..9a2484ac 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -190,6 +190,21 @@ def from_dict(d): return TickerTypes(**d) +@modelclass +class RelatedCompany: + """ + Get a list of tickers related to the queried ticker based on News and Returns data. + """ + + ticker: Optional[str] = None + + @staticmethod + def from_dict(d): + return RelatedCompany( + ticker=d.get("ticker", None), + ) + + @modelclass class TickerChange: ticker: str diff --git a/polygon/rest/reference.py b/polygon/rest/reference.py index 38d15752..7af5b10f 100644 --- a/polygon/rest/reference.py +++ b/polygon/rest/reference.py @@ -7,6 +7,7 @@ TickerChangeResults, TickerDetails, TickerNews, + RelatedCompany, TickerTypes, Sort, Order, @@ -245,6 +246,32 @@ def get_ticker_types( options=options, ) + def get_related_companies( + self, + ticker: Optional[str] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[RelatedCompany, HTTPResponse]: + """ + Get a list of tickers related to the queried ticker based on News and Returns data. + + :param ticker: The ticker symbol to search. + :param params: Any additional query params. + :param raw: Return raw object instead of results object. + :return: Related Companies. + """ + url = f"/v1/related-companies/{ticker}" + + return self._get( + path=url, + params=self._get_params(self.get_related_companies, locals()), + deserializer=RelatedCompany.from_dict, + raw=raw, + result_key="results", + options=options, + ) + class SplitsClient(BaseClient): def list_splits( From 71bc46946b84f2ac68f9977c29f59ea7e12e6443 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Mon, 1 Jul 2024 07:20:46 -0700 Subject: [PATCH 26/88] Update base.py to remove setuptools and use standard library (#694) * Update base.py to remove setuptools and use standard library * Update version to version number * Update readme to remove pip install setuptools --- README.md | 6 +----- polygon/rest/base.py | 10 +++++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3df6c512..aaf7bb5f 100644 --- a/README.md +++ b/README.md @@ -7,11 +7,7 @@ Welcome to the official Python client library for the [Polygon](https://polygon. ## Prerequisites -Before installing the Polygon Python client, ensure your environment has Python 3.8 or higher. While most Python environments come with setuptools installed, it is a dependency for this library. In the rare case it's not already present, you can install setuptools using pip: - -``` -pip install setuptools -``` +Before installing the Polygon Python client, ensure your environment has Python 3.8 or higher. ## Install diff --git a/polygon/rest/base.py b/polygon/rest/base.py index 3e65c06c..3a5d637f 100644 --- a/polygon/rest/base.py +++ b/polygon/rest/base.py @@ -7,7 +7,7 @@ from enum import Enum from typing import Optional, Any, Dict from datetime import datetime -import pkg_resources # part of setuptools +from importlib.metadata import version, PackageNotFoundError from .models.request import RequestOptionBuilder from ..logging import get_logger import logging @@ -15,10 +15,10 @@ from ..exceptions import AuthError, BadResponse logger = get_logger("RESTClient") -version = "unknown" +version_number = "unknown" try: - version = pkg_resources.require("polygon-api-client")[0].version -except: + version_number = version("polygon-api-client") +except PackageNotFoundError: pass @@ -46,7 +46,7 @@ def __init__( self.headers = { "Authorization": "Bearer " + self.API_KEY, "Accept-Encoding": "gzip", - "User-Agent": f"Polygon.io PythonClient/{version}", + "User-Agent": f"Polygon.io PythonClient/{version_number}", } # initialize self.retries with the parameter value before using it From 653763490e3851ac01ec9c9a4b17e5711ba6c037 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 07:29:02 -0700 Subject: [PATCH 27/88] Bump urllib3 from 1.26.19 to 2.2.2 (#696) Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.19 to 2.2.2. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.26.19...2.2.2) --- updated-dependencies: - dependency-name: urllib3 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 17 +++++++++-------- pyproject.toml | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/poetry.lock b/poetry.lock index 96a75b32..89de3744 100644 --- a/poetry.lock +++ b/poetry.lock @@ -833,19 +833,20 @@ files = [ [[package]] name = "urllib3" -version = "1.26.19" +version = "2.2.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +python-versions = ">=3.8" files = [ - {file = "urllib3-1.26.19-py2.py3-none-any.whl", hash = "sha256:37a0344459b199fce0e80b0d3569837ec6b6937435c5244e7fd73fa6006830f3"}, - {file = "urllib3-1.26.19.tar.gz", hash = "sha256:3e3d753a8618b86d7de333b4223005f68720bcd6a7d2bcb9fbd2229ec7c1e429"}, + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, ] [package.extras] -brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "websockets" @@ -957,4 +958,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "ea48357b704e5e10b35e38c07cb576b7be38b843112e7bbc1824da622c6c0070" +content-hash = "91711a22515bbf47ea8f6fe829298a09dbcfe2784192012d8989f41d8bb8c388" diff --git a/pyproject.toml b/pyproject.toml index 5918e26c..ef18d836 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ packages = [ [tool.poetry.dependencies] python = "^3.8" -urllib3 = "^1.26.9,<2.0" +urllib3 = ">=1.26.9,<3.0.0" websockets = ">=10.3,<13.0" certifi = ">=2022.5.18,<2025.0.0" From ceeb56d4fe760828a040079ee41126326f5783a2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 10:29:21 -0700 Subject: [PATCH 28/88] Bump pook from 1.4.3 to 2.0.0 (#697) Bumps [pook](https://github.com/h2non/pook) from 1.4.3 to 2.0.0. - [Release notes](https://github.com/h2non/pook/releases) - [Changelog](https://github.com/h2non/pook/blob/master/History.rst) - [Commits](https://github.com/h2non/pook/compare/v1.4.3...v2.0.0) --- updated-dependencies: - dependency-name: pook dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 89de3744..8eccc686 100644 --- a/poetry.lock +++ b/poetry.lock @@ -487,13 +487,13 @@ test = ["appdirs (==1.4.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock [[package]] name = "pook" -version = "1.4.3" +version = "2.0.0" description = "HTTP traffic mocking and expectations made easy" optional = false python-versions = ">=3.8" files = [ - {file = "pook-1.4.3-py3-none-any.whl", hash = "sha256:4683a8a9d11fb56901ae15001a5bfb76a1bb960b1a841de1f0ca11c8c2d9eef8"}, - {file = "pook-1.4.3.tar.gz", hash = "sha256:61dbd9f6f9bf4d0bbab4abdf382bf7e8fbaae8561c5de3cd444e7c4be67df651"}, + {file = "pook-2.0.0-py3-none-any.whl", hash = "sha256:b3993cf00b8335f19b407fca39febd048c97749eb7c06eaddd9fbaff3b0a1ac3"}, + {file = "pook-2.0.0.tar.gz", hash = "sha256:b106ebc088417fa7b68d1f6ee21a9720fd171ea96d4b86ef308eaffac1e5c4f8"}, ] [package.dependencies] @@ -958,4 +958,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "91711a22515bbf47ea8f6fe829298a09dbcfe2784192012d8989f41d8bb8c388" +content-hash = "ec7930e1a506d681ad1a3b775081ed97062cae372b6d33240b238874989adbed" diff --git a/pyproject.toml b/pyproject.toml index ef18d836..64e76f94 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ sphinx-rtd-theme = "^2.0.0" sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^70.0.0" -pook = "^1.4.3" +pook = "^2.0.0" orjson = "^3.10.5" [build-system] From 2bbae7b8b54ca6a26568d8ad7f77db062c890e08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 14:34:15 -0700 Subject: [PATCH 29/88] Bump mypy from 1.10.0 to 1.10.1 (#699) Bumps [mypy](https://github.com/python/mypy) from 1.10.0 to 1.10.1. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.10.0...v1.10.1) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 56 ++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8eccc686..76ff8169 100644 --- a/poetry.lock +++ b/poetry.lock @@ -312,38 +312,38 @@ files = [ [[package]] name = "mypy" -version = "1.10.0" +version = "1.10.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2"}, - {file = "mypy-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99"}, - {file = "mypy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2"}, - {file = "mypy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9"}, - {file = "mypy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051"}, - {file = "mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1"}, - {file = "mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee"}, - {file = "mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de"}, - {file = "mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7"}, - {file = "mypy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53"}, - {file = "mypy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b"}, - {file = "mypy-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30"}, - {file = "mypy-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e"}, - {file = "mypy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5"}, - {file = "mypy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda"}, - {file = "mypy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0"}, - {file = "mypy-1.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727"}, - {file = "mypy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4"}, - {file = "mypy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061"}, - {file = "mypy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f"}, - {file = "mypy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976"}, - {file = "mypy-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec"}, - {file = "mypy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821"}, - {file = "mypy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746"}, - {file = "mypy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a"}, - {file = "mypy-1.10.0-py3-none-any.whl", hash = "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee"}, - {file = "mypy-1.10.0.tar.gz", hash = "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131"}, + {file = "mypy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e36f229acfe250dc660790840916eb49726c928e8ce10fbdf90715090fe4ae02"}, + {file = "mypy-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:51a46974340baaa4145363b9e051812a2446cf583dfaeba124af966fa44593f7"}, + {file = "mypy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:901c89c2d67bba57aaaca91ccdb659aa3a312de67f23b9dfb059727cce2e2e0a"}, + {file = "mypy-1.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0cd62192a4a32b77ceb31272d9e74d23cd88c8060c34d1d3622db3267679a5d9"}, + {file = "mypy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:a2cbc68cb9e943ac0814c13e2452d2046c2f2b23ff0278e26599224cf164e78d"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bd6f629b67bb43dc0d9211ee98b96d8dabc97b1ad38b9b25f5e4c4d7569a0c6a"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a1bbb3a6f5ff319d2b9d40b4080d46cd639abe3516d5a62c070cf0114a457d84"}, + {file = "mypy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8edd4e9bbbc9d7b79502eb9592cab808585516ae1bcc1446eb9122656c6066f"}, + {file = "mypy-1.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6166a88b15f1759f94a46fa474c7b1b05d134b1b61fca627dd7335454cc9aa6b"}, + {file = "mypy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:5bb9cd11c01c8606a9d0b83ffa91d0b236a0e91bc4126d9ba9ce62906ada868e"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d8681909f7b44d0b7b86e653ca152d6dff0eb5eb41694e163c6092124f8246d7"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:378c03f53f10bbdd55ca94e46ec3ba255279706a6aacaecac52ad248f98205d3"}, + {file = "mypy-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bacf8f3a3d7d849f40ca6caea5c055122efe70e81480c8328ad29c55c69e93e"}, + {file = "mypy-1.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:701b5f71413f1e9855566a34d6e9d12624e9e0a8818a5704d74d6b0402e66c04"}, + {file = "mypy-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c4c2992f6ea46ff7fce0072642cfb62af7a2484efe69017ed8b095f7b39ef31"}, + {file = "mypy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:604282c886497645ffb87b8f35a57ec773a4a2721161e709a4422c1636ddde5c"}, + {file = "mypy-1.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37fd87cab83f09842653f08de066ee68f1182b9b5282e4634cdb4b407266bade"}, + {file = "mypy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8addf6313777dbb92e9564c5d32ec122bf2c6c39d683ea64de6a1fd98b90fe37"}, + {file = "mypy-1.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5cc3ca0a244eb9a5249c7c583ad9a7e881aa5d7b73c35652296ddcdb33b2b9c7"}, + {file = "mypy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:1b3a2ffce52cc4dbaeee4df762f20a2905aa171ef157b82192f2e2f368eec05d"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe85ed6836165d52ae8b88f99527d3d1b2362e0cb90b005409b8bed90e9059b3"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2ae450d60d7d020d67ab440c6e3fae375809988119817214440033f26ddf7bf"}, + {file = "mypy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be84c06e6abd72f960ba9a71561c14137a583093ffcf9bbfaf5e613d63fa531"}, + {file = "mypy-1.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2189ff1e39db399f08205e22a797383613ce1cb0cb3b13d8bcf0170e45b96cc3"}, + {file = "mypy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:97a131ee36ac37ce9581f4220311247ab6cba896b4395b9c87af0675a13a755f"}, + {file = "mypy-1.10.1-py3-none-any.whl", hash = "sha256:71d8ac0b906354ebda8ef1673e5fde785936ac1f29ff6987c7483cfbd5a4235a"}, + {file = "mypy-1.10.1.tar.gz", hash = "sha256:1f8f492d7db9e3593ef42d4f115f04e556130f2819ad33ab84551403e97dd4c0"}, ] [package.dependencies] From 52625ed9d7a524ffb30a5b82c903aa86a7707e95 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 14:45:46 -0700 Subject: [PATCH 30/88] Bump types-setuptools from 70.0.0.20240524 to 70.1.0.20240627 (#698) Bumps [types-setuptools](https://github.com/python/typeshed) from 70.0.0.20240524 to 70.1.0.20240627. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 76ff8169..20614a7f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -800,13 +800,13 @@ files = [ [[package]] name = "types-setuptools" -version = "70.0.0.20240524" +version = "70.1.0.20240627" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-70.0.0.20240524.tar.gz", hash = "sha256:e31fee7b9d15ef53980526579ac6089b3ae51a005a281acf97178e90ac71aff6"}, - {file = "types_setuptools-70.0.0.20240524-py3-none-any.whl", hash = "sha256:8f5379b9948682d72a9ab531fbe52932e84c4f38deda570255f9bae3edd766bc"}, + {file = "types-setuptools-70.1.0.20240627.tar.gz", hash = "sha256:385907a47b5cf302b928ce07953cd91147d5de6f3da604c31905fdf0ec309e83"}, + {file = "types_setuptools-70.1.0.20240627-py3-none-any.whl", hash = "sha256:c7bdf05cd0a8b66868b4774c7b3c079d01ae025d8c9562bfc8bf2ff44d263c9c"}, ] [[package]] @@ -958,4 +958,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "ec7930e1a506d681ad1a3b775081ed97062cae372b6d33240b238874989adbed" +content-hash = "89794f3b0256bd17ce73cb9fe5635edd8dc37d282308ab4208d5df08eff11a7d" diff --git a/pyproject.toml b/pyproject.toml index 64e76f94..8c9e59ac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^2.0.0" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^70.0.0" +types-setuptools = "^70.1.0" pook = "^2.0.0" orjson = "^3.10.5" From 479cca33118066aa05619932526f8b7d561a110a Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Tue, 2 Jul 2024 06:51:25 -0700 Subject: [PATCH 31/88] Fix example to have correct params (#700) --- examples/rest/raw-list.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/rest/raw-list.py b/examples/rest/raw-list.py index 5a5a5642..9dd0020e 100644 --- a/examples/rest/raw-list.py +++ b/examples/rest/raw-list.py @@ -6,7 +6,7 @@ trades = cast( HTTPResponse, - client.list_trades("AAA", "2022-04-20", 5, raw=True), + client.list_trades("AAA", "2022-04-20", raw=True), ) print(trades.data) # b'{ From f789d2905bf9410ce372ff8c3dd8549534c4603d Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Tue, 2 Jul 2024 16:12:41 -0700 Subject: [PATCH 32/88] =?UTF-8?q?Revert=20"Use=20ssl=5Fcontext=20for=20HTT?= =?UTF-8?q?PS=20requests=20to=20avoid=20reading=20certificate=20files?= =?UTF-8?q?=E2=80=A6"=20(#691)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 7cb520843437dea4804e10dcb5457ab21c40f847. --- polygon/rest/base.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/polygon/rest/base.py b/polygon/rest/base.py index 3a5d637f..d9d4768a 100644 --- a/polygon/rest/base.py +++ b/polygon/rest/base.py @@ -1,6 +1,5 @@ import certifi import json -import ssl import urllib3 import inspect from urllib3.util.retry import Retry @@ -67,16 +66,13 @@ def __init__( backoff_factor=0.1, # [0.0s, 0.2s, 0.4s, 0.8s, 1.6s, ...] ) - # global cache ssl context and use (vs on each init of pool manager) - ssl_context = ssl.create_default_context() - ssl_context.load_verify_locations(certifi.where()) - # https://urllib3.readthedocs.io/en/stable/reference/urllib3.poolmanager.html # https://urllib3.readthedocs.io/en/stable/reference/urllib3.connectionpool.html#urllib3.HTTPConnectionPool self.client = urllib3.PoolManager( num_pools=num_pools, headers=self.headers, # default headers sent with each request. - ssl_context=ssl_context, + ca_certs=certifi.where(), + cert_reqs="CERT_REQUIRED", retries=retry_strategy, # use the customized Retry instance ) From 87e1d6340dd4ee6f25f0539bdb77edc2309356e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jul 2024 14:14:14 +0000 Subject: [PATCH 33/88] Bump orjson from 3.10.5 to 3.10.6 (#704) --- poetry.lock | 103 ++++++++++++++++++++++++++----------------------- pyproject.toml | 2 +- 2 files changed, 55 insertions(+), 50 deletions(-) diff --git a/poetry.lock b/poetry.lock index 20614a7f..5402fc29 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "alabaster" @@ -384,57 +384,62 @@ six = ">=1.8.0" [[package]] name = "orjson" -version = "3.10.5" +version = "3.10.6" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.5-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:545d493c1f560d5ccfc134803ceb8955a14c3fcb47bbb4b2fee0232646d0b932"}, - {file = "orjson-3.10.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4324929c2dd917598212bfd554757feca3e5e0fa60da08be11b4aa8b90013c1"}, - {file = "orjson-3.10.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c13ca5e2ddded0ce6a927ea5a9f27cae77eee4c75547b4297252cb20c4d30e6"}, - {file = "orjson-3.10.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b6c8e30adfa52c025f042a87f450a6b9ea29649d828e0fec4858ed5e6caecf63"}, - {file = "orjson-3.10.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:338fd4f071b242f26e9ca802f443edc588fa4ab60bfa81f38beaedf42eda226c"}, - {file = "orjson-3.10.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6970ed7a3126cfed873c5d21ece1cd5d6f83ca6c9afb71bbae21a0b034588d96"}, - {file = "orjson-3.10.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:235dadefb793ad12f7fa11e98a480db1f7c6469ff9e3da5e73c7809c700d746b"}, - {file = "orjson-3.10.5-cp310-none-win32.whl", hash = "sha256:be79e2393679eda6a590638abda16d167754393f5d0850dcbca2d0c3735cebe2"}, - {file = "orjson-3.10.5-cp310-none-win_amd64.whl", hash = "sha256:c4a65310ccb5c9910c47b078ba78e2787cb3878cdded1702ac3d0da71ddc5228"}, - {file = "orjson-3.10.5-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:cdf7365063e80899ae3a697def1277c17a7df7ccfc979990a403dfe77bb54d40"}, - {file = "orjson-3.10.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b68742c469745d0e6ca5724506858f75e2f1e5b59a4315861f9e2b1df77775a"}, - {file = "orjson-3.10.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7d10cc1b594951522e35a3463da19e899abe6ca95f3c84c69e9e901e0bd93d38"}, - {file = "orjson-3.10.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dcbe82b35d1ac43b0d84072408330fd3295c2896973112d495e7234f7e3da2e1"}, - {file = "orjson-3.10.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c0eb7e0c75e1e486c7563fe231b40fdd658a035ae125c6ba651ca3b07936f5"}, - {file = "orjson-3.10.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:53ed1c879b10de56f35daf06dbc4a0d9a5db98f6ee853c2dbd3ee9d13e6f302f"}, - {file = "orjson-3.10.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:099e81a5975237fda3100f918839af95f42f981447ba8f47adb7b6a3cdb078fa"}, - {file = "orjson-3.10.5-cp311-none-win32.whl", hash = "sha256:1146bf85ea37ac421594107195db8bc77104f74bc83e8ee21a2e58596bfb2f04"}, - {file = "orjson-3.10.5-cp311-none-win_amd64.whl", hash = "sha256:36a10f43c5f3a55c2f680efe07aa93ef4a342d2960dd2b1b7ea2dd764fe4a37c"}, - {file = "orjson-3.10.5-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:68f85ecae7af14a585a563ac741b0547a3f291de81cd1e20903e79f25170458f"}, - {file = "orjson-3.10.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28afa96f496474ce60d3340fe8d9a263aa93ea01201cd2bad844c45cd21f5268"}, - {file = "orjson-3.10.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9cd684927af3e11b6e754df80b9ffafd9fb6adcaa9d3e8fdd5891be5a5cad51e"}, - {file = "orjson-3.10.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d21b9983da032505f7050795e98b5d9eee0df903258951566ecc358f6696969"}, - {file = "orjson-3.10.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ad1de7fef79736dde8c3554e75361ec351158a906d747bd901a52a5c9c8d24b"}, - {file = "orjson-3.10.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2d97531cdfe9bdd76d492e69800afd97e5930cb0da6a825646667b2c6c6c0211"}, - {file = "orjson-3.10.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d69858c32f09c3e1ce44b617b3ebba1aba030e777000ebdf72b0d8e365d0b2b3"}, - {file = "orjson-3.10.5-cp312-none-win32.whl", hash = "sha256:64c9cc089f127e5875901ac05e5c25aa13cfa5dbbbd9602bda51e5c611d6e3e2"}, - {file = "orjson-3.10.5-cp312-none-win_amd64.whl", hash = "sha256:b2efbd67feff8c1f7728937c0d7f6ca8c25ec81373dc8db4ef394c1d93d13dc5"}, - {file = "orjson-3.10.5-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:03b565c3b93f5d6e001db48b747d31ea3819b89abf041ee10ac6988886d18e01"}, - {file = "orjson-3.10.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:584c902ec19ab7928fd5add1783c909094cc53f31ac7acfada817b0847975f26"}, - {file = "orjson-3.10.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a35455cc0b0b3a1eaf67224035f5388591ec72b9b6136d66b49a553ce9eb1e6"}, - {file = "orjson-3.10.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1670fe88b116c2745a3a30b0f099b699a02bb3482c2591514baf5433819e4f4d"}, - {file = "orjson-3.10.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:185c394ef45b18b9a7d8e8f333606e2e8194a50c6e3c664215aae8cf42c5385e"}, - {file = "orjson-3.10.5-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ca0b3a94ac8d3886c9581b9f9de3ce858263865fdaa383fbc31c310b9eac07c9"}, - {file = "orjson-3.10.5-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dfc91d4720d48e2a709e9c368d5125b4b5899dced34b5400c3837dadc7d6271b"}, - {file = "orjson-3.10.5-cp38-none-win32.whl", hash = "sha256:c05f16701ab2a4ca146d0bca950af254cb7c02f3c01fca8efbbad82d23b3d9d4"}, - {file = "orjson-3.10.5-cp38-none-win_amd64.whl", hash = "sha256:8a11d459338f96a9aa7f232ba95679fc0c7cedbd1b990d736467894210205c09"}, - {file = "orjson-3.10.5-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:85c89131d7b3218db1b24c4abecea92fd6c7f9fab87441cfc342d3acc725d807"}, - {file = "orjson-3.10.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb66215277a230c456f9038d5e2d84778141643207f85336ef8d2a9da26bd7ca"}, - {file = "orjson-3.10.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:51bbcdea96cdefa4a9b4461e690c75ad4e33796530d182bdd5c38980202c134a"}, - {file = "orjson-3.10.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbead71dbe65f959b7bd8cf91e0e11d5338033eba34c114f69078d59827ee139"}, - {file = "orjson-3.10.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5df58d206e78c40da118a8c14fc189207fffdcb1f21b3b4c9c0c18e839b5a214"}, - {file = "orjson-3.10.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c4057c3b511bb8aef605616bd3f1f002a697c7e4da6adf095ca5b84c0fd43595"}, - {file = "orjson-3.10.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b39e006b00c57125ab974362e740c14a0c6a66ff695bff44615dcf4a70ce2b86"}, - {file = "orjson-3.10.5-cp39-none-win32.whl", hash = "sha256:eded5138cc565a9d618e111c6d5c2547bbdd951114eb822f7f6309e04db0fb47"}, - {file = "orjson-3.10.5-cp39-none-win_amd64.whl", hash = "sha256:cc28e90a7cae7fcba2493953cff61da5a52950e78dc2dacfe931a317ee3d8de7"}, - {file = "orjson-3.10.5.tar.gz", hash = "sha256:7a5baef8a4284405d96c90c7c62b755e9ef1ada84c2406c24a9ebec86b89f46d"}, + {file = "orjson-3.10.6-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:fb0ee33124db6eaa517d00890fc1a55c3bfe1cf78ba4a8899d71a06f2d6ff5c7"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c1c4b53b24a4c06547ce43e5fee6ec4e0d8fe2d597f4647fc033fd205707365"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eadc8fd310edb4bdbd333374f2c8fec6794bbbae99b592f448d8214a5e4050c0"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61272a5aec2b2661f4fa2b37c907ce9701e821b2c1285d5c3ab0207ebd358d38"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57985ee7e91d6214c837936dc1608f40f330a6b88bb13f5a57ce5257807da143"}, + {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:633a3b31d9d7c9f02d49c4ab4d0a86065c4a6f6adc297d63d272e043472acab5"}, + {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1c680b269d33ec444afe2bdc647c9eb73166fa47a16d9a75ee56a374f4a45f43"}, + {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f759503a97a6ace19e55461395ab0d618b5a117e8d0fbb20e70cfd68a47327f2"}, + {file = "orjson-3.10.6-cp310-none-win32.whl", hash = "sha256:95a0cce17f969fb5391762e5719575217bd10ac5a189d1979442ee54456393f3"}, + {file = "orjson-3.10.6-cp310-none-win_amd64.whl", hash = "sha256:df25d9271270ba2133cc88ee83c318372bdc0f2cd6f32e7a450809a111efc45c"}, + {file = "orjson-3.10.6-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b1ec490e10d2a77c345def52599311849fc063ae0e67cf4f84528073152bb2ba"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d43d3feb8f19d07e9f01e5b9be4f28801cf7c60d0fa0d279951b18fae1932b"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac3045267e98fe749408eee1593a142e02357c5c99be0802185ef2170086a863"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c27bc6a28ae95923350ab382c57113abd38f3928af3c80be6f2ba7eb8d8db0b0"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d27456491ca79532d11e507cadca37fb8c9324a3976294f68fb1eff2dc6ced5a"}, + {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05ac3d3916023745aa3b3b388e91b9166be1ca02b7c7e41045da6d12985685f0"}, + {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1335d4ef59ab85cab66fe73fd7a4e881c298ee7f63ede918b7faa1b27cbe5212"}, + {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4bbc6d0af24c1575edc79994c20e1b29e6fb3c6a570371306db0993ecf144dc5"}, + {file = "orjson-3.10.6-cp311-none-win32.whl", hash = "sha256:450e39ab1f7694465060a0550b3f6d328d20297bf2e06aa947b97c21e5241fbd"}, + {file = "orjson-3.10.6-cp311-none-win_amd64.whl", hash = "sha256:227df19441372610b20e05bdb906e1742ec2ad7a66ac8350dcfd29a63014a83b"}, + {file = "orjson-3.10.6-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ea2977b21f8d5d9b758bb3f344a75e55ca78e3ff85595d248eee813ae23ecdfb"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6f3d167d13a16ed263b52dbfedff52c962bfd3d270b46b7518365bcc2121eed"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f710f346e4c44a4e8bdf23daa974faede58f83334289df80bc9cd12fe82573c7"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7275664f84e027dcb1ad5200b8b18373e9c669b2a9ec33d410c40f5ccf4b257e"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0943e4c701196b23c240b3d10ed8ecd674f03089198cf503105b474a4f77f21f"}, + {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:446dee5a491b5bc7d8f825d80d9637e7af43f86a331207b9c9610e2f93fee22a"}, + {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:64c81456d2a050d380786413786b057983892db105516639cb5d3ee3c7fd5148"}, + {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:960db0e31c4e52fa0fc3ecbaea5b2d3b58f379e32a95ae6b0ebeaa25b93dfd34"}, + {file = "orjson-3.10.6-cp312-none-win32.whl", hash = "sha256:a6ea7afb5b30b2317e0bee03c8d34c8181bc5a36f2afd4d0952f378972c4efd5"}, + {file = "orjson-3.10.6-cp312-none-win_amd64.whl", hash = "sha256:874ce88264b7e655dde4aeaacdc8fd772a7962faadfb41abe63e2a4861abc3dc"}, + {file = "orjson-3.10.6-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:66680eae4c4e7fc193d91cfc1353ad6d01b4801ae9b5314f17e11ba55e934183"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caff75b425db5ef8e8f23af93c80f072f97b4fb3afd4af44482905c9f588da28"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3722fddb821b6036fd2a3c814f6bd9b57a89dc6337b9924ecd614ebce3271394"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2c116072a8533f2fec435fde4d134610f806bdac20188c7bd2081f3e9e0133f"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6eeb13218c8cf34c61912e9df2de2853f1d009de0e46ea09ccdf3d757896af0a"}, + {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:965a916373382674e323c957d560b953d81d7a8603fbeee26f7b8248638bd48b"}, + {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:03c95484d53ed8e479cade8628c9cea00fd9d67f5554764a1110e0d5aa2de96e"}, + {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e060748a04cccf1e0a6f2358dffea9c080b849a4a68c28b1b907f272b5127e9b"}, + {file = "orjson-3.10.6-cp38-none-win32.whl", hash = "sha256:738dbe3ef909c4b019d69afc19caf6b5ed0e2f1c786b5d6215fbb7539246e4c6"}, + {file = "orjson-3.10.6-cp38-none-win_amd64.whl", hash = "sha256:d40f839dddf6a7d77114fe6b8a70218556408c71d4d6e29413bb5f150a692ff7"}, + {file = "orjson-3.10.6-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:697a35a083c4f834807a6232b3e62c8b280f7a44ad0b759fd4dce748951e70db"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd502f96bf5ea9a61cbc0b2b5900d0dd68aa0da197179042bdd2be67e51a1e4b"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f215789fb1667cdc874c1b8af6a84dc939fd802bf293a8334fce185c79cd359b"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2debd8ddce948a8c0938c8c93ade191d2f4ba4649a54302a7da905a81f00b56"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5410111d7b6681d4b0d65e0f58a13be588d01b473822483f77f513c7f93bd3b2"}, + {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb1f28a137337fdc18384079fa5726810681055b32b92253fa15ae5656e1dddb"}, + {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bf2fbbce5fe7cd1aa177ea3eab2b8e6a6bc6e8592e4279ed3db2d62e57c0e1b2"}, + {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:79b9b9e33bd4c517445a62b90ca0cc279b0f1f3970655c3df9e608bc3f91741a"}, + {file = "orjson-3.10.6-cp39-none-win32.whl", hash = "sha256:30b0a09a2014e621b1adf66a4f705f0809358350a757508ee80209b2d8dae219"}, + {file = "orjson-3.10.6-cp39-none-win_amd64.whl", hash = "sha256:49e3bc615652617d463069f91b867a4458114c5b104e13b7ae6872e5f79d0844"}, + {file = "orjson-3.10.6.tar.gz", hash = "sha256:e54b63d0a7c6c54a5f5f726bc93a2078111ef060fec4ecbf34c5db800ca3b3a7"}, ] [[package]] @@ -958,4 +963,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "89794f3b0256bd17ce73cb9fe5635edd8dc37d282308ab4208d5df08eff11a7d" +content-hash = "0eb202f0214b34a4fd920dd8bd3ed59453f2a71e8a1454071856c1d18080659a" diff --git a/pyproject.toml b/pyproject.toml index 8c9e59ac..a962b9e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^70.1.0" pook = "^2.0.0" -orjson = "^3.10.5" +orjson = "^3.10.6" [build-system] requires = ["poetry-core>=1.0.0"] From 511aca1cc924b29caaed68452141d66853be4be5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jul 2024 18:05:14 -0700 Subject: [PATCH 34/88] Bump types-setuptools from 70.1.0.20240627 to 70.3.0.20240710 (#707) Bumps [types-setuptools](https://github.com/python/typeshed) from 70.1.0.20240627 to 70.3.0.20240710. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5402fc29..8ceae7ed 100644 --- a/poetry.lock +++ b/poetry.lock @@ -805,13 +805,13 @@ files = [ [[package]] name = "types-setuptools" -version = "70.1.0.20240627" +version = "70.3.0.20240710" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-70.1.0.20240627.tar.gz", hash = "sha256:385907a47b5cf302b928ce07953cd91147d5de6f3da604c31905fdf0ec309e83"}, - {file = "types_setuptools-70.1.0.20240627-py3-none-any.whl", hash = "sha256:c7bdf05cd0a8b66868b4774c7b3c079d01ae025d8c9562bfc8bf2ff44d263c9c"}, + {file = "types-setuptools-70.3.0.20240710.tar.gz", hash = "sha256:842cbf399812d2b65042c9d6ff35113bbf282dee38794779aa1f94e597bafc35"}, + {file = "types_setuptools-70.3.0.20240710-py3-none-any.whl", hash = "sha256:bd0db2a4b9f2c49ac5564be4e0fb3125c4c46b1f73eafdcbceffa5b005cceca4"}, ] [[package]] @@ -963,4 +963,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "0eb202f0214b34a4fd920dd8bd3ed59453f2a71e8a1454071856c1d18080659a" +content-hash = "e3fa63991d39989af47ef9380ec497c17c30d57bcf4a6c59d8e2146d22d27828" diff --git a/pyproject.toml b/pyproject.toml index a962b9e2..dffc7ae4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^2.0.0" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^70.1.0" +types-setuptools = "^70.3.0" pook = "^2.0.0" orjson = "^3.10.6" From 9011163f50a85616022da3b15e3d360704cd67fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jul 2024 18:16:21 -0700 Subject: [PATCH 35/88] Bump zipp from 3.11.0 to 3.19.1 (#706) Bumps [zipp](https://github.com/jaraco/zipp) from 3.11.0 to 3.19.1. - [Release notes](https://github.com/jaraco/zipp/releases) - [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst) - [Commits](https://github.com/jaraco/zipp/compare/v3.11.0...v3.19.1) --- updated-dependencies: - dependency-name: zipp dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8ceae7ed..381728c1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -947,18 +947,18 @@ files = [ [[package]] name = "zipp" -version = "3.11.0" +version = "3.19.1" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zipp-3.11.0-py3-none-any.whl", hash = "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa"}, - {file = "zipp-3.11.0.tar.gz", hash = "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766"}, + {file = "zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091"}, + {file = "zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [metadata] lock-version = "2.0" From 5c73e33f836cc0298008cfe37cb9f9a3de36d036 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jul 2024 18:20:22 -0700 Subject: [PATCH 36/88] Bump certifi from 2024.6.2 to 2024.7.4 (#702) Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.6.2 to 2024.7.4. - [Commits](https://github.com/certifi/python-certifi/compare/2024.06.02...2024.07.04) --- updated-dependencies: - dependency-name: certifi dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 381728c1..5c87ae90 100644 --- a/poetry.lock +++ b/poetry.lock @@ -90,13 +90,13 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2024.6.2" +version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, - {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, + {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, + {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, ] [[package]] From 3aa9d8267cad17aeec6793aefe89a1a85bb359f4 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Thu, 18 Jul 2024 06:41:45 -0700 Subject: [PATCH 37/88] Added ticker news insights support (#710) --- .polygon/rest.json | 129 ++++++++++++++++++--------------- polygon/rest/models/tickers.py | 18 +++++ 2 files changed, 87 insertions(+), 60 deletions(-) diff --git a/.polygon/rest.json b/.polygon/rest.json index 05559f76..94dd8286 100644 --- a/.polygon/rest.json +++ b/.polygon/rest.json @@ -18312,7 +18312,7 @@ "operationId": "ListNews", "parameters": [ { - "description": "Return results that contain this ticker.", + "description": "Specify a case-sensitive ticker symbol. For example, AAPL represents Apple Inc.", "in": "query", "name": "ticker", "schema": { @@ -18496,52 +18496,35 @@ "request_id": "831afdb0b8078549fed053476984947a", "results": [ { - "amp_url": "https://amp.benzinga.com/amp/content/20784086", - "article_url": "https://www.benzinga.com/markets/cryptocurrency/21/04/20784086/cathie-wood-adds-more-coinbase-skillz-trims-square", - "author": "Rachit Vats", - "description": "

Cathie Wood-led Ark Investment Management on Friday snapped up another 221,167 shares of the cryptocurrency exchange Coinbase Global Inc (NASDAQ COIN) worth about $64.49 million on the stock’s Friday’s dip and also its fourth-straight loss.

\n

The investment firm’s Ark Innovation ETF (NYSE ARKK) bought the shares of the company that closed 0.63% lower at $291.60 on Friday, giving the cryptocurrency exchange a market cap of $58.09 billion. Coinbase’s market cap has dropped from $85.8 billion on its blockbuster listing earlier this month.

\n

The New York-based company also added another 3,873 shares of the mobile gaming company Skillz Inc (NYSE SKLZ), just a day after snapping 1.2 million shares of the stock.

\n

ARKK bought the shares of the company which closed ...

Full story available on Benzinga.com

", - "id": "nJsSJJdwViHZcw5367rZi7_qkXLfMzacXBfpv-vD9UA", - "image_url": "https://cdn2.benzinga.com/files/imagecache/og_image_social_share_1200x630/images/story/2012/andre-francois-mckenzie-auhr4gcqcce-unsplash.jpg?width=720", + "amp_url": "https://m.uk.investing.com/news/stock-market-news/markets-are-underestimating-fed-cuts-ubs-3559968?ampMode=1", + "article_url": "https://uk.investing.com/news/stock-market-news/markets-are-underestimating-fed-cuts-ubs-3559968", + "author": "Sam Boughedda", + "description": "UBS analysts warn that markets are underestimating the extent of future interest rate cuts by the Federal Reserve, as the weakening economy is likely to justify more cuts than currently anticipated.", + "id": "8ec638777ca03b553ae516761c2a22ba2fdd2f37befae3ab6fdab74e9e5193eb", + "image_url": "https://i-invdn-com.investing.com/news/LYNXNPEC4I0AL_L.jpg", + "insights": [ + { + "sentiment": "positive", + "sentiment_reasoning": "UBS analysts are providing a bullish outlook on the extent of future Federal Reserve rate cuts, suggesting that markets are underestimating the number of cuts that will occur.", + "ticker": "UBS" + } + ], "keywords": [ - "Sector ETFs", - "Penny Stocks", - "Cryptocurrency", - "Small Cap", - "Markets", - "Trading Ideas", - "ETFs" + "Federal Reserve", + "interest rates", + "economic data" ], - "published_utc": "2021-04-26T02:33:17Z", + "published_utc": "2024-06-24T18:33:53Z", "publisher": { - "favicon_url": "https://s3.polygon.io/public/public/assets/news/favicons/benzinga.ico", - "homepage_url": "https://www.benzinga.com/", - "logo_url": "https://s3.polygon.io/public/public/assets/news/logos/benzinga.svg", - "name": "Benzinga" + "favicon_url": "https://s3.polygon.io/public/assets/news/favicons/investing.ico", + "homepage_url": "https://www.investing.com/", + "logo_url": "https://s3.polygon.io/public/assets/news/logos/investing.png", + "name": "Investing.com" }, "tickers": [ - "DOCU", - "DDD", - "NIU", - "ARKF", - "NVDA", - "SKLZ", - "PCAR", - "MASS", - "PSTI", - "SPFR", - "TREE", - "PHR", - "IRDM", - "BEAM", - "ARKW", - "ARKK", - "ARKG", - "PSTG", - "SQ", - "IONS", - "SYRS" + "UBS" ], - "title": "Cathie Wood Adds More Coinbase, Skillz, Trims Square" + "title": "Markets are underestimating Fed cuts: UBS By Investing.com - Investing.com UK" } ], "status": "OK" @@ -18587,6 +18570,32 @@ "description": "The article's image URL.", "type": "string" }, + "insights": { + "description": "The insights related to the article.", + "items": { + "properties": { + "sentiment": { + "description": "The sentiment of the insight.", + "type": "string" + }, + "sentiment_reasoning": { + "description": "The reasoning behind the sentiment.", + "type": "string" + }, + "ticker": { + "description": "The ticker symbol associated with the insight.", + "type": "string" + } + }, + "required": [ + "ticker", + "sentiment", + "sentiment_reasoning" + ], + "type": "object" + }, + "type": "array" + }, "keywords": { "description": "The keywords associated with the article (which will vary depending on\nthe publishing source).", "items": { @@ -18667,7 +18676,7 @@ } }, "text/csv": { - "example": "id,publisher_name,publisher_homepage_url,publisher_logo_url,publisher_favicon_url,title,author,published_utc,article_url,tickers,amp_url,image_url,description,keywords\nnJsSJJdwViHZcw5367rZi7_qkXLfMzacXBfpv-vD9UA,Benzinga,https://www.benzinga.com/,https://s3.polygon.io/public/public/assets/news/logos/benzinga.svg,https://s3.polygon.io/public/public/assets/news/favicons/benzinga.ico,\"Cathie Wood Adds More Coinbase, Skillz, Trims Square\",Rachit Vats,2021-04-26T02:33:17Z,https://www.benzinga.com/markets/cryptocurrency/21/04/20784086/cathie-wood-adds-more-coinbase-skillz-trims-square,\"DOCU,DDD,NIU,ARKF,NVDA,SKLZ,PCAR,MASS,PSTI,SPFR,TREE,PHR,IRDM,BEAM,ARKW,ARKK,ARKG,PSTG,SQ,IONS,SYRS\",https://amp.benzinga.com/amp/content/20784086,https://cdn2.benzinga.com/files/imagecache/og_image_social_share_1200x630/images/story/2012/andre-francois-mckenzie-auhr4gcqcce-unsplash.jpg?width=720,\"

Cathie Wood-led Ark Investment Management on Friday snapped up another 221,167 shares of the cryptocurrency exchange Coinbase Global Inc (NASDAQ COIN) worth about $64.49 million on the stock’s Friday’s dip and also its fourth-straight loss.

The investment firm’s Ark Innovation ETF (NYSE ARKK) bought the shares of the company that closed 0.63% lower at $291.60 on Friday, giving the cryptocurrency exchange a market cap of $58.09 billion. Coinbase’s market cap has dropped from $85.8 billion on its blockbuster listing earlier this month.

The New York-based company also added another 3,873 shares of the mobile gaming company Skillz Inc (NYSE SKLZ), just a day after snapping 1.2 million shares of the stock.

ARKK bought the shares of the company which closed ...

Full story available on Benzinga.com

\",\"Sector ETFs,Penny Stocks,Cryptocurrency,Small Cap,Markets,Trading Ideas,ETFs\"\n", + "example": "id,publisher_name,publisher_homepage_url,publisher_logo_url,publisher_favicon_url,title,author,published_utc,article_url,ticker,amp_url,image_url,description,keywords,sentiment,sentiment_reasoning\n8ec638777ca03b553ae516761c2a22ba2fdd2f37befae3ab6fdab74e9e5193eb,Investing.com,https://www.investing.com/,https://s3.polygon.io/public/assets/news/logos/investing.png,https://s3.polygon.io/public/assets/news/favicons/investing.ico,Markets are underestimating Fed cuts: UBS By Investing.com - Investing.com UK,Sam Boughedda,1719254033000000000,https://uk.investing.com/news/stock-market-news/markets-are-underestimating-fed-cuts-ubs-3559968,UBS,https://m.uk.investing.com/news/stock-market-news/markets-are-underestimating-fed-cuts-ubs-3559968?ampMode=1,https://i-invdn-com.investing.com/news/LYNXNPEC4I0AL_L.jpg,\"UBS analysts warn that markets are underestimating the extent of future interest rate cuts by the Federal Reserve, as the weakening economy is likely to justify more cuts than currently anticipated.\",\"Federal Reserve,interest rates,economic data\",positive,\"UBS analysts are providing a bullish outlook on the extent of future Federal Reserve rate cuts, suggesting that markets are underestimating the number of cuts that will occur.\"\n", "schema": { "type": "string" } @@ -22864,11 +22873,11 @@ } }, { - "description": "Limit the number of results returned, default is 10 and max is 50000.", + "description": "Limit the number of results returned, default is 1000 and max is 50000.", "in": "query", "name": "limit", "schema": { - "default": 10, + "default": 1000, "example": 10, "maximum": 50000, "minimum": 1, @@ -22993,7 +23002,7 @@ }, "x-polygon-paginate": { "limit": { - "default": 10, + "default": 1000, "example": 10, "max": 50000 }, @@ -23091,11 +23100,11 @@ } }, { - "description": "Limit the number of results returned, default is 10 and max is 50000.", + "description": "Limit the number of results returned, default is 1000 and max is 50000.", "in": "query", "name": "limit", "schema": { - "default": 10, + "default": 1000, "example": 10, "maximum": 50000, "minimum": 1, @@ -23242,7 +23251,7 @@ }, "x-polygon-paginate": { "limit": { - "default": 10, + "default": 1000, "example": 10, "max": 50000 }, @@ -23333,11 +23342,11 @@ } }, { - "description": "Limit the number of results returned, default is 10 and max is 50000.", + "description": "Limit the number of results returned, default is 1000 and max is 50000.", "in": "query", "name": "limit", "schema": { - "default": 10, + "default": 1000, "example": 10, "maximum": 50000, "minimum": 1, @@ -23545,7 +23554,7 @@ }, "x-polygon-paginate": { "limit": { - "default": 10, + "default": 1000, "example": 10, "max": 50000 }, @@ -29071,11 +29080,11 @@ } }, { - "description": "Limit the number of results returned, default is 10 and max is 50000.", + "description": "Limit the number of results returned, default is 1000 and max is 50000.", "in": "query", "name": "limit", "schema": { - "default": 10, + "default": 1000, "example": 10, "maximum": 50000, "minimum": 1, @@ -29221,7 +29230,7 @@ }, "x-polygon-paginate": { "limit": { - "default": 10, + "default": 1000, "example": 10, "max": 50000 }, @@ -29319,11 +29328,11 @@ } }, { - "description": "Limit the number of results returned, default is 10 and max is 50000.", + "description": "Limit the number of results returned, default is 1000 and max is 50000.", "in": "query", "name": "limit", "schema": { - "default": 10, + "default": 1000, "example": 10, "maximum": 50000, "minimum": 1, @@ -29475,7 +29484,7 @@ }, "x-polygon-paginate": { "limit": { - "default": 10, + "default": 1000, "example": 10, "max": 50000 }, @@ -29566,11 +29575,11 @@ } }, { - "description": "Limit the number of results returned, default is 10 and max is 50000.", + "description": "Limit the number of results returned, default is 1000 and max is 50000.", "in": "query", "name": "limit", "schema": { - "default": 10, + "default": 1000, "example": 10, "maximum": 50000, "minimum": 1, @@ -29766,7 +29775,7 @@ }, "x-polygon-paginate": { "limit": { - "default": 10, + "default": 1000, "example": 10, "max": 50000 }, diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index 9a2484ac..2554927e 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -32,6 +32,18 @@ def from_dict(d): return Branding(**d) +@modelclass +class Insight: + "Contains the insights related to the article." + sentiment: Optional[str] = None + sentiment_reasoning: Optional[str] = None + ticker: Optional[str] = None + + @staticmethod + def from_dict(d): + return Insight(**d) + + @modelclass class Publisher: "Contains publisher data for ticker news." @@ -152,6 +164,7 @@ class TickerNews: description: Optional[str] = None id: Optional[str] = None image_url: Optional[str] = None + insights: Optional[List[Insight]] = None keywords: Optional[List[str]] = None published_utc: Optional[str] = None publisher: Optional[Publisher] = None @@ -167,6 +180,11 @@ def from_dict(d): description=d.get("description", None), id=d.get("id", None), image_url=d.get("image_url", None), + insights=( + [Insight.from_dict(insight) for insight in d["insights"]] + if "insights" in d + else None + ), keywords=d.get("keywords", None), published_utc=d.get("published_utc", None), publisher=( From 48519710e59ec567a7723214f4692245e104cfb0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 11:55:03 -0700 Subject: [PATCH 38/88] Bump mypy from 1.10.1 to 1.11.0 (#713) Bumps [mypy](https://github.com/python/mypy) from 1.10.1 to 1.11.0. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.10.1...v1.11) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 70 +++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5c87ae90..4b43ff21 100644 --- a/poetry.lock +++ b/poetry.lock @@ -312,44 +312,44 @@ files = [ [[package]] name = "mypy" -version = "1.10.1" +version = "1.11.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e36f229acfe250dc660790840916eb49726c928e8ce10fbdf90715090fe4ae02"}, - {file = "mypy-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:51a46974340baaa4145363b9e051812a2446cf583dfaeba124af966fa44593f7"}, - {file = "mypy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:901c89c2d67bba57aaaca91ccdb659aa3a312de67f23b9dfb059727cce2e2e0a"}, - {file = "mypy-1.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0cd62192a4a32b77ceb31272d9e74d23cd88c8060c34d1d3622db3267679a5d9"}, - {file = "mypy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:a2cbc68cb9e943ac0814c13e2452d2046c2f2b23ff0278e26599224cf164e78d"}, - {file = "mypy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bd6f629b67bb43dc0d9211ee98b96d8dabc97b1ad38b9b25f5e4c4d7569a0c6a"}, - {file = "mypy-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a1bbb3a6f5ff319d2b9d40b4080d46cd639abe3516d5a62c070cf0114a457d84"}, - {file = "mypy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8edd4e9bbbc9d7b79502eb9592cab808585516ae1bcc1446eb9122656c6066f"}, - {file = "mypy-1.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6166a88b15f1759f94a46fa474c7b1b05d134b1b61fca627dd7335454cc9aa6b"}, - {file = "mypy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:5bb9cd11c01c8606a9d0b83ffa91d0b236a0e91bc4126d9ba9ce62906ada868e"}, - {file = "mypy-1.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d8681909f7b44d0b7b86e653ca152d6dff0eb5eb41694e163c6092124f8246d7"}, - {file = "mypy-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:378c03f53f10bbdd55ca94e46ec3ba255279706a6aacaecac52ad248f98205d3"}, - {file = "mypy-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bacf8f3a3d7d849f40ca6caea5c055122efe70e81480c8328ad29c55c69e93e"}, - {file = "mypy-1.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:701b5f71413f1e9855566a34d6e9d12624e9e0a8818a5704d74d6b0402e66c04"}, - {file = "mypy-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c4c2992f6ea46ff7fce0072642cfb62af7a2484efe69017ed8b095f7b39ef31"}, - {file = "mypy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:604282c886497645ffb87b8f35a57ec773a4a2721161e709a4422c1636ddde5c"}, - {file = "mypy-1.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37fd87cab83f09842653f08de066ee68f1182b9b5282e4634cdb4b407266bade"}, - {file = "mypy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8addf6313777dbb92e9564c5d32ec122bf2c6c39d683ea64de6a1fd98b90fe37"}, - {file = "mypy-1.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5cc3ca0a244eb9a5249c7c583ad9a7e881aa5d7b73c35652296ddcdb33b2b9c7"}, - {file = "mypy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:1b3a2ffce52cc4dbaeee4df762f20a2905aa171ef157b82192f2e2f368eec05d"}, - {file = "mypy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe85ed6836165d52ae8b88f99527d3d1b2362e0cb90b005409b8bed90e9059b3"}, - {file = "mypy-1.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2ae450d60d7d020d67ab440c6e3fae375809988119817214440033f26ddf7bf"}, - {file = "mypy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be84c06e6abd72f960ba9a71561c14137a583093ffcf9bbfaf5e613d63fa531"}, - {file = "mypy-1.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2189ff1e39db399f08205e22a797383613ce1cb0cb3b13d8bcf0170e45b96cc3"}, - {file = "mypy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:97a131ee36ac37ce9581f4220311247ab6cba896b4395b9c87af0675a13a755f"}, - {file = "mypy-1.10.1-py3-none-any.whl", hash = "sha256:71d8ac0b906354ebda8ef1673e5fde785936ac1f29ff6987c7483cfbd5a4235a"}, - {file = "mypy-1.10.1.tar.gz", hash = "sha256:1f8f492d7db9e3593ef42d4f115f04e556130f2819ad33ab84551403e97dd4c0"}, + {file = "mypy-1.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3824187c99b893f90c845bab405a585d1ced4ff55421fdf5c84cb7710995229"}, + {file = "mypy-1.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:96f8dbc2c85046c81bcddc246232d500ad729cb720da4e20fce3b542cab91287"}, + {file = "mypy-1.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a5d8d8dd8613a3e2be3eae829ee891b6b2de6302f24766ff06cb2875f5be9c6"}, + {file = "mypy-1.11.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:72596a79bbfb195fd41405cffa18210af3811beb91ff946dbcb7368240eed6be"}, + {file = "mypy-1.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:35ce88b8ed3a759634cb4eb646d002c4cef0a38f20565ee82b5023558eb90c00"}, + {file = "mypy-1.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:98790025861cb2c3db8c2f5ad10fc8c336ed2a55f4daf1b8b3f877826b6ff2eb"}, + {file = "mypy-1.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:25bcfa75b9b5a5f8d67147a54ea97ed63a653995a82798221cca2a315c0238c1"}, + {file = "mypy-1.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bea2a0e71c2a375c9fa0ede3d98324214d67b3cbbfcbd55ac8f750f85a414e3"}, + {file = "mypy-1.11.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d2b3d36baac48e40e3064d2901f2fbd2a2d6880ec6ce6358825c85031d7c0d4d"}, + {file = "mypy-1.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:d8e2e43977f0e09f149ea69fd0556623919f816764e26d74da0c8a7b48f3e18a"}, + {file = "mypy-1.11.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d44c1e44a8be986b54b09f15f2c1a66368eb43861b4e82573026e04c48a9e20"}, + {file = "mypy-1.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cea3d0fb69637944dd321f41bc896e11d0fb0b0aa531d887a6da70f6e7473aba"}, + {file = "mypy-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a83ec98ae12d51c252be61521aa5731f5512231d0b738b4cb2498344f0b840cd"}, + {file = "mypy-1.11.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c7b73a856522417beb78e0fb6d33ef89474e7a622db2653bc1285af36e2e3e3d"}, + {file = "mypy-1.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:f2268d9fcd9686b61ab64f077be7ffbc6fbcdfb4103e5dd0cc5eaab53a8886c2"}, + {file = "mypy-1.11.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:940bfff7283c267ae6522ef926a7887305945f716a7704d3344d6d07f02df850"}, + {file = "mypy-1.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:14f9294528b5f5cf96c721f231c9f5b2733164e02c1c018ed1a0eff8a18005ac"}, + {file = "mypy-1.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7b54c27783991399046837df5c7c9d325d921394757d09dbcbf96aee4649fe9"}, + {file = "mypy-1.11.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:65f190a6349dec29c8d1a1cd4aa71284177aee5949e0502e6379b42873eddbe7"}, + {file = "mypy-1.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:dbe286303241fea8c2ea5466f6e0e6a046a135a7e7609167b07fd4e7baf151bf"}, + {file = "mypy-1.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:104e9c1620c2675420abd1f6c44bab7dd33cc85aea751c985006e83dcd001095"}, + {file = "mypy-1.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f006e955718ecd8d159cee9932b64fba8f86ee6f7728ca3ac66c3a54b0062abe"}, + {file = "mypy-1.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:becc9111ca572b04e7e77131bc708480cc88a911adf3d0239f974c034b78085c"}, + {file = "mypy-1.11.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6801319fe76c3f3a3833f2b5af7bd2c17bb93c00026a2a1b924e6762f5b19e13"}, + {file = "mypy-1.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:c1a184c64521dc549324ec6ef7cbaa6b351912be9cb5edb803c2808a0d7e85ac"}, + {file = "mypy-1.11.0-py3-none-any.whl", hash = "sha256:56913ec8c7638b0091ef4da6fcc9136896914a9d60d54670a75880c3e5b99ace"}, + {file = "mypy-1.11.0.tar.gz", hash = "sha256:93743608c7348772fdc717af4aeee1997293a1ad04bc0ea6efa15bf65385c538"}, ] [package.dependencies] mypy-extensions = ">=1.0.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = ">=4.1.0" +typing-extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] @@ -827,13 +827,13 @@ files = [ [[package]] name = "typing-extensions" -version = "4.4.0" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, - {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] @@ -963,4 +963,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "e3fa63991d39989af47ef9380ec497c17c30d57bcf4a6c59d8e2146d22d27828" +content-hash = "7219da9017d63f148c248f80a66242a67ef5a0fbb826be70332651970a6a7e35" diff --git a/pyproject.toml b/pyproject.toml index dffc7ae4..f5f940f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ certifi = ">=2022.5.18,<2025.0.0" [tool.poetry.dev-dependencies] black = "^24.4.2" -mypy = "^1.10" +mypy = "^1.11" types-urllib3 = "^1.26.25" Sphinx = "^7.1.2" sphinx-rtd-theme = "^2.0.0" From c2f955ecd3a9878ac0166a997b97ec5e73d91f0a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 11:59:18 -0700 Subject: [PATCH 39/88] Bump types-setuptools from 70.3.0.20240710 to 71.0.0.20240722 (#714) Bumps [types-setuptools](https://github.com/python/typeshed) from 70.3.0.20240710 to 71.0.0.20240722. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 4b43ff21..b258dbe8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -805,13 +805,13 @@ files = [ [[package]] name = "types-setuptools" -version = "70.3.0.20240710" +version = "71.0.0.20240722" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-70.3.0.20240710.tar.gz", hash = "sha256:842cbf399812d2b65042c9d6ff35113bbf282dee38794779aa1f94e597bafc35"}, - {file = "types_setuptools-70.3.0.20240710-py3-none-any.whl", hash = "sha256:bd0db2a4b9f2c49ac5564be4e0fb3125c4c46b1f73eafdcbceffa5b005cceca4"}, + {file = "types-setuptools-71.0.0.20240722.tar.gz", hash = "sha256:8f1fd5281945ed8f5a896f05dd50bc31917d6e2487ff9508f4bac522d13ad395"}, + {file = "types_setuptools-71.0.0.20240722-py3-none-any.whl", hash = "sha256:04a383bd1a2dcdb6a85397516ce2d7b46617d89f1d758f686d0d9069943d9811"}, ] [[package]] @@ -963,4 +963,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "7219da9017d63f148c248f80a66242a67ef5a0fbb826be70332651970a6a7e35" +content-hash = "0d5a56908d1fdb653867db55416e55c841b5f5ac94f8607b51dddc177115d6d1" diff --git a/pyproject.toml b/pyproject.toml index f5f940f3..931d9805 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^2.0.0" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^70.3.0" +types-setuptools = "^71.0.0" pook = "^2.0.0" orjson = "^3.10.6" From 5a4e2041d5fde4a7536ce792634b66f805b54f62 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Mon, 29 Jul 2024 07:52:22 -0700 Subject: [PATCH 40/88] Add related companies demo (#717) * Added related companies example * Added image to readme --- examples/tools/related-companies/data.json | 1 + examples/tools/related-companies/index.html | 30 +++++++++++++ examples/tools/related-companies/readme.md | 36 ++++++++++++++++ .../related-companies-demo.py | 40 ++++++++++++++++++ .../related-companies/related-companies.png | Bin 0 -> 193270 bytes 5 files changed, 107 insertions(+) create mode 100644 examples/tools/related-companies/data.json create mode 100644 examples/tools/related-companies/index.html create mode 100644 examples/tools/related-companies/readme.md create mode 100644 examples/tools/related-companies/related-companies-demo.py create mode 100644 examples/tools/related-companies/related-companies.png diff --git a/examples/tools/related-companies/data.json b/examples/tools/related-companies/data.json new file mode 100644 index 00000000..2b63ea05 --- /dev/null +++ b/examples/tools/related-companies/data.json @@ -0,0 +1 @@ +{"nodes": [{"id": 1, "label": "MSFT"}, {"id": 2, "label": "GOOGL"}, {"id": 3, "label": "NVDA"}, {"id": 4, "label": "AMZN"}, {"id": 5, "label": "GOOG"}, {"id": 6, "label": "META"}, {"id": 7, "label": "TSLA"}, {"id": 8, "label": "AAPL"}, {"id": 9, "label": "CRM"}, {"id": 10, "label": "ORCL"}, {"id": 11, "label": "AMD"}, {"id": 12, "label": "NFLX"}, {"id": 13, "label": "WMT"}, {"id": 14, "label": "DIS"}, {"id": 15, "label": "SNAP"}, {"id": 16, "label": "SHOP"}, {"id": 17, "label": "INTC"}, {"id": 18, "label": "ANET"}, {"id": 19, "label": "RIVN"}, {"id": 20, "label": "GM"}, {"id": 21, "label": "F"}, {"id": 22, "label": "LCID"}, {"id": 23, "label": "WBD"}, {"id": 24, "label": "CMCSA"}, {"id": 25, "label": "PARA"}, {"id": 26, "label": "T"}, {"id": 27, "label": "ROKU"}], "edges": [{"from": 1, "to": 2}, {"from": 1, "to": 3}, {"from": 1, "to": 4}, {"from": 1, "to": 5}, {"from": 1, "to": 6}, {"from": 1, "to": 7}, {"from": 1, "to": 8}, {"from": 1, "to": 9}, {"from": 1, "to": 10}, {"from": 1, "to": 11}, {"from": 4, "to": 1}, {"from": 4, "to": 2}, {"from": 4, "to": 5}, {"from": 4, "to": 8}, {"from": 4, "to": 7}, {"from": 4, "to": 3}, {"from": 4, "to": 6}, {"from": 4, "to": 12}, {"from": 4, "to": 13}, {"from": 4, "to": 14}, {"from": 6, "to": 5}, {"from": 6, "to": 2}, {"from": 6, "to": 1}, {"from": 6, "to": 4}, {"from": 6, "to": 8}, {"from": 6, "to": 7}, {"from": 6, "to": 3}, {"from": 6, "to": 15}, {"from": 6, "to": 12}, {"from": 6, "to": 11}, {"from": 8, "to": 1}, {"from": 8, "to": 2}, {"from": 8, "to": 4}, {"from": 8, "to": 5}, {"from": 8, "to": 7}, {"from": 8, "to": 3}, {"from": 8, "to": 6}, {"from": 8, "to": 12}, {"from": 8, "to": 14}, {"from": 8, "to": 11}, {"from": 5, "to": 2}, {"from": 5, "to": 1}, {"from": 5, "to": 6}, {"from": 5, "to": 4}, {"from": 5, "to": 8}, {"from": 5, "to": 7}, {"from": 5, "to": 3}, {"from": 5, "to": 15}, {"from": 5, "to": 12}, {"from": 5, "to": 16}, {"from": 3, "to": 11}, {"from": 3, "to": 6}, {"from": 3, "to": 2}, {"from": 3, "to": 7}, {"from": 3, "to": 5}, {"from": 3, "to": 1}, {"from": 3, "to": 8}, {"from": 3, "to": 4}, {"from": 3, "to": 17}, {"from": 3, "to": 18}, {"from": 7, "to": 19}, {"from": 7, "to": 2}, {"from": 7, "to": 4}, {"from": 7, "to": 20}, {"from": 7, "to": 21}, {"from": 7, "to": 22}, {"from": 7, "to": 5}, {"from": 7, "to": 6}, {"from": 7, "to": 8}, {"from": 7, "to": 3}, {"from": 14, "to": 12}, {"from": 14, "to": 23}, {"from": 14, "to": 4}, {"from": 14, "to": 24}, {"from": 14, "to": 25}, {"from": 14, "to": 8}, {"from": 14, "to": 2}, {"from": 14, "to": 26}, {"from": 14, "to": 5}, {"from": 14, "to": 27}]} \ No newline at end of file diff --git a/examples/tools/related-companies/index.html b/examples/tools/related-companies/index.html new file mode 100644 index 00000000..1b5ae182 --- /dev/null +++ b/examples/tools/related-companies/index.html @@ -0,0 +1,30 @@ + + + + Vis Network | Related Companies + + + + + +
+ + diff --git a/examples/tools/related-companies/readme.md b/examples/tools/related-companies/readme.md new file mode 100644 index 00000000..9f107550 --- /dev/null +++ b/examples/tools/related-companies/readme.md @@ -0,0 +1,36 @@ +# See Connections with the Related Companies API + +This repository contains the Python script and HTML file used in our tutorial to demonstrate how to identify and visualize relationships between companies using Polygon.io's Related Companies API. The tutorial showcases how to fetch related company data and create a dynamic network graph using Python and vis.js, providing insights into the interconnected corporate landscape. + +![Related Companies](./related-companies.png) + +Please see the [tutorial](https://polygon.io/blog/related-companies-api) for more details. + +### Prerequisites + +- Python 3.8+ +- Have Polygon.io's [python client](https://github.com/polygon-io/client-python) installed +- An active Polygon.io account with an API key + +### Repository Contents + +- `related-companies-demo.py`: Python script to fetch and process data from the Related Companies API. +- `index.html`: HTML file for visualizing the data as a network graph using vis.js. + +### Running the Example + +To run the Python script, ensure you have Python installed and your API key ready. Execute the following command: + +``` +python related-companies-demo.py +``` + +The script will generate a `data.json` file, which contains the nodes and edges for the network graph. + +To visualize the relationships: + +1. Take the `nodes` and `edges` from the `data.json` file and replace them in the `index.html` file +2. Open `index.html` in your web browser. +3. The web page should display the network graph. + +For a complete step-by-step guide on setting up and exploring the capabilities of the Related Companies API, refer to our detailed [tutorial](https://polygon.io/blog/related-companies-api). \ No newline at end of file diff --git a/examples/tools/related-companies/related-companies-demo.py b/examples/tools/related-companies/related-companies-demo.py new file mode 100644 index 00000000..221d5f0f --- /dev/null +++ b/examples/tools/related-companies/related-companies-demo.py @@ -0,0 +1,40 @@ +from polygon import RESTClient +import json + + +def get_related_tickers(): + client = RESTClient(trace=True) + + # Fetch a limited list of tickers to keep the example manageable + main_tickers = ["MSFT", "AMZN", "META", "AAPL", "GOOG", "NVDA", "TSLA", "DIS"] + + # Prepare data structures for nodes and edges + nodes = [] + edges = [] + id_map = {} + current_id = 1 + + # Iterate over each main ticker and find related tickers + for ticker in main_tickers: + if ticker not in id_map: + id_map[ticker] = current_id + nodes.append({"id": current_id, "label": ticker}) + current_id += 1 + + related_companies = client.get_related_companies(ticker) + for company in related_companies: + related_ticker = company.ticker + if related_ticker not in id_map: + id_map[related_ticker] = current_id + nodes.append({"id": current_id, "label": related_ticker}) + current_id += 1 + + edges.append({"from": id_map[ticker], "to": id_map[related_ticker]}) + + # Save the nodes and edges to a JSON file for web visualization + with open("data.json", "w") as f: + json.dump({"nodes": nodes, "edges": edges}, f) + + +if __name__ == "__main__": + get_related_tickers() diff --git a/examples/tools/related-companies/related-companies.png b/examples/tools/related-companies/related-companies.png new file mode 100644 index 0000000000000000000000000000000000000000..ac9b14c73a1e281835da8e68ee7b9e9dbe13ef23 GIT binary patch literal 193270 zcmd>m^;?u(*ETI7f+BE(#7K&C!yqNn-JQ}g)X)tgD&5jZcXy*8-Q6hNNH^a#fcNtr z@B91*-w$$lP3*n)>UFNQ=d+xQC?+}~IvgAvrnuNU1vogQIpAL=DhlvQB6%@292^3x znUWe*O>O)L;$(-p8jg0jjETLq4itp`=0CG&Np>G&rXS6hXSmW;L?;>yRjsyN* zJKcZde{c!L{JZY~+y}(S_^%v+hkrG}2m*-T4v@3VN&Xg~Bk=YLqHp1f`iVB+-~`~r z-w7%?!*9<$N>mzaZ25D0B4Ld;&5-&DA&t%#7Z=0a;2`-kqex0y2tAdEG%FQzsl_(B zIUS?9L7Mz~K_$5jx>ujrI~hQD&%?^f8yha0m+8ul9G#4JduI=LQs`Lix40MVo%(K0 z6AxuA%D%{93&6o6{hvQA%s$YLqBj5k^TyqWTkt^ZKmEMn5Kuw?`;Yez1f)44loh-G z`xfwVZ0Hiff8S3Z-WT%3&yM^5k^=0ATKDJi|Jez)`(g>4AZLJJEzy6W1P&m?8Rfqo zz(&nGHQ`69)|3BoayWpHH;Dh0dM-MF!9IOChJgQeaDb5H|GFF!5x}igrdP2-|Bcb! zsV@fp>v9NBFtDNa|3vk?{NF5weOzEL*yO)02L~U3j9SP2xO?Tl9vl!G>wjC$`~O?9 z2~Z*Zm9;UZqLCM$-g^JUYEpyXe>e@&Lokz8K~qaGV|Y-xcQmQ3 zm3gk=munvk+q2pGOz@BUB1FU^fBvK*80C@Vo6%q-Fe5Y4o!}s4-3fz4Shp``ktQuP z1atn~7m(+fHlUCTZeLICg^iu=jWRudQ6qyFJJEfaGS<1sH^oxKC5v+M1@e4mm|Z!- zB-UTUIpSYg|;|cD=B6sZ^yX&+xjw?EHtcd6@F<+@zn}zr;nA+FCVJ zs5evp!hCr-fUl)%BO!W7xzRPMpHBgk!5 zdkYV$DpfSQN)Y0h=oq;e5J`|%|4D1|B)s+iMWpnfZH<9qpp4-XEDI#E%BV zkRNV;T~iAh;38yR*;~_L(!N4Z=f0gr@aNmFT&-lChf? zBDsb5+$|a@)_TS3BBlN&Ux`_nRH^Wcx+n`O@r7k=Uj6l#C5nIpl0~?Ggnw4Ekr`$= zIZly|lI3_^RTR-&W>-&CtNH{D4-BWNrNZdcsPQt|L7HWpuvX1F*dUN&5O3pv@M^Z9 zQD@bQD1x=%sf}uc5yvy!nWqnK-iHHF#ObgS_x$ zRbEZ>=1tvG&15sfAY5(p!Y;>-{Fi8BY+as0>7+w=J65qpxfNO0D%}J)7|Y!_80ox8 zOaHFlf`$#n(25<=gK^9Ugx;&GO+7+7LxxX0GhyGy=~Jyd@nm0X4o6u(iHxW$M*jsn z*F>qjm3HCQ!GVN&L!ClDcSXY0S#2nhOELj8+r+ktJ(;UIo@lKayzRTXZ)B9`5QTq6hORTg;_)Q^dr4n+*PH` z)D4vycr;s4fAS)cF;q>Ex^I}EA`OiRV195u0%ZEpQsBYP)2KE6GWFefZGsBOx5j^u z9{>mqysS@sPxw6E*FWP=rc`!zI6h2xe&2VmwQ_vr9=W%W!fc;Fca||O;XO3RPCom6 zi289)xt|Z~+D_Pv?#q3={}>Hw6=1)5r~HMYFkiY~+Okvr)^4&BVJP*Ju7tR4Q^8e* zNKA~nIue2$^n+%x?_-|D)z#G}+tEhU8_pIEg|l6sI60kg9UeS_4+T0lRFaIN`t6-- z2E`#@(dUGjllHgK5vYKi)JBZ2bs#Ra!z8~r%uAenv*M+X;Vs%`d}TMU=Xooz{yL|1 zCGS+t>~}=>A<_F32})nx<#uTim9T+KT&rq?jC0*kHKRTLd|DKL*XA0PbA)9?Qp`-)%~U#GCod0>P)w+g`s#H*2wzB^^2f~26HK)*xiZcwNGdYahf;Ibtnb9yfpfI(_bHytv}g z16#rPp!M7gm(;$hY(m1DoCVa!!UXiBKwj{kiT&)_-KD(39try(3{p|6h zhaA(}8b}_`t1Qg^fvp3$z4#BQA15xZttDvaHh~NmQBAoE;ONEtmbZss7uv`|=$d?>s;wkS{MdF=O7b z1~o#!b>BEv;$y&zLUGV*3*W;JPxey!>L9Hf5RH2y6IcXDL%w+mR7)^P$Rb=~bw>e774M{39S7aC>)B-Y3;I zfi0~+$_0DVOeNb53{$r@Xh^};eANNLF@=5 zx6OIEf=fmB)>Wen>LXl_N%}QD&8=HJ_QGPt``bM6#`yCVd0lwRvO_FB)qA~xgO>#g zr^9!g^5XZD*HNXy=WGYDP3;HYisH~~D^g}l(`^$z7OfQleew~RSX6v^|3PfAJix1D z*x9q*KR;u{j&hhQ8;;MAW2O0@m7mQwKpgmv=*kcNl*DI46u0xsL7p?iug~`Qo(eRv zLqPPl>-rx(QTuZNc8A|$h!1>Vt}Q@dAY!QEeN?td2l&HkG?%5psnS;p-Z+}N zKIygHcFnCDoD@_)IFGqdn&aCzz5Xt7U^`f{ov{%6;yxk*&NCMqv>t=*u>1L5m3)y; zNTas49OkOFb7IBY=dtFOkzQ^1^BwS*AVx~OY+bm~`kQKMkpa~iC9xp;gOC&!BWTVK z=BFj788`AQ`YvBl#Jakh=laS_(`s@+j!$#i_8*Bxy8p`tpH$!w7!tB0GB9TO2%t&5 z>W^sHhU$hmYU=3Fn2^l&;a|rwNIO=k>#}8G1fMy-4>tX%{g9ZUg0PVQD-c{an!eLG zY%!m}?B|_sTUW7i`hPYh&Zm^DspXikGEh>XN3linYo}#U>F7kh(!ssH437u@>n%_Y z$jcag{=r`{`UrhA5%(Dosc)=rlE@<7E^d)_G-k@uT2;F(E@z_t$Le@O_L+v?gA_`E zpctqea(K^xeeV{d@j4UI!r~JFX`bS=5R{S1S%wsi!ShxUu)&2q@_|g8*Te#=HnW$5 z7(>}OVaENgfDieCZC5KB_KQDzzJB&yhGT`28jV_T&K z4dNG-2qunNf=St`I96Q64(mTmrGPPY(`x$83t+4HbPVj#%+S7gLolgsOy9zvDjKh4 z>)V_a{gFQ?mRR%EUg5FsFviGFPQE8y?R=PD<2erg4bl~OotBM04^=^i#^O$;Lz#_3 z5>Ob4`DIAH7m6&nXvh+-Jegq?Wf>VUylqvFFu_cX0odXSMs`USe`JDAm<7AJ;xg>oKByg1Zub_1$a4w|?3)iD{2=*Xo#*sGbq~%5Q!R|+Mn%!9X>pGJzNTbuWRgMGb?Zl^Hz+7Cr z%AS#V))vZiHx)&b5-GjnEqMIdGwI_$)?Rbh=3=YvTGZ(%Yju44Ssqtf8yqf2+w(rC zISf}BG7$INw^<=uB-Whun^$he))7E5Y@?i%^EV>}g*^uN+a_5o^6_7lb^2)fuJPAH3T}f8R{Cnh?x8oH;Skb-OoAGynX9zqc(=t9 zQi1oC>-wf}xZLey5JBQaxENuEx)CMLS1!7lP3l`J>Gf@&dIy!v-s>6-8F0&tplFf` z`1%vX?pM?(zh+WgIq5@$#}@kl*!jC0JLx-D!+}63rgkJ=7$o&e!=R_|sZyY7!1C;m zx~|NQXQ)g`&_l_W>NQy^t`0pCQ_vB{s_`CH$?EQ@0K9Ia4rIJ&%0Elj?Q6vb5|e@bcA%DIE3eM-B~J?m17Ye|l1Wgpv_ zdkTs6z3R<4ZZG2LINi0fsQ4YG1FOGLlk=9#Dv#~C*S4pSslYdhrHTu6Qy_zcs>KzF+9!EN;MPnYX#}PO! ziu$4NMJbER7{@QGGgnE5(nR@v@r#VBz_pF#o3}EG_gGpQmFd}45H9qSC~TvY1pWz1 zCziBb#5u)AgR;u1#Pc>2mIb!3FvAfnwb{p(pwivniNb41KP-y|JnxnbUBf~iID%znRM45S~N36UfM(H2K5r%ZI} zlVfB|6NZ(G?j^OBo%o^~w}t2^itboWt5B~bm>c!B5OME)LfD9*MdBv+sV>(>v}T>3 z{n?_;zP33G6&?{vvd5TFobqL(c8F<=rSQV8MTIBHWN%)lqYz@!CRyFJ4o21m~~A_ zA{rN}SyiO6`9gU9vR4DHNO{UBl&I9WL)_Rn(tY2^FVRb^Dbek@;*til@Uc81&l+!C zJ9@*4rbR<-&w*}FwdCn6n+uDcq69n01HhDW#q2nYJ#17o1pCh^{6BBHee%0cY{dKl zvsKEmmj%qWr2|1n`|6t5qD|Ak5^rp24aeF3;Ln@A0nHWPbg{6-s12;$h1ZSsM&0YJ z_2a1ao6|!&9XhcC627+kC6=`ZAM}Fj>g*jeD^GqsIp0I$HLOm~)ePPD!&EMFapUE$ zPV;bnK+$|C(AG)QXzmq`i_B&Y3>Vxwi?^qFn@`S|ZOX}g}D=nyrVaBYOsfvH;1 zRS|tdpt68yBxWUx-#n{ZWaGGM!Nlj&hLv%)jx~wuE_t^#B!)%Dr9j++3sLqH(|IM7 z*$OOC%-+b^*~bJP$0F*c!5{yo1K#yWES?s)PRgIB?-B%O`Nb1;0Pp%-xjK>amQiJ) z=)>)cyL5o?&QF$IrV_CQK~(Ce z4vm#MI*r>?Jlq5MArQ?Y+s=5tSqe_i;sE!x7QN#wEECH}FRw8WHOZiM-I@{CaLOMY z!vUS?Q!|$LyNXDInL2M zD+13jyK6vpw4l5T?Vz?*V=Hy5dhWUB|<^t^_)(HKWxw@vo|WAz)J zQAC)32TdXrY~XF*WFG?(^Cm|C7gks*Mh3|aGG2u!v3v<^*gtXP9**a5;%=@H`G$8c zmvnKmKGldAJH}G>>CkPr)Ytk{vz3z`M|4?I=)J})JQrp~qoNAs7Ux9wq#*af(tGrb zj8|%{93zSsk4X(FOa9p_qrl7Z{8e18Vi_w`I0P}|#8mzDkcQ;~say=9(=IFvIul84 z?bfTkWq;wp+}#KLg7N~|mRQ7KF>4;mFVO z@XgA~(6_{1(If6`e5z+C7^tUtQ9a(Js=1Z9y`=#Ip&7nvfsnbMt$S~nomxdVTs^kv zu5}U#Z8SihKf-zxOR|*&PA~~mg+)7fq$`S+BL)6rDl1sjR{+`gRpvN%F?ks=jHb4M zEP@L(bHGEsah z@^xc@-_G;|@${J%7E3h<*&?(yYqP|58{u=yv+3VO!T!ymCtq55ZmQIy%W?{2WQZo_ z?1Lxxi4wJjg?61Y-#%#y)2m(shoRqNMIxX%PWo>z?+6gbKg*i#KG^VK4>9l=($#o$ z+7-cLqWaSgy!HW&$dtZLmc^ebjH1zsz(#Ud+QTk^pjfs02Zp0F%c60efY-<43XzQ@ zKKuNsw!c6Cg*pHPM6}it!%`e-pIc2Oefsg;g(23Z0`^3_Xy&)H^Cl|UZ_I~|f4=&R zKln5!@=JmLKj%E*AFN zbE?TyGDBotEc}!&|E1b=xych9y5sFNUbTwOh{dttoH*>FBgJFl}v` zJZn{$`#16PSq9)M$tG?mSjFr9vZOIf`~r%lSvZGZXg-4~og=3nJMQ>MGYwA-QWz>M z-r!xdCh}Q(vGp8RK_2Jw9Kxe`>x`Xe6*0lTFP}d9QOe_<)K4G*GJjMiOA%NZzpl2( zY+;_uFuHS^hK9SFqWCf(WdFusd8XPr)@i|`S~}Lq*jPee|J!2%mUndyTjR#f5K~Lb zsIh!iNpm${^fXEC`Po0Qou ziO{@y6=u8ivnx+I->@Tun8o(@J6bp6nP%i7wbHkF`T0B7efUe#@8DVeV~=Oao;lPk zg{Zz>*$+o%aV@DXi*}rRWwCanaxz9>t<*J?{?&0d4)^k*wpIWVj>vc|7+8e*)jK40 z-))G4PqnTOzfY^&IQVLrnt!8&enQ(RiO9Z}nLgxvyL@0d-l8ZxnpU-HvWT?lddIql z(d%5YtFyD@)J#uykJ+gEdF{=`Rzm26A-WU)@yA5R1@@Dw%f03W&&Iu`%Z!Q&B|JJc z(A1Pw_PcrLh_qvgZ0I*ALuxu&T=z_^Vg@-$V)Kt!FR8(l_q5&l+igsMy)QU$kss4O zbOFSoVPUh&UKbWNe<0M!T`o6byqWb~&*N+Gs%k7s5J$zHo7&~M;8{2iNwn*x>BF5V zGYaGd@1)#bWfKd$07G+v{$c(;Uz|RDHPUML!Cfrcasmc(@(=#d!*c}U;bs-!}#3QLkTEwfHFwv;wCAfDIneM21G z^yWEUuH(%dwyNLzfHnX|pvPnHhdCz%2Dur~vplRPZ?)e?78CO5wZKie?KNsvmUXFjsbym@7#rl0Jul2?UcZh|l;y2- z@j6R5KV0i+M63#3_Vp~`NTPS~;OT5x(kc4^UZeAa zmEl1>OrOWJhpT-SIzqbxUN_}Lo{M~GBcwE+pX%{ePijl{Y-QwF&#)uEZ%*SGAmXQ! zjfpEbMYSNg7#=RX6# z9L6>`Hx1jr;40|oKpypwxGX#rf>_L>dOrBGvaIXTeM&tMFSrJ1eG zOw&`ntC#wp*wd`1rojaKqql-T1^9Z|2w}NMi!$Jgw<7Tm4h;~V;bX8d}i>2lYCwA}Oh;t6RlyT$mV zAP?rG)qKMgp9&%bi~p*G*tz~fmJY&Zy&Ywa5{D ziO9)Q=%GF12*+K%Pz}Ix_L8!4Sg`X5A(-6^&r(iT)VU|YzO(WK6-lcj7_ zQ%`lBlZ4g9u(*(mc6?p2)7?2ut@OM+i7Lw}vH%iS)4&~fQ{Ba3^7_i=AJeWq^wkw= z_InYM3}#P0#YeJDA-CTmfbE>7z_&rO$6ldBZ|`Vk#0V2>?P(O91I*UvIof&-Bk?tE zMnpIec|E}2w?n=xE}^bKKEu+T?q!w z+XM=zwA>h$+gcP7K@EH4)gT)f*_+G;ZK&Lr+vO|Y0!SjZiko%VP_xn(W%#e5Qx#^B zZ*I<(%FM@J$AKO4h~JE4pm|+y>F&%dxNa31uq2D*g%+J=`7{F7uFBEdI7Ue96!sh! zx68JJn7Z6#08hHX<|lzkXNGv>wqDr0#m&`unj*=-o5NnQSffiXB(TN+W=20UVf+<1 zrt-Rq^X$|bb%*n7;k~QQ5CiEob7YFe&A_T}J{&Gn=PLKo%6^l=FSChKTg@?Md}iA#vMgcC)I*;yV+N;rfMC3wZx&DITjP z0&7d3{&9Q1-1k04Mh<0e1B+M0u6o6EF1O|JA@Y-d!SWDPq_tapuJ7%_cUg)Os3+b$ zjyRQnCdxy5q5&l?HU$pTH996n#L}0F-T7q7WM-R_d|rlUhwXed!Fn6{oSiFsMiXB< zy)fPF>ShhUi(e?ab6{YX9_*nUSVVcUrF%Q=Sv*mkn;SmoIMa92%dd^IZpvF-r2TSI zlpWdjTeqGQ_kAN)07Qdeb-Q4v0O^swBc_2amEc)VQ_-;9z_zcjhO} z5v=0#xadq3^qa=4aj4vh{6gk-vN;y$t*QF*)_yk0-sznSN@#T;lMl?Wh$EcVSEJ z?|(cP0lBbu8zl)xT=>If_jlZ;0zfdvhy7&lG(h_~7l1ve>!^&ir#HGyuI@P4E%Qyy zTX|zxc(%$TGZaK~<{OUN9~$q>DQ*S9AACihw9%y`or3nIVV(k$1ZmOuIw`* zmaqq&fEgQ8&})9$z6nJsU|=DFl?sYO7lM zu<6Qnuf74_zW_DbGoVxhsWHIx1W8cOK)$L$b9aFzE7RibFe|6tVSmKYqGOcQOL67> zD=Vo%mYCyNw)b>Ku`NyGgeHP&=?a>O7MONDr8jzSAMjM4HdtES!0ZGoyWDAQx=PO@ z)<%XP;O?DEN@P0{j8W?CbIQ24?iD>fn-t@VD+$(3G_t(MO76J(LsQ%Y(tPI99nx{9 z@?s2&YZ@J5+xPvjmX`on_e9W+0PuC79E3IL{#aZ-qMfYt*^B4Hv8P2q1-!MAIWr z-Du26i`FKAzX>qBiKlV?>>ebZg`HA#L9Ev6d-jKB_l;ZHN)06PcEVwV0v)Ho2>#W* zKLCXh!O(2mRR-YMyBL|_O__j7;qkyUaNt5+zT3}I%R-VY{%6oWSIAH1rhMBf^dN$- zTbB-V9M;9rKSZD9tbD%LSdcoxl}I?9*)A;2I#XLj-HNUGp2((d9E^SF>f+>)ndoA} z$(&|Y}{6pF$5w;cZr1K`B8 zi(mj8lGx(G61w4M_P4z~1aJ--8!^O~2j#g^w9@100GX2+>I3u~)gk?0Xj?x`md*{q zxcucjO@0(9@o-_f(B$7K#Q!-bD2O{~202Zh*G#6JTkUE|xJfGTApE(G)`GO3{~GbQ^zaD6q%Dnk85KMz?(NYTP$^f)8t_)H?|^xh4swyp^z93& zZ*2zUXQ0#Dw;Cg>5AYQzObaHW<5dVuM0>~#)glT+EN?XD%g03yC0vZ!9l0+DA$DD* zK?vf;DRHUc;^<+$Zf@5)u_WSfl=2>2edsccR>-+mN_YiNx^SfuP8DN^@$Pgf6xJja z6P1Ty>MfE8s>yO7Ki90TM+{gE8&L|FHN;>tO$MG2Z_U@q%n>y2ii@^t<)2a8)Z!*y zKqI|G>OD%Dx^L3o{%)&bxzBM?-vI`RC;st%8qO9?%faB=^7*OV?pzH*n-Q8! z(d}sRSW;bVRZVVgK6qf+wGLOvkW0JW5wa*W@^r$*t0I9aAnsEB6aVYB18kco_e(#4 z`1(5<~g8a{_l^brJzI z6JuO_c!*Yc>^RNBpir%Yt&xHk<*Bt0i~lFKr%pg&^o~%}X`StSw{}BebI3C5BEa9i zaG8lxSUsf9hWXxFvDfPWwJ6fGrGV`w5QGr<(WooW;*psA0$Z)gNmf*ltEO=F zLJAuz07Kjcu(4&0TmO-8E8`1;jKB>~ZSt+&fGX(5nb?HB+crYH)Hf(S&}A16Ys1l& zx4Zd@QJ8vt_S=&C@>kz@dqP2qEKhbek5~3&Q4asDN?~D?km&NKkXKoE>I>L057Kaa z!S9efIgEQfdAFOWO@mt*e6So5)+ay9s7Y9GtFSZ0+T&^!QE|jJRgx)FAZQl>!3@_t z9P8KXyYaJIz9Pq<C?5zut&2Y(Sm|6W8hQ@cse7X&!;z zqv1}G&$I76MILV^Q0hXgqlScLpE{3tC&+m5Udoj*Q}6Lj*0_2vUp=s$Oz;^P4^@ z2vj-7I+{CxtPz%Q2~7&1yfWL4PvVcsYw zNB9=RLk1#~E;$#;#pY+GA_JU1f1#|8nvC1q|5J$(%L>n_eOl_UcuQuXEkS&)GE3d} z#2c6`$iq+#+QUwg09&*>=9ZQ*^V`Xgx@^zt{Lv08zegSfK;M8;@>zFJ``vQ`RcfvcGd%&nOkKDo^qxq0L>%nixP6w?THSb&)x%rP*%gqY z`Z?sCeV%FR4$yY#*^cHh+=(4K=)u8Q`E%&j?IZNH_p|b-XEpgiemnvp5#NzrZ?`J7d8IvF$I1-Z6R9n{@9smK*977ZuiK z33AZysZD*I(46`zx))CVNIgywYlbJk&$RwsRf@$!??B)RINEQ{W%N52%7+UoeR}{N zM~VT&G_IA+Wxiorp*&MQ`7G31apCepYv8g*C8jVx7B@wOQ`O8wWtB=CpBA%R`8z9f zD8W}+f{kF7IiQhf<~)Jm(1*VY>n;Q332Kdmx9vvJ=9Aa=&>tYWUQItIg@@%JtULxNQuB~&guuU z3792e?^k-OOZHHx?mN6!oa7>w&PlI(MUTw3E-7B%jaHM(4&UFVVefG74}2*AOiip& zTJuhK4Dbf&vIwzR$U_a9u&Eti56-))CM7SAAVSSqDN7M98gc<_O3ItJ)MGX z=RnpVxM4PZ2f$!gd&}^Q==P&Ev`bIzBLAa5%7EdMdZJD=5JF9hvV6}KxO~Jo-@xlnekJ37%6S;;wF`ESx z6(i|1D#VUz_9KAO{`%rL54EOVFT=nE=vEbNPKo6dOB|m^oku_K=`1-8m6WNir;v~zagar6=~w`O z4r(*hE=O>{^YCsr9QH>7Fp22T5Mo-OtkuhBO}{jac#Z8G*k4$l?tt`7=2X+cY9`gv zWbMN0c0Hey1)WwfDG#2LxU}0o2Bddav%s{x3P2N_vG08Cv)4A?(WpB|a}{^o)=?{o zc^o?zZcaGe+NK>Qw5ca_y*v)DZ;y+;*qgloe#{`v_4Yp{7wKf5(0b1&;owk7r`x2J z>~-UE-lKbC5SqcW5~Ub_y7hv1B@4d#>dIZc)-JO^r%~ewTpEKB^18%N=%R;*+{i#V z$UPZl!MEXOLR?dCIqo^ZXNOR{|t48!~Dua5)J|h3k#pDvn4UO?zcYbf#DLY z#=Rwey2Xtr@uTD8(-N@$K&+0dcnJTE^QA?9BKN`Zgl;vhnwr`x01I|Hj1AG^*(xYs z-pntq3Qgg()=4>+J3>6HVW+g6?qA7dPM3UAs=| z2XvKokXSTNgj)f6!bEi z(4BVxQ}|Sy9+Qy*y`&_Lx+dawZuo1GF`7&Y8Jqqn+K1T~feyeWf=~1r?_3Q665q|) zdpFl?nd9w|>`;#YlVq2lp1encLObEMb+U->37NJE)=g^<4(!fETQFD(8@iZ|kxbdxPeCS4$4E7C%tXtQcQ-|z(`;0ay-f$@sA zh6QE_j*Y$9njHPT`*45V5)a|qQHzHSJJ$&70Vt7zy1JRF=md18#x@;*bb4;wcWc+C z(XgN%m7#nWVlbe_Z8~@NYS*cmHkALSX8l~0$o7Lr!@1~$F)a-ZGpT07X6fx^^X-g5 zf;w$~0X+Z@KCcDvm7UaNw3bS)m)%(LQi3?N>-e8>)7mW7Y%n>@25EBIgW?S@((Prv zJ*~k{f&72(LKLyjvp_xUM9<9H;zC5+QNf$ozod4_R-C%P`*^D`80P`0m;iWZF zb$HV^P!P8P?@eRCL;7Hv&}4vU|>syW`8 z2sD-$v+E#sn%w$1MS61>8e%h2xdb4ubnNWxeG?OI9)P|d0BCRbSLXNMWj}B5e#SL0 z*xIMSxB~P5@DC4*i;DW2Ql=Izl)avq$E*XG za^-yc0|bC=;{zK$g(4`!;>s1BO+WWqr&)HAF{iw!jcE&A!}_S4wzagRGnJx!Z<=u6 zGT^zanDgF6zS6R7$6dvC0VKbjn^`^YnjZvU`moMjgZ0Vw)QKBrzsH{2g2g;!e!VdX zwa&~&3=rsZ4&q$gHob7>;8XT>N1%u64}dZrUmTOIpHUaoIeL@h&sr2WZl~z?#L!#V z@@kU~Bi%YI7lnMn!1_S1(=f>=>*Z)RC>?05HqQTwjh%f;J;{M$RtSsNFm%*otFW4a zk+Jxkgs`*zXjpP*Kv`M&Zfu!mBo0f2heK=@OLpPAen&ZM}j{@d#g=I5(}i;^wS_KPH*iEnb_s*}SBaLIoI|8}t)p7Sf=O zH$)d?(^AqQ2irwFOM!Wx(=)MQUv(>`e+m_Vy*&~zKxc;Ja zEB5u`xHt#GTpDn+QaLyPKS}0d{|8o}%(scluW96q8l?G(OUEXYcOVkqc}Ak=#m1_Q z&VA?=XrV-?zvL2Rx1A}+4?ycU|4B^et>hceTrMGgFOYRE{4Mh(%8 zUmIfk1wSSI_>bdP?*x?Aq^dXTseapp8w2=?P>O^YvyrT+VhntS3f*JUr0+$U4!-zq z@AJLN%AJf0=;`PzE3gdzB`*@d zu$xv(p6DKXf-`k+hPcjI3w|V&-QNa;N2&vEvKICz5#3GZE>^VU7dM&f9srKou}#uz zOLL*@bc0Qv)rf7l6?`p$XhxV(f7s8nLV9}^&={hyWv0IBj(HSJ%roB4W$MYyarxV0 zY{Q3;jfFh+ccYHn0B77AzhO`9f#7HL-h7O8MFwdI5DnHojl6X8zNlfqKD$(PJ;vS; zD`op{4uGUb(}WSt<2!{1&=_Hb*x6<*mC)Hp%8lXPI8FLc!9bR}Y~?yB^Iwo}k-y^J1@yA=%)?}G=+;Tmk4(}~7NL0_s$W7j$I?cm z|H5614DcfV&X{_8ha$1rWROFk%hH1)mfS60seS)bwuln%s45=+T~}=UPyxuboCl+ zIoZP5@e232i2zWE0uyv&qz_CoL7-6i)F|ZlRm$gh*1%0is)a>89jPPug^4N@Xi=Wj zMFH{g-Qkf_5{lQ^uYkZ^AhkK&UV;+3sdj&QN*-T46TRfHTpSX?O1@fW_oU;Y@)tM& zLKWpe{QXERl2Qv2La$h&H_N-Z?Nmy|!S-94A&jq5nX8v{7qsuZJ{F~C!IuS)dQS4y z9@m8vBEh=+Z_bw^9R=tBuPMo?USS&Up{4qa#*_?2nlL@H-0b2+@anIx6vx+-uFi1LP#*Ja}J2DX+uGQklNvOG0bo3+4e4sB977(k?!CF~l?d8WJU~w4MR8 z=AIX%4^m0Tk3zHFD0W>*_MA znW%(>-XKz-Xy;(X*>tvi3G`VP<3WFq<6FVL1n7mdRcsdh0=Y-XlOFyjt;U;(k0m z6%ig2d;L=uaFZF#^+j6*^s4K*+Cblt^MnpsjYHq(^as@fRRXG|ur&Z{ZUQqBuk`TT zsY~CkC6RtGL@!tyKexyB{NTC3^qpSo!|6l)wx|NsZ;%~=&AaPrix%+G1tmERKV=FQ zw?2YLxp2PPt=kpVJ>IHyXylPfji<@f=3ElHPyVpQk^r|mI%R*CF8IJh+{_K*S@#s_N9XZPoB566UqcLKWn_Wy!8-e~J=+?WmFYA@|N zF1h1;yEF(tJoN~7t6Adx1<#oXt}?hwmSHKXBru~>f8lpOFNq}AQXp$Io{tU^43Iu? zV?oBOQ<%nQg6Cu>TO4nCdS4R*eykB@urr*akMF8F0l;9_8_KV_kX0w_(<>NLuL~_m z%v<`9vS#=r9{Qg!L^GTc?15e^t^>2M|YjtE&o)0%aS zO{)dzg;+sJe){!SDZvTabl?l0ag3A4%2%H7Jro^q2qZvzWVKZ$z58xIU|t>A!DBo2 zcvp%?%DeJ<9K|9ZusH3C(sZ_!>>dc#$sR4T2NLzOpP7|3&EFPe)o!Gpc80TU$zCs^ zm`D~K&xp!=3=_yu54gXo?+LpKzc!y~bw^w>-r%C2ctL8qmoG^WQ`hsW->F-p^6$PQ zLV~Uif8xk%=ukT~;zdlmhR0t}}_e z{v6cgn!a6a5<;XDMIW%&M~Y|p&&?g~vY#ZN5vlAx@tW|%ofKdp2F z+oFJ@%u`~@%yjP3{hwF`tR|l1)?OO4?bl^SM}u$bhY{V>pH}?S1N+SY{a|m+2C$*- zuLj_10cFQ(hcmm(z2&!fz;thddK49=dvL&=ZK~Y2VTjgL0_B_2@K){(6|IarHs2E$ z({a9hZvH9F=)Zi6r`*~06xmL1s9!H(#AysJF~mFJQeF(WO)cl?uH`dQz36(!CsYb; z?|10p)N3E_AKx(ozaSvI!hWLEus(1yK|ok>V5iSpoz$4^V<=Kndnw*zrIN{u3EgeB zSOI=u01cxi_xlHZ7Z!7y@)iSItFNSQu{#%mLkR$%8Cq;Lo$RTQcz-JuOf? zYjLG&>yvPw*o)CLi$gQC10^%g(`&2pw~j5+qE$&y0Vi?e7W!FXKWn$0aA0gcVR_W8 zy89XJ663@D-(tYi9BPEh!zSc_t7jPNouJ4ewolmLw^E{CTq?hMN9u~~2+v?mdtwsm z+B^r4dW+bgC5N3V&Rf=KHs#i;@txV`SGwp2tSgBD)tyP@PE=Z^9*_S{jpYNTUVZZT z_~CY+uQ$p(v@JF+4gVLDE@b?v0a&58N7ye*kdA6GYb3*u5DK+#zP0(O64zX(k`*F3 zw_YX22i}wxo#$mLehcyPcbF&RF1my(8ZL z=q)oe0+Ja-um*Pz^iZ01A+ibN4ba3%%$<+wSW~`UR}XucUfBCh=T*nff;LHfv(Wt2 zC-(VAp@Yp@@W%)eKX zFeRV;HgrL>1~V4qVmzRX&Na1(@=oA!y8>?GuY~*aY_reKs{iP$9L~+6{DHnKTkOnu zMpCQ1eQ)ULfROl4UR&J>2{p=FykN0?NVgOkr5Z_tWW~!FxlV36V)ou8OVPGJsM>L| z3r)e+ntC_43)giyyJv&78f?p5=mvtoZDcv{1E-ddMnJMw_H18I5hg~0~ zCKi9#f(d~tJ$FLHH}1k|WlXZ`xzzs1fKSf8x2D{9;a0c(X4QKRRgMc_F#ONh5F~os zw3^-z;^+_>G=l3 z-NE1c-Z(vFo(yM!#|*l$GV63opMAW3)9!Kr3=pl77vDS18sJWM0&Sg-#C`U**x*g2 zq6XCP7d=&^fvV4NqKXP}i=_jCS6zm3dy!_-o=WzW&RD#ALZ}iJpFsVq2s~}&d~2yI zn=gw%UVTT{|N0rEYSeX8rbxBcVjoUMsc&N~*}4FI;ZaDlvj@Zrw!9?jHA0SCNmG9W zNfu`6-C|~$6Qr_8_J9d5K*!D`0OE@4B7goruC6jF%C2h*0us`tASK-?NSAer7U07;agF=)w1T)^a1*=8JH8C(&S$gH2e$228|C!y4;8 zzVB>M0*ZP+y@kz2-pr{W?S+xrKo}a=D#qQfkucaEh+=)&{xk?G1seUum{P(&$!5K! zUi8v|CtG-_FRx}%4TLBv9%LJv-@nWHB0=94S2kBDi>tCZ1KKsiMn2-m{Aico``#B6 z3a#WHj|mDEZlh(me|tPAph+wKgevM`;Jpz6l8kWW)IS|0kzNR- zRWlz83=+j%SYIq+<;B(nj_X^buXz{9oX z8G!9hLbwB$bVT9J=d$2@4YGOhL!0xZDF%1-p6O( z+s80^7?g$umgBLZhx53cj{BIFE_T06>x(McM8wwBHjYX)QY^L~TqU=otr=s!y2&$} zIntz?k7qW8=}~$Ixc&Lh-0gnvDkbIuuPEi}`r4xj5dqY)`l3O(r-%E^b}bo5OeJZ% z%Ax4KRQ4RM(xK>CRtdaweVY0i!Ord}#^wXxz}-EtMp|PC?cta%VKErn$GoXqs@FuL zUx?I!SO4^rmTN(H$&-YqRJ3|D+JilLnC`30NffxYm#{RP^|uqU=LZY~wxch{qf2@R zq1GclesUzY&_}x+^pcrA0Atv&YHFUN8HiHR8U{n{b8`Jj=4jd~t{k1>UvV|ph)T%y zcI^JP3IEHe*0>Fc!!Y!wt~T;x6KxkpZD|4+z_#P@LW0!q@^>q5v85@)?Rs)Jcsj|Q zY;HK{q3c|lr5?=u>w9p(lNP;)m3^T}YA7`#6n@GC5|tT{b&J+0mRD0kRB+7N2>%4! zZL4Tvi^J6*J>2YQP37xgsr_aw)nyYu^k7_b(Sv|V?g?cC9ID~io%%`oH#R<=T?#HVryw}e!30NL7 zUfymnsQiuu77&25RKFpN^B5N_L9sBTY^TNWNiOYS%ty=yOZ?C=uyqc2-#j@L#DN$I zh`vzG5+UC9rs;~q>3fz&N%Ypp5P)Q?eivu-VA}tOF$&h2N)wH`lKUXC8#o6*u>fkO zl$Y`rdq5K$C^uU6(gtIrRIs{>Q}L1XL}YLIHmTw+kwfL-sM7_%y!H4~Bya~b z7dYxLkw72FQrEWeKnH%!#mQ8(l{KufNuootm3yg9&%Tj%lIL(N{x}7FU|n`xYlN^= z%3+K!XY*JDYX=2ym$fje>`AP2cRv)omz>;6BI{+Uu>lMqR+M|=?coLmFf86%%p_w- zvZT}$Jw-LnBx7>YONuawCa4#oHcpZY3u~t{Kn;gEf^3>h*#+g~x)iB&(|S8b(5d|M z;2@~L?bB*b5;)M(=|IBnR>Ei)!sPcYVZ)yci$5KmWx;x|$QMv72kA|uY~+gXg_xl0 zGE@O?s_7pnGvW@0i)%l}FfRu~mAds|$mK-^8V#Rby@pnz=jGAhnN=_jvbB=u)XMXd zisE+B@<`2SbA;}H$kYfe08@je-xKlR8xPXlmEGq9wrkR;V!lW%4;xm1sBwY^Lwo_J zJ;r=E+5t6n&s+t-uz%JC^6XMfV7Yc2Bkz;#=N;bys7OiMMRKC5t#@b?p6B!rJ@Of1 zU^wsm1p3WG*T0b&@=ClO#;UZ^^hBXJj52ybJ2gZoYexYRlr>^^JBMT9SE{JWVpnq! z?F=`{+SPqT^-?t)yDuxBDjo5)w2b+`M_sc@?8?Q>$iEKiC{`}ZwLB=v$-p(mowCo z`CLC5#b-s;9?DQ;jVD9yHgEeLA*z%Rc#~q?qax$tR;rA~d#L7C zsz0skc&@ld=TuCmGNb~se{Dl^3x%O}X_KC*}-{0HA9iE|%B?(XZ z5eZ{1&PLv&nW?dLqJ4{&)>SF*W>0K`s z?*pqz6D0kbuFEGBbnWDK-|a6tA`IjfQV7 zzS2p-RyvAo!{EUh=Aj^BU{qL|^YVQ>OCvxgAmRg$wV;gxM4D=`R#`kRFHgK2^iEJYn z5@%=d$rqU9&^O&Qp$bf)l+moQn`I$ep&Pr45ETmJq=TlXTc@)u*?Gh*EXL~^d0Ak= zt8cw3MRh5HVa59;d8cQk3fvJ<`(4OleTK?MwLa7nvby4w)B;7o?4#I_8_rUt0=gE3`Z2ARrm!m8b z766(BEw)J>UBtkg{zDVpurQ)!dNxx0`MZNa13ZIa{dZwb_BK=dwDd~dDF}8zJ?7F< zQ&x)^(zwtx?M(#BJbbyDj;<-U^M39EH(%+Cd%M)A1Q-zK(Rh~M&66h(=djTx=~?i# zn~cum|! zEmq=17!iDX)h5>l_plQ(n6xA6g3K^lL6-@+}X6UKf&NB*Y%xX8g*?_wu{83Vv^;wGTNZldg=@^~-W8e554U8)Q)?NGSH7g|=p)%wcUsD5YYeiJH;S`jGa%*yWQyU zJA$KK;kskis#>q&If>~r2e> zqC)JVh*;$1HlKbMf&ix)dY_TROwBy-m;se~gN3}4pJmC$p`^x+sW1{~vep6BIuSq) z&Ggiz%P0|dPdi=6NM=HZKyocpg6)OOvj;6lF;^#?y%e_;di;|w$pr$j+)$>)AItcT zLchX@u&paJlQL&_bP#HWrBkFakNd|(xnZH?*G7(0R;VbaYroLu{ll@f;$7S6Z|gX$*!T1798 zJX8FcC$M#zl#?Pgt?m4e7cB$>r3D|tsy_@q@5nXD6+fyP2l0sMXhD;Uq{nO~43@D} zr`QBA3Rep0W4T(}CrMTq--Tfiefst%)C#8YC?(4w+18u+!<2_&K%2x*M(Yb-%WmU> zxV8byqGrG=+m=;LmhB3v%RlP_EFWdrmrAnh%s?Y6BkL5^Y03Xw`7ETrwUynS4CjM% zoPiQADx%(|qoLkZR#<>75Szf*#JzemUL8P|Vx0UXC~trL^e2wNFj~D7?yyMRT+YZN zGmhJR9aPC}23L#O#`4_`o0{qGmemj5(K^)A1vq^*)01rL2Ap zQ|S}Y{N3$2m~HzSfOcIU&s15Z6&4mcBs!$5*B-Xxh9)M`o7G>YPtpLh@JHA4cj|h5 zv7@zpwd}x9;Hq82b$n_@23YdwWLUZfm~0&QHCg+T-7t01wpHCD3RZl@2pC zBKS0gqg&SREGpkD<0mBX6FcR$V<{0}6rc&(wsF^=xj)!xuSz7rVeRGRD!m&e@J9yT z%n+*KZiE*CcKKv3aWBilSTzd^OQ)IZF)rr<>pc<-n1^4jT2BbWHLH~s6BFCn#nEA2 zZ9(QOeF{=}me&&|%|mH7YZDdcxRqtAR@N^mDYbuBkqd8@Ng}FsWG!!83%^T zD=tiU?!kXYz(nt4%0Pb29*3y7c!}LEfEHwO{bheSR#8vNHftRw5z8V9gY=350gI;a zT*G!!w~u(-8h)$Q7kw32U&v}tR8Pa*joJOgdmru2xZCY<;t; zM3Mpe2HHa0`W-$2A!WIHAjpy_CF><^8gaG}uFw|FyE%0Yg?RAu7f^So>gdAQXprxo&+?GxPJyzba{W1e!8>jm((# zMl;$r($dpQTc^gtRj;nCb>B}g(>MGoR!~qVjn=yArY`6NTI{JsMT1CdF~+n&U*FZ~ zbX1A$*-UT!-fRspy*u+d(e1WsWo2aoe2TAPZCW|Dy3Tu7Ro4!N8E^KJa#AZZiuiTz zc4ud0z7ODCp7B?hlRNWO8*G|&N20vI5ixueYv_9Z?7 zT8>R5NljWwWBbY;mN#ya?p|uCi2*uhRNSsg7l|^k@RT^AxR6hNj(cd1+ zqb;{P;}^-`zS>ART8+{WGc?S)Ni#0ptTq*oqKg2CB|6<9IKS@sVbKhDF{PT-)p(CWfIx`^;K5cxqUp9H zSr|+BuCBWO<9ui{!*M_Gdsc~|ph$>E_-?36`oBLl#w zfwfs0(}Xg@T>-yvc4gi{;N}cowmyjol<^CP{vbU8%zyWS*`!&nv-C)Bmi*{<=w~Yc zpEsE@<_gTDPb*6`T+i-z12#)f+HCYjrMHu#@7q<~zRS;Bj@{DX9hcaX#d|RI{4w(V z8GHf>LeWeG<2rh9JeU@Dz6{7+T^6+yU(5psYrp4vVWt5l+aZO(j8McdWzJQZrCJ1@ zGuZVVTa~$3k6{Kdk|&X-7LPMM=Q2|+`PD>aFA?1ce=yxea80)2bR_?314D|I!zkBA z0BSa0p0%KQi;A=Hjn$fj(=OXA=(`@?sAjAlHM{0FGWr- z0LRgR|Ax)w%9{PSmwDCgcHJ%2Y`*^9xm8rg1u7298goqT-ki@@oEtVui!=tjVwdX& zkib|S+ZGY6EXws%eilKQ5(qeDVIKg+U?UHk35z8W}Q z<-^h6qrUOXhu_Sf&AZ*P2K4p!mjl(OO>k`PLSYLMI&(znX%p{76Y@^dw6xom{BMXo zIR`_B!GT0ZmeC+(j!HpFAV>FH`gZANXW2oqW)tLfN>-Sj#ORU6-KmD<#t)yV{g%7I z#@S~C&V&T67e4@+8J@)&``>*McRsOuW8xVPekk_3^U(m^w9Vz7>@-zSEO#Gsz%YH zbt84$-RkXpzvx+ojA)|)$#Gd@?rxe|-B^46u$R9!rQM1}iVWTJ0SXAD)=fuK71z@o zjY(gWlR7EHQNx^jr)MA|$(*}I0dzVH)oi-6=TtM2w=&siaWahyHmnu6_ha-EiuMQR z7)>7QZ84CBV{VPHp$>w3f2g)$Td9&fl2p}^M5SE4Un$I3Qt9W8TVK_Z>P8$bdgHJ= z$<^D_S_q`_fpH8Q!I>)7M@s`JI(t zT{*G?wqTb82Iu+kX1a>?_e?$7QPV}Cry4jC!+hZUvUDMlAwyQVK1Uq&`l~JKszqNP^A}E?>C*gq6^>DfE9t7f9*wVIJF2~E>tu3QT0A?SL$->6Q z_F2-lhrnMU0=#|=CFfcQ}iD9xu_ zR7o2M1>0381?yxYBb3C1GWl;g>N2*o#gqDM)CB%a?KIx=&pS_KvB3QzUuGQPlyr5Fjy^~0y-CUVLdHBx&YY(7S3&>CU9%i{4cOfhK zv%@QH)rjRgY`EU^5vy9V_uim6Q7F-_XADw)UA0_z&LLbQR*tfez|I|47Atd9> zEk%)EPV`L2Fta(!lmCnWh24{|%IJ@$!Ith8FFb-+fVw{x5J%npoCEW1%6>4ut64t@ zW=DY~vU)-U7X!>}FrYtQ^4Ts>;+IkIB>a|~l-ap7_jB7bN#KP52Fj}fgt0p3sF){c zgnU{sXneuFaPMI~pL3`BSl?}D71qqVUdPXKe8|X7C{bL`JB)L2T^|AGXPom)M}{Qf zkpN(`-yd$+nUjwxxpztOWC4Yo@`lJM%sX7AmO*irI%(*7TYXm`j47tZHA*x>h{sQ% z`x7BH1Q-vp;3seopA)ht^c6kpNSiLNQ$=bIY*PlXhMF=a|9eIe3Ev=XWJ|wP*uxd> zvrr)CRN1+yK_dC~i$v!}l9*>oJ0Zh?nc+D`{|2y{$)cTBST63ua1JQJ))FD$fwWt(}w^NiiMFgxKS` zBl;sbK!mXL5Z^(Ic$_LykM{^6WpLKC7Ni)gAiXod@El0yGpIRF=5H<>?3B{C_5bhT z=};8aZPp8urhj%Jq_HoEt*iHtyM@lQwB#e0sz-cvDD0|xHAAGKpsjf6=CAlr6d}_- zzlpPb6h9z~AU;83pPhXQU-gbqM;0sRG8(n{SnKebzt`|V%Dx76O)RCW{&AoAI^lll zDyQ_m!0m&A_Z9q#GW=#5DR(*2K5qKo%La*n%Q&>V68>D42}hXKIPsNQaMs7!UqoY2 zAM5W~BJ?moOWMHdv(PR0BV}_)l<*_eh{yu7FhSxtJ|YLcDb9CicEY^jtX1M3tL!TbgzL3B;k2IB{-y)quPuo3vK@#w7$i9gFuS|lGfjz$*SSow` zN|PM|vw~1BD-$LR-RlkJC}A=`i+mG}GR1Lm&gPaBSN%F;$oQO%7M-@7HzHNk2k<$2 zU7oLK(4^#F!F|I9?s-hBf!0v3_1M&P#qQPd!PUxVRIe4D4zGVo#dOVvL5?ZFo5 z|6K@RFb2YaYZACB|0t0nihE}|QF7Po={ju0P>S!y7FJh|`ua5zJhl2vaMWZ30sq+z z;2#H`fF4UT6r(*Zgd&bF85`F~6l1b*52tn_nWC5!9n4fLH})$>%^P_q#*^r>nqoJq zUDD8hXyJcE>IJ+8jk|s9qkhzq1&iqn%gDl-yf;C47D5|itgGy6MWJpShqqzH1h@A; z%k}`SrSN}!{a^w$xjo+fKuj>fm~=#*?6tr=I>>Q~M?ZX@Ug)Bf)5}$5W`@G`AfSi; zj{*mYG5ea)e+TNfZE+8Pl7lm~IMeCT^+w#{-d|CqI(ZZLx%CGQ36A(5!@>tCgp#zO2*oug_V|_96Rqjy z4BS}~SR4+VQJRz~ee}f6wW{5g@=kL3kLC5sJiI0SPy%Crl;M8YG~s|l68Rje?_m#M z2_WE2=Yl5NGDf<763kJzWC(G7HHR30ifL}+x?VS!arvM1RPijMzg+TFP z?;lSLuScj<#)KIeEy?4ut)N_wt;1%HdetjD%;JWW=y=N7KWXQ(>q92iXjl02=29^= zgB`2#Zcx!FR=D8oiTyvM=}$#3DWEdy7gK35C|inmaE1v)o+bshU2r zHtTJnSk)3TLFcNKk7vsT2{pl|dR02xX0c7#7%1<5ybg*5#>jcnT?PA3+yneM^Q&*j)?0t@X zIX7uDS>1p9ujxa*4`RN2?WPL>f*8I}a60IwOWmZ;Z`vo+?8l|XsVxSThRAU%H3vbP z8meUIwAgcF9ABpQ+Ha10#9xgD{Li6}ym#i76O)GbZ}kle0&^Ng?E9NWI-ZCh&Yy8U zpGx%F?6_W;r*K_5`Z?RC$A1}Xk$S(mQxtJ@BR%46_`-nt?*R&S?|_Pa-=v+C8~C8B z8j!x*<)rx#YXz7lc`}exm8;CQg4yD!ReACtrzIEmjQWN*%90^z7^3KOacb+ii^5HL z1ME%Lj}G{L1F3-XfE5vFmP;|{7tMat@qIkKPz&B9*xP`6#w9lW#s{u3%gdPlNGDQK~skiE>k!St?g>k?LTD+p#BVRv_uk0?l#CB9HTco#(V z-Rq!6Y7nv3O7^1axW8xUwgnRJH5}x}JLsm@EoYHk9?yeUTfBiDK&qVgNkQ=EuieK| z)lWhYbpuNDrrXa|S0`F>R*r^^Ruc5VGwfCOA+mG*=i)udUq1hu-=X`R-drq8v9ebd zqx*DB76W@9@`l1?>dONRlU+6zyl)}BVD-Aj1SY!e@WZ3NQCAXSoSwBw4sHBWvYsEB z1&wMWWrvsF#9MYYcIT%PcGi`Y%+9)Cd)q zm)BT@&w=Vtj)A@S@8d4$o&bu25khVB>nTVy364BNGc?=|cexfy=Zskny!)uue_Fl0 z{3}N?!L>w)^{v(nw%(Xn!cG{+7m(fp2)_un?PYx2}n#M}1JAQlZK!#`RzJ!3TLr3Mf>) zwuZvbsC?rnXg}Q4Nz^Ga|5iUS{kiRxOo*0eiYJwJlUI71N~1&vgcnQrU< zGPPPy1tpx&mhk_Iq!kPVQ}#h_b9HWud92C@3MnjQ*4?Rtqui~f20*JiVeKi0Jae~0n3cFOft@0XYnrC{U~j-`PBo@m zLpOYRB^v?yxZM_ddx!tcu~4>d_8?~SN@Dl$)!%mr<~spG4!^l*oJ~~qRM$)UFqTs5 zPET3A)^eSe56;HcSS9Ke+6~n8E;lRnO!Hkh9Y8#Xf(Us6@@s#ajIE9UifI;PmX)Wk z5NNHII8Eow@Woiz^|pa+YAW?n<50Da`$uCM>45NW2M1ujuUhpbyX>=aTD=1gY9Qea z#8>svYXgrnpbk+5^czQob2Z!HIs2&}?=%tMVF@KRmX6!J31bU`Y}P~?jSm&LN8vFG z77Ue4_%|rf-s({MvSyD@Cl@^Lw8j1TZ@}6L_^^r>&n+3%Y8OLCY-t4!OGC|}$EQe>!dlcuE(q^t z3h9;$xhlHVMOO5HfrM`JU6DnYuMfH=^x4%y;2O82q$+RPmTX)3 zw72}`UtcAsR8WmSd!{syb49izQqX{l`u1#b0u=dqF7Vn^+gxEk}QU#oJC==Ob4 zr(RKw-IBXUy}T+qUc}{jE*V0?cnXw0&ncpA@JKB$h+G_PcFOGHCrmT=tesBEV3hZD zkZ))FIkIx7LZ}h*eq_F+twS?#wE6zbnN(B2oLZRWD>sF!S0t5*cQh5;{aOA`MM;2k zGV=Y`X*vk|j+q04l#>F=Fm@4af@E#TZ5?vomf};%Jr1+ylFa z(K5B8PM)!=C!Ge0Z1|!V^VW2}no&a{VcjCH1cOpn?FZIxzjj}Bc{rwQn3e0{$&pMZMIXiVx=I!1c-)#+^uK zC(?eTZJp{JUktMTYi8YG-|`F5kPJvJblgoZI95uQd@`5!BdYCtp+wEbHJ0gfAqp8n zet@8#C-kikQ|i+O5V*lYG0{U+=$L0(4Sh4J2ym;nBm8<$fcJwwF?s1ZbcJ)~qzkQp z=c4Rd*+RNH$ms*jqUt&G2J+?scoyml6C-2E#<|No>?W`Hg&ao=(~24P>?+1kMi zu(c>`btv>S##&x>31ZAOvw%w9xItF%I1r{f-dxA$qomIzT#kp|;f3LSMuwdC#(O3p z9c9)_N5L285e#XOK49MTi*^-{3{F!*c0n?dc7=(6Q^A~CFChsDUAN79$4YH_bU^NA zWck;h(EWD=Mt+}6zdBd1Yw!8xLeJXS8sg;@becV|{XMS#9<6ak_>>r_|?m)UaAPHub%&%O6XJ3ofuI`_A zIiJ1fM5*K*&XBeX64beF|1jRoJ4UlzEyY%U9KYYG&wH&ryL*_Wp5Pd~R1*4c(XcfL zh)0&#*0>#i6_+UXC8`@)j~i`SyiVo(c;T{}uIF$Tpvb%#7RJjUo3KL;2lh;@u`ZXqUJ@a=IXaTF?i{X8&%P;Etl< zqK*DjP$lzEu99(T45-V08#t2@unm=m$j)Sb~Rx2Rj^nn zl+Env6s2tFCA?8(5P9+icT6g$;-mTSoV2xPg__ibapDmYnS=}l(H#qIWz$!wFmen( zDtT^Z{eEj9Hq&JQFH(y8+VOg~q9z&VU6q3Fe7(yN&=2bV;S&%UAo4Rxxdh3AUeJCM zXwB;Y+&#tihgzbf)rQ|F$G!*(Kzm20zwXuk>rqgUAth2#f-IyadpHw}Lhn@OHtdHc zwuQom4rrb&?vBljQU1Is;qHmxl7zHHyBNGP4hNDB!Bdld_G00=`C%e9o^Bm7+y3mC zJSO0EL%pQg9G5V&)Ipb?8LmL5D-!5ziAB<>Q8}Hb_uH!|Dy~6J-z?gOl#?mFmH#52 zAr+B$v!id=B5r|KJ6oDmK=b$2fFSEW@k?0VJG*LG3+!~L+BBE49LuO#&Vrd;C5Q9$ zZu}Yl2J5b@f;rrnrr#n@PA$;u;WCBu29%cacCo#e``>0 ziczhHQyiU~iau+;r#gQXi7QOC+jrEwbVojaJ$JqWoWx4!MFfpt;Qf)JbZB5{M^T3T zv5!dpI^|$K9iUF*w=}qEwi8=~^^LaSEuo*g5pexi z2A}CrYW4kdA~bmV8HO1Gh?zhFgkrrZa=|syS|sy`i3W zesSDUA_y&6yX&6i0a|LS0c>-@02kNvQO*2Ke;)BHFD&B+GdAGZrL->p-CGn>KupQp z^@dIr#u`4Qt(sjWk!PW$&+WfJnY?x{98wk;fq$1%7dYHkV6pAfe zNaH0T8TZUcSUyS!4Q7WH*IGGfc1zI#Xp*L9tKb0SZ~$5V(9{%F8s>+if+4v4@o7N6 zsT(f)%yb5l_${YRE2`Gz6&GHOc*4I$KK$S6fa`sAz^r!`|L)BfIE+vqv?U=wbgk|( z>(DOqd0|L5`>a6+QR#gf?UcS4lP?*YdD0dTmlFOaZ=)zGW6GZ;SbOC*M0V$E)y~-N zPOa*Z;!6H!UJL{5_6a!FRl+~r-MK?K7d^D|Mj7kYFzV*%!= z9~`vgDF2Ah>3VSlK-SY#mztL+S#CB@XFQ&716|>ZPF@X%Iy8Gvi_)XdbNsUE?)G|h zzTj6a3sNlUc?7|(9=#gyvkbN8b55X2%HlXZDjY5NMMQivZ1K|8Qwf*#e_;p_VLzEyXRzN zKq7Z>O@!a6b7gZ>1(b=b4ywxKJqM_PtZh&e3{!*yLht$fcy2bOYZ8nci&Iw`@6fM& zm&ZR@1^DA}D(+pkXz0#QOLu*Nmad8-CON&@E{Fm;_Nrz-FE+^(Ds#NHt94Ub!~RhR zNl4OoDPO(ui5zRFezi*RcEoLTU+C%KQ^vy!Q|VfIAgWk+O~^ooZLMh;jQiUYP;QIw`C+M&rB~bmHRA@ zRs_?^S=~Zjv8F`#BY}1qfo|Y zLQXD1_BDBP)%02GGl*ZFK(Tr1UXfP*2>RI3EAH{!h3~N2xId4^$4yMEXLX=O7>lIx zhok+~4|6p(?5F?q;yfnqYnI?2fo38^MhwQEoIB>%67~%@!<%lH3gC20ZmOnOr$lFp zO`f7tt#tRa+5m;LVx(B5U1P91f{qu73`My#RV=0ovVepvOPJx0(*vHrYD4H@jtbm8 z|1kN!>4W;(eBKX{$wcO4oCC~Ktpai}GV>Is`=lm&*t0(%To6XS5Ja9iY>Y}jK1kCp zPRsa1AbRZs1(1#-v``GTC&QXd3{qVc%PR=g#z1kA3{-2RR`s>O(-vgc#nWZD zBFP4S!JRq-Y(!{~Abn)q-iuBO_WY!m40nQII zhr=*oOE0c4tPi^d5sA_f5<$3z2W8EA5X)b*bCb+DkTgA52xg|i4LzbZkhhgTN<({n@-x_51Fvz4!` zf1zT^VWOK=WLt(ziFudm#-IUF6bXtJBr7bauxWb*?giQi!q37a&v)p<0^>f~-?HGU zbHo0=+73{)?aMzrXv6WuBTCVKHD=><+b4WEW%#DvT$h+67}*2u$BQ^*dUbHDJK`5y z8s^miZ^y-#Sk{B)YV@8=d45Fc{6SRHe>=Aj$H0ch=$q&wgdqpra_FOAk|X)K^5(^9 zvQSZb3=P@q9@AK`v@_iXh1saDSb5NX0RyJy;9DqA0Hm)yf1#Dl0;H$^*{wm+Mx~^U zK-2aFm)#K#<+>uu<+)UvW8?pNLq0q8Juu zPoi;jqtjn*N$!3MBeb-F9IsSE>w_Svf;=3%@5shAe6S z&>6^mcxc_i5$cS898G9Q=e2NeVDnIBMyC5cqrl#|=}jmTiBm9?PwsA19kdCmc@%|p4G zXX+n#=9(Em9tMtXi{~@Et+F2^jxJ2C zBi^V#5dV>hHz0QAPlEE>c0aQ*b6v2~u-)vd;w_%n83{1MX`2|_biym|eQTAa=R7Oz z5+z94Q0#pxxFS#_`i*IGRWEx_tNqD2-TX?t9o5*klCs1$%YWeze2~xXTa*&P^my}1 zV10UW_^DxHz`v!nXu$6EaV^V~%J5bTfVka)`6}VH9jr(3FNbzGF0WoXJHRbpv`wy= z_2-49Z6oE5W4=K;u*6l6e;t*ef?k&Yav!-FaWtiu3{}jO3F66@gg$i;Rj9+Hoo8e+ zL+glmcJ4#7`8V2T2dI?wB^1HVgoXuXn|tQeA01?y!oxg$TK>B z0!1xIiQc{l=^r5y1H1M4)tj%Z8gB}O*Zgxr$16Nrj@KgkB;}?CH*-ZQq))sC2=Nsq zA%$U`$CZ5!NcFj!DRfc2qox~1$A_*<-CtUD&DP|i&kP{`KHOvlJQLd0d?teY-?E}& zWF@EjuKp^cJCr3c;6&J@imJD2^hdi7Jkq`dOM-g@sn0v-+L10>e%%(Ii3rYOW7Xys z-*>q`ZP>@;PoW?cabnj4GL>t&)3W>=VIOdN*vNX=RjNh?UH7h@6_n$HD=1<53UBJ& zU-Q_8x_~Qd@$0n{n`Z_4a?VOQ`CLW+HOw3z3Y7FK4WO{V0qa-K)Hs`ZkpAxCB^jg= zr+T_7k3q?v1GVR3PoTZM2Rf6}J7u2p*!rxz{h$7lJz#ad5Ii-eb%!-SjH?G(LVJFnlp(AnnrsmjQGoMoTKN+7 zp|(|`7F1(@sTDqhbS~NmAK!}dHT!bjkEv@FsI@xLx09PXqJ-bcSjipGX7YTK%0Nd<`)v~Wux7gGQZx9de&3Hn=tnk=CiWBM~lD;P;g{jUNYU!wRjd9!?olo3GGA$8XwWA0Gw zrUu`*^w%~XW@{e{k)L3G^Vzb2KUC#Tt2H1tvf&F?knIs(6z%9wHT`^KdCUQ&Af(v) z)H_;ucT>;pZ&#GhGZ|N(zaMHr&D#@t`B_xu>k0Ud<6a%*^7<}QfT&mv#nR@qc5X2> zW=a}k?xc-z_>@ZovK-~2X|k+1=ZBi2$@8Ftv#WAF_PH)+=hc{5^~|g10t!pa(T=wK z;hq~hawB51mLQQ2D80K|zX}9ye2F42#~1GKVlNtVBE!76yrUh3B2WJ-&j<4zKo!?K zhc+XoE%a}+iz^#Buo_Nz_O1x%!-ja5qs1_mS5t_i#(Eb|p&qj~%#(#77g)Bjo%V6WLkF|15p{zyq^xN8SUG{C1C~R{aB6@n?}7 z;?mO)0_Wrcd69i5#}A>)5H6on4?0H0*6G+rP9{Rye5c4byw>e^BlXxn ze@dfn%`kqd1$hM-0xj^GOUVy)c(@EbeR=CLV_uqdYR@N1HCjOY<^?eqHVVg^nUNsY zNtl1)ZFlzjyp2(b+c*#xqL!leLJ|Dd0b6G^QgL#g=xBe%iCeIj^r9tR&~CRp^Mr{laYdV*w9^P42q z+62v8(&^pRdM0-iLt~EsGH&#iM#9mFMo!c=@t{7PF|w)mquBowJ26ND&C<1(9of*o zBI>8VrrBjG2Qz45bD6MMljqa_;tzzFrt@zU-#+i^W&DuOW_U9(l`L3=P?CI||3S(U za3MIlKf=;ZF1YICPOJQK*0a7#UeFa+Wil9b3lE=yi)-dCiBVhMhj|gDlWi7*{u=Xx zs3+)@7d_xSXbC~?JyiZ+BLF&Q7 zWzjm*b0FAImT+SFw+rhT0>l6efjFjTp6>Zw=;YG4(v3xE^RSsH5fnpwxs^w~DoSth z*(zHx=f^;XXt3Jq*dxBZsVLJpsvIlyQo^Ik4&GsUC2%f+iOG8|IFY9$@_kh%+R;B9 zMuLi@;)XA02u{kn)D6>j_`ewzqv&VTj{O5w`wyOL1q(~!IK>c74)qj^86BNFP|g=q zsgIMe-eqTjY4YHVN6B5au1GnO{iO#2CCcQ%ac4I-NDVwcOFr&eTtHop$C*15&89Nq z#Rhwgg4IIELfT&?uqH!yKF~wUN$MS~r{7BbS4|0@1GpEW=PB=S1JDMrKiem3##6dX zGEPxYlLM%;Q0_n`Um^|O6ybxfmfK;HLksq4vuCZ>Os)nIr2v=10L1Fh;GwKZwpCvt z|LRe{6nR^r{B2o|Bvm|bLpXa;4yKgwBGtN^*M6cJc}crs<@zas+KgHvHuv5r`Bob; zRJLmVG;WMO>N0E)>1poi_b6Y-(DgW9R;E5}^xYUBn@483;eFz|ew3(A{_Y4HD#sU=;rNyB*MT-Y_ zDQ-oJJH=gsyHlLv?hxGJJGt-s8~1*HXN)8#IcM*+*P8R0Ub+_ziLMk5_BwS2pws^? zBGZ5yXr<#xjtRUtt7Fj?U z0euH_AM7>f*G;()A<=mZyAk<~@&BI$=zywC4C68!of#t$LHF|H6n#|=CDL2Y;EbI* z11Z>QNw|ElEQ%}G9R@8T|4a|>VI^#1>mEm6Q>4`~K-GCLZbatJAy( zoX)dgcE418&0Z|d-+dNqN?B(L}F0x zbrem#*O;YYTrols$ZRw3fv9^NUENxO+3mV3tTf4aenm<#gQ2gcFQ;uMTu@Tvh+?zS zzRf=rkdN|o6vT#(P|1bFxToFy_eU2(asrx2CRf*Ejo#=h0YM#FZGPaYtZn%sj=8}g^)Y&YPJ!mvK6i!Y}^#fTYt|Yx9j}Ld7 z0M|aQ-4AWBSKzWjce~Ddkzs$PECCqZNdt~Kqx zv7;<&3SQZn0Wqrv=%TY@XYd$%+4o47?JMac*jva4$p^_Iac+;)-&CY|@m~J>*Zs3Z zZl}i~LK{t`Q9c`U8NlRq#$8k6L>7>-e^q5di>@jD-%@$?jpF!j-1j6|3psrCX4e{R z`{56j_S++5a#NF&ePx~(j6mY4`OL|`#+^+djP>wi9a z#+o+cwKjav$aa9&B}pCQ;QnWL{tG`fVDF1rzTe`~x$7qevaYu`0S9YbOiav%O4_j~ zM09m9a@$NJQ&cE`I6%M38QifLrST#yLm2Yp9qp=w^36}qX$RVWp>netiIIoVWf%+W zguE)vJFzqN*rO^R_2trQ3T%hE61V^7*7{e@cV0k#czAd^Y~wjW&;uWkCcQHbiHnaP zINcoFOmjPmhR0OH<54>Uu^0=)A+4DaTuTs9z~4=y_jsCM47k!uB^QBlBh}Nx^3!2$ z>-SZW!jh81Kd1-3b)=uPv{IlzpWJu<@jPF!9|$X8NxvB~b=9^pKr|&v- zXct>nH-#bN%}iH5plCHOM%l6#Yzv7?2YU$zIEsLkY$`IiUwpKmIubb^bs}$J+}(^1 zSH5!bx6EhwSjINvz&qv0C-L9EjQT4%u#R4aOJ@+4XjJtOEC7akz8kKEPZ$?&kKYFXyan*=fRSj01LPqq&E}G zKMlxxt>91gGbK5=2N3yNp*w*+i$o9kG~Zd%$tddaU6H_aiXGI-W+vhUt-ddjt+Y^N z7Ow{5DNtGsZVS$asaYqoblD$p=9@v=*vc!|#H@e+XTz)ooC_#g5*>KFMMXv0GUb7< zq2qX%{p|t95#aNO&sRUm$n3S=(&~BvQ7{cn zKs=EQpQSr7YY|uy)`4~Wj1Ujzi?9_JBB?uR+K3HV6nYN2eKod?d!Q=&Zqa!%vUbcX zw&Q1^XCh%&8|oQPn58WHsHzPoPOZb79LH3@{r@f&?Qk_B%<$_^6c~x9$TLWl$L&OV zJjV#PsL4>`s%ug^rq$6xL-WC6vs)cw3{AS3nc0pl=uVv$oAUQFH0%Rgd1vszN2|Z@ z;YKp(#kAHt{SIXQpQmSlC*3}>)1)=DMK*A1qT5E-l9j_}GevVTEJGikVdXI1nz?9* z|MHS4trw7=$7kz94{ctDhawI4m^ z|CGc+_3#$-4CGZ^ZE^9CoHh&?SgWQ%*3fSjk3F{^GgjxSOql1FU_-doSq)827yrbl{7yhlFGCq;zL!$P$5IrWFmZ zo6Q8{z9>qh3jWW+X|mCl>p>k3gCl9&6Ae@CCe2s@Cj zz=(1tuLIfeOqBYo4?TljJx3Uc|0*lgJ7oRB;v7f)Z&^X%vjj9(FHG?6r~p2L^-KD9 ziE9DG(l5$QUL&*IFF4Ixm0qRz`UYPDnLUcmO#-WPm#N3@`4+8}mE(&?J3Bic#MRZ^Zdr52*u9_uR*I1@2*;)_C|v=s<3G zlTL-~=qmnbH#`Fg?k;@;nD~Ff6Q)`&N^EF!$1RAFIMZ0QodMuIrr4!wu0pzibrzmG znzrNAXFDL!<+A=@H$UBpgEW%IJa6G_K~~aX-}Yk^X)wMN1o$EI@Y4L}nx=4shpG#R z`noDJluGwa+9}46|9kO$aB~WukNAU~zt7fY5PT7DpEV38bBNohep?EvIs+_?r@ z1L-?NkP+$xez(hW?)P>ZQZx8yWadc&KycB*gw#@$x^>Hq3D*!oF9QPuvadI@cmN)T zO>LM|{XrYjE**$jPEFVA!4aN%6ji0RElryWIFtIuGDUSF>m96iZT;PzdcE$0v_|E) z7B>X8lZ9XI3y36=zc-6os9KSHx1C4mY{hla_vfSU?WAlcxNqfQ>!%L5q@yt+B|<#U zC2!`%?QT$kT7i}BV$car)=r}}k&GO8xJnKWFo{NVC+vDZ0kpDj~k2lu>BR-?r^ zH=iOdUUDhL^A8EW$A};snC3$}j^_%7S88f%=}O?8P5mnBE4HuRRAPsf23B=l0`v-H zd=nIO!s~y$}lPV>eK+y71og?==;V)LZ@;M*2GCs{6-=|Y4 zzX^_|`zhbM-Xz9pX><7QQKo7?C$Cbh#pyN5E(_hlKSGysc(>Rhumf9kh4k4UEY>SX z`?O_VId(tRN-u9;UtTyN3+L@&q+ddcZ;*4*avJB~G^^3XcdNAM z8!`y?Hw|3#8=F`qm6xf6uh{FA^TG<_aYgU?fSv-+=Q?1h>SE>A1Z{2lZ2dH^%i}Cj z^1OiM=b%D9LIS>!?mykVufKrHUJve^LJ<4U#5&Eo40;+u;&p#w*GCxyBD9c%&<_C9 zcD3*MZxzy*{-YKudsU3%2!t)wXBGn)XU;QuB9$m0d%fH71Pp7c9b$SY3O~}Sxt^$L z&8Lesj;f04 zzAjN6j0DQ&na6rE%p3S~5lGaql<>-?|3y>bq>3Fh2Bdg&?DB)xFxK&t zfe<+jxr(me0BW~`PZ4(A1Zw94CPhou{a1g>aVm<(U^W+E z%&HZWznEATRL@wa#|_yf5k_D7TM^=csC<5={N2p!B{mwaB?R0UUL#AEH|LH$v(MJ% z*{OaTclVft*xao3M4NJ?lLA%0B83RJ`masru@vYt9qy}%O8!w^Hh7i%yh6!-rKNfKut7+M?Wx)2!1 zZ-ss51;V0qSUHXG`E3spGP}Nv+W=N~Vc@2t8Wntk!i93DHcyu}{Cmm@ zBqZ|rx0a5C5TI7$d<+>Kv!B4Y^; zsRd#gKGCG)FX`VzDA@6H9;6Ur%gxw46V7B*{e~fT&wG=2@h^cMai7 z(VlONR|Y1nX%?TDRKn#dc84`HjdJ%uPMA|?8*Y{>0QqR@joPfw%{8spQWrz?cuQGI z6Nz?7Ni8n?UG%9uEwwOft)lQ&!$tuK_STpZaUOl)+$@&wZuFT&-R?&V&RM>>6Uc8{ zv9_|MGoOW9qgbrBfBvaQe1h@6LcVpOB`#KldbhN7t}`>Ro;%@UM}A;X70O`9p$<$U zv};}RQ~U!L-!;x(@Bjs35|>TdJuFBtE-&w`8ibhN)nUfPzrFn7HnA!TAhBh>o^C$;+x|aG7zcP*X_@q(jTDcJkALXy*YMPeu?>QZ-+~ zBle0u|6cHao_;%--#D_{bJcRi509_BpYeJ~_yt+}@y@X4`PB<#vI{3nQ6yZx*dIx9 zl=b2?+T#v-vNL7&!+E2C!onvxdsOYE*rAYc#fcDT0Vb9GyqGz5UC_k2!*}&rMb83Q z<90_hZ7K#1{F?W>D*X)04_-QcRu0zO&=`k=~FfQUnUS_XW80tfIY0*v|zZ&J2 zt85s$FalYs{wK05PEoe!e(H%Z-RHjZ>krELw< zxv>{&BirO6IR|1cO5Po-^YSk!9We@*%j-vTOpdGhlAp7Z)VE!%qt z7ciwk5Wz&|f`m|qvZ1IA5Q_>U7)G3oZfz2VjO4H@H`{*UPTKEKp8Vo}B)*ySezzjX zg`|2$O?@kV#tEnp%6?R~7@#lI)=PWVRa2_^65l?Lth=qKIo`llppzo=(y)uWdw}akfis5=7Mt3VU z`D@mvJgk?WGtRSErlSQBJ!(%|W1XV_Vm-wdxb&XWn0~k}VM1c2FD)LZdct4Hof-G; z|8srsfaXnn63%FhH!Cu5WxhNx31t^F{ex_6uxCAB@A};oY%9G5vKuGtDx_@AjwkL*m{T$Bloi)kW#{)u)$_iZ5Je5B{0z!yVx- zu{fK|xqRp#GqZBsko^^&+$Bldn_RLq!`h&BaVr`M^4iw50t|PBt)77_DGO^Np-T0ziVr_1Q(P+ z>bOMF%q~o;(T3UF-t0a?Kc&A=p_S%-h{t~Ao>eogbrfe40Y!QenHkDqVz+-k8H zQcra&;pm;|V-DRtjOS(7{YOs|1#mX%9E|Uj1cU@eZT2Y@QRc8vC3*H8RP0BAD#|DQjvI_SZjSkonG^8j%NJ>DFA0djS z+SgLMLmfQkdGgP2w9O0nhwe>B2&IAX{cQ{mD!NMkAA^B# z17*T56cdY4ZmK$h-XA__HtOnR`rK3)k@U-SZ?hH{$E$o8Hble^w(yPjuIO#N;b$hT zY^AydT^;nRfX}A$T!!>21^PH z#=d@s$qQu}7#3U9oqxS`TYhAiNoFCN2i}UtNk6=n=XMmS7L{>S1sgP)5YNb}lKpFq zp$h}-Ud`BXne4GNh2rCx)&hde;fan74L^fG| zQeULtAPsln)E6O^9wHp=xFM3!tYV}WCc@H7s@?CnXqWWzUp4{-Gq75J`vXHppOr&c zLkZw&>IF?3<1zVa&M=vo?;UO>kb3?|7e=>v+f1)iN1r)fb`t5zd&|F8cV#x&Q0Y~O zUR@np&C{W!jUgsM_-_w@4mb(c8SI?s;(-8jqs<^!4Qfl8Y8zd#T(Wh)*68)%{vI&8kMmz><^GqEv_ydW~dtx1K9<=o~{I9G8>X z-uZ85ED8>hIS7NGpsULvAoT!xATY=V@Td=(Ypok;zh(C)qetUIcu>D5?V$Ci5^S!y zCtQ+6H+&I3;bk}#StRRK*~Za5z1w@H`gI1P#F*{kAtHso_~jgAa{rXPd-Kfmz%_J+)D!m9Lzc+07k+UTOf^y*FnqYeg9%14)ph& z>YljcrMjyQ;NAo|>0Z%1zgUfY+x_CL3SA)CF^$g<^2hbfg@jkAqyGqdHspYXY^e|O z41HDxcz-AjaMVi0d_v`u&FhNtZrap1gN?mUQbf$c?V*rj7wK%(4{{Z7MI9@Y+Mfi( zefxpKOsj9&j4)PTmz8VI&*6R<{KoZf7YkfuVZ-Jc%{ zSPRO>RXx}!p~Bierm^VyVY=3Z5`P{I6VI5aza|TPlfI9^P=#6bpI00F2Ll2AhIDU3 zJ>EGu(w!uf1>34Az%?yxIA4r=86z{V--Nnk-Cb(>bJjFi2^=1x6DLq1&sy6|xb(%+ zEIT2E=$WB3>GcTAz)Ik)O1Y5`m8FEVG;~d-?$|u`wqmI)<<%;EN9jKbI%+^29FOeZ zL=C1vVt@+!XTY{b`-&2N3YG-45&-W`0>udR+xco?mXpwtLJz1EF9N;toUYnrqU)Qc z*Xk_slS7YjEy|P>5?^B$%XLpIzD)<+?o^aJn+T!LNg!yeSkdqY1Epc&WgAR)E5*?7 zV=r((&;v-(a!bANrE~lzEy;Z7qkO2={;VGZ&g7BU_cE_C-t3E<)z5(8I(L#MpVjtV zb`@}l@s9*dOuqRe z@b8A-VXb~m@KG?!GhKl9nr!^A;410iEFD3FncU;hTWZB?-!dAxLlR-RzbTn_lWUZ- z|F=zDUmxYqcPW$YFS}HSy&FAKU_xeM?*RvwJi=B;krBYyGovhAkI=Zl_~$zf-i-Rcw_d z`&Y>ug^{2F_2U4=o?~)(#tCFLg_&bB0ubQICVZ5{n{aYfdaAq_wrd~y$XaAT%1(_C zS&I^yVx(u0|Gvg?V6tM$Zk#;{rB*c&_G`C_)7B{btL~$rThRUGO{(3JZOyy-M%Ar! z37mS>14tOMC0s7|AFkKRGeqbP6*9W6INj~qvFJp_H{X2*0?x_3!!Lb{;4oQ`QowA? zDF5w!yAxkRLof?N#HO8^3^BlGgPHD005Dj=}#!(!THYFpaoZ5+9oR8Oc$rvDn#Y|%g+CiiK{_sh%qJD8gZ zvra2A$1EtJ?M_%_!(SrNZDm{0RFQ{Fo{i1}Rd;K%AwJFER=PGLBNwM+p$z@qX@^$$ z=>^A*a2y^s&gC2LWxbYivxNKmXw+AL>g5+tL;AL_mR&Y@1+avOak{Srf1j~QASU}J z+u{$OjuHYkfPebPuoQ#~l}XdxO+V zrn_0XPxvPG?49Gxl2g)$qio9k;uv3Qz8>vQ zl`Qi*Rm^6(F%2bNE9}QUtzYcREq_LtKiV?IAm~!iE=61%2T(`g7Piy%?%&cBF~E6; zK(H7#CSpb;V~Y$nNDi$dM&<%ZC>f^7LpWBWO|nMTBm~o(Ma!=mH;D5N9q)=+Z;>PH zA6tJjGyce_n=itWvs*p5uacGUnw;wtL)u<$kf}X7h^xxG1O{lsm$Z53u~tpuBdrrR zK>(CCarEzJcDS;Et#Yil<=VWJUMh7Qa;*%Ur(}RoszYESnHq@tIf|k z%htXi>7#}!jNq%ayl2NV-A`d|pY%RU^Y(KBPX}>AbcM?=Gp%#DaqjVDRSG~ge)cPnZ@sn|@K2`( z(!D~gJ@HN5r~z6Tu)pGfk)uUEaoUuM?1gpk!*mB<7`!IJVaB=(yrK_D(Dks@e;L2s zK3Fl;m?%rhlud5UtMFQnUgi-uJi*0?N$1og8<0WoJPOk;R53&Ly-uXEq16?`xCt#R2<3A~s)>98wZsb+FmPjoo!ki|u3DvKds*lPU1Nd6~O` zJ_q>?+cM^^6qwkPOBhB?+RJ1TXWux`{eh!aogxl-I4z<*vMR(+ zGOQ&h#ey07AvQdzLguF;Vlg}UIyE6p$h+6(noPE?4Fob{O?Rt@=AS5Jbn(Y{e`}~L zps%>0FH5SUt}KP3_S>{B=s6uNvJOrMIeXO2{3=(bR;d5=N@iW4dE(ORPfW9&yvI}Z zww0hyabEdT%(6#YO^Ovc(_bPU;1+ztm2&__he&#NXjwC1YK&rqrkZNjG1bLqyAgNeQSF| zfnNj?&gCY9wnk&%RWKI`B(`(DdC&Q=lTl20wWA_h7oQv)(I-=4N^o z>I!5{&rsZElf76Wk*ttPuj#r$p{yL+X8Y_R9L6|*@b>G#{D+gdUF&cy>L@`(ESjm~ z6|v*mjlWUD=W9HUr?>II>8W@jh#PbaJs!cF$-4g15mv55{@xMjXaAMD06*MZ;A2Ja z;q!_jal+*@XFFq@c;&$ex@&aM3lebbKKq3weTy52U7SwkR}3w6gcFc!%|4ph@}72j z^za^?qKbvDA4*pc3P=!X5HiV@Tj}67x?E?i%0obx%t%YFL|?~$(lTWMeONsC?x(iI zPlR=Z5iNIwc_odYYwe}8M8VM`(K#q5`QqW5`C**#2p%EapS%UE3>>40%z(KT^x~|8 z{1phD)F?-#2s=lba1%EJN0lJVJ zK8=}~Td9?&p>_C>bES7j=upoF#_!Y*3(3h>O(JXON}CN%p)=i4Z9&7N(SVCspAT@f zGpP^NEXJV;N&{P7i1mMzm%$W>P}n-_(zP*kR(!EDB40g{$hE;J9g%^rn;GAbGnz?n zHC)$vZd+4P?JJWU0c0JR90(wf(|qd7$JV}cq{ZA}d~z;$e>l%t#{DJ%3uQGYvh*)i zHtNs5^cKP;rZ~>>Fh4AC`cq{wyPdA}M<=PGu??pEK+j5`a7+XkIKxbO)AC5sG#Oqu z5x-%1SyGv-L$2grbJ9=2bcX&PdX+L{v65n6?!Fk2+c8%IYis4i8NWxdSyq|EfPU1ZlcZeFr65B zC6UaB+arw{yPn>nh3^wHoLqMda2ghSZL`bS_ENRQFi}Zl9xN<&?=SFGU1d)?DJ5 zI~St6pjj3&ilX$4}<)KsyFYxhar|w`;6g_=}n#t z@_O1{?FCGlutAcV&nMTO46tnyxM2gPOecfSp;hHh8HA9-0xmTYh_KjT{tgF7UzuOg zRDG&AwxuaOeR9cfb8m>6YJ8N)%b0ByNO9p>*J&f?(+TmFx@oySjAWezb+E2izS za+PNN)_}t@_xYY0We_$KtLBRLSgpBem1;tQ)X(gn_igA@{3F@2ok}Us4irp~;No!m z2!=;z=upY5thY~ zXl_p|d+;ZkLjO1Afoh7C1uuRI&|W@!=nehef-<^t+Jr;R?E}j@Q%xUs-(SBlL2uKV z&e<`UcAX~sf^;hxE~c5RA6Qk# z0%ij*l3>qlWJe~D>)99HleWAT&B;7`r^|5i@PlWy&ROfN*>$PReM{5C37ff7R|J99 zW&h*D8isBE6*+(Lr-4)^;Au})R(g9%{*+%TN!mXH^pH4?b5U-oX=I511GJ)4J!cR1dvN+wtpq+rAkU-hwN{+CLyi>ag&w@H)Pw7wY z(i3M&H%wpX{9t*2y3r*JBZcmw^EddyQubv>TDW5M==vQVSqDSM{9`KH)BB72=~1&t z95+*1pAQirj_sZMc$e}j+6IlOBhZ2^1MsD%@WU%zEkY+FOMVV+y9!Rj#=A%3*gsgG zCiVkIAbZovftqwC?a9!Im*OR5lUmuFSqC`i>Ou&ulcL<--dSn9go&F;=nxlu6QR-X zPM`f7V&n<{a80TBq@$rfCu|79Qu09u>^M7B+R(sR{przm-O-87tb>mv@|AO!fm@B7nGlU@o7&7M*|<;q}l)) z1EE~}OVob*1KNm8txe4hu06A_B{zOYf6z+aSO{p^DB`fl^>nD_*l-nPxvv?UV7@o( zBa8B`L55|Ke~9EFcwZbqrrg=~AtfQjNe-W3$5T~+GQwN9LcCih*!lMUhUWBzMbqIG zmFh&OuPYRMY*&Hu=7S6$XoaWOH3B@px*4o^W*~kKi85rB&PYK>%Vrm4Y{KdKimBnB zeec$BW>eF&9QyfluHAX?v;9&Op5j=ENh!H>yPJVU-c1uzIiC0(pe7-FU^l^$1`aLY zC0K$J2vG^Q80xMep`+W}hxTzy{C$Lr&rS4iEC;eqa!4K)8_P>~ofprI9u3y4xc?-X$x&rsHRDeB{2d zNoWO#CqS;%qea--J+32#dEH-Hg%eblfb3v$F9x8`mto?(Xm}lq) z#&KfQ1UaD>pL`%m+IRtV8}(I6|`&OBdQVDctxj;W5Jf`Sr-bA|L4VN7< zqYK*e8;)D(1+zVh%4fxMB2b`>HigBjxjwZEx+L_SkMXMQ>&-v6uL}OVAU=D2-}uE9 zI>#p^{#W8piIg`K;I~pZ!<%_u6-Uz+j%&9Ev^y#6D`p2}e>PN`&VOipRBv(8XA!Os z4nf1YRX%`z+T4uqBOqg=d$EL9c->lJPiQ||hIa*aYURG0!hU=*qAS#^p2G$pd9xrU zNS5@Gi+&kneL(l6O9brFmkLTr5>Mj_Z0q7SvU5~;<;e)T?@vx~R+%kXpKdD;K71`} z-iFqWs(LU$2^l!s{UkZglPdp2y0&Mk+fYwN%e=whb4#=tSc-fUF9|njR(T+7`^ws4 zqtT%t)I86Y_M8Um2~vqh{q>oT6?ttxduNd)TQ@#&JkO61LjJlLEc%Na5pqU2;%MRG zURR@WBqc{qAbBLO5@@Hyqkt8FIcXv#SfY$rkOMn8(^{=0z_sBUYgUXRBI{T;2G1OH zA?}qxHZa&VNWcGk`3cIv8ONRe*t3|zN&baXFH}&OJ#KOfH_J-t4cj-!Poc078G6=G zc?GXsNW)ZQNsU0xdji|ylfVs(v*X32z4ws;K-pCX#vzlV1<1ajY}l7#?ifCk*9Im7 zp)3vjT9;E3MT)Fk=g$sSC<&dMx&!04_BQhjajah~#RWd4>!Lf~sFSJL{B?gh=gORR z40HmWhdb@HhMep=X5>klV-{x~U4% zH;OwN&9UNva1rk}$&e64Of88JWCP4mRv+*tUnphvV@6^HOM=-g)46uliHJ3m%M!G* zNcCNh@D3w7Y738}RV`s*8U7cqq^I%=$Yq|>z*(xLYBrO1z)Z?p4mpBYi&ASjvR5+^ z?$VX{wcOdM>-65SQ9oDzIOwlnyT-CryNYa424Bac2H7R{m?!Y4nt>G&Q9Fnqi^^C- zYR~2M)a7OgoNP+md;0)%oE1@;fmA`p>VPZX^K|g@(26GY_#dOBx7XqNt)GhQhM4 zW82b-3Z*Y4nlwQqcEQhIzn6mRIj`>jNRl5OUDaP_r{>Bee3Fz53M1wkX+8!rNMbH8 zFI5wqNPm}<{G?aOb2zm30}!dQ4l$Ttb-4WR#A}$emYIO^2;Jk#+O1OQu@R~S=g*vb z{K5XZR5CY9Ewf~qfFGG-l&#%y+mHKvzweJVUND7^7$QZ2Y?$X8wp1}n7E04@h)FK7 zO>jKeqVvn-dYNKVv%!yTY%*t9DZK;&Q#HAMQ`t+_4-?B&N$Ocv_+Ib(Cf|;3N+1|8 zJ%0CoLbJSUWvwGSZz(D+mMv|*)GYk{I~JY`)r*27aGe3&7$uvkFMaHzn= zoi&fZ-!&SA2S|dX&>~D?g;ddn5XNfqC>Ul{q4HT79uq|R7ruYimF~ozR=QUm5d|TE z{^8{6FF5j{Mui5%{#^0r$WU-^=&Q5ycw<5QeDLML`-27%QE7c#sN6-Q!lk-;A`N&E z5T{cf19^G}vlZErG=M(LedZA!Xjf`wS*+XqcQIYS!!>d}QsCAs(qj>h)pDrXKkFg3 zi9^98ba+_lYDXhqsEM?n(ev_{xmcj^QAL&)C{n)l*Ngl#Ra0s>+B!wO%vV)wAs9xC znd*!JX$atP5&3uobF#4BkIUWXa68ItO7A`V$G)CH102-JamxWg#zV*JAQ&s;Z{q2i zcNC&RbomPc5T-}_<-j0wbOInR{;~LjGtguH{7UMhfH1np?!l@pE}!WS4e5)UP`s2R z4%5a(AUDuTt3kG&I@e#Rc5LnuQoN zqqPF_1`k`&Q~jeL_y9Nx>*X*F5VcS)2k{G%Vb?cq2-8Xw%htY)g<$EjttNdg=!;WV zE3yj1>XGU$R-Ku3D4t~#Wo=%-YoJgia#VrH` zGwo?e=gXyRb?8)?$PpP`Sn>k#P{`ZqZbv-M{G8h5_S^DvmByiP&9Snw^0?zD5b||s z{R9Lm?SBjm2f~$xFLLgNOa&&^xt*oj7?GB_v*o9OKqtb9&3$5HMY${cEdq|#{hLmi zKX4fW%*oAIEA;4;BL~dp6prMU0%|>9 zLd1}ZPXj;GiT1@e|Hh}!BwgA~vT&>|s!bBv64pXL$w)sV9Cj+h z4$YHwZJ;+~doC&xU?8q7s9u!tO`Q+T5&Qb2aMYaA3Z=oxFv^Okg8}2Jz?pdZG}M*u zTjPnyJCr!!Y1Nr7(>r#p1)!FL{7zlClJ#lkjB2G0S9+c|#xvPgu$A^B&ox2Xboa`p zyCIIz`gFKhT5ASy9Hap*5$QI2B*1jfy<|;OX^^ec-;8m%10NayCv$pcEHAU&W|^yj za$($2r;|TIWlIC#36X6m)|HY&mHrE}XF!Se1xXmg#*^8TtUJK~0?D}EoI|vobjk#s z6@qbRa9HcQ(3E<^UdiDoo^;3*N7*Wn#2VE3o!2r>U$QNh8KeZpypa}RH?T^)O|#se zEL2$(1(6061ZIh710iujvVJ?YrlVxSiS&Hy%0GcfO6`b`dvq>9{$oy6l}eiXsWg|v z1)xWlbL5GP23kEWAL;JdM{>}0CZ4G<4LpS(XIsXL?cHl^HIn;{4L9+^fRu50`- zr2F=93ystvD(oeD$FO<`+c@AdQ>V!I<};(EqN1Wks7$bN?!J~EnE1x01MXjdXZexZ zkhTm^zgw$)g>?OJR(pmPATV?ewDOG~fBXS2z}$36rtK$QEjH@aUB8k*I)U{*Z|_?P zHSABZDorfk%6?7*$C5v!t{FMvz2Y2u#jt%9@}yCvFz~B}nX}~>xxz~o(3H-JjmZX8w=NW0i>u6jVS2uhwv55YQeq;PP8=Ww|Df$H0v1wRX0 zaxvoI5l(O6K6o7EuXPT!5+Yliy(>?H>gaT zg!E*i^k(%oXNPbF^57x*djVQ64bH~$Dd|=!&yOsL=aDq+gK;(1wf70B9ENQG#PdP; zRNg{1_blKOVks9r*$+I#R(~!*{ydn7wI5fQ+F6$k!1ErJF@5-(dV_+}M1WZS>P!Da-YuO8zq#&E=T;A1CA zf2e+ePB{Kk6o+3GfXwc=4wE{~>Yr9bdN3{K0>oqhva(&Qso`OoQoJd_7bh$$2@hnr~m5UTP z{Jc7pGOi%-p*j5pUV=a;?%vyo;&>pfD!Qo1?xxp`v=qU4J^PP3jKiDKAeNFcBTW_t znMn8>m6$dz>p>YQqPLPnFo{XW-7()K5y7CH`wQV4c9FAo6ziE8@%p!_#3a;of}l{j zG<|VeGci`A>sHBhbVw%ZP1xnTk*sI2vt%kz%#uU4Q16 z|2#BDLHLU1rCwIJS~%xusouSs^8Cpi8m;{9;+un>`V0#uA=fAS-&7&tMJ!TZ2YV-5 zdG#t;c|$$l+@J5c+y_vRJ3%?Mk>8(>h)Ln>N%ZAoxaak+&|s%&GPEUGkE%Yvpje+A zMAPrd>a@A{_=dT}-kZh$@aVi3JK1-UvgF-4G}wA^B#y2e=L5p>pdFjYCD#Q{^S5$!Kt=<2b+> zKW6>0q~4={zq7m5Nw-e4hazZa#vQ7=;SqV(DtNZq6D; zU}>7b_YN`~6Ay5oPy3P4urVPpD-7v@tVQxc$l@#nE?}C#kpzZ+eU|&os4GL+rB7ph zxW~6<8+)HM`o%&Uu|-Db9iu!=`!1LKVuY9;ed8-K36Re9pxx*6cQ@A?9UYRPA8;+O zh1|97B|`7dS9=V8uRlqy_FwE zqCTYM+g(&e8)&AIR4U&XN>fLYt!){@6rLXkt2l6QJ8|)i(;5{oVZTeR=0cli&g?HwDtV`+V-a5+HLmMC73y&!z)8~pOG$Q zd+KUA1t?U$xgNeuzd7GG0C2qT-!~EnlRs7}FU`%7QCsWHOX$&(lcighv~*l#vWHj) zQc(Rmzp2yQ9P)P?VLFytrIEhg-X!T_oQa# z1SoHKPy@_ifDX}f;Y})7KY8&^t9EIb8gp-P8eoAuw0!i`KJR219Q^c)n(-u2@9*I0 zc%q{^FPV=*h&3we2|QXy$FcC&hnjSszoBJ#nDWy=kCiuVk+DuddbI?SRou>r!~lZO zKyMZWA=&;X-7m=~Ie%cjs zkQ0?|u-5t|k?uj`vj);W`=Qxz0OS^!eE-1;k16R@JB|*2`b+EVWnA9W*Yen2QJ*&J zbyW-`R~-eN^lzd6$;%3hHoqJlnj}?$#U+H_}9UeAE`2z1LKZP z#lnhg4ogx<^dJZ&v=A+FxwXyTQK!y5AooS*)(s^V`&7j_)Q5y&vi1yj%<|Gs=HMMZ zBlWmc^I=_`r8#3`q%!h>Ni-B?lru2qt;(tZPzMPhw>W8r-@{_jy6S92v4d?ucjxBA zT$5)jA^fLZjBdsgP0XhcRd3G1Si>8=%>d!)S2Laf9GD70m1bz;!v#xT> zk>9`6%sFW3PL=6e*RltGEm~4%0J}_WYw!Eays_-7nH_kS`T*wqTu^RxKQX7>XB%v~ zV<8}pqShL4=fD~Gc}!u3yewipsneMyO~pUv?>k-Hi%2-W=>F-z1MS!6?u#dl+Vb!> z!y-0_m>E)^g_$xno|L>K-kTp3RM42?8OpMoPg0v_WhqS}Te80n|D@y_@}{0{*mqp) z53)GGYI2@?7S`2 z+M)_fbJClio4yUT859-u|KYXCVkI0+5?idi_*t!Q{{idhi`0x9Q?640R*FP7Ci$l6 zwS3vbM>nR$=|bqI`4>yCnR8Mkjjw_~9%rPA}7f>@)Pnn-jNnjsIS=B$-k@^X;qV zy39{Du5IHNhtS>-Y3BKw%ipN)cD)}o@rxTyC#yU3(q;oCj50qEuNyieBcdC;!*%&a z#3_3f)%&dJBRLdHWvNp93*{mo-L9J+eZC~oQO;nG^C?B`xuj2F-r%G)Z(U1utf!N< zLtVVQU}cPfBA87YvF`<{1&O+LMkg6664g$;MjQCcr=&OR(X}d!O&Nx-_ES-N)JJi; zQlg0D=o)CWQ$%jE+G)y zT?YwHaCdiicXxtIkl^m_Zh_<;p7(zL_`_N=XU^{3T~%FG?P86EqX%uGz=bjfUcu+P zXIDVUAJf3p2tZEu@X4mfr#GoYr7+Y-^M(3g3MY#aic~Tg6%;?qo%Mt;%g$ne=QOM$ zKg(E>(GI)Z=WEJ5V zZDf8Ok4)T_!&0$9xXte=IOMVtXsP=U&)c!P|B-{MhXUQKD!>D4 zHUPnY(_OJVmm-!V7uA=o;ikpYS`Njj6TMAdD=@c!D0tFAgQ0<~Ezf_JP`BUTwDU2T z@g=iU|9U5^?=y8)CC%Pv2KU}S97jV6S~`fmxz+8I%Kh=`aVn^&(EdTb3>;fZ?pyfC zGZQ+0CUX+m@aY%6j}Jw$u|>4Elp!1^lV$sOdP-SvDoQ7Q`xSEeyUzC_bARn4jdJFV z4l0NYN-@k&UaQRBJeKc5WB`pVXpjxTt?wiKI`R{Dof8x(M2~Xn!4Nd{P2z+iujWr0 zuODI}P{ybdBh3bhVbY`^6LP4ubRIP4N`xfV=Yy)IxCyi6_K&=WwVZJi`pqWt(k+;> zFAFJS^Hk6ihr1=Hx+MNYGbN!!+B6GbKN>`|K6U6!bi3}4aU_m7dqNC4a^Xd}DY8p?K|X zT~t|)t{iDD_B1rdPkz#*lOugnc9;)P-X}*F!?0 z+L5%>E}+m$ij2C(E;<|2SJ%?U9qSxzA|3ApW+KRTInlwLz}|423oY}7VhlWzW6V}& zEu^WwZFf+dHW!8G2jW0OLo%cJ7BzDFptXAZfM<**IaX_K&h+-s3G3OCIkOZ29t4Hq z5ausKG|F`dnJGn>y8|mriug(*bOsX;3y*=;J_TRaukp%;B;Dx|;XSm#ub;xm^z43( zJJv^x)6(Kf&~ss+P-W%U*7;|YzKT;z^MR<|+UC{psE&AHDSr^uwnQ(*#`LI*@$!y(HK`a?$zh%f zLjAz2h@Z(09pPTm;!^Pk6>3?|gfE5^%R4sb>ajn$$?#WVQbo@>cS|K! zDELVYRmGI3OH9Aafhnls)b6h4WXZ=QD|BL7cRWgH4OXL>J<+i<UJ-dW<-o6eB}l#|dm}nytvrJ~DXdFyhwX zJ|2w6>+Ie>=1}BI%TyVz*m*bCE8Vf+cFX}@3O0Bsf8Wp0ZuS#tcGpRCP(oj=JHE}$ z%_3admSBW5D{!<&2I{w0$4k=bzKp@Ao%@(j+@dL}E@7qwjc3uO{1iPVRFN;4SS^!o zdB{uD55$I!mw+&V=XE~f7BiF;&!)(TPOz6(e3C$|Lk!)N&0lu5sFUUy!N9;!qx&6a z?vF}n+<9aGbx*nEHFHqiB^_KY+|_HPbFjW#Q4TJ_!W!DZbxsRSdZ3;$vXOO$bhc6>UXP78uT zp9xz`GiCc34x``jjbvvxXeF&M;Pq^3s*^hkUrlHaboEdhULUbjFiTb*~`uH zMc4j#8AE%LwOZ}t@XZTCSO*Eo6cFh60KJy3DOuZD*Tsh1KW6UMbXA9pVgttShy=pO z?5W*f7}d^O6VC6|0Ez|;zV9!35(~qRr7<`MM?3;SW!|uz#~q&W5M+TIPc-Ho2p-fa zeb6 z>s|OFr@!Qz(^uV;?D=-Jj2oQZ+6C|}Wm3&~X9l?Sd9a*Q1+n0XYiYNpy9T_IwwN9@ zYWN^fEga40S?9%wW2Yk~^h^-M35z!g+!7rfMj%=Orrsewwv_#KlW0 z%oA)=e=`Q1ok{Jq*G2Uims+v^Vq~viy}_n6#PuV#oT2vSgk^@AOMQJF|Jw*T#(h|& z-J7)b4kl3ZL`blq-nk*FmUjY-jtR_jd;G9!R|3S)sAy`Y5!s9L!#$1^`2gHmpt;&& zo)}#F?IfQi5MZ$&#T%{vx`P8mh6~O7^M<<1uE2ZhHT~Xyd_b|fmSn+MC`I-Wi%;leb7*6CMdfv zed;2j`B^-huNWCDSR7%t2eWqM0QbOVjV#2AKnnl#MPJ!H6haP{qsCR9gn@>5=S-Bq z2+9WCOh@JpG-2IQitB@-Z`iIjS&EBB{*wq5>_1Shs&73J(e*K&Z_iJ0Ff{ZEZ51F* zKkAU8_#lwzo7y4^vv3I3TDfg=?E0E?JwUELvnpY8r`+~?_L!6PLG&tRHyehZ3Xkg`9-~JOq57h z{op^o8j6J5F)jx6f>HuWEUYU(2*`*haEJi4@iJIte6GwM(%63?tGr)D5(I}4KZO_v4ccnCg*~nOSgK?%54Nfh3xUeldDc!nb4A@psHYq`?SRCu z?hng_^fn}k&OD%2_D=8u$J@qIZnTgtvr}Y}ki0kiq_qY=p|sI$SDS;8j#_Qs9(+z4 zK|qpM6zy0nsTlilumYZNyBFY$wQ>n?@kYUZNd#-*SoB6Oti)$ci+UdGt$! zDsp+bpp~;u21))AdI2ub5ZK z`~y-z3;pzD@;2KU3g}1UaSnJsX7jyp9}Zz;F}u`SOcSaaYZ17bw32`98Fi85A>=70 zhNRB2$;N}bVbsmCnPVO?tEx~$gR+FFA3JXRIxxPMJj=cn!#Bt6I-4fh{i`!=4}ZsK z2SsWUVSIRMi#g77ch{=jRSzaJX-Wlndf*BB`=)>l+RgZfJ@#gnD?loO2p>Nhd0Z~mY9x+(v^sJsVJ!E7(U>=IH=2z& zu2^Pl8;?-yB5+4bnkN_4HU+#BRU)c&nyr$Umg{(uBLl7W1wF{P9?2xy*@;zI4^H`5YbK+mEt`e^aN+2=llbcAPO| zkPL5Mi*9qk73JXQu~%#6#oiN;9{Ighg>i#2wvuMb&GbmMS^in93&%VLqNhT%d3l%I z6{xBt{GiwC7@xxYeArVLm6Hr`dssK%emA6$FW9`iJ$Dy#yWZh?s=f3HGP)#h!8j@h zI=Y|Ys+iaZ$a;Gjx#ok%kQB18&JCf$Gw8lsg4M13EP_1^>tNB+xIhe02 zdQ*F&UZ6CLAOCJ~nUU#VEef&`OD{IQu^lwWO4muRZmuJ)cA3BFPZP&ausN=$Ve1Ka zg1vEN#&)+lAZCMg_Tsu-wHdR?{>)>ufpEjKLSoIgAJS>&C9f`UM^21h^55}|?9B@y zDrcN{N{=~TX__s>zavFV^ky@HHl&`pxpAbUt!ts!1Y8c01>LT;hIRph2mZ0c^>R{~ zix0fso&?y)S**1>Ok50iyt|5eN0t>UJ6AI2S2>&%6U_>DzsV~+zuvBWTq%Y%GkjZ+ zvdx_@v&~)+qz`#e8E5>d83h)uuKVLChve1Ol`Qzyo(@Y(o^_f8_yPC5n0bjk&<~%9 z^%6%3^>H6G%krO~7M<0ssxlHI#C)7PizJh6Xy_+YS;JvNrU@MPGZ7U-ks}o1ODYv3 zQU0PY@4rZ^r3lYHFdQzIA168jl|P_#ij|~_txhoau$RkK1aJ6DV(ErM zsuRJrf}(gkq!0IJq2pM_W%gL&y>TV;1)0POb(786^Bga=&0!CFMIE3~r8<_3CO97O zq6+Hb`?BAeM-qag;e53zMkjc1Oo zBwO;1DYt(Ziz%=SNQi-#YV zrudt@wKL*%c$rAF2gKAgx(w&;wz*npDVajN*~-G)*ly#G)+ji(xM;++8QR)x>`nGl ztNMSLlLXAPsTnc2udf~6d#(kBmFqX?!FDN1HX%~z15Yhh6Z+~rAcNb1Y$B5<;iCPN zscXEnEf1b9$1YP{!Ia$V4* zS1dfVJs)Ho1J0||m4uH#V4C$;Wa|;bM`d||eYd(i|6`V*MEK^hG1-@$2xg1toBfq> zKtQ6X+~m}6;M9JvjN!_I1C35fQm9Q9$T0QWa=n(vrKE31U@k?YI~qUgi#dgVA0O#% ztgTadt5}3JyR`jU+dR(AAuW_Vy6>l3F-U_Q#68#?>M@8D$P_QKo>%^Cp9_sYaYBkh zzvCPZUM3bna5jH$R-z-THj|}YZlCw^&W{43lAQj?@g28A4`_cG;iOs+&QBXaTBr@% zcbnUMA$UYnOerv>wqVi@WF23`3)x(ZW&T}Vt@!%HShD)Go0PKJ`jkOplA*mf&;y*p zKzKj3sx{_|DCgy3rJU-jS-}2R;^`+60e9@Az@yGv0~qXUjS2=%B!pr5F)$ic^gEre zBmwmT)Ar4*`f(`P9>}!J^Z9$5v%>t>011x1eKdi3HV_^o^o_$Kv=@GbxK;iH9?e&| ze(N(7&sZZz2R7|3#5C=rU6G(Jf;L0(k;t51I8=o6i+}>t7u@JtmLrOWBzWFYGxLa1 zEYh8HI*8(CKYPU@$V0_a;sMOPfQTkZ^aL`%<{i#``#?9^R3!L`TOYh5#w|oRKA@4~ zy{Se=JNa#vyZl40l!YQ^nOReLZkov)1;c~VN=g&lv$73ml z-w4_huWfH(3u4S?45| z-xyLBgnsC)DzhHU;lvgnO2#fSvs?#{1OUL8`y-~K)3CBlntvGH(XbeqAEq^;_ zR%(UczIV3bnQw4EhsIkdrvYg2(F$84bJsRKhYG^5y9jqv>7Rq3X}IjY(S;a`oV?*Q>{h=i5rbCZV~uj|UMRyYr@VsV})<pzg)%^aL%E$= zHR`VXp+o6P<)MXne0NVxZafbwKYG|~BcJ?c&FSWAWiO(=SQ5biOJ5qjG5$I7;jrSG zAZ%2(B+BBder}W}QjmA1(_(XX!8`ct-fLE}k=bjRn)}>;@NwyBJ0R+t(@#T%0gUm{ zS^hSrv`d40k3kdo9V4=c{s0q%^cgGfh*0hvQYf%{ldH=wY?+QagK_q`>c;Icd#C0R&)z9{LgeN{*2&I3cQ_ z*4ci;^+NM|gvebUezgp$lF^9Z4h>5#}@ zgah1`@dKWb>B09Y?!OydtP2(}+btsB*qbP};|hiWQ}maZZ5IGV6^+7CRy4l(=jikyB)d}VMGb-?v};L1{YNxWw^gE!_f;o ze8-rzccGhp4}gQb6^fv#NH)-;X0o1p)mAiBlma|3fu=p;8`Ai~w`o3Wx})t|-kH#i zG~AN9c$?UyFjNgNT zA^oh+$sY|9rGF|lHqefv4;WWo64;y7GyZm^3w=gU0}xMP)DdW?u$2h;5zHd?Hibty zp%`?v_>?Wu*fb*5D|>0#{DMd3TsZxT(76?Gs+z}9oY8)=YEY~&BdUQl0l$HNR1$hD zggi70JWe2OnY>BkNTd`Ox@IS%+U)#a?vl(EoWtKh%~{aBr8zFl$K5E=U_8kYJ5>4? z%*36qpmSPL2>3CMoIUj;B-p4y?N{?)If?&^k3>&kt&g2K7kj}hqa9q;iUmg^kR1-5 zIe-UY9=Dc6Sr`7`P|2jrJl9D}=?lnezsh>4AWLyK}YX>iCyZyJaNm&?N2f zc~SokVPC%LFKU$to#y_5V#63&cTP^+tlyBMOL`ff3WJ&6{$O`;;@UZFLCNZO8SSPX zjyM1232Dm9kq;L*XT>7*?P^oR1?7oHy!LAy)?a6RmEo*4G(3M;f73qIH8pgH9u5R) zHx!9Jv24hDhXnZ=@2|?dL71Hh;Z`tq7NiP}K@;s54{tJcn4eLPNHxy{MA|GLV9t^p z%9&vN2UTN$uDCdoTzD`X;RF;G#uF_21G2f|m_1Pe=rf>RP)^}Pf4dai<7DSI+4|*e zWM>BJFq7RRdw*YT=u}WG`8I0GCZP^^ZC0e6R7k#)aIQ+YW)u6)GQJ@hT+;ssYueeN zSb$6)Ou(X4JnOSrfz@cGLP(ffye0Yj+7;LRHUqJ)+f{^m>uQ5V=CW{IHrY*#nl3q? z_)_!J3HhEBPlkB46L$X>N3w$Vp8yH4gO3&&@5#Awn_o~j98sLezcuOh=H5n z9khHf_~}1^A-?Srp89l)068b}`U_@f!nw>KsXq|HG~WnY;NhG+nr-uq<}2mUE#w4U&1!D) z#j28YU$)g9d)@Bp%5f^y-g*An*5%~}X*Xj>VG)}gPJG%LR?tJ8Jo)0Yy*6MRMV_!| zQv`>**6o^>s6B)I-%lJ0s?Ej|U+!bTfL$^|`oS}yuAqSQcEHt>2iWzufPh30@fX0| zS)od+X=Wp{~4*xxuBrOqkr_WIL&Ww!ye_smDd8Q}c=@sx~~`{yv~Z0UEuXId^U z^?%jfFIEaW6B%4FH#b@{%o&`v`DH34GgsUF%r1R&xmWr|n)5O2h;0-+$F&J5D^LV7qFsJxivkeuVL)X|{X?CxS zw^8Ny{tLK`1)(hT2i!v-P>>xuGUR^&U`6q}J@y^21T+KWGsq1Se2;AA3}{*f(mo2p zT7jUJS<8~F13C|lrmP<~qrAToX;mzMK?=a!v2B?! z_M5XYIM|84Fi+sNw3S4Pks8C6NL0FI$Vlnjq!16j=dv=|={V9(bRPbPxh+i8MMh5i zpsdx1jD<)qA(R?Aa$cL^LNZUe7}D^VQt>DxqkLvh1ksyh%{FXBF$>RG`OAp*s)b3< zf>pcaS#hAu*KDRty5B>e)`e>PJzVIv#z%-)V;ek-Z6$Bb<$7^1HR(P&(BT@RBRL}= zZ~D2_=Q4pezbR1$wWU{{R-GuNxIE7pUmnaR3==L*JM`UcZ2Up@sx3=)bX0BaBP5a^Z%HW>2hXTX?;NS4nnUe#|h5zRTAPm6p9aMcl2|3^{1LiR8KS4=r zd!q^X{pUc+cVHt^*WK5bL!o~%U7nA{KvH;?!83q_F1V=8ROul-Y~vO;0BP`XQ4T@d z(CvfGbon8A%q3X(u9jVEI^fe%5yr41c*&t$^R9nAT6AMIi!bvcy4tg)8!+rzZ3;SIW^|^mnyoa3t@{QV zKp*hX?1%1rw&3GwXOS;sp0n$kXfb$>lTmIG73@gXNf0vc34659?f*9a6M;C4TszqumG&NP~4RGNWzaSamo5k5gdW;AW0-mR91Yh;DW|o_$amnQ@ zYVy_C?^6v<)WdGfyqF3zu;MUlYBHz4uwGM_b;~XlrvVkhLspMd@%R>|k@WK5edm6tV4it;9A3t{n}6VyXboy%{rPB{NQU$e zXku!cDKnQxAIHiksx^poTR*F+IG*2Z-4QXoSe<6RDCP)t@;%iR(K5Rr!p}VGja163_8H9BK2FcJxh+Bgwj*FT}ltH~Bw}syllG0z1nqsHYIe^e}%CXYPqs zN|@g9XrLhzg#JnyT8~nf%pcF2r9eRW8s% zbth0CjwUR#UaYeq*L7~Sx(hMXwXrhb(U8M8{0agd6NQjeqhW@RA?Cud?>;{WfgoH z;uNrrq>tUEG%jJ;)p@q0jJi+}77}O}J%J|XZdDbs#~n|lU;qt>_?~hQr%@Q7Bk!RW z!(8zyIpp7*{U#4b1oaQWhq3)At)I!L;#6x@Qh3xUUKr}LsL3(OpjG+;$03i~#XXEU zB4MRahsKHU;)&){?r`N9^ay92b?vzyG;=1-nQb-}{<8nM<#%-X`dn2(i%CWn!&vkLg@mzBQB(Ko( zeu!@g^)}iM&rB1xkvzF`uF84(+i*AM$MuAP6SLJqlh3>}-3Ui)@1P*m!Q7viIn@L- ztExt!Ni{4dFBn1s2y1LqaB8vBg<%mu_$eeM3)zTv@-XUN>DpScSmf}pmKE2{e0VrBvNia5>Ri`j!*8V9 z(!;zWb7^POW`>9{DDufL1o3IR%V;MgjK%x#l}>0Nru}BR@8e2|Efe9n{l_x(8f)N}x8i8;e=~|j1TQs-={KJb!bUhhM`j}YUtRV^G%AeF!{JLx|JrE1sHhKs`174v zH$25Lee?5!IsRX?S8IvvEG+|=AWmBfVg%Cxuo<_4W8#mouS0YvT#zeKbp&}`ks*JWrDX_EuO}fSHsPG9fgPz~n(zE>= z?PksoO&M)^na|C%k{PP@^3=Mu<(WkMB_EIAC^3FR~47Ta#!-ei!Q2Idu297o=knI3r zo7vQL|GA512uT;xwl(E6+U0mg!cNgQOV+pz=*DJ&J5O9Ahj9T@)p`lA(Eqa8$7^%F zw$fx>1`wnsS_6hSDzV@v!(mm8wx5RT^CY}_#r@-yyzvul4F?Gr{Bbvmjb+SOGlgfboxfo=7E3ktcuD-WQY*yB^ihXhAwBAe=7|*wRFU{m; zf}qP?jHJuD;kl2xAN7D|no(WWIhseB_um{F3b<^*e&@qm*Lg|#d;~XLqq1H$r`QLK z5;GZg-7>^JudGO)SaO3>JTJS{G4xeR6pH}yPR-!=4t%edyWcJPZrd=tfNY|yu+Z}1 z)1P52M<9ThJE+3t9EB#xW|4Xz$Z9Dl);4~S5*-L=4G`GC_>{&#HEy8J_twqY!> z+->LUhD-T|u9A>YH{}Da@0fDDXgiNTt+SHGCXCRAL={a<_Jh@Gqp{QpEqjb%So%!6 zn==g3@y5!$6SGsRFz42Xkq9Htc~&c?JRNwbZDHS2A!3Ca2wA8EY(@BpG%Gwa%mv4W zWFox2pd7&NC&so&tmDuchW(r4L^^D>2zxItT!HTLjxS>}EQwVr9UA?neCjpY-!l*| zpQ9qin5Q&P^(^SJQLo>QfA|t5y3&ArLUlBMRiCM(CGqR00oRXecBy!;i!iHm?3no# zR32iTnxmXVB%vWa{Qu3I!l+j$kl@`{Ins3220;kj-Z|aQv2$GW%siPEKz9-h?3#;s zo;Rr*&nEy)Fqi)yzuN@Q&` z)~*(By|pVF`A9902I}05c~#N)PfM}&SCS1ta$@SItDTi-$zZ^eM078?@~8mZUH@c328rZVb-GJ)yglJDDob7v>xOCF+A`B5Rb^rfuF zT5%M@02artiwpGw$)_z;=DxM7nyeGLCzA;5l>(t`56DU*o;iVv-FAx&^PNeG)6~pe zJAp;(z}@z!?+xC&>8GuPzatOp2xfl9@G*iJHZN3FWcx*1N&jJ>faSg?+m&>-ePm8i zQScK`B9~~(BjWbzF*0O+{IC52fJ+hIRTVp<@obIhYRb=B2iSRl$AyJlBao^zLtoRG z&&4E6@ZQQ2za2@jgV$PzXudl--tjExG<-MDb~htGb^-E_zLY3t9RXQmd_NtLs#{w% zlxTzQSB`!coag6Wtar=;1iCB`AjPD~xNY;H@S3VPv9Hh89>tE~_6?g*Zq=ZFtN~M* zn|uq~&gl5S)z%(Yh?h9Lwn(?>-b#A|ul$?JSHahM%k%sXkJbuLM0-tNsmiNPj&}-V z%bLj6U)6e9$&gb{M%v}L2RcY%U7)X!{Z;Laj+3Ri2Vl(Oi9|ACQ)r06**&!;d~YU3 z@PNv`|3cABgKFula#6#QW0d1_rF*oS_w%bFuVAj(WpSlmrg5$51kShj6&YHoVN(Ni zSNS>3D)_ihV}le2_A#Rz1B2Hj$jDO^1PQL7-2v8T*q&?5>yCrO*?zlVyL8SmwAnyn z{uc76i&L9l39KSKZtH);i!u_lXubbezM~*c-NCCJORQ$Y7+VKP)#tEvfbwE?C<_0c zU8Mw{nj)OIBh?#VCeweN0>Z&Xx7hAR)d{L2bpQ-SzQD5+ zZ6Bl;abG}$RQtQ@9Gngliy%T02zn|4={$|7tz;!sa4N$OA1T*MEV2wXhI?1K*vgx9 z4JCgA!yySjyuJiwu^-18RCB~JxYYG=7@SNru4`DPKAwm2@NUT<&ndcFhlbpu7d6fELprZGfz;amF9K0>RzE+%zKTo!_g(yheeXgtQ$Q`J z{GSf_3!m;V{48s@&LA$$@w|t<45rB1ZH8L>bp6Goxq7UH2X+pFgZR{c5Z2kqx*0T%awvnwnL7 z*3rLQrcJ`K`^=>H;ql6t@+}LAgWb#^Ov{>L&H5SX{F`{goN6eSV6`%NJ<|S|34U#z z)*~yCH-Si~boB6hZ;QHzTc6>1)SWTi3qf2~ia1PT8>TBJ-p znDoZ{*?oR%`8yqNYB3!;n%}fZgV8Lk%)_wB%`w0;ZpSqIrr(ef{*=2p_VXwK6W?A2 z*8yj0XoN2O!qAp+Gn?P!^_?$V zx|;vBHXa3dJx1uDP13s?b|ke?-X?fU4;UJsZV({P)bJ?RKXL}cE8&Qrc2U&%#if8Fdiq~8l=c@ zJ{$`0Je;-r+okdhdQ=tLW6ciWAa<#WF5l%0sM<*l6wBy?Uc-`V$)m=WGN(u$cU1jn z)RjSN-21ps^PfhJ1oa2>wBj{7{Ld85@96ouaBB4qq6cHWOs01V*^#;6Ad!hjF4dX* zCJy#;JNp+s(e~we(YC{nkWQZr2%#gmxQ~Tf{gwEo5FukF?K?m5PHsLUsxTHPAd}`4 zSJb!)63#>e_eSWey+pfLI!p#_Z#r}6XA9QeRu3#^7kJTY5UR@}yf_ z{2+CuTY51iT48?9kwzM9?b5B9hjcJVcpQQ>;5oa5J3mfZ|LEmKsP^{eIbSeezExKz z_H0qW;4&C;qa<6YJR)4{a^72X{$pm2L?{4^&|9_1%+5wp!9|AE13Nc@AO4H6BvY2_y)s@JFdqY09&Uq)YU`=`o5&MY*} zO43|RgghSp5ZcsRs}`FrfR^#6#G-f&-=d;^KX{ie$2b@YVXwP!$D)?{qy4vVxB8>QONd z(kA(R9{(bAXkM=4GPM9@`LcPH*GH?K9bG!CNt1dF?20gW#E*$A20FgA%4r^ zY~!ze@&SV}!XT`e?}m8kZ$~{?{(5UO`L-}P?wxsu}!OYNywt3kd?#%V|U!{xx>(@XKP$WsYIN{dOzBZZD1TiFf3Mz$1OOVT~ zxvLE-kX=XcK+gP}ki+nD<<@E*~Dd#g~XfAZxk+&>(YmY?gnc z2lfN1bu9s#E%3vy8U$3kr%@^dZ&HS9k0^-5vKC^n#@1#9-*{&=f zKTCGR(Pw$n&r9|`nFdr;R+W^mD~LPu-XNm?AKK;12hAc3MIAsf;qZY8sAk{g{oTI7 zte10ky+{_@bGN#pDP**$#DR}>yZf1XfP$76zatQ9_@0JpalJFhX!O3Tas2P^WNxhO)fv6H-~4DB~#^!S&zqrhr`ScQ5`G2k(jWye93<9>kavE>JMci-uLTM9tJ zQB(F%GnW8y0(P0|{3PJP{&wNoQ^09E(_j{>(Uo>I?*0XBE1ITqwRO^i)Y`k^%wo&; zoArD>W;rqDR~6c>*mTK-+)UO5kg?RrwqSyz{K$6pJRt{5&R^c1Zzh%Nf@>NwI0SL) zz!}?p6s#!T_|r@fS)c5KSzY%q@c+9{0#Il(z6L%_*2Jpa&mG6q?E&9;ozu9NWcKRPKYAkIlJ~HU~^I| zlR$NB4r(zTM*feNJ8#)623U+BaM!)ss=fCbbeP}d=i-d@@4M01vjeZvD!>j>CJ6+3 zD9&4m4>O312uY%|g6lm0I+4hKRmS`6?pCNNuCErlFpiLPcosd?!Wg$Ikbu6UIA|?t zSMJzfswWTF|K2gk0_IEj7QFttEI;mf;T563LB8VltL>$w??Fjq-lRO9#s?sM= zc&;&&2A{eR#!LylZ2eq@Jueh`+?8LynGv=AQrm0I-pcY2`&No6705vzJ5}X zO8_XsAwCzfYSMLWsUdWFG*0X8aN)70G{GbeXgA z@AQUgxYGyNoq80%b?4<2^U*qhT>?QFia~tv6K&^6!h88{uZO6{HArXfO?u_GqGPZo zviv#s7$+LMi#0RBXaxUycyM4v3^1ZI*ro@GQ|}m(ZOi(C5gtwD{JXO6<OJL&YI>k}_eBS_5$ZonaSc8z^biL3a z1h$aQ#4xB8=ag~)D!O0&bv8!muLcH~$|Vb( z`hVTtyAT2L$Zh!|)jnX7%+18p76ktL=S(*?Q6y-Q2VIV<2JPFm;Vsk|O}GMbHekH> zCdLN1W>Umj8xKWV#?iSjy-nD8iyh|p2)>=D_vBM&yZMKQhig6cN2%+%OKifG!EqV% zLUesT0VMCoAzPlxwb zQI%+3=RE}?<;#~e2rc95J!V;dF6cvl@%iI2S`RtlOOqhl{`{py#OOU)_%49>)mN=rN9G-)VAN^- za{1L`f@5*oG(}hPFxwLxkqC!EBoBzrIRU#&pV?XY?ZwGD3GJzDfn$JLo!1LS!Y^iA z)cbKQ!F!nbJsn27`v=dqdHdhDKi1D@3(23~if#!A6C z@l~mB5YNnG=zbL^dCA}SAdYMf@mw!DIngKy)76{%@OJGU6s#!TGMMJezh4$7mWiNn=}$Z97eyG`4Nqc4OO(ZQHhO zJNwT29s3{Tcrr8h%(d1!7jm<*3up}ZLB7L$5~vFx;U5oL7J0J_1v*(Nr?KGbV-F8R zTK9NF7ZUs~T5l; zb9dzn4i|R~vkeF58wk{EvdeORTanTO`#u^MM*oHE%c|@ZfstdpE3++Z8(3<(Ot7dU z&Ytet!Z@3g-8Y@s41aqmlt$$)O@I>E40K-~&8u0>wfLpHBk(?IWAS;mu4mf=RvlN> zq9>e#B*W07{DX8Syrna$XCT{pL;&o9{B`)buTi+t81$NDUW?j3xPu+67TtAHu)MpE zTRo9=>%GSjQokZK36SJ;w5#Ej6s(KfG-GiOiX2+@J=8Iq;L)`A9G5Fmu$I`g;)Ih# zk69e&tHn4NU9hB{+}uswn$P;u{aI$naHr?7L_{mF9VuxGJJOmka5*Z6MmHjz{k*x6 zbn5m;f-mt%hA+P7Y{QGQtInpHJ0-P`JAf*OpRYA9$+}b>yD~N!xE(NHj*^4}Uk81F zQ^sp_;}myCH%f-|d0dQtMo2l7BHbf_Nc2l8uLq}2voR11!0I_$tP(=itzbBaogfHY~n>C_nS1~!v*p!=SN6bV%locwfz<=%* z>h(=XaJ=0RiiG1C$giT-&PKZg~7eluI(fWYG_AjVm1^b6J8^W?NFZSqE%3)$9KGM2DvR|()&L6`-6U}Xku>J0-XZKtQSyT+b#I#`s%p@2IgPIXB zZkw|L;`#nNFNnNBpaQG^+B4nJ9fbunFyc3A-7X{|=pHefyb8qA`7=6Ptf$NJ-2Iku zPj_54vA>-X`vr`X@6Pl8wLh0+xP}%NEbcL9^u$jB5ZxKzyqG`y1Zz%W6A@_IJyW=S z2Y{huyXZ8^{2#za=gILf>QH_&D9YnE4UeD}1>rczF>>0{PXiG!5)jb~{&pXb%aJ#E z8OpSV5 ztTbzTzNuE{#**_P8%m0QaDW7RLBjpubiRG(K)U&o<$xhwEbg~ZGlBo6v{apNUJ3$% zR|HJiQduyY2s0Sl`E0hOHAkvGj@N)ZMk8+{=~nfcZZ5Jj$0sX8pc4|z^EimESG@F3 z?US+D>Y;`SnmmeKIKO6v-oNaJV9>FywG=34res3GHFtjellr@}l|TRf1xCOx-W^W) zSvDV$aRLGHrvzG;z@UBRU-zRneao*P!mFP(*{*;v0y85Y^cAyPfY@d?655Gzw+BB& zcTAkD(QbGbKF(r)5VuTf)Qldo%}|$t=XySJP`RaRc#K53wRac`BQZJk0bhq7>Z$ejQy# zzrxsMm2Wy*uJ)F1B+Ta?`M#QO&KNS^QNkViV`*#uVpA164JggZ!jok8TofuKjJi!2 zSduSz{8O5I`*)G$Y5H;-X>o0wiSU$x#LXRH-?MMZDa>;J$D@In5VkK5c93>P^{cI) zdKJ~vAja{JG>l&^O-x-jDU8Y?EO{n>p&wcuA4bcw68RQI$PwWlxV9k@|7I#qM|-GE zi42#ljAy%-%}C35kr4(xcY9vRUNfCM(BN)x{1OF%F~Gth7=@`s=mvMz84tr=im^H* z(>%nooJQ+-Cy=ji5A=NNmgV#`zI7=os&z?|ZlE0@|ciT$}f70;u zBx}306q9$g>sXBpx9e%42;Y_)KaAMEC?e#F{!2g;;cS7Bo)8w=7yi6sV}5$yg2i7W zHqf3vuUHK2S4>KF8V!em?$DFoHN=8+R%0LJRku%kmFho(Q1uzGV!pwCTZW?`laa!x z(0*p~@xnFa6L_+j7`;(;S!$CoMgy8H=nWqB*-U$n1AE`=|1M|zgUExT*C7t!`pbpU z7*2V8L6+`IkFqi2#Egk$mV3}YfXj(bNpG?eM592kSWccIfdox7j5Ut{IrEfd-qC5e zY?Bvt9o=Yt%o`)$mz{!5XJ}b2k?^Yfx(-Afvp6|3t+#T)cv;;emy__2aI(Im7Xz-+qa@nnOsXG!f9-p<2weuW=Z?sUT&xFvZuwTs%){RsTnZfZ5{WTj>mVE-Y7E? zMp;WYZ{d)9!C7!>-)C94q(Ozio@SBY|HYdyCRgso`(~Wu{?YjN{vj-4^bO-AKd%R+^cj6yfW9N-__p+Q@lZUbl8USMk>J-Rf zOMmUZ)~t^4{kT(A5Jv^$zV5|^Jz~y-eFP!*Lm*RosuYRV7~n-!(e8$~&8}dj3D4X) z$$8h@MfG3tMI15tojGs%tS`GtQGP+9H2|;At-n1=yA?=riEAy@NQg5?Q2*XtH~lLV)AdAF7Q)tT0YIN63g;(!Bal=X(AHw){2l)z z*j95H4F#>(;CId`dIe=+Sd?^>n)wlgX)%(N3O$iV^`0PtWfs>3i!@wAtFZlxyPs?}B4m9XDfq)y;WmUj3RisO)_WH`l1d}|V;hwS zfda@0K=>39bXwT`zDA|SFB8gsL&xBOkdJbazpZR9KYD}DQOhrl53rZQn2wcQM&>66 zPZ~c~LP(vJd`PFg?KK(EO!)Y1-Mwuw^ zJF;lBXZuo>IL_SOa8Z3tO@a5!1lVeqQRD1bugXeR@-WifgS77<;>E&OO~u3^+qTzf zXf8^=NP!ad%JVvddfW=&!mzAS-VTIsg-0y|djZ4?Y`p>aYIJ>J3!_oRja8#nyDU9T zJYt;qo+?7vtYQ<(@WS`O?WTn*Am#>9wgPP+O@YnG7wMK|Vo=CIwxI@S1G^P7&3pBc z!CwDe0bfN4VEk-752j{+x^(tkFq6LD5@;WrPd+q8*?$@|1TZKiqXBzF<{#*XakLL0L+V4kT-a5oef3#|;sseY^sfSvT2$ z^pHa#94|(W0CkZuY|XAzE#ku1qrc?MS++wqdTbUp~(2%%d5!F?~w+f z2Mg!PDo~CSZH)uF!nuE=L*pe_TU^a#;%@dKtTxR_*V%a^gQ7YS7(v0=$s`{+b^~i- z{bcp$K{ei0(0aoL>a&;dMa_iKl`NZ@%9)4y*jxN5NiUvLiwa&dmIRe5v=*y9`*Y<5Lkjwr?=-F@PHN2LAD|I<*q6b*Ohjt z3G%t?OZ7ivt{*5LVM{h(&C}X3!RYQuh&Lz?4!#W%c18p%y=#=wqHz!qrDO}|DUsET zRcCiGVRI!6MbdQ31|qgK`Kiub$Z|bFRl{>pC4AeRbcmBQsbxryH(-r=wd5f5WycBf zi4Af>2?c?{W%um&OvlMquIxVS^`hY$%EP6mTQv%RJ}~DQ^7m7G^1&yMG_dz&L$yj` z48BoDuwhi`zC(82hIUbLJOX)XUyZxM^9Z_y&^2i7XGemJV#ma+(JpEkB zwPQb|v9|C~6$zrUZb@olyfGVG#+`{bt_GR?b++Lp9k@H9aS_ttemR~SZ)Q}K&Wgs7 z(fA?kcHwtWD^*A2wr{ue*$Iu7BepvN~Q&Kr*n zvfsV;*pP!BxN4gtE(Mv*LRa|Fpq_{QFTFQJed6I)s8G41cm`G zbKioXJe#mwSSKr6Qlk)f{{ibd%DSL4*{tpy{j30&U}VqMQ;tJRZDvZd;B$SotXezn zdPh>piLC-FtQc{faJiR!k*c3=oyVg?s5$nDuQ`*zCbys?dpqkJ2`4ne?mXBibpW!Y zB#}`$B847%hU1WpvrP5U5Tv_KS3v2o1_l*(3W`gdOZu8p3m7P3_JL z^aYk#nfhQoqNEPmBI@FKE^^xt{Qu6RoN$na4r9OG094TV9pxY6nl?DNum-!jV3efXqE06CQF8&iqze@q5PYt$uxEO=K6e^*79Z@Y5L^B10JAY$0 zgVc0q)dv@$O~e>|l3vFY_Hvr!zB5k0(cvb`VF5%OdbqQh=?L`m4Y(JdE6`g7Q; zX0y+1EzC(ltz>N-^%n;Z^x=z8@7b(?W25i|$ZMrmnvf$q(s!j;89wpLfjk&gqRU8I zzp$X(`>glxVuM|K6BFCGpYxzEaCRob9h)-v!Q^ZiI?Ij|ksP-*JEyc{twkdt`kM!q z?KbLGX|oKG8~=#C@W)((Y8%h<1wmd&YkEKFFk2$tcO0b^=<7Hv;^R-YxmE!@6F*}& zX0v1GcBHw_(-dW`+^fUL5G{<>5&E7+fUFP08{FaY(0#Ka5+h-Pr2qwF4B-xpH8e7W z7)>nkj$kMVkO%Z73l5bh>W*OQ!4+v2B_5u~X~YN%Z?qK@>apDk$zRs35xg>CLchpU zDi5Y|Jlj7^!Ik>(6`(H5dzQLR1hX;`-gtC-0E=!jZ3OZA50ySoOz`&l zz&*3xt$=QrZRk8TngLu7BsA-?O=k`RW~Jqj^BOd4{o0-|G^XAjVeE0eIa+SJZF$4T zDgzWfeNQpuC`Gaa=<2M~RU{6Wmg^CyYU_^3t&}fS!ZMWQMXNG=Tq~XyXxagcT@B#l zp{ec3*?iH}(QuD9Eh&UQv23uk@dX@=!i~pwx5bz5;|PGL`D^hLOK(2z;d*L7fQKw&!?V5)@(h zDF+bonJCU4vq-Dmhp4>4l2qbRv2gfsIL(JRl>b=VV1>@Pi7X29U}(60u#}e+ z_?Xwg4Mfyp`w}m`65}}8Hi3^W;E*3|Aduf^gd08e*eEmXGOyyvU{1vZ)yQJk^~_sv zdOjK{K-lE+c2=FTH^llEC0xH7TbO=fxIh;%iA7@m4CT?ERVSYV+eu-E5PiE(U&= zb!*4V@*806m~SY#C{E-J70eY;1>+}f$gQ8eE$cD)4Jsq>uQ**?u=Zi{?@kuZpw*b& z14pqu=rBU&ZWur3v+nFT*lyzVNQTOGF?l@pkJABJI!{CR2~Q4$cG>$uhmgNmy*)|3 z&IiT0R(!1^=qvg&cbqthe8p=7Kk+wpk=4v`gPwOtulilKt9y_i8J7YN%6=@*{X($f zxo*+fH#&~7IDB7dn6k!a!>AgL8Fc{PQj(2I+nD-kz1eMmNn#6Q5W;eBnbAneC6;`@ zh`OtX*+h5k7TG+w@oiS5-Wncd9NDH^1!gm~Ya`@a4y?4ir5q|e7^LVX4Z8oG z!n}kG?jXIgq2{V4s+B;4bB`@97nSKzh?MRG-X&bF{x;e)E#@qVv=RY`2(BbMP1Lr^ ziaz9b(9yg<{!*=F*{4lA=o9#Sdfl|hAzkTw=U;7|&tY9|t8-IU`nKa&4ft zP)4$+WE*zet=Fy33?;!|cYI|Vxt%P+HgC}bvPl-dpnce_I+u7 ze?B=Xlpp^f9FkgK?KHx@%ocuzzZ zCh$!>IC>`h!JBk1kBX~#y(m5*kN%J9Dc|57J;X{~U>~ZhOOGVdfATp|_a3$f#v%a$ zg7ofWL2je8xR_A64q%Q%eCm`Iq)vdW&w7(N3Yo~$T}@;tR%^2w9`cKtl0Jkj;qP9! zSa@|B`!cfiDu=dL8s7m`8cyXGoC8i-4o7X}?K zGLt=_y$)&BlPtup9uJLLV;QEz9N0kcKe*A~hBf`Z8*wXlt>WG z3HDmPdm(ttU`Pk`bu-CNJ2_5Rp`OUw5sDM>R{wC&5WnjfNW$^`KkQSxt~eusQBGI*;yD@9?@sRiP3e(D)(KY1)z{kxB;NY<7E4n zsQ(D}i`@)e1vm~OsjYQK3iQ{pdwV2dQ8%l$O?uDcXn#Mht7CcgI>U=CrP>`ik zjKgCiY!+Y+l&RFzc4z^jsQsG5!W6Kw={fgnOYNJVeXiJyCkZUzjaGAfz@evsyr0a! zwtFm6sb-ep3UNvHT}~4!rk>8|@#V>AU*&vtd1t|mi%IyxHhw@F?$`h!R81FJAer}GitK4Lao5fpA zmR-D#^68CRfUe8D&-W8;vxjHeO8k$l#V+FQ@Z*V05~7s=YBOMsB8(!iD5+;?KU&BSwLwQ*?F z{2?U7&cGd=Rv*mEmV@)zu)~^vNjY_7@`h$CB%+d7WkXn0L9q;{pp}Vxzys} zeC>ACZsI54HaY@i#~eUUodNV#84>98TwN-Ddstk+MZVg|kgYZ2N6B?wsCxb?V=Ec` zqiJWpBy=xuRGpPwu0K0mhjid-Qxz4vB-}?Vr|!7oyO#9h+LdjS5`q}z^_hI;5F3Sm zn9?8lpd2Opxkm*~*N=n?Mm--V`s8QCZWgral$nQZ7?sDCJrQ@EFmQvx4S6migbio1 zh$l7rd21bNgP1=^#{2|m=}Z*gtIvBmmF0Jbl{l1*wlP7=E+BBDPNJyu&E~wf%jsDU z|9Hk(O_s0!`6Ur{V|!Q_w>&x6zEx1(P3tjfRyc^^0x?P;*)kzE13|t z@|7sJ^tUa{K};^veQ3VNMA_$H;>fJmS9czZZ^Fw>2N|Uj;?W$Z==7S>pS&g@34g2x zw4*Vu0X>nmhE2=aIU^AF=nw2}_vUXn{u)FB24fDiiaBE`c*iNJMqy$yN+0<{h3a|-FxJ{1xrQgnjcgI8X zcu94j-uCx{Q^bSqPbHxdh9uVxij=L)?+Sz;_`yXvq|=AYH0U*)>lIF1R;>kL9jL~$ zt*B0JH}|(pt!sdW+Oe{%KeQ@p0)0;$#|x4ZSe?slKdl9uMY6w}(+ziD8f z^pOw+6%<3$X|ug5@b8!OlOW~}BI?EcQ}doAoaVx(ls5lzRjIQbBk|Qt`QN{6ZR?CC zp<$CG60md9VQMFB880QsKv*{AZEIKMD0r@*3?L5=+zwSgE2^P(<>{m-&QjOiZ!8(h7m>Zt_ru=d3%xR=?42861h;+JCNqfup0wg zl*+|?H+bwuOs<}(T-(jDaaT)|uI=p9FC4!ZAR(;GS}m%}2sNWkPehps zoMhbN>_izjm<9wJBhgz&$6c;r-cG(yuy%h>DO9%p&5gelE zvhkxIt{ZJO*pwR>8`+V`ASdi)xywh24B*hWU3~-0WoN8cS@X4{C=CV!b`PVB%}ls) zYBRj6LDrNu*okY@BFoJAdPt!%!mZg#X5!CYj!Q>|tU#!ZLK&oq8g+FYW<&tJy#*1@ zum-A+R92;nOc#!^T}?$#fFctM&z|CcC`I3v*T)TDHJAwl!`>b?v^HKoqw_Z_@aCtt z-Q8yZ)jA)K#}x_H_%gT>-}8~s;c)}{_}CgZ;bXBR;$PKMH;|Y+0_YP3eh8f68=5zB zmL6$Oj-+p-0R!dP1GVJun#ZY<^_`@?a^fxN4c7s9qyFPj- z#7Z75y6z$OLAP|y=G5uDW#ZJqjY~!sU#`$aCxt3vp6RgTE1^X94by# z8t=5K0Hp~k$T4OD1R@a1$)e05oW7J~fB$yHDS9{7_{p+ml7kaq{fswbG}E&-`hsic zc&J?EpvEcwovoL6Bxy8;D{lVWvG386?*4BqKV(8uU?vYE6chr-yk?AE(|u}OTRaQ+@pqM{;y8P z?ZK<;(=ZhDHAxOh4jj&kc-13vcqKzOSv|b( z#B3Yi5x|$qtNSH`d-Ox&w;mW0+-)~Fz|{BMcQ42|O^XJs)f1T%*T?OMc>%?YfCA>S z!M}r6Acp$bwsIX>1N#|e*{l#-TLd(<*o|h>7!h{BMVAL|q4>6oz5NFsQ0}5v95R~C z4+4+tIUkwD>|KnZ)y%u7WQIT|bq>)q1dHkr>?hV{9aZjrI!MNL1wBN+0}(q=TtmEm z8jnG4FmbV7+~FKUMKx<#xI;Gck$$^om_wsdEiA_{_NE)D0D>_8A8^H^7t7McMP^LT z!-GfTqXye}WWdh&WIj{=OGj8bDDTH>@;B1$?(Gezz& zRHe|GNSocVPY~au*UMJH7<>w7@@{~NSXz8>oPOgfG8@irKcdV21)WyvmCZ9ZOKPD^ zl4n{PFPtfNYtl3xqakK*Wq6ZO>}UuiBHwYu+@m5WM3L1 zVBo+EU$D@Vd*})kwZ?Wq%z(0n6|P zF1N5<<{?s#WY5^Z#%-qgQugVT#6BlTF%m``qvfti2C>thGz9BiJ0}K``-nzN@&=P1 zSAizc)}2AH!}{xq6x#-$KY5Y7`^Z(%w;D^mrqirR7Z-nK!bp4hbK=2 zK3@h9@q(rwTLsPS5F61-m7wo1{5j`2Ggj?z#k=6>5!P4Ja-^Q)#F4M#S1*CiPfZ$F(ydE8cD7OFlWC6z ze9m&KvBrboj%On8+j~JXm0SfWe_Gi0G8$m4m%hLr&{m+N5+Er;G>!?SZYx2DQIUD> zkIeqfs(H>|cua;4;o<>08xru+NYMoN2OGR+L8GBpeQbzOUZ8)1kOp!I$aYublVw}$ z8$|%7@lf99L*h0^Wq>?UWVO-${6}8CQ$Q7m4Z*F1=MsS7xtkp{e5V1NwpWmCfcN|sFrfVc>Y8D=>>STmm$s>| zI4x&&6NDmRLaMHJMY6~Hl;YCgaBN(TcgDDi9P)YN^CCI z`dHk~m3Q@43*iDZQj|)|GLYAkayJ?>GIgjKBbXCus=iBoJNtOoq4?MSPMCD_uBpx$ zRLB9c2-bE|fdZms7yD#5@ov$Dj_9_XSQSdNIoIPUrX`9eMKo)Zwb(aQb>o|x6)wNo ztjh_QtE6)@q9E{up7IGQ5>PnP{A3m1RvCo#1`a}m zSe~rS0(>J$IhiP^nahTdAXh0(V{^8`M_PdH0n5fMDAh`BpEZzmd zfI;xz(cNU_koTNUjW_=LWl&0M57RjH!PxPJE3TXg=upT5adO>F^!R74G>+@47xk!? z=OQigmkKlsmDpN8HQBaeH$oo4S|w~Zfcq%ZJwB;Jdr?@^gq{S}h4{gGleg=+inUk2 z2<|tXdFHiQI%@=Um|vEA!+)QR?)=~}rX`vQJ>p{=kiF;-xvhF(Fow50^kShGWJkVx zZXvPBC0%$&(!-F}kP%W|Vd1`~vn; ztNCGir=OYQkSXRXEgn7Fy=xDYrVtDbSqYVG1F`guGhz5e8cq*1=I-M<7DdV~9k+{t zA~D$D-^s}=`z<)eK)}=owqvY|h>b_m=1afo3&nmGZy+Lx8(1&;?bZ-|nU8Zuhgv?< zeE~lX8{|`cp7apcOL%q^>HIFICkO!k`&k z@OlwpBZ)hmgOoVKP0h_IpSAB6F_313ak88t%}&6_5q?GTU&lKq&t)h0GCd55rkHud zvf&l*rpi|=Rhk0wxhzL>R5q*T&a}uQe$A>*(9|f2=LWvrV$z+$Fx4HOJKr_5}ette@`6qd6 z*%U5sB|lMfS)7QgYv{M?Bw;PJTs&%qK$Q&&`AFK~;GWL|{H{Q2BOy7CIQ$^8)V#0> z)DwrAhmX1;DdRd@@CNKA#zbba5vpCG&gi9PTFok12wc;qJmO+sDdOqC(A1bye|S`t zEfw^uoSMAs+;BWRiP~S?X#ggiW9ink0cpO|z;e5np!)3U7D2Y<`J*|08DoD^OAzD^&jO)iBU)CxQTuO!s9z`v1SFB0Etl4JM>^EHiGb5wB|Z2;6vv7YZ&2)~sW8hgj2G6C0M z@T+XU2}$JON?_nU^mPWS9KiMT1Szd%x zu;0ncd^9P`{Gi43i8Py@H-qt~j38JAfLa0r>bC^6FGPv=ONDLEXF`?LSUv*lY2SF)5%!xElecQ$ zc>>d`h8;>na^%8+^8-P{Q6pW_hE{#QAD`#@$I=S|dwHnco0AS)r4+L8Z+ZW|brGcB z-=r#gW6e@%P0JQpQi>S%0TPL>^k|(~rKp`A%G(N@V;>Zi@()&i(4XI8>RUSLPCvMf zJRFUTh(C2o#DF6I2V&?Qr3ZZ7`m}QPbdB~guph&{oE3*?Hnp~ zUR9GK!fJMda*a4KvPFqG!SV87Giz95aZQT;av55+b)PEcWNE6!Ti`V_9Usi5M_*Ke zH5KdtE0RTdmH&ubGM2=Q5QqiCdPEslUFKMGnMaVLsPhUfJ}>%)`}nozVGo-GTfQ^R#C`FbmremTJwpasSPRq?6T zJxt1TZEL}x4r=Yzh(P?_#`bY52yU)yZkaiuyUF>N+ZnnQbnYO~i#cRe%ZH*u`>uWCB*4vU*81Yzr8Cp6{8%({nI4A6M%A`pJ&g~6hfh;i z{A-}7AERkctyG3oRt}{gUB|s+htuM4LPjhWS?jdzAAn7>RLMk+Q#MnA@q6)0iigls z17HDP$y*ssW;%Opssib5Y2vwG>=|EJR78h0ol}_;QB+Nf7wg9*zk*WvDJx&1g0F0u zU(r}iSMt=?_T#ZyIt|ABjwiSpAxAZ8n>~ozI(~^#b`9|rg?wJ3gZGhd-u zEj|U}T*@VV6x;CFuY?gg^d-k<|8XTZS({!5Ins>+m5UM8k&=q&C_I}XgKbJ2pC2SR z3OBAnUlRL!wUGw#z>NKBPABE~2beDmxAMO!TG4VFpbBviXp1-4QW(Sys1tc3{KkD` zKrPTiOQj&h(}^PaJ=t`v9_8m}fuvu_er0DWR!+r7Vy7Hgl0OE(^-ORr8bLrqMbBGKu@z3!I*WgA*=;gc0DqZD}m)a2vDu@e0y|{ zY&KeKIUG;PsuJubrwUieXZeQLs2}ezSD)-18X$RGWYd@q?!;cmIqs$tOjv0D`{@#g zaa)Qt7!7Cb7~<7X<0&v)Q+BN7eJ|lLkT3*EbR*p7BJvr}c__Z0DSCtApc3J!C+ZHx z!9UXZYWYaq7r)VMj=He&67lQLjVT0NhaD7^_UbvJm3fEjjA5QwE2{~MSmJ+LL{2iN zMk*@>v9%H;q!98Km&C=P&0!DF2zU5=^~sGGyFA`}J72+ELmb=k7v!7P9!IW`O7$KQ|4Zxo6TT_f*W!<;39%}d4q6RJ9X&I&{}d~0KZ zenjM=h!7uVIMma4FYtxOtzHJMrvSDD{3xJq*&ev4)>?@(A)g8#?^P~=;jr>}_h4Dr zTRt`gm>3&JueWiPnO2Ta4)OJd%*krH?72UcIP}QQF!fN;c1rc7UzdncCFpdVDr5_) zSDNc3moO5Y)3u~hg%Ga_A1x*cy2OY5nirTAV>@Be&WbbkOcqk_gy)M*R58nZJx04e z6dA2r-x9~cB+um7@^^xFp#2(C+^?57usX+h-w>wX(#3<4E?H7=;?#cDZ}CgE;bl*- z={@Pa`lVp09^z^w%H=!~s3Lp$IxAM2&j}m!fIEJoVJ+9i%>bj13VLk46klP{;Cw4o zqM59yQbUFDY&V+b<9U#eZJ_8${HGo1N1j^y@QAotKMa3%AN^?7zu#L_`UFzat5DsY zf5_o~3~qM%Z7C9oky<^bfukm1LX){irt@#DyBy%IS4ZWFMb$eY?~Q%V+Zlo6)r;-n zWHzf$pu@U-VJy_`1T)eBKs=--n4HCxnPcCd$h6Y3Y*=%=w*j&m^*})Bo1(N-{>u*j z2L<(?iuhd1XVv@f>|&Z8msn3{J=FSVTo%7@R$*`how#zi?N`%ZZMC5dP$L(bwWvme z6NRxC;(BTltu*KIr3tx)`Dls@3)Az>cF~@uBy`v?eSB72bv<>wYi3$D(di;y%AhUp zNXotjLw97I{U~4SE&%_a_t2l4QL!*t#D4E!(`NU?-!E>0B#sDr&*#1{EyeLcDM0Ss{uLL+75T3F^5|&6j`pDev4)cq5&f_Y28AqKA>b}^eKZ)g&=!#T-oVbV zhB_l$r2|Scz-~|rh?v!9^(#b}D}X&evGDAq?sN7I7RDZHdWKgP2UO$@c|5Ec#n}Nm zUKPF$JbScdqu11%4UcKa6Rpd;);0E@sF%fl=twp|^jGirzPDBU%i@(jR zI&_SN{xohtnG!Bg_cOndM=O>w{mUUI3!m^No{!k<9{JEx<>xEai!K%{JQx%xu1`!) z$!=}iNuFf$((u{c1oPrSqt>ydpXZuE{{StcbNadOO(lYk_d?PZOL{lHlT>P5Lg?0k z*1x}yQuBjdT=$iQ^U{wqL`%l$l1-;A9(x2Q8F4+GJBndNsrKER*ZpaROMO_*MK+9I z%f>&Wc*)!@)t}W*VBInf0J{qk7M%bgUPp6uGR%31g{v@hB|0IvW+hy;M^(? zHmy@s6PX(=ztQPb%n+|-R|;ii*GuQ=wAvy;O1qSBt*KD+!d{#kzLOshdCa8lb~qj{ z6}LYQDVH4-d10t1KhFJPd-BGpn%h8T`8oqy{7~BCx^jU!Euze3K6h!8p6l5TkbJ?+ zWM&;4{%FN-4MwyK4MWbDhy9e!bzJs`cyFfv;BWqyL@OgBQw@}!3WZALF4_26$`c~v#uZojllh^%_t z&C@&qIdOeIcvfp^oM)_Up!H{BB?94h)MO8U5+ju3d#f$?(y=i6PQAONs0>c$p2a*) z0DSK`z`ld*oM5Ock0fv#rfZe^s)`-C_-}&^T=vQ}*y?fW%$IiGa(ixxB_G<9RIdW6 z{B_I5+ju+VG#t92R3cp+7q+=Kh!Y?&3%M3m zUE|e3KkoZqECXeXwB!M8o{Xb1k1Ak*F#^4gf?DDR!i8Lx(2Wa**znDBnQ$-k~=GJTig}5My?8>HBMr zU(&g$2Z3w!-4&dgS-HLqXsfJua-UiP>?&sn7I8AHN8cbhTR$J`wlgwpOTYM^DlHGk zZO?o4cHK5!@T}_atKg1k8&-*cUDh_&#iO(4C0OAhpdUtCAH5UFHU562Rklx49=FW% zK|zc55x-pEl<%^x2iDRZRgN!S|MC3q17$FZUj8S}iK#rKf?`fIULj0YxV$GjR52Wd zT)Y>Om@b|4tH5@|3St!mnZVU;oR7J3Q#qIp$m(h{lr$IrYolX9-zsPZ{!oQa()V40M?2syX*$daJGDFiCM_4X z-$Bm9+qUq0dFAnf4#Qjv3P%GsN?FYpi(%T@IoJlO*36?L9VB(8wmwU z&{+>ER=a2XZ;SnJx(Dgo65<%2pSM7#sJ93Av*OMwvizO!aj?Lx;KTPZR5VcKj4mIV z7a%N82e4;bomDRM`bUB0n^}re18e@qBLpU7&!-Ws;W#;7lPItIB_sSL)6#MXC>VhD z-eEz65D2^R;hE~0A2jh?N4Qq4DJaV8$1e_%Rk=NYkfN_ZNmYF)?;uD(p-yEI#BLvk z+bi_drXm)h(b29GJCchCl8~Q2=W1jMh#iu#u&}fn&H^B5)YrQ;y(z@!q1z{2 z2hnqIP31-Hhp9ij%5)37w^izH+mm#^RFmoVJx(jzZEx_$tDwdIc{WPZEqVPlZ`=yZ zNT=DkHVuEhA-jz9~5gMx+Zz34A1=#(sN-e$#=szg?*r9h%h8yOF8Ro0=Yp>&__Hi*>R&=Kb)GT^H>ATRRwF6?Xp5LBuz3Zn z2L({zz!-bVcmVj5Q@3X~crf^j1YQdr!2dSw@vgt5*U@uot@-gePxk3%2WpZzfGm8o zGtb-Y%$b`q9R>t0P9?j6d#b^n#;=ui`nGrVkNCReU`4hD+>{Fqeldg-(h;TdzoleO zND-_s`r}-r3hVu@<)&4;V_?;p`55!HghY zgIi*?M~i~%1ifmhcX4=}i!AzvPv|GOg3ZoRThUs$1KJ$0=V3FQzCp$}5=~j($oDGA zh;UfZK#K$am43V)@a^@JuQI% zHEbh1%(Qoe0?e4}vIhjq0%zI$7WNSPas6BA+ZctuXxVqGC z((n9pXfZss$P%8;Gy*Wh21i>#`1L&i^2PH$@b{z>&?kL&f46cg-jqOBkTk7R4_c8; zUW{PYq~l>CO+Lr=H@D+wt|;t$Rllf}i+!N|h+Z*fGCUYEQWlDoFKiw(Cm;eN=Zp#? zscy+jd?Efe1QD%w+AG0X`~@MH=lL!aKdHMSl5hMv$6|T zef~P_<}w>7A3{DXWkPBTSjh?$B5}}u{4fw%t=rIhXpy02D1O^Wx+3>q0&w*C7fsB68?yJ!M%aI$ zQvOavWSpk+8cbq?0L*7Ho3{3O={W# zu}+=B@`Qv0M|v)V3RA1nMFh5TP2%!$v@=i1E&big4BLT`^uqXf!FFl9&?t~~>~^m2 z_Sn>o+ldmz5=aJ^p^Xgu_+g$*vTxLum@}bK&oB-ILiPCp?qZyayYSB_^S@F7!$7%} z4hPV5XDK6-&X&{dQ6>i;#_IlmG@VscoK3TZad&ry;O?#iAMO%7xVr~;cXxM(;2H>S z0fGki;O-XAn}4lyIajlKrn|bjYS**(^}qN0q=TIF={Heq*Bm73a*|J{;^iDrDvbP) zGi8y$gyfPXhPjD_NYg?I|JB(XGWssWKjyPYZ6ESd*hJX?%0HTo>P`~YI8ny>s_!P> zQRu?<-V(23Af^)REB;sZyFeMbJPVz#^Ff##)tvY`$kbuA^e5H?{k!-@l4tX{wrw*t zH@d?C3AOM@%nQuuDV;Nan6cMRmKLcy67fCR8gxaI^j{T^e(s~?uj#Nj78v=?+kM{m zHa~*DJN3P8Ty~kYz7`*IIBp94sPC;lU8>9JogM?uD$DN{GXVJXu;=V^QQ~bYI@)Ci zniYA!Q}>B5RLZb=+;#~*u27>zjs}c+hiEwEk}EN4fHKH_UO5UF#o?J(#d zAn!7i{G1?F|FF>Alb_UBAB%NDGr$IQYF+^H8`h^PG&7R)t=Wp$0dzN-BXFi#*SwP8 z%Dn2cs#+ZMq=(T6lm~;mYYZN9^1tW^B`?@cU+G}n?6j5WphE{s83HaGLofoxk>hGA ztcY0_&`RRwv8SejO5tzE-Cop1b(lH-@UC^=v})Uy^u4ZBD}mcq8>K}4R!e$o zxVPhd;H(%sJu1yKI~6gqGVB~tk+VUGfTM6L_?(m#@t0-r&GblykaurgWT0;bi_rv~ zK5bBuoa(O+5l=ukmsfeh%cf*PEf?NHn+N%ZQk?cooB&MymcB0W@xiv6>h7~8`lh2g zAG_hJSk7q`@|D9Y^f}adl7H^;I%^dMOFH=b>#HpOjy=~>dO9#s|1e!1UKj4r^9n^) z|DtQtX?^#qL3dE3v3i&-Eo*Xbdu)W2qJ%|?)OSoH zy(!99Z{4v%)Zo2a-@_%D0xBqwZOnm+d4wNcZ=+O)UQwOC!U-o@`-;0G} zT7iT@@A`c`NU?O&L+*FSwu zt9#JpTtlf(`V#(mk}L=R>ul6pl95?{(L%q;_&6pdno925(}wyuPb#v%bE2pJv4AkG zZ0HLLe=%R5lc(qv^b+U^Nfj%Kbl=QNGKt@gU?~M;9o!F-UnvbuIB zT&CDZ#{gGu0dx1i62vm-oudW;`=u#LCwD0LDkK0G$j-4N&>G9Ojqf>!el&0VuA;zS z_aF3Z#d9z2+`70i8F`QIXX-xjAQW&dP>KS^TldxS7Rsq)(p@P>B)NRyja<=(22=lAxw%hi5e`>qxBnw`|r zWOX{#tqYae|5{dmIAXT+W$dleoN7pcf@YNBokN9Ap)=Hx#Y@_TuE#F>Ssk~OGDLq) z8P!gAe4-xFy9?y6q|b51T-D~9bnFMz6)&*|;XWrmMK8Z*uKg(jK$`>FLpP+7A}iBJ z&aYos^*d(UK+s<0*bb3e)hA|vuPuHp=?!2a{JT55+F4WkPv!3ke?V&aaL#>tY159+ z*xwegr>m!T5RA;y*Z_w@0Q!e~BX<`tc{x#)CS5$v_byW6Jn%D$_-b~}iHldX^~>YR zi=Ol=!IFA?KsDHd_*a{OJpIAXeQHCXTr{Yh7j1*>w8exPD8j0sm)@{WY<(LD@fvVf zcd%O-pyC)?%$tU+IXp(|M!|CMBd*eozcC0`hWCsn;CdMUG~t}S9JFzjq~4yYE^N97 z>s#6b@COgB2GQFQyLJX6*8W>>v7WbUh$L56y*)xXP9Ig{r~*LgGg4X`C2HP z>?Y5VZyW3|0`mjW|Faf2Qd?;FrJUYXa&c77o9_MhHd$0VGl+>8AUoBB5v8AXoHb3J z5hBcfWng4HC%=ufF3B{BZr!?~NRIc$Zg3X58KW$dP9S@T_i2TSCt_1s48NB`H+K_aL)+q!EPENQgBU3=lvF za}BL3bqqh3-i3gErz>wM-@qTH@X6#0K8ZKp~Fq!$_;nXD|gj8JfAobr?{Qu2`lujBlHJ$&VXWSPoc^%*OKjsN(@rQnX zXs~8vno~Ae*-*}dB23#B&%$D?kSk=AzuL>dV@}9L;IH6H{tll^aF64qsQXPyKqg@c zTj?^wKssewbkDNO|3Lb~Ksqrg5LKv{45CCP#mmLk3M2Hq}+evJB} zFxtnalRE2rd_i`-!BW>2+cH%bX87-yFzH^1>nLw5u2{p|7P;%&(ZkAuL}B}7tEBVK z8-nHC<$3*B z%ssCaLAz&?2hOK&vu+#v*IgeY>x&OW$p-#%2Rfr&4rR%dDG4tBL7c<*TM5ec7kvyV zRXUwT#Qe%nHT9xOvphmNDw%hxlwL@YtJ_rBimVnb59*U01SQfyg}cdP+oz<13x_ZR zIikr0^cYI0`gY0oPgRns2K*LX5L`%nPM6yr>);R${ZK?Q`BLfr@oeV)!z0+L9Ed=g&49r~tlttllG`^LqYe?)1sTT~ziI47uDm zh$Po@)FkU}?{5<_Q^|K{D*N3RZy9RDU+S_0UKD1;1A|E_Hr*2=0d(ySFbGto!K9BF zmb)msvedmQA4!@;a_!`RuefaR4sy#yFqVmfSqgS}M}$DXH@9kVU6$1I9rx1P3Ds6y zBUOVyhs&VqDDtw>eo2bxJ=sK2?#5Nn;zO!XUlWsMtiq-|G~@#{UsD{|r}81@PMwIK zrB46p7|D5`$EE;RdewQP=!Dn#xZHWda+d?a3=vYI%e;y!mI*EhXgtW3SBC~WiP6SE zdgH*R<_Uw;$5C(xYIrsXsp@F;?kgONgwm>_I#sy1I zK&K=~cgF2QW+n?Mi%}eFqh)EHsc}L#~QT(EtUCUn~%bCSF722{v=)t?7r;3ywVZ z`auHMSO8vqns6I}g?ULh^8>#Jx1YUI$=OYg5hR@#rY_5cW!m9bVOjSG2T!f(P6Ba6m8IvOh`0OT zExPcO!bj_%y7UzqZ>&b|ubbBnxmx36}6BT!ihLHqtKS<>hFc&_E zZcn)if#Gz7-iQf}*ui#g5Y?YNZdXW>>~ho)y~2y1%=)FB-As?dD!cI@99ZT=-H@U` zDionO#00HB6_wRBG$y~*^6-6*64J-Ah;<$)xz1 zfTw$|PLgy$6@Ou|6`7lwiphxzGYhvZjjY{b$^&VM$>DSaj{=z?C0m*U_i`xy`s7CK zARl+1LVg?ka5$W}SZWOzBmhx%(q^2X69vjV6as#guhTEDhfvX?R)*k)w+w1 zeM^tTQwX~sEOH{{C3qZi7v?~Qb~O^7ZN!yM2_#u~rv6+}&?ud*M}g;MJdbih9*WmE zOB#j0Ua<)I4nfX`<;WNR-r-6j5Cm5oDMx?GwRbDnK3)PClV zAr(v|cB5!KPLw<-mGPbhpEau+HOqcubgp1FW2;5>3B5mSG8JwMk`* z!G_>T88}U5hLMVcK?5F-WvsO>BWKoS6x2>PDcdfewn_e6qx-K@kw!`v-I6MvAB2xX z#XFpY7pAf+yM*&{pcdEsyF=YMoP=s#JHZM4uv#6FAH(`&0c-c<-aVV(lM?ItB3JM9 zH8%;1RhA0-L-H@i-qHd{aum?}n9FCh@aqZeThcHyvsWw})6Z>u(*d3vSSxNa3Ho+d zSknI2*AVfSM2NQQoOr@wKlnn#v;dEYAJ?X_6x&@UIESPUf~qe#to*;V!j7SPcja#g z?+H&7oR7F=@~(8bgett!$Ef^eyZX$&AY0kE?QB#yLdX+e_&3Q?0L!Ll>GlVt zNSZX3&AL#3T&kHb-vIhap58_Y$GIe0)io?XJZ7jT*zAS=Shke>zY#Y7K#D8K>pxne zgsg)QUs=_{LsY_%yrjRG? zWL<7I$ALfq^mE7%R3HQKJ^oS=RQ4Ys9g;IMwtwMaMn&eu&8~}hNUh1&r}(#Nhoj(~mkz|^xC>=^w?(oAOJ$*v1U~B_5Y)3#7tf`L$ z^k>fdVI=6n)fP~c+}$bZB+;b08`K2J$j~Nz&sHKiOe8-*%nH%XV4ra~?Z#ERR4LGQ z+#NIg&BwqvVJSHCY{)zLkp7u`Q~rKq-%Y?I;%oG!$i?-$G=Gf}?H?5Siel4gd0fc0 z2)^V%(*iSu4x=(9(!B$8E&0h+Brm@U8|&6=lQ#y2#w)X$*s4nkEk%b!B3p_H)%(1) zTB9nrhv9oy9sj%nybrlW^VzmP-~u`k8!4y|F;5tvSACV4h4JrgG=Lz67|4ML+ixAH z6sAt#&8zUugrxlJHcplH%_t@?Kb>lhdWhH`3?p&{7XiE1>`s(nrdf^2u7~Uj&9UlqB(JYO z7zn!@(rUNb<(A~a?0)yvoR0?&Gq=GkZs;D|QZsW*>L%P={c2UyGi^1-9%wbDBW_XE zIjg9WR>^Rlqc>$i!p;L1)?yy5uBLL6(A@s}wE$qK(W<;N)pH=_`^WvT)M zSod|1g)CpFUTHda)3pP0j9HqDT9{;NQ z#ip93R9=$x{jg6RObU+ES}u7;Ar^+@ROF>;1hViG-KC>bA<@W;@xn2&s>*>Wu=1PE|_77&+ynd}4$ z+4ma98J(2PgBrA5sFN;oC6`)udzWQDov=7VX}ulg%J2)R1NOGIot6aE=Q4A_U%?YU zs;+Od_=#Ye0t4&NW!FZflSNM8qbuz#@NV$_3%7R7K48ULd02Y;?DG5QJBNpSKr*vT zkG3AZ!|0CiInQe^YmPnC#c229xbnlL-1nk{PZv7Ytd)b?lyooKOuAdJ^vHX(IS7UR z+}e!m>v#GgQ;lO6m?715^y?-cJV)?di1Y0`Vm&&gIrlr)LG4;HX_DXl?uKpnO)>dO7k8eXaP9008_J^`&s{ELE#h-P~j>~d5Nz~XuZ+3<5Ib^y*%KW>~k5M zQ97pk3s7a+Qk(3vBcu{SX&`8bQ!>E-aWnNR-T+eVxvkmnE3a$xn#@k*oc;Ke+&ZcC zF_a)U+wKO{+wo)%~5_Ej@|p>6%%c_uWF zhV%&LlJC);aMd28d-I7W$)7v#e&9B3q4{~%?8pC;KQk|%(pdV|n2KdTDip782V=Pk z&_^`tyoo_}#xeqxX7Y3_Nci{523DpF_MD}OG2`RYKoGLG-c~Rkvt!cjLyi4%&48~; zboY{~rCm*t%|QXiY(8T@H8&nl|GY2(@VG$y)64yVS@*b^Nh99&=XpOSU{| zxMSt-$x!YpoPF=`?7nulz6|D=H)s#0zY#Ik%{gW#(x`JK z)!hoO2VIg?LS36CV{OGa60)=}6{AE4ZTK0J+kY3^()@GHa;yc^RW4F%Q1bDT#o|&T;mOFn)@uS-!NmH{1e_INIKAvbjpTNBx0Tb5CHU?=!FA?+)gY7t& z=?>_+g@8)IFGc@ee;2mhKLw9L><83g0LFs)yd)$38@I+Q2aX} zi5D!lp^!W2Gzn$oTNxO5qZkyh)!}TSn`KitT;koS@&pfA`Dd=;v1ju99>)DbhUHec}=sEavoU2FOe_yX;BBm13* z3f7cA5qby3jz)<2=ROF50ZNFP^N= zGd(n&Q@ZJt%BMpd=p%D+GMOd73o(%oszohIojq{wdh%6%UTvsKtkGZQaS4y#y@6+v z+kF1bDLSLP5CK>7?6!Wsk!Dt&}fnlb~Kl~@>BxoYTVj>0-m?mM- zzy5y~0OYXHZX}m%_@6R6jb~@Fw!fH%Y|u*gHIEUpb8{Nbebb)u3WtjIn|#y9bOn!qW$zmVOnirN6qDg%HodK{b}w`DX5H;W zL&~qg8&lDAa#`d`Hk!(R&t!d=N|0DIA0qG2BT%m;TxdY5FyCw2oYn1EXiAfE3#&NZjz@x8qk$m@f2k)T4td94whBp7L~y^ zM-RqiQOK&f#X3iH;MzXzjqBViqZaRL~u17O=qcCqE4qDny?*5Y)w7Kxy*Ig z?Vi#4(2H2+{G_~*`4sj%Y-G@$KFE1TS-mHXA~97}nL663*slXLxsgu7t1T<-U9lob z9P9-+tG{d2^GpfM>ek$<+E&x!6^J?pSmrS!XfCMBL=!hLBiM{6Yrp_KGu3(@k4{CW z1fqQAfjBRsFI(ztWL-O*We)^w=z^uhb8%&sfaWqp>SG7GRe=xCYGi}1Yq^BtlVo@KFh4e9N5^s;NZcvxQU4LaSi+;zH? zmZZl2v|kjP)U0Y~UKA?>zB_)woI@m-^a+%wNUOF-a89z=PJMor;1^vyUO|ggh%1I? zd){N~^M?+Nkp-=Bha8W*qHR3j_G^S)!HbCBPEYT2#8AP6*wLK2U(?X(nKr&g;&=4* zuR7zK^6ry@3FzzDRXoX}*hm&%8nVTpbA^%Vpsu5P!c;lXKq27*%R*lmlLG5@id3c* zas#aB;&aYiCcA+pKTNXU`Y8OyYo)o6Q<|;10=2~RC z?|SBu;kq=m;_0TeD&T+L{qxhfYm_U-&6S~|=U{kj4Hq(**>~5BIl^+pBpxB{Z<1dw zF(m$|1zCVskE%glFOW(dXJ=5s(QIN)-Q>L>zA#F(rTrC5Z6zV|f1g_i_Or+NTC1K4yoe$8f;B4^wcd z#D~BNqzfIQ30iBtK|!>Na^o$wkLY-aSAn!Z3B3`H{oBUiO(FBnUP`Oq zPC7RUZNAHxz55g6arMNE1WnBH)SCHCMq0C*tsAx6^Ece(1FvDNWDSj*4FL+V0ei_E zHX#7yjDM4qglJVEVPGp+`jMo)-9Pjr=8!q> zx0tU3o>V@j`B9MopQ*o$e;G9mJaK=rdea=JG^<|Ds4VSJd@g9cKWbj;orzg>q_X?& zGM#5a*ft)Td2Cp~dEWW`V1Eto(8L@5x(5)f`;fMO;S}i&xyd$l#xU}kqAZ<_;$I*1 z!5lI{^Orr@CW(J9$d+2ez7=JL`Te*(=C5Tx`n;~3KS`!*tn)5qi2RfFFIT}OUr&Y* zFiO*Nr`jyp@2O3yVZm(Z# zs&NDen2{uBLwSK3i5*NKpOI4mPtms&?u3t`ubSE%`=^r%3pUM0&M{|=s;#C@bgf|m zC~kb(s%iV;dy0ZWCzPaVy80=gc} zsMtJqgTbe$OHe;Dd6I^?H^n-B44j8}M${e5$Gf)w7TK>zl+NMTE?V9# z1x+IPanr5#nG$qi5tT4&6{V^lh84SUh?=L?1ec3B%> z6^g<-L+`6=ZXmbYT=vstj?6u82o}ysMYBRjkRNY1kbhS``akCX+SrVBB9N+bNMgfe zGyE~rV`NUd`HOS6=V7^gp#MA-*-H~A_`g=mr|Xduc&Fy35l<47_6shhzAe|?H%nzdq%>xlCSiE) zlq^y|)}Nc%!#JmI|0Ba|3(bL@LmhIgC)O`cvX;zZi}Z_3zvi9BS;>FQ!jx6f*L$cw@0*CKjhJ z=#>=P=JA7=Tj>2b*UEG&uUpLnxaDsXCN>x13bly>;DQ?O;C!&TDp7B@%YL zb*l}V=gGaeEZvs@?XF>+2^y9VF+z}-8ng~-mlPf%j}qo*M4ll|=gU>4CEE`Cg&?B= zhx~a9?(xJt`5d>w)Ot#fV>^~ONMU{bQq;cLnvj@6b5*+lD&F9F$n?-2hk4n&Ij9k; z$Sa|G4mUaZ-cdKO=O72ikx%VN(jEVVT5H=-r-=Q6BHTXuJ;C2!Z9s^qW58aUXapFJ zBz%Y6eEu;u&*OhX_8*tx{XtuEx~HgSYpIV!=1yA|OZ7&rBVCHDAXj^gCpgHS8ec=_ z7^-BX#A@_w5$5LWATf8V(QS~b9 zrvMYPV@)7cRAks;|~z#iaGQ7pT$BDp58*N_+=OBkke zfi>zFxqrnSZYI$wr|hMTtt#&@SSKOI4C>d9CKnL0-^ zVx_QkTUT04yQpTwGU9JdQa#5@)^zF^p>&5J7@~>IwokrYrstzvCy?_-eoRAMan3t3 zSeOTHJ7D*@J}urXp7s@*Est+Y-fNvAf2}J(YmJ=N3Drm|zP%1}Hul=43C&HB}f$K%RRRrDWu(#{5Xr7Sj1DGArw_UNgbCp}7L^Mwg z2$~opRY37N3B7MVy~GAPPqhGleoiZ@op0Rf5Ay`3=fLqkQB(_PULlBnl_9Su=9BVo zwiXXJ8^*yA$q#^_wF^z&@-?&iWx1lptcqJE?0^_&%KcSyJp7%JQn6L~6_IyPH}ok* zvc^0j&Srl%#Ak9kN2Bc$D)#Xw3YHE7@W;x)L4G$C`h=U8IVgN0rlhWW|2Nk!%Z59G zugQY{>v9b$wQws==3t%vJi|<%i{JjD<#rog(d{dia4~fw|F5 z&ozwPc})2w0NmA}$-f#py>x$hE3WcbOcU29&ncS7G0_RMnTT#g$m>i<<+qVQtO^&a zvPEH;*!nB5NaSi^KKeHM9y4T(%E?R*IqP||IX~CYzK!jtZsu#}qoyA8b(+gZOIaKB zFx-2!+5Kv~esE%lUSmhuxfP~;jh=3q;S5q$n}=lm35&}&b6MWD@3$I$MhU*KdAqjK z4uAj6_e6c_7m1gqDo=4eL;q}o_ScBov7Me!*A}g5Ne|EHU|VWYZ)r_ak2(48OYT8n z!*~fVRKrgl=0W(!s|O7z=Nb8PnL@rH^i1o~3rGo9Er z2XpXRW8u_YS>k!zaAf=)%^XPLU|RA@UkR@RFAO2~VoJLwkoC~9bX^7&*>3C>E6cXT zWJ$*+WGemycDkB%L#q@@jABob{tjJ&0a{0b2i;hz_DEP4>5zbuGUJpx77#;Td^57* z|85Slmit%Fi>gW+<}ETY16O{JRB7wy{h!Z@YQJpL(<&7>mJT>5Yf$G}@HQjEUXzDS=-@&V-R4E@Ugnx)|li!i3m$}tzm{T{k>*TAgf))Ba zHA#I*Q!p&C{Zc_>u1{#E2^FfPoBqby(lqjxDZ^pi=R&}~jsA7{uB0hP=BTL~olf>`0Dt}@g2n!4^mP=zeT_78&* ze?!Qwzr(xtC*$RV2MGfH#i(PDSZ}cO{#0D9dKCZDE#;ww@9HP)wuX@9CMVm}st@xd z)Dx82$~2&vhv zdO2x&CHgh?h1*&pDh_!##-v}LB=ozGi44#)_PNWKe!x-USrMX0|9my%Np z3oGzrIV!oUj>0a3@>N6}G_?eRBHDibY*2qQc${@e_LQq(5hJ5z#A4+i6he+hg!Cyh3IG0@9qkbasDvuJ7)YLFNxHnFGyKp{~bs7urQ8g@{!JMJtT*Dq&6bl z$%{_6BpIgCZfcDsr9)SRc|h3zM|AuNb>WmvQ@^sJvXAPwo1F#}I$tu=+s*Kc%cS{!}Lz zU>3{yw|1D@GtVaL&Mu_2O7V?cVE&CSlUqMdXcJ+og-4aZa5sm}lTszOBHWD;?SkfW zh!_KcQ=v>TYLoyffouoAu)O4KCN}>^pf3Mzcv)~&R>|qDY>)FTjC&n-e<|8`mnSk!+I0$*0vyHe1}KjDy(&l_sRlxaqj$R|A5~)NnQUv2LE*e zrV(1?Y+vE8rP3~l$A)^%=1=fYY$zsgHiU_+@iIoqk zC#56}?{CJIqEA@Iv`E_ ziF^GJ&&}PYrTEqBt3mTwoAqbGdjJ1)x}{HtYOvAdTtW#$Ypn6Th?=>91l z3_)YwaXbZw&ZR)3Hx`z3yszURl9H7M?VsGY071j8W~^cxv+S>%Y;!J;NZy9--Wh9d zQ;yr445t#ZV}($uGpqFtw$~M<*w(9yB9RWawG{wrQG_1SCxW>Ng&=Zt&ue3&lH5e( zt#H{DBMi|<#-_d4)XRTwq~|SNThKwh8IEpsdH>~i-ZbpShw_rd%lBuJ{^LcMb}p9S zmx~no;AvxsQ#j+@m^WcLON}*N@hk@M5_uxnnl8Ee4Lq#_FUFy|1lmEmFDWN(^>rgG zUa%EL(=W*tON7K`9U%0#KL7I{L6yCYzSn=*z)*h4-}+AhN|zp~Tm<1%L=ErpLu=aI z&lKkQ#K4XPV;*THVWy-OLg61ZtlC*>gMy!t^TU;nGvH9UZXygcqMCozXD$odJZCw< z1%3Jy7(_9Kh{CqR#s|Z`w>+z6hDAKwwp}RXOu{d=C>z=QcuMUPUzt8?$<$oIJd~uV z<}4)Omu1&!@b&qcMfki4_BxEbeA-Jf%QZQoH0v)@ z3AW#r`w1?w#;DgPn?hnMPwAAgw5-P_-F`g`1*y)y5KuXS*ErMI)b`ACqQAobr#1Va z5l1=g%4@g2dCoVFhJ`;SuZ>IeZxa*1?1~xf&obyVc2LJxx?ql;v1;M>7L3EHNXdkV zK_X1);9O1xRu&V;w^xq+Z-t=1AKa0UC~j=qBZahQ{f!Fi{98X9Az z^zy(Umi-^V(u2t1QCZLCylYi&TC~vA9v!XAcqN!))JU)r+B&?eSRk3RMO&?aKd*wj z5Y7v`Vllm-EG1j3JdO=4OU&)dKBE&4aNc{AbZN>%I2ebBnC$%SCh=v(7W8s`TH~r) zi6eE5A_Y`r{NMJGZ`YA?8a1uKbJUvt9aYYfh$Z2?hrrDq2o{qxI*TOo+7&&Tx#@&V z&&GFk_@~3uOIulu(xHb3#HD3avA{zGABGJE+(Q}^0zWc5d#<}OGr`WpF?AZ~! zB`^3>a_HRzKGUYuqSiQlJ8L?UZF{BaJ?XwCd-K#6xdsvMz}T&x5?Koa8Mr_U1o`@- zQo@0dTGZV+B9&LnaAVy0&pHh;F8Gq2~T*(Ec&by zDz`i&(&l_U zFOZE3Ax_W)hn^ri9gFPiDZvhPUUJkHaG4;4LCA7o(1z(6f$I5~qr}arjAy_IywQ!P zkqkbozg2lzzInjgGYMQjJgn1L>#uxD@n1LeAlz)_heL#@!Am7Qfhg|@GV3`>J_urV zQF$OJ4KWfYF^+_NQl3k?i(c!Zi$bOmx2f_z0ODU(IJG&lV!^Q##iq)GQ*4Qf z4o3ceX*R=B!Ey=Y$0?~EHPGIfQ~;9m#WsuIwHzSLNn5a7u&zClnizAAagVbDn4xd< zmlFdYOo=n1ANp`;By?+zeZ6)qzohDom+HST0`&2sseIuzc9avrliv81Y;M~#Hh_HH z28w@q@g`(93B9}6u&`I$#kywEZWIGts%eiG8Hvfc^?$IT|GR>wfE1~s+(%O9%xJY& zuVx`ja)Uz)eiB?b!J#XN$r;r~JV%K=yy~8sf%q*J11{)B5~S3GN|(;C6Yl#%@|#NM zX{vwIq$A$AMvNyg^H~>5l7689r`vwsq8j&RTHL-^Y||UUJtKw@oBicnzPK9N(nwN# z0FHU6ue4VCO{M|klgAAbBQ5J(+$A&uoL|t366V2K@c!rg$o4|b3~;nK?KMWb`o`x; z@=L5u)>2vw6gj^C@oju7S#g53AQi5(Jw&z+N$i8g&Niw$Og zLr2rN_4dnM@8bk8Imi6*G%9LmQZEm39sFNH@&r=(0=!qXMC?-g$oBpk55v>k{sv(X z2B|+(rO1=(vq(s3O2$*NLVlClA1hk1(rBWPG?1Gf1Mpo0kXV=?nBB(j+Yp>c>}gJ# z$np70xT<(>qY%B$i$p$!e$SMsF6aA_O)=aXZik^2xi05z=ixA{hRNpIjwmjaTXf2A zZwPq0Hc1_n?ASQI+9*LCk@H1L9Me>hXxgluNe=x9p5eovlu(kRk-dt|spe!D6BOXx zIc2(sT_U^Ru9arNG-q!yEl$(k6?!AVxp1oT0Vo9{&N~BPF00lR;{aEe0-IJT^_%JF z1UC6YQdtcCSarfh#&`d<^$Yi9jwb@b3YVltqi4lXo%BY?q@3JjU;7~_f5n+PQy zlSOH~kAn)v!;Zp#`dA5SeMs0}vx@PwZPoN6{z9H`Pn=rATDPS&xh#V&AJKE*IjQzD zn+R{H$e>UuabY{@CS)5T2-XD>Cd+1H`nr@=YHlt7j^a%N#Ypgc$F|W2at#ltdxFd4c^|QWN?xVQL?TQ5!_0Eo z0n~lG^6=t#C2#vq>OCvQtY2z6I`j!bH<1bjB47T&Jq3?H-nTwl6Gro{p%^u-Rya2Q) zNHCFik=;%sIK&a9D3^z7&cw+mf;a}^+seNASoCw)HLXqcgnr~u5@xnVOW8bA-Q)F6*Mq_kv?fH} z@{;d0|8PFJp1VVeQ#vfKCDMul1v$<7Z(?A07}h|_!9u<^ew@LK)d5u z3H5eSnzaSM;XWUp-`-9OHel~aq375&Mdi9q^S8YT+O2PlB+N|x`d@&-3GR<4)>=Eg zz{8SGAN(#*1AbXB8+@Ue9d6&3?+Gj^cU_FbS=-e&j&qjt+HElC%!&Rp#;h26_-1W5?-4x@gWYc~)-7^WdXJyn352eG#mGQ(Zga(9c!kW5!@mnO zVz7Iebq;@7cE8pR?G4#!ZTUTZdF5gLt*!N0zNbhcVuHRRcaDq%hG;#L-So@@{=cG&e^a<2 z@aX9PX=)=MsXF4<`(C!ONak}m7wQk`aDNW>6OH4ozCIK}6P>=!j*@tR>iLxRKVMsd z^2jog|IH$TFrb2*@9n!=EzL8YF^XTk59-U#82z9L(BXn$F!)aOT5odTwNmf6E{I|d zR*eUZIAgE^JLFTt-A;QT5E#q&NZ}o1Q;3}>NVr&x{*R`!42z>{x-~Ar z-I>ANgS)#0m*6~v;O_2jg9Q!l5Fog_lK{cpCAe!&^M2R)&97?-uf*=D*2AObZGG{fw5VlKt58!zj+|@ zWyv&xZ28=wt{1`ABE6dR97rT$TI7RnkK$zIR`M~~3pH)yp7=SRal#ryz?SyeV@>Ol zqTYE=;X8cx6O_&GphlssByKZ^0v-{d4%v}H#l`Hpee_HCz-8O|$5gST@=rPc>9ux> zlu97nRmh#1>n1;PI33_XPqYR7fckGAa{LsfQB_{NU}f=@;cL|IgsaCI!g7~Ls7M0T z7xp^E;K2O)PZiX#bxhO_1H*QkXlBTkI|r^;^4;3~1e}RFQE=QUucWZ{yK!mKBcPfe zvkVs!LhACOMPUpT8DB>S|J>em)`%nZ(Wr0a%vcf)C9zhiiBs>ceMc{dPt5*<{H^F} zxb~qcJrVY{KG9=QUV8x8nLnTFlE9xcHQ7x4_py4d?wM}2-f~=E3%II6^zVUNnKaKW zz^?pq5lKmKpQ$h(Usu*$*i~(D@nBa)WhIVq>~{4mLw}=tZR&luZI%bjwz3-lUrUc+ z>(cGC%-irf$f=**&+=$>u>Zf(9*mSv7Ex2sv@w^d8088Z<@vzsR-Y@~(yOj&9zX=g zv@;CGB!GD@^=SW970D9>xh&nwww z*>$M!spq|POetYzlecLu2XT)~&I2Yqt7<8WY~a=>;=-sgvX2b*V15W&39L)JQOt3a ze9MR61(R`HMTdmkON{lgFz?EKMgoQwp)^oQyqE|`F&&%PaI(5Hs;Mah#%hmx2UxN* z17VDGtv!CkDy zqD`$3Q|a0I<*Q3S8ZWNW?SMm;UDFY6wuU+g5Jy0~@8L}>!QzqYR5pM8dx}YOUpRDH z9U&RNa}n8F7=Zv#DcV;+&}99_j)74J^Cf)@;0b?MKxELzNQXF^`6Pu71vTHFL_H*` z0V_tK@`tkfYtOekI%Vg-HJyMR^w42ZmQoeG@vD}|3R4ax2y{Mg@ZSV-x2d82m9+c; z_jtk02**-ZxtUxueX(^PAsh@iFdjz%egua%j8g1lu90RzuT9Spk^B&7$dn96mQ>v| zm@+EJR&6`xgAU}X=n7#53VlJ2WC5%njBVv@ge8j^@$g3gM6LAQzpN+Z3o4`4ua7wh z(Bl37{W0c<> zq~(wQmDHqt@cVG)fZHNNNuyc}B}x?1Cg*7u8vcO36lj+X@_B#^9%as&%^CK#EAgRl zH}xFq7|9}LJUE701~>Bx6G0bRkp51-Nu3eDYPO6@eO7Ztdmy4Mo*~VYv^0}4o1|Pp zRBn1wHREH>3(UV}#9Y>uzjKVWT>^S{D-NPQJHbFq)kLmH^qOS%!!}CRLmyWg5Ll&; z&!SK5vF4WEN!0)A_CA>)my~jv`BnGrG9h4b{q4QPGN{-JC*Kc*MaQ(A3XH?QVJ}SM zX{z38x!-pNScglq1^}nP@IANiFEH~Bw=Sh#1$Z_K_Ln?$sw*C=qJ~}}s36Wj%4U$N z$fJeNvduHv{{$sO2)pEF-h=Qz*|*1OJ2>i<_jJd9m3cw2k^(Rj< zp_cTlyUr>*1Akt+q7W8P5(Tp8%>|3K)PFar{l3x3OFgQcu^PsDJlfa@*j&Qu%YL6e zdPzYEKreqeCizlX9wIe5t%^~VN_72=h3SB{a`K#rCb}T(JIl?i91>r)f06lVCu+=o3u(_182k-zOjf*4N2n4Y zl^{ctpQ(zwO%2W1s~#?2Gk}JRJ~0W2o!K-K>h|*La_Y@{>PzA0dW$GBdw`$dp>)!5 zJ(beg<&#GD{fIUXaBKn|1`zb!^p}krp7vj>Yi$<7k!+oi+_X&An0t8!YN&R23p`B8P$wI8vpVEGIIcVp!ho@;p#Tg<5 zp;Gn)QOH4cro?I(a+9Hp?8J&PIdSCq>te&wd#k9>eb0Wub)Fu7QcU2DgvZ~GQJ{w6 zqT5Cxlz61MM3^vfgPXzpK-%}n&zr5MqH^>!NVLa41G@yXB(AH*%FSBpb9@ax0Q&~% z@$=1LKtPUeJ_!ZeJx|}ehdb`Rp`+?ukeapuxhTm2oZpCX170> zXElBO321X~Z2Jmk@Whavs9Xsf`Jr5JxxZIDJ1hcfVjRyhy(3}x=|XLuNg<+W0Xpni z%L%q6yX<>++y|+yQ$`e~w0X%%{-xp72EHA;D>o!;1C;ec$$g_yW~yO+f^qJ9Z9hg! zpSp*+vF?`_+77^uO|i#A zcatDk7w@F`f4g5pC|2P#F+ok1^3aqiK%cmM_|Pe{c0n8~VLfDV`ddex~g{Y-QMgPckWpD6l zgzk8AGS2WeI{os2EXiuly7ncQ{@&Z_b;i*<{$|G8DtkutiF|adXqMyhy-7YO3w27g z?C6iG7;S5=^1ExZ&{R?~MyZ*3z5Y;4_kXS=67|zICkf5gq=1{xhBZM?SvsQl+$=aX zFPMZH#xx6LYsO+Gd!s+~AoHV{^G^wS?!bh^`G|0dGXY9Kz|}k4F{ZYxOo$JQ$-bOV zFI$=@L-M=)jF;Y&qktXchG<^dKiR1*jARs_(ca&B_Bi5J1nnx28kHrtZw{sV#Z#D0 z{b;Wgk{ecy;_roVMV{grVw}c>=ulRvVo64AB)arKT10%@MPeFrKYEg5DI}iY>yUkg z_Yr*!wBgk(boe&g_MbtLwl^)=`+u1XZc)2``NJ#cvU<~kZ9;O|?s@55N*qgJt!(vC zmY#FQH^jc}W2)zIFGTA0F6JjJK*E*ZC`zU|W$BDY&C9?g7^Hpka!lxwkD0O9Xy&T} z@BpOr-}uI`p;i1OO4Ex9dV}<528^^na4_rbf3)NJ+aojA5QyZT@;e zJksD#nRijD-=gjmay7w#qT;OPUJ~(im|CJiYI;t=lFWX5(^q#%_^%i9*NIG>+EiC? z*D#oOD}8UGH_N5U>{MAi_~nnX^4T?fluonH&o`wJ4HMI^Tq_s94$&4x64vRUC<03pY7Q z4b^F?w?UvK2S{=CeL5<2uj4QulCvz9oLyK2Ym_Mcc#S3H|Kxr5m*IMU68O?SN-5X8 zzVwIL6s@GAT`gG&Dga&Ky*S?WF9G}R!O|nc=qDRp?Hd3el4d-OB_&n)c0RD9)_{HC zd4vfmB!9QI&78U}I5?coWUB-lrp$wIpz?Ai8R0FmwbBG$NQ~e4t3IJ~!WCX(Bk~g( zjIW0p#-``%r1=JHUu)+uv+OuY#lW?=AU)a?J6j5T6L0jEwfi3y(77;Up zDd?oi;YbV=#&v1^j#7IHiB*i4h5VyQUwu1>D7E`<$WOy#@e1 z#`;m(tPvoVo#x_vzoHt^V=bVIv~5~Nd(maB8r68ca55)5iF$B=twevAx zhJ4g5!d%lEaney9k>SnI5WLchDiV229XS#=lGApDkCpXX{1(5irA3W~+0V;$gzTr; zTg>@eALXC@XY8bxA32VQ;Krb#yWIuG310@5mvFm9g_jqbl6vuf&UAYeqw3MEm*;|4 z{_~%q7Or62wL+X9wWksoo)(dK9nnKw1ta?Z6=Zj;vMR9ZF zTE>h@pIbps*HiH$9E{lI4TUOk^tJ+Hf}PRMJpD@0B?na z7(8N#YHiRX!1G-Ta}7z=%#&7)S=kK*szT+aRp)WmLEo!WMT-dam66Tf*FB&qZXbY- z(mKx8Z3u{LI?;z-jOB9-;*WCSda%B_kE_o24R@~<-*RV8Q=TnWdbi}7%RKq@@}OK$ zSA(`14VLj`{^NIK$50Yi2n-aI-~P88))Ew>GSnE7zKy&KC9iiDe;cfARE1;I!iS|~ zJ1aKenaZ{!ORAy`BanGUBfDrtU7WLyF)(-l;rQ}0B6vl{WBBVqE5N?K(tk!swp|}p zG2!F&7a#}$0t4ekyW;x7v4`7TNyj^;*r2mK`wPep($=m`m9v0Gct*i*9s$~pmUrp@ z=PpbRF}*w&36=4|`268CfY`1(KFB-n=F(hrLZofcxt#Oc^<%XUpmGBR<*fA+ji`caDi1-{Kx>ZF=1 zGp+?f!~UHGgihJ4pU5!y#rS@mDbZ>RL010HMCBfU&Q1YtNV<`4LKR&XdH1E54LR>W zPjm?)!e9&Nc<|zvA25}?x$Qvonn;b0;PiuJPbUKfsmPgVON;O&uPt}i`LG8y!aku)ITPM!4oe1Jm3_0U`4c?MH2`Hyt3X{;&5L-(v+uEmfG1o zuv*|NDA~5x{t|n`0M5rYl}EQvL?4ZJ{tNdV$|RBOkGRvov`wJTFLA_CGLKc$+U^n+ zj-2bMYxnwh5XEZ1ztMD@xx41Ogy_(LBCjlYdSnLty8$CMQcZ#(F@Bs+Hk}TA-5PRAgO|q%{Qypu* zu+*!huhIEW;-*9w^yJlJ-qF{5DePklQa3@l+=3=)@$L9+L|EnB4Ze4gV}O+J7eX#p zul(AQ#3H|wf?%W3`}qr&)rjb7qu%6UwtbCwF3fmJ}n~M1%Mf-EP*3 znh?h?|86nl+_$A)BHr*s?`HotFP-D7e@t;z!Q`8z>}BUYXrm+98`P_`8*g6YIknVF z!I$X?`r_l~o^n%Fl}L_%nS$(upEUA^MqT>8XJuc%>5^7AI7`D`zcJoDw$u}26Njw*Aj_a9sjM*w9DGqo`Yw{`rczAfjD5v|FFPBq45mz5kbWuQ;5Zr zUZh~0ICqH)0FSB3Dai;v)PGrGCVHx-VkX?@m$=N@cp17BvA_F!FIC1p^(`w4o`hTT z4;sWnJ3i5`iVt1n!2~ezhhzAYaOSJvf70nd=u_i!yCOI$zn80UObM$yN0^QL3csh1 zxi7vAVC-hPn(}@cp&`>i7)EqkB#ujRp$8J0u-s^Dg=cp@c%NFGhQGiQiAmE8g^Xpo z1(5zKu)h#G;UsxPg((h)S{F^c{F3l1zK=Nj)V+L7)0BZg)v6RNay{iDSnb5|#^O{<)qM$+O5J)xic2$|R$QDDchpO3M;i!XrwII2O3J3CgF+ldu8vlgV`g^ zcMJ#mz|i2O;Qf3C#s@0cQ!hC>{`xj#@@d*Ut;SjyPm4AbQN0hkO-E=^9T#0gX^R|) z#9p#Ycr7;2!gyXj0+kf|-?wj^UJ2eso(p*0cii{DVk}OJX52;Ic$yZxJgrjg0ey+a z^PpHNu^0TT!aClJxav^T@;6%#8)x*Kl1O)8cqxP_3-F2`c=EB<2Ox9az!+0ukSPagoK zUNCyl94^Cw#Twyd0)8QU}YH0w8}sv9|7F z3w{HF>sL4g<_PG;!qE3`d-=EB>K$FMVF)F$LNrd;Qn}VO`U`~e8+(I!^)q^>neqyynWAMbEk! z9!Q7_k0m8d!x2nOHf*6Z$4u+gOQS+sm`NSamC489&(ZEAX+B5&v>+8Xhfx|_{=(7s zeIc-zF83L4?rQArSZ&SvXxmx(GT!|X0~i5}0Ae7X7XTdbp$T`RFU0--SpdCE$dN`E zu&Yq5@&$>vn3qr0=bEI-FmU&nh-bgOaVRPLvAv}$P6!*zRwAJg-Kf9w<@XOG&(Um# zL4#ff_tZQ#b=ky^i{(3hb*(NFW7`A2op$tu9>kLEJgD_=CwiD6&xi>oTI{|= zRHc%~cTwUwWk5FZYu_qA3Am<11LNvgXIp`8%2O>*t+s5Ze9s{J@T=jU(7>7_ZRO%> zuiLoyQ>J5fXv@LZ5B2Hu%^D^DFZeWn_k+-G;GFG%fsFV1(%8Fm<8Ky^*LnZ`@}D-G z&rDWlblDB-9M_I7r@ZZFIW%=v5!EOBy=C~(-zy0D0VG^Y;IkUi^RBt3WCL>qk^;#b zj_OAqAtWaWOVTlcZB&Vt%u#WBpSJR!U3fcz&Io$nAzS?0vcgv1{(I;EdW;JAuIcDw z*q(K{jy)!6WaH%bVq=3^>-#>FH);uqRB9iZ*qWB2+ z9KS|`e}t%5x7A3Rh%gFmTC)5$tgyh82F}V48%_iox?8>Ktv}ez9;hhr)2IU{R(q4&h|Ru}+QwudwwIz(y?ulz z%!hoOiH3eNl!a#IFOw7&*PCAQ|H783cV^4BhbOi z@_biBbujW-7Tu=%#?yGv()mxAj!okglC(OAzj8xd7014x2ioJx8fQXci?^jgu^>07 zku(2!)@jbQUgF8u z>VM+wpSq*Ph>`eKEE2`PxNLhb%#KK6&GrmuQ_J(31b1OuU+h?7IZ2RT6vlt}+#=Uz zgvFtg858$@JN{m298rOx!iFCEO{SaXqA+U>)La!v<(y59_f^l~C806|$RIQMA8=B2 z=OXf1=}nQAvS$e>xFBr2!`?f0%!k7B{rQ}NvrgM#9tchXJ7I2^5cb`m=u9rw&MAE8 zIj@5@F?!y#A6c%)?=@8a_g3{th)wRKgq&;xs2 zz8!@f0eR+`MB`aCxC%1pS{@=h)RpY7!}Lcl*M(-uN58y*IYnlXq4~{J+|5@ybTIGt9y@4yEu$%n@IvyUc5*El&RZ-kce?B#Meli)(xoy;t zF`;n`7ehSxd#-G6Bpk`Mm|;se_NZ$H{y5?Sm^9|1Sftu}M_a`j2*(JLljxLO zg3qiOsJ~7A!|d{~^)o$S-D+(MqP2c6z`0&j4X&i3-DT#z=F<#*MS}T_U*sh+J{dHQs1tTiE zllG#Yg^G8CYha)A-GJl6de!B*hdEVMxWLL;aVH9jUEj0;?uCCB4Tr1=J9? zTsvXgVW8Oomun;Jb6B})zAMQYXil99^HwOfxzGM~_gTiFyyGiOq#24%CpD=b2zH59aIasf`SPv97p2JsgGXwl^rGI4HCb znWXU*f5Or1WssH2gx$p+mGuv0gNThoy}KcmCK&i(xHB1~v$5S2o2hN(n#jrl`VY zX|w3nOUc9%QV9O73yCG>u8?gcBO|*4{7toM7o#*MMVue|n77Qk5S? zRhgSg9M@NvS?ur`n*97Q>X}*PO5$sp3yHhkI+=Bszos}0>+P-_k?$H{;|n|O(KuYf z{rm+!+WF(;5}2(m@~XntFGfb4nzggJ#$V=feR5AOkIf5MB4lD`RWm76_aPc1ah&}a zm%FEA@NFv2uVMz(? zW5T}&jAvf}(wo9m)6z#ICD6XSmo6%zyu9#pOdOGn8t~=RC^z}NYwEoPum0AkwCmOt zH)2ry>WuOZ`Lp@4-yD1*PhK%aM9Fs~i@3mKd%g6)5)d*pJx6y}sq}o+3FLE=Vz{jf z4yLxN4U2i+AjoZbcZGoq;WoqlLnVrf+CF~7`bm@+CQ6+1Ze&W&ac1&!DhPX&g?c8K ziMI}J6i)WvUD!AX;r8K*?B`n|>2-93GbCjN_csyUaVrRMF!}>QxBI81U>KRcu=|&R za{mr2IWx!MCz6s_!tgPk+RPAoCoc3ktHfxqbBaC)(YgOC&Q#-wfMY4XzF^MdbW;>V6f0jmi=TsJkQpD>pPEt|H}r)w}U6a@A;0K4L0X` zNBPsM4%ig?Dpmwn^f*~*s2t~_i@ZV7WH1`9-lP{sug$gGwskL!6Y%M-9M3|Kw2SLl z*8n$9v1;DBkBi8^m+N}>Q~i}Em&@(Jt976A(VF%%M!>7bQ<(I4eW2*#((t!sC%*o1 zKkMG}4yXWD&K=Cn3r`W}E9=bMTxz?XDtvE#%QoFIR_R{vLtMuVqRNE2usnBvy7TX; zGFdDyA}k$n!TLqSj8m~}d=r#9^YY61*c_GZ~hQ|}3aopIJzgzwEb50&rY!()GP8rLcJ@jsR< zzwpJ^5sGD-q#8%QMRY^EjoSUH$*-H&Hx%MLXaZA2n5{RZzEh$!!gLk)G5Z$cUqC94 z-qv~U>rpt6=ccRl$m;w$O)RQxj0J}I&mi`WGU_hUTI(81Ls-70*9I$HW!N7iw7Rq0v1pN^45LcH-S3k_w-(@4 zoHgio^Y4M-F%ABycoxpuZHNd6ldtWV8KTNrzQ z1r;lC9l)LB%+24uh&{YLpN}te-EkYlli0U>mnHRTJycfQm*z~B#G()CVLP*JLT>Ia zMNJwl^zJ^S2_AYw+FhwyLl{rS%W-}I=`3AlX=DDN(+$EhV?XnVrma_QOf)IAf7HFe(=sLJW==G^_O>e^= zoG?PLQJ=h~iE8HD61i_@B1<)iokS(QU?n%h1tK}2yL#rBE9s9Y{n=th!Iu)`5UzFj z0b~N5RS4{3c-7vz>=TCb$5HXI>5Bn@>bvlxZ?cVr$GFhaU=p~Cv;L=*C49l>N!y~z z2~Cb_+%!I*@%RO!Z*tq9sEQy0*7Tjxe@K(Xg^l8(Fs7D#Fe*QRY8AJZ7q#j}o#wEh(E4 zg(0ky_ zyOX>duCLWboox{t>;#9yTfYu8V42FBrErl3NPb&SgakPEf@`Ciz_N9^hHR~~& zO4OE7aH*YrYxG7YMrnJA%@h%dgQ{iFM2ZeAOAK?FXI>P<9_-N#pXwl zW54FF+mnUsrgN%!UtnA5)z-}JPsN#@DN?M5!`1F+pT}?Ny@x54OwK_SM2#ViHJ~}E zNr70B+XsW8T?yX1`s=FPER-HUHV+#FAQKrRNuH2-I7S-!U1zcSnYT~J_O2ov>=-pX zel1L>dWnxhB|*^?0{!o7OQPAG%|+F0B%D;&ONC(!r(S3w2s)+;82mVx@^~pg`PoEP zk(4dK{ywN(-aXj_30ntKZ_NUn37wtjF%sILfgk!E)O^uG5cZLKCzgqvYpU#k-q=Jb z`NKoe55i_Wy2AZlqV-0xFzIg_ZD+B=C&cF>Nb<=kd&dbnLOtuJua-VxPkndMr^<^z zDLO6Wc0{g_hdYXrN&r=YiwwX^J)3{a{$PKcRaNJ_GR4TDhtVj$dM-_j#-o>70i@4jS7(7Y0K{#`{J zQSzTwoEz#ZxBndU5@N*ZFf4%>9)joT&xOB+{a+hPN`~-)`q5qToL_;i;|MU$@($w| zh{Gw4ne_OCN3gNw5V%$>v}zMr80AgYIa-<&MLA3!OIoNq~ow&V_yTU=0{t8 zSgz6=C)xvnuw`6wJg3QlDxa+;=G^b6DnmXM*x^R? zj@rhr{U5b$W1-A^&sJM!=I3dvtE=lRMzQ&i%L=`vp8?8uUa)mJczN^fbmOgh_<4g# zOvV0YG>ViloN_a&hwa=pX_&x3WAcMU3kOx5C&}ufYJ5}4K*e!@oSJ* zg6?2a8WG~2mH&j5b*>~jrW!Lw2afIuT$+jX7(#ZZ+*Fxo9je~+m%VV`;Zt1?u~2xo zM4WSkJ=bvArF=UMvat~dAM^0>C(=_*$lbK^TSte6ef^QJbUrSOZNzUx;K*-exCiJx_d`nJ_0l4Ec`8@76CgrmqRaXc3vkoHeRkr-1${c#qPg-#qm)&bij<_ICo+ z!c^DmVPV3uP2(w`Lho(?!E6cQ2+KNY4N7zoP@)kACS9j1k+ZEk<+A}sHL0%Sit=To zHAsfe0WpTR55)YQGbRfMUfuj&nw?d8D>MYF>cS`mG7Krsu-fR`!6iYxMH}MHBu@Lh z!oI1l0=}6{2M@PXHwQfVym_!FY)k+sr`3htFoxtw6YMxagajSAO?3-?O+Unj|{p^3!vFi+#k5f<}Lcq zil#tOLbGi1Zjz*vlaqJP;XhYRoIc0~qoq~8R~CK=^G+@eJ_t>(yY49pLn z`81}F6rzG@Wm*zWfrd?6GQr0tZDi7O_Mf^1`r%q16-%?@RAXmN5d1dOmJECesfdx& zmdLgDOMD#0n?#pcak{nHT%>6b7aj%n;|j-loCWl>34X)e<4= zY_4vn61=9)cnyR&MJ)P=z$JnLvZ3e7S=sULX?X`3%kxW13?8da5r9X1Joi5Y7-$=5 z)2C(N75c?sb~7`p|4A#u%zF?|XEC8Q|M_g?HXWW7+9b>cSpRAlI_h!*Ub4#?YQn;B zzJVf00>rM1Ezg621-nCnPX;fGIt~9gpSM<#3^2v(6d6d@Gl3GBh|kdkWAukPLy21# zAPG6GrbsU-`@P|uTcLi0-{Ly}e97k{013$R5R6(E+K<2h*qa(=9mjt3xodT!AAX=O& zZa+(bA=eBEso&hoe`(j74ibVAC)Dl@G|c7!G$+w<-BcSSxBz{7USn+M7&e!#TvVO34T^*!&Kul~dbJ}*8N?4$gQ&b}$Cf>@O# za(#%;YZ;2_&u+3}Ha6yCjniuXi0nMA>K`&t>W>%HK^b_Dcgp^R)6@_C_-kSFRZE8y z?&!O4zCVMkdz?m0P9|^F-UIFEXIDV z00o2D>ZzX_->&;|h(tI5SS3d87(D*P^ZeV?T)7b{37X(g^|1Cklg=`8w`;w`3=y!x4$)33QHRqZ!3il^YZc&;^oQUCX78@xW@MyxCF~OqFyM6myJ&QO_clT6yd>T{s_H+Z+-LeBo69gk4!bMR9zhuK zl>2!kG=*8|rU%xK<(V_lLHzl$&w@u>{09?T$yf8Z0jdO{Pa?p+@3IE3sq}|&^_KU| zNCGS}sUpC1ynI4SN!H;3)X>%mn~Phxa3Ipsth)=fO_ZOmOpaSx^@j%=^A^fXx81t_ zSapkk^fylHTQBt-@F=EDEu|1Ym<7Y75UDN#pt#k@l$?4Zx@q}EF@B64%4}5zt@|bCkp|(>UJ4V>(&a-1^(ReJ->TF^e5XKGX ztI%o#qf2a;NI|qS!@WqxRem-FN*&6x$hXVO4$TfvQMH7ebA*0x zvfuV#hmvgj`;NYYEs?tTmCLnQL8CZTtcw_^6_bt?Y3qpBedX6yDkvCq5{ecq`!kAY z7XokM8<~b$hWMLN#ptdqKcP<=DvETl+1c&EeA`W%Rqrbo`U;!na zUet!0lr(hP$VB|f<49SsU=0quheG!gUfHVi^CrIfO8h7dWtUMNvM>JWF3Kx~31gAZ z5=z@~4l5=0 zaRfyExwwb~n!yR~C`{a&Ke{@FVT-6jf_*`@BH zGuNh>;yW_cagoCYF_8%iqD$t_6Z<^kB{4XD`0q2jR*p*i?4B1p8%pEUfiH|-OfQG> z!_(kOP~~$&>KYMsG2EH7_Mg?Nl|7?EEnE?XQwV&%V6Ark;zHsP*d zB?rdQF^IBpG%|2+n&LLC{HDFj_Jur^sdPpT>77G|W}Pa&*$Yk1PL^51>_c9pA^px$ z=$-e64b9oArSDrJ~ew+luZcH~Qz_l(X8C^P0m%g7tHVtdVtEj_myC zH=ZOS!P^aXOe^xG%j@M6Br_;jq}?^rUp|iqeh*>6L3RG4ZS>U8QQ=_DPxE~7BUGbG zCW^kV$=u>6_*cjWjV1KkH6A@^x75fqALCmX(l_dF4Du$P;-C5i{_=Lrg4jPINIIu0u;{!TKQ7s^56=8+wclRn~ zAWw3edTyviKu8x;!qpx!lLmfi?ugYKhiA2{G}!+Al#r;$v0=kh&b!IG$QIE%g9wWz zSgy7AjHWt}kSt+B#SAqFh(L&a2`pdJW6o^S_U~9T>-=63W|-q&3ai@XTfDuzohq51 z>NLn3nKw&L)!t4RkWlz)u%zKDA%^=V)PKQnu!LqBj4ZWQ>V4jWL^mQ3I{JcrSC}~p zOdjftRa|D?!9N2KSRq}>0-@Cx#8hsZe?3TxEn8SxJZ5ABDi99V?aAz~!Pj-?s7?|h zIp-K>@IOCU`dX8z=k2(c=^Wz*wP1pyV&1||*_Ssd_3?+pqJ~n?VKT-thd-D7ZdT)s zU-l>tvFQ2~BoYJ?MK8$yP4H=YB)ySQnFb6@qG=#z@OxX!bXknfu<%w`cA_0k>BXtD z2}TZ5fjMA=6(?UeDPP@yqssJZ2yM(^T$b$${o_zWdEv=v46O~bz7^46@73|{E8-|a z-Z{S;UT!{|7&Le*+=ukn4$)4F8Qo0d10vA5Z*1Z=N6)DGQwiU!ax$N z!1MRp1DQq&htwt!%#&D9rJ~u+ePoNc7?yeW*4U$@FIZE)FCq?8IPA2r*@rbc!B(IIdXkjNI_#Z>F1 zq|a&+3A&}Yi!ybKDcbw<5ECPow;f%RtV0Z=RwH9zp~>B{74kfKer8hl#Sd zQ6MSxIcnSAP3L|NqHche7y|63|7okvHUtBSt0lQAL~Hc-T^%ZQPLW58m*y8|t}O?e zK%fQ^+-7iXjyfJZHoPf&JobF%LQ72$q8tq-R1eZa5-QXsa>r31)mhRn=yfC%AWh5s z?Xde$mNDJwAjEBvI&Mb^b}z6E{c-Z@It!sc-A$>ZXb!Qzb-}ZVJmThAcYP#`x zYUsDbx+cHz>84d3CKs}vk{_m2U3_BE&wVwk)IVhg~L*?D`2a!WbdtPX%5KC7e3_Y#cPoIDGX5CmvwXN+J2FEGDSM zN+zr!sp;%S=+kU8{x=W?jLMuS$}gp4OzdRStIlIdl_@BpmKsd-{8>O(A1J#7lIM`W zCUH8*x0AY!DtOs=mHPJ9+mFYr*tL6G*SYJ64T~K7wx=wb0~1C=$;o2E5@v6HGZxqx z!;ufEyOgGo?k_pwB|X8!)nuHl(x7&G9n#Vapw3MOOJjO`vdG18z;>uJx{-u%Y$Q&f zkoAj+9&f@s6{_%Wz#jbM616rquMj!$&$gz+bI9iWYPduNRS;)E62)^P{O95~mCub< zu!01XANmvb&F7axb@|6}N;ZWq%OG#d(()n$073QLnK!_?J(jR!92LLf7bhmZ6tX;R z_rOXA4cXNxla8FEpJ-;I{o=ZH)Kb!ohPU1?U0oiUq@pDi^Es@TUsuv{=71qGIj zSB%2qEfj4yii-)NS;_!nT}bkW8EDUB-=58Bj3AtlFPT!%Lirg~=T3sj`toz~YL#sJhIXl8-@@Z_-uCEjj4XS57NVya`|*w5*1gHiVE|ePizzZDaSfms1i}GPV@vQ96g5GCSqwAvvpYQ2$+|^ z{Xd${Ij+wC{o~o4tYzDFt+lMRytHc7vW=5%F1wa(+gvu6ZT;?jzK`F3=g)KQ`+ctW zrPuRC#qAo6L|(Zg)S`9t5SqndQj$+$Wzb(DtNc-%#nxc3n>c|!J>C_X02Y2G`wI@E z0pwma_T_F-`q~SX?i9d&Ie+G4Ud+pNwW`P13r`pk-?J<1=dhGTq zVN9d9D|9x^l*UAzrx2;vA>6limjlGLdJnIkOw=wz4j z-eQLW$F$n;^fcM^$BL3Wv+oHi7g}+-L~ixvVWvoG74B-xW(B^C)s%lOxfIW%i+TmE zZ08Q?V)IX%ZcBNo3^(Q`e7mz}I85>)D27oB6VuR0{2}zcAxC-2lSEb!Zn^6F$H4=t z5N~^n_!IL}%wML+ytG7Q>jsy1$E~g9YcaGa+M5@NsBQzShmf8LT*{wi1VKldcp(@w zJPR-%MP3BxzU(K<2SCffZs-3+V!HS!QcU;M-xn=v5RaXDK)2VBM9#Sminxqa-Ktc`W5bDdh)`>H}K+;On0hl^zE$)gXc+-S>f1602d2P^&< zStkw16L$f_JZ28*Ls4ynUy#dF5ru>sdME!Ww6PZUU`qgBu{@Y5rvNjGsyy8UgLtLRp&zu zI1&Y??8V5Be6W~CSDq<1qb|HsM}azLI**CJBUWaAlwqXAfB0pLJZmx-EWR;oQ$IYY zpvz(L-P@VIAl*B9@!QsT^s-6MkT)SV9Ve5W^p}#49}I^$M}CYD-mDUhku$+N^6|nu zHFUz;@}?UJSm&q|UE~#D9^v}Pple!l^x2_ZL3dImoaYa<@m-DcDGwCK8xoC>LRVCs zr(P512L8k}+2ZvnySC(f4PrcCEpZ(!D4m>@^xcba@jIpN?$I9WHK8-1f$ni*C)`FnhsH-VrV%W~F{ba_;*i9mO#UUv1xoDl&mBG4@8Xg=fK zS0Y_yBw-p%|4Y(EKa=OvnQqnROt)HzyTuL{2UMasKuZ1*6Na2&3`{f<>Cc}|%b$H+ z`yh0TV+^Le3^H0D=G8tHpJ>vJGuFe_N;TCix*T=Tl;a)(I|o@j^B?<>@`HspU^{BP zdth(-J=L$;Iyo*I#=NQQ{GPmP573pd{jF#2x znV<IwUi;98W| zK19*7N#zd&MH^Mp*DeQ+m6g3!;v2M`=8u7`Y9cwKC(x%sE{|W4=SvNqy*|{c5;-g_nF$OX##k#daBx5~rxfHtmPf@H_4Qz=1}ccX>Y0DZkn!B<8RR zURU55_RWX8?E270((y&*@dldZ^$QEpR=PjmYB)!X|2LJ44X3JW_Klt8o#?!DPde-)G6iF};A~Qo+QbIaBbBF$O!h-HY#3$GgNnXkXQ+pyy?$2h zmrNfIpe`?wtUFa^)uT$w5>j||tZfB)9*ebWdT-ehZx@S5{O*(BtH;ZFjz2S%jQ#Y7 z>h#oFkdJ(azThjLceA*1T8#@)~0B+ZF3A&YvH;mWbq6hgL% z+E4;X{NqjDVTvm@#g4OR#@*tQNc%fO=-MIc6LW?`T*3SghMF)(WrqdzY8?G_ z(I$U*`#%JfghxRvly*fG%nl~$e-d&JTk33593JUeRPEf|ofEDeN0R)JVeUIX_Mx+brX2A;ui3$yJ(u zlDOtJ>TQZul*3OC{v~$X9l>4CtdT(G`_*$Ui#eB$-o5RcXCi-<%}SOH1iI;@^DC9Z zt8j>A_c{kjmlreax^o8ij%$WaRsAu>$GeqQo!v001okGLMrZ$yfzSd^Z{~69&X%0!&N%Dx;soQMP2DO<67JspwPoBH(WF1Agq7 zKq%?8-nRp)oNbx`d>hPJwch;NROk6vhz4*k3DUWbZ2V8osDk9?M5sI_&%JuJ{!&uW_bzaF1zk2)NBm z(n}F7$hP!@a|bX8q3U1DtQ3FunVaJ2i|6(B81O_^vR=v%3l*x&e=LaZT&MAfE;+@) zzeR*T%Kqd_fHBOiIet;ff}`M2Me<3Dv)p5>?#g!Jg@!)7M1Hyj=@6FM{bgi`wZQxJ z`4T=I-$rk_yefe3I^1*WJLBZf8tWGx491 zan!_II>^E*QW7lxkW{Lo4aa$U ze79?T*+2V1AXJrA|3l{<4pA#;-t2M2DZFsar`okm>)R{UD z@{4nLP@IEJspS<+VGUcn8XhSW-ulXS43&N!!8`wfiunn#WX&XM>wLl<_-beWD+DRO z$lVWThA~0i{7eptaRaFN5bzFP#kLyL^PH6UeG=b@MzFo9!ll1MW|6rj^&r~OUOHjx z_s54ce$|r|rVLUsfjR?XTZc`|Uj>pTVM#H=?e^c zrlDBygY081<Cl;S7HHv^2o8~3^q$hT&#|_&g?9xttcM1~+PTIc+SxAC@gBI1Uk&7L6^^%VM+lx4Sz!Bj#&VqIaQd>< zeP-(<{ft)0qb7BGzXjnx=|hSFZoMcO<8n6jNmT7(*G9xdi!n}oHvQ4UG<>*a6`Fo|$9Fb}m#UPlec|13G z)!KxqbJ$lio@qL*t8&{PP&kt^M=MpD#wI#o7s|xIl~c zK4W^$lgxHNJo0LA@E60(vQBQgc;`fx}cA=#AISI__ki*+S2k z$GGdKBshX|IYLeO2)vv&>Gsf9%m|kQwtzE8;d4=oqo>Ib>lpN3UNiX~<&L zX+rMqXGgTVl7(~v`w{X8|Cw|9FZTI1MksIeE_i{zD2cm^`mm2?Uu7Oyzw0UgcuQB(Hmg-hw*Zi4|LtHCFLwUM=tbtXVYSSV^?#HdH2;lGwya;W<^Ro@TasuBy#2lkR1I z;X{AOtmoUF*;}({XSvE8sRroz>cArAOmca~X@RAD6o}Ncp z82D*5#RvkQ%Ub)Uk6A9^AzMr$b|T)N!h}IJW}Iq6I(t(D?%-u4^q4Q5fHv`xZyS{m zeplwZtU0}#{5I<0vz_MwS!ouVYcQX0@3ay=D?k2xct~h#R3CAcM#t|xkr6aeOe;&B zM~uKvI`x}5k6(cuBu5MbALApuL)q+-K*_E-JOy2LX-_HrhA($@JPKW(VI>{N5Ye(Y zJ}Gt#WSu3Nyd^*mVR|XFQb7%#3QFsF)^e1sWmcE1My)$!r$4#X+cRqYB`2w9EL#;2 zEHyPkI$6DbSpoE{j(sZd*LwZnZm+4PoH=T%=^bhtmGiU_>??@Ck*~kw$nw}W;SF`l z0|<|iLO}AgS8}=JL~PK_@-qQ;&BO|RD2BOw@=CV=G_km81nY9I!244-({UBml2~0% zRL(?p2iS~LG~bxHsIU@&4r&ddYJ6WRO11~qO=1Q5H5c<*L&jt;5l>a0>-H1td)s?y ztG4k&mv@a6BqHxVWFMh)um1Ylm`<}0&=MK_u9D;1b;wC*Y@i$ITg6bLb0^a(WTMqf zTqk#1CYbcY%}IT@qJXB*yEdYm9nMjPuXEQgm5145%tI?fwK|_7Baz5^hC7iyj#2sd zU+J<7fs@$FKEQM`5qe8mL?$Lo+!zYv8LX*45(sbT=dQ>k_jn-qb;2IoJXx-DE{JSM zf(YdHv3*qHHG~oUGZQ0o-%6(3$n3mPVRD?yT6`l>tLD%uAHR7R+pl$)G%6<6KOsg=O96>-v!- zhSK{;;H6u%kR|zQ(#33qu-@5C&)FwjsKYg*?EHxGbbcWq@Vuh7A3rkkdzp*(r4%9F z<+_`3#!anAn&MK0x}JN{ctc$7*gnQB)K%Y>=HPZn>4$AG;UIq;!gUSM;_H0g&o1ff zVgzhdFdt9HutnzdhPY`!6c|nVC@dVp32z@_m(cN(Dl7jv&uEXk- zxowb}k3w=p-H{Y`(;o{#6E%lmPrEA!{UzdN8U4pCg;L{XkWrn`Um5&Bqxp^ zr2@}H3lF!)8&W~qsvq^(xZ6f2adO9z)^tBs9(3sH}&jzprT9%d-^Y z8DXCEM87Wy)+gVa%_FnRdp(}OY6G^SuQTYaM9QQ!-h;oZzx@*-6Ct#{%M>ZdCjMO5 zk)|Exi)kc%JUOmOP@TOChPc5wVnYxY-q(_IdF#znun(vw(JtV#g<)mZq18b-qZCA$ z%+l3*qxzi?x8T_q)OAz+x~KDuk^pR+GXoac*K*p%X@*|AWfHk)uHT_+p(uZ6{#oV0 z)r%3D?LnExwexAtF95;)DqwP_U}?L-hmYKA#!lSZ7UcWQ$&x%loLcA_pq7qs*9@>C~8 zxE942toeVFchD!P4O+d|$$vs>Lokc6cXyEtmS3e=eDbAgeTg&j-b0lA8#@=O1M0jI zcumxXA3fwnTTo75%PzVy9trUHS}2WTmEz|<@j(L$w6{rhImS0DL|YwyP~y^;@o=?_ zOxxiyMED}|<{tdAPOM0gvSl%0d};fyxyvvsY?Fa zPUcMVf{-cwLU5@dGvko+()2HHHPo{VB?05zm=6|3nKP=Z@=Py^E}Xp&!h<(z@_AP} z3;v2S%(U=@DsZXWBM&UKg@#deg^)>U4ASpfq%yK=kL}~KVSX>bP#=7E^I0Cg&CdJY zI-bw|iGBoP*7%Ae66<)-AdIbWGd6`ebr^-z{uf+GvAwFo<@#1T#6&dnQA~4XMQu^E zBFUeahcAdJ*3st0tSlDs?=5x(e`x;UDi$R=+nj81TivX(f*Oi2j_amT z^yL+_F{B|O+jca2x+^>4{iH*w!5u8tUd-%<+}mOZV_x;TM?areMtNY7G|?w-p`V6C zH>~4XPq%CUL&KVa*5ty#xrZJWUXgv;2S zpuI@aGMm53iVxk>+Q0addu$NM|v zPfgFRoYx+~z$fi|0i7+$f+ba$FA~09Wsq@X8L(JxGz(B;w)LxD@nh~=tRObY}w zTkEwsk<1b^lRbm*TlOR!6Z5n&y1uG1VS8P1XK989x(p`}*YJ|+0=Kf&#j@}DjbW6^vlE=tx8=y|aG$G;!4Ji*C+d{m zha@18DVU4wNsuH44RUkoLbO7VCJ}uQxQ33nl+cW$yD$O~p^MIT)v_IueM1lSG;}8+ z!g(g!s=Y&wQ1+1?XfnL3T}j)Ov8dkeEe{Oa$&~%T^^VnGRVDh>>v?3){^bS?)YAnE z_J+FbGAr5UxZ|QnR3an><1`KQu1b!}X4A4?_S9hFB(vjO*qkV&UP1S3Py9tb?GwCE ze-D0lms_1D{5ke3^UV-q0Orck)rBz-P_yMFg_?7Zz^*`C;Hb9A%ls1ioo450Gq29> zj8X8gh><&Jdr6%BGD(b@EqB%FSOD@e^|ossoxWNXJ;HF9A)uFx<4geupB3(??79F# z`eV?SLpNdM@H`DqnN=yRKt8B|A1g`m7iB=eU$V-2*9x)13D3Gka-h7#=XM7bHzxJijAH%i7pnBcNR`#frItUYm@3Wg0V`R4S2zy7Ygb#cr&xeOKbm5UEgcUSScwLPb`a)LFG;{<$Hn zYq2$RrUp4AYarT0b<8Q+HcWs9o$JrNC^JvyD5^HdvX2Z#%%B{iChy z{Ku~ehbO0XrQ=`zr*$*PX`mrAKGBpX8EDnLu{C)N)>#NU7!EFTsHgzNZ=Z6rJZTRH zW!emtudW5tOq7j8fnA-OC(2H@zF8Jksk8yXwE?Kxq zWa%mgTXVmd&3C!IC9^ruecyU`@;U6kir~$O$DC7W7bZ^{-ae$lnh94BUpMALjM?eL)i?+7)>H>*NY^N4TI5H@80;!RKk+Ch=Xkv3njWM}??Ud!U?) zLJ!5@bqG3QJWL+haO;C5Fyw;xe?jnP=k&@bJSrJjU!7~VA#=lZ8@$z9nnL2yN6QZpoRUP zy1Z-cT%KA#htkQb?ibH=pY=Q{CHBX3=|?qOhG>}qqQ4!xf4R6aHhk{sR&v_jI^F_8 zuE6<5(2#kS4fe?@LNIY;l@XaU%*%cvW1p3VpaZR70Q-%`AGs{mKI|g=!~$r z>^fpEa$X~?G-`vYCS)=3i1d14`4;EEj=v3Uu>|A%BR}3kg(lr|=cLVTB8`drgtjT; zq+qfi-R4AYuwq!pGiKthy?(I@Ueh&w71T7GWwpm1&Y;!zMvJy+;?=1rNI6lbkN}W0 zFof%?8JoRqp!GzHClrZKVNRdkAGQUL zO~#VeaM%0eM4IYK7b=n`KxMBa8+^1)*n|>)Z)PGj|7r#P>wuv8ZJ6Bijvh69Xx_I= zNe(;VY*1Mi=+~QtTd+R%0e{Q$u#s%_w8U_+@tmX4$W+190 zpk=0DL&$V7N&97vm4YtiNK!SwjW?)mfjn!*V?Z7t&5lr*luI(O$Jfs}!7U(f!E3ta zGBSRXaqq7;`;$eQPm`+qH)ADe{)?TKKhXJ=XVP@$^JDV&Pb4gZ1{0RGxRP2Cd&l5K z8J>nKz03D7%e$r8?cKfrJ2b|&M*6@8A$|a%oe&_wSh0V$nY@iGpI|?$i#kD$0oI2U zkew8yfM@g@7=3L#*uoK0E3Q>9+m3N`63_EBX|K9loG$ac6E@I-M>J#ln0T#o#E+0ec8)Q_y}-kW)l()@ z929SyH}&2q!)blxn0d7FVF1Hzg4Z#vfV6Ie zoAy%{IkuEYqGLF;WTXVfg_tif7JSYGm@8}0oDgxL79g5{FU5DZ@YY-Ct>SzcMFKsuXe<; z3JS?YqU|0}nW^u^2UQ4=hEP2?E9Lxf%YpX&eHX<195}g1G7(JI#Nt z2rYOoX3NJzYn&}t$l+I9(g$C`5O%*+VgAW55umCPq&hXmK~JzDyni7Qr;;@swAAg_ zuemZ*nb#Pa3(eQ>=argL1^wI(>Yt0s03JVj<{sGC6@6FfY`a%c$}apAz`}2Jm{s zFhas0o==#TM~Z6(2{QTma$5W7lLr7xXUC+2jnm&Lm$4o!yz7CAwS6^?&*9oFRxpy2 z*x;Yy5c>XR#D3zm-hays2>dEP;?F@-^2%j${@_`} zS071QlqkP^34L}xhx<97%Gb%{ck{6wx`T=}V-ddn^W#IcvqYQsD{Nx-xTv%qy0Dx5 zkPp$h5Mm?nqk1;|S>IiGV?}I(j54U32i(IcSD+sxUj3m#wvs74u8))oIEH&apsimG z9dfLK{)_-(_E=7U^1O^{f;MP^0TOZfQX#6V?! zj#E@v_({+%tm15vN4L=nqbw^lg0?rZq7~0dEI$(i&&v{vCYLNF68fNcx63FacopU3 zL~+fE8C94kU-Bg&VwIZgokHH?MSzBmnl+4lOkF&kXy;)q%B6S99`s~}735JxE$YP; zJpa`fy}sQ>7aetLQm5gG6}6y5!t2ERdcqMrDng?21iK0$VK!G8KA>yoWKG0V8 z@a+hFCxbNw71~BZ@)6BiEKb+r}1xm(_V*ubAsb_ zc)}A<#(e6ssDi5TWhn>K%5dk8(i?pf!wtYsk2eVCNC}f|Sc39;3I<k{?1UiHD%EqWEeNU9x$L>ig$0ScoTVG+hsR!U^YQ4zeev z?~x`pAv1`+K)Wc?qCQV}U|1+ZMOjhIP-{tHg6`Ab>{#i8iRJVki&Y0AnP_s(;eiF} zM@>I%=Bfz3as0!oh?%3xmtBQdAYS@X06g(xce%NnYkU#bCpD7lVSo9*dEzZzhF@-D ztg)o#hB_z527hR@c$kx{LnVr1*pm4|GI`Su4P+>>H|<5q@GRYK4v5hl)?Zp*aK@P< z$b5{fW<&ip>pngyV2PrC7Bb;`{7hEPCk+#$PODenX4|&{OovA7=B*1nBF{`;gOIQZ zVt`H~)Y+EQ6>PvK>=~3Mf0Qtb7!)n#3cY;tBUmQ=rb3Nocg#VDU1kdn;~vy=hTZ5L zVUvu3X)3EKLWXTqon9V{y&q5g+($y8d~>`_O-Gf)sXI168KPA`Z&%yH;)1WosKk00 zQDjF(DmncZkMpvquo*w; z#!5Ev-5mY71EB8yW*U3Xc!*%JQb1akXrZ{+gp0KDb9a_%>0-TydQD?7^luhGhM|Mv z7b9bR`UJ}UOAh4(Bl`3++81CSLH)_@M3>e)IVd4vI2?$Z&ZAIRJDTJ@@v2*?= z!k^L89ZtGYa-N1oLS*f)hD<}YP59G4!L_VZ*Cc$u>|htOkGG>pqpdru8%zg}X@Ot&0JbF~Q{b8}T-!4p0B zV7;;G5#xDoa89g|vkBYJ#I#OTyiK7wGE71(+?lU4A4WDx!Bp54GOHzvkz&_*@T0}B z9AhU5@e)#rkM-mDcpSPLz2rJM@I{)?f-_?EJv&tkPXHs+W~YO%yUT+bBZ|GxM+5LM zpQ3@kSvCSb!owfo2r@N?Uw;O>e?#&aeB zgr_GX#P~O;WSSyhT(I{1ZK_2+HP!h!iN$7=;Sms*HU_EsA6?b^W@xt*sK5M*p+Faf zaw9>fY*egaW>x1He78$oyJ0WR)2I@QmKG^_Z8qe4u; z2@Q!h{zM;0H^JJxx9w-CY~ZhLM^5yu#BEjo*Ym4-^HZOKtK9!yA{|r~g%~k!@x&Kqh%YXP zrIqT)islE`f8{hr{$eBw_jB2(%Bc+eJWO&{Sh&HIFzEJ!t#QBo`A?yaLco!)At0B; z6zj6?HrOF*waj(6Q0a0j<=O|$>vm;aQdyb&&---U``PN5QRl(@RE6LlZ$Yvd?OyRMH)gX zXOkXzl9}G^k~CI2j0>4WmSUqCeL2ooo&&S^#vQvy(xJpG6s-zem#6HVsLwJFGK()Gdw zBuaU9|4{ANMm`N)pactiRREFF&H<(TzeC?dschxtCx~?Bk~1j&?|HQh{&vZuu#Ge6 z_U>L&z-g@@{DDr)$t*f6tEKnz@H5qorWp)?Mm8CUAaEv$5`A+`74~qhe0h0V=uEPx zY@hG&nU=&Go-0xHcx>JZBHaDwxO4t~Tj`T{+PI+yfMY3>^}XF#JDb?;ccu9c^W%2` zzfF6u%>8jDxPyroyQ+VODak4U>x#eVuP&fu{&xK-UcPpyaTqb)CSA5=W!}ktpv-Kx zL3y1Fb^D=bqy;*Cb%5BfBB&p z6>@v7SyS-zaaht|?r^xf$3p@+j!av3_BL1eiSRTB+fe+m)lod{;a6PAE?Ouwp$p&B z+MJwjn)!~`QyaPWxAocE&5cOM*4MigVbzy2mre_v1}A6dkuV&_f2^B?(#j6)3H}43 zl^ScnmG}xJZ2(%+cr#esApz`-ua#k}L$oW8&p#5_{bZ~NwNobX0k#wQ%(9w!<41%= z!agXrByUHHju={_j69ed`^e&XU>+m8th$gifq)gNl!(OBdY*XI=(U?a3mg(+u#R7#EwNeBjfnY92OIZaWPcS~Iz zz)M3D-VH^0Sp(b_XQmC=8H0M~W&@G&KDfANeqUxNEI4bwU$+O~S|ctU*Tl^iJ;+u{ zqJWv%X-T=Tgt0>)2o>5(J`KvvPmzT_xM@1J#~o$%PEW`MISpcale@&Rw+~s%uzCB> zR+h=>2c*YAD;3H--qLEsrj<+`X0tBw^hc+Q@D0&SU8}+BhqZc+YtFSasq`u(f1&FV zoX8DeMTl}Kh$Eyo)&Tkt%5*-bY3Ada*eeY9VE=+hmPv+#SJdz1xvx{D|bGyztSm`Dk&mF>sJ;DV)#y!z; zQ+%@T7xGuk6N(^Xgl*^?`0o(J^fO2jEct=(#-B~mghrari5BThNtZK3mIHrI|NI+X*hf_LOS^nsbdU7 zI43x0h7IP)6L`N7nO9dN#PK6i^OUpB4B;IShK|@fO?WCo;TXo#bSk4M__0Q`6`mw| zgSMU13=?nFnr24jum9CFVPbIzV({u3B#?hOiQ@Z8pp%ufyj;m`Pu8LL9;wUqqLE!l zKV#~rF4NJH#wc0HX6R`*F%&=vVr(W%Y1RG!EKDrFW7#+yOyI=W<$aE{cW=zncNpj1 zPXCT{+((#vXwcVeWLCtyuYMZoGD}yx-*1pRp9R_~HFG*JX`fpIO z8`|ZTlpo3-+DE|BKs){O5iWcdq=jf7))C*r7Ke#TW>Ix06e6!SvVh4&%l>oVf!#c6 z<&9WF4pT3nN3m0X@|vqn!{yQUozxm3 z-8|B&!nqt&3-ABaHToL8)P1t)qz zf@30Yujf843edB1?2>c9Q}MH&&Xt7PW+~oLEFoLF`fFC-$10C+*@_{hSJTVd6Eg>y z8WV&Ql`JHF?hgb0*f$|!=33;ldH4eRID^PfrWC_rJF?jpBt(}?rEpKq>#caq8)v7O zI-)D_Bc`!fM{&?pd2HL>Te`W}Jl3|iHAv{esTesuH-l>{sLrfDL;!2SV~e*^@_s?7 zzAzUrXXM`kN|=}>LRDq7YEigC6Vc~S8NCYkqd84DtTV&UXmQEw3?20=K(p>@-0P~* z%})#b)r)I->bi&gq7O@HQB|@!w0ovN&dQ>;ykU7{0$#dtUj07E7`U38n@ls^2JSrG zU+-520f00u8(gVIWkW9)k9A!T5|IoNq;yKxGCcH)y)hzo2t~Y=?;MqQToB(-vZ8it zKRp(56Hz?+!5*Lv0zC@wH_Dj#8JuP~a$nmi z(d>BGKLpTJIeK0cwj&3G##!u6cX9k8{<{+^z`nb&n`*Gfe6Zrg=w*Q8Yk+s`FWvW?{LLL;w>EH?+6nAS(qQ{tqfe8cl3mEpOQ*AU73 zd$TP1XQ-O;$S=wNI#9l8Bv{-NvLG~F7C5Ok!MQtW-^LifHDBr$TX(dow#NCU&EP51JKiEVN1~ z2gQ_CLAy^x(&3*dW(K2i?ey%?;py}gPo#&M|MZ(Oy(_iNvnc7@I={Ndf^WTe<7!~8Beb>VN;q#+Gzf5% zHUnE`KtF^EYRYJFAt)mE$WNRU?2Yg$a~ppW{?1w(Jfy**M^9E=7zMKSjgtf!L`FNU zvb_Je4}NDdMu;nnvlgHF(%JkGB7k5Ouk%520Tso%?eeo$lP$32cQv~GIm9sR5CC{k zh`t^w73AcI7b<3ap!3Pd$guy%qj-6|Ht7jKtU0b|g+t1MpG>iCTu5``;fHdQZgRt* za*J7tMxo-GiY?j``|8&OlX^HPz6G%!!)@J0p#PzdP=<5g-+U*;!zxe}dY+xLH2cmZ zTC}RnFQzA7S0r#btvV0Li2W5&CGpW$Wf*>W!uyTv^KSe(vRNoUX819^WpARnQX~gg zoTLe&@v8V2O?=mi7*V>>vpfD4zQcygcnyNPw1QC*Y+enUiPhFadH>!4$qqH`nV@uG zq@wj<3ZJbB(QiczL}6ScNX?Wr&+GAqv8?CSgKs9H+aZ*eGpB`V)^W9yBCW}!XIx>Z z*c~?otU&knko8GJ->bge5PGN~TJ%j*&+At05xA4Bdd>hg=OKwt1bOu9ua8@1B9o+C@)N1Z=a%uGblTowOy?vk_nbG6 zETh}ZO?v5{-(;G`*KJ}v54t=@{s#G1%x?vSt&a*rv9{mDwcGUojGchiV1Yo9O<(8} zokeBH9`|3B7a=PzjNE6uX}6{-I3)B=b*+ z2cax6a(xbI`;waEyaTW!@Dc~IA4r3AiW&J7_=h-hE* zRRAo>h%kMyqc8tagvOgnqh{wO9_Tj4q6<96)+<`wB+=o%#PB%v>s1J-qwO~<{C6*g z{dLQi{PvMyRiJ|*A5L>Nv9#Zu_;*s=yyw3@0ya$cXbEyKgoxPj0Mb@fxFGf*s)f$NC^G-* zAID7YR~%gHWN#zQ90cA3)kqWeIUE!_pacvlx#(h4e=fxGtVOXFIb&oBPm)|Jg%%_JQ+pW0--Jzv)Aj9y!HFf5TE|FNAuNr+o@&F5Z8k< zcq(JhN#o9So8u+KjMV?dqb^aXm#V{iiS+lB(q2>T7F(xm0wtEo&T^Sdz{*#|b!O9* zA_9NZ516RgI|YC9uz%xKupRxmL8>!x3I-_H*x+qS-|hz!G@j8wG_GMhTJ9lWCQA{l z@PSMR_15$^yW3YE{yhiiy=LmQR?fR*kvsmggYlf+H()u?GQ6~G_j&N8{wg96hwbiI z8F#XC34+{(*CG;{Rp+db~Aq3OvoyX)rKNo0=ddS6|WZ?YCTM~u^)xzfVwe!iy&R#=ars!Ogk+kBZW+0aFRLg*}T#G`BPoCE6 zsvdXA0vc=0}IVLP{C)Y!yLDYcE-)>nR8h$)3%7i^${O^{w%)j%bh2Ml9lwiXGPkOMsIltCw7`|M zicIIJoz~vrC!Are;82-iW})IHkt8#M83Vh{%#O)_gj||%SN`l)qwZYn2uq%(X*Khe zD?|e`ASRVmp5WHMpFO!Of!zOT*m~Y^Mu=a&y4QI(nWVL3?*6zYR7Es}IN%ED zNfTEA*8o*2H}d$__UY{3&1lp}q8zI#pH*A7I)Hjk>CY^or1(7lq+a)-?CRg2av8zk z5K>e?Y1tl!Svcc&+9YP{LkF(b`V2kqm|T)4<&wHhtW}XFC*R#h$)Yi#oT>~jMUIqY zb~Zu^^kx1q5A7$KW?xgS7#pgVD-ODVnl5lNR;B%d^5V>h)Q6^OZ&&)9NzK`x)xwW+ z?2&f^aC;ZS+x(%8kgv}pp|h>L{ugon=Mx0SU{rw*vgG(~;G|fFVmP;IN z*W{f$r%rZ3tN*Q-kJ?3+O> zCCiHDdG#R4)ywsyoRpMQ^n)9?sB5!eY7o&7_pGqZA(4&ODht-?8BX(B94=?y%+1VV z{t>EsuL*71R3=2mduMX{&^z4;Hh#1^-jJ3m?Sd{mFTzyqoRDaklDJ9+A(jX|^3eq7+ z4&6Bn-7PI4sidNG_t4z}5>i7q4BgGy{J-y}x8WyyYO!8c@+45jI zIU}oe|BuYQtA3-mY=j7I!L*YR`tGyKwom|N*0cX&wQT;_bt|nYrAYMIzZ8Hczxj;!(!X!bN{GVn){<5Md`>wVvbMZ}) zJPP1PvUh}iK~$YZG)wRJv5HFGw+oRM1#=YBWmPFOJpi@!Dc|2%Uj~_9?EP~Aa$9Gw zlqU{={;_(6>aUD)L%lb(U`Gc9*FY7eA1@f?D9bo`x;rUpNmQILA~ zh^-Ake~K-htciHTlem2&G$z%S#uQqd_o#^-2B`bpH2Tue;Qw0E!f0=1!PQ*v$ZB&S ztUS;{l(Uc1KA+7$XanI=PX_bsq7L(Nqe6w9eSJr?%Z}G-xd+D_5r9(pe63eP`MYhR z$+?HFH>AO4`z!F|%(+$LwB)AH0HruozjWbrGE++kX;j+lW7}nriKsM%Ly1^oSZ!ov zjGwt*0NM!Mq=~7=QR~$u!=hAfVh{SpRN3zFRXwvE;csSBNNIya$80@Wfq}!XU{hLV)or& zRH(e!EAlJPau8QiLlFnnYPesAa=_ls2jSa^6qjk~*m@Ui0v0=A;tO%>xvf?7m#Yh< zvy~;zneKCcj>yrllh?})xC=%X{b#ErFYENKx}g_p&cFxq~{w&kai6sDJmj34;~MKfmAYz|DH~ z!UAFtioMNb2BGPp=T4xO?!qN|EoBnsv7P0qsHv$L&z28F9ydI-sT(uiRS6W@k@SQqni ztpRrXMA&vkDvvVzRz7CsN)LBy;I;Nq{U1c%L8ayc`D=3}1;q28|H(Auj8gV{UwR7* zH%`W1-rA6eILjgyeIFzOGF14&j0ts6d>GW(EI?xh?#5rm7=9w>22a~bPvQ!Z8h|zcztB1uKs=+&EI&P7ZBB!n4(LVXo1WWdxtn$vd=+;C?haTgKf#>)sV(mg z8X5w{k#tGF72iJh1#GNpKY|UpwgVe|8zd84XMcBA{7S?}p=@`)JLx}-p4>Y~Y_vzA zWFcBqnfocNU8cv=tQXT3?#%Qh*?}XTrZU&H#;m)hbWl;b-vO}6-jI-s4i;0&y6To3 zfA&Wk{ABO{S19w$Txqsm0!QyH&VSqT#0Lcb6n)Fy2$5T&^E0}omBO69w2;2v=uGiI zVN$ACUwR0GIte14LhWqiWOboK7rC!g+p4^T359OsXmYB{=KXiQ?sRa8c3HJT9Z)U? zBXMfK?&Wddd2TyKg|{pM59$KMi_WHkw?1Ib2Ceo>K2~uWKq2pwzZHwvPjhzqIE21% zPqH(ZbPQ$b2Qr8a7-n0icBR&0Dfkt^(A5{)zpy9ksgcfi*TD*qKh;(v6dA9Z0VMALuUqYoc=Me`4$tfvu{yR2I4y~F;{K)*Q1^On zo~Rz?PU5Pch2jthfUXy|C9L~TVw%%8I5gpwz`TehysY66zaj@~gVtV;ZdsM{{&W0r z{C5ws2|}0qlPdl&@m(4~0Or_v17ON2<*k@E) zL)SxbjN~1~mJ9J_nqBz&^jHADcX$6sWTvweVFXUy{guSB5JU`YSXqwZIgO^pSHPYr zh0jWX1lZnl2eYlc=X460O|z90EYIFaDG2gdoVPI~;3272tF+I$A;*p;Bl9gdt17I8 zzckHHNtcac%com>o#%G7=-D9ner5D$etUU2cZN-OE5H;g0#(gQ!uyro`^NV6CC_?S zeUxA+{?&+6fa`np1hDbl{LDT)0;WAg0N;-=#!}0-5+6w>|5e=$r`v!%$9lK+GubP= zZ=4W2toCnhc^uVmUNT$96KPp5t!Rm0low)MFNFbraBV_xx-iPoEs_-SrL8t7ahMph zgb{e7J0@QO~;1A&6>d`vlN_hg6qIV+d-Siws# z17l+zmMphKm8Mo8Dpx%FJ1NtjTvlWCc@y%KG#+10+N~sHt8JiF`J}j?V|Xam8`yy) zmmN}ANE?Q0#}{S3pNU_kzrzfKFcm>mbE7Y)uXg0MPtxU*O4r3J7zf2Fw(~iU-+S*Y zGmUwTiHTUg<(e)w1rm!eK2t($^kHmcJhmxOzfSqHC?<1_{c2?M1NS?;7SGRV?P*?FozX2{}ulghgO|nI9X~0J}=EU~PAY9Ph)=jTYLS zmfJ4he$?%KcosVW#;iJGC0_jUo4>g8S`W?D2-X0q@GkaOJ1HuxnG+9jFXIuqO zU-F4&DeR21kDQwiftM=kU9Bm{>ikBV%LeEFxuw*V*dARnV||f=nofRRFJ07DYY+$w z3N6(maO&vVc1EIm6E!Ytkzf0^LSaP1I6&{moVe)*AcfTBXPP`%kZ>0yd)d zAvlp)8!%0!dCMtnWJT#uJJyvR$X}gzkr`Ow&>2e$y)#`*POW35pGkk-)SpFCJGRb^ zKJEMsKFt8aFaQLa3iJ=WG2A`~W9B;D$tAhzZV*f<`sGs`;7z|2^i!oxk5+%S?~E}< zza5d<9asS$w8$poi{Rg)u4D?fLLH=Rm)dGigY(_|Z_ihY z{Ha7eO7C~o0u#^1B$tiu4#G%{DvucVfs5Bhgyj9tmy`mfa^KR^(`jZB2t%ED>;-!^ z`#*LbNB65yDcsUeD?jI2Si&uqPZmiy{IqTR9R&|~`VVKmaq!hnydE_VFroiYBF(b; z!CNioA077epLN`fW+ZaKj;sKEnc-A%8mKIeSvllR`mxW9ehfv z&x?T03H`@INcXp(ZSSNif{mX`-*sA{1h1#XdLpD^>t>yF{KjpSqov##R+wNd)6T`J zZe82yJ=mh!lDywhsO~2xUhhd^t84;YQ7pP}$DT<1HKv`R!SI$I=`NSzGTV=u+y|xE zImi7e6HRRu%Cy_@x_=Z$3wO=tmq14qDUw-a0o`8;`E0Jw@l1T2bE!AvOOVgG9S|`-%8`-myQeeUE6Vf#Q)nv z5z8E?GF3Rv^or!u-$F8TP8*}xb2CJIT|AVJJ~g>PoDP6jJ}|pE+tSLz%5x~|yX%qv z=yr{$E39$bZ!8OxeaCSUbCus)-=+w(Q!8JGR1R*FF1t2MRLHqF$}iw|iGM}F@XA6M z&4awz6lQ;v3mKd#yS~cygL=xqZda8gy*@hBIDI<~LcJP?&{$>6mz2wa ze%q8Z>dHd%FUcLggXKyeI(Z|6NK_#WJ~lp4rB4!VYwuo9M`ah7TiTND$QYoh6;hiSCHR_iu0djuq}1WsfbhpDy-yxe{)4W9IevY-X>! zB23!_DmBC1GdT86Au57K0N30 zmktBx77M!5PP0S-{G>xnKQ#ym3nM{_4`b)9R(G^}(4l?uvdp{R$IwH+eSLgMt3-Ry zv0?F*@8$kU3C$|x@v@;^4~dLK>YM1zMpBtOjrRsV2QLusO-xKY-7@}5ZWyTAvf-i- z1ZVE3i?_ko?tqq+4WLatX+2J~+;rUd@s!m2;-AiDijL7&@M07HAJ4V4Q0chLS)cmv zCgFZpFx7ec1VWFgflvAO8O+4e4TDL+8L;mP@p ziQGO0MB1>@>&-6|a53*y8fL2Lgm`)ceEp8@6dz z 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 XvkAWYr>|453-Ju7^w=lA~rQ~o&l literal 0 HcmV?d00001 From 657f662e6202a304618a89573232000aef08d82f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jul 2024 07:25:51 -0700 Subject: [PATCH 41/88] Bump types-setuptools from 71.0.0.20240722 to 71.1.0.20240726 (#720) Bumps [types-setuptools](https://github.com/python/typeshed) from 71.0.0.20240722 to 71.1.0.20240726. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index b258dbe8..e5f2b0fa 100644 --- a/poetry.lock +++ b/poetry.lock @@ -805,13 +805,13 @@ files = [ [[package]] name = "types-setuptools" -version = "71.0.0.20240722" +version = "71.1.0.20240726" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-71.0.0.20240722.tar.gz", hash = "sha256:8f1fd5281945ed8f5a896f05dd50bc31917d6e2487ff9508f4bac522d13ad395"}, - {file = "types_setuptools-71.0.0.20240722-py3-none-any.whl", hash = "sha256:04a383bd1a2dcdb6a85397516ce2d7b46617d89f1d758f686d0d9069943d9811"}, + {file = "types-setuptools-71.1.0.20240726.tar.gz", hash = "sha256:85ba28e9461bb1be86ebba4db0f1c2408f2b11115b1966334ea9dc464e29303e"}, + {file = "types_setuptools-71.1.0.20240726-py3-none-any.whl", hash = "sha256:a7775376f36e0ff09bcad236bf265777590a66b11623e48c20bfc30f1444ea36"}, ] [[package]] @@ -963,4 +963,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "0d5a56908d1fdb653867db55416e55c841b5f5ac94f8607b51dddc177115d6d1" +content-hash = "dd52ab51430e0d0f4fcd405037304b756c019837bec333e0c0b53a2c2e0a9bef" diff --git a/pyproject.toml b/pyproject.toml index 931d9805..ddd0697e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^2.0.0" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^71.0.0" +types-setuptools = "^71.1.0" pook = "^2.0.0" orjson = "^3.10.6" From 53c5a1181b89cf751633aad6bf0725119aaff453 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 00:48:54 -0700 Subject: [PATCH 42/88] Bump mypy from 1.11.0 to 1.11.1 (#723) Bumps [mypy](https://github.com/python/mypy) from 1.11.0 to 1.11.1. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.11...v1.11.1) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 56 ++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/poetry.lock b/poetry.lock index e5f2b0fa..f1d1dbe0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -312,38 +312,38 @@ files = [ [[package]] name = "mypy" -version = "1.11.0" +version = "1.11.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3824187c99b893f90c845bab405a585d1ced4ff55421fdf5c84cb7710995229"}, - {file = "mypy-1.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:96f8dbc2c85046c81bcddc246232d500ad729cb720da4e20fce3b542cab91287"}, - {file = "mypy-1.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a5d8d8dd8613a3e2be3eae829ee891b6b2de6302f24766ff06cb2875f5be9c6"}, - {file = "mypy-1.11.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:72596a79bbfb195fd41405cffa18210af3811beb91ff946dbcb7368240eed6be"}, - {file = "mypy-1.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:35ce88b8ed3a759634cb4eb646d002c4cef0a38f20565ee82b5023558eb90c00"}, - {file = "mypy-1.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:98790025861cb2c3db8c2f5ad10fc8c336ed2a55f4daf1b8b3f877826b6ff2eb"}, - {file = "mypy-1.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:25bcfa75b9b5a5f8d67147a54ea97ed63a653995a82798221cca2a315c0238c1"}, - {file = "mypy-1.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bea2a0e71c2a375c9fa0ede3d98324214d67b3cbbfcbd55ac8f750f85a414e3"}, - {file = "mypy-1.11.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d2b3d36baac48e40e3064d2901f2fbd2a2d6880ec6ce6358825c85031d7c0d4d"}, - {file = "mypy-1.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:d8e2e43977f0e09f149ea69fd0556623919f816764e26d74da0c8a7b48f3e18a"}, - {file = "mypy-1.11.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d44c1e44a8be986b54b09f15f2c1a66368eb43861b4e82573026e04c48a9e20"}, - {file = "mypy-1.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cea3d0fb69637944dd321f41bc896e11d0fb0b0aa531d887a6da70f6e7473aba"}, - {file = "mypy-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a83ec98ae12d51c252be61521aa5731f5512231d0b738b4cb2498344f0b840cd"}, - {file = "mypy-1.11.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c7b73a856522417beb78e0fb6d33ef89474e7a622db2653bc1285af36e2e3e3d"}, - {file = "mypy-1.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:f2268d9fcd9686b61ab64f077be7ffbc6fbcdfb4103e5dd0cc5eaab53a8886c2"}, - {file = "mypy-1.11.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:940bfff7283c267ae6522ef926a7887305945f716a7704d3344d6d07f02df850"}, - {file = "mypy-1.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:14f9294528b5f5cf96c721f231c9f5b2733164e02c1c018ed1a0eff8a18005ac"}, - {file = "mypy-1.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7b54c27783991399046837df5c7c9d325d921394757d09dbcbf96aee4649fe9"}, - {file = "mypy-1.11.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:65f190a6349dec29c8d1a1cd4aa71284177aee5949e0502e6379b42873eddbe7"}, - {file = "mypy-1.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:dbe286303241fea8c2ea5466f6e0e6a046a135a7e7609167b07fd4e7baf151bf"}, - {file = "mypy-1.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:104e9c1620c2675420abd1f6c44bab7dd33cc85aea751c985006e83dcd001095"}, - {file = "mypy-1.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f006e955718ecd8d159cee9932b64fba8f86ee6f7728ca3ac66c3a54b0062abe"}, - {file = "mypy-1.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:becc9111ca572b04e7e77131bc708480cc88a911adf3d0239f974c034b78085c"}, - {file = "mypy-1.11.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6801319fe76c3f3a3833f2b5af7bd2c17bb93c00026a2a1b924e6762f5b19e13"}, - {file = "mypy-1.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:c1a184c64521dc549324ec6ef7cbaa6b351912be9cb5edb803c2808a0d7e85ac"}, - {file = "mypy-1.11.0-py3-none-any.whl", hash = "sha256:56913ec8c7638b0091ef4da6fcc9136896914a9d60d54670a75880c3e5b99ace"}, - {file = "mypy-1.11.0.tar.gz", hash = "sha256:93743608c7348772fdc717af4aeee1997293a1ad04bc0ea6efa15bf65385c538"}, + {file = "mypy-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a32fc80b63de4b5b3e65f4be82b4cfa362a46702672aa6a0f443b4689af7008c"}, + {file = "mypy-1.11.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c1952f5ea8a5a959b05ed5f16452fddadbaae48b5d39235ab4c3fc444d5fd411"}, + {file = "mypy-1.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1e30dc3bfa4e157e53c1d17a0dad20f89dc433393e7702b813c10e200843b03"}, + {file = "mypy-1.11.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2c63350af88f43a66d3dfeeeb8d77af34a4f07d760b9eb3a8697f0386c7590b4"}, + {file = "mypy-1.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:a831671bad47186603872a3abc19634f3011d7f83b083762c942442d51c58d58"}, + {file = "mypy-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7b6343d338390bb946d449677726edf60102a1c96079b4f002dedff375953fc5"}, + {file = "mypy-1.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4fe9f4e5e521b458d8feb52547f4bade7ef8c93238dfb5bbc790d9ff2d770ca"}, + {file = "mypy-1.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:886c9dbecc87b9516eff294541bf7f3655722bf22bb898ee06985cd7269898de"}, + {file = "mypy-1.11.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fca4a60e1dd9fd0193ae0067eaeeb962f2d79e0d9f0f66223a0682f26ffcc809"}, + {file = "mypy-1.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:0bd53faf56de9643336aeea1c925012837432b5faf1701ccca7fde70166ccf72"}, + {file = "mypy-1.11.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f39918a50f74dc5969807dcfaecafa804fa7f90c9d60506835036cc1bc891dc8"}, + {file = "mypy-1.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0bc71d1fb27a428139dd78621953effe0d208aed9857cb08d002280b0422003a"}, + {file = "mypy-1.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b868d3bcff720dd7217c383474008ddabaf048fad8d78ed948bb4b624870a417"}, + {file = "mypy-1.11.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a707ec1527ffcdd1c784d0924bf5cb15cd7f22683b919668a04d2b9c34549d2e"}, + {file = "mypy-1.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:64f4a90e3ea07f590c5bcf9029035cf0efeae5ba8be511a8caada1a4893f5525"}, + {file = "mypy-1.11.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:749fd3213916f1751fff995fccf20c6195cae941dc968f3aaadf9bb4e430e5a2"}, + {file = "mypy-1.11.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b639dce63a0b19085213ec5fdd8cffd1d81988f47a2dec7100e93564f3e8fb3b"}, + {file = "mypy-1.11.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c956b49c5d865394d62941b109728c5c596a415e9c5b2be663dd26a1ff07bc0"}, + {file = "mypy-1.11.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45df906e8b6804ef4b666af29a87ad9f5921aad091c79cc38e12198e220beabd"}, + {file = "mypy-1.11.1-cp38-cp38-win_amd64.whl", hash = "sha256:d44be7551689d9d47b7abc27c71257adfdb53f03880841a5db15ddb22dc63edb"}, + {file = "mypy-1.11.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2684d3f693073ab89d76da8e3921883019ea8a3ec20fa5d8ecca6a2db4c54bbe"}, + {file = "mypy-1.11.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79c07eb282cb457473add5052b63925e5cc97dfab9812ee65a7c7ab5e3cb551c"}, + {file = "mypy-1.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11965c2f571ded6239977b14deebd3f4c3abd9a92398712d6da3a772974fad69"}, + {file = "mypy-1.11.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a2b43895a0f8154df6519706d9bca8280cda52d3d9d1514b2d9c3e26792a0b74"}, + {file = "mypy-1.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:1a81cf05975fd61aec5ae16501a091cfb9f605dc3e3c878c0da32f250b74760b"}, + {file = "mypy-1.11.1-py3-none-any.whl", hash = "sha256:0624bdb940255d2dd24e829d99a13cfeb72e4e9031f9492148f410ed30bcab54"}, + {file = "mypy-1.11.1.tar.gz", hash = "sha256:f404a0b069709f18bbdb702eb3dcfe51910602995de00bd39cea3050b5772d08"}, ] [package.dependencies] From efa133b23c931e5718cf465f28e34df24d163094 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Aug 2024 01:08:31 -0700 Subject: [PATCH 43/88] Bump black from 24.4.2 to 24.8.0 (#724) Bumps [black](https://github.com/psf/black) from 24.4.2 to 24.8.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/24.4.2...24.8.0) --- updated-dependencies: - dependency-name: black dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 48 ++++++++++++++++++++++++------------------------ pyproject.toml | 2 +- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/poetry.lock b/poetry.lock index f1d1dbe0..bcd6bc43 100644 --- a/poetry.lock +++ b/poetry.lock @@ -44,33 +44,33 @@ pytz = ">=2015.7" [[package]] name = "black" -version = "24.4.2" +version = "24.8.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" files = [ - {file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"}, - {file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"}, - {file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"}, - {file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"}, - {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, - {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, - {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, - {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, - {file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"}, - {file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"}, - {file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"}, - {file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"}, - {file = "black-24.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7"}, - {file = "black-24.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94"}, - {file = "black-24.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8"}, - {file = "black-24.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c"}, - {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, - {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, - {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, - {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, - {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, - {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, + {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"}, + {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"}, + {file = "black-24.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:707a1ca89221bc8a1a64fb5e15ef39cd755633daa672a9db7498d1c19de66a42"}, + {file = "black-24.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:d6417535d99c37cee4091a2f24eb2b6d5ec42b144d50f1f2e436d9fe1916fe1a"}, + {file = "black-24.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fb6e2c0b86bbd43dee042e48059c9ad7830abd5c94b0bc518c0eeec57c3eddc1"}, + {file = "black-24.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:837fd281f1908d0076844bc2b801ad2d369c78c45cf800cad7b61686051041af"}, + {file = "black-24.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62e8730977f0b77998029da7971fa896ceefa2c4c4933fcd593fa599ecbf97a4"}, + {file = "black-24.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:72901b4913cbac8972ad911dc4098d5753704d1f3c56e44ae8dce99eecb0e3af"}, + {file = "black-24.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c046c1d1eeb7aea9335da62472481d3bbf3fd986e093cffd35f4385c94ae368"}, + {file = "black-24.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:649f6d84ccbae73ab767e206772cc2d7a393a001070a4c814a546afd0d423aed"}, + {file = "black-24.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b59b250fdba5f9a9cd9d0ece6e6d993d91ce877d121d161e4698af3eb9c1018"}, + {file = "black-24.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e55d30d44bed36593c3163b9bc63bf58b3b30e4611e4d88a0c3c239930ed5b2"}, + {file = "black-24.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:505289f17ceda596658ae81b61ebbe2d9b25aa78067035184ed0a9d855d18afd"}, + {file = "black-24.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b19c9ad992c7883ad84c9b22aaa73562a16b819c1d8db7a1a1a49fb7ec13c7d2"}, + {file = "black-24.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1f13f7f386f86f8121d76599114bb8c17b69d962137fc70efe56137727c7047e"}, + {file = "black-24.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:f490dbd59680d809ca31efdae20e634f3fae27fba3ce0ba3208333b713bc3920"}, + {file = "black-24.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eab4dd44ce80dea27dc69db40dab62d4ca96112f87996bca68cd75639aeb2e4c"}, + {file = "black-24.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c4285573d4897a7610054af5a890bde7c65cb466040c5f0c8b732812d7f0e5e"}, + {file = "black-24.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e84e33b37be070ba135176c123ae52a51f82306def9f7d063ee302ecab2cf47"}, + {file = "black-24.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:73bbf84ed136e45d451a260c6b73ed674652f90a2b3211d6a35e78054563a9bb"}, + {file = "black-24.8.0-py3-none-any.whl", hash = "sha256:972085c618ee94f402da1af548a4f218c754ea7e5dc70acb168bfaca4c2542ed"}, + {file = "black-24.8.0.tar.gz", hash = "sha256:2500945420b6784c38b9ee885af039f5e7471ef284ab03fa35ecdde4688cd83f"}, ] [package.dependencies] @@ -963,4 +963,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "dd52ab51430e0d0f4fcd405037304b756c019837bec333e0c0b53a2c2e0a9bef" +content-hash = "727e999503d474aca451156967f9dde6653456d4b13553d2838606cb3f4c6a85" diff --git a/pyproject.toml b/pyproject.toml index ddd0697e..dba65afe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ websockets = ">=10.3,<13.0" certifi = ">=2022.5.18,<2025.0.0" [tool.poetry.dev-dependencies] -black = "^24.4.2" +black = "^24.8.0" mypy = "^1.11" types-urllib3 = "^1.26.25" Sphinx = "^7.1.2" From b88c1f2308ad888ced3597b5ba5a14ae4c114bd0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 16:40:39 +0000 Subject: [PATCH 44/88] Bump orjson from 3.10.6 to 3.10.7 (#727) --- poetry.lock | 112 ++++++++++++++++++++++++++----------------------- pyproject.toml | 2 +- 2 files changed, 60 insertions(+), 54 deletions(-) diff --git a/poetry.lock b/poetry.lock index bcd6bc43..fa02ba6b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -384,62 +384,68 @@ six = ">=1.8.0" [[package]] name = "orjson" -version = "3.10.6" +version = "3.10.7" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.6-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:fb0ee33124db6eaa517d00890fc1a55c3bfe1cf78ba4a8899d71a06f2d6ff5c7"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c1c4b53b24a4c06547ce43e5fee6ec4e0d8fe2d597f4647fc033fd205707365"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eadc8fd310edb4bdbd333374f2c8fec6794bbbae99b592f448d8214a5e4050c0"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:61272a5aec2b2661f4fa2b37c907ce9701e821b2c1285d5c3ab0207ebd358d38"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57985ee7e91d6214c837936dc1608f40f330a6b88bb13f5a57ce5257807da143"}, - {file = "orjson-3.10.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:633a3b31d9d7c9f02d49c4ab4d0a86065c4a6f6adc297d63d272e043472acab5"}, - {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1c680b269d33ec444afe2bdc647c9eb73166fa47a16d9a75ee56a374f4a45f43"}, - {file = "orjson-3.10.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f759503a97a6ace19e55461395ab0d618b5a117e8d0fbb20e70cfd68a47327f2"}, - {file = "orjson-3.10.6-cp310-none-win32.whl", hash = "sha256:95a0cce17f969fb5391762e5719575217bd10ac5a189d1979442ee54456393f3"}, - {file = "orjson-3.10.6-cp310-none-win_amd64.whl", hash = "sha256:df25d9271270ba2133cc88ee83c318372bdc0f2cd6f32e7a450809a111efc45c"}, - {file = "orjson-3.10.6-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:b1ec490e10d2a77c345def52599311849fc063ae0e67cf4f84528073152bb2ba"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d43d3feb8f19d07e9f01e5b9be4f28801cf7c60d0fa0d279951b18fae1932b"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac3045267e98fe749408eee1593a142e02357c5c99be0802185ef2170086a863"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c27bc6a28ae95923350ab382c57113abd38f3928af3c80be6f2ba7eb8d8db0b0"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d27456491ca79532d11e507cadca37fb8c9324a3976294f68fb1eff2dc6ced5a"}, - {file = "orjson-3.10.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05ac3d3916023745aa3b3b388e91b9166be1ca02b7c7e41045da6d12985685f0"}, - {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1335d4ef59ab85cab66fe73fd7a4e881c298ee7f63ede918b7faa1b27cbe5212"}, - {file = "orjson-3.10.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4bbc6d0af24c1575edc79994c20e1b29e6fb3c6a570371306db0993ecf144dc5"}, - {file = "orjson-3.10.6-cp311-none-win32.whl", hash = "sha256:450e39ab1f7694465060a0550b3f6d328d20297bf2e06aa947b97c21e5241fbd"}, - {file = "orjson-3.10.6-cp311-none-win_amd64.whl", hash = "sha256:227df19441372610b20e05bdb906e1742ec2ad7a66ac8350dcfd29a63014a83b"}, - {file = "orjson-3.10.6-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ea2977b21f8d5d9b758bb3f344a75e55ca78e3ff85595d248eee813ae23ecdfb"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6f3d167d13a16ed263b52dbfedff52c962bfd3d270b46b7518365bcc2121eed"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f710f346e4c44a4e8bdf23daa974faede58f83334289df80bc9cd12fe82573c7"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7275664f84e027dcb1ad5200b8b18373e9c669b2a9ec33d410c40f5ccf4b257e"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0943e4c701196b23c240b3d10ed8ecd674f03089198cf503105b474a4f77f21f"}, - {file = "orjson-3.10.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:446dee5a491b5bc7d8f825d80d9637e7af43f86a331207b9c9610e2f93fee22a"}, - {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:64c81456d2a050d380786413786b057983892db105516639cb5d3ee3c7fd5148"}, - {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:960db0e31c4e52fa0fc3ecbaea5b2d3b58f379e32a95ae6b0ebeaa25b93dfd34"}, - {file = "orjson-3.10.6-cp312-none-win32.whl", hash = "sha256:a6ea7afb5b30b2317e0bee03c8d34c8181bc5a36f2afd4d0952f378972c4efd5"}, - {file = "orjson-3.10.6-cp312-none-win_amd64.whl", hash = "sha256:874ce88264b7e655dde4aeaacdc8fd772a7962faadfb41abe63e2a4861abc3dc"}, - {file = "orjson-3.10.6-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:66680eae4c4e7fc193d91cfc1353ad6d01b4801ae9b5314f17e11ba55e934183"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caff75b425db5ef8e8f23af93c80f072f97b4fb3afd4af44482905c9f588da28"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3722fddb821b6036fd2a3c814f6bd9b57a89dc6337b9924ecd614ebce3271394"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2c116072a8533f2fec435fde4d134610f806bdac20188c7bd2081f3e9e0133f"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6eeb13218c8cf34c61912e9df2de2853f1d009de0e46ea09ccdf3d757896af0a"}, - {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:965a916373382674e323c957d560b953d81d7a8603fbeee26f7b8248638bd48b"}, - {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:03c95484d53ed8e479cade8628c9cea00fd9d67f5554764a1110e0d5aa2de96e"}, - {file = "orjson-3.10.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:e060748a04cccf1e0a6f2358dffea9c080b849a4a68c28b1b907f272b5127e9b"}, - {file = "orjson-3.10.6-cp38-none-win32.whl", hash = "sha256:738dbe3ef909c4b019d69afc19caf6b5ed0e2f1c786b5d6215fbb7539246e4c6"}, - {file = "orjson-3.10.6-cp38-none-win_amd64.whl", hash = "sha256:d40f839dddf6a7d77114fe6b8a70218556408c71d4d6e29413bb5f150a692ff7"}, - {file = "orjson-3.10.6-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:697a35a083c4f834807a6232b3e62c8b280f7a44ad0b759fd4dce748951e70db"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd502f96bf5ea9a61cbc0b2b5900d0dd68aa0da197179042bdd2be67e51a1e4b"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f215789fb1667cdc874c1b8af6a84dc939fd802bf293a8334fce185c79cd359b"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2debd8ddce948a8c0938c8c93ade191d2f4ba4649a54302a7da905a81f00b56"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5410111d7b6681d4b0d65e0f58a13be588d01b473822483f77f513c7f93bd3b2"}, - {file = "orjson-3.10.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb1f28a137337fdc18384079fa5726810681055b32b92253fa15ae5656e1dddb"}, - {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bf2fbbce5fe7cd1aa177ea3eab2b8e6a6bc6e8592e4279ed3db2d62e57c0e1b2"}, - {file = "orjson-3.10.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:79b9b9e33bd4c517445a62b90ca0cc279b0f1f3970655c3df9e608bc3f91741a"}, - {file = "orjson-3.10.6-cp39-none-win32.whl", hash = "sha256:30b0a09a2014e621b1adf66a4f705f0809358350a757508ee80209b2d8dae219"}, - {file = "orjson-3.10.6-cp39-none-win_amd64.whl", hash = "sha256:49e3bc615652617d463069f91b867a4458114c5b104e13b7ae6872e5f79d0844"}, - {file = "orjson-3.10.6.tar.gz", hash = "sha256:e54b63d0a7c6c54a5f5f726bc93a2078111ef060fec4ecbf34c5db800ca3b3a7"}, + {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, + {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, + {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, + {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, + {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, + {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, + {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, + {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, + {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, + {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, + {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, + {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, + {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, + {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, + {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, + {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, + {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, + {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, + {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, + {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, + {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, + {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, + {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, + {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, + {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, + {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, + {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, + {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, + {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, + {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, + {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, + {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, + {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, + {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, + {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, + {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, + {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, ] [[package]] @@ -963,4 +969,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "727e999503d474aca451156967f9dde6653456d4b13553d2838606cb3f4c6a85" +content-hash = "c6ddcb49a381dd1d80b6d99fbf334924b3cc748b3a00ab8234440f955b45963c" diff --git a/pyproject.toml b/pyproject.toml index dba65afe..fdf6139c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^71.1.0" pook = "^2.0.0" -orjson = "^3.10.6" +orjson = "^3.10.7" [build-system] requires = ["poetry-core>=1.0.0"] From 2ef5fdaaebb1491ad4f4f99c84bc95cabd2cef83 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 09:48:06 -0700 Subject: [PATCH 45/88] Bump types-setuptools from 71.1.0.20240726 to 71.1.0.20240806 (#726) Bumps [types-setuptools](https://github.com/python/typeshed) from 71.1.0.20240726 to 71.1.0.20240806. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index fa02ba6b..7710783e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -811,13 +811,13 @@ files = [ [[package]] name = "types-setuptools" -version = "71.1.0.20240726" +version = "71.1.0.20240806" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-71.1.0.20240726.tar.gz", hash = "sha256:85ba28e9461bb1be86ebba4db0f1c2408f2b11115b1966334ea9dc464e29303e"}, - {file = "types_setuptools-71.1.0.20240726-py3-none-any.whl", hash = "sha256:a7775376f36e0ff09bcad236bf265777590a66b11623e48c20bfc30f1444ea36"}, + {file = "types-setuptools-71.1.0.20240806.tar.gz", hash = "sha256:ae5e7b4d643ab9e99fc00ac00041804118cabe72a56183c30d524fb064897ad6"}, + {file = "types_setuptools-71.1.0.20240806-py3-none-any.whl", hash = "sha256:3bd8dd02039be0bb79ad880d8893b8eefcb022fabbeeb61245c61b20c9ab1ed0"}, ] [[package]] From b40efbb23ee9b86bca4c50a513cc05af581d3958 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 20 Aug 2024 05:59:37 -0700 Subject: [PATCH 46/88] Bump types-setuptools from 71.1.0.20240806 to 71.1.0.20240818 (#731) Bumps [types-setuptools](https://github.com/python/typeshed) from 71.1.0.20240806 to 71.1.0.20240818. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 7710783e..02e4f5d8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -811,13 +811,13 @@ files = [ [[package]] name = "types-setuptools" -version = "71.1.0.20240806" +version = "71.1.0.20240818" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-71.1.0.20240806.tar.gz", hash = "sha256:ae5e7b4d643ab9e99fc00ac00041804118cabe72a56183c30d524fb064897ad6"}, - {file = "types_setuptools-71.1.0.20240806-py3-none-any.whl", hash = "sha256:3bd8dd02039be0bb79ad880d8893b8eefcb022fabbeeb61245c61b20c9ab1ed0"}, + {file = "types-setuptools-71.1.0.20240818.tar.gz", hash = "sha256:f62eaffaa39774462c65fbb49368c4dc1d91a90a28371cb14e1af090ff0e41e3"}, + {file = "types_setuptools-71.1.0.20240818-py3-none-any.whl", hash = "sha256:c4f95302f88369ac0ac46c67ddbfc70c6c4dbbb184d9fed356244217a2934025"}, ] [[package]] From 72d43180dff56b2a93948f8047704245aad8986a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 11:02:53 -0700 Subject: [PATCH 47/88] Bump mypy from 1.11.1 to 1.11.2 (#735) Bumps [mypy](https://github.com/python/mypy) from 1.11.1 to 1.11.2. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.11.1...v1.11.2) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 56 ++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/poetry.lock b/poetry.lock index 02e4f5d8..2b4ec39c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -312,38 +312,38 @@ files = [ [[package]] name = "mypy" -version = "1.11.1" +version = "1.11.2" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a32fc80b63de4b5b3e65f4be82b4cfa362a46702672aa6a0f443b4689af7008c"}, - {file = "mypy-1.11.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c1952f5ea8a5a959b05ed5f16452fddadbaae48b5d39235ab4c3fc444d5fd411"}, - {file = "mypy-1.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1e30dc3bfa4e157e53c1d17a0dad20f89dc433393e7702b813c10e200843b03"}, - {file = "mypy-1.11.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2c63350af88f43a66d3dfeeeb8d77af34a4f07d760b9eb3a8697f0386c7590b4"}, - {file = "mypy-1.11.1-cp310-cp310-win_amd64.whl", hash = "sha256:a831671bad47186603872a3abc19634f3011d7f83b083762c942442d51c58d58"}, - {file = "mypy-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7b6343d338390bb946d449677726edf60102a1c96079b4f002dedff375953fc5"}, - {file = "mypy-1.11.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4fe9f4e5e521b458d8feb52547f4bade7ef8c93238dfb5bbc790d9ff2d770ca"}, - {file = "mypy-1.11.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:886c9dbecc87b9516eff294541bf7f3655722bf22bb898ee06985cd7269898de"}, - {file = "mypy-1.11.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fca4a60e1dd9fd0193ae0067eaeeb962f2d79e0d9f0f66223a0682f26ffcc809"}, - {file = "mypy-1.11.1-cp311-cp311-win_amd64.whl", hash = "sha256:0bd53faf56de9643336aeea1c925012837432b5faf1701ccca7fde70166ccf72"}, - {file = "mypy-1.11.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f39918a50f74dc5969807dcfaecafa804fa7f90c9d60506835036cc1bc891dc8"}, - {file = "mypy-1.11.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0bc71d1fb27a428139dd78621953effe0d208aed9857cb08d002280b0422003a"}, - {file = "mypy-1.11.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b868d3bcff720dd7217c383474008ddabaf048fad8d78ed948bb4b624870a417"}, - {file = "mypy-1.11.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a707ec1527ffcdd1c784d0924bf5cb15cd7f22683b919668a04d2b9c34549d2e"}, - {file = "mypy-1.11.1-cp312-cp312-win_amd64.whl", hash = "sha256:64f4a90e3ea07f590c5bcf9029035cf0efeae5ba8be511a8caada1a4893f5525"}, - {file = "mypy-1.11.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:749fd3213916f1751fff995fccf20c6195cae941dc968f3aaadf9bb4e430e5a2"}, - {file = "mypy-1.11.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b639dce63a0b19085213ec5fdd8cffd1d81988f47a2dec7100e93564f3e8fb3b"}, - {file = "mypy-1.11.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c956b49c5d865394d62941b109728c5c596a415e9c5b2be663dd26a1ff07bc0"}, - {file = "mypy-1.11.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45df906e8b6804ef4b666af29a87ad9f5921aad091c79cc38e12198e220beabd"}, - {file = "mypy-1.11.1-cp38-cp38-win_amd64.whl", hash = "sha256:d44be7551689d9d47b7abc27c71257adfdb53f03880841a5db15ddb22dc63edb"}, - {file = "mypy-1.11.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2684d3f693073ab89d76da8e3921883019ea8a3ec20fa5d8ecca6a2db4c54bbe"}, - {file = "mypy-1.11.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79c07eb282cb457473add5052b63925e5cc97dfab9812ee65a7c7ab5e3cb551c"}, - {file = "mypy-1.11.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11965c2f571ded6239977b14deebd3f4c3abd9a92398712d6da3a772974fad69"}, - {file = "mypy-1.11.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a2b43895a0f8154df6519706d9bca8280cda52d3d9d1514b2d9c3e26792a0b74"}, - {file = "mypy-1.11.1-cp39-cp39-win_amd64.whl", hash = "sha256:1a81cf05975fd61aec5ae16501a091cfb9f605dc3e3c878c0da32f250b74760b"}, - {file = "mypy-1.11.1-py3-none-any.whl", hash = "sha256:0624bdb940255d2dd24e829d99a13cfeb72e4e9031f9492148f410ed30bcab54"}, - {file = "mypy-1.11.1.tar.gz", hash = "sha256:f404a0b069709f18bbdb702eb3dcfe51910602995de00bd39cea3050b5772d08"}, + {file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"}, + {file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"}, + {file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"}, + {file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"}, + {file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"}, + {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"}, + {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"}, + {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"}, + {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"}, + {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"}, + {file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"}, + {file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"}, + {file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"}, + {file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"}, + {file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"}, + {file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"}, + {file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"}, + {file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"}, + {file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"}, + {file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"}, + {file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"}, + {file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"}, + {file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"}, + {file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"}, + {file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"}, + {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"}, + {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"}, ] [package.dependencies] From 7fe4e37107f5017552de5f3562396706b46a217c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 12:22:05 -0700 Subject: [PATCH 48/88] Bump types-setuptools from 71.1.0.20240818 to 73.0.0.20240822 (#733) Bumps [types-setuptools](https://github.com/python/typeshed) from 71.1.0.20240818 to 73.0.0.20240822. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2b4ec39c..80a4da1d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -811,13 +811,13 @@ files = [ [[package]] name = "types-setuptools" -version = "71.1.0.20240818" +version = "73.0.0.20240822" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-71.1.0.20240818.tar.gz", hash = "sha256:f62eaffaa39774462c65fbb49368c4dc1d91a90a28371cb14e1af090ff0e41e3"}, - {file = "types_setuptools-71.1.0.20240818-py3-none-any.whl", hash = "sha256:c4f95302f88369ac0ac46c67ddbfc70c6c4dbbb184d9fed356244217a2934025"}, + {file = "types-setuptools-73.0.0.20240822.tar.gz", hash = "sha256:3a060681098eb3fbc2fea0a86f7f6af6aa1ca71906039d88d891ea2cecdd4dbf"}, + {file = "types_setuptools-73.0.0.20240822-py3-none-any.whl", hash = "sha256:b9eba9b68546031317a0fa506d4973641d987d74f79e7dd8369ad4f7a93dea17"}, ] [[package]] @@ -969,4 +969,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "c6ddcb49a381dd1d80b6d99fbf334924b3cc748b3a00ab8234440f955b45963c" +content-hash = "178096d92862139d0e26ac6cba4bb8e92dcf546c0fc46784f2d4dffc0e76da8a" diff --git a/pyproject.toml b/pyproject.toml index fdf6139c..e715e604 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^2.0.0" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^71.1.0" +types-setuptools = "^73.0.0" pook = "^2.0.0" orjson = "^3.10.7" From 2931b2d045bce86f0d3c99cb7c4ad1e15a42a096 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Mon, 2 Sep 2024 16:04:00 -0700 Subject: [PATCH 49/88] Add dividend and split ids (#736) * Add dividend and split ids * Added spec updates --- .polygon/rest.json | 22 +++++++++++++++++++--- polygon/rest/models/dividends.py | 1 + polygon/rest/models/splits.py | 1 + 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.polygon/rest.json b/.polygon/rest.json index 94dd8286..4eb0f967 100644 --- a/.polygon/rest.json +++ b/.polygon/rest.json @@ -24328,7 +24328,7 @@ "operationId": "ListDividends", "parameters": [ { - "description": "Return the dividends that contain this ticker.", + "description": "Specify a case-sensitive ticker symbol. For example, AAPL represents Apple Inc.", "in": "query", "name": "ticker", "schema": { @@ -24708,6 +24708,7 @@ "dividend_type": "CD", "ex_dividend_date": "2021-11-05", "frequency": 4, + "id": "E8e3c4f794613e9205e2f178a36c53fcc57cdabb55e1988c87b33f9e52e221444", "pay_date": "2021-11-11", "record_date": "2021-11-08", "ticker": "AAPL" @@ -24718,6 +24719,7 @@ "dividend_type": "CD", "ex_dividend_date": "2021-08-06", "frequency": 4, + "id": "E6436c5475706773f03490acf0b63fdb90b2c72bfeed329a6eb4afc080acd80ae", "pay_date": "2021-08-12", "record_date": "2021-08-09", "ticker": "AAPL" @@ -24806,6 +24808,10 @@ ] } }, + "id": { + "description": "The unique identifier of the dividend.", + "type": "string" + }, "pay_date": { "description": "The date that the dividend is paid out.", "type": "string" @@ -24832,7 +24838,8 @@ "ex_dividend_date", "frequency", "cash_amount", - "dividend_type" + "dividend_type", + "id" ], "type": "object", "x-polygon-go-struct-tags": { @@ -25841,12 +25848,14 @@ "results": [ { "execution_date": "2020-08-31", + "id": "E36416cce743c3964c5da63e1ef1626c0aece30fb47302eea5a49c0055c04e8d0", "split_from": 1, "split_to": 4, "ticker": "AAPL" }, { "execution_date": "2005-02-28", + "id": "E90a77bdf742661741ed7c8fc086415f0457c2816c45899d73aaa88bdc8ff6025", "split_from": 1, "split_to": 2, "ticker": "AAPL" @@ -25870,6 +25879,10 @@ "description": "The execution date of the stock split. On this date the stock split was applied.", "type": "string" }, + "id": { + "description": "The unique identifier for this stock split.", + "type": "string" + }, "split_from": { "description": "The second number in the split ratio.\n\nFor example: In a 2-for-1 split, split_from would be 1.", "format": "float", @@ -25887,7 +25900,10 @@ }, "required": [ "split_from", - "split_to" + "split_to", + "id", + "ticker", + "execution_date" ], "type": "object" }, diff --git a/polygon/rest/models/dividends.py b/polygon/rest/models/dividends.py index ef9adff0..68db98a9 100644 --- a/polygon/rest/models/dividends.py +++ b/polygon/rest/models/dividends.py @@ -5,6 +5,7 @@ @modelclass class Dividend: "Dividend contains data for a historical cash dividend, including the ticker symbol, declaration date, ex-dividend date, record date, pay date, frequency, and amount." + id: Optional[int] = None cash_amount: Optional[float] = None currency: Optional[str] = None declaration_date: Optional[str] = None diff --git a/polygon/rest/models/splits.py b/polygon/rest/models/splits.py index 93244c50..5fb27129 100644 --- a/polygon/rest/models/splits.py +++ b/polygon/rest/models/splits.py @@ -5,6 +5,7 @@ @modelclass class Split: "Split contains data for a historical stock split, including the ticker symbol, the execution date, and the factors of the split ratio." + id: Optional[int] = None execution_date: Optional[str] = None split_from: Optional[int] = None split_to: Optional[int] = None From 362af904352f4118fcb1676cc44ac83058330fba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 16:11:19 -0700 Subject: [PATCH 50/88] Bump certifi from 2024.7.4 to 2024.8.30 (#739) Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.7.4 to 2024.8.30. - [Commits](https://github.com/certifi/python-certifi/compare/2024.07.04...2024.08.30) --- updated-dependencies: - dependency-name: certifi dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: justinpolygon <123573436+justinpolygon@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 80a4da1d..9302736c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -90,13 +90,13 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2024.7.4" +version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, - {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, ] [[package]] From df58cad69b0e83ac9558e9ccd3232c6d00a18b83 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 16:14:04 -0700 Subject: [PATCH 51/88] Bump types-setuptools from 73.0.0.20240822 to 74.0.0.20240831 (#740) Bumps [types-setuptools](https://github.com/python/typeshed) from 73.0.0.20240822 to 74.0.0.20240831. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: justinpolygon <123573436+justinpolygon@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 9302736c..22d7e54e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -811,13 +811,13 @@ files = [ [[package]] name = "types-setuptools" -version = "73.0.0.20240822" +version = "74.0.0.20240831" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-73.0.0.20240822.tar.gz", hash = "sha256:3a060681098eb3fbc2fea0a86f7f6af6aa1ca71906039d88d891ea2cecdd4dbf"}, - {file = "types_setuptools-73.0.0.20240822-py3-none-any.whl", hash = "sha256:b9eba9b68546031317a0fa506d4973641d987d74f79e7dd8369ad4f7a93dea17"}, + {file = "types-setuptools-74.0.0.20240831.tar.gz", hash = "sha256:8b4a544cc91d42a019dc1e41fd397608b4bc7e20c7d7d5bc326589ffd9e8f8a1"}, + {file = "types_setuptools-74.0.0.20240831-py3-none-any.whl", hash = "sha256:4d9d18ea9214828d695a384633130009f5dee2681a157ee873d3680b62931590"}, ] [[package]] @@ -969,4 +969,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "178096d92862139d0e26ac6cba4bb8e92dcf546c0fc46784f2d4dffc0e76da8a" +content-hash = "a34da38dfba3acda825e45480cb029afcb8147842b1f2a3e270f61155b36b84f" diff --git a/pyproject.toml b/pyproject.toml index e715e604..93cf0e65 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^2.0.0" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^73.0.0" +types-setuptools = "^74.0.0" pook = "^2.0.0" orjson = "^3.10.7" From 95ef6e8654373f307aa3104abf604ae1716fd50e Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Thu, 5 Sep 2024 08:31:29 -0700 Subject: [PATCH 52/88] Updated ws spec to latest (#741) --- .polygon/websocket.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.polygon/websocket.json b/.polygon/websocket.json index 8d7d539b..f565e7d1 100644 --- a/.polygon/websocket.json +++ b/.polygon/websocket.json @@ -269,7 +269,7 @@ }, "c": { "type": "array", - "description": "The trade conditions. See Conditions and Indicators\" for Polygon.io's trade conditions glossary.\n", + "description": "The trade conditions. See Conditions and Indicators for Polygon.io's trade conditions glossary.\n", "items": { "type": "integer", "description": "The ID of the condition." @@ -3964,7 +3964,7 @@ }, "c": { "type": "array", - "description": "The trade conditions. See Conditions and Indicators\" for Polygon.io's trade conditions glossary.\n", + "description": "The trade conditions. See Conditions and Indicators for Polygon.io's trade conditions glossary.\n", "items": { "type": "integer", "description": "The ID of the condition." From 293e2a43485c40f3761ce63f546c13d83a738f8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 10:17:13 -0700 Subject: [PATCH 53/88] Bump types-setuptools from 74.0.0.20240831 to 74.1.0.20240907 (#744) Bumps [types-setuptools](https://github.com/python/typeshed) from 74.0.0.20240831 to 74.1.0.20240907. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 22d7e54e..3f759304 100644 --- a/poetry.lock +++ b/poetry.lock @@ -811,13 +811,13 @@ files = [ [[package]] name = "types-setuptools" -version = "74.0.0.20240831" +version = "74.1.0.20240907" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-74.0.0.20240831.tar.gz", hash = "sha256:8b4a544cc91d42a019dc1e41fd397608b4bc7e20c7d7d5bc326589ffd9e8f8a1"}, - {file = "types_setuptools-74.0.0.20240831-py3-none-any.whl", hash = "sha256:4d9d18ea9214828d695a384633130009f5dee2681a157ee873d3680b62931590"}, + {file = "types-setuptools-74.1.0.20240907.tar.gz", hash = "sha256:0abdb082552ca966c1e5fc244e4853adc62971f6cd724fb1d8a3713b580e5a65"}, + {file = "types_setuptools-74.1.0.20240907-py3-none-any.whl", hash = "sha256:15b38c8e63ca34f42f6063ff4b1dd662ea20086166d5ad6a102e670a52574120"}, ] [[package]] @@ -969,4 +969,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "a34da38dfba3acda825e45480cb029afcb8147842b1f2a3e270f61155b36b84f" +content-hash = "9558ba75da8bc1c8f294ecb05556f1de044b126c01f638b2a0bc0e2ab47cfc1d" diff --git a/pyproject.toml b/pyproject.toml index 93cf0e65..30c395b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^2.0.0" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^74.0.0" +types-setuptools = "^74.1.0" pook = "^2.0.0" orjson = "^3.10.7" From d9a3e393fa085cdb491143a4271d1869a90fe08f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 09:48:14 -0700 Subject: [PATCH 54/88] Bump urllib3 from 2.2.2 to 2.2.3 (#747) Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.2 to 2.2.3. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/2.2.2...2.2.3) --- updated-dependencies: - dependency-name: urllib3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3f759304..a38a516a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -844,13 +844,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] From 39b3d5475832a932aa6f0ba9a369a22f38fbf138 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 12:14:48 -0700 Subject: [PATCH 55/88] Bump websockets from 12.0 to 13.1 (#751) Bumps [websockets](https://github.com/python-websockets/websockets) from 12.0 to 13.1. - [Release notes](https://github.com/python-websockets/websockets/releases) - [Commits](https://github.com/python-websockets/websockets/compare/12.0...13.1) --- updated-dependencies: - dependency-name: websockets dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 162 +++++++++++++++++++++++++++---------------------- pyproject.toml | 2 +- 2 files changed, 89 insertions(+), 75 deletions(-) diff --git a/poetry.lock b/poetry.lock index a38a516a..8414eda6 100644 --- a/poetry.lock +++ b/poetry.lock @@ -861,83 +861,97 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "websockets" -version = "12.0" +version = "13.1" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = false python-versions = ">=3.8" files = [ - {file = "websockets-12.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374"}, - {file = "websockets-12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be"}, - {file = "websockets-12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547"}, - {file = "websockets-12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2"}, - {file = "websockets-12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558"}, - {file = "websockets-12.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480"}, - {file = "websockets-12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c"}, - {file = "websockets-12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8"}, - {file = "websockets-12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603"}, - {file = "websockets-12.0-cp310-cp310-win32.whl", hash = "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f"}, - {file = "websockets-12.0-cp310-cp310-win_amd64.whl", hash = "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf"}, - {file = "websockets-12.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4"}, - {file = "websockets-12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f"}, - {file = "websockets-12.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3"}, - {file = "websockets-12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c"}, - {file = "websockets-12.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45"}, - {file = "websockets-12.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04"}, - {file = "websockets-12.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447"}, - {file = "websockets-12.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca"}, - {file = "websockets-12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53"}, - {file = "websockets-12.0-cp311-cp311-win32.whl", hash = "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402"}, - {file = "websockets-12.0-cp311-cp311-win_amd64.whl", hash = "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b"}, - {file = "websockets-12.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df"}, - {file = "websockets-12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc"}, - {file = "websockets-12.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b"}, - {file = "websockets-12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb"}, - {file = "websockets-12.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92"}, - {file = "websockets-12.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed"}, - {file = "websockets-12.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5"}, - {file = "websockets-12.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2"}, - {file = "websockets-12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113"}, - {file = "websockets-12.0-cp312-cp312-win32.whl", hash = "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d"}, - {file = "websockets-12.0-cp312-cp312-win_amd64.whl", hash = "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f"}, - {file = "websockets-12.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438"}, - {file = "websockets-12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2"}, - {file = "websockets-12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d"}, - {file = "websockets-12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137"}, - {file = "websockets-12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205"}, - {file = "websockets-12.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def"}, - {file = "websockets-12.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8"}, - {file = "websockets-12.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967"}, - {file = "websockets-12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7"}, - {file = "websockets-12.0-cp38-cp38-win32.whl", hash = "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62"}, - {file = "websockets-12.0-cp38-cp38-win_amd64.whl", hash = "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892"}, - {file = "websockets-12.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d"}, - {file = "websockets-12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28"}, - {file = "websockets-12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53"}, - {file = "websockets-12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c"}, - {file = "websockets-12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec"}, - {file = "websockets-12.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9"}, - {file = "websockets-12.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae"}, - {file = "websockets-12.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b"}, - {file = "websockets-12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9"}, - {file = "websockets-12.0-cp39-cp39-win32.whl", hash = "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6"}, - {file = "websockets-12.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8"}, - {file = "websockets-12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd"}, - {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870"}, - {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077"}, - {file = "websockets-12.0-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b"}, - {file = "websockets-12.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30"}, - {file = "websockets-12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6"}, - {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123"}, - {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931"}, - {file = "websockets-12.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2"}, - {file = "websockets-12.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468"}, - {file = "websockets-12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b"}, - {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399"}, - {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7"}, - {file = "websockets-12.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611"}, - {file = "websockets-12.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370"}, - {file = "websockets-12.0-py3-none-any.whl", hash = "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e"}, - {file = "websockets-12.0.tar.gz", hash = "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b"}, + {file = "websockets-13.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f48c749857f8fb598fb890a75f540e3221d0976ed0bf879cf3c7eef34151acee"}, + {file = "websockets-13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7e72ce6bda6fb9409cc1e8164dd41d7c91466fb599eb047cfda72fe758a34a7"}, + {file = "websockets-13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f779498eeec470295a2b1a5d97aa1bc9814ecd25e1eb637bd9d1c73a327387f6"}, + {file = "websockets-13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676df3fe46956fbb0437d8800cd5f2b6d41143b6e7e842e60554398432cf29b"}, + {file = "websockets-13.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7affedeb43a70351bb811dadf49493c9cfd1ed94c9c70095fd177e9cc1541fa"}, + {file = "websockets-13.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1971e62d2caa443e57588e1d82d15f663b29ff9dfe7446d9964a4b6f12c1e700"}, + {file = "websockets-13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5f2e75431f8dc4a47f31565a6e1355fb4f2ecaa99d6b89737527ea917066e26c"}, + {file = "websockets-13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58cf7e75dbf7e566088b07e36ea2e3e2bd5676e22216e4cad108d4df4a7402a0"}, + {file = "websockets-13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c90d6dec6be2c7d03378a574de87af9b1efea77d0c52a8301dd831ece938452f"}, + {file = "websockets-13.1-cp310-cp310-win32.whl", hash = "sha256:730f42125ccb14602f455155084f978bd9e8e57e89b569b4d7f0f0c17a448ffe"}, + {file = "websockets-13.1-cp310-cp310-win_amd64.whl", hash = "sha256:5993260f483d05a9737073be197371940c01b257cc45ae3f1d5d7adb371b266a"}, + {file = "websockets-13.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:61fc0dfcda609cda0fc9fe7977694c0c59cf9d749fbb17f4e9483929e3c48a19"}, + {file = "websockets-13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ceec59f59d092c5007e815def4ebb80c2de330e9588e101cf8bd94c143ec78a5"}, + {file = "websockets-13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c1dca61c6db1166c48b95198c0b7d9c990b30c756fc2923cc66f68d17dc558fd"}, + {file = "websockets-13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:308e20f22c2c77f3f39caca508e765f8725020b84aa963474e18c59accbf4c02"}, + {file = "websockets-13.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62d516c325e6540e8a57b94abefc3459d7dab8ce52ac75c96cad5549e187e3a7"}, + {file = "websockets-13.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c6e35319b46b99e168eb98472d6c7d8634ee37750d7693656dc766395df096"}, + {file = "websockets-13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5f9fee94ebafbc3117c30be1844ed01a3b177bb6e39088bc6b2fa1dc15572084"}, + {file = "websockets-13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7c1e90228c2f5cdde263253fa5db63e6653f1c00e7ec64108065a0b9713fa1b3"}, + {file = "websockets-13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6548f29b0e401eea2b967b2fdc1c7c7b5ebb3eeb470ed23a54cd45ef078a0db9"}, + {file = "websockets-13.1-cp311-cp311-win32.whl", hash = "sha256:c11d4d16e133f6df8916cc5b7e3e96ee4c44c936717d684a94f48f82edb7c92f"}, + {file = "websockets-13.1-cp311-cp311-win_amd64.whl", hash = "sha256:d04f13a1d75cb2b8382bdc16ae6fa58c97337253826dfe136195b7f89f661557"}, + {file = "websockets-13.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9d75baf00138f80b48f1eac72ad1535aac0b6461265a0bcad391fc5aba875cfc"}, + {file = "websockets-13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9b6f347deb3dcfbfde1c20baa21c2ac0751afaa73e64e5b693bb2b848efeaa49"}, + {file = "websockets-13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de58647e3f9c42f13f90ac7e5f58900c80a39019848c5547bc691693098ae1bd"}, + {file = "websockets-13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1b54689e38d1279a51d11e3467dd2f3a50f5f2e879012ce8f2d6943f00e83f0"}, + {file = "websockets-13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf1781ef73c073e6b0f90af841aaf98501f975d306bbf6221683dd594ccc52b6"}, + {file = "websockets-13.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d23b88b9388ed85c6faf0e74d8dec4f4d3baf3ecf20a65a47b836d56260d4b9"}, + {file = "websockets-13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3c78383585f47ccb0fcf186dcb8a43f5438bd7d8f47d69e0b56f71bf431a0a68"}, + {file = "websockets-13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d6d300f8ec35c24025ceb9b9019ae9040c1ab2f01cddc2bcc0b518af31c75c14"}, + {file = "websockets-13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a9dcaf8b0cc72a392760bb8755922c03e17a5a54e08cca58e8b74f6902b433cf"}, + {file = "websockets-13.1-cp312-cp312-win32.whl", hash = "sha256:2f85cf4f2a1ba8f602298a853cec8526c2ca42a9a4b947ec236eaedb8f2dc80c"}, + {file = "websockets-13.1-cp312-cp312-win_amd64.whl", hash = "sha256:38377f8b0cdeee97c552d20cf1865695fcd56aba155ad1b4ca8779a5b6ef4ac3"}, + {file = "websockets-13.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a9ab1e71d3d2e54a0aa646ab6d4eebfaa5f416fe78dfe4da2839525dc5d765c6"}, + {file = "websockets-13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b9d7439d7fab4dce00570bb906875734df13d9faa4b48e261c440a5fec6d9708"}, + {file = "websockets-13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:327b74e915cf13c5931334c61e1a41040e365d380f812513a255aa804b183418"}, + {file = "websockets-13.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:325b1ccdbf5e5725fdcb1b0e9ad4d2545056479d0eee392c291c1bf76206435a"}, + {file = "websockets-13.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:346bee67a65f189e0e33f520f253d5147ab76ae42493804319b5716e46dddf0f"}, + {file = "websockets-13.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91a0fa841646320ec0d3accdff5b757b06e2e5c86ba32af2e0815c96c7a603c5"}, + {file = "websockets-13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:18503d2c5f3943e93819238bf20df71982d193f73dcecd26c94514f417f6b135"}, + {file = "websockets-13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a9cd1af7e18e5221d2878378fbc287a14cd527fdd5939ed56a18df8a31136bb2"}, + {file = "websockets-13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:70c5be9f416aa72aab7a2a76c90ae0a4fe2755c1816c153c1a2bcc3333ce4ce6"}, + {file = "websockets-13.1-cp313-cp313-win32.whl", hash = "sha256:624459daabeb310d3815b276c1adef475b3e6804abaf2d9d2c061c319f7f187d"}, + {file = "websockets-13.1-cp313-cp313-win_amd64.whl", hash = "sha256:c518e84bb59c2baae725accd355c8dc517b4a3ed8db88b4bc93c78dae2974bf2"}, + {file = "websockets-13.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c7934fd0e920e70468e676fe7f1b7261c1efa0d6c037c6722278ca0228ad9d0d"}, + {file = "websockets-13.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:149e622dc48c10ccc3d2760e5f36753db9cacf3ad7bc7bbbfd7d9c819e286f23"}, + {file = "websockets-13.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a569eb1b05d72f9bce2ebd28a1ce2054311b66677fcd46cf36204ad23acead8c"}, + {file = "websockets-13.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95df24ca1e1bd93bbca51d94dd049a984609687cb2fb08a7f2c56ac84e9816ea"}, + {file = "websockets-13.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8dbb1bf0c0a4ae8b40bdc9be7f644e2f3fb4e8a9aca7145bfa510d4a374eeb7"}, + {file = "websockets-13.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:035233b7531fb92a76beefcbf479504db8c72eb3bff41da55aecce3a0f729e54"}, + {file = "websockets-13.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e4450fc83a3df53dec45922b576e91e94f5578d06436871dce3a6be38e40f5db"}, + {file = "websockets-13.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:463e1c6ec853202dd3657f156123d6b4dad0c546ea2e2e38be2b3f7c5b8e7295"}, + {file = "websockets-13.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6d6855bbe70119872c05107e38fbc7f96b1d8cb047d95c2c50869a46c65a8e96"}, + {file = "websockets-13.1-cp38-cp38-win32.whl", hash = "sha256:204e5107f43095012b00f1451374693267adbb832d29966a01ecc4ce1db26faf"}, + {file = "websockets-13.1-cp38-cp38-win_amd64.whl", hash = "sha256:485307243237328c022bc908b90e4457d0daa8b5cf4b3723fd3c4a8012fce4c6"}, + {file = "websockets-13.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9b37c184f8b976f0c0a231a5f3d6efe10807d41ccbe4488df8c74174805eea7d"}, + {file = "websockets-13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:163e7277e1a0bd9fb3c8842a71661ad19c6aa7bb3d6678dc7f89b17fbcc4aeb7"}, + {file = "websockets-13.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4b889dbd1342820cc210ba44307cf75ae5f2f96226c0038094455a96e64fb07a"}, + {file = "websockets-13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:586a356928692c1fed0eca68b4d1c2cbbd1ca2acf2ac7e7ebd3b9052582deefa"}, + {file = "websockets-13.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7bd6abf1e070a6b72bfeb71049d6ad286852e285f146682bf30d0296f5fbadfa"}, + {file = "websockets-13.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2aad13a200e5934f5a6767492fb07151e1de1d6079c003ab31e1823733ae79"}, + {file = "websockets-13.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:df01aea34b6e9e33572c35cd16bae5a47785e7d5c8cb2b54b2acdb9678315a17"}, + {file = "websockets-13.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e54affdeb21026329fb0744ad187cf812f7d3c2aa702a5edb562b325191fcab6"}, + {file = "websockets-13.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9ef8aa8bdbac47f4968a5d66462a2a0935d044bf35c0e5a8af152d58516dbeb5"}, + {file = "websockets-13.1-cp39-cp39-win32.whl", hash = "sha256:deeb929efe52bed518f6eb2ddc00cc496366a14c726005726ad62c2dd9017a3c"}, + {file = "websockets-13.1-cp39-cp39-win_amd64.whl", hash = "sha256:7c65ffa900e7cc958cd088b9a9157a8141c991f8c53d11087e6fb7277a03f81d"}, + {file = "websockets-13.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5dd6da9bec02735931fccec99d97c29f47cc61f644264eb995ad6c0c27667238"}, + {file = "websockets-13.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:2510c09d8e8df777177ee3d40cd35450dc169a81e747455cc4197e63f7e7bfe5"}, + {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1c3cf67185543730888b20682fb186fc8d0fa6f07ccc3ef4390831ab4b388d9"}, + {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcc03c8b72267e97b49149e4863d57c2d77f13fae12066622dc78fe322490fe6"}, + {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:004280a140f220c812e65f36944a9ca92d766b6cc4560be652a0a3883a79ed8a"}, + {file = "websockets-13.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e2620453c075abeb0daa949a292e19f56de518988e079c36478bacf9546ced23"}, + {file = "websockets-13.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9156c45750b37337f7b0b00e6248991a047be4aa44554c9886fe6bdd605aab3b"}, + {file = "websockets-13.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:80c421e07973a89fbdd93e6f2003c17d20b69010458d3a8e37fb47874bd67d51"}, + {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82d0ba76371769d6a4e56f7e83bb8e81846d17a6190971e38b5de108bde9b0d7"}, + {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9875a0143f07d74dc5e1ded1c4581f0d9f7ab86c78994e2ed9e95050073c94d"}, + {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a11e38ad8922c7961447f35c7b17bffa15de4d17c70abd07bfbe12d6faa3e027"}, + {file = "websockets-13.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4059f790b6ae8768471cddb65d3c4fe4792b0ab48e154c9f0a04cefaabcd5978"}, + {file = "websockets-13.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:25c35bf84bf7c7369d247f0b8cfa157f989862c49104c5cf85cb5436a641d93e"}, + {file = "websockets-13.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:83f91d8a9bb404b8c2c41a707ac7f7f75b9442a0a876df295de27251a856ad09"}, + {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a43cfdcddd07f4ca2b1afb459824dd3c6d53a51410636a2c7fc97b9a8cf4842"}, + {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48a2ef1381632a2f0cb4efeff34efa97901c9fbc118e01951ad7cfc10601a9bb"}, + {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:459bf774c754c35dbb487360b12c5727adab887f1622b8aed5755880a21c4a20"}, + {file = "websockets-13.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:95858ca14a9f6fa8413d29e0a585b31b278388aa775b8a81fa24830123874678"}, + {file = "websockets-13.1-py3-none-any.whl", hash = "sha256:a9a396a6ad26130cdae92ae10c36af09d9bfe6cafe69670fd3b6da9b07b4044f"}, + {file = "websockets-13.1.tar.gz", hash = "sha256:a3b3366087c1bc0a2795111edcadddb8b3b59509d5db5d7ea3fdd69f954a8878"}, ] [[package]] @@ -969,4 +983,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "9558ba75da8bc1c8f294ecb05556f1de044b126c01f638b2a0bc0e2ab47cfc1d" +content-hash = "16ce959b3125225677cc5534a9dd13ef463ff413838e4712f6c8657708911961" diff --git a/pyproject.toml b/pyproject.toml index 30c395b6..183611be 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ packages = [ [tool.poetry.dependencies] python = "^3.8" urllib3 = ">=1.26.9,<3.0.0" -websockets = ">=10.3,<13.0" +websockets = ">=10.3,<14.0" certifi = ">=2022.5.18,<2025.0.0" [tool.poetry.dev-dependencies] From 4ec616fba2dd61cfb5a8b5fde5b907d3edf77882 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 12:19:24 -0700 Subject: [PATCH 56/88] Bump sphinx-rtd-theme from 2.0.0 to 3.0.1 (#759) Bumps [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) from 2.0.0 to 3.0.1. - [Changelog](https://github.com/readthedocs/sphinx_rtd_theme/blob/master/docs/changelog.rst) - [Commits](https://github.com/readthedocs/sphinx_rtd_theme/compare/2.0.0...3.0.1) --- updated-dependencies: - dependency-name: sphinx-rtd-theme dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 16 ++++++++-------- pyproject.toml | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8414eda6..1b7841cc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -667,22 +667,22 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.4.2)", "diff-cover (>=8.0.3)", [[package]] name = "sphinx-rtd-theme" -version = "2.0.0" +version = "3.0.1" description = "Read the Docs theme for Sphinx" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "sphinx_rtd_theme-2.0.0-py2.py3-none-any.whl", hash = "sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586"}, - {file = "sphinx_rtd_theme-2.0.0.tar.gz", hash = "sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b"}, + {file = "sphinx_rtd_theme-3.0.1-py2.py3-none-any.whl", hash = "sha256:921c0ece75e90633ee876bd7b148cfaad136b481907ad154ac3669b6fc957916"}, + {file = "sphinx_rtd_theme-3.0.1.tar.gz", hash = "sha256:a4c5745d1b06dfcb80b7704fe532eb765b44065a8fad9851e4258c8804140703"}, ] [package.dependencies] -docutils = "<0.21" -sphinx = ">=5,<8" +docutils = ">0.18,<0.22" +sphinx = ">=6,<9" sphinxcontrib-jquery = ">=4,<5" [package.extras] -dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] +dev = ["bump2version", "transifex-client", "twine", "wheel"] [[package]] name = "sphinxcontrib-applehelp" @@ -983,4 +983,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "16ce959b3125225677cc5534a9dd13ef463ff413838e4712f6c8657708911961" +content-hash = "dade83f0be3416b5ec775808a02e09b23f46dddf7dadf735c8ce2ac423f397f7" diff --git a/pyproject.toml b/pyproject.toml index 183611be..4b388065 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,7 +34,7 @@ black = "^24.8.0" mypy = "^1.11" types-urllib3 = "^1.26.25" Sphinx = "^7.1.2" -sphinx-rtd-theme = "^2.0.0" +sphinx-rtd-theme = "^3.0.1" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" From 435f785b52f4d20592d613fab230c1e90fd6e308 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Oct 2024 15:33:31 -0700 Subject: [PATCH 57/88] Bump types-setuptools from 74.1.0.20240907 to 75.1.0.20240917 (#752) Bumps [types-setuptools](https://github.com/python/typeshed) from 74.1.0.20240907 to 75.1.0.20240917. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 1b7841cc..6bb7182c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -811,13 +811,13 @@ files = [ [[package]] name = "types-setuptools" -version = "74.1.0.20240907" +version = "75.1.0.20240917" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-74.1.0.20240907.tar.gz", hash = "sha256:0abdb082552ca966c1e5fc244e4853adc62971f6cd724fb1d8a3713b580e5a65"}, - {file = "types_setuptools-74.1.0.20240907-py3-none-any.whl", hash = "sha256:15b38c8e63ca34f42f6063ff4b1dd662ea20086166d5ad6a102e670a52574120"}, + {file = "types-setuptools-75.1.0.20240917.tar.gz", hash = "sha256:12f12a165e7ed383f31def705e5c0fa1c26215dd466b0af34bd042f7d5331f55"}, + {file = "types_setuptools-75.1.0.20240917-py3-none-any.whl", hash = "sha256:06f78307e68d1bbde6938072c57b81cf8a99bc84bd6dc7e4c5014730b097dc0c"}, ] [[package]] @@ -983,4 +983,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "dade83f0be3416b5ec775808a02e09b23f46dddf7dadf735c8ce2ac423f397f7" +content-hash = "8ba6db5af50543ec90432b2ad8f573275a95135148d7b520694496ed51eb3535" diff --git a/pyproject.toml b/pyproject.toml index 4b388065..b0b64686 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^3.0.1" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^74.1.0" +types-setuptools = "^75.1.0" pook = "^2.0.0" orjson = "^3.10.7" From 850c3043b2abea04ba81c575fcca105035abc916 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 20:32:33 -0700 Subject: [PATCH 58/88] Bump mypy from 1.11.2 to 1.12.1 (#770) Bumps [mypy](https://github.com/python/mypy) from 1.11.2 to 1.12.1. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.11.2...v1.12.1) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 63 +++++++++++++++++++++++++++----------------------- pyproject.toml | 2 +- 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/poetry.lock b/poetry.lock index 6bb7182c..a7c4353d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -312,38 +312,43 @@ files = [ [[package]] name = "mypy" -version = "1.11.2" +version = "1.12.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"}, - {file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"}, - {file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"}, - {file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"}, - {file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"}, - {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"}, - {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"}, - {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"}, - {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"}, - {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"}, - {file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"}, - {file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"}, - {file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"}, - {file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"}, - {file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"}, - {file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"}, - {file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"}, - {file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"}, - {file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"}, - {file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"}, - {file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"}, - {file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"}, - {file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"}, - {file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"}, - {file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"}, - {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"}, - {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"}, + {file = "mypy-1.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3d7d4371829184e22fda4015278fbfdef0327a4b955a483012bd2d423a788801"}, + {file = "mypy-1.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f59f1dfbf497d473201356966e353ef09d4daec48caeacc0254db8ef633a28a5"}, + {file = "mypy-1.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b947097fae68004b8328c55161ac9db7d3566abfef72d9d41b47a021c2fba6b1"}, + {file = "mypy-1.12.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:96af62050971c5241afb4701c15189ea9507db89ad07794a4ee7b4e092dc0627"}, + {file = "mypy-1.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:d90da248f4c2dba6c44ddcfea94bb361e491962f05f41990ff24dbd09969ce20"}, + {file = "mypy-1.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1230048fec1380faf240be6385e709c8570604d2d27ec6ca7e573e3bc09c3735"}, + {file = "mypy-1.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:02dcfe270c6ea13338210908f8cadc8d31af0f04cee8ca996438fe6a97b4ec66"}, + {file = "mypy-1.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a5a437c9102a6a252d9e3a63edc191a3aed5f2fcb786d614722ee3f4472e33f6"}, + {file = "mypy-1.12.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:186e0c8346efc027ee1f9acf5ca734425fc4f7dc2b60144f0fbe27cc19dc7931"}, + {file = "mypy-1.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:673ba1140a478b50e6d265c03391702fa11a5c5aff3f54d69a62a48da32cb811"}, + {file = "mypy-1.12.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9fb83a7be97c498176fb7486cafbb81decccaef1ac339d837c377b0ce3743a7f"}, + {file = "mypy-1.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:389e307e333879c571029d5b93932cf838b811d3f5395ed1ad05086b52148fb0"}, + {file = "mypy-1.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:94b2048a95a21f7a9ebc9fbd075a4fcd310410d078aa0228dbbad7f71335e042"}, + {file = "mypy-1.12.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ee5932370ccf7ebf83f79d1c157a5929d7ea36313027b0d70a488493dc1b179"}, + {file = "mypy-1.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:19bf51f87a295e7ab2894f1d8167622b063492d754e69c3c2fed6563268cb42a"}, + {file = "mypy-1.12.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d34167d43613ffb1d6c6cdc0cc043bb106cac0aa5d6a4171f77ab92a3c758bcc"}, + {file = "mypy-1.12.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:427878aa54f2e2c5d8db31fa9010c599ed9f994b3b49e64ae9cd9990c40bd635"}, + {file = "mypy-1.12.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5fcde63ea2c9f69d6be859a1e6dd35955e87fa81de95bc240143cf00de1f7f81"}, + {file = "mypy-1.12.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d54d840f6c052929f4a3d2aab2066af0f45a020b085fe0e40d4583db52aab4e4"}, + {file = "mypy-1.12.1-cp313-cp313-win_amd64.whl", hash = "sha256:20db6eb1ca3d1de8ece00033b12f793f1ea9da767334b7e8c626a4872090cf02"}, + {file = "mypy-1.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b16fe09f9c741d85a2e3b14a5257a27a4f4886c171d562bc5a5e90d8591906b8"}, + {file = "mypy-1.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0dcc1e843d58f444fce19da4cce5bd35c282d4bde232acdeca8279523087088a"}, + {file = "mypy-1.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e10ba7de5c616e44ad21005fa13450cd0de7caaa303a626147d45307492e4f2d"}, + {file = "mypy-1.12.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0e6fe449223fa59fbee351db32283838a8fee8059e0028e9e6494a03802b4004"}, + {file = "mypy-1.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:dc6e2a2195a290a7fd5bac3e60b586d77fc88e986eba7feced8b778c373f9afe"}, + {file = "mypy-1.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:de5b2a8988b4e1269a98beaf0e7cc71b510d050dce80c343b53b4955fff45f19"}, + {file = "mypy-1.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:843826966f1d65925e8b50d2b483065c51fc16dc5d72647e0236aae51dc8d77e"}, + {file = "mypy-1.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9fe20f89da41a95e14c34b1ddb09c80262edcc295ad891f22cc4b60013e8f78d"}, + {file = "mypy-1.12.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8135ffec02121a75f75dc97c81af7c14aa4ae0dda277132cfcd6abcd21551bfd"}, + {file = "mypy-1.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:a7b76fa83260824300cc4834a3ab93180db19876bce59af921467fd03e692810"}, + {file = "mypy-1.12.1-py3-none-any.whl", hash = "sha256:ce561a09e3bb9863ab77edf29ae3a50e65685ad74bba1431278185b7e5d5486e"}, + {file = "mypy-1.12.1.tar.gz", hash = "sha256:f5b3936f7a6d0e8280c9bdef94c7ce4847f5cdfc258fbb2c29a8c1711e8bb96d"}, ] [package.dependencies] @@ -983,4 +988,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "8ba6db5af50543ec90432b2ad8f573275a95135148d7b520694496ed51eb3535" +content-hash = "21290a9d5e817ae5903571bd5e7cb6bf580ce43e73de9080e93be06af9887999" diff --git a/pyproject.toml b/pyproject.toml index b0b64686..187d93e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ certifi = ">=2022.5.18,<2025.0.0" [tool.poetry.dev-dependencies] black = "^24.8.0" -mypy = "^1.11" +mypy = "^1.12" types-urllib3 = "^1.26.25" Sphinx = "^7.1.2" sphinx-rtd-theme = "^3.0.1" From 49221494705cf8ffd682ce43f3afc0914c87dbbc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 21:03:28 -0700 Subject: [PATCH 59/88] Bump types-setuptools from 75.1.0.20240917 to 75.2.0.20241019 (#769) Bumps [types-setuptools](https://github.com/python/typeshed) from 75.1.0.20240917 to 75.2.0.20241019. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index a7c4353d..e15b2b06 100644 --- a/poetry.lock +++ b/poetry.lock @@ -816,13 +816,13 @@ files = [ [[package]] name = "types-setuptools" -version = "75.1.0.20240917" +version = "75.2.0.20241019" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-75.1.0.20240917.tar.gz", hash = "sha256:12f12a165e7ed383f31def705e5c0fa1c26215dd466b0af34bd042f7d5331f55"}, - {file = "types_setuptools-75.1.0.20240917-py3-none-any.whl", hash = "sha256:06f78307e68d1bbde6938072c57b81cf8a99bc84bd6dc7e4c5014730b097dc0c"}, + {file = "types-setuptools-75.2.0.20241019.tar.gz", hash = "sha256:86ea31b5f6df2c6b8f2dc8ae3f72b213607f62549b6fa2ed5866e5299f968694"}, + {file = "types_setuptools-75.2.0.20241019-py3-none-any.whl", hash = "sha256:2e48ff3acd4919471e80d5e3f049cce5c177e108d5d36d2d4cee3fa4d4104258"}, ] [[package]] @@ -988,4 +988,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "21290a9d5e817ae5903571bd5e7cb6bf580ce43e73de9080e93be06af9887999" +content-hash = "1280173331a0e498864db3e9f55fda22bd8254c44bf06487e34096d554341396" diff --git a/pyproject.toml b/pyproject.toml index 187d93e2..1ffcf71d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^3.0.1" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^75.1.0" +types-setuptools = "^75.2.0" pook = "^2.0.0" orjson = "^3.10.7" From f0b59296e2cfa723b07a3e987ebc25f1cbfcac5d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 21:09:55 -0700 Subject: [PATCH 60/88] Bump orjson from 3.10.7 to 3.10.9 (#768) Bumps [orjson](https://github.com/ijl/orjson) from 3.10.7 to 3.10.9. - [Release notes](https://github.com/ijl/orjson/releases) - [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md) - [Commits](https://github.com/ijl/orjson/compare/3.10.7...3.10.9) --- updated-dependencies: - dependency-name: orjson dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 118 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/poetry.lock b/poetry.lock index e15b2b06..14d1093b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -389,68 +389,68 @@ six = ">=1.8.0" [[package]] name = "orjson" -version = "3.10.7" +version = "3.10.9" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, - {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, - {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, - {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, - {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, - {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, - {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, - {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, - {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, - {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, - {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, - {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, - {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, - {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, - {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, - {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, - {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, - {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, - {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, - {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, + {file = "orjson-3.10.9-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a377186a11b48c55969e34f0aa414c2826a234f212d6f2b312ba512e3cdb2c6f"}, + {file = "orjson-3.10.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bf37bf0ca538065c34efe1803378b2dadd7e05b06610a086c2857f15ee59e12"}, + {file = "orjson-3.10.9-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7d9d83a91168aa48309acba804e393b7d9216b66f15e38f339b9fbb00db8986d"}, + {file = "orjson-3.10.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0014038a17a1fe273da0a5489787677ef5a64566ab383ad6d929e44ed5683f4"}, + {file = "orjson-3.10.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6ae1b1733e4528e45675ed09a732b6ac37d716bce2facaf467f84ce774adecd"}, + {file = "orjson-3.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe91c2259c4a859356b6db1c6e649b40577492f66d483da8b8af6da0f87c00e3"}, + {file = "orjson-3.10.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a04f912c32463386ba117591c99a3d9e40b3b69bed9c5123d89dff06f0f5a4b0"}, + {file = "orjson-3.10.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae82ca347829ca47431767b079f96bb977f592189250ccdede676339a80c8982"}, + {file = "orjson-3.10.9-cp310-none-win32.whl", hash = "sha256:fd5083906825d7f5d23089425ce5424d783d6294020bcabb8518a3e1f97833e5"}, + {file = "orjson-3.10.9-cp310-none-win_amd64.whl", hash = "sha256:e9ff9521b5be0340c8e686bcfe2619777fd7583f71e7b494601cc91ad3919d2e"}, + {file = "orjson-3.10.9-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f3bd9df47385b8fabb3b2ee1e83f9960b8accc1905be971a1c257f16c32b491e"}, + {file = "orjson-3.10.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4948961b6bce1e2086b2cf0b56cc454cdab589d40c7f85be71fb5a5556c51d3"}, + {file = "orjson-3.10.9-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a9fc7a6cf2b229ddc323e136df13b3fb4466c50d84ed600cd0898223dd2fea3"}, + {file = "orjson-3.10.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2314846e1029a2d2b899140f350eaaf3a73281df43ba84ac44d94ca861b5b269"}, + {file = "orjson-3.10.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f52d993504827503411df2d60e60acf52885561458d6273f99ecd172f31c4352"}, + {file = "orjson-3.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e29bbf08d907756c145a3a3a1f7ce2f11f15e3edbd3342842589d6030981b76f"}, + {file = "orjson-3.10.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ae82992c00b480c3cc7dac6739324554be8c5d8e858a90044928506a3333ef4"}, + {file = "orjson-3.10.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6fdf8d32b6d94019dc15163542d345e9ce4c4661f56b318608aa3088a1a3a23b"}, + {file = "orjson-3.10.9-cp311-none-win32.whl", hash = "sha256:01f5fef452b4d7615f2e94153479370a4b59e0c964efb32dd902978f807a45cd"}, + {file = "orjson-3.10.9-cp311-none-win_amd64.whl", hash = "sha256:95361c4197c7ce9afdf56255de6f4e2474c39d16a277cce31d1b99a2520486d8"}, + {file = "orjson-3.10.9-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:43ad5560db54331c007dc38be5ba7706cb72974a29ae8227019d89305d750a6f"}, + {file = "orjson-3.10.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1471c3274b1a4a9b8f4b9ed6effaea9ad885796373797515c44b365b375c256d"}, + {file = "orjson-3.10.9-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:41d8cac575acd15918903d74cfaabb5dbe57b357b93341332f647d1013928dcc"}, + {file = "orjson-3.10.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2920c8754f1aedc98bd357ec172af18ce48f5f1017a92244c85fe41d16d3c6e0"}, + {file = "orjson-3.10.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7fa3ff6a0d9d15a0d0d2254cca16cd919156a18423654ce5574591392fe9914"}, + {file = "orjson-3.10.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1e91b90c0c26bd79593967c1adef421bcff88c9e723d49c93bb7ad8af80bc6b"}, + {file = "orjson-3.10.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f11949024f785ace1a516db32fa6255f6227226b2c988abf66f5aee61d43d8f7"}, + {file = "orjson-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:060e020d85d0ec145bc1b536b1fd9c10a0519c91991ead9724d6f759ebe26b9a"}, + {file = "orjson-3.10.9-cp312-none-win32.whl", hash = "sha256:71f73439999fe662843da3607cdf6e75b1551c330f487e5801d463d969091c63"}, + {file = "orjson-3.10.9-cp312-none-win_amd64.whl", hash = "sha256:12e2efe81356b8448f1cd130f8d75d3718de583112d71f2e2f8baa81bd835bb9"}, + {file = "orjson-3.10.9-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:0ab6e3ad10e964392f0e838751bcce2ef9c8fa8be7deddffff83088e5791566d"}, + {file = "orjson-3.10.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68ef65223baab00f469c8698f771ab3e6ccf6af2a987e77de5b566b4ec651150"}, + {file = "orjson-3.10.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6f130848205fea90a2cb9fa2b11cafff9a9f31f4efad225800bc8b9e4a702f24"}, + {file = "orjson-3.10.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2ea7a98f3295ed8adb6730a5788cc78dafea28300d19932a1d2143457f7db802"}, + {file = "orjson-3.10.9-cp313-none-win32.whl", hash = "sha256:bdce39f96149a74fddeb2674c54f1da5e57724d32952eb6df2ac719b66d453cc"}, + {file = "orjson-3.10.9-cp313-none-win_amd64.whl", hash = "sha256:d11383701d4b58e795039b662ada46987744293d57bfa2719e7379b8d67bc796"}, + {file = "orjson-3.10.9-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1c3a1e845916a3739ab4162bb48dee66e0e727a19faf397176a7db0d9826cc3c"}, + {file = "orjson-3.10.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:063ca59d93d93d1387f0c4bb766c6d4f5b0e423fe7c366d0bd4401a56d1669d1"}, + {file = "orjson-3.10.9-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:938b7fcd79cf06fe348fb24b6163fbaa2fdc9fbed8b1f06318f24467f1487e63"}, + {file = "orjson-3.10.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cc32a9e43c7693011ccde6f8eff8cba75ca0d2a55de11092faa4a716101e67f5"}, + {file = "orjson-3.10.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b3069b7e2f57f3eef2282029b9c2ba21f08a55f1018e483663a3356f046af4c"}, + {file = "orjson-3.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4289b5d1f88fd05dcafdd7a1f3b17bb722e77712b7618f98e86bdda560e0a1a"}, + {file = "orjson-3.10.9-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:74f5a7a7f282d326be71b722b0c350da7af6f5f15b9378da177e0e4a09bd91a3"}, + {file = "orjson-3.10.9-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:80e0c013e50cf7198319d8137931684eb9f32daa067e8276d9dbdd4010bb4add"}, + {file = "orjson-3.10.9-cp38-none-win32.whl", hash = "sha256:9d989152df8f60a76867354e0e08d896292ab9fb96a7ef89a5b3838de174522c"}, + {file = "orjson-3.10.9-cp38-none-win_amd64.whl", hash = "sha256:485358fe9892d6bfd88e5885b66bf88496e1842c8f35f61682ff9928b12a6cf0"}, + {file = "orjson-3.10.9-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ca54e6f320e33c8a6e471c424ee16576361d905c15d69e134c2906d3fcb31795"}, + {file = "orjson-3.10.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9a9eb03a29c9b30b6c8bb35e5fa20d96589a76e0042005be59b7c3af10a7e43"}, + {file = "orjson-3.10.9-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:731e8859fc99b398c286320726906404091141e9223dd5e9e6917f7e32e1cc68"}, + {file = "orjson-3.10.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75b061c11f5aab979a95927a76394b4a85e3e4d63d0a2a16b56a4f7c6503afab"}, + {file = "orjson-3.10.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b61b08f6397f004570fd6a840f4a58946b63b4c7029408cdedb45fe85c7d17f7"}, + {file = "orjson-3.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c4f5e0360b7f0aba91dafe12469108109a0e8973956d4a9865ca262a6881406"}, + {file = "orjson-3.10.9-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e403429e2947a059545e305d97e4b0eb90d3bb44b396d6f327d7ae2018391e13"}, + {file = "orjson-3.10.9-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0e492b93e122264c2dc78700859122631a4715bda88fabf57d9226954cfe7ec5"}, + {file = "orjson-3.10.9-cp39-none-win32.whl", hash = "sha256:bfba9605e85bfd19b83a21c2c25c2bed2000d5f097f3fa3ad5b5f8a7263a3148"}, + {file = "orjson-3.10.9-cp39-none-win_amd64.whl", hash = "sha256:77d277fa138d4bf145e8b24042004891c188c52ac8492724a183f42b0031cf0c"}, + {file = "orjson-3.10.9.tar.gz", hash = "sha256:c378074e0c46035dc66e57006993233ec66bf8487d501bab41649b4b7289ed4d"}, ] [[package]] @@ -988,4 +988,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "1280173331a0e498864db3e9f55fda22bd8254c44bf06487e34096d554341396" +content-hash = "c16a9ab276c6bf2483af108f69d559f48eeb2dd9480c2991813c774f3717f696" diff --git a/pyproject.toml b/pyproject.toml index 1ffcf71d..ebdc10c0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^75.2.0" pook = "^2.0.0" -orjson = "^3.10.7" +orjson = "^3.10.9" [build-system] requires = ["poetry-core>=1.0.0"] From 36250182f930a44db0cb7d5bd62f4e2adda88619 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 21:13:27 -0700 Subject: [PATCH 61/88] Bump pook from 2.0.0 to 2.0.1 (#765) Bumps [pook](https://github.com/h2non/pook) from 2.0.0 to 2.0.1. - [Release notes](https://github.com/h2non/pook/releases) - [Changelog](https://github.com/h2non/pook/blob/master/History.rst) - [Commits](https://github.com/h2non/pook/compare/v2.0.0...v2.0.1) --- updated-dependencies: - dependency-name: pook dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 14d1093b..6c9cf217 100644 --- a/poetry.lock +++ b/poetry.lock @@ -503,13 +503,13 @@ test = ["appdirs (==1.4.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock [[package]] name = "pook" -version = "2.0.0" +version = "2.0.1" description = "HTTP traffic mocking and expectations made easy" optional = false python-versions = ">=3.8" files = [ - {file = "pook-2.0.0-py3-none-any.whl", hash = "sha256:b3993cf00b8335f19b407fca39febd048c97749eb7c06eaddd9fbaff3b0a1ac3"}, - {file = "pook-2.0.0.tar.gz", hash = "sha256:b106ebc088417fa7b68d1f6ee21a9720fd171ea96d4b86ef308eaffac1e5c4f8"}, + {file = "pook-2.0.1-py3-none-any.whl", hash = "sha256:30d73c95e0520f45c1e3889f3bf486e990b6f04b4915aa9daf86cf0d8136b2e1"}, + {file = "pook-2.0.1.tar.gz", hash = "sha256:e04c0e698f256438b4dfbf3ab1b27559f0ec25e42176823167f321f4e8b9c9e4"}, ] [package.dependencies] @@ -988,4 +988,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "c16a9ab276c6bf2483af108f69d559f48eeb2dd9480c2991813c774f3717f696" +content-hash = "bc73d9f5843ac26c73d8a9f755037f1deac6b9d5d84e9d111492bea26841e747" diff --git a/pyproject.toml b/pyproject.toml index ebdc10c0..168dc906 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ sphinx-rtd-theme = "^3.0.1" sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^75.2.0" -pook = "^2.0.0" +pook = "^2.0.1" orjson = "^3.10.9" [build-system] From 53808f8a5b81841447867b28856ea0a75573b30b Mon Sep 17 00:00:00 2001 From: Hunter <6395201+HunterL@users.noreply.github.com> Date: Tue, 22 Oct 2024 10:26:17 -0400 Subject: [PATCH 62/88] add regular_trading_change and regular_trading_change_percent to the universal snapshot session response (#771) --- polygon/rest/models/snapshot.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/polygon/rest/models/snapshot.py b/polygon/rest/models/snapshot.py index ceb5f7f8..3d38abe2 100644 --- a/polygon/rest/models/snapshot.py +++ b/polygon/rest/models/snapshot.py @@ -308,6 +308,8 @@ class UniversalSnapshotSession: change_percent: Optional[float] = None early_trading_change: Optional[float] = None early_trading_change_percent: Optional[float] = None + regular_trading_change: Optional[float] = None + regular_trading_change_percent: Optional[float] = None late_trading_change: Optional[float] = None late_trading_change_percent: Optional[float] = None open: Optional[float] = None From 8034ba4d920df82bd838147e41404f6c45b5b47c Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Tue, 5 Nov 2024 09:47:36 -0800 Subject: [PATCH 63/88] Add Hunting Anomalies in the Stock Market scripts (#780) * Add Hunting Anomalies in the Stock Market scripts * Fix lint * Ignore type and fix typo * Fix type def from linter * Removed json dump --- examples/tools/hunting-anomalies/README.md | 49 +++ .../aggregates_day/README.md | 1 + .../hunting-anomalies/build-lookup-table.py | 91 ++++++ .../hunting-anomalies/gui-lookup-table.py | 302 ++++++++++++++++++ .../hunting-anomalies/query-lookup-table.py | 63 ++++ 5 files changed, 506 insertions(+) create mode 100644 examples/tools/hunting-anomalies/README.md create mode 100644 examples/tools/hunting-anomalies/aggregates_day/README.md create mode 100644 examples/tools/hunting-anomalies/build-lookup-table.py create mode 100644 examples/tools/hunting-anomalies/gui-lookup-table.py create mode 100644 examples/tools/hunting-anomalies/query-lookup-table.py diff --git a/examples/tools/hunting-anomalies/README.md b/examples/tools/hunting-anomalies/README.md new file mode 100644 index 00000000..4b36f1b5 --- /dev/null +++ b/examples/tools/hunting-anomalies/README.md @@ -0,0 +1,49 @@ +# Hunting Anomalies in the Stock Market + +This repository contains all the necessary scripts and data directories used in the [Hunting Anomalies in the Stock Market](https://polygon.io/blog/hunting-anomalies-in-stock-market/) tutorial, hosted on Polygon.io's blog. The tutorial demonstrates how to detect statistical anomalies in historical US stock market data through a comprehensive workflow that involves downloading data, building a lookup table, querying for anomalies, and visualizing them through a web interface. + +### Prerequisites + +- Python 3.8+ +- Access to Polygon.io's historical data via Flat Files +- An active Polygon.io API key, obtainable by signing up for a Stocks paid plan + +### Repository Contents + +- `README.md`: This file, outlining setup and execution instructions. +- `aggregates_day`: Directory where downloaded CSV data files are stored. +- `build-lookup-table.py`: Python script to build a lookup table from the historical data. +- `query-lookup-table.py`: Python script to query the lookup table for anomalies. +- `gui-lookup-table.py`: Python script for a browser-based interface to explore anomalies visually. + +### Running the Tutorial + +1. **Ensure Python 3.8+ is installed:** Check your Python version and ensure all required libraries (polygon-api-client, pandas, pickle, and argparse) are installed. + +2. **Set up your API key:** Make sure you have an active paid Polygon.io Stock subscription for accessing Flat Files. Set up your API key in your environment or directly in the scripts where required. + +3. **Download Historical Data:** Use the MinIO client to download historical stock market data. Adjust the commands and paths based on the data you are interested in. + ```bash + mc alias set s3polygon https://files.polygon.io YOUR_ACCESS_KEY YOUR_SECRET_KEY + mc cp --recursive s3polygon/flatfiles/us_stocks_sip/day_aggs_v1/2024/08/ ./aggregates_day/ + mc cp --recursive s3polygon/flatfiles/us_stocks_sip/day_aggs_v1/2024/09/ ./aggregates_day/ + mc cp --recursive s3polygon/flatfiles/us_stocks_sip/day_aggs_v1/2024/10/ ./aggregates_day/ + gunzip ./aggregates_day/*.gz + ``` + +4. **Build the Lookup Table:** This script processes the downloaded data and builds a lookup table, saving it as `lookup_table.pkl`. + ```bash + python build-lookup-table.py + ``` + +5. **Query Anomalies:** Replace `2024-10-18` with the date you want to analyze for anomalies. + ```bash + python query-lookup-table.py 2024-10-18 + ``` + +6. **Run the GUI:** Access the web interface at `http://localhost:8888` to explore the anomalies visually. + ```bash + python gui-lookup-table.py + ``` + +For a complete step-by-step guide on each phase of the anomaly detection process, including additional configurations and troubleshooting, refer to the detailed [tutorial on our blog](https://polygon.io/blog/hunting-anomalies-in-stock-market/). diff --git a/examples/tools/hunting-anomalies/aggregates_day/README.md b/examples/tools/hunting-anomalies/aggregates_day/README.md new file mode 100644 index 00000000..a0ade480 --- /dev/null +++ b/examples/tools/hunting-anomalies/aggregates_day/README.md @@ -0,0 +1 @@ +Download flat files into here. diff --git a/examples/tools/hunting-anomalies/build-lookup-table.py b/examples/tools/hunting-anomalies/build-lookup-table.py new file mode 100644 index 00000000..16abca2d --- /dev/null +++ b/examples/tools/hunting-anomalies/build-lookup-table.py @@ -0,0 +1,91 @@ +import os +import pandas as pd # type: ignore +from collections import defaultdict +import pickle +import json +from typing import DefaultDict, Dict, Any, BinaryIO + +# Directory containing the daily CSV files +data_dir = "./aggregates_day/" + +# Initialize a dictionary to hold trades data +trades_data = defaultdict(list) + +# List all CSV files in the directory +files = sorted([f for f in os.listdir(data_dir) if f.endswith(".csv")]) + +print("Starting to process files...") + +# Process each file (assuming files are named in order) +for file in files: + print(f"Processing {file}") + file_path = os.path.join(data_dir, file) + df = pd.read_csv(file_path) + # For each stock, store the date and relevant data + for _, row in df.iterrows(): + ticker = row["ticker"] + date = pd.to_datetime(row["window_start"], unit="ns").date() + trades = row["transactions"] + close_price = row["close"] # Ensure 'close' column exists in your CSV + trades_data[ticker].append( + {"date": date, "trades": trades, "close_price": close_price} + ) + +print("Finished processing files.") +print("Building lookup table...") + +# Now, build the lookup table with rolling averages and percentage price change +lookup_table: DefaultDict[str, Dict[str, Any]] = defaultdict( + dict +) # Nested dict: ticker -> date -> stats + +for ticker, records in trades_data.items(): + # Convert records to DataFrame + df_ticker = pd.DataFrame(records) + # Sort records by date + df_ticker.sort_values("date", inplace=True) + df_ticker.set_index("date", inplace=True) + + # Calculate the percentage change in close_price + df_ticker["price_diff"] = ( + df_ticker["close_price"].pct_change() * 100 + ) # Multiply by 100 for percentage + + # Shift trades to exclude the current day from rolling calculations + df_ticker["trades_shifted"] = df_ticker["trades"].shift(1) + # Calculate rolling average and standard deviation over the previous 5 days + df_ticker["avg_trades"] = df_ticker["trades_shifted"].rolling(window=5).mean() + df_ticker["std_trades"] = df_ticker["trades_shifted"].rolling(window=5).std() + # Store the data in the lookup table + for date, row in df_ticker.iterrows(): + # Convert date to string for JSON serialization + date_str = date.strftime("%Y-%m-%d") + # Ensure rolling stats are available + if pd.notnull(row["avg_trades"]) and pd.notnull(row["std_trades"]): + lookup_table[ticker][date_str] = { + "trades": row["trades"], + "close_price": row["close_price"], + "price_diff": row["price_diff"], + "avg_trades": row["avg_trades"], + "std_trades": row["std_trades"], + } + else: + # Store data without rolling stats if not enough data points + lookup_table[ticker][date_str] = { + "trades": row["trades"], + "close_price": row["close_price"], + "price_diff": row["price_diff"], + "avg_trades": None, + "std_trades": None, + } + +print("Lookup table built successfully.") + +# Convert defaultdict to regular dict for JSON serialization +lookup_table_dict = {k: v for k, v in lookup_table.items()} + +# Save the lookup table to a file for later use +with open("lookup_table.pkl", "wb") as f: # type: BinaryIO + pickle.dump(lookup_table_dict, f) + +print("Lookup table saved to 'lookup_table.pkl'.") diff --git a/examples/tools/hunting-anomalies/gui-lookup-table.py b/examples/tools/hunting-anomalies/gui-lookup-table.py new file mode 100644 index 00000000..df58746c --- /dev/null +++ b/examples/tools/hunting-anomalies/gui-lookup-table.py @@ -0,0 +1,302 @@ +import os +import pickle +import json +from datetime import datetime +from polygon import RESTClient +from polygon.rest.models import Agg +import http.server +import socketserver +import traceback +from urllib.parse import urlparse, parse_qs + +PORT = 8888 + +# Load the lookup_table +with open("lookup_table.pkl", "rb") as f: + lookup_table = pickle.load(f) + + +class handler(http.server.SimpleHTTPRequestHandler): + def do_GET(self): + # Parse the path and query parameters + parsed_path = urlparse(self.path) + path = parsed_path.path + query_params = parse_qs(parsed_path.query) + + if path == "/": + # Handle the root path + # Get the date parameter if provided + date_param = query_params.get("date", [None])[0] + + # Get all dates from the lookup table + all_dates = set() + for ticker_data in lookup_table.values(): + all_dates.update(ticker_data.keys()) + all_dates = sorted(all_dates) + + # If date is None, get the latest date from the lookup table + if date_param is None: + if all_dates: + latest_date = max(all_dates) + else: + self.send_response(200) + self.send_header("Content-type", "text/html") + self.end_headers() + html_content = ( + "

No data available.

" + ) + self.wfile.write(html_content.encode()) + return + else: + latest_date = date_param + + # Ensure latest_date is in all_dates + if latest_date not in all_dates: + # Handle the case where the provided date is invalid + self.send_response(400) + self.send_header("Content-type", "text/html") + self.end_headers() + error_html = f"

Error: No data available for date {latest_date}

" + self.wfile.write(error_html.encode()) + return + + # Now, get the anomalies for the latest_date + anomalies = [] + for ticker, date_data in lookup_table.items(): + if latest_date in date_data: + data = date_data[latest_date] + trades = data["trades"] + avg_trades = data["avg_trades"] + std_trades = data["std_trades"] + if ( + avg_trades is not None + and std_trades is not None + and std_trades > 0 + ): + z_score = (trades - avg_trades) / std_trades + threshold_multiplier = 3 # Adjust as needed + if z_score > threshold_multiplier: + anomalies.append( + { + "ticker": ticker, + "date": latest_date, + "trades": trades, + "avg_trades": avg_trades, + "std_trades": std_trades, + "z_score": z_score, + "close_price": data["close_price"], + "price_diff": data["price_diff"], + } + ) + # Sort anomalies by trades in descending order + anomalies.sort(key=lambda x: x["trades"], reverse=True) + # Generate the HTML to display the anomalies + self.send_response(200) + self.send_header("Content-type", "text/html") + self.end_headers() + # Build the HTML content + html_content = 'Anomalies for {}'.format( + latest_date + ) + html_content += '

Anomalies for {}

'.format( + latest_date + ) + # Add navigation links (prev and next dates) + current_index = all_dates.index(latest_date) + prev_date = all_dates[current_index - 1] if current_index > 0 else None + next_date = ( + all_dates[current_index + 1] + if current_index < len(all_dates) - 1 + else None + ) + html_content += "

" + if prev_date: + html_content += 'Previous Date '.format( + prev_date + ) + if next_date: + html_content += 'Next Date '.format(next_date) + html_content += "

" + # Display the anomalies in a table + html_content += ( + '' + ) + html_content += "" + html_content += "" + html_content += "" + html_content += "" + html_content += "" + html_content += "" + html_content += "" + html_content += "" + html_content += "" + html_content += "" + for anomaly in anomalies: + html_content += "" + html_content += "".format(anomaly["ticker"]) + html_content += "".format(anomaly["trades"]) + html_content += "".format(anomaly["avg_trades"]) + html_content += "".format(anomaly["std_trades"]) + html_content += "".format(anomaly["z_score"]) + html_content += "".format(anomaly["close_price"]) + html_content += "".format(anomaly["price_diff"]) + # Add a link to the chart + html_content += ( + ''.format( + anomaly["ticker"], latest_date + ) + ) + html_content += "" + html_content += '
TickerTradesAvg TradesStd DevZ-scoreClose PricePrice DiffChart
{}{}{:.2f}{:.2f}{:.2f}{:.2f}{:.2f}View Chart
' + html_content += "
" + self.wfile.write(html_content.encode()) + elif path == "/chart": + # Handle the chart page + # Get 'ticker' and 'date' from query parameters + ticker = query_params.get("ticker", [None])[0] + date = query_params.get("date", [None])[0] + if ticker is None or date is None: + # Return an error page + self.send_response(400) + self.send_header("Content-type", "text/html") + self.end_headers() + error_html = "

Error: Missing ticker or date parameter

" + self.wfile.write(error_html.encode()) + else: + # Fetch minute aggregates for the ticker and date + client = RESTClient( + trace=True + ) # POLYGON_API_KEY environment variable is used + try: + aggs = [] + date_from = date + date_to = date + for a in client.list_aggs( + ticker, + 1, + "minute", + date_from, + date_to, + limit=50000, + ): + aggs.append(a) + # Prepare data for the chart + data = [] + for agg in aggs: + if isinstance(agg, Agg) and isinstance(agg.timestamp, int): + new_record = [ + agg.timestamp, + agg.open, + agg.high, + agg.low, + agg.close, + ] + data.append(new_record) + # Generate the HTML for the chart page + chart_html = """ + + + + + + + + + + + + +
+ +
+ + + """ % ( + json.dumps(data), + ticker, + date, + ticker, + ) + self.send_response(200) + self.send_header("Content-type", "text/html") + self.send_header("Access-Control-Allow-Origin", "*") + self.end_headers() + self.wfile.write(chart_html.encode()) + except Exception as e: + # Handle exceptions + self.send_response(500) + self.send_header("Content-type", "text/html") + self.end_headers() + error_html = "

Error fetching data: {}

".format( + str(e) + ) + self.wfile.write(error_html.encode()) + else: + # Serve files from the current directory + super().do_GET() + + +def run_server(): + with socketserver.TCPServer(("", PORT), handler) as httpd: + print("serving at port", PORT) + try: + httpd.serve_forever() + except KeyboardInterrupt: + print("\nExiting gracefully...") + httpd.shutdown() + httpd.server_close() + + +if __name__ == "__main__": + run_server() diff --git a/examples/tools/hunting-anomalies/query-lookup-table.py b/examples/tools/hunting-anomalies/query-lookup-table.py new file mode 100644 index 00000000..38bb86cf --- /dev/null +++ b/examples/tools/hunting-anomalies/query-lookup-table.py @@ -0,0 +1,63 @@ +import pickle +import argparse + +# Parse command-line arguments +parser = argparse.ArgumentParser(description="Anomaly Detection Script") +parser.add_argument("date", type=str, help="Target date in YYYY-MM-DD format") +args = parser.parse_args() + +# Load the lookup_table +with open("lookup_table.pkl", "rb") as f: + lookup_table = pickle.load(f) + +# Threshold for considering an anomaly (e.g., 3 standard deviations) +threshold_multiplier = 3 + +# Date for which we want to find anomalies +target_date_str = args.date + +# List to store anomalies +anomalies = [] + +# Iterate over all tickers in the lookup table +for ticker, date_data in lookup_table.items(): + if target_date_str in date_data: + data = date_data[target_date_str] + trades = data["trades"] + avg_trades = data["avg_trades"] + std_trades = data["std_trades"] + if avg_trades is not None and std_trades is not None and std_trades > 0: + z_score = (trades - avg_trades) / std_trades + if z_score > threshold_multiplier: + anomalies.append( + { + "ticker": ticker, + "date": target_date_str, + "trades": trades, + "avg_trades": avg_trades, + "std_trades": std_trades, + "z_score": z_score, + "close_price": data["close_price"], + "price_diff": data["price_diff"], + } + ) + +# Sort anomalies by trades in descending order +anomalies.sort(key=lambda x: x["trades"], reverse=True) + +# Print the anomalies with aligned columns +print(f"\nAnomalies Found for {target_date_str}:\n") +print( + f"{'Ticker':<10}{'Trades':>10}{'Avg Trades':>15}{'Std Dev':>10}{'Z-score':>10}{'Close Price':>12}{'Price Diff':>12}" +) +print("-" * 91) +for anomaly in anomalies: + print( + f"{anomaly['ticker']:<10}" + f"{anomaly['trades']:>10.0f}" + f"{anomaly['avg_trades']:>15.2f}" + f"{anomaly['std_trades']:>10.2f}" + f"{anomaly['z_score']:>10.2f}" + f"{anomaly['close_price']:>12.2f}" + f"{anomaly['price_diff']:>12.2f}" + ) From 3ac9548b42fb00da708563a678763e68715680c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:54:53 +0000 Subject: [PATCH 64/88] Bump orjson from 3.10.9 to 3.10.11 (#779) --- poetry.lock | 119 +++++++++++++++++++++++++------------------------ pyproject.toml | 2 +- 2 files changed, 61 insertions(+), 60 deletions(-) diff --git a/poetry.lock b/poetry.lock index 6c9cf217..1ab68672 100644 --- a/poetry.lock +++ b/poetry.lock @@ -389,68 +389,69 @@ six = ">=1.8.0" [[package]] name = "orjson" -version = "3.10.9" +version = "3.10.11" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.9-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a377186a11b48c55969e34f0aa414c2826a234f212d6f2b312ba512e3cdb2c6f"}, - {file = "orjson-3.10.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bf37bf0ca538065c34efe1803378b2dadd7e05b06610a086c2857f15ee59e12"}, - {file = "orjson-3.10.9-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7d9d83a91168aa48309acba804e393b7d9216b66f15e38f339b9fbb00db8986d"}, - {file = "orjson-3.10.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0014038a17a1fe273da0a5489787677ef5a64566ab383ad6d929e44ed5683f4"}, - {file = "orjson-3.10.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6ae1b1733e4528e45675ed09a732b6ac37d716bce2facaf467f84ce774adecd"}, - {file = "orjson-3.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe91c2259c4a859356b6db1c6e649b40577492f66d483da8b8af6da0f87c00e3"}, - {file = "orjson-3.10.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a04f912c32463386ba117591c99a3d9e40b3b69bed9c5123d89dff06f0f5a4b0"}, - {file = "orjson-3.10.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae82ca347829ca47431767b079f96bb977f592189250ccdede676339a80c8982"}, - {file = "orjson-3.10.9-cp310-none-win32.whl", hash = "sha256:fd5083906825d7f5d23089425ce5424d783d6294020bcabb8518a3e1f97833e5"}, - {file = "orjson-3.10.9-cp310-none-win_amd64.whl", hash = "sha256:e9ff9521b5be0340c8e686bcfe2619777fd7583f71e7b494601cc91ad3919d2e"}, - {file = "orjson-3.10.9-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f3bd9df47385b8fabb3b2ee1e83f9960b8accc1905be971a1c257f16c32b491e"}, - {file = "orjson-3.10.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4948961b6bce1e2086b2cf0b56cc454cdab589d40c7f85be71fb5a5556c51d3"}, - {file = "orjson-3.10.9-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a9fc7a6cf2b229ddc323e136df13b3fb4466c50d84ed600cd0898223dd2fea3"}, - {file = "orjson-3.10.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2314846e1029a2d2b899140f350eaaf3a73281df43ba84ac44d94ca861b5b269"}, - {file = "orjson-3.10.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f52d993504827503411df2d60e60acf52885561458d6273f99ecd172f31c4352"}, - {file = "orjson-3.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e29bbf08d907756c145a3a3a1f7ce2f11f15e3edbd3342842589d6030981b76f"}, - {file = "orjson-3.10.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ae82992c00b480c3cc7dac6739324554be8c5d8e858a90044928506a3333ef4"}, - {file = "orjson-3.10.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6fdf8d32b6d94019dc15163542d345e9ce4c4661f56b318608aa3088a1a3a23b"}, - {file = "orjson-3.10.9-cp311-none-win32.whl", hash = "sha256:01f5fef452b4d7615f2e94153479370a4b59e0c964efb32dd902978f807a45cd"}, - {file = "orjson-3.10.9-cp311-none-win_amd64.whl", hash = "sha256:95361c4197c7ce9afdf56255de6f4e2474c39d16a277cce31d1b99a2520486d8"}, - {file = "orjson-3.10.9-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:43ad5560db54331c007dc38be5ba7706cb72974a29ae8227019d89305d750a6f"}, - {file = "orjson-3.10.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1471c3274b1a4a9b8f4b9ed6effaea9ad885796373797515c44b365b375c256d"}, - {file = "orjson-3.10.9-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:41d8cac575acd15918903d74cfaabb5dbe57b357b93341332f647d1013928dcc"}, - {file = "orjson-3.10.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2920c8754f1aedc98bd357ec172af18ce48f5f1017a92244c85fe41d16d3c6e0"}, - {file = "orjson-3.10.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7fa3ff6a0d9d15a0d0d2254cca16cd919156a18423654ce5574591392fe9914"}, - {file = "orjson-3.10.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1e91b90c0c26bd79593967c1adef421bcff88c9e723d49c93bb7ad8af80bc6b"}, - {file = "orjson-3.10.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f11949024f785ace1a516db32fa6255f6227226b2c988abf66f5aee61d43d8f7"}, - {file = "orjson-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:060e020d85d0ec145bc1b536b1fd9c10a0519c91991ead9724d6f759ebe26b9a"}, - {file = "orjson-3.10.9-cp312-none-win32.whl", hash = "sha256:71f73439999fe662843da3607cdf6e75b1551c330f487e5801d463d969091c63"}, - {file = "orjson-3.10.9-cp312-none-win_amd64.whl", hash = "sha256:12e2efe81356b8448f1cd130f8d75d3718de583112d71f2e2f8baa81bd835bb9"}, - {file = "orjson-3.10.9-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:0ab6e3ad10e964392f0e838751bcce2ef9c8fa8be7deddffff83088e5791566d"}, - {file = "orjson-3.10.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68ef65223baab00f469c8698f771ab3e6ccf6af2a987e77de5b566b4ec651150"}, - {file = "orjson-3.10.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6f130848205fea90a2cb9fa2b11cafff9a9f31f4efad225800bc8b9e4a702f24"}, - {file = "orjson-3.10.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2ea7a98f3295ed8adb6730a5788cc78dafea28300d19932a1d2143457f7db802"}, - {file = "orjson-3.10.9-cp313-none-win32.whl", hash = "sha256:bdce39f96149a74fddeb2674c54f1da5e57724d32952eb6df2ac719b66d453cc"}, - {file = "orjson-3.10.9-cp313-none-win_amd64.whl", hash = "sha256:d11383701d4b58e795039b662ada46987744293d57bfa2719e7379b8d67bc796"}, - {file = "orjson-3.10.9-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1c3a1e845916a3739ab4162bb48dee66e0e727a19faf397176a7db0d9826cc3c"}, - {file = "orjson-3.10.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:063ca59d93d93d1387f0c4bb766c6d4f5b0e423fe7c366d0bd4401a56d1669d1"}, - {file = "orjson-3.10.9-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:938b7fcd79cf06fe348fb24b6163fbaa2fdc9fbed8b1f06318f24467f1487e63"}, - {file = "orjson-3.10.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cc32a9e43c7693011ccde6f8eff8cba75ca0d2a55de11092faa4a716101e67f5"}, - {file = "orjson-3.10.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b3069b7e2f57f3eef2282029b9c2ba21f08a55f1018e483663a3356f046af4c"}, - {file = "orjson-3.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4289b5d1f88fd05dcafdd7a1f3b17bb722e77712b7618f98e86bdda560e0a1a"}, - {file = "orjson-3.10.9-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:74f5a7a7f282d326be71b722b0c350da7af6f5f15b9378da177e0e4a09bd91a3"}, - {file = "orjson-3.10.9-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:80e0c013e50cf7198319d8137931684eb9f32daa067e8276d9dbdd4010bb4add"}, - {file = "orjson-3.10.9-cp38-none-win32.whl", hash = "sha256:9d989152df8f60a76867354e0e08d896292ab9fb96a7ef89a5b3838de174522c"}, - {file = "orjson-3.10.9-cp38-none-win_amd64.whl", hash = "sha256:485358fe9892d6bfd88e5885b66bf88496e1842c8f35f61682ff9928b12a6cf0"}, - {file = "orjson-3.10.9-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ca54e6f320e33c8a6e471c424ee16576361d905c15d69e134c2906d3fcb31795"}, - {file = "orjson-3.10.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9a9eb03a29c9b30b6c8bb35e5fa20d96589a76e0042005be59b7c3af10a7e43"}, - {file = "orjson-3.10.9-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:731e8859fc99b398c286320726906404091141e9223dd5e9e6917f7e32e1cc68"}, - {file = "orjson-3.10.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75b061c11f5aab979a95927a76394b4a85e3e4d63d0a2a16b56a4f7c6503afab"}, - {file = "orjson-3.10.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b61b08f6397f004570fd6a840f4a58946b63b4c7029408cdedb45fe85c7d17f7"}, - {file = "orjson-3.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c4f5e0360b7f0aba91dafe12469108109a0e8973956d4a9865ca262a6881406"}, - {file = "orjson-3.10.9-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e403429e2947a059545e305d97e4b0eb90d3bb44b396d6f327d7ae2018391e13"}, - {file = "orjson-3.10.9-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0e492b93e122264c2dc78700859122631a4715bda88fabf57d9226954cfe7ec5"}, - {file = "orjson-3.10.9-cp39-none-win32.whl", hash = "sha256:bfba9605e85bfd19b83a21c2c25c2bed2000d5f097f3fa3ad5b5f8a7263a3148"}, - {file = "orjson-3.10.9-cp39-none-win_amd64.whl", hash = "sha256:77d277fa138d4bf145e8b24042004891c188c52ac8492724a183f42b0031cf0c"}, - {file = "orjson-3.10.9.tar.gz", hash = "sha256:c378074e0c46035dc66e57006993233ec66bf8487d501bab41649b4b7289ed4d"}, + {file = "orjson-3.10.11-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6dade64687f2bd7c090281652fe18f1151292d567a9302b34c2dbb92a3872f1f"}, + {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82f07c550a6ccd2b9290849b22316a609023ed851a87ea888c0456485a7d196a"}, + {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd9a187742d3ead9df2e49240234d728c67c356516cf4db018833a86f20ec18c"}, + {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77b0fed6f209d76c1c39f032a70df2d7acf24b1812ca3e6078fd04e8972685a3"}, + {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63fc9d5fe1d4e8868f6aae547a7b8ba0a2e592929245fff61d633f4caccdcdd6"}, + {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65cd3e3bb4fbb4eddc3c1e8dce10dc0b73e808fcb875f9fab40c81903dd9323e"}, + {file = "orjson-3.10.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6f67c570602300c4befbda12d153113b8974a3340fdcf3d6de095ede86c06d92"}, + {file = "orjson-3.10.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1f39728c7f7d766f1f5a769ce4d54b5aaa4c3f92d5b84817053cc9995b977acc"}, + {file = "orjson-3.10.11-cp310-none-win32.whl", hash = "sha256:1789d9db7968d805f3d94aae2c25d04014aae3a2fa65b1443117cd462c6da647"}, + {file = "orjson-3.10.11-cp310-none-win_amd64.whl", hash = "sha256:5576b1e5a53a5ba8f8df81872bb0878a112b3ebb1d392155f00f54dd86c83ff6"}, + {file = "orjson-3.10.11-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1444f9cb7c14055d595de1036f74ecd6ce15f04a715e73f33bb6326c9cef01b6"}, + {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdec57fe3b4bdebcc08a946db3365630332dbe575125ff3d80a3272ebd0ddafe"}, + {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4eed32f33a0ea6ef36ccc1d37f8d17f28a1d6e8eefae5928f76aff8f1df85e67"}, + {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80df27dd8697242b904f4ea54820e2d98d3f51f91e97e358fc13359721233e4b"}, + {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:705f03cee0cb797256d54de6695ef219e5bc8c8120b6654dd460848d57a9af3d"}, + {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03246774131701de8e7059b2e382597da43144a9a7400f178b2a32feafc54bd5"}, + {file = "orjson-3.10.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8b5759063a6c940a69c728ea70d7c33583991c6982915a839c8da5f957e0103a"}, + {file = "orjson-3.10.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:677f23e32491520eebb19c99bb34675daf5410c449c13416f7f0d93e2cf5f981"}, + {file = "orjson-3.10.11-cp311-none-win32.whl", hash = "sha256:a11225d7b30468dcb099498296ffac36b4673a8398ca30fdaec1e6c20df6aa55"}, + {file = "orjson-3.10.11-cp311-none-win_amd64.whl", hash = "sha256:df8c677df2f9f385fcc85ab859704045fa88d4668bc9991a527c86e710392bec"}, + {file = "orjson-3.10.11-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:360a4e2c0943da7c21505e47cf6bd725588962ff1d739b99b14e2f7f3545ba51"}, + {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:496e2cb45de21c369079ef2d662670a4892c81573bcc143c4205cae98282ba97"}, + {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7dfa8db55c9792d53c5952900c6a919cfa377b4f4534c7a786484a6a4a350c19"}, + {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:51f3382415747e0dbda9dade6f1e1a01a9d37f630d8c9049a8ed0e385b7a90c0"}, + {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f35a1b9f50a219f470e0e497ca30b285c9f34948d3c8160d5ad3a755d9299433"}, + {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2f3b7c5803138e67028dde33450e054c87e0703afbe730c105f1fcd873496d5"}, + {file = "orjson-3.10.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f91d9eb554310472bd09f5347950b24442600594c2edc1421403d7610a0998fd"}, + {file = "orjson-3.10.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dfbb2d460a855c9744bbc8e36f9c3a997c4b27d842f3d5559ed54326e6911f9b"}, + {file = "orjson-3.10.11-cp312-none-win32.whl", hash = "sha256:d4a62c49c506d4d73f59514986cadebb7e8d186ad510c518f439176cf8d5359d"}, + {file = "orjson-3.10.11-cp312-none-win_amd64.whl", hash = "sha256:f1eec3421a558ff7a9b010a6c7effcfa0ade65327a71bb9b02a1c3b77a247284"}, + {file = "orjson-3.10.11-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c46294faa4e4d0eb73ab68f1a794d2cbf7bab33b1dda2ac2959ffb7c61591899"}, + {file = "orjson-3.10.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52e5834d7d6e58a36846e059d00559cb9ed20410664f3ad156cd2cc239a11230"}, + {file = "orjson-3.10.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2fc947e5350fdce548bfc94f434e8760d5cafa97fb9c495d2fef6757aa02ec0"}, + {file = "orjson-3.10.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0efabbf839388a1dab5b72b5d3baedbd6039ac83f3b55736eb9934ea5494d258"}, + {file = "orjson-3.10.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a3f29634260708c200c4fe148e42b4aae97d7b9fee417fbdd74f8cfc265f15b0"}, + {file = "orjson-3.10.11-cp313-none-win32.whl", hash = "sha256:1a1222ffcee8a09476bbdd5d4f6f33d06d0d6642df2a3d78b7a195ca880d669b"}, + {file = "orjson-3.10.11-cp313-none-win_amd64.whl", hash = "sha256:bc274ac261cc69260913b2d1610760e55d3c0801bb3457ba7b9004420b6b4270"}, + {file = "orjson-3.10.11-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:19b3763e8bbf8ad797df6b6b5e0fc7c843ec2e2fc0621398534e0c6400098f87"}, + {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1be83a13312e5e58d633580c5eb8d0495ae61f180da2722f20562974188af205"}, + {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:afacfd1ab81f46dedd7f6001b6d4e8de23396e4884cd3c3436bd05defb1a6446"}, + {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cb4d0bea56bba596723d73f074c420aec3b2e5d7d30698bc56e6048066bd560c"}, + {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96ed1de70fcb15d5fed529a656df29f768187628727ee2788344e8a51e1c1350"}, + {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bfb30c891b530f3f80e801e3ad82ef150b964e5c38e1fb8482441c69c35c61c"}, + {file = "orjson-3.10.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d496c74fc2b61341e3cefda7eec21b7854c5f672ee350bc55d9a4997a8a95204"}, + {file = "orjson-3.10.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:655a493bac606655db9a47fe94d3d84fc7f3ad766d894197c94ccf0c5408e7d3"}, + {file = "orjson-3.10.11-cp38-none-win32.whl", hash = "sha256:b9546b278c9fb5d45380f4809e11b4dd9844ca7aaf1134024503e134ed226161"}, + {file = "orjson-3.10.11-cp38-none-win_amd64.whl", hash = "sha256:b592597fe551d518f42c5a2eb07422eb475aa8cfdc8c51e6da7054b836b26782"}, + {file = "orjson-3.10.11-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c95f2ecafe709b4e5c733b5e2768ac569bed308623c85806c395d9cca00e08af"}, + {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80c00d4acded0c51c98754fe8218cb49cb854f0f7eb39ea4641b7f71732d2cb7"}, + {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:461311b693d3d0a060439aa669c74f3603264d4e7a08faa68c47ae5a863f352d"}, + {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52ca832f17d86a78cbab86cdc25f8c13756ebe182b6fc1a97d534051c18a08de"}, + {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c57ea78a753812f528178aa2f1c57da633754c91d2124cb28991dab4c79a54"}, + {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7fcfc6f7ca046383fb954ba528587e0f9336828b568282b27579c49f8e16aad"}, + {file = "orjson-3.10.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:86b9dd983857970c29e4c71bb3e95ff085c07d3e83e7c46ebe959bac07ebd80b"}, + {file = "orjson-3.10.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4d83f87582d223e54efb2242a79547611ba4ebae3af8bae1e80fa9a0af83bb7f"}, + {file = "orjson-3.10.11-cp39-none-win32.whl", hash = "sha256:9fd0ad1c129bc9beb1154c2655f177620b5beaf9a11e0d10bac63ef3fce96950"}, + {file = "orjson-3.10.11-cp39-none-win_amd64.whl", hash = "sha256:10f416b2a017c8bd17f325fb9dee1fb5cdd7a54e814284896b7c3f2763faa017"}, + {file = "orjson-3.10.11.tar.gz", hash = "sha256:e35b6d730de6384d5b2dab5fd23f0d76fae8bbc8c353c2f78210aa5fa4beb3ef"}, ] [[package]] @@ -988,4 +989,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "bc73d9f5843ac26c73d8a9f755037f1deac6b9d5d84e9d111492bea26841e747" +content-hash = "da77bece324a6ae9696517f2df926377a0d1faac253aca6754bf3d35cbc4a7c2" diff --git a/pyproject.toml b/pyproject.toml index 168dc906..01a2dc4f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^75.2.0" pook = "^2.0.1" -orjson = "^3.10.9" +orjson = "^3.10.11" [build-system] requires = ["poetry-core>=1.0.0"] From b389b9eba65fb56a924f1ff3ef7b80de21a694fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 04:46:58 -0800 Subject: [PATCH 65/88] Bump types-setuptools from 75.2.0.20241019 to 75.3.0.20241107 (#783) Bumps [types-setuptools](https://github.com/python/typeshed) from 75.2.0.20241019 to 75.3.0.20241107. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 1ab68672..d409ab5c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -817,13 +817,13 @@ files = [ [[package]] name = "types-setuptools" -version = "75.2.0.20241019" +version = "75.3.0.20241107" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-75.2.0.20241019.tar.gz", hash = "sha256:86ea31b5f6df2c6b8f2dc8ae3f72b213607f62549b6fa2ed5866e5299f968694"}, - {file = "types_setuptools-75.2.0.20241019-py3-none-any.whl", hash = "sha256:2e48ff3acd4919471e80d5e3f049cce5c177e108d5d36d2d4cee3fa4d4104258"}, + {file = "types-setuptools-75.3.0.20241107.tar.gz", hash = "sha256:f66710e1cd4a936e5fcc12d4e49be1a67c34372cf753e87ebe704426451b4012"}, + {file = "types_setuptools-75.3.0.20241107-py3-none-any.whl", hash = "sha256:bc6de6e2bcb6d610556304d0a69fe4ca208ac4896162647314ecfd9fd73d8550"}, ] [[package]] @@ -989,4 +989,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "da77bece324a6ae9696517f2df926377a0d1faac253aca6754bf3d35cbc4a7c2" +content-hash = "6cbbf3e12525e3d5faa1bb19be793935af7dc75935ec97a6ba2941417e93b207" diff --git a/pyproject.toml b/pyproject.toml index 01a2dc4f..633c26a4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^3.0.1" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^75.2.0" +types-setuptools = "^75.3.0" pook = "^2.0.1" orjson = "^3.10.11" From dc7e9e27b43b702de2965230f7530af5cda1c036 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Nov 2024 04:50:20 -0800 Subject: [PATCH 66/88] Bump mypy from 1.12.1 to 1.13.0 (#776) Bumps [mypy](https://github.com/python/mypy) from 1.12.1 to 1.13.0. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.12.1...v1.13.0) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 69 +++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 36 insertions(+), 35 deletions(-) diff --git a/poetry.lock b/poetry.lock index d409ab5c..b25eefae 100644 --- a/poetry.lock +++ b/poetry.lock @@ -312,43 +312,43 @@ files = [ [[package]] name = "mypy" -version = "1.12.1" +version = "1.13.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3d7d4371829184e22fda4015278fbfdef0327a4b955a483012bd2d423a788801"}, - {file = "mypy-1.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f59f1dfbf497d473201356966e353ef09d4daec48caeacc0254db8ef633a28a5"}, - {file = "mypy-1.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b947097fae68004b8328c55161ac9db7d3566abfef72d9d41b47a021c2fba6b1"}, - {file = "mypy-1.12.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:96af62050971c5241afb4701c15189ea9507db89ad07794a4ee7b4e092dc0627"}, - {file = "mypy-1.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:d90da248f4c2dba6c44ddcfea94bb361e491962f05f41990ff24dbd09969ce20"}, - {file = "mypy-1.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1230048fec1380faf240be6385e709c8570604d2d27ec6ca7e573e3bc09c3735"}, - {file = "mypy-1.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:02dcfe270c6ea13338210908f8cadc8d31af0f04cee8ca996438fe6a97b4ec66"}, - {file = "mypy-1.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a5a437c9102a6a252d9e3a63edc191a3aed5f2fcb786d614722ee3f4472e33f6"}, - {file = "mypy-1.12.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:186e0c8346efc027ee1f9acf5ca734425fc4f7dc2b60144f0fbe27cc19dc7931"}, - {file = "mypy-1.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:673ba1140a478b50e6d265c03391702fa11a5c5aff3f54d69a62a48da32cb811"}, - {file = "mypy-1.12.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9fb83a7be97c498176fb7486cafbb81decccaef1ac339d837c377b0ce3743a7f"}, - {file = "mypy-1.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:389e307e333879c571029d5b93932cf838b811d3f5395ed1ad05086b52148fb0"}, - {file = "mypy-1.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:94b2048a95a21f7a9ebc9fbd075a4fcd310410d078aa0228dbbad7f71335e042"}, - {file = "mypy-1.12.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ee5932370ccf7ebf83f79d1c157a5929d7ea36313027b0d70a488493dc1b179"}, - {file = "mypy-1.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:19bf51f87a295e7ab2894f1d8167622b063492d754e69c3c2fed6563268cb42a"}, - {file = "mypy-1.12.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d34167d43613ffb1d6c6cdc0cc043bb106cac0aa5d6a4171f77ab92a3c758bcc"}, - {file = "mypy-1.12.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:427878aa54f2e2c5d8db31fa9010c599ed9f994b3b49e64ae9cd9990c40bd635"}, - {file = "mypy-1.12.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5fcde63ea2c9f69d6be859a1e6dd35955e87fa81de95bc240143cf00de1f7f81"}, - {file = "mypy-1.12.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d54d840f6c052929f4a3d2aab2066af0f45a020b085fe0e40d4583db52aab4e4"}, - {file = "mypy-1.12.1-cp313-cp313-win_amd64.whl", hash = "sha256:20db6eb1ca3d1de8ece00033b12f793f1ea9da767334b7e8c626a4872090cf02"}, - {file = "mypy-1.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b16fe09f9c741d85a2e3b14a5257a27a4f4886c171d562bc5a5e90d8591906b8"}, - {file = "mypy-1.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0dcc1e843d58f444fce19da4cce5bd35c282d4bde232acdeca8279523087088a"}, - {file = "mypy-1.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e10ba7de5c616e44ad21005fa13450cd0de7caaa303a626147d45307492e4f2d"}, - {file = "mypy-1.12.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0e6fe449223fa59fbee351db32283838a8fee8059e0028e9e6494a03802b4004"}, - {file = "mypy-1.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:dc6e2a2195a290a7fd5bac3e60b586d77fc88e986eba7feced8b778c373f9afe"}, - {file = "mypy-1.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:de5b2a8988b4e1269a98beaf0e7cc71b510d050dce80c343b53b4955fff45f19"}, - {file = "mypy-1.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:843826966f1d65925e8b50d2b483065c51fc16dc5d72647e0236aae51dc8d77e"}, - {file = "mypy-1.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9fe20f89da41a95e14c34b1ddb09c80262edcc295ad891f22cc4b60013e8f78d"}, - {file = "mypy-1.12.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8135ffec02121a75f75dc97c81af7c14aa4ae0dda277132cfcd6abcd21551bfd"}, - {file = "mypy-1.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:a7b76fa83260824300cc4834a3ab93180db19876bce59af921467fd03e692810"}, - {file = "mypy-1.12.1-py3-none-any.whl", hash = "sha256:ce561a09e3bb9863ab77edf29ae3a50e65685ad74bba1431278185b7e5d5486e"}, - {file = "mypy-1.12.1.tar.gz", hash = "sha256:f5b3936f7a6d0e8280c9bdef94c7ce4847f5cdfc258fbb2c29a8c1711e8bb96d"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, + {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, + {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, + {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, + {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, + {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, + {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, + {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, + {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, + {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, + {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, + {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, + {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, + {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, + {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, + {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, + {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, + {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, + {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, + {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, + {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, ] [package.dependencies] @@ -358,6 +358,7 @@ typing-extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] install-types = ["pip"] mypyc = ["setuptools (>=50)"] reports = ["lxml"] @@ -989,4 +990,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "6cbbf3e12525e3d5faa1bb19be793935af7dc75935ec97a6ba2941417e93b207" +content-hash = "30f3e19d533a319f875b07103455ee6657c5ee92260666909cd47aa503ad29bf" diff --git a/pyproject.toml b/pyproject.toml index 633c26a4..20db1464 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ certifi = ">=2022.5.18,<2025.0.0" [tool.poetry.dev-dependencies] black = "^24.8.0" -mypy = "^1.12" +mypy = "^1.13" types-urllib3 = "^1.26.25" Sphinx = "^7.1.2" sphinx-rtd-theme = "^3.0.1" From b090f5ed3869057f6e73a725b1795bd738cc618f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 10:36:50 -0800 Subject: [PATCH 67/88] Bump types-setuptools from 75.3.0.20241107 to 75.5.0.20241116 (#786) Bumps [types-setuptools](https://github.com/python/typeshed) from 75.3.0.20241107 to 75.5.0.20241116. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index b25eefae..3749fc71 100644 --- a/poetry.lock +++ b/poetry.lock @@ -818,13 +818,13 @@ files = [ [[package]] name = "types-setuptools" -version = "75.3.0.20241107" +version = "75.5.0.20241116" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-75.3.0.20241107.tar.gz", hash = "sha256:f66710e1cd4a936e5fcc12d4e49be1a67c34372cf753e87ebe704426451b4012"}, - {file = "types_setuptools-75.3.0.20241107-py3-none-any.whl", hash = "sha256:bc6de6e2bcb6d610556304d0a69fe4ca208ac4896162647314ecfd9fd73d8550"}, + {file = "types-setuptools-75.5.0.20241116.tar.gz", hash = "sha256:b6939ffdbc50ffdc0bcfbf14f7a6de1ddc5510906c1ca2bd62c23646e5798b1a"}, + {file = "types_setuptools-75.5.0.20241116-py3-none-any.whl", hash = "sha256:1144b2ab8fa986061f963391fdbde16df20582e3cc39c94340e71aa61cc7203f"}, ] [[package]] @@ -990,4 +990,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "30f3e19d533a319f875b07103455ee6657c5ee92260666909cd47aa503ad29bf" +content-hash = "92cf31e5fe27f276b9c319d1742d5865ee52b5a8589230a994907ad74e426fde" diff --git a/pyproject.toml b/pyproject.toml index 20db1464..0b1d4f7f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^3.0.1" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^75.3.0" +types-setuptools = "^75.5.0" pook = "^2.0.1" orjson = "^3.10.11" From 83dfc92f11039a2956fe353b32d2385d3b83fecc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 11:36:00 -0800 Subject: [PATCH 68/88] Bump sphinx-rtd-theme from 3.0.1 to 3.0.2 (#787) Bumps [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) from 3.0.1 to 3.0.2. - [Changelog](https://github.com/readthedocs/sphinx_rtd_theme/blob/master/docs/changelog.rst) - [Commits](https://github.com/readthedocs/sphinx_rtd_theme/compare/3.0.1...3.0.2) --- updated-dependencies: - dependency-name: sphinx-rtd-theme dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3749fc71..150e23c4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -674,13 +674,13 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.4.2)", "diff-cover (>=8.0.3)", [[package]] name = "sphinx-rtd-theme" -version = "3.0.1" +version = "3.0.2" description = "Read the Docs theme for Sphinx" optional = false python-versions = ">=3.8" files = [ - {file = "sphinx_rtd_theme-3.0.1-py2.py3-none-any.whl", hash = "sha256:921c0ece75e90633ee876bd7b148cfaad136b481907ad154ac3669b6fc957916"}, - {file = "sphinx_rtd_theme-3.0.1.tar.gz", hash = "sha256:a4c5745d1b06dfcb80b7704fe532eb765b44065a8fad9851e4258c8804140703"}, + {file = "sphinx_rtd_theme-3.0.2-py2.py3-none-any.whl", hash = "sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13"}, + {file = "sphinx_rtd_theme-3.0.2.tar.gz", hash = "sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85"}, ] [package.dependencies] @@ -990,4 +990,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "92cf31e5fe27f276b9c319d1742d5865ee52b5a8589230a994907ad74e426fde" +content-hash = "7e985cdc0c18c1888f9b6ef92fbad423b529ce066e96f360f0bf01dfe6ed312c" diff --git a/pyproject.toml b/pyproject.toml index 0b1d4f7f..dc25d905 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,7 +34,7 @@ black = "^24.8.0" mypy = "^1.13" types-urllib3 = "^1.26.25" Sphinx = "^7.1.2" -sphinx-rtd-theme = "^3.0.1" +sphinx-rtd-theme = "^3.0.2" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" From 3756b5380d04043deb8a2eaea8b8f8d104650995 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 09:29:20 -0800 Subject: [PATCH 69/88] Bump orjson from 3.10.11 to 3.10.12 (#794) Bumps [orjson](https://github.com/ijl/orjson) from 3.10.11 to 3.10.12. - [Release notes](https://github.com/ijl/orjson/releases) - [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md) - [Commits](https://github.com/ijl/orjson/compare/3.10.11...3.10.12) --- updated-dependencies: - dependency-name: orjson dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 137 +++++++++++++++++++++++++++---------------------- pyproject.toml | 2 +- 2 files changed, 78 insertions(+), 61 deletions(-) diff --git a/poetry.lock b/poetry.lock index 150e23c4..c86acd29 100644 --- a/poetry.lock +++ b/poetry.lock @@ -390,69 +390,86 @@ six = ">=1.8.0" [[package]] name = "orjson" -version = "3.10.11" +version = "3.10.12" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.11-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6dade64687f2bd7c090281652fe18f1151292d567a9302b34c2dbb92a3872f1f"}, - {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82f07c550a6ccd2b9290849b22316a609023ed851a87ea888c0456485a7d196a"}, - {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd9a187742d3ead9df2e49240234d728c67c356516cf4db018833a86f20ec18c"}, - {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77b0fed6f209d76c1c39f032a70df2d7acf24b1812ca3e6078fd04e8972685a3"}, - {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63fc9d5fe1d4e8868f6aae547a7b8ba0a2e592929245fff61d633f4caccdcdd6"}, - {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65cd3e3bb4fbb4eddc3c1e8dce10dc0b73e808fcb875f9fab40c81903dd9323e"}, - {file = "orjson-3.10.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6f67c570602300c4befbda12d153113b8974a3340fdcf3d6de095ede86c06d92"}, - {file = "orjson-3.10.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1f39728c7f7d766f1f5a769ce4d54b5aaa4c3f92d5b84817053cc9995b977acc"}, - {file = "orjson-3.10.11-cp310-none-win32.whl", hash = "sha256:1789d9db7968d805f3d94aae2c25d04014aae3a2fa65b1443117cd462c6da647"}, - {file = "orjson-3.10.11-cp310-none-win_amd64.whl", hash = "sha256:5576b1e5a53a5ba8f8df81872bb0878a112b3ebb1d392155f00f54dd86c83ff6"}, - {file = "orjson-3.10.11-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1444f9cb7c14055d595de1036f74ecd6ce15f04a715e73f33bb6326c9cef01b6"}, - {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdec57fe3b4bdebcc08a946db3365630332dbe575125ff3d80a3272ebd0ddafe"}, - {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4eed32f33a0ea6ef36ccc1d37f8d17f28a1d6e8eefae5928f76aff8f1df85e67"}, - {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80df27dd8697242b904f4ea54820e2d98d3f51f91e97e358fc13359721233e4b"}, - {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:705f03cee0cb797256d54de6695ef219e5bc8c8120b6654dd460848d57a9af3d"}, - {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03246774131701de8e7059b2e382597da43144a9a7400f178b2a32feafc54bd5"}, - {file = "orjson-3.10.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8b5759063a6c940a69c728ea70d7c33583991c6982915a839c8da5f957e0103a"}, - {file = "orjson-3.10.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:677f23e32491520eebb19c99bb34675daf5410c449c13416f7f0d93e2cf5f981"}, - {file = "orjson-3.10.11-cp311-none-win32.whl", hash = "sha256:a11225d7b30468dcb099498296ffac36b4673a8398ca30fdaec1e6c20df6aa55"}, - {file = "orjson-3.10.11-cp311-none-win_amd64.whl", hash = "sha256:df8c677df2f9f385fcc85ab859704045fa88d4668bc9991a527c86e710392bec"}, - {file = "orjson-3.10.11-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:360a4e2c0943da7c21505e47cf6bd725588962ff1d739b99b14e2f7f3545ba51"}, - {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:496e2cb45de21c369079ef2d662670a4892c81573bcc143c4205cae98282ba97"}, - {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7dfa8db55c9792d53c5952900c6a919cfa377b4f4534c7a786484a6a4a350c19"}, - {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:51f3382415747e0dbda9dade6f1e1a01a9d37f630d8c9049a8ed0e385b7a90c0"}, - {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f35a1b9f50a219f470e0e497ca30b285c9f34948d3c8160d5ad3a755d9299433"}, - {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2f3b7c5803138e67028dde33450e054c87e0703afbe730c105f1fcd873496d5"}, - {file = "orjson-3.10.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f91d9eb554310472bd09f5347950b24442600594c2edc1421403d7610a0998fd"}, - {file = "orjson-3.10.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dfbb2d460a855c9744bbc8e36f9c3a997c4b27d842f3d5559ed54326e6911f9b"}, - {file = "orjson-3.10.11-cp312-none-win32.whl", hash = "sha256:d4a62c49c506d4d73f59514986cadebb7e8d186ad510c518f439176cf8d5359d"}, - {file = "orjson-3.10.11-cp312-none-win_amd64.whl", hash = "sha256:f1eec3421a558ff7a9b010a6c7effcfa0ade65327a71bb9b02a1c3b77a247284"}, - {file = "orjson-3.10.11-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c46294faa4e4d0eb73ab68f1a794d2cbf7bab33b1dda2ac2959ffb7c61591899"}, - {file = "orjson-3.10.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52e5834d7d6e58a36846e059d00559cb9ed20410664f3ad156cd2cc239a11230"}, - {file = "orjson-3.10.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2fc947e5350fdce548bfc94f434e8760d5cafa97fb9c495d2fef6757aa02ec0"}, - {file = "orjson-3.10.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0efabbf839388a1dab5b72b5d3baedbd6039ac83f3b55736eb9934ea5494d258"}, - {file = "orjson-3.10.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a3f29634260708c200c4fe148e42b4aae97d7b9fee417fbdd74f8cfc265f15b0"}, - {file = "orjson-3.10.11-cp313-none-win32.whl", hash = "sha256:1a1222ffcee8a09476bbdd5d4f6f33d06d0d6642df2a3d78b7a195ca880d669b"}, - {file = "orjson-3.10.11-cp313-none-win_amd64.whl", hash = "sha256:bc274ac261cc69260913b2d1610760e55d3c0801bb3457ba7b9004420b6b4270"}, - {file = "orjson-3.10.11-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:19b3763e8bbf8ad797df6b6b5e0fc7c843ec2e2fc0621398534e0c6400098f87"}, - {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1be83a13312e5e58d633580c5eb8d0495ae61f180da2722f20562974188af205"}, - {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:afacfd1ab81f46dedd7f6001b6d4e8de23396e4884cd3c3436bd05defb1a6446"}, - {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cb4d0bea56bba596723d73f074c420aec3b2e5d7d30698bc56e6048066bd560c"}, - {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96ed1de70fcb15d5fed529a656df29f768187628727ee2788344e8a51e1c1350"}, - {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bfb30c891b530f3f80e801e3ad82ef150b964e5c38e1fb8482441c69c35c61c"}, - {file = "orjson-3.10.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d496c74fc2b61341e3cefda7eec21b7854c5f672ee350bc55d9a4997a8a95204"}, - {file = "orjson-3.10.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:655a493bac606655db9a47fe94d3d84fc7f3ad766d894197c94ccf0c5408e7d3"}, - {file = "orjson-3.10.11-cp38-none-win32.whl", hash = "sha256:b9546b278c9fb5d45380f4809e11b4dd9844ca7aaf1134024503e134ed226161"}, - {file = "orjson-3.10.11-cp38-none-win_amd64.whl", hash = "sha256:b592597fe551d518f42c5a2eb07422eb475aa8cfdc8c51e6da7054b836b26782"}, - {file = "orjson-3.10.11-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c95f2ecafe709b4e5c733b5e2768ac569bed308623c85806c395d9cca00e08af"}, - {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80c00d4acded0c51c98754fe8218cb49cb854f0f7eb39ea4641b7f71732d2cb7"}, - {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:461311b693d3d0a060439aa669c74f3603264d4e7a08faa68c47ae5a863f352d"}, - {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52ca832f17d86a78cbab86cdc25f8c13756ebe182b6fc1a97d534051c18a08de"}, - {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c57ea78a753812f528178aa2f1c57da633754c91d2124cb28991dab4c79a54"}, - {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7fcfc6f7ca046383fb954ba528587e0f9336828b568282b27579c49f8e16aad"}, - {file = "orjson-3.10.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:86b9dd983857970c29e4c71bb3e95ff085c07d3e83e7c46ebe959bac07ebd80b"}, - {file = "orjson-3.10.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4d83f87582d223e54efb2242a79547611ba4ebae3af8bae1e80fa9a0af83bb7f"}, - {file = "orjson-3.10.11-cp39-none-win32.whl", hash = "sha256:9fd0ad1c129bc9beb1154c2655f177620b5beaf9a11e0d10bac63ef3fce96950"}, - {file = "orjson-3.10.11-cp39-none-win_amd64.whl", hash = "sha256:10f416b2a017c8bd17f325fb9dee1fb5cdd7a54e814284896b7c3f2763faa017"}, - {file = "orjson-3.10.11.tar.gz", hash = "sha256:e35b6d730de6384d5b2dab5fd23f0d76fae8bbc8c353c2f78210aa5fa4beb3ef"}, + {file = "orjson-3.10.12-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ece01a7ec71d9940cc654c482907a6b65df27251255097629d0dea781f255c6d"}, + {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c34ec9aebc04f11f4b978dd6caf697a2df2dd9b47d35aa4cc606cabcb9df69d7"}, + {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd6ec8658da3480939c79b9e9e27e0db31dffcd4ba69c334e98c9976ac29140e"}, + {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f17e6baf4cf01534c9de8a16c0c611f3d94925d1701bf5f4aff17003677d8ced"}, + {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6402ebb74a14ef96f94a868569f5dccf70d791de49feb73180eb3c6fda2ade56"}, + {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0000758ae7c7853e0a4a6063f534c61656ebff644391e1f81698c1b2d2fc8cd2"}, + {file = "orjson-3.10.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:888442dcee99fd1e5bd37a4abb94930915ca6af4db50e23e746cdf4d1e63db13"}, + {file = "orjson-3.10.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c1f7a3ce79246aa0e92f5458d86c54f257fb5dfdc14a192651ba7ec2c00f8a05"}, + {file = "orjson-3.10.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:802a3935f45605c66fb4a586488a38af63cb37aaad1c1d94c982c40dcc452e85"}, + {file = "orjson-3.10.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1da1ef0113a2be19bb6c557fb0ec2d79c92ebd2fed4cfb1b26bab93f021fb885"}, + {file = "orjson-3.10.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a3273e99f367f137d5b3fecb5e9f45bcdbfac2a8b2f32fbc72129bbd48789c2"}, + {file = "orjson-3.10.12-cp310-none-win32.whl", hash = "sha256:475661bf249fd7907d9b0a2a2421b4e684355a77ceef85b8352439a9163418c3"}, + {file = "orjson-3.10.12-cp310-none-win_amd64.whl", hash = "sha256:87251dc1fb2b9e5ab91ce65d8f4caf21910d99ba8fb24b49fd0c118b2362d509"}, + {file = "orjson-3.10.12-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a734c62efa42e7df94926d70fe7d37621c783dea9f707a98cdea796964d4cf74"}, + {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:750f8b27259d3409eda8350c2919a58b0cfcd2054ddc1bd317a643afc646ef23"}, + {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb52c22bfffe2857e7aa13b4622afd0dd9d16ea7cc65fd2bf318d3223b1b6252"}, + {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:440d9a337ac8c199ff8251e100c62e9488924c92852362cd27af0e67308c16ef"}, + {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9e15c06491c69997dfa067369baab3bf094ecb74be9912bdc4339972323f252"}, + {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:362d204ad4b0b8724cf370d0cd917bb2dc913c394030da748a3bb632445ce7c4"}, + {file = "orjson-3.10.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b57cbb4031153db37b41622eac67329c7810e5f480fda4cfd30542186f006ae"}, + {file = "orjson-3.10.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:165c89b53ef03ce0d7c59ca5c82fa65fe13ddf52eeb22e859e58c237d4e33b9b"}, + {file = "orjson-3.10.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:5dee91b8dfd54557c1a1596eb90bcd47dbcd26b0baaed919e6861f076583e9da"}, + {file = "orjson-3.10.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a4e1cfb72de6f905bdff061172adfb3caf7a4578ebf481d8f0530879476c07"}, + {file = "orjson-3.10.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:038d42c7bc0606443459b8fe2d1f121db474c49067d8d14c6a075bbea8bf14dd"}, + {file = "orjson-3.10.12-cp311-none-win32.whl", hash = "sha256:03b553c02ab39bed249bedd4abe37b2118324d1674e639b33fab3d1dafdf4d79"}, + {file = "orjson-3.10.12-cp311-none-win_amd64.whl", hash = "sha256:8b8713b9e46a45b2af6b96f559bfb13b1e02006f4242c156cbadef27800a55a8"}, + {file = "orjson-3.10.12-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:53206d72eb656ca5ac7d3a7141e83c5bbd3ac30d5eccfe019409177a57634b0d"}, + {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac8010afc2150d417ebda810e8df08dd3f544e0dd2acab5370cfa6bcc0662f8f"}, + {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed459b46012ae950dd2e17150e838ab08215421487371fa79d0eced8d1461d70"}, + {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dcb9673f108a93c1b52bfc51b0af422c2d08d4fc710ce9c839faad25020bb69"}, + {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22a51ae77680c5c4652ebc63a83d5255ac7d65582891d9424b566fb3b5375ee9"}, + {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910fdf2ac0637b9a77d1aad65f803bac414f0b06f720073438a7bd8906298192"}, + {file = "orjson-3.10.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:24ce85f7100160936bc2116c09d1a8492639418633119a2224114f67f63a4559"}, + {file = "orjson-3.10.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8a76ba5fc8dd9c913640292df27bff80a685bed3a3c990d59aa6ce24c352f8fc"}, + {file = "orjson-3.10.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ff70ef093895fd53f4055ca75f93f047e088d1430888ca1229393a7c0521100f"}, + {file = "orjson-3.10.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4244b7018b5753ecd10a6d324ec1f347da130c953a9c88432c7fbc8875d13be"}, + {file = "orjson-3.10.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:16135ccca03445f37921fa4b585cff9a58aa8d81ebcb27622e69bfadd220b32c"}, + {file = "orjson-3.10.12-cp312-none-win32.whl", hash = "sha256:2d879c81172d583e34153d524fcba5d4adafbab8349a7b9f16ae511c2cee8708"}, + {file = "orjson-3.10.12-cp312-none-win_amd64.whl", hash = "sha256:fc23f691fa0f5c140576b8c365bc942d577d861a9ee1142e4db468e4e17094fb"}, + {file = "orjson-3.10.12-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:47962841b2a8aa9a258b377f5188db31ba49af47d4003a32f55d6f8b19006543"}, + {file = "orjson-3.10.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6334730e2532e77b6054e87ca84f3072bee308a45a452ea0bffbbbc40a67e296"}, + {file = "orjson-3.10.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:accfe93f42713c899fdac2747e8d0d5c659592df2792888c6c5f829472e4f85e"}, + {file = "orjson-3.10.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7974c490c014c48810d1dede6c754c3cc46598da758c25ca3b4001ac45b703f"}, + {file = "orjson-3.10.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:3f250ce7727b0b2682f834a3facff88e310f52f07a5dcfd852d99637d386e79e"}, + {file = "orjson-3.10.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f31422ff9486ae484f10ffc51b5ab2a60359e92d0716fcce1b3593d7bb8a9af6"}, + {file = "orjson-3.10.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5f29c5d282bb2d577c2a6bbde88d8fdcc4919c593f806aac50133f01b733846e"}, + {file = "orjson-3.10.12-cp313-none-win32.whl", hash = "sha256:f45653775f38f63dc0e6cd4f14323984c3149c05d6007b58cb154dd080ddc0dc"}, + {file = "orjson-3.10.12-cp313-none-win_amd64.whl", hash = "sha256:229994d0c376d5bdc91d92b3c9e6be2f1fbabd4cc1b59daae1443a46ee5e9825"}, + {file = "orjson-3.10.12-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7d69af5b54617a5fac5c8e5ed0859eb798e2ce8913262eb522590239db6c6763"}, + {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ed119ea7d2953365724a7059231a44830eb6bbb0cfead33fcbc562f5fd8f935"}, + {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9c5fc1238ef197e7cad5c91415f524aaa51e004be5a9b35a1b8a84ade196f73f"}, + {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:43509843990439b05f848539d6f6198d4ac86ff01dd024b2f9a795c0daeeab60"}, + {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f72e27a62041cfb37a3de512247ece9f240a561e6c8662276beaf4d53d406db4"}, + {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a904f9572092bb6742ab7c16c623f0cdccbad9eeb2d14d4aa06284867bddd31"}, + {file = "orjson-3.10.12-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:855c0833999ed5dc62f64552db26f9be767434917d8348d77bacaab84f787d7b"}, + {file = "orjson-3.10.12-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:897830244e2320f6184699f598df7fb9db9f5087d6f3f03666ae89d607e4f8ed"}, + {file = "orjson-3.10.12-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:0b32652eaa4a7539f6f04abc6243619c56f8530c53bf9b023e1269df5f7816dd"}, + {file = "orjson-3.10.12-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:36b4aa31e0f6a1aeeb6f8377769ca5d125db000f05c20e54163aef1d3fe8e833"}, + {file = "orjson-3.10.12-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5535163054d6cbf2796f93e4f0dbc800f61914c0e3c4ed8499cf6ece22b4a3da"}, + {file = "orjson-3.10.12-cp38-none-win32.whl", hash = "sha256:90a5551f6f5a5fa07010bf3d0b4ca2de21adafbbc0af6cb700b63cd767266cb9"}, + {file = "orjson-3.10.12-cp38-none-win_amd64.whl", hash = "sha256:703a2fb35a06cdd45adf5d733cf613cbc0cb3ae57643472b16bc22d325b5fb6c"}, + {file = "orjson-3.10.12-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f29de3ef71a42a5822765def1febfb36e0859d33abf5c2ad240acad5c6a1b78d"}, + {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de365a42acc65d74953f05e4772c974dad6c51cfc13c3240899f534d611be967"}, + {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:91a5a0158648a67ff0004cb0df5df7dcc55bfc9ca154d9c01597a23ad54c8d0c"}, + {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c47ce6b8d90fe9646a25b6fb52284a14ff215c9595914af63a5933a49972ce36"}, + {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0eee4c2c5bfb5c1b47a5db80d2ac7aaa7e938956ae88089f098aff2c0f35d5d8"}, + {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35d3081bbe8b86587eb5c98a73b97f13d8f9fea685cf91a579beddacc0d10566"}, + {file = "orjson-3.10.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:73c23a6e90383884068bc2dba83d5222c9fcc3b99a0ed2411d38150734236755"}, + {file = "orjson-3.10.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5472be7dc3269b4b52acba1433dac239215366f89dc1d8d0e64029abac4e714e"}, + {file = "orjson-3.10.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:7319cda750fca96ae5973efb31b17d97a5c5225ae0bc79bf5bf84df9e1ec2ab6"}, + {file = "orjson-3.10.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:74d5ca5a255bf20b8def6a2b96b1e18ad37b4a122d59b154c458ee9494377f80"}, + {file = "orjson-3.10.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ff31d22ecc5fb85ef62c7d4afe8301d10c558d00dd24274d4bbe464380d3cd69"}, + {file = "orjson-3.10.12-cp39-none-win32.whl", hash = "sha256:c22c3ea6fba91d84fcb4cda30e64aff548fcf0c44c876e681f47d61d24b12e6b"}, + {file = "orjson-3.10.12-cp39-none-win_amd64.whl", hash = "sha256:be604f60d45ace6b0b33dd990a66b4526f1a7a186ac411c942674625456ca548"}, + {file = "orjson-3.10.12.tar.gz", hash = "sha256:0a78bbda3aea0f9f079057ee1ee8a1ecf790d4f1af88dd67493c6b8ee52506ff"}, ] [[package]] @@ -990,4 +1007,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "7e985cdc0c18c1888f9b6ef92fbad423b529ce066e96f360f0bf01dfe6ed312c" +content-hash = "58888751f16e4ddaa6fc85cbb70f4155c933f3bb6ff2427715981a1ac346c6df" diff --git a/pyproject.toml b/pyproject.toml index dc25d905..0ee1a26d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^75.5.0" pook = "^2.0.1" -orjson = "^3.10.11" +orjson = "^3.10.12" [build-system] requires = ["poetry-core>=1.0.0"] From 04f594ebc2fd74d1b29184781cfdcbd92272c4b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 09:51:18 -0800 Subject: [PATCH 70/88] Bump types-setuptools from 75.5.0.20241116 to 75.5.0.20241122 (#793) Bumps [types-setuptools](https://github.com/python/typeshed) from 75.5.0.20241116 to 75.5.0.20241122. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index c86acd29..d7ce31a2 100644 --- a/poetry.lock +++ b/poetry.lock @@ -835,13 +835,13 @@ files = [ [[package]] name = "types-setuptools" -version = "75.5.0.20241116" +version = "75.5.0.20241122" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types-setuptools-75.5.0.20241116.tar.gz", hash = "sha256:b6939ffdbc50ffdc0bcfbf14f7a6de1ddc5510906c1ca2bd62c23646e5798b1a"}, - {file = "types_setuptools-75.5.0.20241116-py3-none-any.whl", hash = "sha256:1144b2ab8fa986061f963391fdbde16df20582e3cc39c94340e71aa61cc7203f"}, + {file = "types_setuptools-75.5.0.20241122-py3-none-any.whl", hash = "sha256:d69c445f7bdd5e49d1b2441aadcee1388febcc9ad9d9d5fd33648b555e0b1c31"}, + {file = "types_setuptools-75.5.0.20241122.tar.gz", hash = "sha256:196aaf1811cbc1c77ac1d4c4879d5308b6fdf426e56b73baadbca2a1827dadef"}, ] [[package]] From 609dd5cb5de1850bed3f9594006d14cfbeb4e319 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 10:26:45 -0800 Subject: [PATCH 71/88] Bump types-setuptools from 75.5.0.20241122 to 75.6.0.20241126 (#797) Bumps [types-setuptools](https://github.com/python/typeshed) from 75.5.0.20241122 to 75.6.0.20241126. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index d7ce31a2..3949798f 100644 --- a/poetry.lock +++ b/poetry.lock @@ -835,13 +835,13 @@ files = [ [[package]] name = "types-setuptools" -version = "75.5.0.20241122" +version = "75.6.0.20241126" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types_setuptools-75.5.0.20241122-py3-none-any.whl", hash = "sha256:d69c445f7bdd5e49d1b2441aadcee1388febcc9ad9d9d5fd33648b555e0b1c31"}, - {file = "types_setuptools-75.5.0.20241122.tar.gz", hash = "sha256:196aaf1811cbc1c77ac1d4c4879d5308b6fdf426e56b73baadbca2a1827dadef"}, + {file = "types_setuptools-75.6.0.20241126-py3-none-any.whl", hash = "sha256:aaae310a0e27033c1da8457d4d26ac673b0c8a0de7272d6d4708e263f2ea3b9b"}, + {file = "types_setuptools-75.6.0.20241126.tar.gz", hash = "sha256:7bf25ad4be39740e469f9268b6beddda6e088891fa5a27e985c6ce68bf62ace0"}, ] [[package]] @@ -1007,4 +1007,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "58888751f16e4ddaa6fc85cbb70f4155c933f3bb6ff2427715981a1ac346c6df" +content-hash = "a99c5c1c9f15bc1f023ae438382b1abd4007705c25b4ace778082b019cce5a2a" diff --git a/pyproject.toml b/pyproject.toml index 0ee1a26d..98ffccb9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^3.0.2" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^75.5.0" +types-setuptools = "^75.6.0" pook = "^2.0.1" orjson = "^3.10.12" From 92dabcae60e4039b04bd304f6f1df0517e3ce190 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 21 Dec 2024 13:27:25 -0800 Subject: [PATCH 72/88] Bump certifi from 2024.8.30 to 2024.12.14 (#807) Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.8.30 to 2024.12.14. - [Commits](https://github.com/certifi/python-certifi/compare/2024.08.30...2024.12.14) --- updated-dependencies: - dependency-name: certifi dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3949798f..ca2c7ce4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. [[package]] name = "alabaster" @@ -90,13 +90,13 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2024.8.30" +version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, + {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] [[package]] From a25ece56c824056e478fb53d1d7d90efe21aae9d Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Mon, 23 Dec 2024 08:52:57 -0800 Subject: [PATCH 73/88] Update CODEOWNERS (#808) --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 02c7785c..d7105d15 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @jbonzo @mmoghaddam385 @justinpolygon +* @justinpolygon @penelopus @davidwf-polygonio From 6acf3b4665282ac542c7988a71539372ebe01263 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Mon, 23 Dec 2024 14:37:31 -0800 Subject: [PATCH 74/88] Update websockets & certifi dependencies (#813) * Update pyproject.toml * Bump poetry.lock --- poetry.lock | 2 +- pyproject.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index ca2c7ce4..70633895 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1007,4 +1007,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "a99c5c1c9f15bc1f023ae438382b1abd4007705c25b4ace778082b019cce5a2a" +content-hash = "e73a36a9983ec3dfaa1c08df0fdcc97daeaf9513ae47d89dcf86fc404e0354de" diff --git a/pyproject.toml b/pyproject.toml index 98ffccb9..bc6e6a0b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,8 +26,8 @@ packages = [ [tool.poetry.dependencies] python = "^3.8" urllib3 = ">=1.26.9,<3.0.0" -websockets = ">=10.3,<14.0" -certifi = ">=2022.5.18,<2025.0.0" +websockets = ">=10.3,<15.0" +certifi = ">=2022.5.18,<2026.0.0" [tool.poetry.dev-dependencies] black = "^24.8.0" From 816a8d668d33cb7f65f8480eb4829ec40728f6c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 14:40:48 -0800 Subject: [PATCH 75/88] Bump jinja2 from 3.1.4 to 3.1.5 (#814) Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.4 to 3.1.5. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/3.1.4...3.1.5) --- updated-dependencies: - dependency-name: jinja2 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 70633895..5c20b91a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -225,13 +225,13 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec [[package]] name = "jinja2" -version = "3.1.4" +version = "3.1.5" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, - {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, + {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, + {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, ] [package.dependencies] From d4e62055547759df0464a4ec013b7b6093baae74 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 14:44:15 -0800 Subject: [PATCH 76/88] Bump types-setuptools from 75.6.0.20241126 to 75.6.0.20241223 (#811) Bumps [types-setuptools](https://github.com/python/typeshed) from 75.6.0.20241126 to 75.6.0.20241223. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: justinpolygon <123573436+justinpolygon@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5c20b91a..845fca15 100644 --- a/poetry.lock +++ b/poetry.lock @@ -835,13 +835,13 @@ files = [ [[package]] name = "types-setuptools" -version = "75.6.0.20241126" +version = "75.6.0.20241223" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types_setuptools-75.6.0.20241126-py3-none-any.whl", hash = "sha256:aaae310a0e27033c1da8457d4d26ac673b0c8a0de7272d6d4708e263f2ea3b9b"}, - {file = "types_setuptools-75.6.0.20241126.tar.gz", hash = "sha256:7bf25ad4be39740e469f9268b6beddda6e088891fa5a27e985c6ce68bf62ace0"}, + {file = "types_setuptools-75.6.0.20241223-py3-none-any.whl", hash = "sha256:7cbfd3bf2944f88bbcdd321b86ddd878232a277be95d44c78a53585d78ebc2f6"}, + {file = "types_setuptools-75.6.0.20241223.tar.gz", hash = "sha256:d9478a985057ed48a994c707f548e55aababa85fe1c9b212f43ab5a1fffd3211"}, ] [[package]] From 3c95d68ca2444a3baf90668870bc3a32e4d7c05f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2024 08:58:51 -0800 Subject: [PATCH 77/88] Bump orjson from 3.10.12 to 3.10.13 (#824) Bumps [orjson](https://github.com/ijl/orjson) from 3.10.12 to 3.10.13. - [Release notes](https://github.com/ijl/orjson/releases) - [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md) - [Commits](https://github.com/ijl/orjson/compare/3.10.12...3.10.13) --- updated-dependencies: - dependency-name: orjson dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 154 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 78 insertions(+), 78 deletions(-) diff --git a/poetry.lock b/poetry.lock index 845fca15..59cdd317 100644 --- a/poetry.lock +++ b/poetry.lock @@ -390,86 +390,86 @@ six = ">=1.8.0" [[package]] name = "orjson" -version = "3.10.12" +version = "3.10.13" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.12-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ece01a7ec71d9940cc654c482907a6b65df27251255097629d0dea781f255c6d"}, - {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c34ec9aebc04f11f4b978dd6caf697a2df2dd9b47d35aa4cc606cabcb9df69d7"}, - {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd6ec8658da3480939c79b9e9e27e0db31dffcd4ba69c334e98c9976ac29140e"}, - {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f17e6baf4cf01534c9de8a16c0c611f3d94925d1701bf5f4aff17003677d8ced"}, - {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6402ebb74a14ef96f94a868569f5dccf70d791de49feb73180eb3c6fda2ade56"}, - {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0000758ae7c7853e0a4a6063f534c61656ebff644391e1f81698c1b2d2fc8cd2"}, - {file = "orjson-3.10.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:888442dcee99fd1e5bd37a4abb94930915ca6af4db50e23e746cdf4d1e63db13"}, - {file = "orjson-3.10.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c1f7a3ce79246aa0e92f5458d86c54f257fb5dfdc14a192651ba7ec2c00f8a05"}, - {file = "orjson-3.10.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:802a3935f45605c66fb4a586488a38af63cb37aaad1c1d94c982c40dcc452e85"}, - {file = "orjson-3.10.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1da1ef0113a2be19bb6c557fb0ec2d79c92ebd2fed4cfb1b26bab93f021fb885"}, - {file = "orjson-3.10.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7a3273e99f367f137d5b3fecb5e9f45bcdbfac2a8b2f32fbc72129bbd48789c2"}, - {file = "orjson-3.10.12-cp310-none-win32.whl", hash = "sha256:475661bf249fd7907d9b0a2a2421b4e684355a77ceef85b8352439a9163418c3"}, - {file = "orjson-3.10.12-cp310-none-win_amd64.whl", hash = "sha256:87251dc1fb2b9e5ab91ce65d8f4caf21910d99ba8fb24b49fd0c118b2362d509"}, - {file = "orjson-3.10.12-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a734c62efa42e7df94926d70fe7d37621c783dea9f707a98cdea796964d4cf74"}, - {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:750f8b27259d3409eda8350c2919a58b0cfcd2054ddc1bd317a643afc646ef23"}, - {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb52c22bfffe2857e7aa13b4622afd0dd9d16ea7cc65fd2bf318d3223b1b6252"}, - {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:440d9a337ac8c199ff8251e100c62e9488924c92852362cd27af0e67308c16ef"}, - {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9e15c06491c69997dfa067369baab3bf094ecb74be9912bdc4339972323f252"}, - {file = "orjson-3.10.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:362d204ad4b0b8724cf370d0cd917bb2dc913c394030da748a3bb632445ce7c4"}, - {file = "orjson-3.10.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b57cbb4031153db37b41622eac67329c7810e5f480fda4cfd30542186f006ae"}, - {file = "orjson-3.10.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:165c89b53ef03ce0d7c59ca5c82fa65fe13ddf52eeb22e859e58c237d4e33b9b"}, - {file = "orjson-3.10.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:5dee91b8dfd54557c1a1596eb90bcd47dbcd26b0baaed919e6861f076583e9da"}, - {file = "orjson-3.10.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:77a4e1cfb72de6f905bdff061172adfb3caf7a4578ebf481d8f0530879476c07"}, - {file = "orjson-3.10.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:038d42c7bc0606443459b8fe2d1f121db474c49067d8d14c6a075bbea8bf14dd"}, - {file = "orjson-3.10.12-cp311-none-win32.whl", hash = "sha256:03b553c02ab39bed249bedd4abe37b2118324d1674e639b33fab3d1dafdf4d79"}, - {file = "orjson-3.10.12-cp311-none-win_amd64.whl", hash = "sha256:8b8713b9e46a45b2af6b96f559bfb13b1e02006f4242c156cbadef27800a55a8"}, - {file = "orjson-3.10.12-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:53206d72eb656ca5ac7d3a7141e83c5bbd3ac30d5eccfe019409177a57634b0d"}, - {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac8010afc2150d417ebda810e8df08dd3f544e0dd2acab5370cfa6bcc0662f8f"}, - {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed459b46012ae950dd2e17150e838ab08215421487371fa79d0eced8d1461d70"}, - {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dcb9673f108a93c1b52bfc51b0af422c2d08d4fc710ce9c839faad25020bb69"}, - {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:22a51ae77680c5c4652ebc63a83d5255ac7d65582891d9424b566fb3b5375ee9"}, - {file = "orjson-3.10.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910fdf2ac0637b9a77d1aad65f803bac414f0b06f720073438a7bd8906298192"}, - {file = "orjson-3.10.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:24ce85f7100160936bc2116c09d1a8492639418633119a2224114f67f63a4559"}, - {file = "orjson-3.10.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8a76ba5fc8dd9c913640292df27bff80a685bed3a3c990d59aa6ce24c352f8fc"}, - {file = "orjson-3.10.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ff70ef093895fd53f4055ca75f93f047e088d1430888ca1229393a7c0521100f"}, - {file = "orjson-3.10.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f4244b7018b5753ecd10a6d324ec1f347da130c953a9c88432c7fbc8875d13be"}, - {file = "orjson-3.10.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:16135ccca03445f37921fa4b585cff9a58aa8d81ebcb27622e69bfadd220b32c"}, - {file = "orjson-3.10.12-cp312-none-win32.whl", hash = "sha256:2d879c81172d583e34153d524fcba5d4adafbab8349a7b9f16ae511c2cee8708"}, - {file = "orjson-3.10.12-cp312-none-win_amd64.whl", hash = "sha256:fc23f691fa0f5c140576b8c365bc942d577d861a9ee1142e4db468e4e17094fb"}, - {file = "orjson-3.10.12-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:47962841b2a8aa9a258b377f5188db31ba49af47d4003a32f55d6f8b19006543"}, - {file = "orjson-3.10.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6334730e2532e77b6054e87ca84f3072bee308a45a452ea0bffbbbc40a67e296"}, - {file = "orjson-3.10.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:accfe93f42713c899fdac2747e8d0d5c659592df2792888c6c5f829472e4f85e"}, - {file = "orjson-3.10.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7974c490c014c48810d1dede6c754c3cc46598da758c25ca3b4001ac45b703f"}, - {file = "orjson-3.10.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:3f250ce7727b0b2682f834a3facff88e310f52f07a5dcfd852d99637d386e79e"}, - {file = "orjson-3.10.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f31422ff9486ae484f10ffc51b5ab2a60359e92d0716fcce1b3593d7bb8a9af6"}, - {file = "orjson-3.10.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5f29c5d282bb2d577c2a6bbde88d8fdcc4919c593f806aac50133f01b733846e"}, - {file = "orjson-3.10.12-cp313-none-win32.whl", hash = "sha256:f45653775f38f63dc0e6cd4f14323984c3149c05d6007b58cb154dd080ddc0dc"}, - {file = "orjson-3.10.12-cp313-none-win_amd64.whl", hash = "sha256:229994d0c376d5bdc91d92b3c9e6be2f1fbabd4cc1b59daae1443a46ee5e9825"}, - {file = "orjson-3.10.12-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7d69af5b54617a5fac5c8e5ed0859eb798e2ce8913262eb522590239db6c6763"}, - {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ed119ea7d2953365724a7059231a44830eb6bbb0cfead33fcbc562f5fd8f935"}, - {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9c5fc1238ef197e7cad5c91415f524aaa51e004be5a9b35a1b8a84ade196f73f"}, - {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:43509843990439b05f848539d6f6198d4ac86ff01dd024b2f9a795c0daeeab60"}, - {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f72e27a62041cfb37a3de512247ece9f240a561e6c8662276beaf4d53d406db4"}, - {file = "orjson-3.10.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a904f9572092bb6742ab7c16c623f0cdccbad9eeb2d14d4aa06284867bddd31"}, - {file = "orjson-3.10.12-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:855c0833999ed5dc62f64552db26f9be767434917d8348d77bacaab84f787d7b"}, - {file = "orjson-3.10.12-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:897830244e2320f6184699f598df7fb9db9f5087d6f3f03666ae89d607e4f8ed"}, - {file = "orjson-3.10.12-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:0b32652eaa4a7539f6f04abc6243619c56f8530c53bf9b023e1269df5f7816dd"}, - {file = "orjson-3.10.12-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:36b4aa31e0f6a1aeeb6f8377769ca5d125db000f05c20e54163aef1d3fe8e833"}, - {file = "orjson-3.10.12-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5535163054d6cbf2796f93e4f0dbc800f61914c0e3c4ed8499cf6ece22b4a3da"}, - {file = "orjson-3.10.12-cp38-none-win32.whl", hash = "sha256:90a5551f6f5a5fa07010bf3d0b4ca2de21adafbbc0af6cb700b63cd767266cb9"}, - {file = "orjson-3.10.12-cp38-none-win_amd64.whl", hash = "sha256:703a2fb35a06cdd45adf5d733cf613cbc0cb3ae57643472b16bc22d325b5fb6c"}, - {file = "orjson-3.10.12-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f29de3ef71a42a5822765def1febfb36e0859d33abf5c2ad240acad5c6a1b78d"}, - {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de365a42acc65d74953f05e4772c974dad6c51cfc13c3240899f534d611be967"}, - {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:91a5a0158648a67ff0004cb0df5df7dcc55bfc9ca154d9c01597a23ad54c8d0c"}, - {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c47ce6b8d90fe9646a25b6fb52284a14ff215c9595914af63a5933a49972ce36"}, - {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0eee4c2c5bfb5c1b47a5db80d2ac7aaa7e938956ae88089f098aff2c0f35d5d8"}, - {file = "orjson-3.10.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35d3081bbe8b86587eb5c98a73b97f13d8f9fea685cf91a579beddacc0d10566"}, - {file = "orjson-3.10.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:73c23a6e90383884068bc2dba83d5222c9fcc3b99a0ed2411d38150734236755"}, - {file = "orjson-3.10.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5472be7dc3269b4b52acba1433dac239215366f89dc1d8d0e64029abac4e714e"}, - {file = "orjson-3.10.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:7319cda750fca96ae5973efb31b17d97a5c5225ae0bc79bf5bf84df9e1ec2ab6"}, - {file = "orjson-3.10.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:74d5ca5a255bf20b8def6a2b96b1e18ad37b4a122d59b154c458ee9494377f80"}, - {file = "orjson-3.10.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ff31d22ecc5fb85ef62c7d4afe8301d10c558d00dd24274d4bbe464380d3cd69"}, - {file = "orjson-3.10.12-cp39-none-win32.whl", hash = "sha256:c22c3ea6fba91d84fcb4cda30e64aff548fcf0c44c876e681f47d61d24b12e6b"}, - {file = "orjson-3.10.12-cp39-none-win_amd64.whl", hash = "sha256:be604f60d45ace6b0b33dd990a66b4526f1a7a186ac411c942674625456ca548"}, - {file = "orjson-3.10.12.tar.gz", hash = "sha256:0a78bbda3aea0f9f079057ee1ee8a1ecf790d4f1af88dd67493c6b8ee52506ff"}, + {file = "orjson-3.10.13-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1232c5e873a4d1638ef957c5564b4b0d6f2a6ab9e207a9b3de9de05a09d1d920"}, + {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d26a0eca3035619fa366cbaf49af704c7cb1d4a0e6c79eced9f6a3f2437964b6"}, + {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d4b6acd7c9c829895e50d385a357d4b8c3fafc19c5989da2bae11783b0fd4977"}, + {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1884e53c6818686891cc6fc5a3a2540f2f35e8c76eac8dc3b40480fb59660b00"}, + {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a428afb5720f12892f64920acd2eeb4d996595bf168a26dd9190115dbf1130d"}, + {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba5b13b8739ce5b630c65cb1c85aedbd257bcc2b9c256b06ab2605209af75a2e"}, + {file = "orjson-3.10.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cab83e67f6aabda1b45882254b2598b48b80ecc112968fc6483fa6dae609e9f0"}, + {file = "orjson-3.10.13-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:62c3cc00c7e776c71c6b7b9c48c5d2701d4c04e7d1d7cdee3572998ee6dc57cc"}, + {file = "orjson-3.10.13-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:dc03db4922e75bbc870b03fc49734cefbd50fe975e0878327d200022210b82d8"}, + {file = "orjson-3.10.13-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:22f1c9a30b43d14a041a6ea190d9eca8a6b80c4beb0e8b67602c82d30d6eec3e"}, + {file = "orjson-3.10.13-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b42f56821c29e697c68d7d421410d7c1d8f064ae288b525af6a50cf99a4b1200"}, + {file = "orjson-3.10.13-cp310-cp310-win32.whl", hash = "sha256:0dbf3b97e52e093d7c3e93eb5eb5b31dc7535b33c2ad56872c83f0160f943487"}, + {file = "orjson-3.10.13-cp310-cp310-win_amd64.whl", hash = "sha256:46c249b4e934453be4ff2e518cd1adcd90467da7391c7a79eaf2fbb79c51e8c7"}, + {file = "orjson-3.10.13-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a36c0d48d2f084c800763473020a12976996f1109e2fcb66cfea442fdf88047f"}, + {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0065896f85d9497990731dfd4a9991a45b0a524baec42ef0a63c34630ee26fd6"}, + {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:92b4ec30d6025a9dcdfe0df77063cbce238c08d0404471ed7a79f309364a3d19"}, + {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a94542d12271c30044dadad1125ee060e7a2048b6c7034e432e116077e1d13d2"}, + {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3723e137772639af8adb68230f2aa4bcb27c48b3335b1b1e2d49328fed5e244c"}, + {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f00c7fb18843bad2ac42dc1ce6dd214a083c53f1e324a0fd1c8137c6436269b"}, + {file = "orjson-3.10.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0e2759d3172300b2f892dee85500b22fca5ac49e0c42cfff101aaf9c12ac9617"}, + {file = "orjson-3.10.13-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ee948c6c01f6b337589c88f8e0bb11e78d32a15848b8b53d3f3b6fea48842c12"}, + {file = "orjson-3.10.13-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:aa6fe68f0981fba0d4bf9cdc666d297a7cdba0f1b380dcd075a9a3dd5649a69e"}, + {file = "orjson-3.10.13-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dbcd7aad6bcff258f6896abfbc177d54d9b18149c4c561114f47ebfe74ae6bfd"}, + {file = "orjson-3.10.13-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2149e2fcd084c3fd584881c7f9d7f9e5ad1e2e006609d8b80649655e0d52cd02"}, + {file = "orjson-3.10.13-cp311-cp311-win32.whl", hash = "sha256:89367767ed27b33c25c026696507c76e3d01958406f51d3a2239fe9e91959df2"}, + {file = "orjson-3.10.13-cp311-cp311-win_amd64.whl", hash = "sha256:dca1d20f1af0daff511f6e26a27354a424f0b5cf00e04280279316df0f604a6f"}, + {file = "orjson-3.10.13-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a3614b00621c77f3f6487792238f9ed1dd8a42f2ec0e6540ee34c2d4e6db813a"}, + {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c976bad3996aa027cd3aef78aa57873f3c959b6c38719de9724b71bdc7bd14b"}, + {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f74d878d1efb97a930b8a9f9898890067707d683eb5c7e20730030ecb3fb930"}, + {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:33ef84f7e9513fb13b3999c2a64b9ca9c8143f3da9722fbf9c9ce51ce0d8076e"}, + {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd2bcde107221bb9c2fa0c4aaba735a537225104173d7e19cf73f70b3126c993"}, + {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:064b9dbb0217fd64a8d016a8929f2fae6f3312d55ab3036b00b1d17399ab2f3e"}, + {file = "orjson-3.10.13-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0044b0b8c85a565e7c3ce0a72acc5d35cda60793edf871ed94711e712cb637d"}, + {file = "orjson-3.10.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7184f608ad563032e398f311910bc536e62b9fbdca2041be889afcbc39500de8"}, + {file = "orjson-3.10.13-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d36f689e7e1b9b6fb39dbdebc16a6f07cbe994d3644fb1c22953020fc575935f"}, + {file = "orjson-3.10.13-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:54433e421618cd5873e51c0e9d0b9fb35f7bf76eb31c8eab20b3595bb713cd3d"}, + {file = "orjson-3.10.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e1ba0c5857dd743438acecc1cd0e1adf83f0a81fee558e32b2b36f89e40cee8b"}, + {file = "orjson-3.10.13-cp312-cp312-win32.whl", hash = "sha256:a42b9fe4b0114b51eb5cdf9887d8c94447bc59df6dbb9c5884434eab947888d8"}, + {file = "orjson-3.10.13-cp312-cp312-win_amd64.whl", hash = "sha256:3a7df63076435f39ec024bdfeb4c9767ebe7b49abc4949068d61cf4857fa6d6c"}, + {file = "orjson-3.10.13-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2cdaf8b028a976ebab837a2c27b82810f7fc76ed9fb243755ba650cc83d07730"}, + {file = "orjson-3.10.13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48a946796e390cbb803e069472de37f192b7a80f4ac82e16d6eb9909d9e39d56"}, + {file = "orjson-3.10.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7d64f1db5ecbc21eb83097e5236d6ab7e86092c1cd4c216c02533332951afc"}, + {file = "orjson-3.10.13-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:711878da48f89df194edd2ba603ad42e7afed74abcd2bac164685e7ec15f96de"}, + {file = "orjson-3.10.13-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:cf16f06cb77ce8baf844bc222dbcb03838f61d0abda2c3341400c2b7604e436e"}, + {file = "orjson-3.10.13-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8257c3fb8dd7b0b446b5e87bf85a28e4071ac50f8c04b6ce2d38cb4abd7dff57"}, + {file = "orjson-3.10.13-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d9c3a87abe6f849a4a7ac8a8a1dede6320a4303d5304006b90da7a3cd2b70d2c"}, + {file = "orjson-3.10.13-cp313-cp313-win32.whl", hash = "sha256:527afb6ddb0fa3fe02f5d9fba4920d9d95da58917826a9be93e0242da8abe94a"}, + {file = "orjson-3.10.13-cp313-cp313-win_amd64.whl", hash = "sha256:b5f7c298d4b935b222f52d6c7f2ba5eafb59d690d9a3840b7b5c5cda97f6ec5c"}, + {file = "orjson-3.10.13-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e49333d1038bc03a25fdfe11c86360df9b890354bfe04215f1f54d030f33c342"}, + {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:003721c72930dbb973f25c5d8e68d0f023d6ed138b14830cc94e57c6805a2eab"}, + {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:63664bf12addb318dc8f032160e0f5dc17eb8471c93601e8f5e0d07f95003784"}, + {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6066729cf9552d70de297b56556d14b4f49c8f638803ee3c90fd212fa43cc6af"}, + {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8a1152e2761025c5d13b5e1908d4b1c57f3797ba662e485ae6f26e4e0c466388"}, + {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69b21d91c5c5ef8a201036d207b1adf3aa596b930b6ca3c71484dd11386cf6c3"}, + {file = "orjson-3.10.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b12a63f48bb53dba8453d36ca2661f2330126d54e26c1661e550b32864b28ce3"}, + {file = "orjson-3.10.13-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a5a7624ab4d121c7e035708c8dd1f99c15ff155b69a1c0affc4d9d8b551281ba"}, + {file = "orjson-3.10.13-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:0fee076134398d4e6cb827002468679ad402b22269510cf228301b787fdff5ae"}, + {file = "orjson-3.10.13-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ae537fcf330b3947e82c6ae4271e092e6cf16b9bc2cef68b14ffd0df1fa8832a"}, + {file = "orjson-3.10.13-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f81b26c03f5fb5f0d0ee48d83cea4d7bc5e67e420d209cc1a990f5d1c62f9be0"}, + {file = "orjson-3.10.13-cp38-cp38-win32.whl", hash = "sha256:0bc858086088b39dc622bc8219e73d3f246fb2bce70a6104abd04b3a080a66a8"}, + {file = "orjson-3.10.13-cp38-cp38-win_amd64.whl", hash = "sha256:3ca6f17467ebbd763f8862f1d89384a5051b461bb0e41074f583a0ebd7120e8e"}, + {file = "orjson-3.10.13-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4a11532cbfc2f5752c37e84863ef8435b68b0e6d459b329933294f65fa4bda1a"}, + {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c96d2fb80467d1d0dfc4d037b4e1c0f84f1fe6229aa7fea3f070083acef7f3d7"}, + {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dda4ba4d3e6f6c53b6b9c35266788053b61656a716a7fef5c884629c2a52e7aa"}, + {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4f998bbf300690be881772ee9c5281eb9c0044e295bcd4722504f5b5c6092ff"}, + {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1cc42ed75b585c0c4dc5eb53a90a34ccb493c09a10750d1a1f9b9eff2bd12"}, + {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03b0f29d485411e3c13d79604b740b14e4e5fb58811743f6f4f9693ee6480a8f"}, + {file = "orjson-3.10.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:233aae4474078d82f425134bb6a10fb2b3fc5a1a1b3420c6463ddd1b6a97eda8"}, + {file = "orjson-3.10.13-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e384e330a67cf52b3597ee2646de63407da6f8fc9e9beec3eaaaef5514c7a1c9"}, + {file = "orjson-3.10.13-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4222881d0aab76224d7b003a8e5fdae4082e32c86768e0e8652de8afd6c4e2c1"}, + {file = "orjson-3.10.13-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e400436950ba42110a20c50c80dff4946c8e3ec09abc1c9cf5473467e83fd1c5"}, + {file = "orjson-3.10.13-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f47c9e7d224b86ffb086059cdcf634f4b3f32480f9838864aa09022fe2617ce2"}, + {file = "orjson-3.10.13-cp39-cp39-win32.whl", hash = "sha256:a9ecea472f3eb653e1c0a3d68085f031f18fc501ea392b98dcca3e87c24f9ebe"}, + {file = "orjson-3.10.13-cp39-cp39-win_amd64.whl", hash = "sha256:5385935a73adce85cc7faac9d396683fd813566d3857fa95a0b521ef84a5b588"}, + {file = "orjson-3.10.13.tar.gz", hash = "sha256:eb9bfb14ab8f68d9d9492d4817ae497788a15fd7da72e14dfabc289c3bb088ec"}, ] [[package]] @@ -1007,4 +1007,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "e73a36a9983ec3dfaa1c08df0fdcc97daeaf9513ae47d89dcf86fc404e0354de" +content-hash = "183ba57707ae02b4b27fc68f294181edf9f15d33bd3c24dcfb58c9fdc4e3e93a" diff --git a/pyproject.toml b/pyproject.toml index bc6e6a0b..83794997 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^75.6.0" pook = "^2.0.1" -orjson = "^3.10.12" +orjson = "^3.10.13" [build-system] requires = ["poetry-core>=1.0.0"] From 0ebde261f6ba9005815e2c8de32efd7a97ae9bf1 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Wed, 8 Jan 2025 05:16:07 -0800 Subject: [PATCH 78/88] Spec update 2024-12-24 (#815) * Spec update 2024-12-24 * Added latest updates --- .polygon/rest.json | 457 +++++++++++++++++++++++++++++++++++++--- .polygon/websocket.json | 8 +- 2 files changed, 426 insertions(+), 39 deletions(-) diff --git a/.polygon/rest.json b/.polygon/rest.json index 4eb0f967..425d2c2d 100644 --- a/.polygon/rest.json +++ b/.polygon/rest.json @@ -14644,7 +14644,7 @@ "volume": 37 }, "ticker": "NCLH", - "type": "stock" + "type": "stocks" }, { "last_updated": 1679597116344223500, @@ -14895,6 +14895,16 @@ "format": "double", "type": "number" }, + "regular_trading_change": { + "description": "Today's change in regular trading hours, difference between current price and previous trading day's close, otherwise difference between today's close and previous day's close.", + "format": "double", + "type": "number" + }, + "regular_trading_change_percent": { + "description": "Today's regular trading change as a percentage.", + "format": "double", + "type": "number" + }, "volume": { "description": "The trading volume for the asset for the day.", "format": "double", @@ -14931,15 +14941,7 @@ } }, "required": [ - "ticker", - "name", - "price", - "branding", - "market_status", - "type", - "session", - "options", - "last_updated" + "ticker" ], "type": "object", "x-polygon-go-type": { @@ -18576,6 +18578,11 @@ "properties": { "sentiment": { "description": "The sentiment of the insight.", + "enum": [ + "positive", + "neutral", + "negative" + ], "type": "string" }, "sentiment_reasoning": { @@ -27213,8 +27220,6 @@ } }, "required": [ - "last_updated", - "timeframe", "ask", "bid", "last_updated", @@ -27288,9 +27293,6 @@ } }, "required": [ - "last_updated", - "timeframe", - "participant_timestamp", "price", "size" ], @@ -27378,6 +27380,16 @@ "format": "double", "type": "number" }, + "regular_trading_change": { + "description": "Today's change in regular trading hours, difference between current price and previous trading day's close, otherwise difference between today's close and previous day's close.", + "format": "double", + "type": "number" + }, + "regular_trading_change_percent": { + "description": "Today's regular trading change as a percentage.", + "format": "double", + "type": "number" + }, "volume": { "description": "The trading volume for the asset for the day.", "format": "double", @@ -27454,8 +27466,6 @@ } }, "required": [ - "last_updated", - "timeframe", "ticker", "change_to_break_even" ], @@ -27769,9 +27779,7 @@ } }, "required": [ - "ticker", - "timeframe", - "last_updated" + "ticker" ], "type": "object", "x-polygon-go-type": { @@ -28030,7 +28038,8 @@ "bid": 120.28, "bid_size": 8, "last_updated": 1605195918507251700, - "midpoint": 120.29 + "midpoint": 120.29, + "timeframe": "REAL-TIME" }, "last_trade": { "conditions": [ @@ -28131,7 +28140,6 @@ } }, "required": [ - "last_updated", "open", "high", "low", @@ -28305,8 +28313,6 @@ } }, "required": [ - "last_updated", - "timeframe", "ask", "ask_size", "bid_size", @@ -28359,7 +28365,6 @@ } }, "required": [ - "timeframe", "exchange", "price", "sip_timestamp", @@ -28416,8 +28421,6 @@ } }, "required": [ - "last_updated", - "timeframe", "ticker", "change_to_break_even" ], @@ -28432,7 +28435,6 @@ "last_quote", "underlying_asset", "details", - "cha", "break_even_price", "open_interest" ], @@ -28667,7 +28669,6 @@ } }, "required": [ - "last_updated", "open", "high", "low", @@ -28841,8 +28842,6 @@ } }, "required": [ - "last_updated", - "timeframe", "ask", "ask_size", "bid_size", @@ -28895,7 +28894,6 @@ } }, "required": [ - "timeframe", "exchange", "price", "sip_timestamp", @@ -28952,8 +28950,6 @@ } }, "required": [ - "last_updated", - "timeframe", "ticker", "change_to_break_even" ], @@ -28968,7 +28964,6 @@ "last_quote", "underlying_asset", "details", - "cha", "break_even_price", "open_interest" ], @@ -30502,6 +30497,388 @@ } } }, + "/vX/reference/ipos": { + "get": { + "description": "The IPOs API provides access to detailed information about Initial Public Offerings (IPOs), including both upcoming and historical events. With this API, you can query for a comprehensive list of IPOs, along with key details such as the issuer name, ticker symbol, ISIN, IPO date, number of shares offered, expected price range, and final offering price. You can filter the results by status to focus on new, rumors, pending, historical, and more.", + "operationId": "ListIPOs", + "parameters": [ + { + "description": "Specify a case-sensitive ticker symbol. For example, AAPL represents Apple Inc.", + "in": "query", + "name": "ticker", + "schema": { + "type": "string" + } + }, + { + "description": "Specify a us_code. This is a unique nine-character alphanumeric code that identifies a North American financial security for the purposes of facilitating clearing and settlement of trades.", + "in": "query", + "name": "us_code", + "schema": { + "type": "string" + } + }, + { + "description": "Specify an International Securities Identification Number (ISIN). This is a unique twelve-digit code that is assigned to every security issuance in the world.", + "in": "query", + "name": "isin", + "schema": { + "type": "string" + } + }, + { + "description": "Specify a listing date. This is the first trading date for the newly listed entity.", + "in": "query", + "name": "listing_date", + "schema": { + "format": "date", + "type": "string" + }, + "x-polygon-filter-field": { + "range": true, + "type": "string" + } + }, + { + "description": "Specify an IPO status.", + "in": "query", + "name": "ipo_status", + "schema": { + "enum": [ + "direct_listing_process", + "history", + "new", + "pending", + "postponed", + "rumor", + "withdrawn" + ], + "type": "string" + } + }, + { + "description": "Range by listing_date.", + "in": "query", + "name": "listing_date.gte", + "schema": { + "format": "date", + "type": "string" + } + }, + { + "description": "Range by listing_date.", + "in": "query", + "name": "listing_date.gt", + "schema": { + "format": "date", + "type": "string" + } + }, + { + "description": "Range by listing_date.", + "in": "query", + "name": "listing_date.lte", + "schema": { + "format": "date", + "type": "string" + } + }, + { + "description": "Range by listing_date.", + "in": "query", + "name": "listing_date.lt", + "schema": { + "format": "date", + "type": "string" + } + }, + { + "description": "Order results based on the `sort` field.", + "in": "query", + "name": "order", + "schema": { + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "example": "asc", + "type": "string" + } + }, + { + "description": "Limit the number of results returned, default is 10 and max is 1000.", + "in": "query", + "name": "limit", + "schema": { + "default": 10, + "example": 10, + "maximum": 1000, + "minimum": 1, + "type": "integer" + } + }, + { + "description": "Sort field used for ordering.", + "in": "query", + "name": "sort", + "schema": { + "default": "listing_date", + "enum": [ + "listing_date", + "ticker", + "last_updated", + "security_type", + "issuer_name", + "currency_code", + "isin", + "us_code", + "final_issue_price", + "min_shares_offered", + "max_shares_offered", + "lowest_offer_price", + "highest_offer_price", + "total_offer_size", + "shares_outstanding", + "primary_exchange", + "lot_size", + "security_description", + "ipo_status" + ], + "example": "listing_date", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "example": { + "next_url": "https://api.polygon.io/vX/reference/ipos?cursor=YWN0aXZlPXRydWUmZGF0ZT0yMDIxLTA0LTI1JmxpbWl0PTEmb3JkZXI9YXNjJnBhZ2VfbWFya2VyPUElN0M5YWRjMjY0ZTgyM2E1ZjBiOGUyNDc5YmZiOGE1YmYwNDVkYzU0YjgwMDcyMWE2YmI1ZjBjMjQwMjU4MjFmNGZiJnNvcnQ9dGlja2Vy", + "request_id": "6a7e466379af0a71039d60cc78e72282", + "results": [ + { + "currency_code": "USD", + "final_issue_price": 17, + "highest_offer_price": 17, + "ipo_status": "history", + "isin": "US75383L1026", + "issue_end_date": "2024-06-06", + "issue_start_date": "2024-06-01", + "issuer_name": "Rapport Therapeutics Inc.", + "last_updated": "2024-06-27", + "listing_date": "2024-06-07", + "lot_size": 100, + "lowest_offer_price": 17, + "max_shares_offered": 8000000, + "min_shares_offered": 1000000, + "primary_exchange": "XNAS", + "security_description": "Ordinary Shares", + "security_type": "CS", + "shares_outstanding": 35376457, + "ticker": "RAPP", + "total_offer_size": 136000000, + "us_code": "75383L102" + } + ], + "status": "OK" + }, + "schema": { + "properties": { + "next_url": { + "description": "If present, this value can be used to fetch the next page of data.", + "type": "string" + }, + "request_id": { + "description": "A request id assigned by the server.", + "type": "string" + }, + "results": { + "description": "An array of results containing the requested data.", + "items": { + "properties": { + "currency_code": { + "description": "Underlying currency of the security.", + "example": "USD", + "type": "string" + }, + "final_issue_price": { + "description": "The price set by the company and its underwriters before the IPO goes live.", + "example": 14.5, + "format": "float", + "type": "number" + }, + "highest_offer_price": { + "description": "The highest price within the IPO price range that the company might use to price the shares.", + "example": 20, + "format": "float", + "type": "number" + }, + "ipo_status": { + "description": "The status of the IPO event. IPO events start out as status \"rumor\" or \"pending\". On listing day, the status changes to \"new\". After the listing day, the status changes to \"history\".\n\nThe status \"direct_listing_process\" corresponds to a type of offering where, instead of going through all the IPO processes, the company decides to list its shares directly on an exchange, without using an investment bank or other intermediaries. This is called a direct listing, direct placement, or direct public offering (DPO).", + "enum": [ + "direct_listing_process", + "history", + "new", + "pending", + "postponed", + "rumor", + "withdrawn" + ], + "example": "history", + "type": "string" + }, + "isin": { + "description": "International Securities Identification Number. This is a unique twelve-digit code that is assigned to every security issuance in the world.", + "example": "US0378331005", + "type": "string" + }, + "issuer_name": { + "description": "Name of issuer.", + "example": "Apple Inc.", + "type": "string" + }, + "last_updated": { + "description": "The date when the IPO event was last modified.", + "example": "2023-01-02", + "format": "date", + "type": "string" + }, + "listing_date": { + "description": "First trading date for the newly listed entity.", + "example": "2023-02-01", + "format": "date", + "type": "string" + }, + "lot_size": { + "description": "The minimum number of shares that can be bought or sold in a single transaction.", + "example": 100, + "type": "number" + }, + "lowest_offer_price": { + "description": "The lowest price within the IPO price range that the company is willing to offer its shares to investors.", + "example": 10, + "format": "float", + "type": "number" + }, + "max_shares_offered": { + "description": "The upper limit of the shares that the company is offering to investors.", + "example": 1000, + "type": "number" + }, + "min_shares_offered": { + "description": "The lower limit of shares that the company is willing to sell in the IPO.", + "example": 1000, + "type": "number" + }, + "primary_exchange": { + "description": "Market Identifier Code (MIC) of the primary exchange where the security is listed. The Market Identifier Code (MIC) (ISO 10383) is a unique identification code used to identify securities trading exchanges, regulated and non-regulated trading markets.", + "example": "XNAS", + "type": "string" + }, + "security_description": { + "description": "Description of the security.", + "example": "Ordinary Shares - Class A", + "type": "string" + }, + "security_type": { + "description": "The classification of the stock. For example, \"CS\" stands for Common Stock.", + "example": "CS", + "type": "string" + }, + "shares_outstanding": { + "description": "The total number of shares that the company has issued and are held by investors.", + "example": 1000000, + "type": "number" + }, + "ticker": { + "description": "The ticker symbol of the IPO event.", + "example": "AAPL", + "type": "string" + }, + "total_offer_size": { + "description": "The total amount raised by the company for IPO.", + "example": 1000000, + "format": "float", + "type": "number" + }, + "us_code": { + "description": "This is a unique nine-character alphanumeric code that identifies a North American financial security for the purposes of facilitating clearing and settlement of trades.", + "example": 37833100, + "type": "string" + } + }, + "required": [ + "name", + "last_updated", + "primary_exchange", + "security_type", + "security_description", + "ipo_status" + ], + "type": "object", + "x-polygon-go-type": { + "name": "IPOsResult" + } + }, + "type": "array" + }, + "status": { + "description": "The status of this request's response.", + "type": "string" + } + }, + "type": "object" + } + } + }, + "description": "A list of IPO events." + } + }, + "summary": "IPOs", + "tags": [ + "reference:stocks:ipos" + ], + "x-polygon-entitlement-data-type": { + "description": "Reference data", + "name": "reference" + }, + "x-polygon-paginate": { + "limit": { + "default": 10, + "max": 1000 + }, + "order": { + "default": "desc" + }, + "sort": { + "default": "listing_date", + "enum": [ + "listing_date", + "ticker", + "last_updated", + "security_type", + "issuer_name", + "currency_code", + "isin", + "us_code", + "final_issue_price", + "min_shares_offered", + "max_shares_offered", + "lowest_offer_price", + "highest_offer_price", + "total_offer_size", + "shares_outstanding", + "primary_exchange", + "lot_size", + "security_description", + "ipo_status" + ] + } + } + } + }, "/vX/reference/tickers/taxonomies": { "get": { "description": "Many investors place a high value on sector data. It is used to measure economic activity, identify peers and competitors, build ETF products, quantify market share, and compare company performance. However, there are some limitations to industry standard sectors:\n* They have difficulty identifying the primary area of activity for large, complex businesses.\n* Studies confirm significant disagreement between classification schemes when attempting to categorize the same companies.\n* The systems' hierarchical nature is inflexible and struggles to convey business nuances.\n
\n
\nAs a result, we've developed a new taxonomy to supplement existing sector classifications. The taxonomy is created by reviewing related 10K filings to create a set of structured categories and tags.\n
\n
\nThe categories are based on company operating models and are industry agnostic. Our current version only supports one category, Revenue Streams, with future plans to support more.\n
\n
\nThe tags define a specific type within the category. Within the Revenue Streams category, for example, tags for \"product sales\" and \"advertising\" may be found. A company may have many tags in a given category. The complete Revenue Streams taxonomy is shown below.\n
\n
\nOur taxonomy is powered by AI and is currently in early beta testing. You should expect some inaccuracies in the responses.\n
\n
\n## **Revenue Streams**\n *Latest Revision (7/7/2023)*\n
\n
\n- **Physical Product Sales:**\n Revenue generated from the sale of tangible goods or physical products to customers, either in-store or online.\n - Consumer Goods\n - Industrial Goods\n - Electronics\n - Vehicles\n - Healthcare Products\n
\n
\n- **Digital Product Sales:**\n Revenue earned from the sale of digital goods or products, such as software licenses, e-books, music downloads, or digital media content. It also includes revenue obtained by selling aggregated, anonymized, or processed data to third parties for market research, analytics, or other purposes.\n - Software\n - E-books and Digital Media\n - Mobile Applications\n - Games\n - Online Courses\n - Market Research Data\n - Customer Behavior Data\n
\n
\n- **Professional Services:**\n Revenue obtained by providing specialized services, expertise, or consulting to clients in exchange for fees. This includes services offered by professionals such as lawyers, accountants, or consultants.\n - Consulting\n - Legal Services\n - Financial Services\n - Marketing Services\n - Construction Services\n - Education & Tutoring\n
\n
\n- **Consumer Services:**\n Revenue earned from providing services directly to consumers, including services like healthcare, personal grooming, fitness, or hospitality.\n - Dining & Hospitality\n - Personal Care\n - Entertainment & Recreation\n - Fitness & Wellness\n - Travel & Tourism\n - Transportation\n - Home Services\n - Child & Family Care\n - Automotive\n
\n
\n- **Subscription-based Revenue:**\n Revenue obtained from recurring fees charged to customers for accessing a product or service over a defined period. This includes revenue from subscription-based models, membership programs, or software-as-a-service (SaaS) offerings.\n - Software as a Service (SaaS)\n - Streaming Services\n - Physical Media\n - Memberships\n
\n
\n- **Licensing and Royalties:**\n Revenue generated from the licensing of intellectual property rights to third parties, including franchise rights, patent licensing, brand licensing, and the receipt of royalties for authorized use of intellectual property like music royalties, book royalties, or patent royalties.\n - Franchise Fees\n - Patent Licensing\n - Brand Licensing\n - Media Royalties\n
\n
\n- **Advertising:**\n Revenue generated by displaying ads or promotional content to customers, whether through traditional or digital advertising channels, including revenue from display ads, sponsored content, or affiliate marketing.\n - Print Advertising\n - Online Display Advertising\n - Social Media Advertising\n - Influencer Marketing\n
\n
\n- **Commission-Based Revenue:**\n Revenue earned by acting as an intermediary and receiving a percentage or commission on sales made on behalf of another party. This includes revenue from affiliate programs, referral fees, or any other commission-based revenue models.\n - Real Estate Commissions\n - Affiliate Marketing Commissions\n - Online Marketplace Commissions\n
\n
\n- **Rentals or Leasing:**\n Revenue earned by leasing or renting out assets, properties, or equipment to customers, including rental income from real estate properties, equipment leasing, or vehicle rentals.\n - Property Rentals\n - Equipment Leasing\n - Vehicle Rentals", @@ -31437,6 +31814,16 @@ "paths": [ "/v1/related-companies/{ticker}" ] + }, + { + "paths": [ + "/vX/reference/ipos" + ] + }, + { + "paths": [ + "/vX/reference/short-interest/{identifier_type}/{identifier}" + ] } ] } diff --git a/.polygon/websocket.json b/.polygon/websocket.json index f565e7d1..ff09762a 100644 --- a/.polygon/websocket.json +++ b/.polygon/websocket.json @@ -277,7 +277,7 @@ }, "t": { "type": "integer", - "description": "The Timestamp in Unix MS." + "description": "The SIP timestamp in Unix MS." }, "q": { "type": "integer", @@ -407,7 +407,7 @@ }, "t": { "type": "integer", - "description": "The Timestamp in Unix MS." + "description": "The SIP timestamp in Unix MS." }, "q": { "type": "integer", @@ -3972,7 +3972,7 @@ }, "t": { "type": "integer", - "description": "The Timestamp in Unix MS." + "description": "The SIP timestamp in Unix MS." }, "q": { "type": "integer", @@ -4041,7 +4041,7 @@ }, "t": { "type": "integer", - "description": "The Timestamp in Unix MS." + "description": "The SIP timestamp in Unix MS." }, "q": { "type": "integer", From d89bcecfa9c6f7beb7e518d6b47a108305e21e70 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Wed, 8 Jan 2025 05:23:31 -0800 Subject: [PATCH 79/88] Add IPOs support (#816) --- examples/rest/stocks-ipos.py | 13 ++++++++ polygon/rest/models/tickers.py | 57 ++++++++++++++++++++++++++++++++++ polygon/rest/vX.py | 45 +++++++++++++++++++++++++-- 3 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 examples/rest/stocks-ipos.py diff --git a/examples/rest/stocks-ipos.py b/examples/rest/stocks-ipos.py new file mode 100644 index 00000000..54852335 --- /dev/null +++ b/examples/rest/stocks-ipos.py @@ -0,0 +1,13 @@ +from polygon import RESTClient + +# docs +# https://polygon.io/docs/stocks/get_vx_reference_ipos + +# client = RESTClient("XXXXXX") # hardcoded api_key is used +client = RESTClient() # POLYGON_API_KEY environment variable is used + +ipos = [] +for ipo in client.vx.list_ipos(ticker="RDDT"): + ipos.append(ipo) + +print(ipos) diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index 2554927e..317275ed 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -253,3 +253,60 @@ class TickerChangeResults: @staticmethod def from_dict(d): return TickerChangeResults(**d) + + +from typing import Optional +from ...modelclass import modelclass + + +@modelclass +class IPOListing: + """ + IPO Listing data as returned by the /vX/reference/ipos endpoint. + """ + + announced_date: Optional[str] = None + currency_code: Optional[str] = None + final_issue_price: Optional[float] = None + highest_offer_price: Optional[float] = None + ipo_status: Optional[str] = None + isin: Optional[str] = None + issuer_name: Optional[str] = None + last_updated: Optional[str] = None + listing_date: Optional[str] = None + lot_size: Optional[int] = None + lowest_offer_price: Optional[float] = None + max_shares_offered: Optional[int] = None + min_shares_offered: Optional[int] = None + primary_exchange: Optional[str] = None + security_description: Optional[str] = None + security_type: Optional[str] = None + shares_outstanding: Optional[int] = None + ticker: Optional[str] = None + total_offer_size: Optional[float] = None + us_code: Optional[str] = None + + @staticmethod + def from_dict(d): + return IPOListing( + announced_date=d.get("announced_date"), + currency_code=d.get("currency_code"), + final_issue_price=d.get("final_issue_price"), + highest_offer_price=d.get("highest_offer_price"), + ipo_status=d.get("ipo_status"), + isin=d.get("isin"), + issuer_name=d.get("issuer_name"), + last_updated=d.get("last_updated"), + listing_date=d.get("listing_date"), + lot_size=d.get("lot_size"), + lowest_offer_price=d.get("lowest_offer_price"), + max_shares_offered=d.get("max_shares_offered"), + min_shares_offered=d.get("min_shares_offered"), + primary_exchange=d.get("primary_exchange"), + security_description=d.get("security_description"), + security_type=d.get("security_type"), + shares_outstanding=d.get("shares_outstanding"), + ticker=d.get("ticker"), + total_offer_size=d.get("total_offer_size"), + us_code=d.get("us_code"), + ) diff --git a/polygon/rest/vX.py b/polygon/rest/vX.py index a7c13a2f..228134d4 100644 --- a/polygon/rest/vX.py +++ b/polygon/rest/vX.py @@ -1,6 +1,6 @@ from .base import BaseClient -from typing import Optional, Any, Dict, Union, Iterator -from .models import StockFinancial, Timeframe, Sort, Order +from typing import Optional, Any, Dict, List, Union, Iterator +from .models import StockFinancial, IPOListing, Timeframe, Sort, Order from urllib3 import HTTPResponse from datetime import datetime, date @@ -70,3 +70,44 @@ def list_stock_financials( deserializer=StockFinancial.from_dict, options=options, ) + + def list_ipos( + self, + ticker: Optional[str] = None, + us_code: Optional[str] = None, + isin: Optional[str] = None, + listing_date: Optional[str] = None, + ipo_status: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + order: Optional[Union[str, Order]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[List[IPOListing], HTTPResponse]: + """ + Retrieve upcoming or historical IPOs. + + :param ticker: Filter by a case-sensitive ticker symbol. + :param us_code: Filter by a US code (unique identifier for a North American financial security). + :param isin: Filter by an International Securities Identification Number (ISIN). + :param listing_date: Filter by the listing date (YYYY-MM-DD). + :param ipo_status: Filter by IPO status (e.g. "new", "pending", "history", etc.). + :param limit: Limit the number of results per page. Default 10, max 1000. + :param sort: Field to sort by. Default is "listing_date". + :param order: Order results based on the sort field ("asc" or "desc"). Default "desc". + :param params: Additional query params. + :param raw: Return raw HTTPResponse object if True, else return List[IPOListing]. + :param options: RequestOptionBuilder for additional headers or params. + :return: A list of IPOListing objects or HTTPResponse if raw=True. + """ + url = "/vX/reference/ipos" + + return self._paginate( + path=url, + params=self._get_params(self.list_ipos, locals()), + deserializer=IPOListing.from_dict, + raw=raw, + result_key="results", + options=options, + ) From bbf0b29b7ab9cc207f89fa94f36ba7facbb6f504 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Thu, 9 Jan 2025 08:03:02 -0800 Subject: [PATCH 80/88] Update StockFinancial model (net income, EPS, and parent net income loss) (#817) * Update StockFinancial model (net income, EPS, and parent net income loss) * Fix test * Patch json to remove other_than_fixed_noncurrent_assets * Removed top level values to match spec * Updated StockFinancial to remove nested values * Update comment * Remove vX experimental test * Refactored to use typed classes and explicit fields rather than raw dictionaries. * Fix lint --- examples/rest/stocks-stock_financials.py | 9 +- polygon/rest/models/financials.py | 721 ++++++++++++------- test_rest/mocks/vX/reference/financials.json | 6 - test_rest/test_financials.py | 234 ------ 4 files changed, 456 insertions(+), 514 deletions(-) delete mode 100644 test_rest/test_financials.py diff --git a/examples/rest/stocks-stock_financials.py b/examples/rest/stocks-stock_financials.py index dc356494..a75087e7 100644 --- a/examples/rest/stocks-stock_financials.py +++ b/examples/rest/stocks-stock_financials.py @@ -8,6 +8,13 @@ client = RESTClient() # POLYGON_API_KEY environment variable is used financials = [] -for f in client.vx.list_stock_financials("AAPL"): +for f in client.vx.list_stock_financials("AAPL", filing_date="2024-11-01"): financials.append(f) + + # get diluted_earnings_per_share + # print(f.financials.income_statement.diluted_earnings_per_share) + + # get net_income_loss + # print(f.financials.income_statement.net_income_loss) + print(financials) diff --git a/polygon/rest/models/financials.py b/polygon/rest/models/financials.py index 1a480c48..5443e4f6 100644 --- a/polygon/rest/models/financials.py +++ b/polygon/rest/models/financials.py @@ -1,328 +1,503 @@ -from typing import Optional, Dict +from dataclasses import dataclass +from typing import Any, Dict, List, Optional from ...modelclass import modelclass @modelclass +@dataclass class DataPoint: - "An individual financial data point." - formula: Optional[str] = None - label: Optional[str] = None - order: Optional[int] = None - unit: Optional[str] = None - value: Optional[float] = None - xpath: Optional[str] = None + """Represents a single numeric or textual data point in the financials.""" - @staticmethod - def from_dict(d): - return DataPoint(**d) - - -@modelclass -class ExchangeGainsLosses: - "Contains exchange gains losses data for a cash flow statement." - formula: Optional[str] = None label: Optional[str] = None order: Optional[int] = None unit: Optional[str] = None value: Optional[float] = None - xpath: Optional[str] = None - - @staticmethod - def from_dict(d): - return ExchangeGainsLosses(**d) - - -@modelclass -class NetCashFlow: - "Contains net cash flow data for a cash flow statement." + derived_from: Optional[List[str]] = None formula: Optional[str] = None - label: Optional[str] = None - order: Optional[int] = None - unit: Optional[str] = None - value: Optional[float] = None + source: Optional[Dict[str, str]] = None xpath: Optional[str] = None @staticmethod - def from_dict(d): - return NetCashFlow(**d) + def from_dict(d: Optional[Dict[str, Any]]) -> "DataPoint": + if not d: + return DataPoint() + return DataPoint( + label=d.get("label"), + order=d.get("order"), + unit=d.get("unit"), + value=d.get("value"), + derived_from=d.get("derived_from"), + formula=d.get("formula"), + source=d.get("source"), + xpath=d.get("xpath"), + ) +@dataclass @modelclass -class NetCashFlowFromFinancingActivities: - "Contains net cash flow from financing activities data for a cash flow statement." - formula: Optional[str] = None - label: Optional[str] = None - order: Optional[int] = None - unit: Optional[str] = None - value: Optional[float] = None - xpath: Optional[str] = None +class BalanceSheet: + assets: Optional[DataPoint] = None + current_assets: Optional[DataPoint] = None + cash: Optional[DataPoint] = None + accounts_receivable: Optional[DataPoint] = None + inventory: Optional[DataPoint] = None + prepaid_expenses: Optional[DataPoint] = None + other_current_assets: Optional[DataPoint] = None + noncurrent_assets: Optional[DataPoint] = None + long_term_investments: Optional[DataPoint] = None + fixed_assets: Optional[DataPoint] = None + intangible_assets: Optional[DataPoint] = None + noncurrent_prepaid_expense: Optional[DataPoint] = None + other_noncurrent_assets: Optional[DataPoint] = None + liabilities: Optional[DataPoint] = None + current_liabilities: Optional[DataPoint] = None + accounts_payable: Optional[DataPoint] = None + interest_payable: Optional[DataPoint] = None + wages: Optional[DataPoint] = None + other_current_liabilities: Optional[DataPoint] = None + noncurrent_liabilities: Optional[DataPoint] = None + long_term_debt: Optional[DataPoint] = None + other_noncurrent_liabilities: Optional[DataPoint] = None + commitments_and_contingencies: Optional[DataPoint] = None + redeemable_noncontrolling_interest: Optional[DataPoint] = None + redeemable_noncontrolling_interest_common: Optional[DataPoint] = None + redeemable_noncontrolling_interest_other: Optional[DataPoint] = None + redeemable_noncontrolling_interest_preferred: Optional[DataPoint] = None + equity: Optional[DataPoint] = None + equity_attributable_to_noncontrolling_interest: Optional[DataPoint] = None + equity_attributable_to_parent: Optional[DataPoint] = None + temporary_equity: Optional[DataPoint] = None + temporary_equity_attributable_to_parent: Optional[DataPoint] = None + liabilities_and_equity: Optional[DataPoint] = None @staticmethod - def from_dict(d): - return NetCashFlowFromFinancingActivities(**d) + def from_dict(d: Optional[Dict[str, Any]]) -> "BalanceSheet": + if not d: + return BalanceSheet() + return BalanceSheet( + assets=DataPoint.from_dict(d.get("assets")), + current_assets=DataPoint.from_dict(d.get("current_assets")), + cash=DataPoint.from_dict(d.get("cash")), + accounts_receivable=DataPoint.from_dict(d.get("accounts_receivable")), + inventory=DataPoint.from_dict(d.get("inventory")), + prepaid_expenses=DataPoint.from_dict(d.get("prepaid_expenses")), + other_current_assets=DataPoint.from_dict(d.get("other_current_assets")), + noncurrent_assets=DataPoint.from_dict(d.get("noncurrent_assets")), + long_term_investments=DataPoint.from_dict(d.get("long_term_investments")), + fixed_assets=DataPoint.from_dict(d.get("fixed_assets")), + intangible_assets=DataPoint.from_dict(d.get("intangible_assets")), + noncurrent_prepaid_expense=DataPoint.from_dict( + d.get("noncurrent_prepaid_expense") + ), + other_noncurrent_assets=DataPoint.from_dict( + d.get("other_noncurrent_assets") + ), + liabilities=DataPoint.from_dict(d.get("liabilities")), + current_liabilities=DataPoint.from_dict(d.get("current_liabilities")), + accounts_payable=DataPoint.from_dict(d.get("accounts_payable")), + interest_payable=DataPoint.from_dict(d.get("interest_payable")), + wages=DataPoint.from_dict(d.get("wages")), + other_current_liabilities=DataPoint.from_dict( + d.get("other_current_liabilities") + ), + noncurrent_liabilities=DataPoint.from_dict(d.get("noncurrent_liabilities")), + long_term_debt=DataPoint.from_dict(d.get("long_term_debt")), + other_noncurrent_liabilities=DataPoint.from_dict( + d.get("other_noncurrent_liabilities") + ), + commitments_and_contingencies=DataPoint.from_dict( + d.get("commitments_and_contingencies") + ), + redeemable_noncontrolling_interest=DataPoint.from_dict( + d.get("redeemable_noncontrolling_interest") + ), + redeemable_noncontrolling_interest_common=DataPoint.from_dict( + d.get("redeemable_noncontrolling_interest_common") + ), + redeemable_noncontrolling_interest_other=DataPoint.from_dict( + d.get("redeemable_noncontrolling_interest_other") + ), + redeemable_noncontrolling_interest_preferred=DataPoint.from_dict( + d.get("redeemable_noncontrolling_interest_preferred") + ), + equity=DataPoint.from_dict(d.get("equity")), + equity_attributable_to_noncontrolling_interest=DataPoint.from_dict( + d.get("equity_attributable_to_noncontrolling_interest") + ), + equity_attributable_to_parent=DataPoint.from_dict( + d.get("equity_attributable_to_parent") + ), + temporary_equity=DataPoint.from_dict(d.get("temporary_equity")), + temporary_equity_attributable_to_parent=DataPoint.from_dict( + d.get("temporary_equity_attributable_to_parent") + ), + liabilities_and_equity=DataPoint.from_dict(d.get("liabilities_and_equity")), + ) +@dataclass @modelclass class CashFlowStatement: - "Contains cash flow statement data." - exchange_gains_losses: Optional[ExchangeGainsLosses] = None - net_cash_flow: Optional[NetCashFlow] = None - net_cash_flow_from_financing_activities: Optional[ - NetCashFlowFromFinancingActivities - ] = None + net_cash_flow_from_operating_activities: Optional[DataPoint] = None + net_cash_flow_from_operating_activities_continuing: Optional[DataPoint] = None + net_cash_flow_from_operating_activities_discontinued: Optional[DataPoint] = None + net_cash_flow_from_investing_activities: Optional[DataPoint] = None + net_cash_flow_from_investing_activities_continuing: Optional[DataPoint] = None + net_cash_flow_from_investing_activities_discontinued: Optional[DataPoint] = None + net_cash_flow_from_financing_activities: Optional[DataPoint] = None + net_cash_flow_from_financing_activities_continuing: Optional[DataPoint] = None + net_cash_flow_from_financing_activities_discontinued: Optional[DataPoint] = None + exchange_gains_losses: Optional[DataPoint] = None + net_cash_flow: Optional[DataPoint] = None + net_cash_flow_continuing: Optional[DataPoint] = None + net_cash_flow_discontinued: Optional[DataPoint] = None @staticmethod - def from_dict(d): + def from_dict(d: Optional[Dict[str, Any]]) -> "CashFlowStatement": + if not d: + return CashFlowStatement() return CashFlowStatement( - exchange_gains_losses=( - None - if "exchange_gains_losses" not in d - else ExchangeGainsLosses.from_dict(d["exchange_gains_losses"]) - ), - net_cash_flow=( - None - if "net_cash_flow" not in d - else NetCashFlow.from_dict(d["net_cash_flow"]) - ), - net_cash_flow_from_financing_activities=( - None - if "net_cash_flow_from_financing_activities" not in d - else NetCashFlowFromFinancingActivities.from_dict( - d["net_cash_flow_from_financing_activities"] - ) + net_cash_flow_from_operating_activities=DataPoint.from_dict( + d.get("net_cash_flow_from_operating_activities") + ), + net_cash_flow_from_operating_activities_continuing=DataPoint.from_dict( + d.get("net_cash_flow_from_operating_activities_continuing") + ), + net_cash_flow_from_operating_activities_discontinued=DataPoint.from_dict( + d.get("net_cash_flow_from_operating_activities_discontinued") + ), + net_cash_flow_from_investing_activities=DataPoint.from_dict( + d.get("net_cash_flow_from_investing_activities") + ), + net_cash_flow_from_investing_activities_continuing=DataPoint.from_dict( + d.get("net_cash_flow_from_investing_activities_continuing") + ), + net_cash_flow_from_investing_activities_discontinued=DataPoint.from_dict( + d.get("net_cash_flow_from_investing_activities_discontinued") + ), + net_cash_flow_from_financing_activities=DataPoint.from_dict( + d.get("net_cash_flow_from_financing_activities") + ), + net_cash_flow_from_financing_activities_continuing=DataPoint.from_dict( + d.get("net_cash_flow_from_financing_activities_continuing") + ), + net_cash_flow_from_financing_activities_discontinued=DataPoint.from_dict( + d.get("net_cash_flow_from_financing_activities_discontinued") + ), + exchange_gains_losses=DataPoint.from_dict(d.get("exchange_gains_losses")), + net_cash_flow=DataPoint.from_dict(d.get("net_cash_flow")), + net_cash_flow_continuing=DataPoint.from_dict( + d.get("net_cash_flow_continuing") + ), + net_cash_flow_discontinued=DataPoint.from_dict( + d.get("net_cash_flow_discontinued") ), ) -@modelclass -class ComprehensiveIncomeLoss: - "Contains comprehensive income loss data for comprehensive income." - formula: Optional[str] = None - label: Optional[str] = None - order: Optional[int] = None - unit: Optional[str] = None - value: Optional[float] = None - xpath: Optional[str] = None - - @staticmethod - def from_dict(d): - return ComprehensiveIncomeLoss(**d) - - -@modelclass -class ComprehensiveIncomeLossAttributableToParent: - "Contains comprehensive income loss attributable to parent data for comprehensive income." - formula: Optional[str] = None - label: Optional[str] = None - order: Optional[int] = None - unit: Optional[str] = None - value: Optional[float] = None - xpath: Optional[str] = None - - @staticmethod - def from_dict(d): - return ComprehensiveIncomeLossAttributableToParent(**d) - - -@modelclass -class OtherComprehensiveIncomeLoss: - "Contains other comprehensive income loss data for comprehensive income." - formula: Optional[str] = None - label: Optional[str] = None - order: Optional[int] = None - unit: Optional[str] = None - value: Optional[float] = None - xpath: Optional[str] = None - - @staticmethod - def from_dict(d): - return OtherComprehensiveIncomeLoss(**d) - - +@dataclass @modelclass class ComprehensiveIncome: - "Contains comprehensive income data." - comprehensive_income_loss: Optional[ComprehensiveIncomeLoss] = None - comprehensive_income_loss_attributable_to_parent: Optional[ - ComprehensiveIncomeLossAttributableToParent + comprehensive_income_loss: Optional[DataPoint] = None + comprehensive_income_loss_attributable_to_noncontrolling_interest: Optional[ + DataPoint + ] = None + comprehensive_income_loss_attributable_to_parent: Optional[DataPoint] = None + other_comprehensive_income_loss: Optional[DataPoint] = None + other_comprehensive_income_loss_attributable_to_noncontrolling_interest: Optional[ + DataPoint ] = None - other_comprehensive_income_loss: Optional[OtherComprehensiveIncomeLoss] = None + other_comprehensive_income_loss_attributable_to_parent: Optional[DataPoint] = None @staticmethod - def from_dict(d): + def from_dict(d: Optional[Dict[str, Any]]) -> "ComprehensiveIncome": + if not d: + return ComprehensiveIncome() return ComprehensiveIncome( - comprehensive_income_loss=( - None - if "comprehensive_income_loss" not in d - else ComprehensiveIncomeLoss.from_dict(d["comprehensive_income_loss"]) - ), - comprehensive_income_loss_attributable_to_parent=( - None - if "comprehensive_income_loss_attributable_to_parent" not in d - else ComprehensiveIncomeLossAttributableToParent.from_dict( - d["comprehensive_income_loss_attributable_to_parent"] + comprehensive_income_loss=DataPoint.from_dict( + d.get("comprehensive_income_loss") + ), + comprehensive_income_loss_attributable_to_noncontrolling_interest=DataPoint.from_dict( + d.get( + "comprehensive_income_loss_attributable_to_noncontrolling_interest" ) ), - other_comprehensive_income_loss=( - None - if "other_comprehensive_income_loss" not in d - else OtherComprehensiveIncomeLoss.from_dict( - d["other_comprehensive_income_loss"] + comprehensive_income_loss_attributable_to_parent=DataPoint.from_dict( + d.get("comprehensive_income_loss_attributable_to_parent") + ), + other_comprehensive_income_loss=DataPoint.from_dict( + d.get("other_comprehensive_income_loss") + ), + other_comprehensive_income_loss_attributable_to_noncontrolling_interest=DataPoint.from_dict( + d.get( + "other_comprehensive_income_loss_attributable_to_noncontrolling_interest" ) ), + other_comprehensive_income_loss_attributable_to_parent=DataPoint.from_dict( + d.get("other_comprehensive_income_loss_attributable_to_parent") + ), ) -@modelclass -class BasicEarningsPerShare: - "Contains basic earning per share data for an income statement." - formula: Optional[str] = None - label: Optional[str] = None - order: Optional[int] = None - unit: Optional[str] = None - value: Optional[float] = None - xpath: Optional[str] = None - - @staticmethod - def from_dict(d): - return BasicEarningsPerShare(**d) - - -@modelclass -class CostOfRevenue: - "Contains cost of revenue data for an income statement." - formula: Optional[str] = None - label: Optional[str] = None - order: Optional[int] = None - unit: Optional[str] = None - value: Optional[float] = None - xpath: Optional[str] = None - - @staticmethod - def from_dict(d): - return CostOfRevenue(**d) - - -@modelclass -class GrossProfit: - "Contains gross profit data for an income statement." - formula: Optional[str] = None - label: Optional[str] = None - order: Optional[int] = None - unit: Optional[str] = None - value: Optional[float] = None - xpath: Optional[str] = None - - @staticmethod - def from_dict(d): - return GrossProfit(**d) - - -@modelclass -class OperatingExpenses: - "Contains operating expenses data for an income statement." - formula: Optional[str] = None - label: Optional[str] = None - order: Optional[int] = None - unit: Optional[str] = None - value: Optional[float] = None - xpath: Optional[str] = None - - @staticmethod - def from_dict(d): - return OperatingExpenses(**d) - - -@modelclass -class Revenues: - "Contains revenues data for an income statement." - formula: Optional[str] = None - label: Optional[str] = None - order: Optional[int] = None - unit: Optional[str] = None - value: Optional[float] = None - xpath: Optional[str] = None - - @staticmethod - def from_dict(d): - return Revenues(**d) - - +@dataclass @modelclass class IncomeStatement: - "Contains income statement data." - basic_earnings_per_share: Optional[BasicEarningsPerShare] = None - cost_of_revenue: Optional[CostOfRevenue] = None - gross_profit: Optional[GrossProfit] = None - operating_expenses: Optional[OperatingExpenses] = None - revenues: Optional[Revenues] = None + revenues: Optional[DataPoint] = None + benefits_costs_expenses: Optional[DataPoint] = None + cost_of_revenue: Optional[DataPoint] = None + cost_of_revenue_goods: Optional[DataPoint] = None + cost_of_revenue_services: Optional[DataPoint] = None + costs_and_expenses: Optional[DataPoint] = None + gross_profit: Optional[DataPoint] = None + gain_loss_on_sale_properties_net_tax: Optional[DataPoint] = None + nonoperating_income_loss: Optional[DataPoint] = None + operating_expenses: Optional[DataPoint] = None + selling_general_and_administrative_expenses: Optional[DataPoint] = None + depreciation_and_amortization: Optional[DataPoint] = None + research_and_development: Optional[DataPoint] = None + other_operating_expenses: Optional[DataPoint] = None + operating_income_loss: Optional[DataPoint] = None + other_operating_income_expenses: Optional[DataPoint] = None + income_loss_before_equity_method_investments: Optional[DataPoint] = None + income_loss_from_continuing_operations_after_tax: Optional[DataPoint] = None + income_loss_from_continuing_operations_before_tax: Optional[DataPoint] = None + income_loss_from_discontinued_operations_net_of_tax: Optional[DataPoint] = None + income_loss_from_discontinued_operations_net_of_tax_adjustment_to_prior_year_gain_loss_on_disposal: Optional[ + DataPoint + ] = None + income_loss_from_discontinued_operations_net_of_tax_during_phase_out: Optional[ + DataPoint + ] = None + income_loss_from_discontinued_operations_net_of_tax_gain_loss_on_disposal: Optional[ + DataPoint + ] = None + income_loss_from_discontinued_operations_net_of_tax_provision_for_gain_loss_on_disposal: Optional[ + DataPoint + ] = None + income_loss_from_equity_method_investments: Optional[DataPoint] = None + income_tax_expense_benefit: Optional[DataPoint] = None + income_tax_expense_benefit_current: Optional[DataPoint] = None + income_tax_expense_benefit_deferred: Optional[DataPoint] = None + interest_and_debt_expense: Optional[DataPoint] = None + interest_and_dividend_income_operating: Optional[DataPoint] = None + interest_expense_operating: Optional[DataPoint] = None + interest_income_expense_after_provision_for_losses: Optional[DataPoint] = None + interest_income_expense_operating_net: Optional[DataPoint] = None + noninterest_expense: Optional[DataPoint] = None + noninterest_income: Optional[DataPoint] = None + provision_for_loan_lease_and_other_losses: Optional[DataPoint] = None + net_income_loss: Optional[DataPoint] = None + net_income_loss_attributable_to_noncontrolling_interest: Optional[DataPoint] = None + net_income_loss_attributable_to_nonredeemable_noncontrolling_interest: Optional[ + DataPoint + ] = None + net_income_loss_attributable_to_parent: Optional[DataPoint] = None + net_income_loss_attributable_to_redeemable_noncontrolling_interest: Optional[ + DataPoint + ] = None + net_income_loss_available_to_common_stockholders_basic: Optional[DataPoint] = None + participating_securities_distributed_and_undistributed_earnings_loss_basic: ( + Optional[DataPoint] + ) = (None) + undistributed_earnings_loss_allocated_to_participating_securities_basic: Optional[ + DataPoint + ] = None + preferred_stock_dividends_and_other_adjustments: Optional[DataPoint] = None + basic_earnings_per_share: Optional[DataPoint] = None + diluted_earnings_per_share: Optional[DataPoint] = None + basic_average_shares: Optional[DataPoint] = None + diluted_average_shares: Optional[DataPoint] = None + common_stock_dividends: Optional[DataPoint] = None @staticmethod - def from_dict(d): + def from_dict(d: Optional[Dict[str, Any]]) -> "IncomeStatement": + if not d: + return IncomeStatement() return IncomeStatement( - basic_earnings_per_share=( - None - if "basic_earnings_per_share" not in d - else BasicEarningsPerShare.from_dict(d["basic_earnings_per_share"]) - ), - cost_of_revenue=( - None - if "cost_of_revenue" not in d - else CostOfRevenue.from_dict(d["cost_of_revenue"]) - ), - gross_profit=( - None - if "gross_profit" not in d - else GrossProfit.from_dict(d["gross_profit"]) - ), - operating_expenses=( - None - if "operating_expenses" not in d - else OperatingExpenses.from_dict(d["operating_expenses"]) - ), - revenues=None if "revenues" not in d else Revenues.from_dict(d["revenues"]), + revenues=DataPoint.from_dict(d.get("revenues")), + benefits_costs_expenses=DataPoint.from_dict( + d.get("benefits_costs_expenses") + ), + cost_of_revenue=DataPoint.from_dict(d.get("cost_of_revenue")), + cost_of_revenue_goods=DataPoint.from_dict(d.get("cost_of_revenue_goods")), + cost_of_revenue_services=DataPoint.from_dict( + d.get("cost_of_revenue_services") + ), + costs_and_expenses=DataPoint.from_dict(d.get("costs_and_expenses")), + gross_profit=DataPoint.from_dict(d.get("gross_profit")), + gain_loss_on_sale_properties_net_tax=DataPoint.from_dict( + d.get("gain_loss_on_sale_properties_net_tax") + ), + nonoperating_income_loss=DataPoint.from_dict( + d.get("nonoperating_income_loss") + ), + operating_expenses=DataPoint.from_dict(d.get("operating_expenses")), + selling_general_and_administrative_expenses=DataPoint.from_dict( + d.get("selling_general_and_administrative_expenses") + ), + depreciation_and_amortization=DataPoint.from_dict( + d.get("depreciation_and_amortization") + ), + research_and_development=DataPoint.from_dict( + d.get("research_and_development") + ), + other_operating_expenses=DataPoint.from_dict( + d.get("other_operating_expenses") + ), + operating_income_loss=DataPoint.from_dict(d.get("operating_income_loss")), + other_operating_income_expenses=DataPoint.from_dict( + d.get("other_operating_income_expenses") + ), + income_loss_before_equity_method_investments=DataPoint.from_dict( + d.get("income_loss_before_equity_method_investments") + ), + income_loss_from_continuing_operations_after_tax=DataPoint.from_dict( + d.get("income_loss_from_continuing_operations_after_tax") + ), + income_loss_from_continuing_operations_before_tax=DataPoint.from_dict( + d.get("income_loss_from_continuing_operations_before_tax") + ), + income_loss_from_discontinued_operations_net_of_tax=DataPoint.from_dict( + d.get("income_loss_from_discontinued_operations_net_of_tax") + ), + income_loss_from_discontinued_operations_net_of_tax_adjustment_to_prior_year_gain_loss_on_disposal=DataPoint.from_dict( + d.get( + "income_loss_from_discontinued_operations_net_of_tax_adjustment_to_prior_year_gain_loss_on_disposal" + ) + ), + income_loss_from_discontinued_operations_net_of_tax_during_phase_out=DataPoint.from_dict( + d.get( + "income_loss_from_discontinued_operations_net_of_tax_during_phase_out" + ) + ), + income_loss_from_discontinued_operations_net_of_tax_gain_loss_on_disposal=DataPoint.from_dict( + d.get( + "income_loss_from_discontinued_operations_net_of_tax_gain_loss_on_disposal" + ) + ), + income_loss_from_discontinued_operations_net_of_tax_provision_for_gain_loss_on_disposal=DataPoint.from_dict( + d.get( + "income_loss_from_discontinued_operations_net_of_tax_provision_for_gain_loss_on_disposal" + ) + ), + income_loss_from_equity_method_investments=DataPoint.from_dict( + d.get("income_loss_from_equity_method_investments") + ), + income_tax_expense_benefit=DataPoint.from_dict( + d.get("income_tax_expense_benefit") + ), + income_tax_expense_benefit_current=DataPoint.from_dict( + d.get("income_tax_expense_benefit_current") + ), + income_tax_expense_benefit_deferred=DataPoint.from_dict( + d.get("income_tax_expense_benefit_deferred") + ), + interest_and_debt_expense=DataPoint.from_dict( + d.get("interest_and_debt_expense") + ), + interest_and_dividend_income_operating=DataPoint.from_dict( + d.get("interest_and_dividend_income_operating") + ), + interest_expense_operating=DataPoint.from_dict( + d.get("interest_expense_operating") + ), + interest_income_expense_after_provision_for_losses=DataPoint.from_dict( + d.get("interest_income_expense_after_provision_for_losses") + ), + interest_income_expense_operating_net=DataPoint.from_dict( + d.get("interest_income_expense_operating_net") + ), + noninterest_expense=DataPoint.from_dict(d.get("noninterest_expense")), + noninterest_income=DataPoint.from_dict(d.get("noninterest_income")), + provision_for_loan_lease_and_other_losses=DataPoint.from_dict( + d.get("provision_for_loan_lease_and_other_losses") + ), + net_income_loss=DataPoint.from_dict(d.get("net_income_loss")), + net_income_loss_attributable_to_noncontrolling_interest=DataPoint.from_dict( + d.get("net_income_loss_attributable_to_noncontrolling_interest") + ), + net_income_loss_attributable_to_nonredeemable_noncontrolling_interest=DataPoint.from_dict( + d.get( + "net_income_loss_attributable_to_nonredeemable_noncontrolling_interest" + ) + ), + net_income_loss_attributable_to_parent=DataPoint.from_dict( + d.get("net_income_loss_attributable_to_parent") + ), + net_income_loss_attributable_to_redeemable_noncontrolling_interest=DataPoint.from_dict( + d.get( + "net_income_loss_attributable_to_redeemable_noncontrolling_interest" + ) + ), + net_income_loss_available_to_common_stockholders_basic=DataPoint.from_dict( + d.get("net_income_loss_available_to_common_stockholders_basic") + ), + participating_securities_distributed_and_undistributed_earnings_loss_basic=DataPoint.from_dict( + d.get( + "participating_securities_distributed_and_undistributed_earnings_loss_basic" + ) + ), + undistributed_earnings_loss_allocated_to_participating_securities_basic=DataPoint.from_dict( + d.get( + "undistributed_earnings_loss_allocated_to_participating_securities_basic" + ) + ), + preferred_stock_dividends_and_other_adjustments=DataPoint.from_dict( + d.get("preferred_stock_dividends_and_other_adjustments") + ), + basic_earnings_per_share=DataPoint.from_dict( + d.get("basic_earnings_per_share") + ), + diluted_earnings_per_share=DataPoint.from_dict( + d.get("diluted_earnings_per_share") + ), + basic_average_shares=DataPoint.from_dict(d.get("basic_average_shares")), + diluted_average_shares=DataPoint.from_dict(d.get("diluted_average_shares")), + common_stock_dividends=DataPoint.from_dict(d.get("common_stock_dividends")), ) +@dataclass @modelclass class Financials: - "Contains financial data." - balance_sheet: Optional[Dict[str, DataPoint]] = None + """ + Contains data for: + - balance_sheet (BalanceSheet) + - cash_flow_statement (CashFlowStatement) + - comprehensive_income (ComprehensiveIncome) + - income_statement (IncomeStatement) + """ + + balance_sheet: Optional[BalanceSheet] = None cash_flow_statement: Optional[CashFlowStatement] = None comprehensive_income: Optional[ComprehensiveIncome] = None income_statement: Optional[IncomeStatement] = None @staticmethod - def from_dict(d): + def from_dict(d: Optional[Dict[str, Any]]) -> "Financials": + if not d: + return Financials() return Financials( - balance_sheet=( - None - if "balance_sheet" not in d - else { - k: DataPoint.from_dict(v) for (k, v) in d["balance_sheet"].items() - } - ), - cash_flow_statement=( - None - if "cash_flow_statement" not in d - else CashFlowStatement.from_dict(d["cash_flow_statement"]) - ), - comprehensive_income=( - None - if "comprehensive_income" not in d - else ComprehensiveIncome.from_dict(d["comprehensive_income"]) - ), - income_statement=( - None - if "income_statement" not in d - else IncomeStatement.from_dict(d["income_statement"]) + balance_sheet=BalanceSheet.from_dict(d.get("balance_sheet")), + cash_flow_statement=CashFlowStatement.from_dict( + d.get("cash_flow_statement") + ), + comprehensive_income=ComprehensiveIncome.from_dict( + d.get("comprehensive_income") ), + income_statement=IncomeStatement.from_dict(d.get("income_statement")), ) +@dataclass @modelclass class StockFinancial: - "StockFinancial contains historical financial data for a stock ticker." + """ + StockFinancial contains historical financial data for a stock ticker. + The 'financials' attribute references an instance of Financials + which has typed sub-statements. + """ + cik: Optional[str] = None company_name: Optional[str] = None end_date: Optional[str] = None @@ -335,18 +510,18 @@ class StockFinancial: start_date: Optional[str] = None @staticmethod - def from_dict(d): + def from_dict(d: Optional[Dict[str, Any]]) -> "StockFinancial": + if not d: + return StockFinancial() return StockFinancial( - cik=d.get("cik", None), - company_name=d.get("company_name", None), - end_date=d.get("end_date", None), - filing_date=d.get("filing_date", None), - financials=( - None if "financials" not in d else Financials.from_dict(d["financials"]) - ), - fiscal_period=d.get("fiscal_period", None), - fiscal_year=d.get("fiscal_year", None), - source_filing_file_url=d.get("source_filing_file_url", None), - source_filing_url=d.get("source_filing_url", None), - start_date=d.get("start_date", None), + cik=d.get("cik"), + company_name=d.get("company_name"), + end_date=d.get("end_date"), + filing_date=d.get("filing_date"), + financials=Financials.from_dict(d.get("financials", {})), + fiscal_period=d.get("fiscal_period"), + fiscal_year=d.get("fiscal_year"), + source_filing_file_url=d.get("source_filing_file_url"), + source_filing_url=d.get("source_filing_url"), + start_date=d.get("start_date"), ) diff --git a/test_rest/mocks/vX/reference/financials.json b/test_rest/mocks/vX/reference/financials.json index c5e18621..ae84513b 100644 --- a/test_rest/mocks/vX/reference/financials.json +++ b/test_rest/mocks/vX/reference/financials.json @@ -45,12 +45,6 @@ "unit": "USD", "order": 400 }, - "other_than_fixed_noncurrent_assets": { - "label": "Other Than Fixed Noncurrent Assets", - "value": 1.6046e+10, - "unit": "USD", - "order": 500 - }, "noncurrent_liabilities": { "label": "Noncurrent Liabilities", "value": 1.1716e+10, diff --git a/test_rest/test_financials.py b/test_rest/test_financials.py deleted file mode 100644 index f5196212..00000000 --- a/test_rest/test_financials.py +++ /dev/null @@ -1,234 +0,0 @@ -from polygon.rest.models import ( - StockFinancial, - Financials, - DataPoint, - CashFlowStatement, - ExchangeGainsLosses, - NetCashFlow, - NetCashFlowFromFinancingActivities, - ComprehensiveIncome, - ComprehensiveIncomeLoss, - ComprehensiveIncomeLossAttributableToParent, - OtherComprehensiveIncomeLoss, - IncomeStatement, - BasicEarningsPerShare, - CostOfRevenue, - GrossProfit, - OperatingExpenses, - Revenues, -) -from base import BaseTest - - -class FinancialsTest(BaseTest): - def test_list_stock_financials(self): - financials = [f for f in self.c.vx.list_stock_financials()] - expected = [ - StockFinancial( - cik="0001413447", - company_name="NXP Semiconductors N.V.", - end_date="2022-04-03", - filing_date="2022-05-03", - financials=Financials( - balance_sheet={ - "equity_attributable_to_noncontrolling_interest": DataPoint( - formula=None, - label="Equity Attributable To Noncontrolling Interest", - order=1500, - unit="USD", - value=251000000.0, - xpath=None, - ), - "liabilities": DataPoint( - formula=None, - label="Liabilities", - order=600, - unit="USD", - value=14561000000.0, - xpath=None, - ), - "equity_attributable_to_parent": DataPoint( - formula=None, - label="Equity Attributable To Parent", - order=1600, - unit="USD", - value=6509000000.0, - xpath=None, - ), - "noncurrent_assets": DataPoint( - formula=None, - label="Noncurrent Assets", - order=300, - unit="USD", - value=16046000000.0, - xpath=None, - ), - "liabilities_and_equity": DataPoint( - formula=None, - label="Liabilities And Equity", - order=1900, - unit="USD", - value=21321000000.0, - xpath=None, - ), - "assets": DataPoint( - formula=None, - label="Assets", - order=100, - unit="USD", - value=21321000000.0, - xpath=None, - ), - "fixed_assets": DataPoint( - formula=None, - label="Fixed Assets", - order=400, - unit="USD", - value=2814000000.0, - xpath=None, - ), - "other_than_fixed_noncurrent_assets": DataPoint( - formula=None, - label="Other Than Fixed Noncurrent Assets", - order=500, - unit="USD", - value=16046000000.0, - xpath=None, - ), - "noncurrent_liabilities": DataPoint( - formula=None, - label="Noncurrent Liabilities", - order=800, - unit="USD", - value=11716000000.0, - xpath=None, - ), - "current_assets": DataPoint( - formula=None, - label="Current Assets", - order=200, - unit="USD", - value=5275000000.0, - xpath=None, - ), - "equity": DataPoint( - formula=None, - label="Equity", - order=1400, - unit="USD", - value=6760000000.0, - xpath=None, - ), - "current_liabilities": DataPoint( - formula=None, - label="Current Liabilities", - order=700, - unit="USD", - value=2845000000.0, - xpath=None, - ), - }, - cash_flow_statement=CashFlowStatement( - exchange_gains_losses=ExchangeGainsLosses( - formula=None, - label="Exchange Gains/Losses", - order=1000, - unit="USD", - value=0, - xpath=None, - ), - net_cash_flow=NetCashFlow( - formula=None, - label="Net Cash Flow", - order=1100, - unit="USD", - value=-147000000.0, - xpath=None, - ), - net_cash_flow_from_financing_activities=NetCashFlowFromFinancingActivities( - formula=None, - label="Net Cash Flow From Financing Activities", - order=700, - unit="USD", - value=-674000000.0, - xpath=None, - ), - ), - comprehensive_income=ComprehensiveIncome( - comprehensive_income_loss=ComprehensiveIncomeLoss( - formula=None, - label="Comprehensive Income/Loss", - order=100, - unit="USD", - value=644000000.0, - xpath=None, - ), - comprehensive_income_loss_attributable_to_parent=ComprehensiveIncomeLossAttributableToParent( - formula=None, - label="Comprehensive Income/Loss Attributable To Parent", - order=300, - unit="USD", - value=635000000.0, - xpath=None, - ), - other_comprehensive_income_loss=OtherComprehensiveIncomeLoss( - formula=None, - label="Other Comprehensive Income/Loss", - order=400, - unit="USD", - value=-22000000.0, - xpath=None, - ), - ), - income_statement=IncomeStatement( - basic_earnings_per_share=BasicEarningsPerShare( - formula=None, - label="Basic Earnings Per Share", - order=4200, - unit="USD / shares", - value=2.5, - xpath=None, - ), - cost_of_revenue=CostOfRevenue( - formula=None, - label="Cost Of Revenue", - order=300, - unit="USD", - value=1359000000.0, - xpath=None, - ), - gross_profit=GrossProfit( - formula=None, - label="Gross Profit", - order=800, - unit="USD", - value=1777000000.0, - xpath=None, - ), - operating_expenses=OperatingExpenses( - formula=None, - label="Operating Expenses", - order=1000, - unit="USD", - value=904000000.0, - xpath=None, - ), - revenues=Revenues( - formula=None, - label="Revenues", - order=100, - unit="USD", - value=3136000000.0, - xpath=None, - ), - ), - ), - fiscal_period="Q1", - fiscal_year="2022", - source_filing_file_url="https://api.polygon.io/v1/reference/sec/filings/0001413447-22-000014/files/nxpi-20220403_htm.xml", - source_filing_url="https://api.polygon.io/v1/reference/sec/filings/0001413447-22-000014", - start_date="2022-01-01", - ) - ] - - self.assertEqual(financials, expected) From bd9d53033800b5faf5a01034428e8c458fcd3e2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 07:57:46 -0800 Subject: [PATCH 81/88] Bump types-setuptools from 75.6.0.20241223 to 75.8.0.20250110 (#832) Bumps [types-setuptools](https://github.com/python/typeshed) from 75.6.0.20241223 to 75.8.0.20250110. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-setuptools dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index 59cdd317..1d16b476 100644 --- a/poetry.lock +++ b/poetry.lock @@ -835,13 +835,13 @@ files = [ [[package]] name = "types-setuptools" -version = "75.6.0.20241223" +version = "75.8.0.20250110" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" files = [ - {file = "types_setuptools-75.6.0.20241223-py3-none-any.whl", hash = "sha256:7cbfd3bf2944f88bbcdd321b86ddd878232a277be95d44c78a53585d78ebc2f6"}, - {file = "types_setuptools-75.6.0.20241223.tar.gz", hash = "sha256:d9478a985057ed48a994c707f548e55aababa85fe1c9b212f43ab5a1fffd3211"}, + {file = "types_setuptools-75.8.0.20250110-py3-none-any.whl", hash = "sha256:a9f12980bbf9bcdc23ecd80755789085bad6bfce4060c2275bc2b4ca9f2bc480"}, + {file = "types_setuptools-75.8.0.20250110.tar.gz", hash = "sha256:96f7ec8bbd6e0a54ea180d66ad68ad7a1d7954e7281a710ea2de75e355545271"}, ] [[package]] @@ -1007,4 +1007,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "183ba57707ae02b4b27fc68f294181edf9f15d33bd3c24dcfb58c9fdc4e3e93a" +content-hash = "130d59d914473d618400749c700f19b082b5fe2d42ee47bb79bf97b8fa177445" diff --git a/pyproject.toml b/pyproject.toml index 83794997..922d4804 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ sphinx-rtd-theme = "^3.0.2" # keep this in sync with docs/requirements.txt for readthedocs.org sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" -types-setuptools = "^75.6.0" +types-setuptools = "^75.8.0" pook = "^2.0.1" orjson = "^3.10.13" From cbabb9ef70ecb43fe56e4958e53dba643ebe250b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 08:14:22 -0800 Subject: [PATCH 82/88] Bump orjson from 3.10.13 to 3.10.15 (#836) Bumps [orjson](https://github.com/ijl/orjson) from 3.10.13 to 3.10.15. - [Release notes](https://github.com/ijl/orjson/releases) - [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md) - [Commits](https://github.com/ijl/orjson/compare/3.10.13...3.10.15) --- updated-dependencies: - dependency-name: orjson dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 158 +++++++++++++++++++++++++------------------------ pyproject.toml | 2 +- 2 files changed, 82 insertions(+), 78 deletions(-) diff --git a/poetry.lock b/poetry.lock index 1d16b476..8627e329 100644 --- a/poetry.lock +++ b/poetry.lock @@ -390,86 +390,90 @@ six = ">=1.8.0" [[package]] name = "orjson" -version = "3.10.13" +version = "3.10.15" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.13-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1232c5e873a4d1638ef957c5564b4b0d6f2a6ab9e207a9b3de9de05a09d1d920"}, - {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d26a0eca3035619fa366cbaf49af704c7cb1d4a0e6c79eced9f6a3f2437964b6"}, - {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d4b6acd7c9c829895e50d385a357d4b8c3fafc19c5989da2bae11783b0fd4977"}, - {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1884e53c6818686891cc6fc5a3a2540f2f35e8c76eac8dc3b40480fb59660b00"}, - {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a428afb5720f12892f64920acd2eeb4d996595bf168a26dd9190115dbf1130d"}, - {file = "orjson-3.10.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba5b13b8739ce5b630c65cb1c85aedbd257bcc2b9c256b06ab2605209af75a2e"}, - {file = "orjson-3.10.13-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cab83e67f6aabda1b45882254b2598b48b80ecc112968fc6483fa6dae609e9f0"}, - {file = "orjson-3.10.13-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:62c3cc00c7e776c71c6b7b9c48c5d2701d4c04e7d1d7cdee3572998ee6dc57cc"}, - {file = "orjson-3.10.13-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:dc03db4922e75bbc870b03fc49734cefbd50fe975e0878327d200022210b82d8"}, - {file = "orjson-3.10.13-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:22f1c9a30b43d14a041a6ea190d9eca8a6b80c4beb0e8b67602c82d30d6eec3e"}, - {file = "orjson-3.10.13-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b42f56821c29e697c68d7d421410d7c1d8f064ae288b525af6a50cf99a4b1200"}, - {file = "orjson-3.10.13-cp310-cp310-win32.whl", hash = "sha256:0dbf3b97e52e093d7c3e93eb5eb5b31dc7535b33c2ad56872c83f0160f943487"}, - {file = "orjson-3.10.13-cp310-cp310-win_amd64.whl", hash = "sha256:46c249b4e934453be4ff2e518cd1adcd90467da7391c7a79eaf2fbb79c51e8c7"}, - {file = "orjson-3.10.13-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a36c0d48d2f084c800763473020a12976996f1109e2fcb66cfea442fdf88047f"}, - {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0065896f85d9497990731dfd4a9991a45b0a524baec42ef0a63c34630ee26fd6"}, - {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:92b4ec30d6025a9dcdfe0df77063cbce238c08d0404471ed7a79f309364a3d19"}, - {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a94542d12271c30044dadad1125ee060e7a2048b6c7034e432e116077e1d13d2"}, - {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3723e137772639af8adb68230f2aa4bcb27c48b3335b1b1e2d49328fed5e244c"}, - {file = "orjson-3.10.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f00c7fb18843bad2ac42dc1ce6dd214a083c53f1e324a0fd1c8137c6436269b"}, - {file = "orjson-3.10.13-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0e2759d3172300b2f892dee85500b22fca5ac49e0c42cfff101aaf9c12ac9617"}, - {file = "orjson-3.10.13-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ee948c6c01f6b337589c88f8e0bb11e78d32a15848b8b53d3f3b6fea48842c12"}, - {file = "orjson-3.10.13-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:aa6fe68f0981fba0d4bf9cdc666d297a7cdba0f1b380dcd075a9a3dd5649a69e"}, - {file = "orjson-3.10.13-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dbcd7aad6bcff258f6896abfbc177d54d9b18149c4c561114f47ebfe74ae6bfd"}, - {file = "orjson-3.10.13-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2149e2fcd084c3fd584881c7f9d7f9e5ad1e2e006609d8b80649655e0d52cd02"}, - {file = "orjson-3.10.13-cp311-cp311-win32.whl", hash = "sha256:89367767ed27b33c25c026696507c76e3d01958406f51d3a2239fe9e91959df2"}, - {file = "orjson-3.10.13-cp311-cp311-win_amd64.whl", hash = "sha256:dca1d20f1af0daff511f6e26a27354a424f0b5cf00e04280279316df0f604a6f"}, - {file = "orjson-3.10.13-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:a3614b00621c77f3f6487792238f9ed1dd8a42f2ec0e6540ee34c2d4e6db813a"}, - {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c976bad3996aa027cd3aef78aa57873f3c959b6c38719de9724b71bdc7bd14b"}, - {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f74d878d1efb97a930b8a9f9898890067707d683eb5c7e20730030ecb3fb930"}, - {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:33ef84f7e9513fb13b3999c2a64b9ca9c8143f3da9722fbf9c9ce51ce0d8076e"}, - {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd2bcde107221bb9c2fa0c4aaba735a537225104173d7e19cf73f70b3126c993"}, - {file = "orjson-3.10.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:064b9dbb0217fd64a8d016a8929f2fae6f3312d55ab3036b00b1d17399ab2f3e"}, - {file = "orjson-3.10.13-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0044b0b8c85a565e7c3ce0a72acc5d35cda60793edf871ed94711e712cb637d"}, - {file = "orjson-3.10.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7184f608ad563032e398f311910bc536e62b9fbdca2041be889afcbc39500de8"}, - {file = "orjson-3.10.13-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d36f689e7e1b9b6fb39dbdebc16a6f07cbe994d3644fb1c22953020fc575935f"}, - {file = "orjson-3.10.13-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:54433e421618cd5873e51c0e9d0b9fb35f7bf76eb31c8eab20b3595bb713cd3d"}, - {file = "orjson-3.10.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e1ba0c5857dd743438acecc1cd0e1adf83f0a81fee558e32b2b36f89e40cee8b"}, - {file = "orjson-3.10.13-cp312-cp312-win32.whl", hash = "sha256:a42b9fe4b0114b51eb5cdf9887d8c94447bc59df6dbb9c5884434eab947888d8"}, - {file = "orjson-3.10.13-cp312-cp312-win_amd64.whl", hash = "sha256:3a7df63076435f39ec024bdfeb4c9767ebe7b49abc4949068d61cf4857fa6d6c"}, - {file = "orjson-3.10.13-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2cdaf8b028a976ebab837a2c27b82810f7fc76ed9fb243755ba650cc83d07730"}, - {file = "orjson-3.10.13-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48a946796e390cbb803e069472de37f192b7a80f4ac82e16d6eb9909d9e39d56"}, - {file = "orjson-3.10.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7d64f1db5ecbc21eb83097e5236d6ab7e86092c1cd4c216c02533332951afc"}, - {file = "orjson-3.10.13-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:711878da48f89df194edd2ba603ad42e7afed74abcd2bac164685e7ec15f96de"}, - {file = "orjson-3.10.13-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:cf16f06cb77ce8baf844bc222dbcb03838f61d0abda2c3341400c2b7604e436e"}, - {file = "orjson-3.10.13-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8257c3fb8dd7b0b446b5e87bf85a28e4071ac50f8c04b6ce2d38cb4abd7dff57"}, - {file = "orjson-3.10.13-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d9c3a87abe6f849a4a7ac8a8a1dede6320a4303d5304006b90da7a3cd2b70d2c"}, - {file = "orjson-3.10.13-cp313-cp313-win32.whl", hash = "sha256:527afb6ddb0fa3fe02f5d9fba4920d9d95da58917826a9be93e0242da8abe94a"}, - {file = "orjson-3.10.13-cp313-cp313-win_amd64.whl", hash = "sha256:b5f7c298d4b935b222f52d6c7f2ba5eafb59d690d9a3840b7b5c5cda97f6ec5c"}, - {file = "orjson-3.10.13-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e49333d1038bc03a25fdfe11c86360df9b890354bfe04215f1f54d030f33c342"}, - {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:003721c72930dbb973f25c5d8e68d0f023d6ed138b14830cc94e57c6805a2eab"}, - {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:63664bf12addb318dc8f032160e0f5dc17eb8471c93601e8f5e0d07f95003784"}, - {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6066729cf9552d70de297b56556d14b4f49c8f638803ee3c90fd212fa43cc6af"}, - {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8a1152e2761025c5d13b5e1908d4b1c57f3797ba662e485ae6f26e4e0c466388"}, - {file = "orjson-3.10.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69b21d91c5c5ef8a201036d207b1adf3aa596b930b6ca3c71484dd11386cf6c3"}, - {file = "orjson-3.10.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b12a63f48bb53dba8453d36ca2661f2330126d54e26c1661e550b32864b28ce3"}, - {file = "orjson-3.10.13-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:a5a7624ab4d121c7e035708c8dd1f99c15ff155b69a1c0affc4d9d8b551281ba"}, - {file = "orjson-3.10.13-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:0fee076134398d4e6cb827002468679ad402b22269510cf228301b787fdff5ae"}, - {file = "orjson-3.10.13-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ae537fcf330b3947e82c6ae4271e092e6cf16b9bc2cef68b14ffd0df1fa8832a"}, - {file = "orjson-3.10.13-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f81b26c03f5fb5f0d0ee48d83cea4d7bc5e67e420d209cc1a990f5d1c62f9be0"}, - {file = "orjson-3.10.13-cp38-cp38-win32.whl", hash = "sha256:0bc858086088b39dc622bc8219e73d3f246fb2bce70a6104abd04b3a080a66a8"}, - {file = "orjson-3.10.13-cp38-cp38-win_amd64.whl", hash = "sha256:3ca6f17467ebbd763f8862f1d89384a5051b461bb0e41074f583a0ebd7120e8e"}, - {file = "orjson-3.10.13-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4a11532cbfc2f5752c37e84863ef8435b68b0e6d459b329933294f65fa4bda1a"}, - {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c96d2fb80467d1d0dfc4d037b4e1c0f84f1fe6229aa7fea3f070083acef7f3d7"}, - {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dda4ba4d3e6f6c53b6b9c35266788053b61656a716a7fef5c884629c2a52e7aa"}, - {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4f998bbf300690be881772ee9c5281eb9c0044e295bcd4722504f5b5c6092ff"}, - {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1cc42ed75b585c0c4dc5eb53a90a34ccb493c09a10750d1a1f9b9eff2bd12"}, - {file = "orjson-3.10.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03b0f29d485411e3c13d79604b740b14e4e5fb58811743f6f4f9693ee6480a8f"}, - {file = "orjson-3.10.13-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:233aae4474078d82f425134bb6a10fb2b3fc5a1a1b3420c6463ddd1b6a97eda8"}, - {file = "orjson-3.10.13-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e384e330a67cf52b3597ee2646de63407da6f8fc9e9beec3eaaaef5514c7a1c9"}, - {file = "orjson-3.10.13-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4222881d0aab76224d7b003a8e5fdae4082e32c86768e0e8652de8afd6c4e2c1"}, - {file = "orjson-3.10.13-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e400436950ba42110a20c50c80dff4946c8e3ec09abc1c9cf5473467e83fd1c5"}, - {file = "orjson-3.10.13-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f47c9e7d224b86ffb086059cdcf634f4b3f32480f9838864aa09022fe2617ce2"}, - {file = "orjson-3.10.13-cp39-cp39-win32.whl", hash = "sha256:a9ecea472f3eb653e1c0a3d68085f031f18fc501ea392b98dcca3e87c24f9ebe"}, - {file = "orjson-3.10.13-cp39-cp39-win_amd64.whl", hash = "sha256:5385935a73adce85cc7faac9d396683fd813566d3857fa95a0b521ef84a5b588"}, - {file = "orjson-3.10.13.tar.gz", hash = "sha256:eb9bfb14ab8f68d9d9492d4817ae497788a15fd7da72e14dfabc289c3bb088ec"}, + {file = "orjson-3.10.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:552c883d03ad185f720d0c09583ebde257e41b9521b74ff40e08b7dec4559c04"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616e3e8d438d02e4854f70bfdc03a6bcdb697358dbaa6bcd19cbe24d24ece1f8"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c2c79fa308e6edb0ffab0a31fd75a7841bf2a79a20ef08a3c6e3b26814c8ca8"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cb85490aa6bf98abd20607ab5c8324c0acb48d6da7863a51be48505646c814"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763dadac05e4e9d2bc14938a45a2d0560549561287d41c465d3c58aec818b164"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a330b9b4734f09a623f74a7490db713695e13b67c959713b78369f26b3dee6bf"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a61a4622b7ff861f019974f73d8165be1bd9a0855e1cad18ee167acacabeb061"}, + {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:acd271247691574416b3228db667b84775c497b245fa275c6ab90dc1ffbbd2b3"}, + {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:e4759b109c37f635aa5c5cc93a1b26927bfde24b254bcc0e1149a9fada253d2d"}, + {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9e992fd5cfb8b9f00bfad2fd7a05a4299db2bbe92e6440d9dd2fab27655b3182"}, + {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f95fb363d79366af56c3f26b71df40b9a583b07bbaaf5b317407c4d58497852e"}, + {file = "orjson-3.10.15-cp310-cp310-win32.whl", hash = "sha256:f9875f5fea7492da8ec2444839dcc439b0ef298978f311103d0b7dfd775898ab"}, + {file = "orjson-3.10.15-cp310-cp310-win_amd64.whl", hash = "sha256:17085a6aa91e1cd70ca8533989a18b5433e15d29c574582f76f821737c8d5806"}, + {file = "orjson-3.10.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c4cc83960ab79a4031f3119cc4b1a1c627a3dc09df125b27c4201dff2af7eaa6"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ddbeef2481d895ab8be5185f2432c334d6dec1f5d1933a9c83014d188e102cef"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9e590a0477b23ecd5b0ac865b1b907b01b3c5535f5e8a8f6ab0e503efb896334"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6be38bd103d2fd9bdfa31c2720b23b5d47c6796bcb1d1b598e3924441b4298d"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ff4f6edb1578960ed628a3b998fa54d78d9bb3e2eb2cfc5c2a09732431c678d0"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0482b21d0462eddd67e7fce10b89e0b6ac56570424662b685a0d6fccf581e13"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bb5cc3527036ae3d98b65e37b7986a918955f85332c1ee07f9d3f82f3a6899b5"}, + {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d569c1c462912acdd119ccbf719cf7102ea2c67dd03b99edcb1a3048651ac96b"}, + {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:1e6d33efab6b71d67f22bf2962895d3dc6f82a6273a965fab762e64fa90dc399"}, + {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c33be3795e299f565681d69852ac8c1bc5c84863c0b0030b2b3468843be90388"}, + {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:eea80037b9fae5339b214f59308ef0589fc06dc870578b7cce6d71eb2096764c"}, + {file = "orjson-3.10.15-cp311-cp311-win32.whl", hash = "sha256:d5ac11b659fd798228a7adba3e37c010e0152b78b1982897020a8e019a94882e"}, + {file = "orjson-3.10.15-cp311-cp311-win_amd64.whl", hash = "sha256:cf45e0214c593660339ef63e875f32ddd5aa3b4adc15e662cdb80dc49e194f8e"}, + {file = "orjson-3.10.15-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9d11c0714fc85bfcf36ada1179400862da3288fc785c30e8297844c867d7505a"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dba5a1e85d554e3897fa9fe6fbcff2ed32d55008973ec9a2b992bd9a65d2352d"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7723ad949a0ea502df656948ddd8b392780a5beaa4c3b5f97e525191b102fff0"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6fd9bc64421e9fe9bd88039e7ce8e58d4fead67ca88e3a4014b143cec7684fd4"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dadba0e7b6594216c214ef7894c4bd5f08d7c0135f4dd0145600be4fbcc16767"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b48f59114fe318f33bbaee8ebeda696d8ccc94c9e90bc27dbe72153094e26f41"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:035fb83585e0f15e076759b6fedaf0abb460d1765b6a36f48018a52858443514"}, + {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d13b7fe322d75bf84464b075eafd8e7dd9eae05649aa2a5354cfa32f43c59f17"}, + {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7066b74f9f259849629e0d04db6609db4cf5b973248f455ba5d3bd58a4daaa5b"}, + {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88dc3f65a026bd3175eb157fea994fca6ac7c4c8579fc5a86fc2114ad05705b7"}, + {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b342567e5465bd99faa559507fe45e33fc76b9fb868a63f1642c6bc0735ad02a"}, + {file = "orjson-3.10.15-cp312-cp312-win32.whl", hash = "sha256:0a4f27ea5617828e6b58922fdbec67b0aa4bb844e2d363b9244c47fa2180e665"}, + {file = "orjson-3.10.15-cp312-cp312-win_amd64.whl", hash = "sha256:ef5b87e7aa9545ddadd2309efe6824bd3dd64ac101c15dae0f2f597911d46eaa"}, + {file = "orjson-3.10.15-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:bae0e6ec2b7ba6895198cd981b7cca95d1487d0147c8ed751e5632ad16f031a6"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f93ce145b2db1252dd86af37d4165b6faa83072b46e3995ecc95d4b2301b725a"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c203f6f969210128af3acae0ef9ea6aab9782939f45f6fe02d05958fe761ef9"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8918719572d662e18b8af66aef699d8c21072e54b6c82a3f8f6404c1f5ccd5e0"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f71eae9651465dff70aa80db92586ad5b92df46a9373ee55252109bb6b703307"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e117eb299a35f2634e25ed120c37c641398826c2f5a3d3cc39f5993b96171b9e"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:13242f12d295e83c2955756a574ddd6741c81e5b99f2bef8ed8d53e47a01e4b7"}, + {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7946922ada8f3e0b7b958cc3eb22cfcf6c0df83d1fe5521b4a100103e3fa84c8"}, + {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:b7155eb1623347f0f22c38c9abdd738b287e39b9982e1da227503387b81b34ca"}, + {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:208beedfa807c922da4e81061dafa9c8489c6328934ca2a562efa707e049e561"}, + {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eca81f83b1b8c07449e1d6ff7074e82e3fd6777e588f1a6632127f286a968825"}, + {file = "orjson-3.10.15-cp313-cp313-win32.whl", hash = "sha256:c03cd6eea1bd3b949d0d007c8d57049aa2b39bd49f58b4b2af571a5d3833d890"}, + {file = "orjson-3.10.15-cp313-cp313-win_amd64.whl", hash = "sha256:fd56a26a04f6ba5fb2045b0acc487a63162a958ed837648c5781e1fe3316cfbf"}, + {file = "orjson-3.10.15-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5e8afd6200e12771467a1a44e5ad780614b86abb4b11862ec54861a82d677746"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da9a18c500f19273e9e104cca8c1f0b40a6470bcccfc33afcc088045d0bf5ea6"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb00b7bfbdf5d34a13180e4805d76b4567025da19a197645ca746fc2fb536586"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:33aedc3d903378e257047fee506f11e0833146ca3e57a1a1fb0ddb789876c1e1"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd0099ae6aed5eb1fc84c9eb72b95505a3df4267e6962eb93cdd5af03be71c98"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c864a80a2d467d7786274fce0e4f93ef2a7ca4ff31f7fc5634225aaa4e9e98c"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c25774c9e88a3e0013d7d1a6c8056926b607a61edd423b50eb5c88fd7f2823ae"}, + {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e78c211d0074e783d824ce7bb85bf459f93a233eb67a5b5003498232ddfb0e8a"}, + {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:43e17289ffdbbac8f39243916c893d2ae41a2ea1a9cbb060a56a4d75286351ae"}, + {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:781d54657063f361e89714293c095f506c533582ee40a426cb6489c48a637b81"}, + {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6875210307d36c94873f553786a808af2788e362bd0cf4c8e66d976791e7b528"}, + {file = "orjson-3.10.15-cp38-cp38-win32.whl", hash = "sha256:305b38b2b8f8083cc3d618927d7f424349afce5975b316d33075ef0f73576b60"}, + {file = "orjson-3.10.15-cp38-cp38-win_amd64.whl", hash = "sha256:5dd9ef1639878cc3efffed349543cbf9372bdbd79f478615a1c633fe4e4180d1"}, + {file = "orjson-3.10.15-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ffe19f3e8d68111e8644d4f4e267a069ca427926855582ff01fc012496d19969"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d433bf32a363823863a96561a555227c18a522a8217a6f9400f00ddc70139ae2"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:da03392674f59a95d03fa5fb9fe3a160b0511ad84b7a3914699ea5a1b3a38da2"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3a63bb41559b05360ded9132032239e47983a39b151af1201f07ec9370715c82"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3766ac4702f8f795ff3fa067968e806b4344af257011858cc3d6d8721588b53f"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a1c73dcc8fadbd7c55802d9aa093b36878d34a3b3222c41052ce6b0fc65f8e8"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b299383825eafe642cbab34be762ccff9fd3408d72726a6b2a4506d410a71ab3"}, + {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:abc7abecdbf67a173ef1316036ebbf54ce400ef2300b4e26a7b843bd446c2480"}, + {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:3614ea508d522a621384c1d6639016a5a2e4f027f3e4a1c93a51867615d28829"}, + {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:295c70f9dc154307777ba30fe29ff15c1bcc9dfc5c48632f37d20a607e9ba85a"}, + {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:63309e3ff924c62404923c80b9e2048c1f74ba4b615e7584584389ada50ed428"}, + {file = "orjson-3.10.15-cp39-cp39-win32.whl", hash = "sha256:a2f708c62d026fb5340788ba94a55c23df4e1869fec74be455e0b2f5363b8507"}, + {file = "orjson-3.10.15-cp39-cp39-win_amd64.whl", hash = "sha256:efcf6c735c3d22ef60c4aa27a5238f1a477df85e9b15f2142f9d669beb2d13fd"}, + {file = "orjson-3.10.15.tar.gz", hash = "sha256:05ca7fe452a2e9d8d9d706a2984c95b9c2ebc5db417ce0b7a49b91d50642a23e"}, ] [[package]] @@ -1007,4 +1011,4 @@ test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-it [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "130d59d914473d618400749c700f19b082b5fe2d42ee47bb79bf97b8fa177445" +content-hash = "c80bc058f0871dd694ea1761d3266a1d46d0265b19312868ccc7e5cf3dbe3244" diff --git a/pyproject.toml b/pyproject.toml index 922d4804..6dc126b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ sphinx-autodoc-typehints = "^2.0.1" types-certifi = "^2021.10.8" types-setuptools = "^75.8.0" pook = "^2.0.1" -orjson = "^3.10.13" +orjson = "^3.10.15" [build-system] requires = ["poetry-core>=1.0.0"] From 4f54c2c72885d2630cb55832d414bbe1904d3574 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 8 Feb 2025 11:23:37 -0800 Subject: [PATCH 83/88] Bump certifi from 2024.12.14 to 2025.1.31 (#843) Bumps [certifi](https://github.com/certifi/python-certifi) from 2024.12.14 to 2025.1.31. - [Commits](https://github.com/certifi/python-certifi/compare/2024.12.14...2025.01.31) --- updated-dependencies: - dependency-name: certifi dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8627e329..3709112e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -90,13 +90,13 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2024.12.14" +version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, - {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, ] [[package]] From a7c00b86bcf5b240dabf46e713a7577ba1630e67 Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Thu, 20 Feb 2025 14:50:31 -0800 Subject: [PATCH 84/88] Adds IEX business feed (#852) --- polygon/websocket/models/common.py | 1 + 1 file changed, 1 insertion(+) diff --git a/polygon/websocket/models/common.py b/polygon/websocket/models/common.py index b39f9f87..38aea4c4 100644 --- a/polygon/websocket/models/common.py +++ b/polygon/websocket/models/common.py @@ -11,6 +11,7 @@ class Feed(Enum): Launchpad = "launchpad.polygon.io" Business = "business.polygon.io" EdgxBusiness = "edgx-business.polygon.io" + IEXBusiness = "iex-business.polygon.io" DelayedBusiness = "delayed-business.polygon.io" DelayedEdgxBusiness = "delayed-edgx-business.polygon.io" DelayedNasdaqLastSaleBusiness = "delayed-nasdaq-last-sale-business.polygon.io" From 24eabb9e84b4a6cb9fadb5fa623437129b414a6f Mon Sep 17 00:00:00 2001 From: Hamir Mahal Date: Wed, 23 Apr 2025 11:11:25 -0700 Subject: [PATCH 85/88] fix: usage of deprecated `CodeQL Action` version (#873) * chore: changes from formatting on save * fix: usage of deprecated `CodeQL Action` version --- .github/workflows/codeql.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 313c2716..f0767d70 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -7,7 +7,7 @@ on: branches: - master schedule: - - cron: '33 12 * * 3' + - cron: "33 12 * * 3" jobs: analyze: name: analyze @@ -19,15 +19,15 @@ jobs: strategy: fail-fast: false matrix: - language: [ 'python' ] + language: ["python"] steps: - - name: Checkout repository - uses: actions/checkout@v3 - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + - name: Checkout repository + uses: actions/checkout@v3 + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + - name: Autobuild + uses: github/codeql-action/autobuild@v3 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 From 83b28f3ae0111f023c12887634ec39d5fa7fa713 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 11:19:35 -0700 Subject: [PATCH 86/88] Bump jinja2 from 3.1.5 to 3.1.6 (#874) Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.5 to 3.1.6. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/3.1.5...3.1.6) --- updated-dependencies: - dependency-name: jinja2 dependency-version: 3.1.6 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 83 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 70 insertions(+), 13 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3709112e..8a686894 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. [[package]] name = "alabaster" @@ -6,6 +6,7 @@ version = "0.7.12" description = "A configurable sidebar-enabled Sphinx theme" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, @@ -17,16 +18,17 @@ version = "22.1.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, ] [package.extras] -dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] +dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] -tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] -tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] +tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] +tests-no-zope = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] [[package]] name = "Babel" @@ -34,6 +36,7 @@ version = "2.11.0" description = "Internationalization utilities" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "Babel-2.11.0-py3-none-any.whl", hash = "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe"}, {file = "Babel-2.11.0.tar.gz", hash = "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"}, @@ -48,6 +51,7 @@ version = "24.8.0" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "black-24.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:09cdeb74d494ec023ded657f7092ba518e8cf78fa8386155e4a03fdcc44679e6"}, {file = "black-24.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:81c6742da39f33b08e791da38410f32e27d632260e599df7245cccee2064afeb"}, @@ -84,7 +88,7 @@ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] +d = ["aiohttp (>=3.7.4) ; sys_platform != \"win32\" or implementation_name != \"pypy\"", "aiohttp (>=3.7.4,!=3.9.0) ; sys_platform == \"win32\" and implementation_name == \"pypy\""] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] @@ -94,6 +98,7 @@ version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, @@ -105,6 +110,7 @@ version = "2.1.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.6.0" +groups = ["dev"] files = [ {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, @@ -119,6 +125,7 @@ version = "8.1.3" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, @@ -133,6 +140,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] +markers = "sys_platform == \"win32\" or platform_system == \"Windows\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -144,6 +153,7 @@ version = "0.18.1" description = "Docutils -- Python Documentation Utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["dev"] files = [ {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, @@ -155,6 +165,7 @@ version = "2.1.3" description = "URL manipulation made simple." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "furl-2.1.3-py2.py3-none-any.whl", hash = "sha256:9ab425062c4217f9802508e45feb4a83e54324273ac4b202f1850363309666c0"}, {file = "furl-2.1.3.tar.gz", hash = "sha256:5a6188fe2666c484a12159c18be97a1977a71d632ef5bb867ef15f54af39cc4e"}, @@ -170,6 +181,7 @@ version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, @@ -181,6 +193,7 @@ version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["dev"] files = [ {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, @@ -192,6 +205,8 @@ version = "5.1.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version < \"3.10\"" files = [ {file = "importlib_metadata-5.1.0-py3-none-any.whl", hash = "sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313"}, {file = "importlib_metadata-5.1.0.tar.gz", hash = "sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b"}, @@ -203,7 +218,7 @@ zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3) ; python_version < \"3.9\"", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7) ; platform_python_implementation != \"PyPy\"", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8 ; python_version < \"3.12\"", "pytest-mypy (>=0.9.1) ; platform_python_implementation != \"PyPy\"", "pytest-perf (>=0.9.2)"] [[package]] name = "importlib-resources" @@ -211,6 +226,8 @@ version = "5.10.0" description = "Read resources from Python packages" optional = false python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version < \"3.9\"" files = [ {file = "importlib_resources-5.10.0-py3-none-any.whl", hash = "sha256:ee17ec648f85480d523596ce49eae8ead87d5631ae1551f913c0100b5edd3437"}, {file = "importlib_resources-5.10.0.tar.gz", hash = "sha256:c01b1b94210d9849f286b86bb51bcea7cd56dde0600d8db721d7b81330711668"}, @@ -221,17 +238,18 @@ zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7) ; platform_python_implementation != \"PyPy\"", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1) ; platform_python_implementation != \"PyPy\""] [[package]] name = "jinja2" -version = "3.1.5" +version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, - {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, + {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, + {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, ] [package.dependencies] @@ -246,6 +264,7 @@ version = "4.17.1" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "jsonschema-4.17.1-py3-none-any.whl", hash = "sha256:410ef23dcdbca4eaedc08b850079179883c2ed09378bd1f760d4af4aacfa28d7"}, {file = "jsonschema-4.17.1.tar.gz", hash = "sha256:05b2d22c83640cde0b7e0aa329ca7754fbd98ea66ad8ae24aa61328dfe057fa3"}, @@ -267,6 +286,7 @@ version = "2.1.1" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, @@ -316,6 +336,7 @@ version = "1.13.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, @@ -369,6 +390,7 @@ version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, @@ -380,6 +402,7 @@ version = "1.0.1" description = "Ordered Multivalue Dictionary" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "orderedmultidict-1.0.1-py2.py3-none-any.whl", hash = "sha256:43c839a17ee3cdd62234c47deca1a8508a3f2ca1d0678a3bf791c87cf84adbf3"}, {file = "orderedmultidict-1.0.1.tar.gz", hash = "sha256:04070bbb5e87291cc9bfa51df413677faf2141c73c61d2a5f7b26bea3cd882ad"}, @@ -394,6 +417,7 @@ version = "3.10.15" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "orjson-3.10.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:552c883d03ad185f720d0c09583ebde257e41b9521b74ff40e08b7dec4559c04"}, {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616e3e8d438d02e4854f70bfdc03a6bcdb697358dbaa6bcd19cbe24d24ece1f8"}, @@ -482,6 +506,7 @@ version = "23.1" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, @@ -493,6 +518,7 @@ version = "0.10.2" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pathspec-0.10.2-py3-none-any.whl", hash = "sha256:88c2606f2c1e818b978540f73ecc908e13999c6c3a383daf3705652ae79807a5"}, {file = "pathspec-0.10.2.tar.gz", hash = "sha256:8f6bf73e5758fd365ef5d58ce09ac7c27d2833a8d7da51712eac6e27e35141b0"}, @@ -504,6 +530,8 @@ version = "1.3.10" description = "Resolve a name to an object." optional = false python-versions = ">=3.6" +groups = ["dev"] +markers = "python_version < \"3.9\"" files = [ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, @@ -515,6 +543,7 @@ version = "2.5.4" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "platformdirs-2.5.4-py3-none-any.whl", hash = "sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10"}, {file = "platformdirs-2.5.4.tar.gz", hash = "sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7"}, @@ -530,6 +559,7 @@ version = "2.0.1" description = "HTTP traffic mocking and expectations made easy" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pook-2.0.1-py3-none-any.whl", hash = "sha256:30d73c95e0520f45c1e3889f3bf486e990b6f04b4915aa9daf86cf0d8136b2e1"}, {file = "pook-2.0.1.tar.gz", hash = "sha256:e04c0e698f256438b4dfbf3ab1b27559f0ec25e42176823167f321f4e8b9c9e4"}, @@ -546,13 +576,14 @@ version = "2.15.0" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "Pygments-2.15.0-py3-none-any.whl", hash = "sha256:77a3299119af881904cd5ecd1ac6a66214b6e9bed1f2db16993b54adede64094"}, {file = "Pygments-2.15.0.tar.gz", hash = "sha256:f7e36cffc4c517fbc252861b9a6e4644ca0e5abadf9a113c72d1358ad09b9500"}, ] [package.extras] -plugins = ["importlib-metadata"] +plugins = ["importlib-metadata ; python_version < \"3.8\""] [[package]] name = "pyrsistent" @@ -560,6 +591,7 @@ version = "0.19.2" description = "Persistent/Functional/Immutable data structures" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pyrsistent-0.19.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a"}, {file = "pyrsistent-0.19.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a"}, @@ -591,6 +623,7 @@ version = "2022.6" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"}, {file = "pytz-2022.6.tar.gz", hash = "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"}, @@ -602,6 +635,7 @@ version = "2.32.0" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "requests-2.32.0-py3-none-any.whl", hash = "sha256:f2c3881dddb70d056c5bd7600a4fae312b2a300e39be6a118d30b90bd27262b5"}, {file = "requests-2.32.0.tar.gz", hash = "sha256:fa5490319474c82ef1d2c9bc459d3652e3ae4ef4c4ebdd18a21145a47ca4b6b8"}, @@ -623,6 +657,7 @@ version = "1.16.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +groups = ["dev"] files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, @@ -634,6 +669,7 @@ version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, @@ -645,6 +681,7 @@ version = "7.1.2" description = "Python documentation generator" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "sphinx-7.1.2-py3-none-any.whl", hash = "sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe"}, {file = "sphinx-7.1.2.tar.gz", hash = "sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f"}, @@ -680,6 +717,7 @@ version = "2.0.1" description = "Type hints (PEP 484) support for the Sphinx autodoc extension" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "sphinx_autodoc_typehints-2.0.1-py3-none-any.whl", hash = "sha256:f73ae89b43a799e587e39266672c1075b2ef783aeb382d3ebed77c38a3fc0149"}, {file = "sphinx_autodoc_typehints-2.0.1.tar.gz", hash = "sha256:60ed1e3b2c970acc0aa6e877be42d48029a9faec7378a17838716cacd8c10b12"}, @@ -699,6 +737,7 @@ version = "3.0.2" description = "Read the Docs theme for Sphinx" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "sphinx_rtd_theme-3.0.2-py2.py3-none-any.whl", hash = "sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13"}, {file = "sphinx_rtd_theme-3.0.2.tar.gz", hash = "sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85"}, @@ -718,6 +757,7 @@ version = "1.0.2" description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, @@ -733,6 +773,7 @@ version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, @@ -748,6 +789,7 @@ version = "2.0.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"}, {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"}, @@ -763,6 +805,7 @@ version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" optional = false python-versions = ">=2.7" +groups = ["dev"] files = [ {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, @@ -777,6 +820,7 @@ version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, @@ -791,6 +835,7 @@ version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, @@ -806,6 +851,7 @@ version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, @@ -821,6 +867,8 @@ version = "2.0.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, @@ -832,6 +880,7 @@ version = "2021.10.8.3" description = "Typing stubs for certifi" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "types-certifi-2021.10.8.3.tar.gz", hash = "sha256:72cf7798d165bc0b76e1c10dd1ea3097c7063c42c21d664523b928e88b554a4f"}, {file = "types_certifi-2021.10.8.3-py3-none-any.whl", hash = "sha256:b2d1e325e69f71f7c78e5943d410e650b4707bb0ef32e4ddf3da37f54176e88a"}, @@ -843,6 +892,7 @@ version = "75.8.0.20250110" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "types_setuptools-75.8.0.20250110-py3-none-any.whl", hash = "sha256:a9f12980bbf9bcdc23ecd80755789085bad6bfce4060c2275bc2b4ca9f2bc480"}, {file = "types_setuptools-75.8.0.20250110.tar.gz", hash = "sha256:96f7ec8bbd6e0a54ea180d66ad68ad7a1d7954e7281a710ea2de75e355545271"}, @@ -854,6 +904,7 @@ version = "1.26.25.14" description = "Typing stubs for urllib3" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, @@ -865,6 +916,7 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -876,13 +928,14 @@ version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -893,6 +946,7 @@ version = "13.1" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "websockets-13.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f48c749857f8fb598fb890a75f540e3221d0976ed0bf879cf3c7eef34151acee"}, {file = "websockets-13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7e72ce6bda6fb9409cc1e8164dd41d7c91466fb599eb047cfda72fe758a34a7"}, @@ -988,6 +1042,7 @@ version = "0.13.0" description = "Makes working with XML feel like you are working with JSON" optional = false python-versions = ">=3.4" +groups = ["dev"] files = [ {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, @@ -999,6 +1054,8 @@ version = "3.19.1" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version < \"3.10\"" files = [ {file = "zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091"}, {file = "zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f"}, @@ -1009,6 +1066,6 @@ doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linke test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = "^3.8" content-hash = "c80bc058f0871dd694ea1761d3266a1d46d0265b19312868ccc7e5cf3dbe3244" From 1cb16d382812eb402d2b6f6f3335bf0f59f1470c Mon Sep 17 00:00:00 2001 From: justinpolygon <123573436+justinpolygon@users.noreply.github.com> Date: Wed, 23 Apr 2025 15:45:25 -0700 Subject: [PATCH 87/88] Adds IPOs, Short Interest/Volume, and Treasury Yields (#875) * Adds IPOs, Short Interest/Volume, and Treasury Yields * Fix docs url --- examples/rest/economy-treasury_yields.py | 13 ++ examples/rest/stocks-ipos.py | 2 +- examples/rest/stocks-short_interest.py | 13 ++ examples/rest/stocks-short_volume.py | 13 ++ polygon/rest/models/tickers.py | 112 +++++++++++++- polygon/rest/vX.py | 183 ++++++++++++++++++++++- 6 files changed, 328 insertions(+), 8 deletions(-) create mode 100644 examples/rest/economy-treasury_yields.py create mode 100644 examples/rest/stocks-short_interest.py create mode 100644 examples/rest/stocks-short_volume.py diff --git a/examples/rest/economy-treasury_yields.py b/examples/rest/economy-treasury_yields.py new file mode 100644 index 00000000..011b1866 --- /dev/null +++ b/examples/rest/economy-treasury_yields.py @@ -0,0 +1,13 @@ +from polygon import RESTClient + +# docs +# https://polygon.io/docs/rest/economy/treasury-yields + +# client = RESTClient("XXXXXX") # hardcoded api_key is used +client = RESTClient() # POLYGON_API_KEY environment variable is used + +yields = [] +for date in client.vx.list_treasury_yields(): + yields.append(date) + +print(yields) diff --git a/examples/rest/stocks-ipos.py b/examples/rest/stocks-ipos.py index 54852335..cc09f61b 100644 --- a/examples/rest/stocks-ipos.py +++ b/examples/rest/stocks-ipos.py @@ -1,7 +1,7 @@ from polygon import RESTClient # docs -# https://polygon.io/docs/stocks/get_vx_reference_ipos +# https://polygon.io/docs/rest/stocks/corporate-actions/ipos # client = RESTClient("XXXXXX") # hardcoded api_key is used client = RESTClient() # POLYGON_API_KEY environment variable is used diff --git a/examples/rest/stocks-short_interest.py b/examples/rest/stocks-short_interest.py new file mode 100644 index 00000000..3b64cd2a --- /dev/null +++ b/examples/rest/stocks-short_interest.py @@ -0,0 +1,13 @@ +from polygon import RESTClient + +# docs +# https://polygon.io/docs/rest/stocks/fundamentals/short-interest + +# client = RESTClient("XXXXXX") # hardcoded api_key is used +client = RESTClient() # POLYGON_API_KEY environment variable is used + +items = [] +for item in client.vx.list_short_interest(ticker="RDDT"): + items.append(item) + +print(items) diff --git a/examples/rest/stocks-short_volume.py b/examples/rest/stocks-short_volume.py new file mode 100644 index 00000000..711bfd47 --- /dev/null +++ b/examples/rest/stocks-short_volume.py @@ -0,0 +1,13 @@ +from polygon import RESTClient + +# docs +# https://polygon.io/docs/rest/stocks/fundamentals/short-volume + +# client = RESTClient("XXXXXX") # hardcoded api_key is used +client = RESTClient() # POLYGON_API_KEY environment variable is used + +items = [] +for item in client.vx.list_short_volume(ticker="RDDT"): + items.append(item) + +print(items) diff --git a/polygon/rest/models/tickers.py b/polygon/rest/models/tickers.py index 317275ed..76cb6f6f 100644 --- a/polygon/rest/models/tickers.py +++ b/polygon/rest/models/tickers.py @@ -1,5 +1,4 @@ from typing import Optional, List - from ...modelclass import modelclass @@ -255,10 +254,6 @@ def from_dict(d): return TickerChangeResults(**d) -from typing import Optional -from ...modelclass import modelclass - - @modelclass class IPOListing: """ @@ -310,3 +305,110 @@ def from_dict(d): total_offer_size=d.get("total_offer_size"), us_code=d.get("us_code"), ) + + +@modelclass +class ShortInterest: + """ + Short Interest data for a specific identifier. + """ + + avg_daily_volume: Optional[int] = None + days_to_cover: Optional[float] = None + settlement_date: Optional[str] = None + short_interest: Optional[int] = None + ticker: Optional[str] = None + + @staticmethod + def from_dict(d): + return ShortInterest( + avg_daily_volume=d.get("avg_daily_volume"), + days_to_cover=d.get("days_to_cover"), + settlement_date=d.get("settlement_date"), + short_interest=d.get("short_interest"), + ticker=d.get("ticker"), + ) + + +@modelclass +class ShortVolume: + """ + Short Volume data for a specific identifier on a given date. + """ + + adf_short_volume: Optional[int] = None + adf_short_volume_exempt: Optional[int] = None + date: Optional[str] = None + exempt_volume: Optional[int] = None + nasdaq_carteret_short_volume: Optional[int] = None + nasdaq_carteret_short_volume_exempt: Optional[int] = None + nasdaq_chicago_short_volume: Optional[int] = None + nasdaq_chicago_short_volume_exempt: Optional[int] = None + non_exempt_volume: Optional[int] = None + nyse_short_volume: Optional[int] = None + nyse_short_volume_exempt: Optional[int] = None + short_volume: Optional[int] = None + short_volume_ratio: Optional[float] = None + ticker: Optional[str] = None + total_volume: Optional[int] = None + + @staticmethod + def from_dict(d): + return ShortVolume( + adf_short_volume=d.get("adf_short_volume"), + adf_short_volume_exempt=d.get("adf_short_volume_exempt"), + date=d.get("date"), + exempt_volume=d.get("exempt_volume"), + nasdaq_carteret_short_volume=d.get("nasdaq_carteret_short_volume"), + nasdaq_carteret_short_volume_exempt=d.get( + "nasdaq_carteret_short_volume_exempt" + ), + nasdaq_chicago_short_volume=d.get("nasdaq_chicago_short_volume"), + nasdaq_chicago_short_volume_exempt=d.get( + "nasdaq_chicago_short_volume_exempt" + ), + non_exempt_volume=d.get("non_exempt_volume"), + nyse_short_volume=d.get("nyse_short_volume"), + nyse_short_volume_exempt=d.get("nyse_short_volume_exempt"), + short_volume=d.get("short_volume"), + short_volume_ratio=d.get("short_volume_ratio"), + ticker=d.get("ticker"), + total_volume=d.get("total_volume"), + ) + + +@modelclass +class TreasuryYield: + """ + Treasury yield data for a specific date. + """ + + date: Optional[str] = None + yield_1_month: Optional[float] = None + yield_3_month: Optional[float] = None + yield_6_month: Optional[float] = None + yield_1_year: Optional[float] = None + yield_2_year: Optional[float] = None + yield_3_year: Optional[float] = None + yield_5_year: Optional[float] = None + yield_7_year: Optional[float] = None + yield_10_year: Optional[float] = None + yield_20_year: Optional[float] = None + yield_30_year: Optional[float] = None + + @staticmethod + def from_dict(d): + return TreasuryYield( + date=d.get("date"), + yield_1_month=d.get("yield_1_month"), + yield_3_month=d.get("yield_3_month"), + yield_6_month=d.get("yield_6_month"), + yield_1_year=d.get("yield_1_year"), + yield_2_year=d.get("yield_2_year"), + yield_3_year=d.get("yield_3_year"), + yield_5_year=d.get("yield_5_year"), + yield_7_year=d.get("yield_7_year"), + yield_10_year=d.get("yield_10_year"), + yield_20_year=d.get("yield_20_year"), + yield_30_year=d.get("yield_30_year"), + ) diff --git a/polygon/rest/vX.py b/polygon/rest/vX.py index 228134d4..23f0e94e 100644 --- a/polygon/rest/vX.py +++ b/polygon/rest/vX.py @@ -1,9 +1,17 @@ from .base import BaseClient from typing import Optional, Any, Dict, List, Union, Iterator -from .models import StockFinancial, IPOListing, Timeframe, Sort, Order +from .models import ( + StockFinancial, + IPOListing, + ShortInterest, + ShortVolume, + TreasuryYield, + Timeframe, + Sort, + Order, +) from urllib3 import HTTPResponse from datetime import datetime, date - from .models.request import RequestOptionBuilder @@ -77,6 +85,10 @@ def list_ipos( us_code: Optional[str] = None, isin: Optional[str] = None, listing_date: Optional[str] = None, + listing_date_lt: Optional[str] = None, + listing_date_lte: Optional[str] = None, + listing_date_gt: Optional[str] = None, + listing_date_gte: Optional[str] = None, ipo_status: Optional[str] = None, limit: Optional[int] = None, sort: Optional[Union[str, Sort]] = None, @@ -111,3 +123,170 @@ def list_ipos( result_key="results", options=options, ) + + def list_short_interest( + self, + ticker: Optional[str] = None, + days_to_cover: Optional[str] = None, + days_to_cover_lt: Optional[str] = None, + days_to_cover_lte: Optional[str] = None, + days_to_cover_gt: Optional[str] = None, + days_to_cover_gte: Optional[str] = None, + settlement_date: Optional[str] = None, + settlement_date_lt: Optional[str] = None, + settlement_date_lte: Optional[str] = None, + settlement_date_gt: Optional[str] = None, + settlement_date_gte: Optional[str] = None, + avg_daily_volume: Optional[str] = None, + avg_daily_volume_lt: Optional[str] = None, + avg_daily_volume_lte: Optional[str] = None, + avg_daily_volume_gt: Optional[str] = None, + avg_daily_volume_gte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + order: Optional[Union[str, Order]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[List[ShortInterest], HTTPResponse]: + """ + Retrieve short interest data for stocks. + + :param ticker: Filter by the primary ticker symbol. + :param days_to_cover: Filter by the days to cover value. + :param days_to_cover_lt: Filter for days to cover dates less than the provided date. + :param days_to_cover_lte: Filter for days to cover dates less than or equal to the provided date. + :param days_to_cover_gt: Filter for days to cover dates greater than the provided date. + :param days_to_cover_gte: Filter for days to cover dates greater than or equal to the provided date. + :param settlement_date: Filter by settlement date (YYYY-MM-DD). + :param settlement_date_lt: Filter for settlement dates less than the provided date. + :param settlement_date_lte: Filter for settlement dates less than or equal to the provided date. + :param settlement_date_gt: Filter for settlement dates greater than the provided date. + :param settlement_date_gte: Filter for settlement dates greater than or equal to the provided date. + :param avg_daily_volume: Filter by average daily volume. + :param avg_daily_volume_lt: Filter for average daily volume dates less than the provided date. + :param avg_daily_volume_lte: Filter for average daily volume dates less than or equal to the provided date. + :param avg_daily_volume_gt: Filter for average daily volume dates greater than the provided date. + :param avg_daily_volume_gte: Filter for average daily volume dates greater than or equal to the provided date. + :param limit: Limit the number of results returned. Default 10, max 50000. + :param sort: Field to sort by (e.g., "ticker"). + :param order: Order results based on the sort field ("asc" or "desc"). Default "desc". + :param params: Additional query parameters. + :param raw: Return raw HTTPResponse object if True, else return List[ShortInterest]. + :param options: RequestOptionBuilder for additional headers or params. + :return: A list of ShortInterest objects or HTTPResponse if raw=True. + """ + url = "/stocks/vX/short-interest" + + return self._paginate( + path=url, + params=self._get_params(self.list_short_interest, locals()), + deserializer=ShortInterest.from_dict, + raw=raw, + result_key="results", + options=options, + ) + + def list_short_volume( + self, + ticker: Optional[str] = None, + date: Optional[str] = None, + date_lt: Optional[str] = None, + date_lte: Optional[str] = None, + date_gt: Optional[str] = None, + date_gte: Optional[str] = None, + short_volume_ratio: Optional[str] = None, + short_volume_ratio_lt: Optional[str] = None, + short_volume_ratio_lte: Optional[str] = None, + short_volume_ratio_gt: Optional[str] = None, + short_volume_ratio_gte: Optional[str] = None, + total_volume: Optional[str] = None, + total_volume_lt: Optional[str] = None, + total_volume_lte: Optional[str] = None, + total_volume_gt: Optional[str] = None, + total_volume_gte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + order: Optional[Union[str, Order]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[List[ShortVolume], HTTPResponse]: + """ + Retrieve short volume data for stocks. + + :param ticker: Filter by the primary ticker symbol. + :param date: Filter by the date of trade activity (YYYY-MM-DD). + :param date_lt: Filter for dates less than the provided date. + :param date_lte: Filter for dates less than or equal to the provided date. + :param date_gt: Filter for dates greater than the provided date. + :param date_gte: Filter for dates greater than or equal to the provided date. + :param short_volume_ratio: Filter by short volume ratio. + :param short_volume_ratio_lt: Filter for short volume ratio less than the provided date. + :param short_volume_ratio_lte: Filter for short volume ratio less than or equal to the provided date. + :param short_volume_ratio_gt: Filter for short volume ratio greater than the provided date. + :param short_volume_ratio_gte: Filter for short volume ratio greater than or equal to the provided date. + :param total_volume: Filter by total volume. + :param total_volume_lt: Filter for total volume less than the provided date. + :param total_volume_lte: Filter for total volume less than or equal to the provided date. + :param total_volume_gt: Filter for total volume greater than the provided date. + :param total_volume_gte: Filter for total volume greater than or equal to the provided date. + :param limit: Limit the number of results returned. Default 10, max 50000. + :param sort: Field to sort by (e.g., "ticker"). + :param order: Order results based on the sort field ("asc" or "desc"). Default "desc". + :param params: Additional query parameters. + :param raw: Return raw HTTPResponse object if True, else return List[ShortVolume]. + :param options: RequestOptionBuilder for additional headers or params. + :return: A list of ShortVolume objects or HTTPResponse if raw=True. + """ + url = "/stocks/vX/short-volume" + + return self._paginate( + path=url, + params=self._get_params(self.list_short_volume, locals()), + deserializer=ShortVolume.from_dict, + raw=raw, + result_key="results", + options=options, + ) + + def list_treasury_yields( + self, + date: Optional[str] = None, + date_gt: Optional[str] = None, + date_gte: Optional[str] = None, + date_lt: Optional[str] = None, + date_lte: Optional[str] = None, + limit: Optional[int] = None, + sort: Optional[Union[str, Sort]] = None, + order: Optional[Union[str, Order]] = None, + params: Optional[Dict[str, Any]] = None, + raw: bool = False, + options: Optional[RequestOptionBuilder] = None, + ) -> Union[List[TreasuryYield], HTTPResponse]: + """ + Retrieve treasury yield data. + + :param date: Calendar date of the yield observation (YYYY-MM-DD). + :param date_gt: Filter for dates greater than the provided date. + :param date_gte: Filter for dates greater than or equal to the provided date. + :param date_lt: Filter for dates less than the provided date. + :param date_lte: Filter for dates less than or equal to the provided date. + :param limit: Limit the number of results returned. Default 100, max 50000. + :param sort: Field to sort by (e.g., "date"). Default "date". + :param order: Order results based on the sort field ("asc" or "desc"). Default "desc". + :param params: Additional query parameters. + :param raw: Return raw HTTPResponse object if True, else return List[TreasuryYield]. + :param options: RequestOptionBuilder for additional headers or params. + :return: A list of TreasuryYield objects or HTTPResponse if raw=True. + """ + url = "/fed/vX/treasury-yields" + + return self._paginate( + path=url, + params=self._get_params(self.list_treasury_yields, locals()), + deserializer=TreasuryYield.from_dict, + raw=raw, + result_key="results", + options=options, + ) From 1bc22c325ac8ae0d49656fcad46cce949803a34f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Apr 2025 10:13:59 -0700 Subject: [PATCH 88/88] Bump certifi from 2025.1.31 to 2025.4.26 (#877) Bumps [certifi](https://github.com/certifi/python-certifi) from 2025.1.31 to 2025.4.26. - [Commits](https://github.com/certifi/python-certifi/compare/2025.01.31...2025.04.26) --- updated-dependencies: - dependency-name: certifi dependency-version: 2025.4.26 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8a686894..e657d9cb 100644 --- a/poetry.lock +++ b/poetry.lock @@ -94,14 +94,14 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "certifi" -version = "2025.1.31" +version = "2025.4.26" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" groups = ["main", "dev"] files = [ - {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, - {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, + {file = "certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3"}, + {file = "certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6"}, ] [[package]]