diff --git a/backend/Dockerfile b/backend/Dockerfile index 4c5afed3e..9f27dfd05 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -8,6 +8,10 @@ COPY Pipfile* /app/ # Install project dependencies RUN pipenv install --system --deploy + +# Install system dependencies to support GeoDjango +RUN apt-get update && apt-get install -y gdal-bin libgdal-dev python3-gdal binutils libproj-dev + # Copy project files COPY . /app/ diff --git a/backend/Dockerfile.dev b/backend/Dockerfile.dev index 75952d067..9fcfb08cb 100644 --- a/backend/Dockerfile.dev +++ b/backend/Dockerfile.dev @@ -7,8 +7,12 @@ WORKDIR /backend # Copy project dependencies COPY Pipfile* ./ + # Install backend dependencies RUN pipenv install --dev +# Install system dependencies for GeoDjango +RUN apt-get update && apt-get install -y gdal-bin libgdal-dev python3-gdal binutils libproj-dev + # Alias runserver command RUN echo 'alias runserver="python manage.py runserver 0.0.0.0:8000"' >> ~/.bashrc diff --git a/backend/PennCourses/docs_settings.py b/backend/PennCourses/docs_settings.py index 2115813a0..80d99f96a 100644 --- a/backend/PennCourses/docs_settings.py +++ b/backend/PennCourses/docs_settings.py @@ -260,7 +260,10 @@ def get_url_by_name(name): - path = get_resolver().reverse_dict[name][0][0][0] + reverse = get_resolver().reverse_dict + if name not in reverse: + raise ValueError(f"Tried to get URL by name '{reverse}', but no such URL exists.") + path = reverse[name][0][0][0] path = path.replace(r"%(pk)s", r"{id}") return "/" + re.sub(r"%\(([^)]+)\)s", r"{\1}", path) diff --git a/backend/PennCourses/settings/base.py b/backend/PennCourses/settings/base.py index 06163cf13..f1e01cfd8 100644 --- a/backend/PennCourses/settings/base.py +++ b/backend/PennCourses/settings/base.py @@ -42,6 +42,7 @@ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", + "django.contrib.gis", "rest_framework", "corsheaders", "shortener.apps.ShortenerConfig", @@ -93,7 +94,7 @@ DATABASES = { "default": dj_database_url.config( # this is overriden by the DATABASE_URL env var - default="postgres://penn-courses:postgres@localhost:5432/postgres" + default="postgis://penn-courses:postgres@localhost:5432/postgres" ) } @@ -228,3 +229,6 @@ ROUGH_MINIMUM_DEMAND_DISTRIBUTION_ESTIMATES = ( 200 # Aim for at least 200 demand distribution estimates over the course of a semester ) + +# GeoDjango GDAL Settings +GDAL_LIBRARY_PATH = os.environ.get("GDAL_LIBRARY_PATH", "") diff --git a/backend/Pipfile b/backend/Pipfile index b1e5ca360..3e5dfabff 100644 --- a/backend/Pipfile +++ b/backend/Pipfile @@ -18,7 +18,6 @@ black = "==22.3.0" [packages] click = "==8.0.4" django = ">=3.2" -psycopg2 = "*" requests = "*" twilio = "*" channels = "<3" diff --git a/backend/Pipfile.lock b/backend/Pipfile.lock index b96c513c4..b7feed57f 100644 --- a/backend/Pipfile.lock +++ b/backend/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "d4090a037c6aae1bcab5e7e9bf063f1c9675ad9cea7377fa8f8a805e354b4e4a" + "sha256": "183bfd747dfd30c3e51a34143a675899dc07b2e5ec92a893dac0a7fe0f2827ab" }, "pipfile-spec": 6, "requires": { @@ -18,96 +18,96 @@ "default": { "aiohttp": { "hashes": [ - "sha256:00ad4b6f185ec67f3e6562e8a1d2b69660be43070bd0ef6fcec5211154c7df67", - "sha256:0175d745d9e85c40dcc51c8f88c74bfbaef9e7afeeeb9d03c37977270303064c", - "sha256:01d4c0c874aa4ddfb8098e85d10b5e875a70adc63db91f1ae65a4b04d3344cda", - "sha256:043d2299f6dfdc92f0ac5e995dfc56668e1587cea7f9aa9d8a78a1b6554e5755", - "sha256:0c413c633d0512df4dc7fd2373ec06cc6a815b7b6d6c2f208ada7e9e93a5061d", - "sha256:0d21c684808288a98914e5aaf2a7c6a3179d4df11d249799c32d1808e79503b5", - "sha256:0e584a10f204a617d71d359fe383406305a4b595b333721fa50b867b4a0a1548", - "sha256:1274477e4c71ce8cfe6c1ec2f806d57c015ebf84d83373676036e256bc55d690", - "sha256:13bf85afc99ce6f9ee3567b04501f18f9f8dbbb2ea11ed1a2e079670403a7c84", - "sha256:153c2549f6c004d2754cc60603d4668899c9895b8a89397444a9c4efa282aaf4", - "sha256:1f7372f7341fcc16f57b2caded43e81ddd18df53320b6f9f042acad41f8e049a", - "sha256:23fb25a9f0a1ca1f24c0a371523546366bb642397c94ab45ad3aedf2941cec6a", - "sha256:28c543e54710d6158fc6f439296c7865b29e0b616629767e685a7185fab4a6b9", - "sha256:2a482e6da906d5e6e653be079b29bc173a48e381600161c9932d89dfae5942ef", - "sha256:2ad5c3c4590bb3cc28b4382f031f3783f25ec223557124c68754a2231d989e2b", - "sha256:2ce2ac5708501afc4847221a521f7e4b245abf5178cf5ddae9d5b3856ddb2f3a", - "sha256:2cf57fb50be5f52bda004b8893e63b48530ed9f0d6c96c84620dc92fe3cd9b9d", - "sha256:2e1b1e51b0774408f091d268648e3d57f7260c1682e7d3a63cb00d22d71bb945", - "sha256:2e2e9839e14dd5308ee773c97115f1e0a1cb1d75cbeeee9f33824fa5144c7634", - "sha256:2e460be6978fc24e3df83193dc0cc4de46c9909ed92dd47d349a452ef49325b7", - "sha256:312fcfbacc7880a8da0ae8b6abc6cc7d752e9caa0051a53d217a650b25e9a691", - "sha256:33279701c04351a2914e1100b62b2a7fdb9a25995c4a104259f9a5ead7ed4802", - "sha256:33776e945d89b29251b33a7e7d006ce86447b2cfd66db5e5ded4e5cd0340585c", - "sha256:34dd0c107799dcbbf7d48b53be761a013c0adf5571bf50c4ecad5643fe9cfcd0", - "sha256:3562b06567c06439d8b447037bb655ef69786c590b1de86c7ab81efe1c9c15d8", - "sha256:368a42363c4d70ab52c2c6420a57f190ed3dfaca6a1b19afda8165ee16416a82", - "sha256:4149d34c32f9638f38f544b3977a4c24052042affa895352d3636fa8bffd030a", - "sha256:461908b2578955045efde733719d62f2b649c404189a09a632d245b445c9c975", - "sha256:4a01951fabc4ce26ab791da5f3f24dca6d9a6f24121746eb19756416ff2d881b", - "sha256:4e874cbf8caf8959d2adf572a78bba17cb0e9d7e51bb83d86a3697b686a0ab4d", - "sha256:4f21e83f355643c345177a5d1d8079f9f28b5133bcd154193b799d380331d5d3", - "sha256:5443910d662db951b2e58eb70b0fbe6b6e2ae613477129a5805d0b66c54b6cb7", - "sha256:5798a9aad1879f626589f3df0f8b79b3608a92e9beab10e5fda02c8a2c60db2e", - "sha256:5d20003b635fc6ae3f96d7260281dfaf1894fc3aa24d1888a9b2628e97c241e5", - "sha256:5db3a5b833764280ed7618393832e0853e40f3d3e9aa128ac0ba0f8278d08649", - "sha256:5ed1c46fb119f1b59304b5ec89f834f07124cd23ae5b74288e364477641060ff", - "sha256:62360cb771707cb70a6fd114b9871d20d7dd2163a0feafe43fd115cfe4fe845e", - "sha256:6809a00deaf3810e38c628e9a33271892f815b853605a936e2e9e5129762356c", - "sha256:68c5a82c8779bdfc6367c967a4a1b2aa52cd3595388bf5961a62158ee8a59e22", - "sha256:6e4a280e4b975a2e7745573e3fc9c9ba0d1194a3738ce1cbaa80626cc9b4f4df", - "sha256:6e6783bcc45f397fdebc118d772103d751b54cddf5b60fbcc958382d7dd64f3e", - "sha256:72a860c215e26192379f57cae5ab12b168b75db8271f111019509a1196dfc780", - "sha256:7607ec3ce4993464368505888af5beb446845a014bc676d349efec0e05085905", - "sha256:773dd01706d4db536335fcfae6ea2440a70ceb03dd3e7378f3e815b03c97ab51", - "sha256:78d847e4cde6ecc19125ccbc9bfac4a7ab37c234dd88fbb3c5c524e8e14da543", - "sha256:7dde0009408969a43b04c16cbbe252c4f5ef4574ac226bc8815cd7342d2028b6", - "sha256:80bd372b8d0715c66c974cf57fe363621a02f359f1ec81cba97366948c7fc873", - "sha256:841cd8233cbd2111a0ef0a522ce016357c5e3aff8a8ce92bcfa14cef890d698f", - "sha256:84de26ddf621d7ac4c975dbea4c945860e08cccde492269db4e1538a6a6f3c35", - "sha256:84f8ae3e09a34f35c18fa57f015cc394bd1389bce02503fb30c394d04ee6b938", - "sha256:8af740fc2711ad85f1a5c034a435782fbd5b5f8314c9a3ef071424a8158d7f6b", - "sha256:8b929b9bd7cd7c3939f8bcfffa92fae7480bd1aa425279d51a89327d600c704d", - "sha256:910bec0c49637d213f5d9877105d26e0c4a4de2f8b1b29405ff37e9fc0ad52b8", - "sha256:96943e5dcc37a6529d18766597c491798b7eb7a61d48878611298afc1fca946c", - "sha256:a0215ce6041d501f3155dc219712bc41252d0ab76474615b9700d63d4d9292af", - "sha256:a3cf433f127efa43fee6b90ea4c6edf6c4a17109d1d037d1a52abec84d8f2e42", - "sha256:a6ce61195c6a19c785df04e71a4537e29eaa2c50fe745b732aa937c0c77169f3", - "sha256:a7a75ef35f2df54ad55dbf4b73fe1da96f370e51b10c91f08b19603c64004acc", - "sha256:a94159871304770da4dd371f4291b20cac04e8c94f11bdea1c3478e557fbe0d8", - "sha256:aa1990247f02a54185dc0dff92a6904521172a22664c863a03ff64c42f9b5410", - "sha256:ab88bafedc57dd0aab55fa728ea10c1911f7e4d8b43e1d838a1739f33712921c", - "sha256:ad093e823df03bb3fd37e7dec9d4670c34f9e24aeace76808fc20a507cace825", - "sha256:ae871a964e1987a943d83d6709d20ec6103ca1eaf52f7e0d36ee1b5bebb8b9b9", - "sha256:b0ba0d15164eae3d878260d4c4df859bbdc6466e9e6689c344a13334f988bb53", - "sha256:b5411d82cddd212644cf9360879eb5080f0d5f7d809d03262c50dad02f01421a", - "sha256:b9552ec52cc147dbf1944ac7ac98af7602e51ea2dcd076ed194ca3c0d1c7d0bc", - "sha256:bfb9162dcf01f615462b995a516ba03e769de0789de1cadc0f916265c257e5d8", - "sha256:c0a9034379a37ae42dea7ac1e048352d96286626251862e448933c0f59cbd79c", - "sha256:c1161b345c0a444ebcf46bf0a740ba5dcf50612fd3d0528883fdc0eff578006a", - "sha256:c11f5b099adafb18e65c2c997d57108b5bbeaa9eeee64a84302c0978b1ec948b", - "sha256:c44e65da1de4403d0576473e2344828ef9c4c6244d65cf4b75549bb46d40b8dd", - "sha256:c48c5c0271149cfe467c0ff8eb941279fd6e3f65c9a388c984e0e6cf57538e14", - "sha256:c7a815258e5895d8900aec4454f38dca9aed71085f227537208057853f9d13f2", - "sha256:cae533195e8122584ec87531d6df000ad07737eaa3c81209e85c928854d2195c", - "sha256:cc14be025665dba6202b6a71cfcdb53210cc498e50068bc088076624471f8bb9", - "sha256:cd56db019015b6acfaaf92e1ac40eb8434847d9bf88b4be4efe5bfd260aee692", - "sha256:d827176898a2b0b09694fbd1088c7a31836d1a505c243811c87ae53a3f6273c1", - "sha256:df72ac063b97837a80d80dec8d54c241af059cc9bb42c4de68bd5b61ceb37caa", - "sha256:e5980a746d547a6ba173fd5ee85ce9077e72d118758db05d229044b469d9029a", - "sha256:e5d47ae48db0b2dcf70bc8a3bc72b3de86e2a590fc299fdbbb15af320d2659de", - "sha256:e91d635961bec2d8f19dfeb41a539eb94bd073f075ca6dae6c8dc0ee89ad6f91", - "sha256:ea353162f249c8097ea63c2169dd1aa55de1e8fecbe63412a9bc50816e87b761", - "sha256:eaeed7abfb5d64c539e2db173f63631455f1196c37d9d8d873fc316470dfbacd", - "sha256:eca4bf3734c541dc4f374ad6010a68ff6c6748f00451707f39857f429ca36ced", - "sha256:f83a552443a526ea38d064588613aca983d0ee0038801bc93c0c916428310c28", - "sha256:fb1558def481d84f03b45888473fc5a1f35747b5f334ef4e7a571bc0dfcb11f8", - "sha256:fd1ed388ea7fbed22c4968dd64bab0198de60750a25fe8c0c9d4bef5abe13824" + "sha256:002f23e6ea8d3dd8d149e569fd580c999232b5fbc601c48d55398fbc2e582e8c", + "sha256:01770d8c04bd8db568abb636c1fdd4f7140b284b8b3e0b4584f070180c1e5c62", + "sha256:0912ed87fee967940aacc5306d3aa8ba3a459fcd12add0b407081fbefc931e53", + "sha256:0cccd1de239afa866e4ce5c789b3032442f19c261c7d8a01183fd956b1935349", + "sha256:0fa375b3d34e71ccccf172cab401cd94a72de7a8cc01847a7b3386204093bb47", + "sha256:13da35c9ceb847732bf5c6c5781dcf4780e14392e5d3b3c689f6d22f8e15ae31", + "sha256:14cd52ccf40006c7a6cd34a0f8663734e5363fd981807173faf3a017e202fec9", + "sha256:16d330b3b9db87c3883e565340d292638a878236418b23cc8b9b11a054aaa887", + "sha256:1bed815f3dc3d915c5c1e556c397c8667826fbc1b935d95b0ad680787896a358", + "sha256:1d84166673694841d8953f0a8d0c90e1087739d24632fe86b1a08819168b4566", + "sha256:1f13f60d78224f0dace220d8ab4ef1dbc37115eeeab8c06804fec11bec2bbd07", + "sha256:229852e147f44da0241954fc6cb910ba074e597f06789c867cb7fb0621e0ba7a", + "sha256:253bf92b744b3170eb4c4ca2fa58f9c4b87aeb1df42f71d4e78815e6e8b73c9e", + "sha256:255ba9d6d5ff1a382bb9a578cd563605aa69bec845680e21c44afc2670607a95", + "sha256:2817b2f66ca82ee699acd90e05c95e79bbf1dc986abb62b61ec8aaf851e81c93", + "sha256:2b8d4e166e600dcfbff51919c7a3789ff6ca8b3ecce16e1d9c96d95dd569eb4c", + "sha256:2d5b785c792802e7b275c420d84f3397668e9d49ab1cb52bd916b3b3ffcf09ad", + "sha256:3161ce82ab85acd267c8f4b14aa226047a6bee1e4e6adb74b798bd42c6ae1f80", + "sha256:33164093be11fcef3ce2571a0dccd9041c9a93fa3bde86569d7b03120d276c6f", + "sha256:39a312d0e991690ccc1a61f1e9e42daa519dcc34ad03eb6f826d94c1190190dd", + "sha256:3b2ab182fc28e7a81f6c70bfbd829045d9480063f5ab06f6e601a3eddbbd49a0", + "sha256:3c68330a59506254b556b99a91857428cab98b2f84061260a67865f7f52899f5", + "sha256:3f0e27e5b733803333bb2371249f41cf42bae8884863e8e8965ec69bebe53132", + "sha256:3f5c7ce535a1d2429a634310e308fb7d718905487257060e5d4598e29dc17f0b", + "sha256:3fd194939b1f764d6bb05490987bfe104287bbf51b8d862261ccf66f48fb4096", + "sha256:41bdc2ba359032e36c0e9de5a3bd00d6fb7ea558a6ce6b70acedf0da86458321", + "sha256:41d55fc043954cddbbd82503d9cc3f4814a40bcef30b3569bc7b5e34130718c1", + "sha256:42c89579f82e49db436b69c938ab3e1559e5a4409eb8639eb4143989bc390f2f", + "sha256:45ad816b2c8e3b60b510f30dbd37fe74fd4a772248a52bb021f6fd65dff809b6", + "sha256:4ac39027011414dbd3d87f7edb31680e1f430834c8cef029f11c66dad0670aa5", + "sha256:4d4cbe4ffa9d05f46a28252efc5941e0462792930caa370a6efaf491f412bc66", + "sha256:4fcf3eabd3fd1a5e6092d1242295fa37d0354b2eb2077e6eb670accad78e40e1", + "sha256:5d791245a894be071d5ab04bbb4850534261a7d4fd363b094a7b9963e8cdbd31", + "sha256:6c43ecfef7deaf0617cee936836518e7424ee12cb709883f2c9a1adda63cc460", + "sha256:6c5f938d199a6fdbdc10bbb9447496561c3a9a565b43be564648d81e1102ac22", + "sha256:6e2f9cc8e5328f829f6e1fb74a0a3a939b14e67e80832975e01929e320386b34", + "sha256:713103a8bdde61d13490adf47171a1039fd880113981e55401a0f7b42c37d071", + "sha256:71783b0b6455ac8f34b5ec99d83e686892c50498d5d00b8e56d47f41b38fbe04", + "sha256:76b36b3124f0223903609944a3c8bf28a599b2cc0ce0be60b45211c8e9be97f8", + "sha256:7bc88fc494b1f0311d67f29fee6fd636606f4697e8cc793a2d912ac5b19aa38d", + "sha256:7ee912f7e78287516df155f69da575a0ba33b02dd7c1d6614dbc9463f43066e3", + "sha256:86f20cee0f0a317c76573b627b954c412ea766d6ada1a9fcf1b805763ae7feeb", + "sha256:89341b2c19fb5eac30c341133ae2cc3544d40d9b1892749cdd25892bbc6ac951", + "sha256:8a9b5a0606faca4f6cc0d338359d6fa137104c337f489cd135bb7fbdbccb1e39", + "sha256:8d399dade330c53b4106160f75f55407e9ae7505263ea86f2ccca6bfcbdb4921", + "sha256:8e31e9db1bee8b4f407b77fd2507337a0a80665ad7b6c749d08df595d88f1cf5", + "sha256:90c72ebb7cb3a08a7f40061079817133f502a160561d0675b0a6adf231382c92", + "sha256:918810ef188f84152af6b938254911055a72e0f935b5fbc4c1a4ed0b0584aed1", + "sha256:93c15c8e48e5e7b89d5cb4613479d144fda8344e2d886cf694fd36db4cc86865", + "sha256:96603a562b546632441926cd1293cfcb5b69f0b4159e6077f7c7dbdfb686af4d", + "sha256:99c5ac4ad492b4a19fc132306cd57075c28446ec2ed970973bbf036bcda1bcc6", + "sha256:9c19b26acdd08dd239e0d3669a3dddafd600902e37881f13fbd8a53943079dbc", + "sha256:9de50a199b7710fa2904be5a4a9b51af587ab24c8e540a7243ab737b45844543", + "sha256:9e2ee0ac5a1f5c7dd3197de309adfb99ac4617ff02b0603fd1e65b07dc772e4b", + "sha256:a2ece4af1f3c967a4390c284797ab595a9f1bc1130ef8b01828915a05a6ae684", + "sha256:a3628b6c7b880b181a3ae0a0683698513874df63783fd89de99b7b7539e3e8a8", + "sha256:ad1407db8f2f49329729564f71685557157bfa42b48f4b93e53721a16eb813ed", + "sha256:b04691bc6601ef47c88f0255043df6f570ada1a9ebef99c34bd0b72866c217ae", + "sha256:b0cf2a4501bff9330a8a5248b4ce951851e415bdcce9dc158e76cfd55e15085c", + "sha256:b2fe42e523be344124c6c8ef32a011444e869dc5f883c591ed87f84339de5976", + "sha256:b30e963f9e0d52c28f284d554a9469af073030030cef8693106d918b2ca92f54", + "sha256:bb54c54510e47a8c7c8e63454a6acc817519337b2b78606c4e840871a3e15349", + "sha256:bd111d7fc5591ddf377a408ed9067045259ff2770f37e2d94e6478d0f3fc0c17", + "sha256:bdf70bfe5a1414ba9afb9d49f0c912dc524cf60141102f3a11143ba3d291870f", + "sha256:ca80e1b90a05a4f476547f904992ae81eda5c2c85c66ee4195bb8f9c5fb47f28", + "sha256:caf486ac1e689dda3502567eb89ffe02876546599bbf915ec94b1fa424eeffd4", + "sha256:ccc360e87341ad47c777f5723f68adbb52b37ab450c8bc3ca9ca1f3e849e5fe2", + "sha256:d25036d161c4fe2225d1abff2bd52c34ed0b1099f02c208cd34d8c05729882f0", + "sha256:d52d5dc7c6682b720280f9d9db41d36ebe4791622c842e258c9206232251ab2b", + "sha256:d67f8baed00870aa390ea2590798766256f31dc5ed3ecc737debb6e97e2ede78", + "sha256:d76e8b13161a202d14c9584590c4df4d068c9567c99506497bdd67eaedf36403", + "sha256:d95fc1bf33a9a81469aa760617b5971331cdd74370d1214f0b3109272c0e1e3c", + "sha256:de6a1c9f6803b90e20869e6b99c2c18cef5cc691363954c93cb9adeb26d9f3ae", + "sha256:e1d8cb0b56b3587c5c01de3bf2f600f186da7e7b5f7353d1bf26a8ddca57f965", + "sha256:e2a988a0c673c2e12084f5e6ba3392d76c75ddb8ebc6c7e9ead68248101cd446", + "sha256:e3f1e3f1a1751bb62b4a1b7f4e435afcdade6c17a4fd9b9d43607cebd242924a", + "sha256:e6a00ffcc173e765e200ceefb06399ba09c06db97f401f920513a10c803604ca", + "sha256:e827d48cf802de06d9c935088c2924e3c7e7533377d66b6f31ed175c1620e05e", + "sha256:ebf3fd9f141700b510d4b190094db0ce37ac6361a6806c153c161dc6c041ccda", + "sha256:ec00c3305788e04bf6d29d42e504560e159ccaf0be30c09203b468a6c1ccd3b2", + "sha256:ec4fd86658c6a8964d75426517dc01cbf840bbf32d055ce64a9e63a40fd7b771", + "sha256:efd2fcf7e7b9d7ab16e6b7d54205beded0a9c8566cb30f09c1abe42b4e22bdcb", + "sha256:f0f03211fd14a6a0aed2997d4b1c013d49fb7b50eeb9ffdf5e51f23cfe2c77fa", + "sha256:f628dbf3c91e12f4d6c8b3f092069567d8eb17814aebba3d7d60c149391aee3a", + "sha256:f8ef51e459eb2ad8e7a66c1d6440c808485840ad55ecc3cafefadea47d1b1ba2", + "sha256:fc37e9aef10a696a5a4474802930079ccfc14d9f9c10b4662169671ff034b7df", + "sha256:fdee8405931b0615220e5ddf8cd7edd8592c606a8e4ca2a00704883c396e4479" ], "markers": "python_version >= '3.6'", - "version": "==3.8.5" + "version": "==3.8.6" }, "aiohttp-retry": { "hashes": [ @@ -151,11 +151,11 @@ }, "arrow": { "hashes": [ - "sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1", - "sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2" + "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", + "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85" ], - "markers": "python_version >= '3.6'", - "version": "==1.2.3" + "markers": "python_version >= '3.8'", + "version": "==1.3.0" }, "asgiref": { "hashes": [ @@ -215,6 +215,7 @@ "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a" ], "index": "pypi", + "markers": "python_full_version >= '3.6.0'", "version": "==4.12.2" }, "billiard": { @@ -226,19 +227,20 @@ }, "boto3": { "hashes": [ - "sha256:c53c92dfe22489ba31e918c2e7b59ff43e2e778bd3d3559e62351a739382bb5c", - "sha256:eea3b07e0f28c9f92bccab972af24a3b0dd951c69d93da75227b8ecd3e18f6c4" + "sha256:2dd93e5c530334fbc74a662f269fa8bfc4c3b7321f9dbe2d53f7c8e57fe5f6dd", + "sha256:beefa8e8e1cf5f904dd95736f3516508f6a0cf396ff46aa166a136107cc2ff51" ], "index": "pypi", - "version": "==1.28.44" + "markers": "python_version >= '3.7'", + "version": "==1.28.69" }, "botocore": { "hashes": [ - "sha256:83d61c1ca781e6ede19fcc4d5dd73004eee3825a2b220f0d7727e32069209d98", - "sha256:84f90919fecb4a4f417fd10145c8a87ff2c4b14d6381cd34d9babf02110b3315" + "sha256:26b1d2f82cc24987d1c7cc783b2fee04908a8f7b293bf1663884eb0768b1eedf", + "sha256:412439a199ada10c6284df1f48395928676d81d51339b1a93217cfd4c4f1c9a6" ], "markers": "python_version >= '3.7'", - "version": "==1.31.44" + "version": "==1.31.69" }, "celery": { "hashes": [ @@ -246,6 +248,7 @@ "sha256:d220b13a8ed57c78149acf82c006785356071844afe0b27012a4991d44026f9f" ], "index": "pypi", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==4.4.7" }, "certifi": { @@ -258,72 +261,61 @@ }, "cffi": { "hashes": [ - "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5", - "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", - "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104", - "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426", - "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405", - "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375", - "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", - "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", - "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", - "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf", - "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", - "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497", - "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", - "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", - "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", - "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", - "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", - "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", - "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", - "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", - "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", - "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee", - "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a", - "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2", - "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", - "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7", - "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", - "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", - "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", - "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", - "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b", - "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e", - "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e", - "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", - "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c", - "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", - "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82", - "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", - "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314", - "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", - "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", - "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", - "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914", - "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045", - "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d", - "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", - "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", - "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2", - "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c", - "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3", - "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2", - "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", - "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d", - "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d", - "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", - "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162", - "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", - "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", - "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e", - "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9", - "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6", - "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b", - "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", - "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0" - ], - "version": "==1.15.1" + "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc", + "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a", + "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417", + "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab", + "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520", + "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36", + "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743", + "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8", + "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed", + "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684", + "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56", + "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324", + "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d", + "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235", + "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e", + "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088", + "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000", + "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7", + "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e", + "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673", + "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c", + "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe", + "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2", + "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098", + "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8", + "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a", + "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0", + "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b", + "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896", + "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e", + "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9", + "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2", + "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b", + "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6", + "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404", + "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f", + "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0", + "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4", + "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc", + "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936", + "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba", + "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872", + "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb", + "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614", + "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1", + "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d", + "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969", + "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b", + "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4", + "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627", + "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956", + "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357" + ], + "markers": "python_version >= '3.8'", + "version": "==1.16.0" }, "channels": { "hashes": [ @@ -331,6 +323,7 @@ "sha256:80a5ad1962ae039a3dcc0a5cb5212413e66e2f11ad9e9db8004834436daf3400" ], "index": "pypi", + "markers": "python_version >= '3.5'", "version": "==2.4.0" }, "channels-redis": { @@ -339,88 +332,104 @@ "sha256:6bd4f75f4ab4a7db17cee495593ace886d7e914c66f8214a1f247ff6659c073a" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.1.0" }, "charset-normalizer": { "hashes": [ - "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96", - "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c", - "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710", - "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706", - "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020", - "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252", - "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad", - "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329", - "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a", - "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f", - "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6", - "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4", - "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a", - "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46", - "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2", - "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23", - "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace", - "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd", - "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982", - "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10", - "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2", - "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea", - "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09", - "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5", - "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149", - "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489", - "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9", - "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80", - "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592", - "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3", - "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6", - "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed", - "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c", - "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200", - "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a", - "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e", - "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d", - "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6", - "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623", - "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669", - "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3", - "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa", - "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9", - "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2", - "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f", - "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1", - "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4", - "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a", - "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8", - "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3", - "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029", - "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f", - "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959", - "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22", - "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7", - "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952", - "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346", - "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e", - "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d", - "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299", - "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd", - "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a", - "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3", - "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037", - "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94", - "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c", - "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858", - "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a", - "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449", - "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c", - "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918", - "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1", - "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c", - "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac", - "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" + "sha256:06cf46bdff72f58645434d467bf5228080801298fbba19fe268a01b4534467f5", + "sha256:0c8c61fb505c7dad1d251c284e712d4e0372cef3b067f7ddf82a7fa82e1e9a93", + "sha256:10b8dd31e10f32410751b3430996f9807fc4d1587ca69772e2aa940a82ab571a", + "sha256:1171ef1fc5ab4693c5d151ae0fdad7f7349920eabbaca6271f95969fa0756c2d", + "sha256:17a866d61259c7de1bdadef418a37755050ddb4b922df8b356503234fff7932c", + "sha256:1d6bfc32a68bc0933819cfdfe45f9abc3cae3877e1d90aac7259d57e6e0f85b1", + "sha256:1ec937546cad86d0dce5396748bf392bb7b62a9eeb8c66efac60e947697f0e58", + "sha256:223b4d54561c01048f657fa6ce41461d5ad8ff128b9678cfe8b2ecd951e3f8a2", + "sha256:2465aa50c9299d615d757c1c888bc6fef384b7c4aec81c05a0172b4400f98557", + "sha256:28f512b9a33235545fbbdac6a330a510b63be278a50071a336afc1b78781b147", + "sha256:2c092be3885a1b7899cd85ce24acedc1034199d6fca1483fa2c3a35c86e43041", + "sha256:2c4c99f98fc3a1835af8179dcc9013f93594d0670e2fa80c83aa36346ee763d2", + "sha256:31445f38053476a0c4e6d12b047b08ced81e2c7c712e5a1ad97bc913256f91b2", + "sha256:31bbaba7218904d2eabecf4feec0d07469284e952a27400f23b6628439439fa7", + "sha256:34d95638ff3613849f473afc33f65c401a89f3b9528d0d213c7037c398a51296", + "sha256:352a88c3df0d1fa886562384b86f9a9e27563d4704ee0e9d56ec6fcd270ea690", + "sha256:39b70a6f88eebe239fa775190796d55a33cfb6d36b9ffdd37843f7c4c1b5dc67", + "sha256:3c66df3f41abee950d6638adc7eac4730a306b022570f71dd0bd6ba53503ab57", + "sha256:3f70fd716855cd3b855316b226a1ac8bdb3caf4f7ea96edcccc6f484217c9597", + "sha256:3f9bc2ce123637a60ebe819f9fccc614da1bcc05798bbbaf2dd4ec91f3e08846", + "sha256:3fb765362688821404ad6cf86772fc54993ec11577cd5a92ac44b4c2ba52155b", + "sha256:45f053a0ece92c734d874861ffe6e3cc92150e32136dd59ab1fb070575189c97", + "sha256:46fb9970aa5eeca547d7aa0de5d4b124a288b42eaefac677bde805013c95725c", + "sha256:4cb50a0335382aac15c31b61d8531bc9bb657cfd848b1d7158009472189f3d62", + "sha256:4e12f8ee80aa35e746230a2af83e81bd6b52daa92a8afaef4fea4a2ce9b9f4fa", + "sha256:4f3100d86dcd03c03f7e9c3fdb23d92e32abbca07e7c13ebd7ddfbcb06f5991f", + "sha256:4f6e2a839f83a6a76854d12dbebde50e4b1afa63e27761549d006fa53e9aa80e", + "sha256:4f861d94c2a450b974b86093c6c027888627b8082f1299dfd5a4bae8e2292821", + "sha256:501adc5eb6cd5f40a6f77fbd90e5ab915c8fd6e8c614af2db5561e16c600d6f3", + "sha256:520b7a142d2524f999447b3a0cf95115df81c4f33003c51a6ab637cbda9d0bf4", + "sha256:548eefad783ed787b38cb6f9a574bd8664468cc76d1538215d510a3cd41406cb", + "sha256:555fe186da0068d3354cdf4bbcbc609b0ecae4d04c921cc13e209eece7720727", + "sha256:55602981b2dbf8184c098bc10287e8c245e351cd4fdcad050bd7199d5a8bf514", + "sha256:58e875eb7016fd014c0eea46c6fa92b87b62c0cb31b9feae25cbbe62c919f54d", + "sha256:5a3580a4fdc4ac05f9e53c57f965e3594b2f99796231380adb2baaab96e22761", + "sha256:5b70bab78accbc672f50e878a5b73ca692f45f5b5e25c8066d748c09405e6a55", + "sha256:5ceca5876032362ae73b83347be8b5dbd2d1faf3358deb38c9c88776779b2e2f", + "sha256:61f1e3fb621f5420523abb71f5771a204b33c21d31e7d9d86881b2cffe92c47c", + "sha256:633968254f8d421e70f91c6ebe71ed0ab140220469cf87a9857e21c16687c034", + "sha256:63a6f59e2d01310f754c270e4a257426fe5a591dc487f1983b3bbe793cf6bac6", + "sha256:63accd11149c0f9a99e3bc095bbdb5a464862d77a7e309ad5938fbc8721235ae", + "sha256:6db3cfb9b4fcecb4390db154e75b49578c87a3b9979b40cdf90d7e4b945656e1", + "sha256:71ef3b9be10070360f289aea4838c784f8b851be3ba58cf796262b57775c2f14", + "sha256:7ae8e5142dcc7a49168f4055255dbcced01dc1714a90a21f87448dc8d90617d1", + "sha256:7b6cefa579e1237ce198619b76eaa148b71894fb0d6bcf9024460f9bf30fd228", + "sha256:800561453acdecedaac137bf09cd719c7a440b6800ec182f077bb8e7025fb708", + "sha256:82ca51ff0fc5b641a2d4e1cc8c5ff108699b7a56d7f3ad6f6da9dbb6f0145b48", + "sha256:851cf693fb3aaef71031237cd68699dded198657ec1e76a76eb8be58c03a5d1f", + "sha256:854cc74367180beb327ab9d00f964f6d91da06450b0855cbbb09187bcdb02de5", + "sha256:87071618d3d8ec8b186d53cb6e66955ef2a0e4fa63ccd3709c0c90ac5a43520f", + "sha256:871d045d6ccc181fd863a3cd66ee8e395523ebfbc57f85f91f035f50cee8e3d4", + "sha256:8aee051c89e13565c6bd366813c386939f8e928af93c29fda4af86d25b73d8f8", + "sha256:8af5a8917b8af42295e86b64903156b4f110a30dca5f3b5aedea123fbd638bff", + "sha256:8ec8ef42c6cd5856a7613dcd1eaf21e5573b2185263d87d27c8edcae33b62a61", + "sha256:91e43805ccafa0a91831f9cd5443aa34528c0c3f2cc48c4cb3d9a7721053874b", + "sha256:9505dc359edb6a330efcd2be825fdb73ee3e628d9010597aa1aee5aa63442e97", + "sha256:985c7965f62f6f32bf432e2681173db41336a9c2611693247069288bcb0c7f8b", + "sha256:9a74041ba0bfa9bc9b9bb2cd3238a6ab3b7618e759b41bd15b5f6ad958d17605", + "sha256:9edbe6a5bf8b56a4a84533ba2b2f489d0046e755c29616ef8830f9e7d9cf5728", + "sha256:a15c1fe6d26e83fd2e5972425a772cca158eae58b05d4a25a4e474c221053e2d", + "sha256:a66bcdf19c1a523e41b8e9d53d0cedbfbac2e93c649a2e9502cb26c014d0980c", + "sha256:ae4070f741f8d809075ef697877fd350ecf0b7c5837ed68738607ee0a2c572cf", + "sha256:ae55d592b02c4349525b6ed8f74c692509e5adffa842e582c0f861751701a673", + "sha256:b578cbe580e3b41ad17b1c428f382c814b32a6ce90f2d8e39e2e635d49e498d1", + "sha256:b891a2f68e09c5ef989007fac11476ed33c5c9994449a4e2c3386529d703dc8b", + "sha256:baec8148d6b8bd5cee1ae138ba658c71f5b03e0d69d5907703e3e1df96db5e41", + "sha256:bb06098d019766ca16fc915ecaa455c1f1cd594204e7f840cd6258237b5079a8", + "sha256:bc791ec3fd0c4309a753f95bb6c749ef0d8ea3aea91f07ee1cf06b7b02118f2f", + "sha256:bd28b31730f0e982ace8663d108e01199098432a30a4c410d06fe08fdb9e93f4", + "sha256:be4d9c2770044a59715eb57c1144dedea7c5d5ae80c68fb9959515037cde2008", + "sha256:c0c72d34e7de5604df0fde3644cc079feee5e55464967d10b24b1de268deceb9", + "sha256:c0e842112fe3f1a4ffcf64b06dc4c61a88441c2f02f373367f7b4c1aa9be2ad5", + "sha256:c15070ebf11b8b7fd1bfff7217e9324963c82dbdf6182ff7050519e350e7ad9f", + "sha256:c2000c54c395d9e5e44c99dc7c20a64dc371f777faf8bae4919ad3e99ce5253e", + "sha256:c30187840d36d0ba2893bc3271a36a517a717f9fd383a98e2697ee890a37c273", + "sha256:cb7cd68814308aade9d0c93c5bd2ade9f9441666f8ba5aa9c2d4b389cb5e2a45", + "sha256:cd805513198304026bd379d1d516afbf6c3c13f4382134a2c526b8b854da1c2e", + "sha256:d0bf89afcbcf4d1bb2652f6580e5e55a840fdf87384f6063c4a4f0c95e378656", + "sha256:d9137a876020661972ca6eec0766d81aef8a5627df628b664b234b73396e727e", + "sha256:dbd95e300367aa0827496fe75a1766d198d34385a58f97683fe6e07f89ca3e3c", + "sha256:dced27917823df984fe0c80a5c4ad75cf58df0fbfae890bc08004cd3888922a2", + "sha256:de0b4caa1c8a21394e8ce971997614a17648f94e1cd0640fbd6b4d14cab13a72", + "sha256:debb633f3f7856f95ad957d9b9c781f8e2c6303ef21724ec94bea2ce2fcbd056", + "sha256:e372d7dfd154009142631de2d316adad3cc1c36c32a38b16a4751ba78da2a397", + "sha256:ecd26be9f112c4f96718290c10f4caea6cc798459a3a76636b817a0ed7874e42", + "sha256:edc0202099ea1d82844316604e17d2b175044f9bcb6b398aab781eba957224bd", + "sha256:f194cce575e59ffe442c10a360182a986535fd90b57f7debfaa5c845c409ecc3", + "sha256:f5fb672c396d826ca16a022ac04c9dce74e00a1c344f6ad1a0fdc1ba1f332213", + "sha256:f6a02a3c7950cafaadcd46a226ad9e12fc9744652cc69f9e5534f98b47f3bbcf", + "sha256:fe81b35c33772e56f4b6cf62cf4aedc1762ef7162a31e6ac7fe5e40d0149eb67" ], "markers": "python_full_version >= '3.7.0'", - "version": "==3.2.0" + "version": "==3.3.1" }, "click": { "hashes": [ @@ -428,6 +437,7 @@ "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==8.0.4" }, "constantly": { @@ -454,32 +464,32 @@ }, "cryptography": { "hashes": [ - "sha256:0d09fb5356f975974dbcb595ad2d178305e5050656affb7890a1583f5e02a306", - "sha256:23c2d778cf829f7d0ae180600b17e9fceea3c2ef8b31a99e3c694cbbf3a24b84", - "sha256:3fb248989b6363906827284cd20cca63bb1a757e0a2864d4c1682a985e3dca47", - "sha256:41d7aa7cdfded09b3d73a47f429c298e80796c8e825ddfadc84c8a7f12df212d", - "sha256:42cb413e01a5d36da9929baa9d70ca90d90b969269e5a12d39c1e0d475010116", - "sha256:4c2f0d35703d61002a2bbdcf15548ebb701cfdd83cdc12471d2bae80878a4207", - "sha256:4fd871184321100fb400d759ad0cddddf284c4b696568204d281c902fc7b0d81", - "sha256:5259cb659aa43005eb55a0e4ff2c825ca111a0da1814202c64d28a985d33b087", - "sha256:57a51b89f954f216a81c9d057bf1a24e2f36e764a1ca9a501a6964eb4a6800dd", - "sha256:652627a055cb52a84f8c448185922241dd5217443ca194d5739b44612c5e6507", - "sha256:67e120e9a577c64fe1f611e53b30b3e69744e5910ff3b6e97e935aeb96005858", - "sha256:6af1c6387c531cd364b72c28daa29232162010d952ceb7e5ca8e2827526aceae", - "sha256:6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34", - "sha256:7efe8041897fe7a50863e51b77789b657a133c75c3b094e51b5e4b5cec7bf906", - "sha256:84537453d57f55a50a5b6835622ee405816999a7113267739a1b4581f83535bd", - "sha256:8f09daa483aedea50d249ef98ed500569841d6498aa9c9f4b0531b9964658922", - "sha256:95dd7f261bb76948b52a5330ba5202b91a26fbac13ad0e9fc8a3ac04752058c7", - "sha256:a74fbcdb2a0d46fe00504f571a2a540532f4c188e6ccf26f1f178480117b33c4", - "sha256:a983e441a00a9d57a4d7c91b3116a37ae602907a7618b882c8013b5762e80574", - "sha256:ab8de0d091acbf778f74286f4989cf3d1528336af1b59f3e5d2ebca8b5fe49e1", - "sha256:aeb57c421b34af8f9fe830e1955bf493a86a7996cc1338fe41b30047d16e962c", - "sha256:ce785cf81a7bdade534297ef9e490ddff800d956625020ab2ec2780a556c313e", - "sha256:d0d651aa754ef58d75cec6edfbd21259d93810b73f6ec246436a21b7841908de" + "sha256:004b6ccc95943f6a9ad3142cfabcc769d7ee38a3f60fb0dddbfb431f818c3a67", + "sha256:047c4603aeb4bbd8db2756e38f5b8bd7e94318c047cfe4efeb5d715e08b49311", + "sha256:0d9409894f495d465fe6fda92cb70e8323e9648af912d5b9141d616df40a87b8", + "sha256:23a25c09dfd0d9f28da2352503b23e086f8e78096b9fd585d1d14eca01613e13", + "sha256:2ed09183922d66c4ec5fdaa59b4d14e105c084dd0febd27452de8f6f74704143", + "sha256:35c00f637cd0b9d5b6c6bd11b6c3359194a8eba9c46d4e875a3660e3b400005f", + "sha256:37480760ae08065437e6573d14be973112c9e6dcaf5f11d00147ee74f37a3829", + "sha256:3b224890962a2d7b57cf5eeb16ccaafba6083f7b811829f00476309bce2fe0fd", + "sha256:5a0f09cefded00e648a127048119f77bc2b2ec61e736660b5789e638f43cc397", + "sha256:5b72205a360f3b6176485a333256b9bcd48700fc755fef51c8e7e67c4b63e3ac", + "sha256:7e53db173370dea832190870e975a1e09c86a879b613948f09eb49324218c14d", + "sha256:7febc3094125fc126a7f6fb1f420d0da639f3f32cb15c8ff0dc3997c4549f51a", + "sha256:80907d3faa55dc5434a16579952ac6da800935cd98d14dbd62f6f042c7f5e839", + "sha256:86defa8d248c3fa029da68ce61fe735432b047e32179883bdb1e79ed9bb8195e", + "sha256:8ac4f9ead4bbd0bc8ab2d318f97d85147167a488be0e08814a37eb2f439d5cf6", + "sha256:93530900d14c37a46ce3d6c9e6fd35dbe5f5601bf6b3a5c325c7bffc030344d9", + "sha256:9eeb77214afae972a00dee47382d2591abe77bdae166bda672fb1e24702a3860", + "sha256:b5f4dfe950ff0479f1f00eda09c18798d4f49b98f4e2006d644b3301682ebdca", + "sha256:c3391bd8e6de35f6f1140e50aaeb3e2b3d6a9012536ca23ab0d9c35ec18c8a91", + "sha256:c880eba5175f4307129784eca96f4e70b88e57aa3f680aeba3bab0e980b0f37d", + "sha256:cecfefa17042941f94ab54f769c8ce0fe14beff2694e9ac684176a2535bf9714", + "sha256:e40211b4923ba5a6dc9769eab704bdb3fbb58d56c5b336d30996c24fcf12aadb", + "sha256:efc8ad4e6fc4f1752ebfb58aefece8b4e3c4cae940b0994d43649bdfce8d0d4f" ], "markers": "python_version >= '3.7'", - "version": "==41.0.3" + "version": "==41.0.4" }, "daphne": { "hashes": [ @@ -522,11 +532,12 @@ }, "django": { "hashes": [ - "sha256:a5de4c484e7b7418e6d3e52a5b8794f0e6b9f9e4ce3c037018cf1c489fa87f3c", - "sha256:d31b06c58aa2cd73998ca5966bc3001243d3c4e77ee2d0c479bced124765fd99" + "sha256:83b6d66b06e484807d778263fdc7f9186d4dc1862fcfa6507830446ac6b060ba", + "sha256:c5e7b668025a6e06cad9ba6d4de1fd1a21212acebb51ea34abb400c6e4d33430" ], "index": "pypi", - "version": "==3.2.21" + "markers": "python_version >= '3.6'", + "version": "==3.2.22" }, "django-auto-prefetching": { "hashes": [ @@ -534,15 +545,17 @@ "sha256:b095748adcf2f5c2358301044959e5cffd38dce28943b86f5a95778fd62de52c" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==0.2.12" }, "django-cors-headers": { "hashes": [ - "sha256:9ada212b0e2efd4a5e339360ffc869cb21ac5605e810afe69f7308e577ea5bde", - "sha256:f9749c6410fe738278bc2b6ef17f05195bc7b251693c035752d8257026af024f" + "sha256:25aabc94d4837678c1edf442c7f68a5f5fd151f6767b0e0b01c61a2179d02711", + "sha256:bd36c7aea0d070e462f3383f0dc9ef717e5fdc2b10a99c98c285f16da84ffba2" ], "index": "pypi", - "version": "==4.2.0" + "markers": "python_version >= '3.8'", + "version": "==4.3.0" }, "django-extensions": { "hashes": [ @@ -550,15 +563,17 @@ "sha256:9600b7562f79a92cbf1fde6403c04fee314608fefbb595502e34383ae8203401" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==3.2.3" }, "django-filter": { "hashes": [ - "sha256:2fe15f78108475eda525692813205fa6f9e8c1caf1ae65daa5862d403c6dbf00", - "sha256:d12d8e0fc6d3eb26641e553e5d53b191eb8cec611427d4bdce0becb1f7c172b5" + "sha256:015fe155582e1805b40629344e4a6cf3cc40450827d294d040b4b8c1749a9fa6", + "sha256:65bc5d1d8f4fff3aaf74cb5da537b6620e9214fb4b3180f6c560776b1b6dccd0" ], "index": "pypi", - "version": "==23.2" + "markers": "python_version >= '3.7'", + "version": "==23.3" }, "django-labs-accounts": { "hashes": [ @@ -566,15 +581,17 @@ "sha256:c6ff38b90939472f4b0ce02eebbf0af868ade3206219fbfc65003f07f953a9e9" ], "index": "pypi", + "markers": "python_version >= '3.8' and python_version < '4.0'", "version": "==0.9.4" }, "django-redis": { "hashes": [ - "sha256:2d8660d39f586c41c9907d5395693c477434141690fd7eca9d32376af00b0aac", - "sha256:8bc5793ec06b28ea802aad85ec437e7646511d4e571e07ccad19cfed8b9ddd44" + "sha256:6a02abaa34b0fea8bf9b707d2c363ab6adc7409950b2db93602e6cb292818c42", + "sha256:ebc88df7da810732e2af9987f7f426c96204bf89319df4c6da6ca9a2942edd5b" ], "index": "pypi", - "version": "==5.3.0" + "markers": "python_version >= '3.6'", + "version": "==5.4.0" }, "django-runtime-options": { "hashes": [ @@ -582,6 +599,7 @@ "sha256:edb34dc27d5558cda19caf8650b93b2fec4753f9955a545bf75f2785bbf40e55" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==0.1.3" }, "djangorestframework": { @@ -590,6 +608,7 @@ "sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==3.14.0" }, "docutils": { @@ -598,6 +617,7 @@ "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==0.20.1" }, "drf-nested-routers": { @@ -606,6 +626,7 @@ "sha256:996b77f3f4dfaf64569e7b8f04e3919945f90f95366838ca5b8bed9dd709d6c5" ], "index": "pypi", + "markers": "python_version >= '3.5'", "version": "==0.93.4" }, "exceptiongroup": { @@ -618,10 +639,10 @@ }, "executing": { "hashes": [ - "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc", - "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107" + "sha256:06df6183df67389625f4e763921c6cf978944721abf3e714000200aab95b0657", + "sha256:0ff053696fdeef426cda5bd18eacd94f82c91f49823a2e9090124212ceea9b08" ], - "version": "==1.2.0" + "version": "==2.0.0" }, "frozenlist": { "hashes": [ @@ -696,6 +717,7 @@ "sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033" ], "index": "pypi", + "markers": "python_version >= '3.5'", "version": "==21.2.0" }, "h11": { @@ -708,44 +730,46 @@ }, "httptools": { "hashes": [ - "sha256:03bfd2ae8a2d532952ac54445a2fb2504c804135ed28b53fefaf03d3a93eb1fd", - "sha256:0781fedc610293a2716bc7fa142d4c85e6776bc59d617a807ff91246a95dea35", - "sha256:0d0b0571806a5168013b8c3d180d9f9d6997365a4212cb18ea20df18b938aa0b", - "sha256:0fb4a608c631f7dcbdf986f40af7a030521a10ba6bc3d36b28c1dc9e9035a3c0", - "sha256:22c01fcd53648162730a71c42842f73b50f989daae36534c818b3f5050b54589", - "sha256:23b09537086a5a611fad5696fc8963d67c7e7f98cb329d38ee114d588b0b74cd", - "sha256:259920bbae18740a40236807915def554132ad70af5067e562f4660b62c59b90", - "sha256:26326e0a8fe56829f3af483200d914a7cd16d8d398d14e36888b56de30bec81a", - "sha256:274bf20eeb41b0956e34f6a81f84d26ed57c84dd9253f13dcb7174b27ccd8aaf", - "sha256:33eb1d4e609c835966e969a31b1dedf5ba16b38cab356c2ce4f3e33ffa94cad3", - "sha256:35a541579bed0270d1ac10245a3e71e5beeb1903b5fbbc8d8b4d4e728d48ff1d", - "sha256:38f3cafedd6aa20ae05f81f2e616ea6f92116c8a0f8dcb79dc798df3356836e2", - "sha256:3f96d2a351b5625a9fd9133c95744e8ca06f7a4f8f0b8231e4bbaae2c485046a", - "sha256:463c3bc5ef64b9cf091be9ac0e0556199503f6e80456b790a917774a616aff6e", - "sha256:47043a6e0ea753f006a9d0dd076a8f8c99bc0ecae86a0888448eb3076c43d717", - "sha256:4e748fc0d5c4a629988ef50ac1aef99dfb5e8996583a73a717fc2cac4ab89932", - "sha256:5dcc14c090ab57b35908d4a4585ec5c0715439df07be2913405991dbb37e049d", - "sha256:65d802e7b2538a9756df5acc062300c160907b02e15ed15ba035b02bce43e89c", - "sha256:6bdc6675ec6cb79d27e0575750ac6e2b47032742e24eed011b8db73f2da9ed40", - "sha256:6e22896b42b95b3237eccc42278cd72c0df6f23247d886b7ded3163452481e38", - "sha256:721e503245d591527cddd0f6fd771d156c509e831caa7a57929b55ac91ee2b51", - "sha256:72205730bf1be875003692ca54a4a7c35fac77b4746008966061d9d41a61b0f5", - "sha256:72ec7c70bd9f95ef1083d14a755f321d181f046ca685b6358676737a5fecd26a", - "sha256:73e9d66a5a28b2d5d9fbd9e197a31edd02be310186db423b28e6052472dc8201", - "sha256:818325afee467d483bfab1647a72054246d29f9053fd17cc4b86cda09cc60339", - "sha256:82c723ed5982f8ead00f8e7605c53e55ffe47c47465d878305ebe0082b6a1755", - "sha256:82f228b88b0e8c6099a9c4757ce9fdbb8b45548074f8d0b1f0fc071e35655d1c", - "sha256:93f89975465133619aea8b1952bc6fa0e6bad22a447c6d982fc338fbb4c89649", - "sha256:9fc6e409ad38cbd68b177cd5158fc4042c796b82ca88d99ec78f07bed6c6b796", - "sha256:b0a816bb425c116a160fbc6f34cece097fd22ece15059d68932af686520966bd", - "sha256:b703d15dbe082cc23266bf5d9448e764c7cb3fcfe7cb358d79d3fd8248673ef9", - "sha256:cf8169e839a0d740f3d3c9c4fa630ac1a5aaf81641a34575ca6773ed7ce041a1", - "sha256:dea66d94e5a3f68c5e9d86e0894653b87d952e624845e0b0e3ad1c733c6cc75d", - "sha256:e41ccac9e77cd045f3e4ee0fc62cbf3d54d7d4b375431eb855561f26ee7a9ec4", - "sha256:f959e4770b3fc8ee4dbc3578fd910fab9003e093f20ac8c621452c4d62e517cb" + "sha256:00d5d4b68a717765b1fabfd9ca755bd12bf44105eeb806c03d1962acd9b8e563", + "sha256:0ac5a0ae3d9f4fe004318d64b8a854edd85ab76cffbf7ef5e32920faef62f142", + "sha256:0cf2372e98406efb42e93bfe10f2948e467edfd792b015f1b4ecd897903d3e8d", + "sha256:1ed99a373e327f0107cb513b61820102ee4f3675656a37a50083eda05dc9541b", + "sha256:3c3b214ce057c54675b00108ac42bacf2ab8f85c58e3f324a4e963bbc46424f4", + "sha256:3e802e0b2378ade99cd666b5bffb8b2a7cc8f3d28988685dc300469ea8dd86cb", + "sha256:3f30d3ce413088a98b9db71c60a6ada2001a08945cb42dd65a9a9fe228627658", + "sha256:405784577ba6540fa7d6ff49e37daf104e04f4b4ff2d1ac0469eaa6a20fde084", + "sha256:48ed8129cd9a0d62cf4d1575fcf90fb37e3ff7d5654d3a5814eb3d55f36478c2", + "sha256:4bd3e488b447046e386a30f07af05f9b38d3d368d1f7b4d8f7e10af85393db97", + "sha256:4f0f8271c0a4db459f9dc807acd0eadd4839934a4b9b892f6f160e94da309837", + "sha256:5cceac09f164bcba55c0500a18fe3c47df29b62353198e4f37bbcc5d591172c3", + "sha256:639dc4f381a870c9ec860ce5c45921db50205a37cc3334e756269736ff0aac58", + "sha256:678fcbae74477a17d103b7cae78b74800d795d702083867ce160fc202104d0da", + "sha256:6a4f5ccead6d18ec072ac0b84420e95d27c1cdf5c9f1bc8fbd8daf86bd94f43d", + "sha256:6f58e335a1402fb5a650e271e8c2d03cfa7cea46ae124649346d17bd30d59c90", + "sha256:75c8022dca7935cba14741a42744eee13ba05db00b27a4b940f0d646bd4d56d0", + "sha256:7a7ea483c1a4485c71cb5f38be9db078f8b0e8b4c4dc0210f531cdd2ddac1ef1", + "sha256:7d9ceb2c957320def533671fc9c715a80c47025139c8d1f3797477decbc6edd2", + "sha256:7ebaec1bf683e4bf5e9fbb49b8cc36da482033596a415b3e4ebab5a4c0d7ec5e", + "sha256:85ed077c995e942b6f1b07583e4eb0a8d324d418954fc6af913d36db7c05a5a0", + "sha256:8ae5b97f690badd2ca27cbf668494ee1b6d34cf1c464271ef7bfa9ca6b83ffaf", + "sha256:8b0bb634338334385351a1600a73e558ce619af390c2b38386206ac6a27fecfc", + "sha256:8e216a038d2d52ea13fdd9b9c9c7459fb80d78302b257828285eca1c773b99b3", + "sha256:93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503", + "sha256:95658c342529bba4e1d3d2b1a874db16c7cca435e8827422154c9da76ac4e13a", + "sha256:95fb92dd3649f9cb139e9c56604cc2d7c7bf0fc2e7c8d7fbd58f96e35eddd2a3", + "sha256:97662ce7fb196c785344d00d638fc9ad69e18ee4bfb4000b35a52efe5adcc949", + "sha256:9bb68d3a085c2174c2477eb3ffe84ae9fb4fde8792edb7bcd09a1d8467e30a84", + "sha256:b512aa728bc02354e5ac086ce76c3ce635b62f5fbc32ab7082b5e582d27867bb", + "sha256:c6e26c30455600b95d94b1b836085138e82f177351454ee841c148f93a9bad5a", + "sha256:d2f6c3c4cb1948d912538217838f6e9960bc4a521d7f9b323b3da579cd14532f", + "sha256:dcbab042cc3ef272adc11220517278519adf8f53fd3056d0e68f0a6f891ba94e", + "sha256:e0b281cf5a125c35f7f6722b65d8542d2e57331be573e9e88bc8b0115c4a7a81", + "sha256:e57997ac7fb7ee43140cc03664de5f268813a481dff6245e0075925adc6aa185", + "sha256:fe467eb086d80217b7584e61313ebadc8d187a4d95bb62031b7bab4b205c3ba3" ], "index": "pypi", - "version": "==0.6.0" + "markers": "python_full_version >= '3.8.0'", + "version": "==0.6.1" }, "hyperlink": { "hashes": [ @@ -777,6 +801,7 @@ "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==6.8.0" }, "incremental": { @@ -788,11 +813,12 @@ }, "ipython": { "hashes": [ - "sha256:2baeb5be6949eeebf532150f81746f8333e2ccce02de1c7eedde3f23ed5e9f1e", - "sha256:45a2c3a529296870a97b7de34eda4a31bee16bc7bf954e07d39abe49caf8f887" + "sha256:0852469d4d579d9cd613c220af7bf0c9cc251813e12be647cb9d463939db9b1e", + "sha256:ad52f58fca8f9f848e256c629eff888efc0528c12fe0f8ec14f33205f23ef938" ], "index": "pypi", - "version": "==8.15.0" + "markers": "python_version >= '3.9'", + "version": "==8.16.1" }, "itypes": { "hashes": [ @@ -803,11 +829,11 @@ }, "jedi": { "hashes": [ - "sha256:bcf9894f1753969cbac8022a8c2eaee06bfa3724e4192470aaffe7eb6272b0c4", - "sha256:cb8ce23fbccff0025e9386b5cf85e892f94c9b822378f8da49970471335ac64e" + "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd", + "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0" ], "markers": "python_version >= '3.6'", - "version": "==0.19.0" + "version": "==0.19.1" }, "jinja2": { "hashes": [ @@ -839,6 +865,7 @@ "sha256:590dc7773df6c21cbf948b5dac07a72a251db28b0238ceecce0a2abfa8ec30a9" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==1.1.0" }, "jwcrypto": { @@ -940,71 +967,65 @@ }, "msgpack": { "hashes": [ - "sha256:06f5174b5f8ed0ed919da0e62cbd4ffde676a374aba4020034da05fab67b9164", - "sha256:0c05a4a96585525916b109bb85f8cb6511db1c6f5b9d9cbcbc940dc6b4be944b", - "sha256:137850656634abddfb88236008339fdaba3178f4751b28f270d2ebe77a563b6c", - "sha256:17358523b85973e5f242ad74aa4712b7ee560715562554aa2134d96e7aa4cbbf", - "sha256:18334484eafc2b1aa47a6d42427da7fa8f2ab3d60b674120bce7a895a0a85bdd", - "sha256:1835c84d65f46900920b3708f5ba829fb19b1096c1800ad60bae8418652a951d", - "sha256:1967f6129fc50a43bfe0951c35acbb729be89a55d849fab7686004da85103f1c", - "sha256:1ab2f3331cb1b54165976a9d976cb251a83183631c88076613c6c780f0d6e45a", - "sha256:1c0f7c47f0087ffda62961d425e4407961a7ffd2aa004c81b9c07d9269512f6e", - "sha256:20a97bf595a232c3ee6d57ddaadd5453d174a52594bf9c21d10407e2a2d9b3bd", - "sha256:20c784e66b613c7f16f632e7b5e8a1651aa5702463d61394671ba07b2fc9e025", - "sha256:266fa4202c0eb94d26822d9bfd7af25d1e2c088927fe8de9033d929dd5ba24c5", - "sha256:28592e20bbb1620848256ebc105fc420436af59515793ed27d5c77a217477705", - "sha256:288e32b47e67f7b171f86b030e527e302c91bd3f40fd9033483f2cacc37f327a", - "sha256:3055b0455e45810820db1f29d900bf39466df96ddca11dfa6d074fa47054376d", - "sha256:332360ff25469c346a1c5e47cbe2a725517919892eda5cfaffe6046656f0b7bb", - "sha256:362d9655cd369b08fda06b6657a303eb7172d5279997abe094512e919cf74b11", - "sha256:366c9a7b9057e1547f4ad51d8facad8b406bab69c7d72c0eb6f529cf76d4b85f", - "sha256:36961b0568c36027c76e2ae3ca1132e35123dcec0706c4b7992683cc26c1320c", - "sha256:379026812e49258016dd84ad79ac8446922234d498058ae1d415f04b522d5b2d", - "sha256:382b2c77589331f2cb80b67cc058c00f225e19827dbc818d700f61513ab47bea", - "sha256:476a8fe8fae289fdf273d6d2a6cb6e35b5a58541693e8f9f019bfe990a51e4ba", - "sha256:48296af57cdb1d885843afd73c4656be5c76c0c6328db3440c9601a98f303d87", - "sha256:4867aa2df9e2a5fa5f76d7d5565d25ec76e84c106b55509e78c1ede0f152659a", - "sha256:4c075728a1095efd0634a7dccb06204919a2f67d1893b6aa8e00497258bf926c", - "sha256:4f837b93669ce4336e24d08286c38761132bc7ab29782727f8557e1eb21b2080", - "sha256:4f8d8b3bf1ff2672567d6b5c725a1b347fe838b912772aa8ae2bf70338d5a198", - "sha256:525228efd79bb831cf6830a732e2e80bc1b05436b086d4264814b4b2955b2fa9", - "sha256:5494ea30d517a3576749cad32fa27f7585c65f5f38309c88c6d137877fa28a5a", - "sha256:55b56a24893105dc52c1253649b60f475f36b3aa0fc66115bffafb624d7cb30b", - "sha256:56a62ec00b636583e5cb6ad313bbed36bb7ead5fa3a3e38938503142c72cba4f", - "sha256:57e1f3528bd95cc44684beda696f74d3aaa8a5e58c816214b9046512240ef437", - "sha256:586d0d636f9a628ddc6a17bfd45aa5b5efaf1606d2b60fa5d87b8986326e933f", - "sha256:5cb47c21a8a65b165ce29f2bec852790cbc04936f502966768e4aae9fa763cb7", - "sha256:6c4c68d87497f66f96d50142a2b73b97972130d93677ce930718f68828b382e2", - "sha256:821c7e677cc6acf0fd3f7ac664c98803827ae6de594a9f99563e48c5a2f27eb0", - "sha256:916723458c25dfb77ff07f4c66aed34e47503b2eb3188b3adbec8d8aa6e00f48", - "sha256:9e6ca5d5699bcd89ae605c150aee83b5321f2115695e741b99618f4856c50898", - "sha256:9f5ae84c5c8a857ec44dc180a8b0cc08238e021f57abdf51a8182e915e6299f0", - "sha256:a2b031c2e9b9af485d5e3c4520f4220d74f4d222a5b8dc8c1a3ab9448ca79c57", - "sha256:a61215eac016f391129a013c9e46f3ab308db5f5ec9f25811e811f96962599a8", - "sha256:a740fa0e4087a734455f0fc3abf5e746004c9da72fbd541e9b113013c8dc3282", - "sha256:a9985b214f33311df47e274eb788a5893a761d025e2b92c723ba4c63936b69b1", - "sha256:ab31e908d8424d55601ad7075e471b7d0140d4d3dd3272daf39c5c19d936bd82", - "sha256:ac9dd47af78cae935901a9a500104e2dea2e253207c924cc95de149606dc43cc", - "sha256:addab7e2e1fcc04bd08e4eb631c2a90960c340e40dfc4a5e24d2ff0d5a3b3edb", - "sha256:b1d46dfe3832660f53b13b925d4e0fa1432b00f5f7210eb3ad3bb9a13c6204a6", - "sha256:b2de4c1c0538dcb7010902a2b97f4e00fc4ddf2c8cda9749af0e594d3b7fa3d7", - "sha256:b5ef2f015b95f912c2fcab19c36814963b5463f1fb9049846994b007962743e9", - "sha256:b72d0698f86e8d9ddf9442bdedec15b71df3598199ba33322d9711a19f08145c", - "sha256:bae7de2026cbfe3782c8b78b0db9cbfc5455e079f1937cb0ab8d133496ac55e1", - "sha256:bf22a83f973b50f9d38e55c6aade04c41ddda19b00c4ebc558930d78eecc64ed", - "sha256:c075544284eadc5cddc70f4757331d99dcbc16b2bbd4849d15f8aae4cf36d31c", - "sha256:c396e2cc213d12ce017b686e0f53497f94f8ba2b24799c25d913d46c08ec422c", - "sha256:cb5aaa8c17760909ec6cb15e744c3ebc2ca8918e727216e79607b7bbce9c8f77", - "sha256:cdc793c50be3f01106245a61b739328f7dccc2c648b501e237f0699fe1395b81", - "sha256:d25dd59bbbbb996eacf7be6b4ad082ed7eacc4e8f3d2df1ba43822da9bfa122a", - "sha256:e42b9594cc3bf4d838d67d6ed62b9e59e201862a25e9a157019e171fbe672dd3", - "sha256:e57916ef1bd0fee4f21c4600e9d1da352d8816b52a599c46460e93a6e9f17086", - "sha256:ed40e926fa2f297e8a653c954b732f125ef97bdd4c889f243182299de27e2aa9", - "sha256:ef8108f8dedf204bb7b42994abf93882da1159728a2d4c5e82012edd92c9da9f", - "sha256:f933bbda5a3ee63b8834179096923b094b76f0c7a73c1cfe8f07ad608c58844b", - "sha256:fe5c63197c55bce6385d9aee16c4d0641684628f63ace85f73571e65ad1c1e8d" - ], - "version": "==1.0.5" + "sha256:04ad6069c86e531682f9e1e71b71c1c3937d6014a7c3e9edd2aa81ad58842862", + "sha256:0bfdd914e55e0d2c9e1526de210f6fe8ffe9705f2b1dfcc4aecc92a4cb4b533d", + "sha256:1dc93e8e4653bdb5910aed79f11e165c85732067614f180f70534f056da97db3", + "sha256:1e2d69948e4132813b8d1131f29f9101bc2c915f26089a6d632001a5c1349672", + "sha256:235a31ec7db685f5c82233bddf9858748b89b8119bf4538d514536c485c15fe0", + "sha256:27dcd6f46a21c18fa5e5deed92a43d4554e3df8d8ca5a47bf0615d6a5f39dbc9", + "sha256:28efb066cde83c479dfe5a48141a53bc7e5f13f785b92ddde336c716663039ee", + "sha256:3476fae43db72bd11f29a5147ae2f3cb22e2f1a91d575ef130d2bf49afd21c46", + "sha256:36e17c4592231a7dbd2ed09027823ab295d2791b3b1efb2aee874b10548b7524", + "sha256:384d779f0d6f1b110eae74cb0659d9aa6ff35aaf547b3955abf2ab4c901c4819", + "sha256:38949d30b11ae5f95c3c91917ee7a6b239f5ec276f271f28638dec9156f82cfc", + "sha256:3967e4ad1aa9da62fd53e346ed17d7b2e922cba5ab93bdd46febcac39be636fc", + "sha256:3e7bf4442b310ff154b7bb9d81eb2c016b7d597e364f97d72b1acc3817a0fdc1", + "sha256:3f0c8c6dfa6605ab8ff0611995ee30d4f9fcff89966cf562733b4008a3d60d82", + "sha256:484ae3240666ad34cfa31eea7b8c6cd2f1fdaae21d73ce2974211df099a95d81", + "sha256:4a7b4f35de6a304b5533c238bee86b670b75b03d31b7797929caa7a624b5dda6", + "sha256:4cb14ce54d9b857be9591ac364cb08dc2d6a5c4318c1182cb1d02274029d590d", + "sha256:4e71bc4416de195d6e9b4ee93ad3f2f6b2ce11d042b4d7a7ee00bbe0358bd0c2", + "sha256:52700dc63a4676669b341ba33520f4d6e43d3ca58d422e22ba66d1736b0a6e4c", + "sha256:572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87", + "sha256:576eb384292b139821c41995523654ad82d1916da6a60cff129c715a6223ea84", + "sha256:5b0bf0effb196ed76b7ad883848143427a73c355ae8e569fa538365064188b8e", + "sha256:5b6ccc0c85916998d788b295765ea0e9cb9aac7e4a8ed71d12e7d8ac31c23c95", + "sha256:5ed82f5a7af3697b1c4786053736f24a0efd0a1b8a130d4c7bfee4b9ded0f08f", + "sha256:6d4c80667de2e36970ebf74f42d1088cc9ee7ef5f4e8c35eee1b40eafd33ca5b", + "sha256:730076207cb816138cf1af7f7237b208340a2c5e749707457d70705715c93b93", + "sha256:7687e22a31e976a0e7fc99c2f4d11ca45eff652a81eb8c8085e9609298916dcf", + "sha256:822ea70dc4018c7e6223f13affd1c5c30c0f5c12ac1f96cd8e9949acddb48a61", + "sha256:84b0daf226913133f899ea9b30618722d45feffa67e4fe867b0b5ae83a34060c", + "sha256:85765fdf4b27eb5086f05ac0491090fc76f4f2b28e09d9350c31aac25a5aaff8", + "sha256:8dd178c4c80706546702c59529ffc005681bd6dc2ea234c450661b205445a34d", + "sha256:8f5b234f567cf76ee489502ceb7165c2a5cecec081db2b37e35332b537f8157c", + "sha256:98bbd754a422a0b123c66a4c341de0474cad4a5c10c164ceed6ea090f3563db4", + "sha256:993584fc821c58d5993521bfdcd31a4adf025c7d745bbd4d12ccfecf695af5ba", + "sha256:a40821a89dc373d6427e2b44b572efc36a2778d3f543299e2f24eb1a5de65415", + "sha256:b291f0ee7961a597cbbcc77709374087fa2a9afe7bdb6a40dbbd9b127e79afee", + "sha256:b573a43ef7c368ba4ea06050a957c2a7550f729c31f11dd616d2ac4aba99888d", + "sha256:b610ff0f24e9f11c9ae653c67ff8cc03c075131401b3e5ef4b82570d1728f8a9", + "sha256:bdf38ba2d393c7911ae989c3bbba510ebbcdf4ecbdbfec36272abe350c454075", + "sha256:bfef2bb6ef068827bbd021017a107194956918ab43ce4d6dc945ffa13efbc25f", + "sha256:cab3db8bab4b7e635c1c97270d7a4b2a90c070b33cbc00c99ef3f9be03d3e1f7", + "sha256:cb70766519500281815dfd7a87d3a178acf7ce95390544b8c90587d76b227681", + "sha256:cca1b62fe70d761a282496b96a5e51c44c213e410a964bdffe0928e611368329", + "sha256:ccf9a39706b604d884d2cb1e27fe973bc55f2890c52f38df742bc1d79ab9f5e1", + "sha256:dc43f1ec66eb8440567186ae2f8c447d91e0372d793dfe8c222aec857b81a8cf", + "sha256:dd632777ff3beaaf629f1ab4396caf7ba0bdd075d948a69460d13d44357aca4c", + "sha256:e45ae4927759289c30ccba8d9fdce62bb414977ba158286b5ddaf8df2cddb5c5", + "sha256:e50ebce52f41370707f1e21a59514e3375e3edd6e1832f5e5235237db933c98b", + "sha256:ebbbba226f0a108a7366bf4b59bf0f30a12fd5e75100c630267d94d7f0ad20e5", + "sha256:ec79ff6159dffcc30853b2ad612ed572af86c92b5168aa3fc01a67b0fa40665e", + "sha256:f0936e08e0003f66bfd97e74ee530427707297b0d0361247e9b4f59ab78ddc8b", + "sha256:f26a07a6e877c76a88e3cecac8531908d980d3d5067ff69213653649ec0f60ad", + "sha256:f64e376cd20d3f030190e8c32e1c64582eba56ac6dc7d5b0b49a9d44021b52fd", + "sha256:f6ffbc252eb0d229aeb2f9ad051200668fc3a9aaa8994e49f0cb2ffe2b7867e7", + "sha256:f9a7c509542db4eceed3dcf21ee5267ab565a83555c9b88a8109dcecc4709002", + "sha256:ff1d0899f104f3921d94579a5638847f783c9b04f2d5f229392ca77fba5b82fc" + ], + "markers": "python_version >= '3.8'", + "version": "==1.0.7" }, "multidict": { "hashes": [ @@ -1097,34 +1118,42 @@ }, "numpy": { "hashes": [ - "sha256:0d60fbae8e0019865fc4784745814cff1c421df5afee233db6d88ab4f14655a2", - "sha256:1a1329e26f46230bf77b02cc19e900db9b52f398d6722ca853349a782d4cff55", - "sha256:1b9735c27cea5d995496f46a8b1cd7b408b3f34b6d50459d9ac8fe3a20cc17bf", - "sha256:2792d23d62ec51e50ce4d4b7d73de8f67a2fd3ea710dcbc8563a51a03fb07b01", - "sha256:3e0746410e73384e70d286f93abf2520035250aad8c5714240b0492a7302fdca", - "sha256:4c3abc71e8b6edba80a01a52e66d83c5d14433cbcd26a40c329ec7ed09f37901", - "sha256:5883c06bb92f2e6c8181df7b39971a5fb436288db58b5a1c3967702d4278691d", - "sha256:5c97325a0ba6f9d041feb9390924614b60b99209a71a69c876f71052521d42a4", - "sha256:60e7f0f7f6d0eee8364b9a6304c2845b9c491ac706048c7e8cf47b83123b8dbf", - "sha256:76b4115d42a7dfc5d485d358728cdd8719be33cc5ec6ec08632a5d6fca2ed380", - "sha256:7dc869c0c75988e1c693d0e2d5b26034644399dd929bc049db55395b1379e044", - "sha256:834b386f2b8210dca38c71a6e0f4fd6922f7d3fcff935dbe3a570945acb1b545", - "sha256:8b77775f4b7df768967a7c8b3567e309f617dd5e99aeb886fa14dc1a0791141f", - "sha256:90319e4f002795ccfc9050110bbbaa16c944b1c37c0baeea43c5fb881693ae1f", - "sha256:b79e513d7aac42ae918db3ad1341a015488530d0bb2a6abcbdd10a3a829ccfd3", - "sha256:bb33d5a1cf360304754913a350edda36d5b8c5331a8237268c48f91253c3a364", - "sha256:bec1e7213c7cb00d67093247f8c4db156fd03075f49876957dca4711306d39c9", - "sha256:c5462d19336db4560041517dbb7759c21d181a67cb01b36ca109b2ae37d32418", - "sha256:c5652ea24d33585ea39eb6a6a15dac87a1206a692719ff45d53c5282e66d4a8f", - "sha256:d7806500e4f5bdd04095e849265e55de20d8cc4b661b038957354327f6d9b295", - "sha256:db3ccc4e37a6873045580d413fe79b68e47a681af8db2e046f1dacfa11f86eb3", - "sha256:dfe4a913e29b418d096e696ddd422d8a5d13ffba4ea91f9f60440a3b759b0187", - "sha256:eb942bfb6f84df5ce05dbf4b46673ffed0d3da59f13635ea9b926af3deb76926", - "sha256:f08f2e037bba04e707eebf4bc934f1972a315c883a9e0ebfa8a7756eabf9e357", - "sha256:fd608e19c8d7c55021dffd43bfe5492fab8cc105cc8986f813f8c3c048b38760" + "sha256:06934e1a22c54636a059215d6da99e23286424f316fddd979f5071093b648668", + "sha256:1c59c046c31a43310ad0199d6299e59f57a289e22f0f36951ced1c9eac3665b9", + "sha256:1d1bd82d539607951cac963388534da3b7ea0e18b149a53cf883d8f699178c0f", + "sha256:1e11668d6f756ca5ef534b5be8653d16c5352cbb210a5c2a79ff288e937010d5", + "sha256:3649d566e2fc067597125428db15d60eb42a4e0897fc48d28cb75dc2e0454e53", + "sha256:59227c981d43425ca5e5c01094d59eb14e8772ce6975d4b2fc1e106a833d5ae2", + "sha256:6081aed64714a18c72b168a9276095ef9155dd7888b9e74b5987808f0dd0a974", + "sha256:6965888d65d2848e8768824ca8288db0a81263c1efccec881cb35a0d805fcd2f", + "sha256:76ff661a867d9272cd2a99eed002470f46dbe0943a5ffd140f49be84f68ffc42", + "sha256:78ca54b2f9daffa5f323f34cdf21e1d9779a54073f0018a3094ab907938331a2", + "sha256:82e871307a6331b5f09efda3c22e03c095d957f04bf6bc1804f30048d0e5e7af", + "sha256:8ab9163ca8aeb7fd32fe93866490654d2f7dda4e61bc6297bf72ce07fdc02f67", + "sha256:9696aa2e35cc41e398a6d42d147cf326f8f9d81befcb399bc1ed7ffea339b64e", + "sha256:97e5d6a9f0702c2863aaabf19f0d1b6c2628fbe476438ce0b5ce06e83085064c", + "sha256:9f42284ebf91bdf32fafac29d29d4c07e5e9d1af862ea73686581773ef9e73a7", + "sha256:a03fb25610ef560a6201ff06df4f8105292ba56e7cdd196ea350d123fc32e24e", + "sha256:a5b411040beead47a228bde3b2241100454a6abde9df139ed087bd73fc0a4908", + "sha256:af22f3d8e228d84d1c0c44c1fbdeb80f97a15a0abe4f080960393a00db733b66", + "sha256:afd5ced4e5a96dac6725daeb5242a35494243f2239244fad10a90ce58b071d24", + "sha256:b9d45d1dbb9de84894cc50efece5b09939752a2d75aab3a8b0cef6f3a35ecd6b", + "sha256:bb894accfd16b867d8643fc2ba6c8617c78ba2828051e9a69511644ce86ce83e", + "sha256:c8c6c72d4a9f831f328efb1312642a1cafafaa88981d9ab76368d50d07d93cbe", + "sha256:cd7837b2b734ca72959a1caf3309457a318c934abef7a43a14bb984e574bbb9a", + "sha256:cdd9ec98f0063d93baeb01aad472a1a0840dee302842a2746a7a8e92968f9575", + "sha256:d1cfc92db6af1fd37a7bb58e55c8383b4aa1ba23d012bdbba26b4bcca45ac297", + "sha256:d1d2c6b7dd618c41e202c59c1413ef9b2c8e8a15f5039e344af64195459e3104", + "sha256:d2984cb6caaf05294b8466966627e80bf6c7afd273279077679cb010acb0e5ab", + "sha256:d58e8c51a7cf43090d124d5073bc29ab2755822181fcad978b12e144e5e5a4b3", + "sha256:d78f269e0c4fd365fc2992c00353e4530d274ba68f15e968d8bc3c69ce5f5244", + "sha256:dcfaf015b79d1f9f9c9fd0731a907407dc3e45769262d657d754c3a028586124", + "sha256:e44ccb93f30c75dfc0c3aa3ce38f33486a75ec9abadabd4e59f114994a9c4617", + "sha256:e509cbc488c735b43b5ffea175235cec24bbc57b227ef1acc691725beb230d1c" ], "index": "pypi", - "version": "==1.25.2" + "markers": "python_version < '3.13' and python_version >= '3.9'", + "version": "==1.26.1" }, "oauthlib": { "hashes": [ @@ -1136,36 +1165,43 @@ }, "packaging": { "hashes": [ - "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61", - "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" + "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", + "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" ], "markers": "python_version >= '3.7'", - "version": "==23.1" + "version": "==23.2" }, "pandas": { "hashes": [ - "sha256:0164b85937707ec7f70b34a6c3a578dbf0f50787f910f21ca3b26a7fd3363437", - "sha256:28f330845ad21c11db51e02d8d69acc9035edfd1116926ff7245c7215db57957", - "sha256:38f74ef7ebc0ffb43b3d633e23d74882bce7e27bfa09607f3c5d3e03ffd9a4a5", - "sha256:40dd20439ff94f1b2ed55b393ecee9cb6f3b08104c2c40b0cb7186a2f0046242", - "sha256:629124923bcf798965b054a540f9ccdfd60f71361255c81fa1ecd94a904b9dd3", - "sha256:62c24c7fc59e42b775ce0679cfa7b14a5f9bfb7643cfbe708c960699e05fb918", - "sha256:6e6a0fe052cf27ceb29be9429428b4918f3740e37ff185658f40d8702f0b3e09", - "sha256:70cf866af3ab346a10debba8ea78077cf3a8cd14bd5e4bed3d41555a3280041c", - "sha256:86f100b3876b8c6d1a2c66207288ead435dc71041ee4aea789e55ef0e06408cb", - "sha256:9d81e1813191070440d4c7a413cb673052b3b4a984ffd86b8dd468c45742d3cc", - "sha256:b31da36d376d50a1a492efb18097b9101bdbd8b3fbb3f49006e02d4495d4c644", - "sha256:b9a6ccf0963db88f9b12df6720e55f337447aea217f426a22d71f4213a3099a6", - "sha256:cda72cc8c4761c8f1d97b169661f23a86b16fdb240bdc341173aee17e4d6cedd", - "sha256:d4f38e4fedeba580285eaac7ede4f686c6701a9e618d8a857b138a126d067f2f", - "sha256:d53c8c1001f6a192ff1de1efe03b31a423d0eee2e9e855e69d004308e046e694", - "sha256:d8c58b1113892e0c8078f006a167cc210a92bdae23322bb4614f2f0b7a4b510f", - "sha256:d97daeac0db8c993420b10da4f5f5b39b01fc9ca689a17844e07c0a35ac96b4b", - "sha256:d99e678180bc59b0c9443314297bddce4ad35727a1a2656dbe585fd78710b3b9", - "sha256:eb20252720b1cc1b7d0b2879ffc7e0542dd568f24d7c4b2347cb035206936421" + "sha256:02304e11582c5d090e5a52aec726f31fe3f42895d6bfc1f28738f9b64b6f0614", + "sha256:0489b0e6aa3d907e909aef92975edae89b1ee1654db5eafb9be633b0124abe97", + "sha256:05674536bd477af36aa2effd4ec8f71b92234ce0cc174de34fd21e2ee99adbc2", + "sha256:25e8474a8eb258e391e30c288eecec565bfed3e026f312b0cbd709a63906b6f8", + "sha256:29deb61de5a8a93bdd033df328441a79fcf8dd3c12d5ed0b41a395eef9cd76f0", + "sha256:366da7b0e540d1b908886d4feb3d951f2f1e572e655c1160f5fde28ad4abb750", + "sha256:3bcad1e6fb34b727b016775bea407311f7721db87e5b409e6542f4546a4951ea", + "sha256:4c3f32fd7c4dccd035f71734df39231ac1a6ff95e8bdab8d891167197b7018d2", + "sha256:4cdb0fab0400c2cb46dafcf1a0fe084c8bb2480a1fa8d81e19d15e12e6d4ded2", + "sha256:4f99bebf19b7e03cf80a4e770a3e65eee9dd4e2679039f542d7c1ace7b7b1daa", + "sha256:58d997dbee0d4b64f3cb881a24f918b5f25dd64ddf31f467bb9b67ae4c63a1e4", + "sha256:75ce97667d06d69396d72be074f0556698c7f662029322027c226fd7a26965cb", + "sha256:84e7e910096416adec68075dc87b986ff202920fb8704e6d9c8c9897fe7332d6", + "sha256:9e2959720b70e106bb1d8b6eadd8ecd7c8e99ccdbe03ee03260877184bb2877d", + "sha256:9e50e72b667415a816ac27dfcfe686dc5a0b02202e06196b943d54c4f9c7693e", + "sha256:a0dbfea0dd3901ad4ce2306575c54348d98499c95be01b8d885a2737fe4d7a98", + "sha256:b407381258a667df49d58a1b637be33e514b07f9285feb27769cedb3ab3d0b3a", + "sha256:b8bd1685556f3374520466998929bade3076aeae77c3e67ada5ed2b90b4de7f0", + "sha256:c1f84c144dee086fe4f04a472b5cd51e680f061adf75c1ae4fc3a9275560f8f4", + "sha256:c747793c4e9dcece7bb20156179529898abf505fe32cb40c4052107a3c620b49", + "sha256:cc1ab6a25da197f03ebe6d8fa17273126120874386b4ac11c1d687df288542dd", + "sha256:dc3657869c7902810f32bd072f0740487f9e030c1a3ab03e0af093db35a9d14e", + "sha256:f5ec7740f9ccb90aec64edd71434711f58ee0ea7f5ed4ac48be11cfa9abf7317", + "sha256:fecb198dc389429be557cde50a2d46da8434a17fe37d7d41ff102e3987fd947b", + "sha256:ffa8f0966de2c22de408d0e322db2faed6f6e74265aa0856f3824813cf124363" ], "index": "pypi", - "version": "==2.1.0" + "markers": "python_version >= '3.9'", + "version": "==2.1.1" }, "parso": { "hashes": [ @@ -1185,11 +1221,11 @@ }, "phonenumbers": { "hashes": [ - "sha256:97f151fc904b0d6274dd92b02c82a7936e7dcaf9c7204f2f3e9c7ed0381f5098", - "sha256:bf2b35a806d37979e5361109429da46d9a047e59d9af98639d733c834e7dab22" + "sha256:34d6cb279dd4a64714e324c71350f96e5bda3237be28d11b4c555c44701544cd", + "sha256:869e44fcaaf276eca6b953a401e2b27d57461f3a18a66cf5f13377e7bb0e228c" ], "index": "pypi", - "version": "==8.13.20" + "version": "==8.13.23" }, "pickleshare": { "hashes": [ @@ -1206,88 +1242,81 @@ "markers": "python_full_version >= '3.7.0'", "version": "==3.0.39" }, - "psycopg2": { - "hashes": [ - "sha256:1a6a2d609bce44f78af4556bea0c62a5e7f05c23e5ea9c599e07678995609084", - "sha256:44d93a0109dfdf22fe399b419bcd7fa589d86895d3931b01fb321d74dadc68f1", - "sha256:8275abf628c6dc7ec834ea63f6f3846bf33518907a2b9b693d41fd063767a866", - "sha256:91e81a8333a0037babfc9fe6d11e997a9d4dac0f38c43074886b0d9dead94fe9", - "sha256:b22ed9c66da2589a664e0f1ca2465c29b75aaab36fa209d4fb916025fb9119e5", - "sha256:b6bd7d9d3a7a63faae6edf365f0ed0e9b0a1aaf1da3ca146e6b043fb3eb5d723", - "sha256:c7949770cafbd2f12cecc97dea410c514368908a103acf519f2a346134caa4d5", - "sha256:d1210fcf99aae6f728812d1d2240afc1dc44b9e6cba526a06fb8134f969957c2", - "sha256:d5c5297e2fbc8068d4255f1e606bfc9291f06f91ec31b2a0d4c536210ac5c0a2", - "sha256:e9b04cbef584310a1ac0f0d55bb623ca3244c87c51187645432e342de9ae81a8", - "sha256:f00cc35bd7119f1fed17b85bd1007855194dde2cbd8de01ab8ebb17487440ad8" - ], - "index": "pypi", - "version": "==2.9.7" - }, "psycopg2-binary": { "hashes": [ - "sha256:00d8db270afb76f48a499f7bb8fa70297e66da67288471ca873db88382850bf4", - "sha256:024eaeb2a08c9a65cd5f94b31ace1ee3bb3f978cd4d079406aef85169ba01f08", - "sha256:094af2e77a1976efd4956a031028774b827029729725e136514aae3cdf49b87b", - "sha256:1011eeb0c51e5b9ea1016f0f45fa23aca63966a4c0afcf0340ccabe85a9f65bd", - "sha256:11abdbfc6f7f7dea4a524b5f4117369b0d757725798f1593796be6ece20266cb", - "sha256:122641b7fab18ef76b18860dd0c772290566b6fb30cc08e923ad73d17461dc63", - "sha256:17cc17a70dfb295a240db7f65b6d8153c3d81efb145d76da1e4a096e9c5c0e63", - "sha256:18f12632ab516c47c1ac4841a78fddea6508a8284c7cf0f292cb1a523f2e2379", - "sha256:1b918f64a51ffe19cd2e230b3240ba481330ce1d4b7875ae67305bd1d37b041c", - "sha256:1c31c2606ac500dbd26381145684d87730a2fac9a62ebcfbaa2b119f8d6c19f4", - "sha256:26484e913d472ecb6b45937ea55ce29c57c662066d222fb0fbdc1fab457f18c5", - "sha256:2993ccb2b7e80844d534e55e0f12534c2871952f78e0da33c35e648bf002bbff", - "sha256:2b04da24cbde33292ad34a40db9832a80ad12de26486ffeda883413c9e1b1d5e", - "sha256:2dec5a75a3a5d42b120e88e6ed3e3b37b46459202bb8e36cd67591b6e5feebc1", - "sha256:2df562bb2e4e00ee064779902d721223cfa9f8f58e7e52318c97d139cf7f012d", - "sha256:3fbb1184c7e9d28d67671992970718c05af5f77fc88e26fd7136613c4ece1f89", - "sha256:42a62ef0e5abb55bf6ffb050eb2b0fcd767261fa3faf943a4267539168807522", - "sha256:4ecc15666f16f97709106d87284c136cdc82647e1c3f8392a672616aed3c7151", - "sha256:4eec5d36dbcfc076caab61a2114c12094c0b7027d57e9e4387b634e8ab36fd44", - "sha256:4fe13712357d802080cfccbf8c6266a3121dc0e27e2144819029095ccf708372", - "sha256:51d1b42d44f4ffb93188f9b39e6d1c82aa758fdb8d9de65e1ddfe7a7d250d7ad", - "sha256:59f7e9109a59dfa31efa022e94a244736ae401526682de504e87bd11ce870c22", - "sha256:62cb6de84d7767164a87ca97e22e5e0a134856ebcb08f21b621c6125baf61f16", - "sha256:642df77484b2dcaf87d4237792246d8068653f9e0f5c025e2c692fc56b0dda70", - "sha256:6822c9c63308d650db201ba22fe6648bd6786ca6d14fdaf273b17e15608d0852", - "sha256:692df8763b71d42eb8343f54091368f6f6c9cfc56dc391858cdb3c3ef1e3e584", - "sha256:6d92e139ca388ccfe8c04aacc163756e55ba4c623c6ba13d5d1595ed97523e4b", - "sha256:7952807f95c8eba6a8ccb14e00bf170bb700cafcec3924d565235dffc7dc4ae8", - "sha256:7db7b9b701974c96a88997d458b38ccb110eba8f805d4b4f74944aac48639b42", - "sha256:81d5dd2dd9ab78d31a451e357315f201d976c131ca7d43870a0e8063b6b7a1ec", - "sha256:8a136c8aaf6615653450817a7abe0fc01e4ea720ae41dfb2823eccae4b9062a3", - "sha256:8a7968fd20bd550431837656872c19575b687f3f6f98120046228e451e4064df", - "sha256:8c721ee464e45ecf609ff8c0a555018764974114f671815a0a7152aedb9f3343", - "sha256:8f309b77a7c716e6ed9891b9b42953c3ff7d533dc548c1e33fddc73d2f5e21f9", - "sha256:8f94cb12150d57ea433e3e02aabd072205648e86f1d5a0a692d60242f7809b15", - "sha256:95a7a747bdc3b010bb6a980f053233e7610276d55f3ca506afff4ad7749ab58a", - "sha256:9b0c2b466b2f4d89ccc33784c4ebb1627989bd84a39b79092e560e937a11d4ac", - "sha256:9dcfd5d37e027ec393a303cc0a216be564b96c80ba532f3d1e0d2b5e5e4b1e6e", - "sha256:a5ee89587696d808c9a00876065d725d4ae606f5f7853b961cdbc348b0f7c9a1", - "sha256:a6a8b575ac45af1eaccbbcdcf710ab984fd50af048fe130672377f78aaff6fc1", - "sha256:ac83ab05e25354dad798401babaa6daa9577462136ba215694865394840e31f8", - "sha256:ad26d4eeaa0d722b25814cce97335ecf1b707630258f14ac4d2ed3d1d8415265", - "sha256:ad5ec10b53cbb57e9a2e77b67e4e4368df56b54d6b00cc86398578f1c635f329", - "sha256:c82986635a16fb1fa15cd5436035c88bc65c3d5ced1cfaac7f357ee9e9deddd4", - "sha256:ced63c054bdaf0298f62681d5dcae3afe60cbae332390bfb1acf0e23dcd25fc8", - "sha256:d0b16e5bb0ab78583f0ed7ab16378a0f8a89a27256bb5560402749dbe8a164d7", - "sha256:dbbc3c5d15ed76b0d9db7753c0db40899136ecfe97d50cbde918f630c5eb857a", - "sha256:ded8e15f7550db9e75c60b3d9fcbc7737fea258a0f10032cdb7edc26c2a671fd", - "sha256:e02bc4f2966475a7393bd0f098e1165d470d3fa816264054359ed4f10f6914ea", - "sha256:e5666632ba2b0d9757b38fc17337d84bdf932d38563c5234f5f8c54fd01349c9", - "sha256:ea5f8ee87f1eddc818fc04649d952c526db4426d26bab16efbe5a0c52b27d6ab", - "sha256:eb1c0e682138f9067a58fc3c9a9bf1c83d8e08cfbee380d858e63196466d5c86", - "sha256:eb3b8d55924a6058a26db69fb1d3e7e32695ff8b491835ba9f479537e14dcf9f", - "sha256:ee919b676da28f78f91b464fb3e12238bd7474483352a59c8a16c39dfc59f0c5", - "sha256:f02f4a72cc3ab2565c6d9720f0343cb840fb2dc01a2e9ecb8bc58ccf95dc5c06", - "sha256:f4f37bbc6588d402980ffbd1f3338c871368fb4b1cfa091debe13c68bb3852b3", - "sha256:f8651cf1f144f9ee0fa7d1a1df61a9184ab72962531ca99f077bbdcba3947c58", - "sha256:f955aa50d7d5220fcb6e38f69ea126eafecd812d96aeed5d5f3597f33fad43bb", - "sha256:fc10da7e7df3380426521e8c1ed975d22df678639da2ed0ec3244c3dc2ab54c8", - "sha256:fdca0511458d26cf39b827a663d7d87db6f32b93efc22442a742035728603d5f" + "sha256:03ef7df18daf2c4c07e2695e8cfd5ee7f748a1d54d802330985a78d2a5a6dca9", + "sha256:0a602ea5aff39bb9fac6308e9c9d82b9a35c2bf288e184a816002c9fae930b77", + "sha256:0c009475ee389757e6e34611d75f6e4f05f0cf5ebb76c6037508318e1a1e0d7e", + "sha256:0ef4854e82c09e84cc63084a9e4ccd6d9b154f1dbdd283efb92ecd0b5e2b8c84", + "sha256:1236ed0952fbd919c100bc839eaa4a39ebc397ed1c08a97fc45fee2a595aa1b3", + "sha256:143072318f793f53819048fdfe30c321890af0c3ec7cb1dfc9cc87aa88241de2", + "sha256:15208be1c50b99203fe88d15695f22a5bed95ab3f84354c494bcb1d08557df67", + "sha256:1873aade94b74715be2246321c8650cabf5a0d098a95bab81145ffffa4c13876", + "sha256:18d0ef97766055fec15b5de2c06dd8e7654705ce3e5e5eed3b6651a1d2a9a152", + "sha256:1ea665f8ce695bcc37a90ee52de7a7980be5161375d42a0b6c6abedbf0d81f0f", + "sha256:2293b001e319ab0d869d660a704942c9e2cce19745262a8aba2115ef41a0a42a", + "sha256:246b123cc54bb5361588acc54218c8c9fb73068bf227a4a531d8ed56fa3ca7d6", + "sha256:275ff571376626195ab95a746e6a04c7df8ea34638b99fc11160de91f2fef503", + "sha256:281309265596e388ef483250db3640e5f414168c5a67e9c665cafce9492eda2f", + "sha256:2d423c8d8a3c82d08fe8af900ad5b613ce3632a1249fd6a223941d0735fce493", + "sha256:2e5afae772c00980525f6d6ecf7cbca55676296b580c0e6abb407f15f3706996", + "sha256:30dcc86377618a4c8f3b72418df92e77be4254d8f89f14b8e8f57d6d43603c0f", + "sha256:31a34c508c003a4347d389a9e6fcc2307cc2150eb516462a7a17512130de109e", + "sha256:323ba25b92454adb36fa425dc5cf6f8f19f78948cbad2e7bc6cdf7b0d7982e59", + "sha256:34eccd14566f8fe14b2b95bb13b11572f7c7d5c36da61caf414d23b91fcc5d94", + "sha256:3a58c98a7e9c021f357348867f537017057c2ed7f77337fd914d0bedb35dace7", + "sha256:3f78fd71c4f43a13d342be74ebbc0666fe1f555b8837eb113cb7416856c79682", + "sha256:4154ad09dac630a0f13f37b583eae260c6aa885d67dfbccb5b02c33f31a6d420", + "sha256:420f9bbf47a02616e8554e825208cb947969451978dceb77f95ad09c37791dae", + "sha256:4686818798f9194d03c9129a4d9a702d9e113a89cb03bffe08c6cf799e053291", + "sha256:57fede879f08d23c85140a360c6a77709113efd1c993923c59fde17aa27599fe", + "sha256:60989127da422b74a04345096c10d416c2b41bd7bf2a380eb541059e4e999980", + "sha256:68fc1f1ba168724771e38bee37d940d2865cb0f562380a1fb1ffb428b75cb692", + "sha256:6e6f98446430fdf41bd36d4faa6cb409f5140c1c2cf58ce0bbdaf16af7d3f119", + "sha256:729177eaf0aefca0994ce4cffe96ad3c75e377c7b6f4efa59ebf003b6d398716", + "sha256:72dffbd8b4194858d0941062a9766f8297e8868e1dd07a7b36212aaa90f49472", + "sha256:75723c3c0fbbf34350b46a3199eb50638ab22a0228f93fb472ef4d9becc2382b", + "sha256:77853062a2c45be16fd6b8d6de2a99278ee1d985a7bd8b103e97e41c034006d2", + "sha256:78151aa3ec21dccd5cdef6c74c3e73386dcdfaf19bced944169697d7ac7482fc", + "sha256:7f01846810177d829c7692f1f5ada8096762d9172af1b1a28d4ab5b77c923c1c", + "sha256:804d99b24ad523a1fe18cc707bf741670332f7c7412e9d49cb5eab67e886b9b5", + "sha256:8359bf4791968c5a78c56103702000105501adb557f3cf772b2c207284273984", + "sha256:83791a65b51ad6ee6cf0845634859d69a038ea9b03d7b26e703f94c7e93dbcf9", + "sha256:8532fd6e6e2dc57bcb3bc90b079c60de896d2128c5d9d6f24a63875a95a088cf", + "sha256:876801744b0dee379e4e3c38b76fc89f88834bb15bf92ee07d94acd06ec890a0", + "sha256:8dbf6d1bc73f1d04ec1734bae3b4fb0ee3cb2a493d35ede9badbeb901fb40f6f", + "sha256:8f8544b092a29a6ddd72f3556a9fcf249ec412e10ad28be6a0c0d948924f2212", + "sha256:911dda9c487075abd54e644ccdf5e5c16773470a6a5d3826fda76699410066fb", + "sha256:977646e05232579d2e7b9c59e21dbe5261f403a88417f6a6512e70d3f8a046be", + "sha256:9dba73be7305b399924709b91682299794887cbbd88e38226ed9f6712eabee90", + "sha256:a148c5d507bb9b4f2030a2025c545fccb0e1ef317393eaba42e7eabd28eb6041", + "sha256:a6cdcc3ede532f4a4b96000b6362099591ab4a3e913d70bcbac2b56c872446f7", + "sha256:ac05fb791acf5e1a3e39402641827780fe44d27e72567a000412c648a85ba860", + "sha256:b58b4710c7f4161b5e9dcbe73bb7c62d65670a87df7bcce9e1faaad43e715245", + "sha256:b6356793b84728d9d50ead16ab43c187673831e9d4019013f1402c41b1db9b27", + "sha256:b76bedd166805480ab069612119ea636f5ab8f8771e640ae103e05a4aae3e417", + "sha256:bc7bb56d04601d443f24094e9e31ae6deec9ccb23581f75343feebaf30423359", + "sha256:c2470da5418b76232f02a2fcd2229537bb2d5a7096674ce61859c3229f2eb202", + "sha256:c332c8d69fb64979ebf76613c66b985414927a40f8defa16cf1bc028b7b0a7b0", + "sha256:c6af2a6d4b7ee9615cbb162b0738f6e1fd1f5c3eda7e5da17861eacf4c717ea7", + "sha256:c77e3d1862452565875eb31bdb45ac62502feabbd53429fdc39a1cc341d681ba", + "sha256:ca08decd2697fdea0aea364b370b1249d47336aec935f87b8bbfd7da5b2ee9c1", + "sha256:ca49a8119c6cbd77375ae303b0cfd8c11f011abbbd64601167ecca18a87e7cdd", + "sha256:cb16c65dcb648d0a43a2521f2f0a2300f40639f6f8c1ecbc662141e4e3e1ee07", + "sha256:d2997c458c690ec2bc6b0b7ecbafd02b029b7b4283078d3b32a852a7ce3ddd98", + "sha256:d3f82c171b4ccd83bbaf35aa05e44e690113bd4f3b7b6cc54d2219b132f3ae55", + "sha256:dc4926288b2a3e9fd7b50dc6a1909a13bbdadfc67d93f3374d984e56f885579d", + "sha256:ead20f7913a9c1e894aebe47cccf9dc834e1618b7aa96155d2091a626e59c972", + "sha256:ebdc36bea43063116f0486869652cb2ed7032dbc59fbcb4445c4862b5c1ecf7f", + "sha256:ed1184ab8f113e8d660ce49a56390ca181f2981066acc27cf637d5c1e10ce46e", + "sha256:ee825e70b1a209475622f7f7b776785bd68f34af6e7a46e2e42f27b659b5bc26", + "sha256:f7ae5d65ccfbebdfa761585228eb4d0df3a8b15cfb53bd953e713e09fbb12957", + "sha256:f7fc5a5acafb7d6ccca13bfa8c90f8c51f13d8fb87d95656d3950f0158d3ce53", + "sha256:f9b5571d33660d5009a8b3c25dc1db560206e2d2f89d3df1cb32d72c0d117d52" ], "index": "pypi", - "version": "==2.9.7" + "markers": "python_version >= '3.7'", + "version": "==2.9.9" }, "ptyprocess": { "hashes": [ @@ -1355,6 +1384,7 @@ "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], "index": "pypi", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==2.8.2" }, "python-dotenv": { @@ -1425,15 +1455,17 @@ "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==6.0.1" }, "redis": { "hashes": [ - "sha256:06570d0b2d84d46c21defc550afbaada381af82f5b83e5b3777600e05d8e2ed0", - "sha256:5cea6c0d335c9a7332a460ed8729ceabb4d0c489c7285b0a86dbbf8a017bd120" + "sha256:0dab495cd5753069d3bc650a0dde8a8f9edde16fc5691b689a566eda58100d0f", + "sha256:ed4802971884ae19d640775ba3b03aa2e7bd5e8fb8dfaed2decce4d0fc48391f" ], "index": "pypi", - "version": "==5.0.0" + "markers": "python_version >= '3.7'", + "version": "==5.0.1" }, "requests": { "hashes": [ @@ -1441,6 +1473,7 @@ "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==2.31.0" }, "requests-oauthlib": { @@ -1453,77 +1486,83 @@ }, "s3transfer": { "hashes": [ - "sha256:b014be3a8a2aab98cfe1abc7229cc5a9a0cf05eb9c1f2b86b230fd8df3f78084", - "sha256:cab66d3380cca3e70939ef2255d01cd8aece6a4907a9528740f668c4b0611861" + "sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a", + "sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e" ], "markers": "python_version >= '3.7'", - "version": "==0.6.2" + "version": "==0.7.0" }, "scikit-learn": { "hashes": [ - "sha256:0e8102d5036e28d08ab47166b48c8d5e5810704daecf3a476a4282d562be9a28", - "sha256:151ac2bf65ccf363664a689b8beafc9e6aae36263db114b4ca06fbbbf827444a", - "sha256:1d54fb9e6038284548072df22fd34777e434153f7ffac72c8596f2d6987110dd", - "sha256:3a11936adbc379a6061ea32fa03338d4ca7248d86dd507c81e13af428a5bc1db", - "sha256:436aaaae2c916ad16631142488e4c82f4296af2404f480e031d866863425d2a2", - "sha256:552fd1b6ee22900cf1780d7386a554bb96949e9a359999177cf30211e6b20df6", - "sha256:6a885a9edc9c0a341cab27ec4f8a6c58b35f3d449c9d2503a6fd23e06bbd4f6a", - "sha256:7617164951c422747e7c32be4afa15d75ad8044f42e7d70d3e2e0429a50e6718", - "sha256:79970a6d759eb00a62266a31e2637d07d2d28446fca8079cf9afa7c07b0427f8", - "sha256:850a00b559e636b23901aabbe79b73dc604b4e4248ba9e2d6e72f95063765603", - "sha256:8be549886f5eda46436b6e555b0e4873b4f10aa21c07df45c4bc1735afbccd7a", - "sha256:981287869e576d42c682cf7ca96af0c6ac544ed9316328fd0d9292795c742cf5", - "sha256:9877af9c6d1b15486e18a94101b742e9d0d2f343d35a634e337411ddb57783f3", - "sha256:998d38fcec96584deee1e79cd127469b3ad6fefd1ea6c2dfc54e8db367eb396b", - "sha256:9d953531f5d9f00c90c34fa3b7d7cfb43ecff4c605dac9e4255a20b114a27369", - "sha256:ae80c08834a473d08a204d966982a62e11c976228d306a2648c575e3ead12111", - "sha256:c470f53cea065ff3d588050955c492793bb50c19a92923490d18fcb637f6383a", - "sha256:c7e28d8fa47a0b30ae1bd7a079519dd852764e31708a7804da6cb6f8b36e3630", - "sha256:ded35e810438a527e17623ac6deae3b360134345b7c598175ab7741720d7ffa7", - "sha256:ee04835fb016e8062ee9fe9074aef9b82e430504e420bff51e3e5fffe72750ca", - "sha256:fd6e2d7389542eae01077a1ee0318c4fec20c66c957f45c7aac0c6eb0fe3c612" + "sha256:0402638c9a7c219ee52c94cbebc8fcb5eb9fe9c773717965c1f4185588ad3107", + "sha256:0ee107923a623b9f517754ea2f69ea3b62fc898a3641766cb7deb2f2ce450161", + "sha256:1215e5e58e9880b554b01187b8c9390bf4dc4692eedeaf542d3273f4785e342c", + "sha256:15e1e94cc23d04d39da797ee34236ce2375ddea158b10bee3c343647d615581d", + "sha256:18424efee518a1cde7b0b53a422cde2f6625197de6af36da0b57ec502f126157", + "sha256:1d08ada33e955c54355d909b9c06a4789a729977f165b8bae6f225ff0a60ec4a", + "sha256:3271552a5eb16f208a6f7f617b8cc6d1f137b52c8a1ef8edf547db0259b2c9fb", + "sha256:35a22e8015048c628ad099da9df5ab3004cdbf81edc75b396fd0cff8699ac58c", + "sha256:535805c2a01ccb40ca4ab7d081d771aea67e535153e35a1fd99418fcedd1648a", + "sha256:5b2de18d86f630d68fe1f87af690d451388bb186480afc719e5f770590c2ef6c", + "sha256:61a6efd384258789aa89415a410dcdb39a50e19d3d8410bd29be365bcdd512d5", + "sha256:64381066f8aa63c2710e6b56edc9f0894cc7bf59bd71b8ce5613a4559b6145e0", + "sha256:67f37d708f042a9b8d59551cf94d30431e01374e00dc2645fa186059c6c5d78b", + "sha256:6c43290337f7a4b969d207e620658372ba3c1ffb611f8bc2b6f031dc5c6d1d03", + "sha256:6fb6bc98f234fda43163ddbe36df8bcde1d13ee176c6dc9b92bb7d3fc842eb66", + "sha256:763f0ae4b79b0ff9cca0bf3716bcc9915bdacff3cebea15ec79652d1cc4fa5c9", + "sha256:785a2213086b7b1abf037aeadbbd6d67159feb3e30263434139c98425e3dcfcf", + "sha256:8db94cd8a2e038b37a80a04df8783e09caac77cbe052146432e67800e430c028", + "sha256:a19f90f95ba93c1a7f7924906d0576a84da7f3b2282ac3bfb7a08a32801add93", + "sha256:a2f54c76accc15a34bfb9066e6c7a56c1e7235dda5762b990792330b52ccfb05", + "sha256:b8692e395a03a60cd927125eef3a8e3424d86dde9b2370d544f0ea35f78a8073", + "sha256:cb06f8dce3f5ddc5dee1715a9b9f19f20d295bed8e3cd4fa51e1d050347de525", + "sha256:dc9002fc200bed597d5d34e90c752b74df516d592db162f756cc52836b38fe0e", + "sha256:e326c0eb5cf4d6ba40f93776a20e9a7a69524c4db0757e7ce24ba222471ee8a1", + "sha256:ed932ea780517b00dae7431e031faae6b49b20eb6950918eb83bd043237950e0", + "sha256:fc4144a5004a676d5022b798d9e573b05139e77f271253a4703eed295bde0433" ], "index": "pypi", - "version": "==1.3.0" + "markers": "python_version >= '3.8'", + "version": "==1.3.2" }, "scipy": { "hashes": [ - "sha256:0f3261f14b767b316d7137c66cc4f33a80ea05841b9c87ad83a726205b901423", - "sha256:10eb6af2f751aa3424762948e5352f707b0dece77288206f227864ddf675aca0", - "sha256:1342ca385c673208f32472830c10110a9dcd053cf0c4b7d4cd7026d0335a6c1d", - "sha256:214cdf04bbae7a54784f8431f976704ed607c4bc69ba0d5d5d6a9df84374df76", - "sha256:2b997a5369e2d30c97995dcb29d638701f8000d04df01b8e947f206e5d0ac788", - "sha256:2c91cf049ffb5575917f2a01da1da082fd24ed48120d08a6e7297dfcac771dcd", - "sha256:3aeb87661de987f8ec56fa6950863994cd427209158255a389fc5aea51fa7055", - "sha256:4447ad057d7597476f9862ecbd9285bbf13ba9d73ce25acfa4e4b11c6801b4c9", - "sha256:542a757e2a6ec409e71df3d8fd20127afbbacb1c07990cb23c5870c13953d899", - "sha256:8d9886f44ef8c9e776cb7527fb01455bf4f4a46c455c4682edc2c2cc8cd78562", - "sha256:90d3b1364e751d8214e325c371f0ee0dd38419268bf4888b2ae1040a6b266b2a", - "sha256:95763fbda1206bec41157582bea482f50eb3702c85fffcf6d24394b071c0e87a", - "sha256:ac74b1512d38718fb6a491c439aa7b3605b96b1ed3be6599c17d49d6c60fca18", - "sha256:afdb0d983f6135d50770dd979df50bf1c7f58b5b33e0eb8cf5c73c70600eae1d", - "sha256:b0620240ef445b5ddde52460e6bc3483b7c9c750275369379e5f609a1050911c", - "sha256:b133f237bd8ba73bad51bc12eb4f2d84cbec999753bf25ba58235e9fc2096d80", - "sha256:b29318a5e39bd200ca4381d80b065cdf3076c7d7281c5e36569e99273867f61d", - "sha256:b8425fa963a32936c9773ee3ce44a765d8ff67eed5f4ac81dc1e4a819a238ee9", - "sha256:d2b813bfbe8dec6a75164523de650bad41f4405d35b0fa24c2c28ae07fcefb20", - "sha256:d690e1ca993c8f7ede6d22e5637541217fc6a4d3f78b3672a6fe454dbb7eb9a7", - "sha256:e367904a0fec76433bf3fbf3e85bf60dae8e9e585ffd21898ab1085a29a04d16", - "sha256:ea932570b1c2a30edafca922345854ff2cd20d43cd9123b6dacfdecebfc1a80b", - "sha256:f28f1f6cfeb48339c192efc6275749b2a25a7e49c4d8369a28b6591da02fbc9a", - "sha256:f73102f769ee06041a3aa26b5841359b1a93cc364ce45609657751795e8f4a4a", - "sha256:fa4909c6c20c3d91480533cddbc0e7c6d849e7d9ded692918c76ce5964997898" + "sha256:00f325434b6424952fbb636506f0567898dca7b0f7654d48f1c382ea338ce9a3", + "sha256:033c3fd95d55012dd1148b201b72ae854d5086d25e7c316ec9850de4fe776929", + "sha256:0d3a136ae1ff0883fffbb1b05b0b2fea251cb1046a5077d0b435a1839b3e52b7", + "sha256:15f237e890c24aef6891c7d008f9ff7e758c6ef39a2b5df264650eb7900403c0", + "sha256:370f569c57e1d888304052c18e58f4a927338eafdaef78613c685ca2ea0d1fa0", + "sha256:3e1a8a4657673bfae1e05e1e1d6e94b0cabe5ed0c7c144c8aa7b7dbb774ce5c1", + "sha256:4b4bb134c7aa457e26cc6ea482b016fef45db71417d55cc6d8f43d799cdf9ef2", + "sha256:5305792c7110e32ff155aed0df46aa60a60fc6e52cd4ee02cdeb67eaccd5356e", + "sha256:5664e364f90be8219283eeb844323ff8cd79d7acbd64e15eb9c46b9bc7f6a42a", + "sha256:5f290cf561a4b4edfe8d1001ee4be6da60c1c4ea712985b58bf6bc62badee221", + "sha256:74e89dc5e00201e71dd94f5f382ab1c6a9f3ff806c7d24e4e90928bb1aafb280", + "sha256:7abda0e62ef00cde826d441485e2e32fe737bdddee3324e35c0e01dee65e2a88", + "sha256:90271dbde4be191522b3903fc97334e3956d7cfb9cce3f0718d0ab4fd7d8bfd6", + "sha256:91770cb3b1e81ae19463b3c235bf1e0e330767dca9eb4cd73ba3ded6c4151e4d", + "sha256:925c6f09d0053b1c0f90b2d92d03b261e889b20d1c9b08a3a51f61afc5f58165", + "sha256:9885e3e4f13b2bd44aaf2a1a6390a11add9f48d5295f7a592393ceb8991577a3", + "sha256:9ea7f579182d83d00fed0e5c11a4aa5ffe01460444219dedc448a36adf0c3917", + "sha256:a63d1ec9cadecce838467ce0631c17c15c7197ae61e49429434ba01d618caa83", + "sha256:bae66a2d7d5768eaa33008fa5a974389f167183c87bf39160d3fefe6664f8ddc", + "sha256:bba4d955f54edd61899776bad459bf7326e14b9fa1c552181f0479cc60a568cd", + "sha256:c77da50c9a91e23beb63c2a711ef9e9ca9a2060442757dffee34ea41847d8156", + "sha256:d2f6dee6cbb0e263b8142ed587bc93e3ed5e777f1f75448d24fb923d9fd4dce6", + "sha256:dfcc1552add7cb7c13fb70efcb2389d0624d571aaf2c80b04117e2755a0c5d15", + "sha256:e04aa19acc324a1a076abb4035dabe9b64badb19f76ad9c798bde39d41025cdc", + "sha256:e1f97cd89c0fe1a0685f8f89d85fa305deb3067d0668151571ba50913e445820" ], "markers": "python_version < '3.13' and python_version >= '3.9'", - "version": "==1.11.2" + "version": "==1.11.3" }, "sentry-sdk": { "hashes": [ - "sha256:2e53ad63f96bb9da6570ba2e755c267e529edcf58580a2c0d2a11ef26e1e678b", - "sha256:7dc873b87e1faf4d00614afd1058bfa1522942f33daef8a59f90de8ed75cd10c" + "sha256:935e8fbd7787a3702457393b74b13d89a5afb67185bc0af85c00cb27cbd42e7c", + "sha256:eeb0b3550536f3bbc05bb1c7e0feb3a78d74acb43b607159a606ed2ec0a33a4d" ], "index": "pypi", - "version": "==1.30.0" + "version": "==1.32.0" }, "service-identity": { "hashes": [ @@ -1534,11 +1573,11 @@ }, "setuptools": { "hashes": [ - "sha256:00478ca80aeebeecb2f288d3206b0de568df5cd2b8fada1209843cc9a8d88a48", - "sha256:af3d5949030c3f493f550876b2fd1dd5ec66689c4ee5d5344f009746f71fd5a8" + "sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87", + "sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a" ], "markers": "python_version >= '3.8'", - "version": "==68.2.0" + "version": "==68.2.2" }, "shortener": { "hashes": [ @@ -1546,6 +1585,7 @@ "sha256:b40d1309ae8cfea6132b8f10ff1d5e3e44675989f817305943cf97b492e09f72" ], "index": "pypi", + "markers": "python_version >= '3.5'", "version": "==0.2.1" }, "six": { @@ -1582,10 +1622,10 @@ }, "stack-data": { "hashes": [ - "sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815", - "sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8" + "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", + "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695" ], - "version": "==0.6.2" + "version": "==0.6.3" }, "tatsu": { "hashes": [ @@ -1597,11 +1637,12 @@ }, "tblib": { "hashes": [ - "sha256:9100bfa016b047d5b980d66e7efed952fbd20bd85b56110aaf473cb97d18709a", - "sha256:a6df30f272c08bf8be66e0775fad862005d950a6b8449b94f7c788731d70ecd7" + "sha256:80a6c77e59b55e83911e1e607c649836a69c103963c5f28a46cbeef44acf8129", + "sha256:93622790a0a29e04f0346458face1e144dc4d32f493714c6c3dff82a4adb77e6" ], "index": "pypi", - "version": "==2.0.0" + "markers": "python_version >= '3.8'", + "version": "==3.0.0" }, "threadpoolctl": { "hashes": [ @@ -1617,23 +1658,25 @@ "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==4.66.1" }, "traitlets": { "hashes": [ - "sha256:9e6ec080259b9a5940c797d58b613b5e31441c2257b87c2e795c5228ae80d2d8", - "sha256:f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9" + "sha256:7564b5bf8d38c40fa45498072bf4dc5e8346eb087bbf1e2ae2d8774f6a0f078e", + "sha256:98277f247f18b2c5cabaf4af369187754f4fb0e85911d473f72329db8a7f4fae" ], - "markers": "python_version >= '3.7'", - "version": "==5.9.0" + "markers": "python_version >= '3.8'", + "version": "==5.11.2" }, "twilio": { "hashes": [ - "sha256:f7a4446e9a0f1ab3e4be99ebdffe114e06ad16b9bf3f7ce582d64a041a871eb4", - "sha256:ff36612e1139a378c05f713a4efeb09904e968641d287fbeeff2beff2d2c3624" + "sha256:1eb04af92f3e70fcc87a2fd30617f53784e34045d054e4ae3dc9cfe7bdf1e692", + "sha256:3bf2def228ceaa7519f4d6e58b2e3c9cb5d865af02b4618239e52c9d9e75e29d" ], "index": "pypi", - "version": "==8.8.0" + "markers": "python_full_version >= '3.7.0'", + "version": "==8.10.0" }, "twisted": { "extras": [ @@ -1654,13 +1697,20 @@ "markers": "python_version >= '3.7'", "version": "==23.1.1" }, + "types-python-dateutil": { + "hashes": [ + "sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b", + "sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9" + ], + "version": "==2.8.19.14" + }, "typing-extensions": { "hashes": [ - "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36", - "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2" + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], - "markers": "python_version >= '3.7'", - "version": "==4.7.1" + "markers": "python_version < '3.11'", + "version": "==4.8.0" }, "tzdata": { "hashes": [ @@ -1672,11 +1722,12 @@ }, "unidecode": { "hashes": [ - "sha256:547d7c479e4f377b430dd91ac1275d593308dce0fc464fb2ab7d41f82ec653be", - "sha256:fed09cf0be8cf415b391642c2a5addfc72194407caee4f98719e40ec2a72b830" + "sha256:3c90b4662aa0de0cb591884b934ead8d2225f1800d8da675a7750cbc3bd94610", + "sha256:663a537f506834ed836af26a81b210d90cbde044c47bfbdc0fbbc9f94c86a6e4" ], "index": "pypi", - "version": "==1.3.6" + "markers": "python_version >= '3.5'", + "version": "==1.3.7" }, "uritemplate": { "hashes": [ @@ -1684,15 +1735,16 @@ "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==4.1.1" }, "urllib3": { "hashes": [ - "sha256:8d36afa7616d8ab714608411b4a3b13e58f463aee519024578e062e141dce20f", - "sha256:8f135f6502756bde6b2a9b28989df5fbe87c9970cecaa69041edcce7f0589b14" + "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84", + "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", - "version": "==1.26.16" + "markers": "python_version >= '3.6'", + "version": "==2.0.7" }, "uvicorn": { "extras": [ @@ -1702,44 +1754,45 @@ "sha256:1f9be6558f01239d4fdf22ef8126c39cb1ad0addf76c40e760549d2c2f43ab53", "sha256:4d3cc12d7727ba72b64d12d3cc7743124074c0a69f7b201512fc50c3e3f1569a" ], - "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==0.23.2" }, "uvloop": { "hashes": [ - "sha256:0949caf774b9fcefc7c5756bacbbbd3fc4c05a6b7eebc7c7ad6f825b23998d6d", - "sha256:0ddf6baf9cf11a1a22c71487f39f15b2cf78eb5bde7e5b45fbb99e8a9d91b9e1", - "sha256:1436c8673c1563422213ac6907789ecb2b070f5939b9cbff9ef7113f2b531595", - "sha256:23609ca361a7fc587031429fa25ad2ed7242941adec948f9d10c045bfecab06b", - "sha256:2a6149e1defac0faf505406259561bc14b034cdf1d4711a3ddcdfbaa8d825a05", - "sha256:2deae0b0fb00a6af41fe60a675cec079615b01d68beb4cc7b722424406b126a8", - "sha256:307958f9fc5c8bb01fad752d1345168c0abc5d62c1b72a4a8c6c06f042b45b20", - "sha256:30babd84706115626ea78ea5dbc7dd8d0d01a2e9f9b306d24ca4ed5796c66ded", - "sha256:3378eb62c63bf336ae2070599e49089005771cc651c8769aaad72d1bd9385a7c", - "sha256:3d97672dc709fa4447ab83276f344a165075fd9f366a97b712bdd3fee05efae8", - "sha256:3db8de10ed684995a7f34a001f15b374c230f7655ae840964d51496e2f8a8474", - "sha256:3ebeeec6a6641d0adb2ea71dcfb76017602ee2bfd8213e3fcc18d8f699c5104f", - "sha256:45cea33b208971e87a31c17622e4b440cac231766ec11e5d22c76fab3bf9df62", - "sha256:6708f30db9117f115eadc4f125c2a10c1a50d711461699a0cbfaa45b9a78e376", - "sha256:68532f4349fd3900b839f588972b3392ee56042e440dd5873dfbbcd2cc67617c", - "sha256:6aafa5a78b9e62493539456f8b646f85abc7093dd997f4976bb105537cf2635e", - "sha256:7d37dccc7ae63e61f7b96ee2e19c40f153ba6ce730d8ba4d3b4e9738c1dccc1b", - "sha256:864e1197139d651a76c81757db5eb199db8866e13acb0dfe96e6fc5d1cf45fc4", - "sha256:8887d675a64cfc59f4ecd34382e5b4f0ef4ae1da37ed665adba0c2badf0d6578", - "sha256:8efcadc5a0003d3a6e887ccc1fb44dec25594f117a94e3127954c05cf144d811", - "sha256:9b09e0f0ac29eee0451d71798878eae5a4e6a91aa275e114037b27f7db72702d", - "sha256:a4aee22ece20958888eedbad20e4dbb03c37533e010fb824161b4f05e641f738", - "sha256:a5abddb3558d3f0a78949c750644a67be31e47936042d4f6c888dd6f3c95f4aa", - "sha256:c092a2c1e736086d59ac8e41f9c98f26bbf9b9222a76f21af9dfe949b99b2eb9", - "sha256:c686a47d57ca910a2572fddfe9912819880b8765e2f01dc0dd12a9bf8573e539", - "sha256:cbbe908fda687e39afd6ea2a2f14c2c3e43f2ca88e3a11964b297822358d0e6c", - "sha256:ce9f61938d7155f79d3cb2ffa663147d4a76d16e08f65e2c66b77bd41b356718", - "sha256:dbbaf9da2ee98ee2531e0c780455f2841e4675ff580ecf93fe5c48fe733b5667", - "sha256:f1e507c9ee39c61bfddd79714e4f85900656db1aec4d40c6de55648e85c2799c", - "sha256:ff3d00b70ce95adce264462c930fbaecb29718ba6563db354608f37e49e09024" - ], - "markers": "sys_platform == 'linux'", - "version": "==0.17.0" + "sha256:0246f4fd1bf2bf702e06b0d45ee91677ee5c31242f39aab4ea6fe0c51aedd0fd", + "sha256:02506dc23a5d90e04d4f65c7791e65cf44bd91b37f24cfc3ef6cf2aff05dc7ec", + "sha256:13dfdf492af0aa0a0edf66807d2b465607d11c4fa48f4a1fd41cbea5b18e8e8b", + "sha256:2693049be9d36fef81741fddb3f441673ba12a34a704e7b4361efb75cf30befc", + "sha256:271718e26b3e17906b28b67314c45d19106112067205119dddbd834c2b7ce797", + "sha256:2df95fca285a9f5bfe730e51945ffe2fa71ccbfdde3b0da5772b4ee4f2e770d5", + "sha256:31e672bb38b45abc4f26e273be83b72a0d28d074d5b370fc4dcf4c4eb15417d2", + "sha256:34175c9fd2a4bc3adc1380e1261f60306344e3407c20a4d684fd5f3be010fa3d", + "sha256:45bf4c24c19fb8a50902ae37c5de50da81de4922af65baf760f7c0c42e1088be", + "sha256:472d61143059c84947aa8bb74eabbace30d577a03a1805b77933d6bd13ddebbd", + "sha256:47bf3e9312f63684efe283f7342afb414eea4d3011542155c7e625cd799c3b12", + "sha256:492e2c32c2af3f971473bc22f086513cedfc66a130756145a931a90c3958cb17", + "sha256:4ce6b0af8f2729a02a5d1575feacb2a94fc7b2e983868b009d51c9a9d2149bef", + "sha256:5138821e40b0c3e6c9478643b4660bd44372ae1e16a322b8fc07478f92684e24", + "sha256:5588bd21cf1fcf06bded085f37e43ce0e00424197e7c10e77afd4bbefffef428", + "sha256:570fc0ed613883d8d30ee40397b79207eedd2624891692471808a95069a007c1", + "sha256:5a05128d315e2912791de6088c34136bfcdd0c7cbc1cf85fd6fd1bb321b7c849", + "sha256:5daa304d2161d2918fa9a17d5635099a2f78ae5b5960e742b2fcfbb7aefaa593", + "sha256:5f17766fb6da94135526273080f3455a112f82570b2ee5daa64d682387fe0dcd", + "sha256:6e3d4e85ac060e2342ff85e90d0c04157acb210b9ce508e784a944f852a40e67", + "sha256:7010271303961c6f0fe37731004335401eb9075a12680738731e9c92ddd96ad6", + "sha256:7207272c9520203fea9b93843bb775d03e1cf88a80a936ce760f60bb5add92f3", + "sha256:78ab247f0b5671cc887c31d33f9b3abfb88d2614b84e4303f1a63b46c046c8bd", + "sha256:7b1fd71c3843327f3bbc3237bedcdb6504fd50368ab3e04d0410e52ec293f5b8", + "sha256:8ca4956c9ab567d87d59d49fa3704cf29e37109ad348f2d5223c9bf761a332e7", + "sha256:91ab01c6cd00e39cde50173ba4ec68a1e578fee9279ba64f5221810a9e786533", + "sha256:cd81bdc2b8219cb4b2556eea39d2e36bfa375a2dd021404f90a62e44efaaf957", + "sha256:da8435a3bd498419ee8c13c34b89b5005130a476bda1d6ca8cfdde3de35cd650", + "sha256:de4313d7f575474c8f5a12e163f6d89c0a878bc49219641d49e6f1444369a90e", + "sha256:e27f100e1ff17f6feeb1f33968bc185bf8ce41ca557deee9d9bbbffeb72030b7", + "sha256:f467a5fd23b4fc43ed86342641f3936a68ded707f4627622fa3f82a120e18256" + ], + "markers": "python_full_version >= '3.8.0' and sys_platform == 'linux'", + "version": "==0.19.0" }, "uwsgi": { "hashes": [ @@ -1759,112 +1812,167 @@ }, "watchfiles": { "hashes": [ - "sha256:007dcc4a401093010b389c044e81172c8a2520dba257c88f8828b3d460c6bb38", - "sha256:08dc702529bb06a2b23859110c214db245455532da5eaea602921687cfcd23db", - "sha256:0d82dbc1832da83e441d112069833eedd4cf583d983fb8dd666fbefbea9d99c0", - "sha256:13f995d5152a8ba4ed7c2bbbaeee4e11a5944defc7cacd0ccb4dcbdcfd78029a", - "sha256:3796312bd3587e14926013612b23066912cf45a14af71cf2b20db1c12dadf4e9", - "sha256:5392dd327a05f538c56edb1c6ebba6af91afc81b40822452342f6da54907bbdf", - "sha256:570848706440373b4cd8017f3e850ae17f76dbdf1e9045fc79023b11e1afe490", - "sha256:608cd94a8767f49521901aff9ae0c92cc8f5a24d528db7d6b0295290f9d41193", - "sha256:728575b6b94c90dd531514677201e8851708e6e4b5fe7028ac506a200b622019", - "sha256:7d4e66a857621584869cfbad87039e65dadd7119f0d9bb9dbc957e089e32c164", - "sha256:835df2da7a5df5464c4a23b2d963e1a9d35afa422c83bf4ff4380b3114603644", - "sha256:87d9e1f75c4f86c93d73b5bd1ebe667558357548f11b4f8af4e0e272f79413ce", - "sha256:89d1de8218874925bce7bb2ae9657efc504411528930d7a83f98b1749864f2ef", - "sha256:99f4c65fd2fce61a571b2a6fcf747d6868db0bef8a934e8ca235cc8533944d95", - "sha256:9a0351d20d03c6f7ad6b2e8a226a5efafb924c7755ee1e34f04c77c3682417fa", - "sha256:9b5c8d3be7b502f8c43a33c63166ada8828dbb0c6d49c8f9ce990a96de2f5a49", - "sha256:a03d1e6feb7966b417f43c3e3783188167fd69c2063e86bad31e62c4ea794cc5", - "sha256:b17d4176c49d207865630da5b59a91779468dd3e08692fe943064da260de2c7c", - "sha256:d0002d81c89a662b595645fb684a371b98ff90a9c7d8f8630c82f0fde8310458", - "sha256:d97db179f7566dcf145c5179ddb2ae2a4450e3a634eb864b09ea04e68c252e8e", - "sha256:e43af4464daa08723c04b43cf978ab86cc55c684c16172622bdac64b34e36af0", - "sha256:eccc8942bcdc7d638a01435d915b913255bbd66f018f1af051cd8afddb339ea3" - ], - "version": "==0.20.0" + "sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc", + "sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365", + "sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0", + "sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e", + "sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124", + "sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c", + "sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317", + "sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094", + "sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7", + "sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235", + "sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c", + "sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c", + "sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c", + "sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235", + "sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293", + "sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa", + "sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef", + "sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19", + "sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8", + "sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d", + "sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915", + "sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429", + "sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097", + "sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe", + "sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0", + "sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d", + "sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99", + "sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1", + "sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a", + "sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895", + "sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94", + "sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562", + "sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab", + "sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360", + "sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1", + "sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7", + "sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f", + "sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03", + "sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01", + "sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58", + "sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052", + "sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e", + "sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765", + "sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6", + "sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137", + "sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85", + "sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca", + "sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f", + "sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214", + "sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7", + "sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7", + "sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3", + "sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b", + "sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7", + "sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6", + "sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994", + "sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9", + "sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec", + "sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128", + "sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c", + "sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2", + "sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078", + "sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3", + "sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e", + "sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a", + "sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6", + "sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49", + "sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b", + "sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28", + "sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9", + "sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586", + "sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400", + "sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165", + "sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303", + "sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d" + ], + "version": "==0.21.0" }, "wcwidth": { "hashes": [ - "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e", - "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0" + "sha256:77f719e01648ed600dfa5402c347481c0992263b81a027344f3e1ba25493a704", + "sha256:8705c569999ffbb4f6a87c6d1b80f324bd6db952f5eb0b95bc07517f4c1813d4" ], - "version": "==0.2.6" + "version": "==0.2.8" }, "websockets": { "hashes": [ - "sha256:01f5567d9cf6f502d655151645d4e8b72b453413d3819d2b6f1185abc23e82dd", - "sha256:03aae4edc0b1c68498f41a6772d80ac7c1e33c06c6ffa2ac1c27a07653e79d6f", - "sha256:0ac56b661e60edd453585f4bd68eb6a29ae25b5184fd5ba51e97652580458998", - "sha256:0ee68fe502f9031f19d495dae2c268830df2760c0524cbac5d759921ba8c8e82", - "sha256:1553cb82942b2a74dd9b15a018dce645d4e68674de2ca31ff13ebc2d9f283788", - "sha256:1a073fc9ab1c8aff37c99f11f1641e16da517770e31a37265d2755282a5d28aa", - "sha256:1d2256283fa4b7f4c7d7d3e84dc2ece74d341bce57d5b9bf385df109c2a1a82f", - "sha256:1d5023a4b6a5b183dc838808087033ec5df77580485fc533e7dab2567851b0a4", - "sha256:1fdf26fa8a6a592f8f9235285b8affa72748dc12e964a5518c6c5e8f916716f7", - "sha256:2529338a6ff0eb0b50c7be33dc3d0e456381157a31eefc561771ee431134a97f", - "sha256:279e5de4671e79a9ac877427f4ac4ce93751b8823f276b681d04b2156713b9dd", - "sha256:2d903ad4419f5b472de90cd2d40384573b25da71e33519a67797de17ef849b69", - "sha256:332d126167ddddec94597c2365537baf9ff62dfcc9db4266f263d455f2f031cb", - "sha256:34fd59a4ac42dff6d4681d8843217137f6bc85ed29722f2f7222bd619d15e95b", - "sha256:3580dd9c1ad0701169e4d6fc41e878ffe05e6bdcaf3c412f9d559389d0c9e016", - "sha256:3ccc8a0c387629aec40f2fc9fdcb4b9d5431954f934da3eaf16cdc94f67dbfac", - "sha256:41f696ba95cd92dc047e46b41b26dd24518384749ed0d99bea0a941ca87404c4", - "sha256:42cc5452a54a8e46a032521d7365da775823e21bfba2895fb7b77633cce031bb", - "sha256:4841ed00f1026dfbced6fca7d963c4e7043aa832648671b5138008dc5a8f6d99", - "sha256:4b253869ea05a5a073ebfdcb5cb3b0266a57c3764cf6fe114e4cd90f4bfa5f5e", - "sha256:54c6e5b3d3a8936a4ab6870d46bdd6ec500ad62bde9e44462c32d18f1e9a8e54", - "sha256:619d9f06372b3a42bc29d0cd0354c9bb9fb39c2cbc1a9c5025b4538738dbffaf", - "sha256:6505c1b31274723ccaf5f515c1824a4ad2f0d191cec942666b3d0f3aa4cb4007", - "sha256:660e2d9068d2bedc0912af508f30bbeb505bbbf9774d98def45f68278cea20d3", - "sha256:6681ba9e7f8f3b19440921e99efbb40fc89f26cd71bf539e45d8c8a25c976dc6", - "sha256:68b977f21ce443d6d378dbd5ca38621755f2063d6fdb3335bda981d552cfff86", - "sha256:69269f3a0b472e91125b503d3c0b3566bda26da0a3261c49f0027eb6075086d1", - "sha256:6f1a3f10f836fab6ca6efa97bb952300b20ae56b409414ca85bff2ad241d2a61", - "sha256:7622a89d696fc87af8e8d280d9b421db5133ef5b29d3f7a1ce9f1a7bf7fcfa11", - "sha256:777354ee16f02f643a4c7f2b3eff8027a33c9861edc691a2003531f5da4f6bc8", - "sha256:84d27a4832cc1a0ee07cdcf2b0629a8a72db73f4cf6de6f0904f6661227f256f", - "sha256:8531fdcad636d82c517b26a448dcfe62f720e1922b33c81ce695d0edb91eb931", - "sha256:86d2a77fd490ae3ff6fae1c6ceaecad063d3cc2320b44377efdde79880e11526", - "sha256:88fc51d9a26b10fc331be344f1781224a375b78488fc343620184e95a4b27016", - "sha256:8a34e13a62a59c871064dfd8ffb150867e54291e46d4a7cf11d02c94a5275bae", - "sha256:8c82f11964f010053e13daafdc7154ce7385ecc538989a354ccc7067fd7028fd", - "sha256:92b2065d642bf8c0a82d59e59053dd2fdde64d4ed44efe4870fa816c1232647b", - "sha256:97b52894d948d2f6ea480171a27122d77af14ced35f62e5c892ca2fae9344311", - "sha256:9d9acd80072abcc98bd2c86c3c9cd4ac2347b5a5a0cae7ed5c0ee5675f86d9af", - "sha256:9f59a3c656fef341a99e3d63189852be7084c0e54b75734cde571182c087b152", - "sha256:aa5003845cdd21ac0dc6c9bf661c5beddd01116f6eb9eb3c8e272353d45b3288", - "sha256:b16fff62b45eccb9c7abb18e60e7e446998093cdcb50fed33134b9b6878836de", - "sha256:b30c6590146e53149f04e85a6e4fcae068df4289e31e4aee1fdf56a0dead8f97", - "sha256:b58cbf0697721120866820b89f93659abc31c1e876bf20d0b3d03cef14faf84d", - "sha256:b67c6f5e5a401fc56394f191f00f9b3811fe843ee93f4a70df3c389d1adf857d", - "sha256:bceab846bac555aff6427d060f2fcfff71042dba6f5fca7dc4f75cac815e57ca", - "sha256:bee9fcb41db2a23bed96c6b6ead6489702c12334ea20a297aa095ce6d31370d0", - "sha256:c114e8da9b475739dde229fd3bc6b05a6537a88a578358bc8eb29b4030fac9c9", - "sha256:c1f0524f203e3bd35149f12157438f406eff2e4fb30f71221c8a5eceb3617b6b", - "sha256:c792ea4eabc0159535608fc5658a74d1a81020eb35195dd63214dcf07556f67e", - "sha256:c7f3cb904cce8e1be667c7e6fef4516b98d1a6a0635a58a57528d577ac18a128", - "sha256:d67ac60a307f760c6e65dad586f556dde58e683fab03323221a4e530ead6f74d", - "sha256:dcacf2c7a6c3a84e720d1bb2b543c675bf6c40e460300b628bab1b1efc7c034c", - "sha256:de36fe9c02995c7e6ae6efe2e205816f5f00c22fd1fbf343d4d18c3d5ceac2f5", - "sha256:def07915168ac8f7853812cc593c71185a16216e9e4fa886358a17ed0fd9fcf6", - "sha256:df41b9bc27c2c25b486bae7cf42fccdc52ff181c8c387bfd026624a491c2671b", - "sha256:e052b8467dd07d4943936009f46ae5ce7b908ddcac3fda581656b1b19c083d9b", - "sha256:e063b1865974611313a3849d43f2c3f5368093691349cf3c7c8f8f75ad7cb280", - "sha256:e1459677e5d12be8bbc7584c35b992eea142911a6236a3278b9b5ce3326f282c", - "sha256:e1a99a7a71631f0efe727c10edfba09ea6bee4166a6f9c19aafb6c0b5917d09c", - "sha256:e590228200fcfc7e9109509e4d9125eace2042fd52b595dd22bbc34bb282307f", - "sha256:e6316827e3e79b7b8e7d8e3b08f4e331af91a48e794d5d8b099928b6f0b85f20", - "sha256:e7837cb169eca3b3ae94cc5787c4fed99eef74c0ab9506756eea335e0d6f3ed8", - "sha256:e848f46a58b9fcf3d06061d17be388caf70ea5b8cc3466251963c8345e13f7eb", - "sha256:ed058398f55163a79bb9f06a90ef9ccc063b204bb346c4de78efc5d15abfe602", - "sha256:f2e58f2c36cc52d41f2659e4c0cbf7353e28c8c9e63e30d8c6d3494dc9fdedcf", - "sha256:f467ba0050b7de85016b43f5a22b46383ef004c4f672148a8abf32bc999a87f0", - "sha256:f61bdb1df43dc9c131791fbc2355535f9024b9a04398d3bd0684fc16ab07df74", - "sha256:fb06eea71a00a7af0ae6aefbb932fb8a7df3cb390cc217d51a9ad7343de1b8d0", - "sha256:ffd7dcaf744f25f82190856bc26ed81721508fc5cbf2a330751e135ff1283564" - ], - "version": "==11.0.3" + "sha256:00700340c6c7ab788f176d118775202aadea7602c5cc6be6ae127761c16d6b0b", + "sha256:0bee75f400895aef54157b36ed6d3b308fcab62e5260703add87f44cee9c82a6", + "sha256:0e6e2711d5a8e6e482cacb927a49a3d432345dfe7dea8ace7b5790df5932e4df", + "sha256:12743ab88ab2af1d17dd4acb4645677cb7063ef4db93abffbf164218a5d54c6b", + "sha256:1a9d160fd080c6285e202327aba140fc9a0d910b09e423afff4ae5cbbf1c7205", + "sha256:1bf386089178ea69d720f8db6199a0504a406209a0fc23e603b27b300fdd6892", + "sha256:1df2fbd2c8a98d38a66f5238484405b8d1d16f929bb7a33ed73e4801222a6f53", + "sha256:1e4b3f8ea6a9cfa8be8484c9221ec0257508e3a1ec43c36acdefb2a9c3b00aa2", + "sha256:1f38a7b376117ef7aff996e737583172bdf535932c9ca021746573bce40165ed", + "sha256:23509452b3bc38e3a057382c2e941d5ac2e01e251acce7adc74011d7d8de434c", + "sha256:248d8e2446e13c1d4326e0a6a4e9629cb13a11195051a73acf414812700badbd", + "sha256:25eb766c8ad27da0f79420b2af4b85d29914ba0edf69f547cc4f06ca6f1d403b", + "sha256:27a5e9964ef509016759f2ef3f2c1e13f403725a5e6a1775555994966a66e931", + "sha256:2c71bd45a777433dd9113847af751aae36e448bc6b8c361a566cb043eda6ec30", + "sha256:2cb388a5bfb56df4d9a406783b7f9dbefb888c09b71629351cc6b036e9259370", + "sha256:2d225bb6886591b1746b17c0573e29804619c8f755b5598d875bb4235ea639be", + "sha256:2e5fc14ec6ea568200ea4ef46545073da81900a2b67b3e666f04adf53ad452ec", + "sha256:363f57ca8bc8576195d0540c648aa58ac18cf85b76ad5202b9f976918f4219cf", + "sha256:3c6cc1360c10c17463aadd29dd3af332d4a1adaa8796f6b0e9f9df1fdb0bad62", + "sha256:3d829f975fc2e527a3ef2f9c8f25e553eb7bc779c6665e8e1d52aa22800bb38b", + "sha256:3e3aa8c468af01d70332a382350ee95f6986db479ce7af14d5e81ec52aa2b402", + "sha256:3f61726cae9f65b872502ff3c1496abc93ffbe31b278455c418492016e2afc8f", + "sha256:423fc1ed29f7512fceb727e2d2aecb952c46aa34895e9ed96071821309951123", + "sha256:46e71dbbd12850224243f5d2aeec90f0aaa0f2dde5aeeb8fc8df21e04d99eff9", + "sha256:4d87be612cbef86f994178d5186add3d94e9f31cc3cb499a0482b866ec477603", + "sha256:5693ef74233122f8ebab026817b1b37fe25c411ecfca084b29bc7d6efc548f45", + "sha256:5aa9348186d79a5f232115ed3fa9020eab66d6c3437d72f9d2c8ac0c6858c558", + "sha256:5d873c7de42dea355d73f170be0f23788cf3fa9f7bed718fd2830eefedce01b4", + "sha256:5f6ffe2c6598f7f7207eef9a1228b6f5c818f9f4d53ee920aacd35cec8110438", + "sha256:604428d1b87edbf02b233e2c207d7d528460fa978f9e391bd8aaf9c8311de137", + "sha256:6350b14a40c95ddd53e775dbdbbbc59b124a5c8ecd6fbb09c2e52029f7a9f480", + "sha256:6e2df67b8014767d0f785baa98393725739287684b9f8d8a1001eb2839031447", + "sha256:6e96f5ed1b83a8ddb07909b45bd94833b0710f738115751cdaa9da1fb0cb66e8", + "sha256:6e9e7db18b4539a29cc5ad8c8b252738a30e2b13f033c2d6e9d0549b45841c04", + "sha256:70ec754cc2a769bcd218ed8d7209055667b30860ffecb8633a834dde27d6307c", + "sha256:7b645f491f3c48d3f8a00d1fce07445fab7347fec54a3e65f0725d730d5b99cb", + "sha256:7fa3d25e81bfe6a89718e9791128398a50dec6d57faf23770787ff441d851967", + "sha256:81df9cbcbb6c260de1e007e58c011bfebe2dafc8435107b0537f393dd38c8b1b", + "sha256:8572132c7be52632201a35f5e08348137f658e5ffd21f51f94572ca6c05ea81d", + "sha256:87b4aafed34653e465eb77b7c93ef058516cb5acf3eb21e42f33928616172def", + "sha256:8e332c210b14b57904869ca9f9bf4ca32f5427a03eeb625da9b616c85a3a506c", + "sha256:9893d1aa45a7f8b3bc4510f6ccf8db8c3b62120917af15e3de247f0780294b92", + "sha256:9edf3fc590cc2ec20dc9d7a45108b5bbaf21c0d89f9fd3fd1685e223771dc0b2", + "sha256:9fdf06fd06c32205a07e47328ab49c40fc1407cdec801d698a7c41167ea45113", + "sha256:a02413bc474feda2849c59ed2dfb2cddb4cd3d2f03a2fedec51d6e959d9b608b", + "sha256:a1d9697f3337a89691e3bd8dc56dea45a6f6d975f92e7d5f773bc715c15dde28", + "sha256:a571f035a47212288e3b3519944f6bf4ac7bc7553243e41eac50dd48552b6df7", + "sha256:ab3d732ad50a4fbd04a4490ef08acd0517b6ae6b77eb967251f4c263011a990d", + "sha256:ae0a5da8f35a5be197f328d4727dbcfafa53d1824fac3d96cdd3a642fe09394f", + "sha256:b067cb952ce8bf40115f6c19f478dc71c5e719b7fbaa511359795dfd9d1a6468", + "sha256:b2ee7288b85959797970114deae81ab41b731f19ebcd3bd499ae9ca0e3f1d2c8", + "sha256:b81f90dcc6c85a9b7f29873beb56c94c85d6f0dac2ea8b60d995bd18bf3e2aae", + "sha256:ba0cab91b3956dfa9f512147860783a1829a8d905ee218a9837c18f683239611", + "sha256:baa386875b70cbd81798fa9f71be689c1bf484f65fd6fb08d051a0ee4e79924d", + "sha256:bbe6013f9f791944ed31ca08b077e26249309639313fff132bfbf3ba105673b9", + "sha256:bea88d71630c5900690fcb03161ab18f8f244805c59e2e0dc4ffadae0a7ee0ca", + "sha256:befe90632d66caaf72e8b2ed4d7f02b348913813c8b0a32fae1cc5fe3730902f", + "sha256:c3181df4583c4d3994d31fb235dc681d2aaad744fbdbf94c4802485ececdecf2", + "sha256:c4e37d36f0d19f0a4413d3e18c0d03d0c268ada2061868c1e6f5ab1a6d575077", + "sha256:c588f6abc13f78a67044c6b1273a99e1cf31038ad51815b3b016ce699f0d75c2", + "sha256:cbe83a6bbdf207ff0541de01e11904827540aa069293696dd528a6640bd6a5f6", + "sha256:d554236b2a2006e0ce16315c16eaa0d628dab009c33b63ea03f41c6107958374", + "sha256:dbcf72a37f0b3316e993e13ecf32f10c0e1259c28ffd0a85cee26e8549595fbc", + "sha256:dc284bbc8d7c78a6c69e0c7325ab46ee5e40bb4d50e494d8131a07ef47500e9e", + "sha256:dff6cdf35e31d1315790149fee351f9e52978130cef6c87c4b6c9b3baf78bc53", + "sha256:e469d01137942849cff40517c97a30a93ae79917752b34029f0ec72df6b46399", + "sha256:eb809e816916a3b210bed3c82fb88eaf16e8afcf9c115ebb2bacede1797d2547", + "sha256:ed2fcf7a07334c77fc8a230755c2209223a7cc44fc27597729b8ef5425aa61a3", + "sha256:f44069528d45a933997a6fef143030d8ca8042f0dfaad753e2906398290e2870", + "sha256:f764ba54e33daf20e167915edc443b6f88956f37fb606449b4a5b10ba42235a5", + "sha256:fc4e7fa5414512b481a2483775a8e8be7803a35b30ca805afa4998a84f9fd9e8", + "sha256:ffefa1374cd508d633646d51a8e9277763a9b78ae71324183693959cf94635a7" + ], + "version": "==12.0" }, "wrapt": { "hashes": [ @@ -2029,47 +2137,53 @@ }, "zipp": { "hashes": [ - "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0", - "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147" + "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31", + "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0" ], "markers": "python_version >= '3.8'", - "version": "==3.16.2" + "version": "==3.17.0" }, "zope-interface": { "hashes": [ - "sha256:042f2381118b093714081fd82c98e3b189b68db38ee7d35b63c327c470ef8373", - "sha256:0ec9653825f837fbddc4e4b603d90269b501486c11800d7c761eee7ce46d1bbb", - "sha256:12175ca6b4db7621aedd7c30aa7cfa0a2d65ea3a0105393e05482d7a2d367446", - "sha256:1592f68ae11e557b9ff2bc96ac8fc30b187e77c45a3c9cd876e3368c53dc5ba8", - "sha256:23ac41d52fd15dd8be77e3257bc51bbb82469cf7f5e9a30b75e903e21439d16c", - "sha256:424d23b97fa1542d7be882eae0c0fc3d6827784105264a8169a26ce16db260d8", - "sha256:4407b1435572e3e1610797c9203ad2753666c62883b921318c5403fb7139dec2", - "sha256:48f4d38cf4b462e75fac78b6f11ad47b06b1c568eb59896db5b6ec1094eb467f", - "sha256:4c3d7dfd897a588ec27e391edbe3dd320a03684457470415870254e714126b1f", - "sha256:5171eb073474a5038321409a630904fd61f12dd1856dd7e9d19cd6fe092cbbc5", - "sha256:5a158846d0fca0a908c1afb281ddba88744d403f2550dc34405c3691769cdd85", - "sha256:6ee934f023f875ec2cfd2b05a937bd817efcc6c4c3f55c5778cbf78e58362ddc", - "sha256:790c1d9d8f9c92819c31ea660cd43c3d5451df1df61e2e814a6f99cebb292788", - "sha256:809fe3bf1a91393abc7e92d607976bbb8586512913a79f2bf7d7ec15bd8ea518", - "sha256:87b690bbee9876163210fd3f500ee59f5803e4a6607d1b1238833b8885ebd410", - "sha256:89086c9d3490a0f265a3c4b794037a84541ff5ffa28bb9c24cc9f66566968464", - "sha256:99856d6c98a326abbcc2363827e16bd6044f70f2ef42f453c0bd5440c4ce24e5", - "sha256:aab584725afd10c710b8f1e6e208dbee2d0ad009f57d674cb9d1b3964037275d", - "sha256:af169ba897692e9cd984a81cb0f02e46dacdc07d6cf9fd5c91e81f8efaf93d52", - "sha256:b39b8711578dcfd45fc0140993403b8a81e879ec25d53189f3faa1f006087dca", - "sha256:b3f543ae9d3408549a9900720f18c0194ac0fe810cecda2a584fd4dca2eb3bb8", - "sha256:d0583b75f2e70ec93f100931660328965bb9ff65ae54695fb3fa0a1255daa6f2", - "sha256:dfbbbf0809a3606046a41f8561c3eada9db811be94138f42d9135a5c47e75f6f", - "sha256:e538f2d4a6ffb6edfb303ce70ae7e88629ac6e5581870e66c306d9ad7b564a58", - "sha256:eba51599370c87088d8882ab74f637de0c4f04a6d08a312dce49368ba9ed5c2a", - "sha256:ee4b43f35f5dc15e1fec55ccb53c130adb1d11e8ad8263d68b1284b66a04190d", - "sha256:f2363e5fd81afb650085c6686f2ee3706975c54f331b426800b53531191fdf28", - "sha256:f299c020c6679cb389814a3b81200fe55d428012c5e76da7e722491f5d205990", - "sha256:f72f23bab1848edb7472309e9898603141644faec9fd57a823ea6b4d1c4c8995", - "sha256:fa90bac61c9dc3e1a563e5babb3fd2c0c1c80567e815442ddbe561eadc803b30" + "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" ], "markers": "python_version >= '3.7'", - "version": "==6.0" + "version": "==6.1" } }, "develop": { @@ -2108,6 +2222,7 @@ "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d" ], "index": "pypi", + "markers": "python_full_version >= '3.6.2'", "version": "==22.3.0" }, "click": { @@ -2116,73 +2231,76 @@ "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb" ], "index": "pypi", + "markers": "python_version >= '3.6'", "version": "==8.0.4" }, "coverage": { "hashes": [ - "sha256:025ded371f1ca280c035d91b43252adbb04d2aea4c7105252d3cbc227f03b375", - "sha256:04312b036580ec505f2b77cbbdfb15137d5efdfade09156961f5277149f5e344", - "sha256:0575c37e207bb9b98b6cf72fdaaa18ac909fb3d153083400c2d48e2e6d28bd8e", - "sha256:07d156269718670d00a3b06db2288b48527fc5f36859425ff7cec07c6b367745", - "sha256:1f111a7d85658ea52ffad7084088277135ec5f368457275fc57f11cebb15607f", - "sha256:220eb51f5fb38dfdb7e5d54284ca4d0cd70ddac047d750111a68ab1798945194", - "sha256:229c0dd2ccf956bf5aeede7e3131ca48b65beacde2029f0361b54bf93d36f45a", - "sha256:245c5a99254e83875c7fed8b8b2536f040997a9b76ac4c1da5bff398c06e860f", - "sha256:2829c65c8faaf55b868ed7af3c7477b76b1c6ebeee99a28f59a2cb5907a45760", - "sha256:4aba512a15a3e1e4fdbfed2f5392ec221434a614cc68100ca99dcad7af29f3f8", - "sha256:4c96dd7798d83b960afc6c1feb9e5af537fc4908852ef025600374ff1a017392", - "sha256:50dd1e2dd13dbbd856ffef69196781edff26c800a74f070d3b3e3389cab2600d", - "sha256:5289490dd1c3bb86de4730a92261ae66ea8d44b79ed3cc26464f4c2cde581fbc", - "sha256:53669b79f3d599da95a0afbef039ac0fadbb236532feb042c534fbb81b1a4e40", - "sha256:553d7094cb27db58ea91332e8b5681bac107e7242c23f7629ab1316ee73c4981", - "sha256:586649ada7cf139445da386ab6f8ef00e6172f11a939fc3b2b7e7c9082052fa0", - "sha256:5ae4c6da8b3d123500f9525b50bf0168023313963e0e2e814badf9000dd6ef92", - "sha256:5b4ee7080878077af0afa7238df1b967f00dc10763f6e1b66f5cced4abebb0a3", - "sha256:5d991e13ad2ed3aced177f524e4d670f304c8233edad3210e02c465351f785a0", - "sha256:614f1f98b84eb256e4f35e726bfe5ca82349f8dfa576faabf8a49ca09e630086", - "sha256:636a8ac0b044cfeccae76a36f3b18264edcc810a76a49884b96dd744613ec0b7", - "sha256:6407424621f40205bbe6325686417e5e552f6b2dba3535dd1f90afc88a61d465", - "sha256:6bc6f3f4692d806831c136c5acad5ccedd0262aa44c087c46b7101c77e139140", - "sha256:6cb7fe1581deb67b782c153136541e20901aa312ceedaf1467dcb35255787952", - "sha256:74bb470399dc1989b535cb41f5ca7ab2af561e40def22d7e188e0a445e7639e3", - "sha256:75c8f0df9dfd8ff745bccff75867d63ef336e57cc22b2908ee725cc552689ec8", - "sha256:770f143980cc16eb601ccfd571846e89a5fe4c03b4193f2e485268f224ab602f", - "sha256:7eb0b188f30e41ddd659a529e385470aa6782f3b412f860ce22b2491c89b8593", - "sha256:7eb3cd48d54b9bd0e73026dedce44773214064be93611deab0b6a43158c3d5a0", - "sha256:87d38444efffd5b056fcc026c1e8d862191881143c3aa80bb11fcf9dca9ae204", - "sha256:8a07b692129b8a14ad7a37941a3029c291254feb7a4237f245cfae2de78de037", - "sha256:966f10df9b2b2115da87f50f6a248e313c72a668248be1b9060ce935c871f276", - "sha256:a6191b3a6ad3e09b6cfd75b45c6aeeffe7e3b0ad46b268345d159b8df8d835f9", - "sha256:aab8e9464c00da5cb9c536150b7fbcd8850d376d1151741dd0d16dfe1ba4fd26", - "sha256:ac3c5b7e75acac31e490b7851595212ed951889918d398b7afa12736c85e13ce", - "sha256:ac9ad38204887349853d7c313f53a7b1c210ce138c73859e925bc4e5d8fc18e7", - "sha256:b9c0c19f70d30219113b18fe07e372b244fb2a773d4afde29d5a2f7930765136", - "sha256:c397c70cd20f6df7d2a52283857af622d5f23300c4ca8e5bd8c7a543825baa5a", - "sha256:c6601a60318f9c3945be6ea0f2a80571f4299b6801716f8a6e4846892737ebe4", - "sha256:c6f55d38818ca9596dc9019eae19a47410d5322408140d9a0076001a3dcb938c", - "sha256:ca70466ca3a17460e8fc9cea7123c8cbef5ada4be3140a1ef8f7b63f2f37108f", - "sha256:ca833941ec701fda15414be400c3259479bfde7ae6d806b69e63b3dc423b1832", - "sha256:cd0f7429ecfd1ff597389907045ff209c8fdb5b013d38cfa7c60728cb484b6e3", - "sha256:cd694e19c031733e446c8024dedd12a00cda87e1c10bd7b8539a87963685e969", - "sha256:cdd088c00c39a27cfa5329349cc763a48761fdc785879220d54eb785c8a38520", - "sha256:de30c1aa80f30af0f6b2058a91505ea6e36d6535d437520067f525f7df123887", - "sha256:defbbb51121189722420a208957e26e49809feafca6afeef325df66c39c4fdb3", - "sha256:f09195dda68d94a53123883de75bb97b0e35f5f6f9f3aa5bf6e496da718f0cb6", - "sha256:f12d8b11a54f32688b165fd1a788c408f927b0960984b899be7e4c190ae758f1", - "sha256:f1a317fdf5c122ad642db8a97964733ab7c3cf6009e1a8ae8821089993f175ff", - "sha256:f2781fd3cabc28278dc982a352f50c81c09a1a500cc2086dc4249853ea96b981", - "sha256:f4f456590eefb6e1b3c9ea6328c1e9fa0f1006e7481179d749b3376fc793478e" + "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1", + "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63", + "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9", + "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312", + "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3", + "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb", + "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25", + "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92", + "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda", + "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148", + "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6", + "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216", + "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a", + "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640", + "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836", + "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c", + "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f", + "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2", + "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901", + "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed", + "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a", + "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074", + "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc", + "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84", + "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083", + "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f", + "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c", + "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c", + "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637", + "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2", + "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82", + "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f", + "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce", + "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef", + "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f", + "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611", + "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c", + "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76", + "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9", + "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce", + "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9", + "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf", + "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf", + "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9", + "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6", + "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2", + "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a", + "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a", + "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf", + "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738", + "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a", + "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4" ], "index": "pypi", - "version": "==7.3.1" + "markers": "python_version >= '3.8'", + "version": "==7.3.2" }, "django": { "hashes": [ - "sha256:a5de4c484e7b7418e6d3e52a5b8794f0e6b9f9e4ce3c037018cf1c489fa87f3c", - "sha256:d31b06c58aa2cd73998ca5966bc3001243d3c4e77ee2d0c479bced124765fd99" + "sha256:83b6d66b06e484807d778263fdc7f9186d4dc1862fcfa6507830446ac6b060ba", + "sha256:c5e7b668025a6e06cad9ba6d4de1fd1a21212acebb51ea34abb400c6e4d33430" ], "index": "pypi", - "version": "==3.2.21" + "markers": "python_version >= '3.6'", + "version": "==3.2.22" }, "django-debug-toolbar": { "hashes": [ @@ -2190,6 +2308,7 @@ "sha256:bc7fdaafafcdedefcc67a4a5ad9dac96efd6e41db15bc74d402a54a2ba4854dc" ], "index": "pypi", + "markers": "python_version >= '3.8'", "version": "==4.2.0" }, "exceptiongroup": { @@ -2206,15 +2325,16 @@ "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5" ], "index": "pypi", + "markers": "python_full_version >= '3.8.1'", "version": "==6.1.0" }, "flake8-isort": { "hashes": [ - "sha256:537f453a660d7e903f602ecfa36136b140de279df58d02eb1b6a0c84e83c528c", - "sha256:aa0cac02a62c7739e370ce6b9c31743edac904bae4b157274511fc8a19c75bbc" + "sha256:d4639343bac540194c59fb1618ac2c285b3e27609f353bef6f50904d40c1643e" ], "index": "pypi", - "version": "==6.0.0" + "markers": "python_version >= '3.8'", + "version": "==6.1.0" }, "flake8-quotes": { "hashes": [ @@ -2237,6 +2357,7 @@ "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6" ], "index": "pypi", + "markers": "python_full_version >= '3.8.0'", "version": "==5.12.0" }, "lxml": { @@ -2355,11 +2476,11 @@ }, "packaging": { "hashes": [ - "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61", - "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" + "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", + "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" ], "markers": "python_version >= '3.7'", - "version": "==23.1" + "version": "==23.2" }, "pathspec": { "hashes": [ @@ -2371,11 +2492,11 @@ }, "platformdirs": { "hashes": [ - "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d", - "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d" + "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3", + "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e" ], "markers": "python_version >= '3.7'", - "version": "==3.10.0" + "version": "==3.11.0" }, "pluggy": { "hashes": [ @@ -2387,11 +2508,11 @@ }, "pycodestyle": { "hashes": [ - "sha256:259bcc17857d8a8b3b4a2327324b79e5f020a13c16074670f9c8c8f872ea76d0", - "sha256:5d1013ba8dc7895b548be5afb05740ca82454fd899971563d2ef625d090326f8" + "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f", + "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67" ], "markers": "python_version >= '3.8'", - "version": "==2.11.0" + "version": "==2.11.1" }, "pyflakes": { "hashes": [ @@ -2407,6 +2528,7 @@ "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==7.4.2" }, "pytest-django": { @@ -2415,6 +2537,7 @@ "sha256:d9076f759bb7c36939dbdd5ae6633c18edfc2902d1a69fdbefd2426b970ce6c2" ], "index": "pypi", + "markers": "python_version >= '3.5'", "version": "==4.5.2" }, "sqlparse": { @@ -2435,11 +2558,11 @@ }, "typing-extensions": { "hashes": [ - "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36", - "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2" + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" ], - "markers": "python_version >= '3.7'", - "version": "==4.7.1" + "markers": "python_version < '3.11'", + "version": "==4.8.0" }, "unittest-xml-reporting": { "hashes": [ @@ -2447,6 +2570,7 @@ "sha256:f3d7402e5b3ac72a5ee3149278339db1a8f932ee405f48bcb9c681372f2717d5" ], "index": "pypi", + "markers": "python_version >= '3.7'", "version": "==3.2.0" } } diff --git a/backend/README.md b/backend/README.md index f50a08a31..cd742bcd6 100644 --- a/backend/README.md +++ b/backend/README.md @@ -142,6 +142,7 @@ If you don't want to use docker alone, you can also set up and run the dev envir - Python 3.10 ([`pyenv`](https://github.com/pyenv/pyenv) is recommended) - [`pipenv`](https://pipenv.pypa.io/en/latest/) - [`docker` and `docker-compose`](https://docs.docker.com/get-docker/) +- Dependencies for GeoDjango: `GEOS`, `PROJ`, `GDAL` (see [GeoDjango installation docs](https://docs.djangoproject.com/en/3.2/ref/contrib/gis/install/)) `psql` is required to load data into the db, but it should be installed when you install `postgres`/`psycopg2`. @@ -149,18 +150,19 @@ If you don't want to use docker alone, you can also set up and run the dev envir 2. Compiling postgres (`psycopg2`) - **Mac** - > :warning: NOTE: If your computer runs on Apple silicon and you use Rosetta to run Python as an x86 program, use `arch -x86_64 brew ` for all `brew` commands. - + 1. `brew install postgresql` 2. `brew install openssl` 3. `brew unlink openssl && brew link openssl --force` - 4. Follow the instructions printed by the previous command to add openssl to your PATH and export flags for compilers, e.g.: + 4. `brew install gdal; brew install libgeoip` + 5. Follow the instructions printed by the previous command to add openssl to your PATH and export flags for compilers, e.g.: - `echo 'export PATH="/usr/local/opt/openssl@3/bin:$PATH"' >> ~/.zshrc` - `export LDFLAGS="-L/usr/local/opt/openssl@3/lib"` - `export CPPFLAGS="-I/usr/local/opt/openssl@3/include"` - **Windows (WSL) or Linux:** - `apt-get install gcc python3-dev libpq-dev` + - `apt-get install gdal-bin libgdal-dev python3-gdal binutils libproj-dev` 3. Running Docker 1. Open a new terminal window (also in the `backend` directory) and run `docker-compose up` diff --git a/backend/alert/migrations/0001_initial.py b/backend/alert/migrations/0001_initial.py index cc9c21f65..555b17e16 100644 --- a/backend/alert/migrations/0001_initial.py +++ b/backend/alert/migrations/0001_initial.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/backend/alert/migrations/0002_delete_registration.py b/backend/alert/migrations/0002_delete_registration.py index add525226..fffa0e55d 100644 --- a/backend/alert/migrations/0002_delete_registration.py +++ b/backend/alert/migrations/0002_delete_registration.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("alert", "0001_initial"), ] diff --git a/backend/alert/migrations/0003_courseupdate_registration.py b/backend/alert/migrations/0003_courseupdate_registration.py index cc8823af7..2bfef455d 100644 --- a/backend/alert/migrations/0003_courseupdate_registration.py +++ b/backend/alert/migrations/0003_courseupdate_registration.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/backend/alert/migrations/0004_auto_20190926_0549.py b/backend/alert/migrations/0004_auto_20190926_0549.py index d3ad82d5a..8b4282ef4 100644 --- a/backend/alert/migrations/0004_auto_20190926_0549.py +++ b/backend/alert/migrations/0004_auto_20190926_0549.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0019_apikey_apiprivilege"), ("alert", "0003_courseupdate_registration"), diff --git a/backend/alert/migrations/0005_delete_courseupdate.py b/backend/alert/migrations/0005_delete_courseupdate.py index b7f5a2cd4..25c7840d5 100644 --- a/backend/alert/migrations/0005_delete_courseupdate.py +++ b/backend/alert/migrations/0005_delete_courseupdate.py @@ -34,7 +34,6 @@ def backwards(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ("alert", "0004_auto_20190926_0549"), ] diff --git a/backend/alert/migrations/0006_auto_20191110_1357.py b/backend/alert/migrations/0006_auto_20191110_1357.py index 6c5705968..227e11872 100644 --- a/backend/alert/migrations/0006_auto_20191110_1357.py +++ b/backend/alert/migrations/0006_auto_20191110_1357.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("alert", "0005_delete_courseupdate"), diff --git a/backend/alert/migrations/0007_auto_20200131_1619.py b/backend/alert/migrations/0007_auto_20200131_1619.py index f2507c1a6..010844a8b 100644 --- a/backend/alert/migrations/0007_auto_20200131_1619.py +++ b/backend/alert/migrations/0007_auto_20200131_1619.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("alert", "0006_auto_20191110_1357"), ] diff --git a/backend/alert/migrations/0008_registration_original_created_at.py b/backend/alert/migrations/0008_registration_original_created_at.py index a8e89f084..23c7132d8 100644 --- a/backend/alert/migrations/0008_registration_original_created_at.py +++ b/backend/alert/migrations/0008_registration_original_created_at.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("alert", "0007_auto_20200131_1619"), ] diff --git a/backend/alert/migrations/0009_auto_20200419_2112.py b/backend/alert/migrations/0009_auto_20200419_2112.py index 3ec70750b..c14da028c 100644 --- a/backend/alert/migrations/0009_auto_20200419_2112.py +++ b/backend/alert/migrations/0009_auto_20200419_2112.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("alert", "0008_registration_original_created_at"), ] diff --git a/backend/alert/migrations/0010_auto_20201002_0714.py b/backend/alert/migrations/0010_auto_20201002_0714.py index a9f1a5b86..0774b3ba4 100644 --- a/backend/alert/migrations/0010_auto_20201002_0714.py +++ b/backend/alert/migrations/0010_auto_20201002_0714.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0030_auto_20201002_0714"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), diff --git a/backend/alert/migrations/0011_auto_20201108_1535.py b/backend/alert/migrations/0011_auto_20201108_1535.py index 551c7eed4..4cf81bad8 100644 --- a/backend/alert/migrations/0011_auto_20201108_1535.py +++ b/backend/alert/migrations/0011_auto_20201108_1535.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("alert", "0010_auto_20201002_0714"), ] diff --git a/backend/alert/migrations/0012_auto_20210418_0343.py b/backend/alert/migrations/0012_auto_20210418_0343.py index 1cff4b39d..4c636c188 100644 --- a/backend/alert/migrations/0012_auto_20210418_0343.py +++ b/backend/alert/migrations/0012_auto_20210418_0343.py @@ -8,7 +8,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0032_auto_20210418_0343"), ("alert", "0011_auto_20201108_1535"), diff --git a/backend/alert/migrations/0013_pcademanddistributionestimate_csdv_gamma_fit_log_likelihood.py b/backend/alert/migrations/0013_pcademanddistributionestimate_csdv_gamma_fit_log_likelihood.py index 58a4f5e8e..76adf18f9 100644 --- a/backend/alert/migrations/0013_pcademanddistributionestimate_csdv_gamma_fit_log_likelihood.py +++ b/backend/alert/migrations/0013_pcademanddistributionestimate_csdv_gamma_fit_log_likelihood.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("alert", "0012_auto_20210418_0343"), ] diff --git a/backend/alert/migrations/0014_auto_20210418_0847.py b/backend/alert/migrations/0014_auto_20210418_0847.py index 2448d4668..4b8c4c5f7 100644 --- a/backend/alert/migrations/0014_auto_20210418_0847.py +++ b/backend/alert/migrations/0014_auto_20210418_0847.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("alert", "0013_pcademanddistributionestimate_csdv_gamma_fit_log_likelihood"), ] diff --git a/backend/alert/migrations/0015_auto_20211010_1235.py b/backend/alert/migrations/0015_auto_20211010_1235.py index 8e2b8d98c..5a1249559 100644 --- a/backend/alert/migrations/0015_auto_20211010_1235.py +++ b/backend/alert/migrations/0015_auto_20211010_1235.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("alert", "0014_auto_20210418_0847"), ] diff --git a/backend/alert/migrations/0016_auto_20211113_1537.py b/backend/alert/migrations/0016_auto_20211113_1537.py index 840633bc2..b6cd05709 100644 --- a/backend/alert/migrations/0016_auto_20211113_1537.py +++ b/backend/alert/migrations/0016_auto_20211113_1537.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("alert", "0015_auto_20211010_1235"), ] diff --git a/backend/alert/migrations/0017_alter_registration_head_registration.py b/backend/alert/migrations/0017_alter_registration_head_registration.py index a7771886d..ff7b47e83 100644 --- a/backend/alert/migrations/0017_alter_registration_head_registration.py +++ b/backend/alert/migrations/0017_alter_registration_head_registration.py @@ -16,7 +16,6 @@ def reverse_func(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ("alert", "0016_auto_20211113_1537"), ] diff --git a/backend/courses/admin.py b/backend/courses/admin.py index 169bfc348..d560d1c82 100644 --- a/backend/courses/admin.py +++ b/backend/courses/admin.py @@ -1,6 +1,7 @@ from django.contrib import admin from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models import User +from django.contrib.gis import admin as gis_admin from django.template import loader from django.urls import reverse from django.utils.html import format_html, format_html_join @@ -203,13 +204,17 @@ class StatusUpdateAdmin(admin.ModelAdmin): search_fields = ("section__full_code",) +class BuildingAdmin(gis_admin.OSMGeoAdmin): + pass + + admin.site.register(APIKey) admin.site.register(APIPrivilege) admin.site.register(Department, DepartmentAdmin) admin.site.register(Course, CourseAdmin) admin.site.register(Topic, TopicAdmin) admin.site.register(Section, SectionAdmin) -admin.site.register(Building) +admin.site.register(Building, BuildingAdmin) admin.site.register(Room) admin.site.register(PreNGSSRequirement, PreNGSSRequirementAdmin) admin.site.register(PreNGSSRestriction) diff --git a/backend/courses/migrations/0001_initial.py b/backend/courses/migrations/0001_initial.py index 3668d2866..9ec8152a1 100644 --- a/backend/courses/migrations/0001_initial.py +++ b/backend/courses/migrations/0001_initial.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [] diff --git a/backend/courses/migrations/0002_auto_20190426_2158.py b/backend/courses/migrations/0002_auto_20190426_2158.py index b1561d6a5..798107582 100644 --- a/backend/courses/migrations/0002_auto_20190426_2158.py +++ b/backend/courses/migrations/0002_auto_20190426_2158.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0001_initial"), ] diff --git a/backend/courses/migrations/0003_auto_20190428_1707.py b/backend/courses/migrations/0003_auto_20190428_1707.py index b533df5d4..124ad3de1 100644 --- a/backend/courses/migrations/0003_auto_20190428_1707.py +++ b/backend/courses/migrations/0003_auto_20190428_1707.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0002_auto_20190426_2158"), ] diff --git a/backend/courses/migrations/0004_auto_20190428_1710.py b/backend/courses/migrations/0004_auto_20190428_1710.py index 9e303a407..989660bd1 100644 --- a/backend/courses/migrations/0004_auto_20190428_1710.py +++ b/backend/courses/migrations/0004_auto_20190428_1710.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0003_auto_20190428_1707"), ] diff --git a/backend/courses/migrations/0005_auto_20190428_1845.py b/backend/courses/migrations/0005_auto_20190428_1845.py index d65de009f..1c203fbf3 100644 --- a/backend/courses/migrations/0005_auto_20190428_1845.py +++ b/backend/courses/migrations/0005_auto_20190428_1845.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0004_auto_20190428_1710"), ] diff --git a/backend/courses/migrations/0006_auto_20190508_0200.py b/backend/courses/migrations/0006_auto_20190508_0200.py index cf246aa58..bc7592dc1 100644 --- a/backend/courses/migrations/0006_auto_20190508_0200.py +++ b/backend/courses/migrations/0006_auto_20190508_0200.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0005_auto_20190428_1845"), ] diff --git a/backend/courses/migrations/0007_auto_20190508_0202.py b/backend/courses/migrations/0007_auto_20190508_0202.py index 03c08f929..0f9a64cf4 100644 --- a/backend/courses/migrations/0007_auto_20190508_0202.py +++ b/backend/courses/migrations/0007_auto_20190508_0202.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0006_auto_20190508_0200"), ] diff --git a/backend/courses/migrations/0008_auto_20190510_0114.py b/backend/courses/migrations/0008_auto_20190510_0114.py index 18878cdd3..7b236d7de 100644 --- a/backend/courses/migrations/0008_auto_20190510_0114.py +++ b/backend/courses/migrations/0008_auto_20190510_0114.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0007_auto_20190508_0202"), ] diff --git a/backend/courses/migrations/0009_requirement.py b/backend/courses/migrations/0009_requirement.py index 523851363..043471c6c 100644 --- a/backend/courses/migrations/0009_requirement.py +++ b/backend/courses/migrations/0009_requirement.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0008_auto_20190510_0114"), ] diff --git a/backend/courses/migrations/0010_auto_20190510_0454.py b/backend/courses/migrations/0010_auto_20190510_0454.py index 8e4ff87ae..bb32d619a 100644 --- a/backend/courses/migrations/0010_auto_20190510_0454.py +++ b/backend/courses/migrations/0010_auto_20190510_0454.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0009_requirement"), ] diff --git a/backend/courses/migrations/0011_auto_20190510_0504.py b/backend/courses/migrations/0011_auto_20190510_0504.py index 391fdff17..be5660f01 100644 --- a/backend/courses/migrations/0011_auto_20190510_0504.py +++ b/backend/courses/migrations/0011_auto_20190510_0504.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0010_auto_20190510_0454"), ] diff --git a/backend/courses/migrations/0012_auto_20190510_0559.py b/backend/courses/migrations/0012_auto_20190510_0559.py index 1518f1e08..db58af7d4 100644 --- a/backend/courses/migrations/0012_auto_20190510_0559.py +++ b/backend/courses/migrations/0012_auto_20190510_0559.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0011_auto_20190510_0504"), ] diff --git a/backend/courses/migrations/0013_auto_20190517_0313.py b/backend/courses/migrations/0013_auto_20190517_0313.py index 1909ee7db..a4744f058 100644 --- a/backend/courses/migrations/0013_auto_20190517_0313.py +++ b/backend/courses/migrations/0013_auto_20190517_0313.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0012_auto_20190510_0559"), ] diff --git a/backend/courses/migrations/0013_course_full_code.py b/backend/courses/migrations/0013_course_full_code.py index b52469fc1..0260a70cf 100644 --- a/backend/courses/migrations/0013_course_full_code.py +++ b/backend/courses/migrations/0013_course_full_code.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0012_auto_20190510_0559"), ] diff --git a/backend/courses/migrations/0014_auto_20190518_1641.py b/backend/courses/migrations/0014_auto_20190518_1641.py index b967e27c9..670f4d715 100644 --- a/backend/courses/migrations/0014_auto_20190518_1641.py +++ b/backend/courses/migrations/0014_auto_20190518_1641.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0013_auto_20190517_0313"), ] diff --git a/backend/courses/migrations/0015_merge_20190518_2155.py b/backend/courses/migrations/0015_merge_20190518_2155.py index be36f7da2..ff48b5f64 100644 --- a/backend/courses/migrations/0015_merge_20190518_2155.py +++ b/backend/courses/migrations/0015_merge_20190518_2155.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0013_course_full_code"), ("courses", "0014_auto_20190518_1641"), diff --git a/backend/courses/migrations/0016_auto_20190523_1554.py b/backend/courses/migrations/0016_auto_20190523_1554.py index a4ba89a3a..c6e55ee01 100644 --- a/backend/courses/migrations/0016_auto_20190523_1554.py +++ b/backend/courses/migrations/0016_auto_20190523_1554.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0015_merge_20190518_2155"), ] diff --git a/backend/courses/migrations/0017_auto_20190525_2235.py b/backend/courses/migrations/0017_auto_20190525_2235.py index 63441ea95..f2c57cc98 100644 --- a/backend/courses/migrations/0017_auto_20190525_2235.py +++ b/backend/courses/migrations/0017_auto_20190525_2235.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0016_auto_20190523_1554"), ] diff --git a/backend/courses/migrations/0017_auto_20190526_1655.py b/backend/courses/migrations/0017_auto_20190526_1655.py index 6dd727d5f..8ccb4321b 100644 --- a/backend/courses/migrations/0017_auto_20190526_1655.py +++ b/backend/courses/migrations/0017_auto_20190526_1655.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0016_auto_20190523_1554"), ] diff --git a/backend/courses/migrations/0018_merge_20190526_1901.py b/backend/courses/migrations/0018_merge_20190526_1901.py index 50fb25a57..1118cb2a8 100644 --- a/backend/courses/migrations/0018_merge_20190526_1901.py +++ b/backend/courses/migrations/0018_merge_20190526_1901.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0017_auto_20190526_1655"), ("courses", "0017_auto_20190525_2235"), diff --git a/backend/courses/migrations/0019_apikey_apiprivilege.py b/backend/courses/migrations/0019_apikey_apiprivilege.py index 2a7d7a134..32da5a518 100644 --- a/backend/courses/migrations/0019_apikey_apiprivilege.py +++ b/backend/courses/migrations/0019_apikey_apiprivilege.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0018_merge_20190526_1901"), ] diff --git a/backend/courses/migrations/0020_auto_20190928_0046.py b/backend/courses/migrations/0020_auto_20190928_0046.py index 538ae9057..e7127e6f0 100644 --- a/backend/courses/migrations/0020_auto_20190928_0046.py +++ b/backend/courses/migrations/0020_auto_20190928_0046.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0019_apikey_apiprivilege"), ] diff --git a/backend/courses/migrations/0021_auto_20191019_2140.py b/backend/courses/migrations/0021_auto_20191019_2140.py index 9ad044ddd..d6fcab559 100644 --- a/backend/courses/migrations/0021_auto_20191019_2140.py +++ b/backend/courses/migrations/0021_auto_20191019_2140.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0020_auto_20190928_0046"), ] diff --git a/backend/courses/migrations/0022_auto_20191029_1927.py b/backend/courses/migrations/0022_auto_20191029_1927.py index ea6977e53..685bacfe6 100644 --- a/backend/courses/migrations/0022_auto_20191029_1927.py +++ b/backend/courses/migrations/0022_auto_20191029_1927.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0021_auto_20191019_2140"), ] diff --git a/backend/courses/migrations/0022_section_full_code.py b/backend/courses/migrations/0022_section_full_code.py index 8186d27d4..934870979 100644 --- a/backend/courses/migrations/0022_section_full_code.py +++ b/backend/courses/migrations/0022_section_full_code.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0021_auto_20191019_2140"), ] diff --git a/backend/courses/migrations/0023_auto_20191101_1717.py b/backend/courses/migrations/0023_auto_20191101_1717.py index 19c59d3af..be110b84c 100644 --- a/backend/courses/migrations/0023_auto_20191101_1717.py +++ b/backend/courses/migrations/0023_auto_20191101_1717.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0022_section_full_code"), ] diff --git a/backend/courses/migrations/0024_merge_20191103_1941.py b/backend/courses/migrations/0024_merge_20191103_1941.py index ab1bbbf63..cd8c027a4 100644 --- a/backend/courses/migrations/0024_merge_20191103_1941.py +++ b/backend/courses/migrations/0024_merge_20191103_1941.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0022_auto_20191029_1927"), ("courses", "0023_auto_20191101_1717"), diff --git a/backend/courses/migrations/0024_userdata.py b/backend/courses/migrations/0024_userdata.py index a7172ddd7..9ae865753 100644 --- a/backend/courses/migrations/0024_userdata.py +++ b/backend/courses/migrations/0024_userdata.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("courses", "0023_auto_20191101_1717"), diff --git a/backend/courses/migrations/0025_auto_20191117_1309.py b/backend/courses/migrations/0025_auto_20191117_1309.py index 268265260..0d17cd925 100644 --- a/backend/courses/migrations/0025_auto_20191117_1309.py +++ b/backend/courses/migrations/0025_auto_20191117_1309.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0024_userdata"), ] diff --git a/backend/courses/migrations/0026_merge_20191117_1420.py b/backend/courses/migrations/0026_merge_20191117_1420.py index 400a62cca..f37455bee 100644 --- a/backend/courses/migrations/0026_merge_20191117_1420.py +++ b/backend/courses/migrations/0026_merge_20191117_1420.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0025_auto_20191117_1309"), ("courses", "0024_merge_20191103_1941"), diff --git a/backend/courses/migrations/0027_auto_20191227_1213.py b/backend/courses/migrations/0027_auto_20191227_1213.py index 7dd937b55..2ba4e6c43 100644 --- a/backend/courses/migrations/0027_auto_20191227_1213.py +++ b/backend/courses/migrations/0027_auto_20191227_1213.py @@ -9,7 +9,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("courses", "0026_merge_20191117_1420"), diff --git a/backend/courses/migrations/0028_auto_20200131_1619.py b/backend/courses/migrations/0028_auto_20200131_1619.py index d5c70a4f4..7d9f3a642 100644 --- a/backend/courses/migrations/0028_auto_20200131_1619.py +++ b/backend/courses/migrations/0028_auto_20200131_1619.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0027_auto_20191227_1213"), ] diff --git a/backend/courses/migrations/0029_auto_20200512_1525.py b/backend/courses/migrations/0029_auto_20200512_1525.py index c0115cde0..a023dc96c 100644 --- a/backend/courses/migrations/0029_auto_20200512_1525.py +++ b/backend/courses/migrations/0029_auto_20200512_1525.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("courses", "0028_auto_20200131_1619"), diff --git a/backend/courses/migrations/0030_auto_20201002_0714.py b/backend/courses/migrations/0030_auto_20201002_0714.py index 00b1d6d3c..5eac13632 100644 --- a/backend/courses/migrations/0030_auto_20201002_0714.py +++ b/backend/courses/migrations/0030_auto_20201002_0714.py @@ -8,7 +8,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("courses", "0029_auto_20200512_1525"), diff --git a/backend/courses/migrations/0031_userprofile_push_notifications.py b/backend/courses/migrations/0031_userprofile_push_notifications.py index f85ceb940..80ee2b0d3 100644 --- a/backend/courses/migrations/0031_userprofile_push_notifications.py +++ b/backend/courses/migrations/0031_userprofile_push_notifications.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0030_auto_20201002_0714"), ] diff --git a/backend/courses/migrations/0032_auto_20210418_0343.py b/backend/courses/migrations/0032_auto_20210418_0343.py index b80daf1e9..0d8576206 100644 --- a/backend/courses/migrations/0032_auto_20210418_0343.py +++ b/backend/courses/migrations/0032_auto_20210418_0343.py @@ -7,7 +7,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0031_userprofile_push_notifications"), ] diff --git a/backend/courses/migrations/0033_alter_statusupdate_section.py b/backend/courses/migrations/0033_alter_statusupdate_section.py index 4bb41ae6e..63443ec29 100644 --- a/backend/courses/migrations/0033_alter_statusupdate_section.py +++ b/backend/courses/migrations/0033_alter_statusupdate_section.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0032_auto_20210418_0343"), ] diff --git a/backend/courses/migrations/0034_auto_20211114_0032.py b/backend/courses/migrations/0034_auto_20211114_0032.py index dd98648de..2da4ae4a6 100644 --- a/backend/courses/migrations/0034_auto_20211114_0032.py +++ b/backend/courses/migrations/0034_auto_20211114_0032.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0033_alter_statusupdate_section"), ] diff --git a/backend/courses/migrations/0035_topic_course_topic.py b/backend/courses/migrations/0035_topic_course_topic.py index ebd484413..c5cb16190 100644 --- a/backend/courses/migrations/0035_topic_course_topic.py +++ b/backend/courses/migrations/0035_topic_course_topic.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0034_auto_20211114_0032"), ] diff --git a/backend/courses/migrations/0036_course_syllabus_url_meeting_end_date_and_more.py b/backend/courses/migrations/0036_course_syllabus_url_meeting_end_date_and_more.py index a5d89f97c..02bbc9095 100644 --- a/backend/courses/migrations/0036_course_syllabus_url_meeting_end_date_and_more.py +++ b/backend/courses/migrations/0036_course_syllabus_url_meeting_end_date_and_more.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0035_topic_course_topic"), ] diff --git a/backend/courses/migrations/0037_alter_meeting_room_alter_section_credits.py b/backend/courses/migrations/0037_alter_meeting_room_alter_section_credits.py index a8ea15476..1ac4884c8 100644 --- a/backend/courses/migrations/0037_alter_meeting_room_alter_section_credits.py +++ b/backend/courses/migrations/0037_alter_meeting_room_alter_section_credits.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0036_course_syllabus_url_meeting_end_date_and_more"), ] diff --git a/backend/courses/migrations/0038_alter_meeting_room.py b/backend/courses/migrations/0038_alter_meeting_room.py index 8dfd5c147..68c345308 100644 --- a/backend/courses/migrations/0038_alter_meeting_room.py +++ b/backend/courses/migrations/0038_alter_meeting_room.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0037_alter_meeting_room_alter_section_credits"), ] diff --git a/backend/courses/migrations/0039_alter_course_primary_listing.py b/backend/courses/migrations/0039_alter_course_primary_listing.py index 9f6f6ac4a..a700b8fcb 100644 --- a/backend/courses/migrations/0039_alter_course_primary_listing.py +++ b/backend/courses/migrations/0039_alter_course_primary_listing.py @@ -15,7 +15,6 @@ def reverse_func(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ("courses", "0038_alter_meeting_room"), ] diff --git a/backend/courses/migrations/0040_alter_course_primary_listing.py b/backend/courses/migrations/0040_alter_course_primary_listing.py index 0cddd7ee8..761452d81 100644 --- a/backend/courses/migrations/0040_alter_course_primary_listing.py +++ b/backend/courses/migrations/0040_alter_course_primary_listing.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0039_alter_course_primary_listing"), ] diff --git a/backend/courses/migrations/0041_remove_section_raw_demand.py b/backend/courses/migrations/0041_remove_section_raw_demand.py index 33170aa46..d6eb45e4a 100644 --- a/backend/courses/migrations/0041_remove_section_raw_demand.py +++ b/backend/courses/migrations/0041_remove_section_raw_demand.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0040_alter_course_primary_listing"), ] diff --git a/backend/courses/migrations/0042_section_has_reviews.py b/backend/courses/migrations/0042_section_has_reviews.py index 1a73b9e90..5abc516d6 100644 --- a/backend/courses/migrations/0042_section_has_reviews.py +++ b/backend/courses/migrations/0042_section_has_reviews.py @@ -10,7 +10,6 @@ def compute_has_reviews(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ("courses", "0041_remove_section_raw_demand"), ("review", "0004_auto_20200512_1526"), diff --git a/backend/courses/migrations/0043_section_has_status_updates.py b/backend/courses/migrations/0043_section_has_status_updates.py index aac318f40..67bb2feb1 100644 --- a/backend/courses/migrations/0043_section_has_status_updates.py +++ b/backend/courses/migrations/0043_section_has_status_updates.py @@ -10,7 +10,6 @@ def compute_has_status_updates(apps, schema_editor): class Migration(migrations.Migration): - dependencies = [ ("courses", "0042_section_has_reviews"), ] diff --git a/backend/courses/migrations/0044_prengssrequirement_and_more.py b/backend/courses/migrations/0044_prengssrequirement_and_more.py index 929a79443..2cd047fbd 100644 --- a/backend/courses/migrations/0044_prengssrequirement_and_more.py +++ b/backend/courses/migrations/0044_prengssrequirement_and_more.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0043_section_has_status_updates"), ] diff --git a/backend/courses/migrations/0045_course_crn_course_non_null_crn_semester_unique.py b/backend/courses/migrations/0045_course_crn_course_non_null_crn_semester_unique.py index 985a6108e..ca142a015 100644 --- a/backend/courses/migrations/0045_course_crn_course_non_null_crn_semester_unique.py +++ b/backend/courses/migrations/0045_course_crn_course_non_null_crn_semester_unique.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0044_prengssrequirement_and_more"), ] diff --git a/backend/courses/migrations/0046_remove_course_non_null_crn_semester_unique_and_more.py b/backend/courses/migrations/0046_remove_course_non_null_crn_semester_unique_and_more.py index 45084f6c8..43adaa6cc 100644 --- a/backend/courses/migrations/0046_remove_course_non_null_crn_semester_unique_and_more.py +++ b/backend/courses/migrations/0046_remove_course_non_null_crn_semester_unique_and_more.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0045_course_crn_course_non_null_crn_semester_unique"), ] diff --git a/backend/courses/migrations/0047_alter_room_number.py b/backend/courses/migrations/0047_alter_room_number.py index 3bbfaeff6..4f51d0dda 100644 --- a/backend/courses/migrations/0047_alter_room_number.py +++ b/backend/courses/migrations/0047_alter_room_number.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0046_remove_course_non_null_crn_semester_unique_and_more"), ] diff --git a/backend/courses/migrations/0047_alter_section_pre_ngss_restrictions_ngssrestriction_and_more.py b/backend/courses/migrations/0047_alter_section_pre_ngss_restrictions_ngssrestriction_and_more.py index 7e43ea716..f25b480e0 100644 --- a/backend/courses/migrations/0047_alter_section_pre_ngss_restrictions_ngssrestriction_and_more.py +++ b/backend/courses/migrations/0047_alter_section_pre_ngss_restrictions_ngssrestriction_and_more.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0046_remove_course_non_null_crn_semester_unique_and_more"), ] diff --git a/backend/courses/migrations/0048_alter_attribute_school.py b/backend/courses/migrations/0048_alter_attribute_school.py index bce93bc1c..9d8ac4884 100644 --- a/backend/courses/migrations/0048_alter_attribute_school.py +++ b/backend/courses/migrations/0048_alter_attribute_school.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0047_alter_section_pre_ngss_restrictions_ngssrestriction_and_more"), ] diff --git a/backend/courses/migrations/0049_merge_20220529_2355.py b/backend/courses/migrations/0049_merge_20220529_2355.py index 9cc7267a3..a15c2403a 100644 --- a/backend/courses/migrations/0049_merge_20220529_2355.py +++ b/backend/courses/migrations/0049_merge_20220529_2355.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0047_alter_room_number"), ("courses", "0048_alter_attribute_school"), diff --git a/backend/courses/migrations/0050_rename_include_or_exclude_ngssrestriction_inclusive_and_more.py b/backend/courses/migrations/0050_rename_include_or_exclude_ngssrestriction_inclusive_and_more.py index 4195907f4..4b6770113 100644 --- a/backend/courses/migrations/0050_rename_include_or_exclude_ngssrestriction_inclusive_and_more.py +++ b/backend/courses/migrations/0050_rename_include_or_exclude_ngssrestriction_inclusive_and_more.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0049_merge_20220529_2355"), ] diff --git a/backend/courses/migrations/0051_alter_attribute_school.py b/backend/courses/migrations/0051_alter_attribute_school.py index 7f9e17613..78b6e4004 100644 --- a/backend/courses/migrations/0051_alter_attribute_school.py +++ b/backend/courses/migrations/0051_alter_attribute_school.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0050_rename_include_or_exclude_ngssrestriction_inclusive_and_more"), ] diff --git a/backend/courses/migrations/0051_alter_ngssrestriction_inclusive.py b/backend/courses/migrations/0051_alter_ngssrestriction_inclusive.py index 6f30294f7..0f7ffb7a7 100644 --- a/backend/courses/migrations/0051_alter_ngssrestriction_inclusive.py +++ b/backend/courses/migrations/0051_alter_ngssrestriction_inclusive.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0050_rename_include_or_exclude_ngssrestriction_inclusive_and_more"), ] diff --git a/backend/courses/migrations/0052_merge_20220614_0027.py b/backend/courses/migrations/0052_merge_20220614_0027.py index baade6f5c..b1de4383e 100644 --- a/backend/courses/migrations/0052_merge_20220614_0027.py +++ b/backend/courses/migrations/0052_merge_20220614_0027.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0051_alter_attribute_school"), ("courses", "0051_alter_ngssrestriction_inclusive"), diff --git a/backend/courses/migrations/0053_alter_ngssrestriction_code.py b/backend/courses/migrations/0053_alter_ngssrestriction_code.py index 881a64cb5..10d2da245 100644 --- a/backend/courses/migrations/0053_alter_ngssrestriction_code.py +++ b/backend/courses/migrations/0053_alter_ngssrestriction_code.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0052_merge_20220614_0027"), ] diff --git a/backend/courses/migrations/0054_alter_ngssrestriction_inclusive.py b/backend/courses/migrations/0054_alter_ngssrestriction_inclusive.py index e16ce5059..a8f756b60 100644 --- a/backend/courses/migrations/0054_alter_ngssrestriction_inclusive.py +++ b/backend/courses/migrations/0054_alter_ngssrestriction_inclusive.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0053_alter_ngssrestriction_code"), ] diff --git a/backend/courses/migrations/0054_friendship.py b/backend/courses/migrations/0054_friendship.py index 078a22f79..7a72b45bf 100644 --- a/backend/courses/migrations/0054_friendship.py +++ b/backend/courses/migrations/0054_friendship.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0053_alter_ngssrestriction_code"), ] diff --git a/backend/courses/migrations/0054_userprofile_uuid_secret_and_more.py b/backend/courses/migrations/0054_userprofile_uuid_secret_and_more.py index 86ed89727..6d3ace492 100644 --- a/backend/courses/migrations/0054_userprofile_uuid_secret_and_more.py +++ b/backend/courses/migrations/0054_userprofile_uuid_secret_and_more.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0053_alter_ngssrestriction_code"), ] diff --git a/backend/courses/migrations/0055_friendship_recipient_friendship_sender_and_more.py b/backend/courses/migrations/0055_friendship_recipient_friendship_sender_and_more.py index 6e0ae189b..d54a002d7 100644 --- a/backend/courses/migrations/0055_friendship_recipient_friendship_sender_and_more.py +++ b/backend/courses/migrations/0055_friendship_recipient_friendship_sender_and_more.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("courses", "0054_friendship"), diff --git a/backend/courses/migrations/0056_alter_friendship_accepted_at_and_more.py b/backend/courses/migrations/0056_alter_friendship_accepted_at_and_more.py index f7b692af7..b450f2087 100644 --- a/backend/courses/migrations/0056_alter_friendship_accepted_at_and_more.py +++ b/backend/courses/migrations/0056_alter_friendship_accepted_at_and_more.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("courses", "0055_friendship_recipient_friendship_sender_and_more"), diff --git a/backend/courses/migrations/0057_alter_ngssrestriction_inclusive.py b/backend/courses/migrations/0057_alter_ngssrestriction_inclusive.py index d365d489e..01de9a1ed 100644 --- a/backend/courses/migrations/0057_alter_ngssrestriction_inclusive.py +++ b/backend/courses/migrations/0057_alter_ngssrestriction_inclusive.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0056_alter_friendship_accepted_at_and_more"), ] diff --git a/backend/courses/migrations/0058_merge_20230403_2310.py b/backend/courses/migrations/0058_merge_20230403_2310.py index ce54c5fd5..c7aae5836 100644 --- a/backend/courses/migrations/0058_merge_20230403_2310.py +++ b/backend/courses/migrations/0058_merge_20230403_2310.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0054_alter_ngssrestriction_inclusive"), ("courses", "0057_alter_ngssrestriction_inclusive"), diff --git a/backend/courses/migrations/0058_merge_20230712_1350.py b/backend/courses/migrations/0058_merge_20230712_1350.py index a7f0c0e99..0d18cd3cd 100644 --- a/backend/courses/migrations/0058_merge_20230712_1350.py +++ b/backend/courses/migrations/0058_merge_20230712_1350.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0054_userprofile_uuid_secret_and_more"), ("courses", "0057_alter_ngssrestriction_inclusive"), diff --git a/backend/courses/migrations/0059_merge_20230816_2208.py b/backend/courses/migrations/0059_merge_20230816_2208.py index 393211a1c..e263a13c9 100644 --- a/backend/courses/migrations/0059_merge_20230816_2208.py +++ b/backend/courses/migrations/0059_merge_20230816_2208.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0058_merge_20230403_2310"), ("courses", "0058_merge_20230712_1350"), diff --git a/backend/courses/migrations/0060_building_location.py b/backend/courses/migrations/0060_building_location.py new file mode 100644 index 000000000..065df10b6 --- /dev/null +++ b/backend/courses/migrations/0060_building_location.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.22 on 2023-10-24 01:18 + +import django.contrib.gis.db.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("courses", "0059_merge_20230816_2208"), + ] + + operations = [ + migrations.AddField( + model_name="building", + name="location", + field=django.contrib.gis.db.models.fields.PointField( + blank=True, + help_text="\nThe location of the building, in the form POINT({longitude} {latitude}), e.g.\nPOINT(-75.176773 39.961380) for the Towne Building.\n", + null=True, + srid=4326, + ), + ), + ] diff --git a/backend/courses/models.py b/backend/courses/models.py index d8dd31b3a..547b14c22 100644 --- a/backend/courses/models.py +++ b/backend/courses/models.py @@ -4,6 +4,7 @@ import phonenumbers from django.contrib.auth import get_user_model +from django.contrib.gis.db import models as gis_models from django.core.exceptions import ValidationError from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models, transaction @@ -1029,6 +1030,16 @@ class Building(models.Model): """ ), ) + location = gis_models.PointField( + blank=True, + null=True, + help_text=dedent( + """ + The location of the building, in the form POINT({longitude} {latitude}), e.g. + POINT(-75.176773 39.961380) for the Towne Building. + """ + ), + ) def __str__(self): return self.name if len(self.name) > 0 else self.code diff --git a/backend/courses/serializers.py b/backend/courses/serializers.py index ef3951db9..d2985bab8 100644 --- a/backend/courses/serializers.py +++ b/backend/courses/serializers.py @@ -16,6 +16,7 @@ UserProfile, ) from plan.management.commands.recommendcourses import cosine_similarity +from review.models import Review, ReviewBit class MeetingSerializer(serializers.ModelSerializer): @@ -465,3 +466,40 @@ class FriendshipRequestSerializer(serializers.Serializer): def to_representation(self, instance): print("in representation function") return super().to_representation(instance) + + +class AuditSerializer(serializers.ModelSerializer): + id = serializers.CharField(source="section.course.full_code", read_only=True) + title = serializers.CharField(source="section.course.title", read_only=True) + description = serializers.CharField(source="section.course.description", read_only=True) + instructors = serializers.SerializerMethodField(read_only=True) + + building = serializers.CharField(source="room.building", read_only=True) + room_number = serializers.CharField(source="room.number", read_only=True) + + reviews = serializers.SerializerMethodField(read_only=True) + + def get_instructors(self, obj): + instructors = obj.section.instructors.all() + return [instructor.name for instructor in instructors] + + def get_reviews(self, obj): + reviews = Review.objects.filter(section=obj.section) + reviewbits = ReviewBit.objects.filter(review__in=reviews) + return [(reviewbit.field, reviewbit.average) for reviewbit in reviewbits] + + class Meta: + model = Meeting + fields = [ + "id", + "title", + "description", + "start", + "day", + "end", + "room", + "building", + "room_number", + "instructors", + "reviews", + ] diff --git a/backend/courses/urls.py b/backend/courses/urls.py index 5f273bb8d..5d8e51184 100644 --- a/backend/courses/urls.py +++ b/backend/courses/urls.py @@ -35,4 +35,5 @@ ), path("statusupdate//", views.StatusUpdateView.as_view(), name="statusupdate"), path("friendship/", views.FriendshipView.as_view(), name="friendship"), + path("/audit/", views.AuditView.as_view(), name="audit"), ] diff --git a/backend/courses/util.py b/backend/courses/util.py index c9de9a509..99709a6de 100644 --- a/backend/courses/util.py +++ b/backend/courses/util.py @@ -3,6 +3,7 @@ import os import re import uuid +from datetime import datetime, timedelta, timezone from decimal import Decimal from django.core.cache import cache @@ -672,3 +673,32 @@ def get_semesters(semesters=None, verbose=False): "(if an error is encountered)." ) return semesters + + +def translate_time(timestamp): + """ + Translate a ISO timestamp generated by JS `new Date().toISOString()` + in UTC into Meeting model's time format in Eastern Time. + Example: "2011-10-05T14:48:00.000Z" + Returns: datetime object, day of week, date string, time string + """ + day_map = { + "Mon": "M", + "Tue": "T", + "Wed": "W", + "Thu": "R", + "Fri": "F", + "Sat": "S", + "Sun": "U", + } + try: + date = datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S.%fZ") + except ValueError: + raise ValueError("Invalid timestamp format") + eastern_tz = timezone(-timedelta(hours=5)) + date_eastern = date.replace(tzinfo=timezone.utc).astimezone(eastern_tz) + # day = date_eastern.strftime("%a")[0] + day = day_map[date_eastern.strftime("%a")] + date_str = date_eastern.strftime("%Y-%m-%d") + time_str = date_eastern.strftime("%H.%M") + return date_eastern, day, date_str, float(time_str) diff --git a/backend/courses/views.py b/backend/courses/views.py index ec2832aa1..f47d838d0 100644 --- a/backend/courses/views.py +++ b/backend/courses/views.py @@ -1,4 +1,6 @@ from django.contrib.auth import get_user_model +from django.contrib.gis.geos import Point +from django.contrib.gis.measure import Distance from django.db.models import Prefetch, Q from django.http import JsonResponse from django.shortcuts import get_object_or_404 @@ -7,20 +9,22 @@ from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response -from courses.filters import CourseSearchFilterBackend +from courses.filters import attribute_filter from courses.models import ( Attribute, Course, Friendship, + Meeting, NGSSRestriction, PreNGSSRequirement, Section, StatusUpdate, User, ) -from courses.search import TypedCourseSearchBackend, TypedSectionSearchBackend +from courses.search import TypedSectionSearchBackend from courses.serializers import ( AttributeListSerializer, + AuditSerializer, CourseDetailSerializer, CourseListSerializer, FriendshipSerializer, @@ -31,7 +35,7 @@ StatusUpdateSerializer, UserSerializer, ) -from courses.util import get_current_semester +from courses.util import get_current_semester, translate_time from PennCourses.docs_settings import PcxAutoSchema from plan.management.commands.recommendcourses import retrieve_course_clusters, vectorize_user @@ -213,9 +217,6 @@ def get_serializer_context(self): return context - filter_backends = [TypedCourseSearchBackend, CourseSearchFilterBackend] - search_fields = ("full_code", "title", "sections__instructors__name") - class CourseDetail(generics.RetrieveAPIView, BaseCourseMixin): """ @@ -524,3 +525,46 @@ def delete(self, request): res["message"] = "Friendship request already rejected." return JsonResponse(res, status=status.HTTP_409_CONFLICT) return JsonResponse(res, status=status.HTTP_200_OK) + + +class AuditView(generics.ListAPIView): + """ + This route allows you to list courses that are currently happening with filters to + exclude departments, buildings etc. The route will return a list of courses in + decreasing course_quality. Without GET parameters, this route will return all + currently running courses. + """ + + def get(self, request, semester): + timestamp = request.query_params.get("timestamp") + lat = request.query_params.get("lat") + lon = request.query_params.get("lon") + attributes = request.query_params.get("attributes") + limit = request.query_params.get("limit") or 10 + try: + date, day, date_str, time_float = translate_time(str(timestamp)) + except ValueError: + return Response( + { + "error": "Invalid timestamp format. Please use ISO format \ + (e.g. 2011-10-05T14:48:00.000Z)." + }, + status=status.HTTP_400_BAD_REQUEST, + ) + meetings = Meeting.objects.filter( + Q(start__lte=time_float) & Q(end__gte=time_float) & Q(day=day) + ) + if lat and lon: + proximity_threshold = Distance(km=0.2) + cur_point = Point(float(lon), float(lat), srid=4326) + meetings = meetings.filter( + room__building__latitude__isnull=False, + room__building__longitude__isnull=False, + room__building__location__distance_lte=(cur_point, proximity_threshold), + ) + sections = Section.objects.filter(meetings__in=meetings) + courses = Course.objects.filter(sections__in=sections, semester=semester) + courses = attribute_filter(courses, attributes) + meetings = meetings.filter(section__course__in=courses)[:limit] + serializer = AuditSerializer(meetings, many=True) + return Response(serializer.data) diff --git a/backend/docker-compose-local.yaml b/backend/docker-compose-local.yaml new file mode 100644 index 000000000..a2a949d03 --- /dev/null +++ b/backend/docker-compose-local.yaml @@ -0,0 +1,18 @@ +version: "3" + +services: + db: + image: postgis/postgis:15-master + command: postgres + environment: + - POSTGRES_DB=postgres + - POSTGRES_USER=penn-courses + - POSTGRES_PASSWORD=postgres + ports: + - "5432:5432" + volumes: + - ./postgres:/var/lib/postgresql/pgdata + redis: + image: redis:4.0 + ports: + - "6379:6379" diff --git a/backend/docker-compose.yaml b/backend/docker-compose.yaml index bff916da9..e4b86c2ff 100644 --- a/backend/docker-compose.yaml +++ b/backend/docker-compose.yaml @@ -2,7 +2,7 @@ version: "3" services: db: - image: postgres + image: postgis/postgis:15-master command: postgres environment: - POSTGRES_DB=postgres diff --git a/backend/plan/migrations/0001_initial.py b/backend/plan/migrations/0001_initial.py index 6aa26d57d..86ec34e6c 100644 --- a/backend/plan/migrations/0001_initial.py +++ b/backend/plan/migrations/0001_initial.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/backend/plan/migrations/0002_auto_20191027_1510.py b/backend/plan/migrations/0002_auto_20191027_1510.py index 8e5974395..70fa4800d 100644 --- a/backend/plan/migrations/0002_auto_20191027_1510.py +++ b/backend/plan/migrations/0002_auto_20191027_1510.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("plan", "0001_initial"), diff --git a/backend/plan/migrations/0003_auto_20201002_0714.py b/backend/plan/migrations/0003_auto_20201002_0714.py index cb2bd024c..1e65a9877 100644 --- a/backend/plan/migrations/0003_auto_20201002_0714.py +++ b/backend/plan/migrations/0003_auto_20201002_0714.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ ("courses", "0030_auto_20201002_0714"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), diff --git a/backend/plan/migrations/0004_alter_schedule_semester.py b/backend/plan/migrations/0004_alter_schedule_semester.py index 91f69a130..4a0176235 100644 --- a/backend/plan/migrations/0004_alter_schedule_semester.py +++ b/backend/plan/migrations/0004_alter_schedule_semester.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("plan", "0003_auto_20201002_0714"), ] diff --git a/backend/plan/migrations/0005_primaryscheduleloookup.py b/backend/plan/migrations/0005_primaryscheduleloookup.py index 809ceb56a..b90b2e5b9 100644 --- a/backend/plan/migrations/0005_primaryscheduleloookup.py +++ b/backend/plan/migrations/0005_primaryscheduleloookup.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("plan", "0004_alter_schedule_semester"), diff --git a/backend/plan/migrations/0006_alter_primaryscheduleloookup_unique_together_and_more.py b/backend/plan/migrations/0006_alter_primaryscheduleloookup_unique_together_and_more.py index 2de5e2137..9c8c593b8 100644 --- a/backend/plan/migrations/0006_alter_primaryscheduleloookup_unique_together_and_more.py +++ b/backend/plan/migrations/0006_alter_primaryscheduleloookup_unique_together_and_more.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("plan", "0005_primaryscheduleloookup"), ] diff --git a/backend/plan/migrations/0007_primaryschedule_and_more.py b/backend/plan/migrations/0007_primaryschedule_and_more.py index 8b8cf8711..8fd5ada72 100644 --- a/backend/plan/migrations/0007_primaryschedule_and_more.py +++ b/backend/plan/migrations/0007_primaryschedule_and_more.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("plan", "0006_alter_primaryscheduleloookup_unique_together_and_more"), diff --git a/backend/plan/migrations/0008_alter_primaryschedule_unique_together_and_more.py b/backend/plan/migrations/0008_alter_primaryschedule_unique_together_and_more.py index 1ffeae9dd..8a443cc17 100644 --- a/backend/plan/migrations/0008_alter_primaryschedule_unique_together_and_more.py +++ b/backend/plan/migrations/0008_alter_primaryschedule_unique_together_and_more.py @@ -6,7 +6,6 @@ class Migration(migrations.Migration): - dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ("plan", "0007_primaryschedule_and_more"), diff --git a/backend/plan/views.py b/backend/plan/views.py index ba2c4a52c..e27330281 100644 --- a/backend/plan/views.py +++ b/backend/plan/views.py @@ -190,12 +190,12 @@ class PrimaryScheduleViewSet(viewsets.ModelViewSet): list: Get the primary schedule for the current user as well as primary schedules of the user's friends. - update: Create or update the primary schedule for the current user. + create: Create/update/delete the primary schedule for the current user. """ model = PrimarySchedule queryset = PrimarySchedule.objects.none() - http_method_names = ["get", "put"] + http_method_names = ["get", "post"] permission_classes = [IsAuthenticated] serializer_class = PrimaryScheduleSerializer @@ -203,40 +203,69 @@ def get_queryset(self): return PrimarySchedule.objects.filter( Q(user=self.request.user) | Q(user_id__in=Subquery(get_accepted_friends(self.request.user).values("id"))) + ).prefetch_related( + Prefetch("schedule__sections", Section.with_reviews.all()), + "schedule__sections__associated_sections", + "schedule__sections__instructors", + "schedule__sections__meetings", + "schedule__sections__meetings__room", ) schema = PcxAutoSchema( response_codes={ - "primary-schedule": { + "primary-schedules-list": { "GET": { 200: "Primary schedule (and friend's schedules) retrieved successfully.", }, - "PUT": { - 200: "Primary schedule updated successfully.", + "POST": { + 201: "Primary schedule updated successfully.", 400: "Invalid schedule in request.", }, }, - } + }, + override_request_schema={ + "primary-schedules-list": { + "POST": { + "type": "object", + "properties": { + "schedule_id": { + "type": "integer", + "description": ( + "The ID of the schedule you want to make primary \ + (or null to unset)." + ), + }, + }, + } + } + }, ) - def put(self, request): + def post(self, request): res = {} user = request.user - schedule = Schedule.objects.filter( - person_id=user.id, id=request.data.get("schedule_id") - ).first() - if not schedule: - res["message"] = "Schedule does not exist" - return JsonResponse(res, status=status.HTTP_400_BAD_REQUEST) - - primary_schedule_entry = self.get_queryset().filter(user=user).first() - if primary_schedule_entry: - primary_schedule_entry.schedule = schedule - primary_schedule_entry.save() - res["message"] = "Primary schedule successfully updated" + schedule_id = request.data.get("schedule_id") + if not schedule_id: + # Delete primary schedule + primary_schedule_entry = self.get_queryset().filter(user=user).first() + if primary_schedule_entry: + primary_schedule_entry.delete() + res["message"] = "Primary schedule successfully unset" + res["message"] = "Primary schedule was already unset" else: - PrimarySchedule.objects.create(user=user, schedule=schedule) - res["message"] = "Primary schedule successfully created" + schedule = Schedule.objects.filter(person_id=user.id, id=schedule_id).first() + if not schedule: + res["message"] = "Schedule does not exist" + return JsonResponse(res, status=status.HTTP_400_BAD_REQUEST) + + primary_schedule_entry = self.get_queryset().filter(user=user).first() + if primary_schedule_entry: + primary_schedule_entry.schedule = schedule + primary_schedule_entry.save() + res["message"] = "Primary schedule successfully updated" + else: + PrimarySchedule.objects.create(user=user, schedule=schedule) + res["message"] = "Primary schedule successfully created" return JsonResponse(res, status=status.HTTP_200_OK) @@ -367,7 +396,7 @@ def check_semester(data, sections): ) def update(self, request, pk=None): - if not Schedule.objects.filter(id=pk).exists(): + if not pk or not Schedule.objects.filter(id=pk).exists(): return Response({"detail": "Not found."}, status=status.HTTP_404_NOT_FOUND) try: schedule = self.get_queryset().get(id=pk) diff --git a/backend/review/migrations/0001_initial.py b/backend/review/migrations/0001_initial.py index 00f5b8a15..6abc84e06 100644 --- a/backend/review/migrations/0001_initial.py +++ b/backend/review/migrations/0001_initial.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/backend/review/migrations/0002_auto_20190525_2010.py b/backend/review/migrations/0002_auto_20190525_2010.py index 033037e72..542e21a90 100644 --- a/backend/review/migrations/0002_auto_20190525_2010.py +++ b/backend/review/migrations/0002_auto_20190525_2010.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("review", "0001_initial"), ] diff --git a/backend/review/migrations/0003_auto_20190525_2040.py b/backend/review/migrations/0003_auto_20190525_2040.py index 2bd57d0fc..87b74575b 100644 --- a/backend/review/migrations/0003_auto_20190525_2040.py +++ b/backend/review/migrations/0003_auto_20190525_2040.py @@ -5,7 +5,6 @@ class Migration(migrations.Migration): - dependencies = [ ("review", "0002_auto_20190525_2010"), ] diff --git a/backend/review/migrations/0004_auto_20200512_1526.py b/backend/review/migrations/0004_auto_20200512_1526.py index ecd8e735d..3e0610377 100644 --- a/backend/review/migrations/0004_auto_20200512_1526.py +++ b/backend/review/migrations/0004_auto_20200512_1526.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("review", "0003_auto_20190525_2040"), ] diff --git a/backend/review/migrations/0005_review_comments.py b/backend/review/migrations/0005_review_comments.py index 42119288e..b0bc39fed 100644 --- a/backend/review/migrations/0005_review_comments.py +++ b/backend/review/migrations/0005_review_comments.py @@ -4,7 +4,6 @@ class Migration(migrations.Migration): - dependencies = [ ("review", "0004_auto_20200512_1526"), ] diff --git a/backend/tests/plan/test_api.py b/backend/tests/plan/test_api.py index 865191f6c..725470595 100644 --- a/backend/tests/plan/test_api.py +++ b/backend/tests/plan/test_api.py @@ -122,7 +122,6 @@ def test_double_count_req(self): class IsOpenFilterTestCase(TestCase): def setUp(self): - _, self.cis_160_001 = create_mock_data( code="CIS-160-001", semester=TEST_SEMESTER, meeting_days="TR" ) diff --git a/backend/tests/plan/test_primary_schedules.py b/backend/tests/plan/test_primary_schedules.py index 33ac8fc4c..2dbf9bb06 100644 --- a/backend/tests/plan/test_primary_schedules.py +++ b/backend/tests/plan/test_primary_schedules.py @@ -39,28 +39,40 @@ def setUp(self): self.s2.save() self.s2.sections.set([self.cis121]) + to_delete = Schedule( + person=self.u1, + semester=TEST_SEMESTER, + name="My Test Schedule To Delete", + ) + to_delete.save() + self.deleted_schedule_id = to_delete.id + to_delete.delete() + self.client = APIClient() self.client.login(username="jacobily", password="top_secret") def test_put_primary_schedule(self): response = self.client.put(primary_schedule_url, {"schedule_id": self.s.id}) self.assertEqual(response.status_code, 200) - # self.assertEqual(response.json()["id"], self.s.id) - # self.assertEqual(response.json()["name"], self.s.name) - # self.assertEqual(response.json()["sections"][0]["id"], self.cis120.id) - # self.assertEqual(response.json()["sections"][0]["course"]["id"], self.cis120.course.id) + self.assertEqual(response.json()["id"], self.s.id) + self.assertEqual(response.json()["name"], self.s.name) + self.assertEqual(response.json()["sections"][0]["id"], self.cis120.id) + self.assertEqual(response.json()["sections"][0]["course"]["id"], self.cis120.course.id) def test_replace_primary_schedule(self): - response = self.client.put(primary_schedule_url, {"schedule_id": 123}) # invalid ID - # self.assertEqual(response.status_code, 200) # todo: should be 400 + response = self.client.put( + primary_schedule_url, {"schedule_id": self.deleted_schedule_id} + ) # invalid ID + + self.assertEqual(response.status_code, 400) response = self.client.put(primary_schedule_url, {"schedule_id": self.s.id}) self.assertEqual(response.status_code, 200) - # self.assertEqual(response.data["id"], self.s.id) + self.assertEqual(response.json()["id"], self.s.id) response = self.client.put(primary_schedule_url, {"schedule_id": self.s2.id}) self.assertEqual(response.status_code, 200) - # self.assertEqual(response.data["id"], self.s2.id) + self.assertEqual(response.json()["id"], self.s2.id) def test_primary_schedule_friends(self): response = self.client.put(primary_schedule_url, {"schedule_id": self.s.id}) @@ -85,15 +97,14 @@ def test_primary_schedule_friends(self): u2_s.save() u2_s.sections.set([self.cis120]) response = self.client2.put(primary_schedule_url, {"schedule_id": u2_s.id}) - # self.assertEqual(response.status_code, 200) - # self.assertEqual(response.data["id"], u2_s.id) + self.assertEqual(response.status_code, 200) + self.assertEqual(response.json()["id"], u2_s.id) response = self.client.get(primary_schedule_url) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.json()), 2) - # print("1", response.json()) - # self.assertEqual(response.data[0]["id"], self.s.id) - # self.assertEqual(response.data[1]["id"], u2_s.id) + self.assertEqual(response.json()[0]["id"], self.s.id) + self.assertEqual(response.json()[1]["id"], u2_s.id) Friendship.objects.create(sender=self.u1, recipient=u3, status=Friendship.Status.ACCEPTED) u3_s = Schedule( @@ -112,7 +123,7 @@ def test_primary_schedule_friends(self): # add a primary schedule for u3 response = self.client3.put(primary_schedule_url, {"schedule_id": u3_s.id}) self.assertEqual(response.status_code, 200) - # self.assertEqual(response.data["id"], u3_s.id) + self.assertEqual(response.json()["id"], u3_s.id) # should have all 3 now response = self.client.get(primary_schedule_url) @@ -127,5 +138,5 @@ def test_primary_schedule_friends(self): response = self.client.get(primary_schedule_url) self.assertEqual(response.status_code, 200) self.assertEqual(len(response.json()), 2) - # self.assertEqual(response.data[0]["id"], self.s.id) - # self.assertEqual(response.data[1]["id"], u3_s.id) + self.assertEqual(response.json()[0]["id"], self.s.id) + self.assertEqual(response.json()[1]["id"], u3_s.id) diff --git a/frontend/plan/actions/index.js b/frontend/plan/actions/index.js index 00b205ed5..0413b91ed 100644 --- a/frontend/plan/actions/index.js +++ b/frontend/plan/actions/index.js @@ -677,13 +677,9 @@ export const findOwnPrimarySchedule = (user) => (dispatch) => { ); }) .then((foundSched) => { - if (foundSched) { - dispatch( - setPrimaryScheduleIdOnFrontend(foundSched.schedule_id) - ); - } else { - dispatch(setPrimaryScheduleIdOnFrontend("-1")); - } + dispatch( + setPrimaryScheduleIdOnFrontend(foundSched?.schedule_id) + ); }) .catch((error) => { console.log(error); @@ -698,7 +694,7 @@ export const setCurrentUserPrimarySchedule = (user, scheduleId) => ( schedule_id: scheduleId, }; const init = { - method: "PUT", + method: "POST", credentials: "include", mode: "same-origin", headers: { diff --git a/frontend/plan/components/schedule/Schedule.tsx b/frontend/plan/components/schedule/Schedule.tsx index 18c646b72..4f4af438c 100644 --- a/frontend/plan/components/schedule/Schedule.tsx +++ b/frontend/plan/components/schedule/Schedule.tsx @@ -68,13 +68,12 @@ interface ScheduleProps { ) => void; }; schedulesMutator: { - setPrimary: (user: User, scheduleId: string) => void; + setPrimary: (user: User, scheduleId: string | null) => void; copy: (scheduleName: string) => void; download: (scheduleName: string) => void; remove: (user: User, scheduleName: string, scheduleId: string) => void; rename: (oldName: string) => void; - // NOT IN ORIGINAL PROPS createSchedule: () => void; addFriend: () => void; showRequests: () => void; @@ -162,7 +161,7 @@ const mapDispatchToProps = (dispatch: ThunkDispatch) => ({ ), }, schedulesMutator: { - setPrimary: (user: User, scheduleId: string) => + setPrimary: (user: User, scheduleId: string | null) => dispatch(setCurrentUserPrimarySchedule(user, scheduleId)), copy: (scheduleName: string) => dispatch(createScheduleOnBackend(scheduleName)), diff --git a/frontend/plan/components/schedule/ScheduleSelectorDropdown.tsx b/frontend/plan/components/schedule/ScheduleSelectorDropdown.tsx index fea1566df..10e317218 100644 --- a/frontend/plan/components/schedule/ScheduleSelectorDropdown.tsx +++ b/frontend/plan/components/schedule/ScheduleSelectorDropdown.tsx @@ -41,7 +41,7 @@ const ButtonContainer = styled.div<{ isActive: boolean; isPrimary?: boolean }>` .option-icon i.primary:hover { color: ${(props) => - props.isPrimary ? "#295FCE" : "#7E7E7E"}; !important; + props.isPrimary ? "#295FCE" : "#7E7E7E"}; !important; } .initial-icon { @@ -169,9 +169,8 @@ const DropdownButton = ({ className="option-icon" >