diff --git a/.gitignore b/.gitignore
index 6bd0fe141..e1729ab28 100644
--- a/.gitignore
+++ b/.gitignore
@@ -135,3 +135,4 @@ src/
logs/*.log
# output files: local gitignore added to city_scrapers/local_outputs/
+*.csv
diff --git a/Pipfile b/Pipfile
index cfe6387b5..c9d4c0e2d 100644
--- a/Pipfile
+++ b/Pipfile
@@ -13,6 +13,7 @@ scrapy-wayback-middleware = "*"
city-scrapers-core = {ref = "main", git = "https://github.com/City-Bureau/city-scrapers-core.git", extras = ["azure"]}
pdfminer-six = "*"
bs4 = "*"
+icalendar = "*"
[dev-packages]
freezegun = "*"
diff --git a/Pipfile.lock b/Pipfile.lock
index 860742323..455a7ee14 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
- "sha256": "70a06c8dd5169e6faf6ef4aef82390ca37c96e5b2789b83a0840b3b02f8d81ec"
+ "sha256": "5fdbdc75172c02722fce093b87bc2b51820771fcb671f2867fc20aab63b8383c"
},
"pipfile-spec": 6,
"requires": {
@@ -33,18 +33,18 @@
},
"azure-core": {
"hashes": [
- "sha256:3dae7962aad109610e68c9a7abb31d79720e1d982ddf61363038d175a5025e89",
- "sha256:6f3a7883ef184722f6bd997262eddaf80cfe7e5b3e0caaaf8db1695695893d35"
+ "sha256:26273a254131f84269e8ea4464f3560c731f29c0c1f69ac99010845f239c1a8f",
+ "sha256:7c5ee397e48f281ec4dd773d67a0a47a0962ed6fa833036057f9ea067f688e74"
],
"markers": "python_version >= '3.7'",
- "version": "==1.30.0"
+ "version": "==1.30.1"
},
"azure-storage-blob": {
"hashes": [
- "sha256:26c0a4320a34a3c2a1b74528ba6812ebcb632a04cd67b1c7377232c4b01a5897",
- "sha256:7bbc2c9c16678f7a420367fef6b172ba8730a7e66df7f4d7a55d5b3c8216615b"
+ "sha256:13e16ba42fc54ac2c7e8f976062173a5c82b9ec0594728e134aac372965a11b0",
+ "sha256:c5530dc51c21c9564e4eb706cd499befca8819b10dd89716d3fc90d747556243"
],
- "version": "==12.19.0"
+ "version": "==12.19.1"
},
"beautifulsoup4": {
"hashes": [
@@ -242,41 +242,41 @@
},
"cryptography": {
"hashes": [
- "sha256:087887e55e0b9c8724cf05361357875adb5c20dec27e5816b653492980d20380",
- "sha256:09a77e5b2e8ca732a19a90c5bca2d124621a1edb5438c5daa2d2738bfeb02589",
- "sha256:130c0f77022b2b9c99d8cebcdd834d81705f61c68e91ddd614ce74c657f8b3ea",
- "sha256:141e2aa5ba100d3788c0ad7919b288f89d1fe015878b9659b307c9ef867d3a65",
- "sha256:28cb2c41f131a5758d6ba6a0504150d644054fd9f3203a1e8e8d7ac3aea7f73a",
- "sha256:2f9f14185962e6a04ab32d1abe34eae8a9001569ee4edb64d2304bf0d65c53f3",
- "sha256:320948ab49883557a256eab46149df79435a22d2fefd6a66fe6946f1b9d9d008",
- "sha256:36d4b7c4be6411f58f60d9ce555a73df8406d484ba12a63549c88bd64f7967f1",
- "sha256:3b15c678f27d66d247132cbf13df2f75255627bcc9b6a570f7d2fd08e8c081d2",
- "sha256:3dbd37e14ce795b4af61b89b037d4bc157f2cb23e676fa16932185a04dfbf635",
- "sha256:4383b47f45b14459cab66048d384614019965ba6c1a1a141f11b5a551cace1b2",
- "sha256:44c95c0e96b3cb628e8452ec060413a49002a247b2b9938989e23a2c8291fc90",
- "sha256:4b063d3413f853e056161eb0c7724822a9740ad3caa24b8424d776cebf98e7ee",
- "sha256:52ed9ebf8ac602385126c9a2fe951db36f2cb0c2538d22971487f89d0de4065a",
- "sha256:55d1580e2d7e17f45d19d3b12098e352f3a37fe86d380bf45846ef257054b242",
- "sha256:5ef9bc3d046ce83c4bbf4c25e1e0547b9c441c01d30922d812e887dc5f125c12",
- "sha256:5fa82a26f92871eca593b53359c12ad7949772462f887c35edaf36f87953c0e2",
- "sha256:61321672b3ac7aade25c40449ccedbc6db72c7f5f0fdf34def5e2f8b51ca530d",
- "sha256:701171f825dcab90969596ce2af253143b93b08f1a716d4b2a9d2db5084ef7be",
- "sha256:841ec8af7a8491ac76ec5a9522226e287187a3107e12b7d686ad354bb78facee",
- "sha256:8a06641fb07d4e8f6c7dda4fc3f8871d327803ab6542e33831c7ccfdcb4d0ad6",
- "sha256:8e88bb9eafbf6a4014d55fb222e7360eef53e613215085e65a13290577394529",
- "sha256:a00aee5d1b6c20620161984f8ab2ab69134466c51f58c052c11b076715e72929",
- "sha256:a047682d324ba56e61b7ea7c7299d51e61fd3bca7dad2ccc39b72bd0118d60a1",
- "sha256:a7ef8dd0bf2e1d0a27042b231a3baac6883cdd5557036f5e8df7139255feaac6",
- "sha256:ad28cff53f60d99a928dfcf1e861e0b2ceb2bc1f08a074fdd601b314e1cc9e0a",
- "sha256:b9097a208875fc7bbeb1286d0125d90bdfed961f61f214d3f5be62cd4ed8a446",
- "sha256:b97fe7d7991c25e6a31e5d5e795986b18fbbb3107b873d5f3ae6dc9a103278e9",
- "sha256:e0ec52ba3c7f1b7d813cd52649a5b3ef1fc0d433219dc8c93827c57eab6cf888",
- "sha256:ea2c3ffb662fec8bbbfce5602e2c159ff097a4631d96235fcf0fb00e59e3ece4",
- "sha256:fa3dec4ba8fb6e662770b74f62f1a0c7d4e37e25b58b2bf2c1be4c95372b4a33",
- "sha256:fbeb725c9dc799a574518109336acccaf1303c30d45c075c665c0793c2f79a7f"
+ "sha256:02c0eee2d7133bdbbc5e24441258d5d2244beb31da5ed19fbb80315f4bbbff55",
+ "sha256:0d563795db98b4cd57742a78a288cdbdc9daedac29f2239793071fe114f13785",
+ "sha256:16268d46086bb8ad5bf0a2b5544d8a9ed87a0e33f5e77dd3c3301e63d941a83b",
+ "sha256:1a58839984d9cb34c855197043eaae2c187d930ca6d644612843b4fe8513c886",
+ "sha256:2954fccea107026512b15afb4aa664a5640cd0af630e2ee3962f2602693f0c82",
+ "sha256:2e47577f9b18723fa294b0ea9a17d5e53a227867a0a4904a1a076d1646d45ca1",
+ "sha256:31adb7d06fe4383226c3e963471f6837742889b3c4caa55aac20ad951bc8ffda",
+ "sha256:3577d029bc3f4827dd5bf8bf7710cac13527b470bbf1820a3f394adb38ed7d5f",
+ "sha256:36017400817987670037fbb0324d71489b6ead6231c9604f8fc1f7d008087c68",
+ "sha256:362e7197754c231797ec45ee081f3088a27a47c6c01eff2ac83f60f85a50fe60",
+ "sha256:3de9a45d3b2b7d8088c3fbf1ed4395dfeff79d07842217b38df14ef09ce1d8d7",
+ "sha256:4f698edacf9c9e0371112792558d2f705b5645076cc0aaae02f816a0171770fd",
+ "sha256:5482e789294854c28237bba77c4c83be698be740e31a3ae5e879ee5444166582",
+ "sha256:5e44507bf8d14b36b8389b226665d597bc0f18ea035d75b4e53c7b1ea84583cc",
+ "sha256:779245e13b9a6638df14641d029add5dc17edbef6ec915688f3acb9e720a5858",
+ "sha256:789caea816c6704f63f6241a519bfa347f72fbd67ba28d04636b7c6b7da94b0b",
+ "sha256:7f8b25fa616d8b846aef64b15c606bb0828dbc35faf90566eb139aa9cff67af2",
+ "sha256:8cb8ce7c3347fcf9446f201dc30e2d5a3c898d009126010cbd1f443f28b52678",
+ "sha256:93a3209f6bb2b33e725ed08ee0991b92976dfdcf4e8b38646540674fc7508e13",
+ "sha256:a3a5ac8b56fe37f3125e5b72b61dcde43283e5370827f5233893d461b7360cd4",
+ "sha256:a47787a5e3649008a1102d3df55424e86606c9bae6fb77ac59afe06d234605f8",
+ "sha256:a79165431551042cc9d1d90e6145d5d0d3ab0f2d66326c201d9b0e7f5bf43604",
+ "sha256:a987f840718078212fdf4504d0fd4c6effe34a7e4740378e59d47696e8dfb477",
+ "sha256:a9bc127cdc4ecf87a5ea22a2556cab6c7eda2923f84e4f3cc588e8470ce4e42e",
+ "sha256:bd13b5e9b543532453de08bcdc3cc7cebec6f9883e886fd20a92f26940fd3e7a",
+ "sha256:c65f96dad14f8528a447414125e1fc8feb2ad5a272b8f68477abbcc1ea7d94b9",
+ "sha256:d8e3098721b84392ee45af2dd554c947c32cc52f862b6a3ae982dbb90f577f14",
+ "sha256:e6b79d0adb01aae87e8a44c2b64bc3f3fe59515280e00fb6d57a7267a2583cda",
+ "sha256:e6b8f1881dac458c34778d0a424ae5769de30544fc678eac51c1c8bb2183e9da",
+ "sha256:e9b2a6309f14c0497f348d08a065d52f3020656f675819fc405fb63bbcd26562",
+ "sha256:ecbfbc00bf55888edda9868a4cf927205de8499e7fabe6c050322298382953f2",
+ "sha256:efd0bf5205240182e0f13bcaea41be4fdf5c22c5129fc7ced4a0282ac86998c9"
],
"markers": "python_version >= '3.7'",
- "version": "==42.0.2"
+ "version": "==42.0.7"
},
"cssselect": {
"hashes": [
@@ -288,11 +288,11 @@
},
"filelock": {
"hashes": [
- "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e",
- "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"
+ "sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f",
+ "sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"
],
"markers": "python_version >= '3.8'",
- "version": "==3.13.1"
+ "version": "==3.14.0"
},
"hyperlink": {
"hashes": [
@@ -301,13 +301,22 @@
],
"version": "==21.0.0"
},
+ "icalendar": {
+ "hashes": [
+ "sha256:73f9be68477722c98320621400943705dcfdbbc6c2b565253f72d3f87e514db8",
+ "sha256:d873bb859df9c6d0e597b16d247436e0f83f7ac1b90a06429b8393fe8afeba40"
+ ],
+ "index": "pypi",
+ "markers": "python_version >= '3.7'",
+ "version": "==5.0.12"
+ },
"idna": {
"hashes": [
- "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca",
- "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"
+ "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc",
+ "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"
],
"markers": "python_version >= '3.5'",
- "version": "==3.6"
+ "version": "==3.7"
},
"incremental": {
"hashes": [
@@ -325,19 +334,19 @@
},
"itemadapter": {
"hashes": [
- "sha256:2ac1fbcc363b789a18639935ca322e50a65a0a7dfdd8d973c34e2c468e6c0f94",
- "sha256:77758485fb0ac10730d4b131363e37d65cb8db2450bfec7a57c3f3271f4a48a9"
+ "sha256:cfd108c9d5205d056fcac402ec8f8e9d799ce9066911eec1cd521ea442f87af1",
+ "sha256:e4f958a6b6b6f5831fa207373010031a0bd7ed0429ddd09b51979c011475cafd"
],
- "markers": "python_version >= '3.7'",
- "version": "==0.8.0"
+ "markers": "python_version >= '3.8'",
+ "version": "==0.9.0"
},
"itemloaders": {
"hashes": [
- "sha256:21d81c61da6a08b48e5996288cdf3031c0f92e5d0075920a0242527523e14a48",
- "sha256:c8c82fe0c11fc4cdd08ec04df0b3c43f3cb7190002edb517e02d55de8efc2aeb"
+ "sha256:6ec5753dafdc69262774694c78c9ec44605672586b40a7134a097a5df601a442",
+ "sha256:fc2307f984116b010d6101a68a6a133ac8de927320b0ab696f31ad710a8d8d98"
],
- "markers": "python_version >= '3.7'",
- "version": "==1.1.0"
+ "markers": "python_version >= '3.8'",
+ "version": "==1.2.0"
},
"jmespath": {
"hashes": [
@@ -349,11 +358,11 @@
},
"jsonschema": {
"hashes": [
- "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f",
- "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"
+ "sha256:5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7",
+ "sha256:ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802"
],
"markers": "python_version >= '3.8'",
- "version": "==4.21.1"
+ "version": "==4.22.0"
},
"jsonschema-specifications": {
"hashes": [
@@ -365,103 +374,179 @@
},
"lxml": {
"hashes": [
- "sha256:13521a321a25c641b9ea127ef478b580b5ec82aa2e9fc076c86169d161798b01",
- "sha256:14deca1460b4b0f6b01f1ddc9557704e8b365f55c63070463f6c18619ebf964f",
- "sha256:16018f7099245157564d7148165132c70adb272fb5a17c048ba70d9cc542a1a1",
- "sha256:16dd953fb719f0ffc5bc067428fc9e88f599e15723a85618c45847c96f11f431",
- "sha256:19a1bc898ae9f06bccb7c3e1dfd73897ecbbd2c96afe9095a6026016e5ca97b8",
- "sha256:1ad17c20e3666c035db502c78b86e58ff6b5991906e55bdbef94977700c72623",
- "sha256:22b7ee4c35f374e2c20337a95502057964d7e35b996b1c667b5c65c567d2252a",
- "sha256:24ef5a4631c0b6cceaf2dbca21687e29725b7c4e171f33a8f8ce23c12558ded1",
- "sha256:25663d6e99659544ee8fe1b89b1a8c0aaa5e34b103fab124b17fa958c4a324a6",
- "sha256:262bc5f512a66b527d026518507e78c2f9c2bd9eb5c8aeeb9f0eb43fcb69dc67",
- "sha256:280f3edf15c2a967d923bcfb1f8f15337ad36f93525828b40a0f9d6c2ad24890",
- "sha256:2ad3a8ce9e8a767131061a22cd28fdffa3cd2dc193f399ff7b81777f3520e372",
- "sha256:2befa20a13f1a75c751f47e00929fb3433d67eb9923c2c0b364de449121f447c",
- "sha256:2f37c6d7106a9d6f0708d4e164b707037b7380fcd0b04c5bd9cae1fb46a856fb",
- "sha256:304128394c9c22b6569eba2a6d98392b56fbdfbad58f83ea702530be80d0f9df",
- "sha256:342e95bddec3a698ac24378d61996b3ee5ba9acfeb253986002ac53c9a5f6f84",
- "sha256:3aeca824b38ca78d9ee2ab82bd9883083d0492d9d17df065ba3b94e88e4d7ee6",
- "sha256:3d184e0d5c918cff04cdde9dbdf9600e960161d773666958c9d7b565ccc60c45",
- "sha256:3e3898ae2b58eeafedfe99e542a17859017d72d7f6a63de0f04f99c2cb125936",
- "sha256:3eea6ed6e6c918e468e693c41ef07f3c3acc310b70ddd9cc72d9ef84bc9564ca",
- "sha256:3f14a4fb1c1c402a22e6a341a24c1341b4a3def81b41cd354386dcb795f83897",
- "sha256:436a943c2900bb98123b06437cdd30580a61340fbdb7b28aaf345a459c19046a",
- "sha256:4946e7f59b7b6a9e27bef34422f645e9a368cb2be11bf1ef3cafc39a1f6ba68d",
- "sha256:49a9b4af45e8b925e1cd6f3b15bbba2c81e7dba6dce170c677c9cda547411e14",
- "sha256:4f8b0c78e7aac24979ef09b7f50da871c2de2def043d468c4b41f512d831e912",
- "sha256:52427a7eadc98f9e62cb1368a5079ae826f94f05755d2d567d93ee1bc3ceb354",
- "sha256:5e53d7e6a98b64fe54775d23a7c669763451340c3d44ad5e3a3b48a1efbdc96f",
- "sha256:5fcfbebdb0c5d8d18b84118842f31965d59ee3e66996ac842e21f957eb76138c",
- "sha256:601f4a75797d7a770daed8b42b97cd1bb1ba18bd51a9382077a6a247a12aa38d",
- "sha256:61c5a7edbd7c695e54fca029ceb351fc45cd8860119a0f83e48be44e1c464862",
- "sha256:6a2a2c724d97c1eb8cf966b16ca2915566a4904b9aad2ed9a09c748ffe14f969",
- "sha256:6d48fc57e7c1e3df57be5ae8614bab6d4e7b60f65c5457915c26892c41afc59e",
- "sha256:6f11b77ec0979f7e4dc5ae081325a2946f1fe424148d3945f943ceaede98adb8",
- "sha256:704f5572ff473a5f897745abebc6df40f22d4133c1e0a1f124e4f2bd3330ff7e",
- "sha256:725e171e0b99a66ec8605ac77fa12239dbe061482ac854d25720e2294652eeaa",
- "sha256:7cfced4a069003d8913408e10ca8ed092c49a7f6cefee9bb74b6b3e860683b45",
- "sha256:7ec465e6549ed97e9f1e5ed51c657c9ede767bc1c11552f7f4d022c4df4a977a",
- "sha256:82bddf0e72cb2af3cbba7cec1d2fd11fda0de6be8f4492223d4a268713ef2147",
- "sha256:82cd34f1081ae4ea2ede3d52f71b7be313756e99b4b5f829f89b12da552d3aa3",
- "sha256:843b9c835580d52828d8f69ea4302537337a21e6b4f1ec711a52241ba4a824f3",
- "sha256:877efb968c3d7eb2dad540b6cabf2f1d3c0fbf4b2d309a3c141f79c7e0061324",
- "sha256:8b9f19df998761babaa7f09e6bc169294eefafd6149aaa272081cbddc7ba4ca3",
- "sha256:8cf5877f7ed384dabfdcc37922c3191bf27e55b498fecece9fd5c2c7aaa34c33",
- "sha256:8d2900b7f5318bc7ad8631d3d40190b95ef2aa8cc59473b73b294e4a55e9f30f",
- "sha256:8d7b4beebb178e9183138f552238f7e6613162a42164233e2bda00cb3afac58f",
- "sha256:8f52fe6859b9db71ee609b0c0a70fea5f1e71c3462ecf144ca800d3f434f0764",
- "sha256:98f3f020a2b736566c707c8e034945c02aa94e124c24f77ca097c446f81b01f1",
- "sha256:9aa543980ab1fbf1720969af1d99095a548ea42e00361e727c58a40832439114",
- "sha256:9b99f564659cfa704a2dd82d0684207b1aadf7d02d33e54845f9fc78e06b7581",
- "sha256:9bcf86dfc8ff3e992fed847c077bd875d9e0ba2fa25d859c3a0f0f76f07f0c8d",
- "sha256:9bd0ae7cc2b85320abd5e0abad5ccee5564ed5f0cc90245d2f9a8ef330a8deae",
- "sha256:9d3c0f8567ffe7502d969c2c1b809892dc793b5d0665f602aad19895f8d508da",
- "sha256:9e5ac3437746189a9b4121db2a7b86056ac8786b12e88838696899328fc44bb2",
- "sha256:a36c506e5f8aeb40680491d39ed94670487ce6614b9d27cabe45d94cd5d63e1e",
- "sha256:a5ab722ae5a873d8dcee1f5f45ddd93c34210aed44ff2dc643b5025981908cda",
- "sha256:a96f02ba1bcd330807fc060ed91d1f7a20853da6dd449e5da4b09bfcc08fdcf5",
- "sha256:acb6b2f96f60f70e7f34efe0c3ea34ca63f19ca63ce90019c6cbca6b676e81fa",
- "sha256:ae15347a88cf8af0949a9872b57a320d2605ae069bcdf047677318bc0bba45b1",
- "sha256:af8920ce4a55ff41167ddbc20077f5698c2e710ad3353d32a07d3264f3a2021e",
- "sha256:afd825e30f8d1f521713a5669b63657bcfe5980a916c95855060048b88e1adb7",
- "sha256:b21b4031b53d25b0858d4e124f2f9131ffc1530431c6d1321805c90da78388d1",
- "sha256:b4b68c961b5cc402cbd99cca5eb2547e46ce77260eb705f4d117fd9c3f932b95",
- "sha256:b66aa6357b265670bb574f050ffceefb98549c721cf28351b748be1ef9577d93",
- "sha256:b9e240ae0ba96477682aa87899d94ddec1cc7926f9df29b1dd57b39e797d5ab5",
- "sha256:bc64d1b1dab08f679fb89c368f4c05693f58a9faf744c4d390d7ed1d8223869b",
- "sha256:bf8443781533b8d37b295016a4b53c1494fa9a03573c09ca5104550c138d5c05",
- "sha256:c26aab6ea9c54d3bed716b8851c8bfc40cb249b8e9880e250d1eddde9f709bf5",
- "sha256:c3cd1fc1dc7c376c54440aeaaa0dcc803d2126732ff5c6b68ccd619f2e64be4f",
- "sha256:c7257171bb8d4432fe9d6fdde4d55fdbe663a63636a17f7f9aaba9bcb3153ad7",
- "sha256:d42e3a3fc18acc88b838efded0e6ec3edf3e328a58c68fbd36a7263a874906c8",
- "sha256:d74fcaf87132ffc0447b3c685a9f862ffb5b43e70ea6beec2fb8057d5d2a1fea",
- "sha256:d8c1d679df4361408b628f42b26a5d62bd3e9ba7f0c0e7969f925021554755aa",
- "sha256:e856c1c7255c739434489ec9c8aa9cdf5179785d10ff20add308b5d673bed5cd",
- "sha256:eac68f96539b32fce2c9b47eb7c25bb2582bdaf1bbb360d25f564ee9e04c542b",
- "sha256:ed7326563024b6e91fef6b6c7a1a2ff0a71b97793ac33dbbcf38f6005e51ff6e",
- "sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4",
- "sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204",
- "sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a"
+ "sha256:04ab5415bf6c86e0518d57240a96c4d1fcfc3cb370bb2ac2a732b67f579e5a04",
+ "sha256:057cdc6b86ab732cf361f8b4d8af87cf195a1f6dc5b0ff3de2dced242c2015e0",
+ "sha256:058a1308914f20784c9f4674036527e7c04f7be6fb60f5d61353545aa7fcb739",
+ "sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a",
+ "sha256:0a15438253b34e6362b2dc41475e7f80de76320f335e70c5528b7148cac253a1",
+ "sha256:0c3f67e2aeda739d1cc0b1102c9a9129f7dc83901226cc24dd72ba275ced4218",
+ "sha256:0e7259016bc4345a31af861fdce942b77c99049d6c2107ca07dc2bba2435c1d9",
+ "sha256:0ed777c1e8c99b63037b91f9d73a6aad20fd035d77ac84afcc205225f8f41188",
+ "sha256:0f5d65c39f16717a47c36c756af0fb36144069c4718824b7533f803ecdf91138",
+ "sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585",
+ "sha256:11a04306fcba10cd9637e669fd73aa274c1c09ca64af79c041aa820ea992b637",
+ "sha256:1ae67b4e737cddc96c99461d2f75d218bdf7a0c3d3ad5604d1f5e7464a2f9ffe",
+ "sha256:1c5bb205e9212d0ebddf946bc07e73fa245c864a5f90f341d11ce7b0b854475d",
+ "sha256:1f7785f4f789fdb522729ae465adcaa099e2a3441519df750ebdccc481d961a1",
+ "sha256:200e63525948e325d6a13a76ba2911f927ad399ef64f57898cf7c74e69b71095",
+ "sha256:21c2e6b09565ba5b45ae161b438e033a86ad1736b8c838c766146eff8ceffff9",
+ "sha256:2213afee476546a7f37c7a9b4ad4d74b1e112a6fafffc9185d6d21f043128c81",
+ "sha256:27aa20d45c2e0b8cd05da6d4759649170e8dfc4f4e5ef33a34d06f2d79075d57",
+ "sha256:2a66bf12fbd4666dd023b6f51223aed3d9f3b40fef06ce404cb75bafd3d89536",
+ "sha256:2c9d147f754b1b0e723e6afb7ba1566ecb162fe4ea657f53d2139bbf894d050a",
+ "sha256:2ddfe41ddc81f29a4c44c8ce239eda5ade4e7fc305fb7311759dd6229a080052",
+ "sha256:31e9a882013c2f6bd2f2c974241bf4ba68c85eba943648ce88936d23209a2e01",
+ "sha256:3249cc2989d9090eeac5467e50e9ec2d40704fea9ab72f36b034ea34ee65ca98",
+ "sha256:3545039fa4779be2df51d6395e91a810f57122290864918b172d5dc7ca5bb433",
+ "sha256:394ed3924d7a01b5bd9a0d9d946136e1c2f7b3dc337196d99e61740ed4bc6fe1",
+ "sha256:3a6b45da02336895da82b9d472cd274b22dc27a5cea1d4b793874eead23dd14f",
+ "sha256:3a74c4f27167cb95c1d4af1c0b59e88b7f3e0182138db2501c353555f7ec57f4",
+ "sha256:3d0c3dd24bb4605439bf91068598d00c6370684f8de4a67c2992683f6c309d6b",
+ "sha256:3dbe858ee582cbb2c6294dc85f55b5f19c918c2597855e950f34b660f1a5ede6",
+ "sha256:3dc773b2861b37b41a6136e0b72a1a44689a9c4c101e0cddb6b854016acc0aa8",
+ "sha256:3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306",
+ "sha256:417d14450f06d51f363e41cace6488519038f940676ce9664b34ebf5653433a5",
+ "sha256:44f6c7caff88d988db017b9b0e4ab04934f11e3e72d478031efc7edcac6c622f",
+ "sha256:491755202eb21a5e350dae00c6d9a17247769c64dcf62d8c788b5c135e179dc4",
+ "sha256:4951e4f7a5680a2db62f7f4ab2f84617674d36d2d76a729b9a8be4b59b3659be",
+ "sha256:52421b41ac99e9d91934e4d0d0fe7da9f02bfa7536bb4431b4c05c906c8c6919",
+ "sha256:530e7c04f72002d2f334d5257c8a51bf409db0316feee7c87e4385043be136af",
+ "sha256:533658f8fbf056b70e434dff7e7aa611bcacb33e01f75de7f821810e48d1bb66",
+ "sha256:5670fb70a828663cc37552a2a85bf2ac38475572b0e9b91283dc09efb52c41d1",
+ "sha256:56c22432809085b3f3ae04e6e7bdd36883d7258fcd90e53ba7b2e463efc7a6af",
+ "sha256:58278b29cb89f3e43ff3e0c756abbd1518f3ee6adad9e35b51fb101c1c1daaec",
+ "sha256:588008b8497667f1ddca7c99f2f85ce8511f8f7871b4a06ceede68ab62dff64b",
+ "sha256:59565f10607c244bc4c05c0c5fa0c190c990996e0c719d05deec7030c2aa8289",
+ "sha256:59689a75ba8d7ffca577aefd017d08d659d86ad4585ccc73e43edbfc7476781a",
+ "sha256:5aea8212fb823e006b995c4dda533edcf98a893d941f173f6c9506126188860d",
+ "sha256:5c670c0406bdc845b474b680b9a5456c561c65cf366f8db5a60154088c92d102",
+ "sha256:5ca1e8188b26a819387b29c3895c47a5e618708fe6f787f3b1a471de2c4a94d9",
+ "sha256:5d077bc40a1fe984e1a9931e801e42959a1e6598edc8a3223b061d30fbd26bbc",
+ "sha256:5d5792e9b3fb8d16a19f46aa8208987cfeafe082363ee2745ea8b643d9cc5b45",
+ "sha256:5dd1537e7cc06efd81371f5d1a992bd5ab156b2b4f88834ca852de4a8ea523fa",
+ "sha256:5ea7b6766ac2dfe4bcac8b8595107665a18ef01f8c8343f00710b85096d1b53a",
+ "sha256:622020d4521e22fb371e15f580d153134bfb68d6a429d1342a25f051ec72df1c",
+ "sha256:627402ad8dea044dde2eccde4370560a2b750ef894c9578e1d4f8ffd54000461",
+ "sha256:644df54d729ef810dcd0f7732e50e5ad1bd0a135278ed8d6bcb06f33b6b6f708",
+ "sha256:64641a6068a16201366476731301441ce93457eb8452056f570133a6ceb15fca",
+ "sha256:64c2baa7774bc22dd4474248ba16fe1a7f611c13ac6123408694d4cc93d66dbd",
+ "sha256:6588c459c5627fefa30139be4d2e28a2c2a1d0d1c265aad2ba1935a7863a4913",
+ "sha256:66bc5eb8a323ed9894f8fa0ee6cb3e3fb2403d99aee635078fd19a8bc7a5a5da",
+ "sha256:68a2610dbe138fa8c5826b3f6d98a7cfc29707b850ddcc3e21910a6fe51f6ca0",
+ "sha256:6935bbf153f9a965f1e07c2649c0849d29832487c52bb4a5c5066031d8b44fd5",
+ "sha256:6992030d43b916407c9aa52e9673612ff39a575523c5f4cf72cdef75365709a5",
+ "sha256:6a014510830df1475176466b6087fc0c08b47a36714823e58d8b8d7709132a96",
+ "sha256:6ab833e4735a7e5533711a6ea2df26459b96f9eec36d23f74cafe03631647c41",
+ "sha256:6cc6ee342fb7fa2471bd9b6d6fdfc78925a697bf5c2bcd0a302e98b0d35bfad3",
+ "sha256:6cf58416653c5901e12624e4013708b6e11142956e7f35e7a83f1ab02f3fe456",
+ "sha256:70a9768e1b9d79edca17890175ba915654ee1725975d69ab64813dd785a2bd5c",
+ "sha256:70ac664a48aa64e5e635ae5566f5227f2ab7f66a3990d67566d9907edcbbf867",
+ "sha256:71e97313406ccf55d32cc98a533ee05c61e15d11b99215b237346171c179c0b0",
+ "sha256:7221d49259aa1e5a8f00d3d28b1e0b76031655ca74bb287123ef56c3db92f213",
+ "sha256:74b28c6334cca4dd704e8004cba1955af0b778cf449142e581e404bd211fb619",
+ "sha256:764b521b75701f60683500d8621841bec41a65eb739b8466000c6fdbc256c240",
+ "sha256:78bfa756eab503673991bdcf464917ef7845a964903d3302c5f68417ecdc948c",
+ "sha256:794f04eec78f1d0e35d9e0c36cbbb22e42d370dda1609fb03bcd7aeb458c6377",
+ "sha256:79bd05260359170f78b181b59ce871673ed01ba048deef4bf49a36ab3e72e80b",
+ "sha256:7a7efd5b6d3e30d81ec68ab8a88252d7c7c6f13aaa875009fe3097eb4e30b84c",
+ "sha256:7c17b64b0a6ef4e5affae6a3724010a7a66bda48a62cfe0674dabd46642e8b54",
+ "sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b",
+ "sha256:853e074d4931dbcba7480d4dcab23d5c56bd9607f92825ab80ee2bd916edea53",
+ "sha256:857500f88b17a6479202ff5fe5f580fc3404922cd02ab3716197adf1ef628029",
+ "sha256:865bad62df277c04beed9478fe665b9ef63eb28fe026d5dedcb89b537d2e2ea6",
+ "sha256:88e22fc0a6684337d25c994381ed8a1580a6f5ebebd5ad41f89f663ff4ec2885",
+ "sha256:8b9c07e7a45bb64e21df4b6aa623cb8ba214dfb47d2027d90eac197329bb5e94",
+ "sha256:8de8f9d6caa7f25b204fc861718815d41cbcf27ee8f028c89c882a0cf4ae4134",
+ "sha256:8e77c69d5892cb5ba71703c4057091e31ccf534bd7f129307a4d084d90d014b8",
+ "sha256:9123716666e25b7b71c4e1789ec829ed18663152008b58544d95b008ed9e21e9",
+ "sha256:958244ad566c3ffc385f47dddde4145088a0ab893504b54b52c041987a8c1863",
+ "sha256:96323338e6c14e958d775700ec8a88346014a85e5de73ac7967db0367582049b",
+ "sha256:9676bfc686fa6a3fa10cd4ae6b76cae8be26eb5ec6811d2a325636c460da1806",
+ "sha256:9b0ff53900566bc6325ecde9181d89afadc59c5ffa39bddf084aaedfe3b06a11",
+ "sha256:9b9ec9c9978b708d488bec36b9e4c94d88fd12ccac3e62134a9d17ddba910ea9",
+ "sha256:9c6ad0fbf105f6bcc9300c00010a2ffa44ea6f555df1a2ad95c88f5656104817",
+ "sha256:9ca66b8e90daca431b7ca1408cae085d025326570e57749695d6a01454790e95",
+ "sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8",
+ "sha256:a0af35bd8ebf84888373630f73f24e86bf016642fb8576fba49d3d6b560b7cbc",
+ "sha256:a2b44bec7adf3e9305ce6cbfa47a4395667e744097faed97abb4728748ba7d47",
+ "sha256:a2dfe7e2473f9b59496247aad6e23b405ddf2e12ef0765677b0081c02d6c2c0b",
+ "sha256:a55ee573116ba208932e2d1a037cc4b10d2c1cb264ced2184d00b18ce585b2c0",
+ "sha256:a7baf9ffc238e4bf401299f50e971a45bfcc10a785522541a6e3179c83eabf0a",
+ "sha256:a8d5c70e04aac1eda5c829a26d1f75c6e5286c74743133d9f742cda8e53b9c2f",
+ "sha256:a91481dbcddf1736c98a80b122afa0f7296eeb80b72344d7f45dc9f781551f56",
+ "sha256:ab31a88a651039a07a3ae327d68ebdd8bc589b16938c09ef3f32a4b809dc96ef",
+ "sha256:abc25c3cab9ec7fcd299b9bcb3b8d4a1231877e425c650fa1c7576c5107ab851",
+ "sha256:adfb84ca6b87e06bc6b146dc7da7623395db1e31621c4785ad0658c5028b37d7",
+ "sha256:afbbdb120d1e78d2ba8064a68058001b871154cc57787031b645c9142b937a62",
+ "sha256:afd5562927cdef7c4f5550374acbc117fd4ecc05b5007bdfa57cc5355864e0a4",
+ "sha256:b070bbe8d3f0f6147689bed981d19bbb33070225373338df755a46893528104a",
+ "sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c",
+ "sha256:b560e3aa4b1d49e0e6c847d72665384db35b2f5d45f8e6a5c0072e0283430533",
+ "sha256:b6241d4eee5f89453307c2f2bfa03b50362052ca0af1efecf9fef9a41a22bb4f",
+ "sha256:b6787b643356111dfd4032b5bffe26d2f8331556ecb79e15dacb9275da02866e",
+ "sha256:bcbf4af004f98793a95355980764b3d80d47117678118a44a80b721c9913436a",
+ "sha256:beb72935a941965c52990f3a32d7f07ce869fe21c6af8b34bf6a277b33a345d3",
+ "sha256:bf2e2458345d9bffb0d9ec16557d8858c9c88d2d11fed53998512504cd9df49b",
+ "sha256:c2d35a1d047efd68027817b32ab1586c1169e60ca02c65d428ae815b593e65d4",
+ "sha256:c38d7b9a690b090de999835f0443d8aa93ce5f2064035dfc48f27f02b4afc3d0",
+ "sha256:c6f2c8372b98208ce609c9e1d707f6918cc118fea4e2c754c9f0812c04ca116d",
+ "sha256:c817d420c60a5183953c783b0547d9eb43b7b344a2c46f69513d5952a78cddf3",
+ "sha256:c8ba129e6d3b0136a0f50345b2cb3db53f6bda5dd8c7f5d83fbccba97fb5dcb5",
+ "sha256:c94e75445b00319c1fad60f3c98b09cd63fe1134a8a953dcd48989ef42318534",
+ "sha256:cc4691d60512798304acb9207987e7b2b7c44627ea88b9d77489bbe3e6cc3bd4",
+ "sha256:cc518cea79fd1e2f6c90baafa28906d4309d24f3a63e801d855e7424c5b34144",
+ "sha256:cd53553ddad4a9c2f1f022756ae64abe16da1feb497edf4d9f87f99ec7cf86bd",
+ "sha256:cf22b41fdae514ee2f1691b6c3cdeae666d8b7fa9434de445f12bbeee0cf48dd",
+ "sha256:d38c8f50ecf57f0463399569aa388b232cf1a2ffb8f0a9a5412d0db57e054860",
+ "sha256:d3be9b2076112e51b323bdf6d5a7f8a798de55fb8d95fcb64bd179460cdc0704",
+ "sha256:d4f2cc7060dc3646632d7f15fe68e2fa98f58e35dd5666cd525f3b35d3fed7f8",
+ "sha256:d7520db34088c96cc0e0a3ad51a4fd5b401f279ee112aa2b7f8f976d8582606d",
+ "sha256:d793bebb202a6000390a5390078e945bbb49855c29c7e4d56a85901326c3b5d9",
+ "sha256:da052e7962ea2d5e5ef5bc0355d55007407087392cf465b7ad84ce5f3e25fe0f",
+ "sha256:dae0ed02f6b075426accbf6b2863c3d0a7eacc1b41fb40f2251d931e50188dad",
+ "sha256:ddc678fb4c7e30cf830a2b5a8d869538bc55b28d6c68544d09c7d0d8f17694dc",
+ "sha256:df2e6f546c4df14bc81f9498bbc007fbb87669f1bb707c6138878c46b06f6510",
+ "sha256:e02c5175f63effbd7c5e590399c118d5db6183bbfe8e0d118bdb5c2d1b48d937",
+ "sha256:e196a4ff48310ba62e53a8e0f97ca2bca83cdd2fe2934d8b5cb0df0a841b193a",
+ "sha256:e233db59c8f76630c512ab4a4daf5a5986da5c3d5b44b8e9fc742f2a24dbd460",
+ "sha256:e32be23d538753a8adb6c85bd539f5fd3b15cb987404327c569dfc5fd8366e85",
+ "sha256:e3d30321949861404323c50aebeb1943461a67cd51d4200ab02babc58bd06a86",
+ "sha256:e89580a581bf478d8dcb97d9cd011d567768e8bc4095f8557b21c4d4c5fea7d0",
+ "sha256:e998e304036198b4f6914e6a1e2b6f925208a20e2042563d9734881150c6c246",
+ "sha256:ec42088248c596dbd61d4ae8a5b004f97a4d91a9fd286f632e42e60b706718d7",
+ "sha256:efa7b51824aa0ee957ccd5a741c73e6851de55f40d807f08069eb4c5a26b2baa",
+ "sha256:f0a1bc63a465b6d72569a9bba9f2ef0334c4e03958e043da1920299100bc7c08",
+ "sha256:f18a5a84e16886898e51ab4b1d43acb3083c39b14c8caeb3589aabff0ee0b270",
+ "sha256:f2a9efc53d5b714b8df2b4b3e992accf8ce5bbdfe544d74d5c6766c9e1146a3a",
+ "sha256:f3bbbc998d42f8e561f347e798b85513ba4da324c2b3f9b7969e9c45b10f6169",
+ "sha256:f42038016852ae51b4088b2862126535cc4fc85802bfe30dea3500fdfaf1864e",
+ "sha256:f443cdef978430887ed55112b491f670bba6462cea7a7742ff8f14b7abb98d75",
+ "sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd",
+ "sha256:f8aca2e3a72f37bfc7b14ba96d4056244001ddcc18382bd0daa087fd2e68a354",
+ "sha256:f9737bf36262046213a28e789cc82d82c6ef19c85a0cf05e75c670a33342ac2c",
+ "sha256:fd6037392f2d57793ab98d9e26798f44b8b4da2f2464388588f48ac52c489ea1",
+ "sha256:feaa45c0eae424d3e90d78823f3828e7dc42a42f21ed420db98da2c4ecf0a2cb",
+ "sha256:ff097ae562e637409b429a7ac958a20aab237a0378c42dabaa1e3abf2f896e5f",
+ "sha256:ff46d772d5f6f73564979cd77a4fffe55c916a05f3cb70e7c9c0590059fb29ef"
],
"markers": "python_version >= '3.6'",
- "version": "==5.1.0"
+ "version": "==5.2.1"
},
"packaging": {
"hashes": [
- "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5",
- "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"
+ "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5",
+ "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"
],
"markers": "python_version >= '3.7'",
- "version": "==23.2"
+ "version": "==24.0"
},
"parsel": {
"hashes": [
- "sha256:2708fc74daeeb4ce471e2c2e9089b650ec940c7a218053e57421e69b5b00f82c",
- "sha256:aff28e68c9b3f1a901db2a4e3f158d8480a38724d7328ee751c1a4e1c1801e39"
+ "sha256:14e00dc07731c9030db620c195fcae884b5b4848e9f9c523c6119f708ccfa9ac",
+ "sha256:c4a777ee6c3ff5e39652b58e351c5cf02c12ff420d05b07a7966aebb68ab1700"
],
- "markers": "python_version >= '3.7'",
- "version": "==1.8.1"
+ "markers": "python_version >= '3.8'",
+ "version": "==1.9.1"
},
"pdfminer-six": {
"hashes": [
@@ -474,34 +559,35 @@
},
"protego": {
"hashes": [
- "sha256:04228bffde4c6bcba31cf6529ba2cfd6e1b70808fdc1d2cb4301be6b28d6c568",
- "sha256:db38f6a945839d8162a4034031a21490469566a2726afb51d668497c457fb0aa"
+ "sha256:2fbe8e9b7a7dbc5016a932b14c98d236aad4c29290bbe457b8d2779666ef7a41",
+ "sha256:e94430d0d25cbbf239bc849d86c5e544fbde531fcccfa059953c7da344a1712c"
],
- "markers": "python_version >= '3.7'",
- "version": "==0.3.0"
+ "markers": "python_version >= '3.8'",
+ "version": "==0.3.1"
},
"pyasn1": {
"hashes": [
- "sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58",
- "sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c"
+ "sha256:3a35ab2c4b5ef98e17dfdec8ab074046fbda76e281c5a706ccd82328cfc8f64c",
+ "sha256:cca4bb0f2df5504f02f6f8a775b6e416ff9b0b3b16f7ee80b5a3153d9b804473"
],
- "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
- "version": "==0.5.1"
+ "markers": "python_version >= '3.8'",
+ "version": "==0.6.0"
},
"pyasn1-modules": {
"hashes": [
- "sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c",
- "sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d"
+ "sha256:831dbcea1b177b28c9baddf4c6d1013c24c3accd14a1873fffaa6a2e905f17b6",
+ "sha256:be04f15b66c206eed667e0bb5ab27e2b1855ea54a842e5037738099e8ca4ae0b"
],
- "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'",
- "version": "==0.3.0"
+ "markers": "python_version >= '3.8'",
+ "version": "==0.4.0"
},
"pycparser": {
"hashes": [
- "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9",
- "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"
+ "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6",
+ "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"
],
- "version": "==2.21"
+ "markers": "python_version >= '3.8'",
+ "version": "==2.22"
},
"pydispatcher": {
"hashes": [
@@ -513,20 +599,20 @@
},
"pyopenssl": {
"hashes": [
- "sha256:6aa33039a93fffa4563e655b61d11364d01264be8ccb49906101e02a334530bf",
- "sha256:ba07553fb6fd6a7a2259adb9b84e12302a9a8a75c44046e8bb5d3e5ee887e3c3"
+ "sha256:17ed5be5936449c5418d1cd269a1a9e9081bc54c17aed272b45856a3d3dc86ad",
+ "sha256:cabed4bfaa5df9f1a16c0ef64a0cb65318b5cd077a7eda7d6970131ca2f41a6f"
],
"markers": "python_version >= '3.7'",
- "version": "==24.0.0"
+ "version": "==24.1.0"
},
"python-dateutil": {
"hashes": [
- "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86",
- "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"
+ "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
+ "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
],
"index": "pypi",
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
- "version": "==2.8.2"
+ "version": "==2.9.0.post0"
},
"pytz": {
"hashes": [
@@ -538,19 +624,19 @@
},
"queuelib": {
"hashes": [
- "sha256:4b207267f2642a8699a1f806045c56eb7ad1a85a10c0e249884580d139c2fcd2",
- "sha256:4b96d48f650a814c6fb2fd11b968f9c46178b683aad96d68f930fe13a8574d19"
+ "sha256:2855162096cf0230510890b354379ea1c0ff19d105d3147d349d2433bb222b08",
+ "sha256:b07aaa2410caac3a0021ee4f4026acdac992b0fb9a2cbeb34a918617df3c12a7"
],
- "markers": "python_version >= '3.5'",
- "version": "==1.6.2"
+ "markers": "python_version >= '3.8'",
+ "version": "==1.7.0"
},
"referencing": {
"hashes": [
- "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5",
- "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"
+ "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c",
+ "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"
],
"markers": "python_version >= '3.8'",
- "version": "==0.33.0"
+ "version": "==0.35.1"
},
"requests": {
"hashes": [
@@ -570,117 +656,117 @@
},
"rpds-py": {
"hashes": [
- "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147",
- "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7",
- "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2",
- "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68",
- "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1",
- "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382",
- "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d",
- "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921",
- "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38",
- "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4",
- "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a",
- "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d",
- "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518",
- "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e",
- "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d",
- "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf",
- "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5",
- "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba",
- "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6",
- "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59",
- "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253",
- "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6",
- "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f",
- "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3",
- "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea",
- "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1",
- "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76",
- "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93",
- "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad",
- "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad",
- "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc",
- "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049",
- "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d",
- "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90",
- "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d",
- "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd",
- "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25",
- "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2",
- "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f",
- "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6",
- "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4",
- "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c",
- "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8",
- "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d",
- "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b",
- "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19",
- "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453",
- "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9",
- "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde",
- "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296",
- "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58",
- "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec",
- "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99",
- "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a",
- "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb",
- "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383",
- "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d",
- "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896",
- "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc",
- "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6",
- "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b",
- "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7",
- "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22",
- "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf",
- "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394",
- "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0",
- "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57",
- "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74",
- "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83",
- "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29",
- "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9",
- "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f",
- "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745",
- "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb",
- "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811",
- "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55",
- "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342",
- "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23",
- "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82",
- "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041",
- "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb",
- "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066",
- "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55",
- "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6",
- "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a",
- "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140",
- "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b",
- "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9",
- "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256",
- "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c",
- "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772",
- "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4",
- "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae",
- "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920",
- "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a",
- "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b",
- "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361",
- "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8",
- "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"
+ "sha256:05f3d615099bd9b13ecf2fc9cf2d839ad3f20239c678f461c753e93755d629ee",
+ "sha256:06d218939e1bf2ca50e6b0ec700ffe755e5216a8230ab3e87c059ebb4ea06afc",
+ "sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc",
+ "sha256:08d74b184f9ab6289b87b19fe6a6d1a97fbfea84b8a3e745e87a5de3029bf944",
+ "sha256:0abeee75434e2ee2d142d650d1e54ac1f8b01e6e6abdde8ffd6eeac6e9c38e20",
+ "sha256:154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7",
+ "sha256:17c6d2155e2423f7e79e3bb18151c686d40db42d8645e7977442170c360194d4",
+ "sha256:1805d5901779662d599d0e2e4159d8a82c0b05faa86ef9222bf974572286b2b6",
+ "sha256:19ba472b9606c36716062c023afa2484d1e4220548751bda14f725a7de17b4f6",
+ "sha256:19e515b78c3fc1039dd7da0a33c28c3154458f947f4dc198d3c72db2b6b5dc93",
+ "sha256:1d54f74f40b1f7aaa595a02ff42ef38ca654b1469bef7d52867da474243cc633",
+ "sha256:207c82978115baa1fd8d706d720b4a4d2b0913df1c78c85ba73fe6c5804505f0",
+ "sha256:2625f03b105328729f9450c8badda34d5243231eef6535f80064d57035738360",
+ "sha256:27bba383e8c5231cd559affe169ca0b96ec78d39909ffd817f28b166d7ddd4d8",
+ "sha256:2c3caec4ec5cd1d18e5dd6ae5194d24ed12785212a90b37f5f7f06b8bedd7139",
+ "sha256:2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7",
+ "sha256:2fc24a329a717f9e2448f8cd1f960f9dac4e45b6224d60734edeb67499bab03a",
+ "sha256:312fe69b4fe1ffbe76520a7676b1e5ac06ddf7826d764cc10265c3b53f96dbe9",
+ "sha256:32b7daaa3e9389db3695964ce8e566e3413b0c43e3394c05e4b243a4cd7bef26",
+ "sha256:338dee44b0cef8b70fd2ef54b4e09bb1b97fc6c3a58fea5db6cc083fd9fc2724",
+ "sha256:352a88dc7892f1da66b6027af06a2e7e5d53fe05924cc2cfc56495b586a10b72",
+ "sha256:35b2b771b13eee8729a5049c976197ff58a27a3829c018a04341bcf1ae409b2b",
+ "sha256:38e14fb4e370885c4ecd734f093a2225ee52dc384b86fa55fe3f74638b2cfb09",
+ "sha256:3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100",
+ "sha256:3dd3cd86e1db5aadd334e011eba4e29d37a104b403e8ca24dcd6703c68ca55b3",
+ "sha256:489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261",
+ "sha256:48c2faaa8adfacefcbfdb5f2e2e7bdad081e5ace8d182e5f4ade971f128e6bb3",
+ "sha256:4a98a1f0552b5f227a3d6422dbd61bc6f30db170939bd87ed14f3c339aa6c7c9",
+ "sha256:4adec039b8e2928983f885c53b7cc4cda8965b62b6596501a0308d2703f8af1b",
+ "sha256:4e0ee01ad8260184db21468a6e1c37afa0529acc12c3a697ee498d3c2c4dcaf3",
+ "sha256:51584acc5916212e1bf45edd17f3a6b05fe0cbb40482d25e619f824dccb679de",
+ "sha256:531796fb842b53f2695e94dc338929e9f9dbf473b64710c28af5a160b2a8927d",
+ "sha256:5463c47c08630007dc0fe99fb480ea4f34a89712410592380425a9b4e1611d8e",
+ "sha256:5c45a639e93a0c5d4b788b2613bd637468edd62f8f95ebc6fcc303d58ab3f0a8",
+ "sha256:6031b25fb1b06327b43d841f33842b383beba399884f8228a6bb3df3088485ff",
+ "sha256:607345bd5912aacc0c5a63d45a1f73fef29e697884f7e861094e443187c02be5",
+ "sha256:618916f5535784960f3ecf8111581f4ad31d347c3de66d02e728de460a46303c",
+ "sha256:636a15acc588f70fda1661234761f9ed9ad79ebed3f2125d44be0862708b666e",
+ "sha256:673fdbbf668dd958eff750e500495ef3f611e2ecc209464f661bc82e9838991e",
+ "sha256:6afd80f6c79893cfc0574956f78a0add8c76e3696f2d6a15bca2c66c415cf2d4",
+ "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8",
+ "sha256:6c4c4c3f878df21faf5fac86eda32671c27889e13570645a9eea0a1abdd50922",
+ "sha256:6cd8098517c64a85e790657e7b1e509b9fe07487fd358e19431cb120f7d96338",
+ "sha256:6d1e42d2735d437e7e80bab4d78eb2e459af48c0a46e686ea35f690b93db792d",
+ "sha256:6e30ac5e329098903262dc5bdd7e2086e0256aa762cc8b744f9e7bf2a427d3f8",
+ "sha256:70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2",
+ "sha256:720edcb916df872d80f80a1cc5ea9058300b97721efda8651efcd938a9c70a72",
+ "sha256:732672fbc449bab754e0b15356c077cc31566df874964d4801ab14f71951ea80",
+ "sha256:740884bc62a5e2bbb31e584f5d23b32320fd75d79f916f15a788d527a5e83644",
+ "sha256:7700936ef9d006b7ef605dc53aa364da2de5a3aa65516a1f3ce73bf82ecfc7ae",
+ "sha256:7732770412bab81c5a9f6d20aeb60ae943a9b36dcd990d876a773526468e7163",
+ "sha256:7750569d9526199c5b97e5a9f8d96a13300950d910cf04a861d96f4273d5b104",
+ "sha256:7f1944ce16401aad1e3f7d312247b3d5de7981f634dc9dfe90da72b87d37887d",
+ "sha256:81c5196a790032e0fc2464c0b4ab95f8610f96f1f2fa3d4deacce6a79852da60",
+ "sha256:8352f48d511de5f973e4f2f9412736d7dea76c69faa6d36bcf885b50c758ab9a",
+ "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d",
+ "sha256:8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07",
+ "sha256:8d2e182c9ee01135e11e9676e9a62dfad791a7a467738f06726872374a83db49",
+ "sha256:910e71711d1055b2768181efa0a17537b2622afeb0424116619817007f8a2b10",
+ "sha256:942695a206a58d2575033ff1e42b12b2aece98d6003c6bc739fbf33d1773b12f",
+ "sha256:9437ca26784120a279f3137ee080b0e717012c42921eb07861b412340f85bae2",
+ "sha256:967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8",
+ "sha256:998125738de0158f088aef3cb264a34251908dd2e5d9966774fdab7402edfab7",
+ "sha256:9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88",
+ "sha256:a3d456ff2a6a4d2adcdf3c1c960a36f4fd2fec6e3b4902a42a384d17cf4e7a65",
+ "sha256:a7b28c5b066bca9a4eb4e2f2663012debe680f097979d880657f00e1c30875a0",
+ "sha256:a888e8bdb45916234b99da2d859566f1e8a1d2275a801bb8e4a9644e3c7e7909",
+ "sha256:aa3679e751408d75a0b4d8d26d6647b6d9326f5e35c00a7ccd82b78ef64f65f8",
+ "sha256:aaa71ee43a703c321906813bb252f69524f02aa05bf4eec85f0c41d5d62d0f4c",
+ "sha256:b646bf655b135ccf4522ed43d6902af37d3f5dbcf0da66c769a2b3938b9d8184",
+ "sha256:b906b5f58892813e5ba5c6056d6a5ad08f358ba49f046d910ad992196ea61397",
+ "sha256:b9bb1f182a97880f6078283b3505a707057c42bf55d8fca604f70dedfdc0772a",
+ "sha256:bd1105b50ede37461c1d51b9698c4f4be6e13e69a908ab7751e3807985fc0346",
+ "sha256:bf18932d0003c8c4d51a39f244231986ab23ee057d235a12b2684ea26a353590",
+ "sha256:c273e795e7a0f1fddd46e1e3cb8be15634c29ae8ff31c196debb620e1edb9333",
+ "sha256:c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb",
+ "sha256:c827576e2fa017a081346dce87d532a5310241648eb3700af9a571a6e9fc7e74",
+ "sha256:cbfbea39ba64f5e53ae2915de36f130588bba71245b418060ec3330ebf85678e",
+ "sha256:ce0bb20e3a11bd04461324a6a798af34d503f8d6f1aa3d2aa8901ceaf039176d",
+ "sha256:d0cee71bc618cd93716f3c1bf56653740d2d13ddbd47673efa8bf41435a60daa",
+ "sha256:d21be4770ff4e08698e1e8e0bce06edb6ea0626e7c8f560bc08222880aca6a6f",
+ "sha256:d31dea506d718693b6b2cffc0648a8929bdc51c70a311b2770f09611caa10d53",
+ "sha256:d44607f98caa2961bab4fa3c4309724b185b464cdc3ba6f3d7340bac3ec97cc1",
+ "sha256:d58ad6317d188c43750cb76e9deacf6051d0f884d87dc6518e0280438648a9ac",
+ "sha256:d70129cef4a8d979caa37e7fe957202e7eee8ea02c5e16455bc9808a59c6b2f0",
+ "sha256:d85164315bd68c0806768dc6bb0429c6f95c354f87485ee3593c4f6b14def2bd",
+ "sha256:d960de62227635d2e61068f42a6cb6aae91a7fe00fca0e3aeed17667c8a34611",
+ "sha256:dc48b479d540770c811fbd1eb9ba2bb66951863e448efec2e2c102625328e92f",
+ "sha256:e1735502458621921cee039c47318cb90b51d532c2766593be6207eec53e5c4c",
+ "sha256:e2be6e9dd4111d5b31ba3b74d17da54a8319d8168890fbaea4b9e5c3de630ae5",
+ "sha256:e4c39ad2f512b4041343ea3c7894339e4ca7839ac38ca83d68a832fc8b3748ab",
+ "sha256:ed402d6153c5d519a0faf1bb69898e97fb31613b49da27a84a13935ea9164dfc",
+ "sha256:ee17cd26b97d537af8f33635ef38be873073d516fd425e80559f4585a7b90c43",
+ "sha256:f3027be483868c99b4985fda802a57a67fdf30c5d9a50338d9db646d590198da",
+ "sha256:f5bab211605d91db0e2995a17b5c6ee5edec1270e46223e513eaa20da20076ac",
+ "sha256:f6f8e3fecca256fefc91bb6765a693d96692459d7d4c644660a9fff32e517843",
+ "sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e",
+ "sha256:fa242ac1ff583e4ec7771141606aafc92b361cd90a05c30d93e343a0c2d82a89",
+ "sha256:fab6ce90574645a0d6c58890e9bcaac8d94dff54fb51c69e5522a7358b80ab64"
],
"markers": "python_version >= '3.8'",
- "version": "==0.17.1"
+ "version": "==0.18.1"
},
"scrapy": {
"hashes": [
- "sha256:3cbdedce0c3f0e0482d61be2d7458683be7cd7cf14b0ee6adfbaddb80f5b36a5",
- "sha256:a7f36544d1f5ceb13cff9b7bc904bd7c0fc43a3af0fbe5aa2034fd937cf092d1"
+ "sha256:733a039c7423e52b69bf2810b5332093d4e42a848460359c07b02ecff8f73ebe",
+ "sha256:f1edee0cd214512054c01a8d031a8d213dddb53492b02c9e66256e3efe90d175"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
- "version": "==2.11.0"
+ "version": "==2.11.1"
},
"scrapy-sentry-errors": {
"hashes": [
@@ -702,10 +788,11 @@
},
"sentry-sdk": {
"hashes": [
- "sha256:1bb9cf4ac317906d20787693b5e7f3e42160a90e8bbf1fc544f91c52fa76b68f",
- "sha256:69fc5e7512371547207821d801485f45e3c62db629f02f56f58431a10864ac34"
+ "sha256:95d8c0bb41c8b0bc37ab202c2c4a295bb84398ee05f4cdce55051cd75b926ec1",
+ "sha256:99aeb78fb76771513bd3b2829d12613130152620768d00cd3e45ac00cb17950f"
],
- "version": "==1.40.1"
+ "markers": "python_version >= '3.6'",
+ "version": "==2.1.1"
},
"service-identity": {
"hashes": [
@@ -717,11 +804,11 @@
},
"setuptools": {
"hashes": [
- "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05",
- "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"
+ "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987",
+ "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"
],
"markers": "python_version >= '3.8'",
- "version": "==69.0.3"
+ "version": "==69.5.1"
},
"six": {
"hashes": [
@@ -741,35 +828,35 @@
},
"tldextract": {
"hashes": [
- "sha256:9b6dbf803cb5636397f0203d48541c0da8ba53babaf0e8a6feda2d88746813d4",
- "sha256:b9c4510a8766d377033b6bace7e9f1f17a891383ced3c5d50c150f181e9e1cc2"
+ "sha256:4dfc4c277b6b97fa053899fcdb892d2dc27295851ab5fac4e07797b6a21b2e46",
+ "sha256:c9e17f756f05afb5abac04fe8f766e7e70f9fe387adb1859f0f52408ee060200"
],
"markers": "python_version >= '3.8'",
- "version": "==5.1.1"
+ "version": "==5.1.2"
},
"twisted": {
"hashes": [
- "sha256:32acbd40a94f5f46e7b42c109bfae2b302250945561783a8b7a059048f2d4d31",
- "sha256:86c55f712cc5ab6f6d64e02503352464f0400f66d4f079096d744080afcccbd0"
+ "sha256:039f2e6a49ab5108abd94de187fa92377abe5985c7a72d68d0ad266ba19eae63",
+ "sha256:6b38b6ece7296b5e122c9eb17da2eeab3d98a198f50ca9efd00fb03e5b4fd4ae"
],
- "markers": "python_full_version >= '3.7.1'",
- "version": "==22.10.0"
+ "markers": "python_full_version >= '3.8.0'",
+ "version": "==24.3.0"
},
"typing-extensions": {
"hashes": [
- "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783",
- "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"
+ "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0",
+ "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"
],
"markers": "python_version >= '3.8'",
- "version": "==4.9.0"
+ "version": "==4.11.0"
},
"urllib3": {
"hashes": [
- "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20",
- "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"
+ "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d",
+ "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"
],
"markers": "python_version >= '3.8'",
- "version": "==2.2.0"
+ "version": "==2.2.1"
},
"w3lib": {
"hashes": [
@@ -781,76 +868,76 @@
},
"zope.interface": {
"hashes": [
- "sha256:0c8cf55261e15590065039696607f6c9c1aeda700ceee40c70478552d323b3ff",
- "sha256:13b7d0f2a67eb83c385880489dbb80145e9d344427b4262c49fbf2581677c11c",
- "sha256:1f294a15f7723fc0d3b40701ca9b446133ec713eafc1cc6afa7b3d98666ee1ac",
- "sha256:239a4a08525c080ff833560171d23b249f7f4d17fcbf9316ef4159f44997616f",
- "sha256:2f8d89721834524a813f37fa174bac074ec3d179858e4ad1b7efd4401f8ac45d",
- "sha256:2fdc7ccbd6eb6b7df5353012fbed6c3c5d04ceaca0038f75e601060e95345309",
- "sha256:34c15ca9248f2e095ef2e93af2d633358c5f048c49fbfddf5fdfc47d5e263736",
- "sha256:387545206c56b0315fbadb0431d5129c797f92dc59e276b3ce82db07ac1c6179",
- "sha256:43b576c34ef0c1f5a4981163b551a8781896f2a37f71b8655fd20b5af0386abb",
- "sha256:57d0a8ce40ce440f96a2c77824ee94bf0d0925e6089df7366c2272ccefcb7941",
- "sha256:5a804abc126b33824a44a7aa94f06cd211a18bbf31898ba04bd0924fbe9d282d",
- "sha256:67be3ca75012c6e9b109860820a8b6c9a84bfb036fbd1076246b98e56951ca92",
- "sha256:6af47f10cfc54c2ba2d825220f180cc1e2d4914d783d6fc0cd93d43d7bc1c78b",
- "sha256:6dc998f6de015723196a904045e5a2217f3590b62ea31990672e31fbc5370b41",
- "sha256:70d2cef1bf529bff41559be2de9d44d47b002f65e17f43c73ddefc92f32bf00f",
- "sha256:7ebc4d34e7620c4f0da7bf162c81978fce0ea820e4fa1e8fc40ee763839805f3",
- "sha256:964a7af27379ff4357dad1256d9f215047e70e93009e532d36dcb8909036033d",
- "sha256:97806e9ca3651588c1baaebb8d0c5ee3db95430b612db354c199b57378312ee8",
- "sha256:9b9bc671626281f6045ad61d93a60f52fd5e8209b1610972cf0ef1bbe6d808e3",
- "sha256:9ffdaa5290422ac0f1688cb8adb1b94ca56cee3ad11f29f2ae301df8aecba7d1",
- "sha256:a0da79117952a9a41253696ed3e8b560a425197d4e41634a23b1507efe3273f1",
- "sha256:a41f87bb93b8048fe866fa9e3d0c51e27fe55149035dcf5f43da4b56732c0a40",
- "sha256:aa6fd016e9644406d0a61313e50348c706e911dca29736a3266fc9e28ec4ca6d",
- "sha256:ad54ed57bdfa3254d23ae04a4b1ce405954969c1b0550cc2d1d2990e8b439de1",
- "sha256:b012d023b4fb59183909b45d7f97fb493ef7a46d2838a5e716e3155081894605",
- "sha256:b51b64432eed4c0744241e9ce5c70dcfecac866dff720e746d0a9c82f371dfa7",
- "sha256:bbe81def9cf3e46f16ce01d9bfd8bea595e06505e51b7baf45115c77352675fd",
- "sha256:c9559138690e1bd4ea6cd0954d22d1e9251e8025ce9ede5d0af0ceae4a401e43",
- "sha256:e30506bcb03de8983f78884807e4fd95d8db6e65b69257eea05d13d519b83ac0",
- "sha256:e33e86fd65f369f10608b08729c8f1c92ec7e0e485964670b4d2633a4812d36b",
- "sha256:e441e8b7d587af0414d25e8d05e27040d78581388eed4c54c30c0c91aad3a379",
- "sha256:e8bb9c990ca9027b4214fa543fd4025818dc95f8b7abce79d61dc8a2112b561a",
- "sha256:ef43ee91c193f827e49599e824385ec7c7f3cd152d74cb1dfe02cb135f264d83",
- "sha256:ef467d86d3cfde8b39ea1b35090208b0447caaabd38405420830f7fd85fbdd56",
- "sha256:f89b28772fc2562ed9ad871c865f5320ef761a7fcc188a935e21fe8b31a38ca9",
- "sha256:fddbab55a2473f1d3b8833ec6b7ac31e8211b0aa608df5ab09ce07f3727326de"
+ "sha256:014bb94fe6bf1786da1aa044eadf65bc6437bcb81c451592987e5be91e70a91e",
+ "sha256:01a0b3dd012f584afcf03ed814bce0fc40ed10e47396578621509ac031be98bf",
+ "sha256:10cde8dc6b2fd6a1d0b5ca4be820063e46ddba417ab82bcf55afe2227337b130",
+ "sha256:187f7900b63845dcdef1be320a523dbbdba94d89cae570edc2781eb55f8c2f86",
+ "sha256:1b0c4c90e5eefca2c3e045d9f9ed9f1e2cdbe70eb906bff6b247e17119ad89a1",
+ "sha256:22e8a218e8e2d87d4d9342aa973b7915297a08efbebea5b25900c73e78ed468e",
+ "sha256:26c9a37fb395a703e39b11b00b9e921c48f82b6e32cc5851ad5d0618cd8876b5",
+ "sha256:2bb78c12c1ad3a20c0d981a043d133299117b6854f2e14893b156979ed4e1d2c",
+ "sha256:2c3cfb272bcb83650e6695d49ae0d14dd06dc694789a3d929f23758557a23d92",
+ "sha256:2f32010ffb87759c6a3ad1c65ed4d2e38e51f6b430a1ca11cee901ec2b42e021",
+ "sha256:3c8731596198198746f7ce2a4487a0edcbc9ea5e5918f0ab23c4859bce56055c",
+ "sha256:40aa8c8e964d47d713b226c5baf5f13cdf3a3169c7a2653163b17ff2e2334d10",
+ "sha256:4137025731e824eee8d263b20682b28a0bdc0508de9c11d6c6be54163e5b7c83",
+ "sha256:46034be614d1f75f06e7dcfefba21d609b16b38c21fc912b01a99cb29e58febb",
+ "sha256:483e118b1e075f1819b3c6ace082b9d7d3a6a5eb14b2b375f1b80a0868117920",
+ "sha256:4d6b229f5e1a6375f206455cc0a63a8e502ed190fe7eb15e94a312dc69d40299",
+ "sha256:567d54c06306f9c5b6826190628d66753b9f2b0422f4c02d7c6d2b97ebf0a24e",
+ "sha256:5683aa8f2639016fd2b421df44301f10820e28a9b96382a6e438e5c6427253af",
+ "sha256:600101f43a7582d5b9504a7c629a1185a849ce65e60fca0f6968dfc4b76b6d39",
+ "sha256:62e32f02b3f26204d9c02c3539c802afc3eefb19d601a0987836ed126efb1f21",
+ "sha256:69dedb790530c7ca5345899a1b4cb837cc53ba669051ea51e8c18f82f9389061",
+ "sha256:72d5efecad16c619a97744a4f0b67ce1bcc88115aa82fcf1dc5be9bb403bcc0b",
+ "sha256:8d407e0fd8015f6d5dfad481309638e1968d70e6644e0753f229154667dd6cd5",
+ "sha256:a058e6cf8d68a5a19cb5449f42a404f0d6c2778b897e6ce8fadda9cea308b1b0",
+ "sha256:a1adc14a2a9d5e95f76df625a9b39f4709267a483962a572e3f3001ef90ea6e6",
+ "sha256:a56fe1261230093bfeedc1c1a6cd6f3ec568f9b07f031c9a09f46b201f793a85",
+ "sha256:ad4524289d8dbd6fb5aa17aedb18f5643e7d48358f42c007a5ee51a2afc2a7c5",
+ "sha256:afa0491a9f154cf8519a02026dc85a416192f4cb1efbbf32db4a173ba28b289a",
+ "sha256:bf34840e102d1d0b2d39b1465918d90b312b1119552cebb61a242c42079817b9",
+ "sha256:c40df4aea777be321b7e68facb901bc67317e94b65d9ab20fb96e0eb3c0b60a1",
+ "sha256:d0e7321557c702bd92dac3c66a2f22b963155fdb4600133b6b29597f62b71b12",
+ "sha256:d165d7774d558ea971cb867739fb334faf68fc4756a784e689e11efa3becd59e",
+ "sha256:e78a183a3c2f555c2ad6aaa1ab572d1c435ba42f1dc3a7e8c82982306a19b785",
+ "sha256:e8fa0fb05083a1a4216b4b881fdefa71c5d9a106e9b094cd4399af6b52873e91",
+ "sha256:f83d6b4b22262d9a826c3bd4b2fbfafe1d0000f085ef8e44cd1328eea274ae6a",
+ "sha256:f95bebd0afe86b2adc074df29edb6848fc4d474ff24075e2c263d698774e108d"
],
"markers": "python_version >= '3.7'",
- "version": "==6.1"
+ "version": "==6.3"
}
},
"develop": {
"black": {
"hashes": [
- "sha256:0269dfdea12442022e88043d2910429bed717b2d04523867a85dacce535916b8",
- "sha256:07204d078e25327aad9ed2c64790d681238686bce254c910de640c7cc4fc3aa6",
- "sha256:08b34e85170d368c37ca7bf81cf67ac863c9d1963b2c1780c39102187ec8dd62",
- "sha256:1a95915c98d6e32ca43809d46d932e2abc5f1f7d582ffbe65a5b4d1588af7445",
- "sha256:2588021038bd5ada078de606f2a804cadd0a3cc6a79cb3e9bb3a8bf581325a4c",
- "sha256:2fa6a0e965779c8f2afb286f9ef798df770ba2b6cee063c650b96adec22c056a",
- "sha256:34afe9da5056aa123b8bfda1664bfe6fb4e9c6f311d8e4a6eb089da9a9173bf9",
- "sha256:3897ae5a21ca132efa219c029cce5e6bfc9c3d34ed7e892113d199c0b1b444a2",
- "sha256:40657e1b78212d582a0edecafef133cf1dd02e6677f539b669db4746150d38f6",
- "sha256:48b5760dcbfe5cf97fd4fba23946681f3a81514c6ab8a45b50da67ac8fbc6c7b",
- "sha256:5242ecd9e990aeb995b6d03dc3b2d112d4a78f2083e5a8e86d566340ae80fec4",
- "sha256:5cdc2e2195212208fbcae579b931407c1fa9997584f0a415421748aeafff1168",
- "sha256:5d7b06ea8816cbd4becfe5f70accae953c53c0e53aa98730ceccb0395520ee5d",
- "sha256:7258c27115c1e3b5de9ac6c4f9957e3ee2c02c0b39222a24dc7aa03ba0e986f5",
- "sha256:854c06fb86fd854140f37fb24dbf10621f5dab9e3b0c29a690ba595e3d543024",
- "sha256:a21725862d0e855ae05da1dd25e3825ed712eaaccef6b03017fe0853a01aa45e",
- "sha256:a83fe522d9698d8f9a101b860b1ee154c1d25f8a82ceb807d319f085b2627c5b",
- "sha256:b3d64db762eae4a5ce04b6e3dd745dcca0fb9560eb931a5be97472e38652a161",
- "sha256:e298d588744efda02379521a19639ebcd314fba7a49be22136204d7ed1782717",
- "sha256:e2c8dfa14677f90d976f68e0c923947ae68fa3961d61ee30976c388adc0b02c8",
- "sha256:ecba2a15dfb2d97105be74bbfe5128bc5e9fa8477d8c46766505c1dda5883aac",
- "sha256:fc1ec9aa6f4d98d022101e015261c056ddebe3da6a8ccfc2c792cbe0349d48b7"
+ "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474",
+ "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1",
+ "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0",
+ "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8",
+ "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96",
+ "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1",
+ "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04",
+ "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021",
+ "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94",
+ "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d",
+ "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c",
+ "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7",
+ "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c",
+ "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc",
+ "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7",
+ "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d",
+ "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c",
+ "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741",
+ "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce",
+ "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb",
+ "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063",
+ "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
- "version": "==24.1.1"
+ "version": "==24.4.2"
},
"cfgv": {
"hashes": [
@@ -877,19 +964,19 @@
},
"exceptiongroup": {
"hashes": [
- "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14",
- "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"
+ "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad",
+ "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"
],
"markers": "python_version < '3.11'",
- "version": "==1.2.0"
+ "version": "==1.2.1"
},
"filelock": {
"hashes": [
- "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e",
- "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"
+ "sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f",
+ "sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"
],
"markers": "python_version >= '3.8'",
- "version": "==3.13.1"
+ "version": "==3.14.0"
},
"flake8": {
"hashes": [
@@ -902,20 +989,20 @@
},
"freezegun": {
"hashes": [
- "sha256:10939b0ba0ff5adaecf3b06a5c2f73071d9678e507c5eaedb23c761d56ac774b",
- "sha256:55e0fc3c84ebf0a96a5aa23ff8b53d70246479e9a68863f1fcac5a3e52f19dd6"
+ "sha256:200a64359b363aa3653d8aac289584078386c7c3da77339d257e46a01fb5c77c",
+ "sha256:ec3f4ba030e34eb6cf7e1e257308aee2c60c3d038ff35996d7475760c9ff3719"
],
"index": "pypi",
"markers": "python_version >= '3.7'",
- "version": "==1.4.0"
+ "version": "==1.5.0"
},
"identify": {
"hashes": [
- "sha256:161558f9fe4559e1557e1bff323e8631f6a0e4837f7497767c1782832f16b62d",
- "sha256:d40ce5fcd762817627670da8a7d8d8e65f24342d14539c59488dc603bf662e34"
+ "sha256:37d93f380f4de590500d9dba7db359d0d3da95ffe7f9de1753faa159e71e7dfa",
+ "sha256:e5e00f54165f9047fbebeb4a560f9acfb8af4c88232be60a488e9b68d122745d"
],
"markers": "python_version >= '3.8'",
- "version": "==2.5.33"
+ "version": "==2.5.36"
},
"iniconfig": {
"hashes": [
@@ -960,11 +1047,11 @@
},
"packaging": {
"hashes": [
- "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5",
- "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"
+ "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5",
+ "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"
],
"markers": "python_version >= '3.7'",
- "version": "==23.2"
+ "version": "==24.0"
},
"pathspec": {
"hashes": [
@@ -976,28 +1063,28 @@
},
"platformdirs": {
"hashes": [
- "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068",
- "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"
+ "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf",
+ "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"
],
"markers": "python_version >= '3.8'",
- "version": "==4.2.0"
+ "version": "==4.2.1"
},
"pluggy": {
"hashes": [
- "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981",
- "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"
+ "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1",
+ "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"
],
"markers": "python_version >= '3.8'",
- "version": "==1.4.0"
+ "version": "==1.5.0"
},
"pre-commit": {
"hashes": [
- "sha256:c255039ef399049a5544b6ce13d135caba8f2c28c3b4033277a788f434308376",
- "sha256:d30bad9abf165f7785c15a21a1f46da7d0677cb00ee7ff4c579fd38922efe15d"
+ "sha256:5eae9e10c2b5ac51577c3452ec0a490455c45a0533f7960f993a0d01e59decab",
+ "sha256:e209d61b8acdcf742404408531f0c37d49d2c734fd7cff2d6076083d191cb060"
],
"index": "pypi",
"markers": "python_version >= '3.9'",
- "version": "==3.6.0"
+ "version": "==3.7.0"
},
"pycodestyle": {
"hashes": [
@@ -1017,21 +1104,21 @@
},
"pytest": {
"hashes": [
- "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c",
- "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"
+ "sha256:1733f0620f6cda4095bbf0d9ff8022486e91892245bb9e7d5542c018f612f233",
+ "sha256:d507d4482197eac0ba2bae2e9babf0672eb333017bcedaa5fb1a3d42c1174b3f"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
- "version": "==8.0.0"
+ "version": "==8.2.0"
},
"python-dateutil": {
"hashes": [
- "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86",
- "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"
+ "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3",
+ "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"
],
"index": "pypi",
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
- "version": "==2.8.2"
+ "version": "==2.9.0.post0"
},
"pyyaml": {
"hashes": [
@@ -1092,11 +1179,11 @@
},
"setuptools": {
"hashes": [
- "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05",
- "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"
+ "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987",
+ "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"
],
"markers": "python_version >= '3.8'",
- "version": "==69.0.3"
+ "version": "==69.5.1"
},
"six": {
"hashes": [
@@ -1116,19 +1203,19 @@
},
"typing-extensions": {
"hashes": [
- "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783",
- "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"
+ "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0",
+ "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"
],
"markers": "python_version >= '3.8'",
- "version": "==4.9.0"
+ "version": "==4.11.0"
},
"virtualenv": {
"hashes": [
- "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3",
- "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"
+ "sha256:604bfdceaeece392802e6ae48e69cec49168b9c5f4a44e483963f9242eb0e78b",
+ "sha256:7aa9982a728ae5892558bff6a2839c00b9ed145523ece2274fad6f414690ae75"
],
"markers": "python_version >= '3.7'",
- "version": "==20.25.0"
+ "version": "==20.26.1"
}
}
}
diff --git a/city_scrapers/spiders/chi_low_income_housing_trust_fund.py b/city_scrapers/spiders/chi_low_income_housing_trust_fund.py
index 0d6ac9737..68025ee65 100644
--- a/city_scrapers/spiders/chi_low_income_housing_trust_fund.py
+++ b/city_scrapers/spiders/chi_low_income_housing_trust_fund.py
@@ -1,137 +1,108 @@
import re
-from datetime import datetime
+from datetime import date, datetime
-import scrapy
+import pytz
from city_scrapers_core.constants import BOARD, COMMITTEE, NOT_CLASSIFIED
from city_scrapers_core.items import Meeting
from city_scrapers_core.spiders import CityScrapersSpider
+from icalendar import Calendar
class ChiLowIncomeHousingTrustFundSpider(CityScrapersSpider):
name = "chi_low_income_housing_trust_fund"
agency = "Chicago Low-Income Housing Trust Fund"
timezone = "America/Chicago"
- start_urls = ["http://www.clihtf.org/about-us/upcomingevents/"]
+ start_urls = ["https://clihtf.org/?post_type=tribe_events&ical=1&eventDisplay=list"]
def parse(self, response):
"""
- `parse` should always `yield` Meeting items.
-
- Change the `_parse_title`, `_parse_start`, etc methods to fit your scraping
- needs.
- """
- items = self._parse_calendar(response)
- for item in items:
- # Drop empty links
- if "http" not in item["source"]:
- continue
-
- req = scrapy.Request(
- item["source"],
- callback=self._parse_detail,
- dont_filter=True,
- )
- req.meta["item"] = item
- yield req
-
- # Only go to the next page once, so if query parameters are set, exit
- if "?month" not in response.url:
- yield self._parse_next(response)
-
- def _parse_next(self, response):
- """
- Get next page. You must add logic to `next_url` and
- return a scrapy request.
+ Parse the .ics file and handle data irregularities.
"""
- next_url = response.css(".calendar-next a::attr(href)").extract_first()
- return scrapy.Request(next_url, callback=self.parse, dont_filter=True)
-
- def _parse_calendar(self, response):
- """Parse items on the main calendar page"""
- items = []
- for item in response.css(
- ".day-with-date:not(.no-events), .current-day:not(.no-events)"
- ):
- title = self._parse_title(item)
- if "training" in title.lower():
- continue
- description = self._parse_description(item)
- items.append(
- Meeting(
- title=title,
- description=description,
- classification=self._parse_classification(title),
- all_day=False,
- links=[],
+ cleaned_content = self.clean_ics_data(response.text)
+ try:
+ cal = Calendar.from_ical(cleaned_content)
+ except Exception as e:
+ self.logger.error("Error parsing iCalendar data: %s", e)
+ self.logger.error(
+ "Response content: %s", response.text[:500]
+ ) # Log first 500 chars
+ raise
+
+ for component in cal.walk():
+ # This agency has many 'Administrative Day' events that
+ # are not actual meetings
+ if (
+ component.name == "VEVENT"
+ and "Administrative Day" not in component.get("summary")
+ ):
+ meeting = Meeting(
+ title=component.get("summary").strip(),
+ description=component.get("description", "").strip() or "",
+ classification=self._parse_classification(component.get("summary")),
+ start=self._to_naive(component.get("dtstart").dt),
+ end=self._to_naive(component.get("dtend").dt),
+ all_day=self._is_all_day(
+ component.get("dtstart").dt, component.get("dtend").dt
+ ),
time_notes="",
- source=self._parse_source(item, response.url),
+ location=self._parse_location(component),
+ links=[
+ {
+ "href": component.get("url", "").strip(),
+ "title": "Event Details",
+ }
+ ],
+ source=response.url,
)
- )
- return items
-
- def _parse_detail(self, response):
- """Parse detail page for additional information"""
- meeting = response.meta.get("item", {})
- meeting.update(self._parse_start_end_time(response))
- meeting["location"] = self._parse_location(response)
- meeting["status"] = self._get_status(meeting)
- meeting["id"] = self._get_id(meeting)
- return meeting
-
- def _parse_title(self, item):
- """Parse or generate event title"""
- return item.css(".event-title::text").extract_first()
-
- def _parse_description(self, item):
- """Parse or generate event description"""
- return (
- item.xpath(
- './/span[@class="event-content-break"]/following-sibling::text()'
- ).extract_first()
- or ""
+ meeting["status"] = self._get_status(meeting)
+ meeting["id"] = self._get_id(meeting)
+ yield meeting
+
+ def clean_ics_data(self, ics_content):
+ """Handles a quirk in the ICS file where VTIMEZONE blocks are formatted
+ improperly and cause icalendar parsing errors."""
+ normalized_content = ics_content.replace("\r\n", "\n")
+ cleaned_content = re.sub(
+ r"BEGIN:VTIMEZONE.*?END:VTIMEZONE\n",
+ "",
+ normalized_content,
+ flags=re.DOTALL,
)
+ return cleaned_content
def _parse_classification(self, title):
- """Parse or generate classification (e.g. board, committee, etc)"""
- if "board" in title.lower():
- return BOARD
- if "committe" in title.lower():
+ if "committee" in title.lower():
return COMMITTEE
+ elif "board" in title.lower():
+ return BOARD
return NOT_CLASSIFIED
- def _parse_start_end_time(self, response):
- """Parse start and end datetimes"""
- time_str = response.css(".cc-panel .cc-block > span::text").extract_first()
- time_str = re.sub(r"\s+", " ", time_str)
- date_str = re.search(r"(?<=day, ).*(?= fro)", time_str).group().strip()
- start_str = re.search(r"(?<=from ).*(?= to)", time_str).group().strip()
- end_str = re.search(r"(?<=to ).*(?= \w{3})", time_str).group().strip()
- date_obj = datetime.strptime(date_str, "%B %d, %Y").date()
- start_time = datetime.strptime(start_str, "%I:%M %p").time()
- end_time = datetime.strptime(end_str, "%I:%M %p").time()
- return {
- "start": datetime.combine(date_obj, start_time),
- "end": datetime.combine(date_obj, end_time),
- }
-
- def _parse_location(self, response):
- """Parse or generate location"""
- addr_sel = response.css(
- ".cc-panel .cc-block:nth-child(2) > span:nth-of-type(2)::text"
- )
- if not addr_sel:
- addr_sel = response.css("#span_event_where_multiline p:first-of-type::text")
- addr_lines = addr_sel.extract()
- return {
- "address": " ".join(
- [re.sub(r"\s+", " ", line).strip() for line in addr_lines]
- ),
- "name": "",
- }
-
- def _parse_source(self, item, response_url):
- """Parse or generate source"""
- item_link = item.css(".calnk > a::attr(href)").extract_first()
- if item_link:
- return item_link
- return response_url
+ def _to_naive(self, dt):
+ """Convert timezone-aware datetime to naive datetime in the local timezone,
+ or return the date object if it's a date."""
+ print("dt: ", dt)
+ local_timezone = pytz.timezone(
+ self.timezone
+ ) # Ensure you are using the spider's timezone
+ if isinstance(dt, datetime):
+ if dt.tzinfo is not None:
+ return dt.astimezone(local_timezone).replace(tzinfo=None)
+ return dt
+ elif isinstance(dt, date):
+ # Convert date to datetime for uniform handling
+ return datetime.combine(dt, datetime.min.time(), tzinfo=None)
+ return dt
+
+ def _is_all_day(self, start, end):
+ """Check if the event is an all-day event."""
+ return type(start) is date and (end - start).days == 1
+
+ def _parse_location(self, component):
+ """Parse or generate location."""
+ location = component.get("location", "")
+ if not location:
+ return {
+ "name": "Chicago Low-Income Housing Trust Fund",
+ "address": "77 West Washington Street, Suite 719, Chicago, IL 60602",
+ }
+ return {"name": location, "address": ""}
diff --git a/tests/files/chi_low_income_housing_trust_fund.ics b/tests/files/chi_low_income_housing_trust_fund.ics
new file mode 100644
index 000000000..d9104a788
--- /dev/null
+++ b/tests/files/chi_low_income_housing_trust_fund.ics
@@ -0,0 +1,387 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//CLIHTF - ECPv6.4.0.1//NONSGML v1.0//EN
+CALSCALE:GREGORIAN
+METHOD:PUBLISH
+X-WR-CALNAME:CLIHTF
+X-ORIGINAL-URL:https://clihtf.org
+X-WR-CALDESC:Events for CLIHTF
+REFRESH-INTERVAL;VALUE=DURATION:PT1H
+X-Robots-Tag:noindex
+X-PUBLISHED-TTL:PT1H
+BEGIN:VTIMEZONE
+TZID:UTC
+BEGIN:STANDARD
+TZOFFSETFROM:+0000
+TZOFFSETTO:+0000
+TZNAME:UTC
+DTSTART:20240101T000000
+END:STANDARD
+TZID:America/Chicago
+BEGIN:DAYLIGHT
+TZOFFSETFROM:-0600
+TZOFFSETTO:-0500
+TZNAME:CDT
+DTSTART:20240310T080000
+END:DAYLIGHT
+BEGIN:STANDARD
+TZOFFSETFROM:-0500
+TZOFFSETTO:-0600
+TZNAME:CST
+DTSTART:20241103T070000
+END:STANDARD
+END:VTIMEZONE
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240508
+DTEND;VALUE=DATE:20240509
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9972125171-0046215171-34000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-05-08/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;TZID=America/Chicago:20240509T083000
+DTEND;TZID=America/Chicago:20240509T093000
+DTSTAMP:20240507T154440
+CREATED:20240502T153248Z
+LAST-MODIFIED:20240502T153248Z
+UID:gro.fthilc@0007425171-0043425171-39200001
+SUMMARY:Outreach Meeting
+DESCRIPTION:
+URL:https://clihtf.org/event/outreach-meeting-4/
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;TZID=America/Chicago:20240509T153000
+DTEND;TZID=America/Chicago:20240509T163000
+DTSTAMP:20240507T154440
+CREATED:20240502T153206Z
+LAST-MODIFIED:20240502T153206Z
+UID:gro.fthilc@0022725171-0068625171-29200001
+SUMMARY:Finance Meeting
+DESCRIPTION:
+URL:https://clihtf.org/event/finance-meeting-4/
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;TZID=America/Chicago:20240514T083000
+DTEND;TZID=America/Chicago:20240514T093000
+DTSTAMP:20240507T154440
+CREATED:20240502T153350Z
+LAST-MODIFIED:20240502T153350Z
+UID:gro.fthilc@0009765171-0045765171-49200001
+SUMMARY:Executive Committee Meeting
+DESCRIPTION:
+URL:https://clihtf.org/event/executive-committee-meeting/
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240515
+DTEND;VALUE=DATE:20240516
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9957185171-0021375171-44000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-05-15/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240522
+DTEND;VALUE=DATE:20240523
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9932246171-0006336171-54000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-05-22/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240529
+DTEND;VALUE=DATE:20240530
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9917207171-0080496171-64000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-05-29/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;TZID=America/Chicago:20240604T140000
+DTEND;TZID=America/Chicago:20240604T150000
+DTSTAMP:20240507T154440
+CREATED:20240502T153539Z
+LAST-MODIFIED:20240502T153539Z
+UID:gro.fthilc@0023157171-0069057171-59200001
+SUMMARY:Allocations Meeting
+DESCRIPTION:
+URL:https://clihtf.org/event/allocations-meeting-5/
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240605
+DTEND;VALUE=DATE:20240606
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9991367171-0065457171-74000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-06-05/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;TZID=America/Chicago:20240606T083000
+DTEND;TZID=America/Chicago:20240606T093000
+DTSTAMP:20240507T154440
+CREATED:20240502T153722Z
+LAST-MODIFIED:20240502T153722Z
+UID:gro.fthilc@0026667171-0062667171-79200001
+SUMMARY:Outreach Meeting
+DESCRIPTION:
+URL:https://clihtf.org/event/outreach-meeting-5/
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;TZID=America/Chicago:20240606T153000
+DTEND;TZID=America/Chicago:20240606T163000
+DTSTAMP:20240507T154440
+CREATED:20240502T153634Z
+LAST-MODIFIED:20240502T153634Z
+UID:gro.fthilc@0041967171-0087867171-69200001
+SUMMARY:Finance Meeting
+DESCRIPTION:
+URL:https://clihtf.org/event/finance-meeting-5/
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;TZID=America/Chicago:20240611T083000
+DTEND;TZID=America/Chicago:20240611T093000
+DTSTAMP:20240507T154440
+CREATED:20240502T153815Z
+LAST-MODIFIED:20240502T153815Z
+UID:gro.fthilc@0028908171-0064908171-89200001
+SUMMARY:Executive Committee Meeting
+DESCRIPTION:
+URL:https://clihtf.org/event/executive-committee-meeting-2/
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240612
+DTEND;VALUE=DATE:20240613
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9976328171-0040518171-84000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-06-12/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240619
+DTEND;VALUE=DATE:20240620
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9951488171-0025578171-94000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-06-19/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240626
+DTEND;VALUE=DATE:20240627
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9936449171-0000639171-05000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-06-26/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240703
+DTEND;VALUE=DATE:20240704
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9911500271-0084699171-15000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-07-03/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240710
+DTEND;VALUE=DATE:20240711
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9995560271-0069650271-25000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-07-10/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240717
+DTEND;VALUE=DATE:20240718
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9970621271-0044711271-35000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-07-17/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240724
+DTEND;VALUE=DATE:20240725
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9955681271-0029771271-45000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-07-24/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240731
+DTEND;VALUE=DATE:20240801
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9930742271-0004832271-55000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-07-31/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240807
+DTEND;VALUE=DATE:20240808
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9915703271-0088892271-65000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-08-07/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240814
+DTEND;VALUE=DATE:20240815
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9999763271-0063953271-75000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-08-14/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240821
+DTEND;VALUE=DATE:20240822
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9974824271-0048914271-85000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-08-21/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240828
+DTEND;VALUE=DATE:20240829
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9959884271-0023084271-95000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-08-28/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240904
+DTEND;VALUE=DATE:20240905
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9934945271-0008045271-06000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-09-04/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240911
+DTEND;VALUE=DATE:20240912
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9919906271-0082106271-16000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-09-11/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240918
+DTEND;VALUE=DATE:20240919
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9993076271-0067166271-26000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-09-18/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20240925
+DTEND;VALUE=DATE:20240926
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9978037271-0042227271-36000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-09-25/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20241002
+DTEND;VALUE=DATE:20241003
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9953197271-0027287271-46000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-10-02/
+CATEGORIES:Administrative Day
+END:VEVENT
+BEGIN:VEVENT
+DTSTART;VALUE=DATE:20241009
+DTEND;VALUE=DATE:20241010
+DTSTAMP:20240507T154440
+CREATED:20230731T203806Z
+LAST-MODIFIED:20230731T203807Z
+UID:gro.fthilc@9938158271-0002348271-56000001
+SUMMARY:Administrative Day
+DESCRIPTION:Office Closed
+URL:https://clihtf.org/event/administrative-day-2-2/2024-10-09/
+CATEGORIES:Administrative Day
+END:VEVENT
+END:VCALENDAR
\ No newline at end of file
diff --git a/tests/test_chi_low_income_housing_trust_fund.py b/tests/test_chi_low_income_housing_trust_fund.py
index 6b5a88f35..0d71b06b1 100644
--- a/tests/test_chi_low_income_housing_trust_fund.py
+++ b/tests/test_chi_low_income_housing_trust_fund.py
@@ -1,8 +1,8 @@
from datetime import datetime
from os.path import dirname, join
-import pytest
-from city_scrapers_core.constants import BOARD, COMMITTEE, PASSED
+import pytest # noqa
+from city_scrapers_core.constants import NOT_CLASSIFIED, TENTATIVE
from city_scrapers_core.utils import file_response
from freezegun import freeze_time
@@ -10,73 +10,78 @@
ChiLowIncomeHousingTrustFundSpider,
)
-freezer = freeze_time("2018-10-31")
+# Simulate the current date at the time of testing
+freezer = freeze_time("2024-05-07")
freezer.start()
+
+# Initialize the spider
spider = ChiLowIncomeHousingTrustFundSpider()
+# Simulate a file response with a sample ics file
cal_res = file_response(
- join(dirname(__file__), "files", "chi_low_income_housing_trust_fund.html")
+ join(dirname(__file__), "files", "chi_low_income_housing_trust_fund.ics"),
+ url="https://clihtf.org/?post_type=tribe_events&ical=1&eventDisplay=list",
)
-parsed_items = []
-for item in spider._parse_calendar(cal_res):
- detail_res = file_response(
- join(
- dirname(__file__), "files", "chi_low_income_housing_trust_fund_detail.html"
- )
- )
- detail_res.meta["item"] = item
- parsed_items.append(spider._parse_detail(detail_res))
+parsed_items = [item for item in spider.parse(cal_res)]
+
freezer.stop()
+# Test for event title
def test_title():
- assert parsed_items[0]["title"] == "Finance Committee"
- assert parsed_items[1]["title"] == "Allocations Committee"
- assert parsed_items[2]["title"] == "Board Meeting"
+ assert parsed_items[0]["title"] == "Outreach Meeting"
+# Test for event start datetime
def test_start():
- assert parsed_items[0]["start"] == datetime(2018, 10, 4, 10, 0)
+ assert parsed_items[0]["start"] == datetime(2024, 5, 9, 8, 30)
+# Test for event end datetime
def test_end():
- assert parsed_items[0]["end"] == datetime(2018, 10, 4, 11, 0)
+ assert parsed_items[0]["end"] == datetime(2024, 5, 9, 9, 30)
+# Test for unique event ID
def test_id():
- assert parsed_items[0]["id"] == (
- "chi_low_income_housing_trust_fund/201810041000/x/finance_committee"
+ assert (
+ parsed_items[0]["id"]
+ == "chi_low_income_housing_trust_fund/202405090830/x/outreach_meeting"
)
+# Test for classification of the event
def test_classification():
- assert parsed_items[0]["classification"] == COMMITTEE
- assert parsed_items[2]["classification"] == BOARD
+ assert parsed_items[0]["classification"] == NOT_CLASSIFIED
+# Test for event status
def test_status():
- assert parsed_items[0]["status"] == PASSED
+ assert parsed_items[0]["status"] == TENTATIVE
+# Test for event description
def test_description():
- assert parsed_items[0]["description"] == (
- "Meeting of the CLIHTF Finance Committee. To attend, send Name and "
- "Planned Attendance Date to info@chicagotrustfund.org. Regular "
- "Meeting Location: Chicago City Hall, Rm. 1006c."
- )
+ assert parsed_items[0]["description"] == ""
+# Test for location details
def test_location():
assert parsed_items[0]["location"] == {
- "address": "121 N. La Salle - Room 1006 Chicago, IL 60602",
- "name": "",
+ "name": "Chicago Low-Income Housing Trust Fund",
+ "address": "77 West Washington Street, Suite 719, Chicago, IL 60602",
}
-@pytest.mark.parametrize("item", parsed_items)
-def test_links(item):
- assert item["links"] == []
+# Test for links associated with the event
+def test_links():
+ assert parsed_items[0]["links"] == [
+ {
+ "href": "https://clihtf.org/event/outreach-meeting-4/",
+ "title": "Event Details",
+ }
+ ]
-@pytest.mark.parametrize("item", parsed_items)
-def test_all_day(item):
- assert item["all_day"] is False
+# Test if the event is marked as all day
+def test_all_day():
+ assert parsed_items[0]["all_day"] is False