diff --git a/Dockerfile b/Dockerfile index c0b82b7..c27c112 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,10 +11,10 @@ RUN set -ex && pip install --upgrade pip RUN set -ex && pip install -r requirements.txt FROM builder as final -WORKDIR /app -COPY ./the_app/ /app/ -COPY ./tests/ /app/ -COPY .env /app/ +WORKDIR /code +COPY ./the_app/ /code/ +COPY ./tests/ /code/ +COPY .env /code/ RUN set -ex && bash -c "eval $(grep 'PYTHONDONTWRITEBYTECODE' .env)" RUN set -ex && bash -c "eval $(grep 'PYTHONUNBUFFERED' .env)" diff --git a/Pipfile b/Pipfile index fd19616..cb3e0e5 100644 --- a/Pipfile +++ b/Pipfile @@ -19,6 +19,7 @@ pytest-cov = "*" pytest-asyncio = "*" [dev-packages] +devtools = {extras = ["pygments"], version = "*"} isort = "*" mypy = "*" flake8 = "*" @@ -26,7 +27,6 @@ black = "*" safety = "*" autoflake = "*" pyupgrade = "*" -icecream = "*" ipython = "*" pylint = "*" diff --git a/Pipfile.lock b/Pipfile.lock index 12c37bc..78cec5d 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "a079fa81edd5f9fffa5d9c991b96d227b19bf14c6692d83d99601f43c553586b" + "sha256": "f9a5eb2c04f8e18e17fc3028c403bff1c94c5456011ec8fac8d9890b2e8dadd9" }, "pipfile-spec": 6, "requires": { @@ -34,11 +34,11 @@ }, "asgiref": { "hashes": [ - "sha256:45a429524fba18aba9d512498b19d220c4d628e75b40cf5c627524dbaebc5cc1", - "sha256:fddeea3c53fa99d0cdb613c3941cc6e52d822491fc2753fba25768fb5bf4e865" + "sha256:1d2880b792ae8757289136f1db2b7b99100ce959b2aa57fd69dab783d05afac4", + "sha256:4a29362a6acebe09bf1d6640db38c1dc3d9217c68e6f9f6204d72667fc19a424" ], "markers": "python_version >= '3.7'", - "version": "==3.5.1" + "version": "==3.5.2" }, "asyncpg": { "hashes": [ @@ -82,10 +82,11 @@ }, "certifi": { "hashes": [ - "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", - "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" + "sha256:9c5705e395cd70084351dd8ad5c41e65655e08ce46f2ec9cf6c2c08390f71eb7", + "sha256:f1d53542ee8cbedbe2118b5686372fb33c297fcd6379b050cca0ef13a597382a" ], - "version": "==2021.10.8" + "markers": "python_version >= '3.6'", + "version": "==2022.5.18.1" }, "charset-normalizer": { "hashes": [ @@ -165,7 +166,7 @@ "sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e", "sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f" ], - "markers": "python_version < '4.0' and python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6' and python_full_version < '4.0.0'", "version": "==2.2.1" }, "eventlet": { @@ -249,7 +250,7 @@ "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6", "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==0.12.0" }, "httpcore": { @@ -257,7 +258,7 @@ "sha256:036f960468759e633574d7c121afba48af6419615d36ab8ede979f1ad6276fa3", "sha256:369aa481b014cf046f7067fddd67d00560f2f00426e79569d99cb11245134af0" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==0.13.7" }, "httptools": { @@ -382,7 +383,7 @@ "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==21.3" }, "pluggy": { @@ -390,7 +391,7 @@ "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==1.0.0" }, "py": { @@ -403,51 +404,51 @@ }, "pydantic": { "hashes": [ - "sha256:085ca1de245782e9b46cefcf99deecc67d418737a1fd3f6a4f511344b613a5b3", - "sha256:086254884d10d3ba16da0588604ffdc5aab3f7f09557b998373e885c690dd398", - "sha256:0b6037175234850ffd094ca77bf60fb54b08b5b22bc85865331dd3bda7a02fa1", - "sha256:0fe476769acaa7fcddd17cadd172b156b53546ec3614a4d880e5d29ea5fbce65", - "sha256:1d5278bd9f0eee04a44c712982343103bba63507480bfd2fc2790fa70cd64cf4", - "sha256:2cc6a4cb8a118ffec2ca5fcb47afbacb4f16d0ab8b7350ddea5e8ef7bcc53a16", - "sha256:2ee7e3209db1e468341ef41fe263eb655f67f5c5a76c924044314e139a1103a2", - "sha256:3011b975c973819883842c5ab925a4e4298dffccf7782c55ec3580ed17dc464c", - "sha256:3c3b035103bd4e2e4a28da9da7ef2fa47b00ee4a9cf4f1a735214c1bcd05e0f6", - "sha256:4c68c3bc88dbda2a6805e9a142ce84782d3930f8fdd9655430d8576315ad97ce", - "sha256:574936363cd4b9eed8acdd6b80d0143162f2eb654d96cb3a8ee91d3e64bf4cf9", - "sha256:5a79330f8571faf71bf93667d3ee054609816f10a259a109a0738dac983b23c3", - "sha256:5e48ef4a8b8c066c4a31409d91d7ca372a774d0212da2787c0d32f8045b1e034", - "sha256:6c5b77947b9e85a54848343928b597b4f74fc364b70926b3c4441ff52620640c", - "sha256:742645059757a56ecd886faf4ed2441b9c0cd406079c2b4bee51bcc3fbcd510a", - "sha256:7bdfdadb5994b44bd5579cfa7c9b0e1b0e540c952d56f627eb227851cda9db77", - "sha256:815ddebb2792efd4bba5488bc8fde09c29e8ca3227d27cf1c6990fc830fd292b", - "sha256:8b5ac0f1c83d31b324e57a273da59197c83d1bb18171e512908fe5dc7278a1d6", - "sha256:96f240bce182ca7fe045c76bcebfa0b0534a1bf402ed05914a6f1dadff91877f", - "sha256:a733965f1a2b4090a5238d40d983dcd78f3ecea221c7af1497b845a9709c1721", - "sha256:ab624700dc145aa809e6f3ec93fb8e7d0f99d9023b713f6a953637429b437d37", - "sha256:b2571db88c636d862b35090ccf92bf24004393f85c8870a37f42d9f23d13e032", - "sha256:bbbc94d0c94dd80b3340fc4f04fd4d701f4b038ebad72c39693c794fd3bc2d9d", - "sha256:c0727bda6e38144d464daec31dff936a82917f431d9c39c39c60a26567eae3ed", - "sha256:c556695b699f648c58373b542534308922c46a1cda06ea47bc9ca45ef5b39ae6", - "sha256:c86229333cabaaa8c51cf971496f10318c4734cf7b641f08af0a6fbf17ca3054", - "sha256:c8d7da6f1c1049eefb718d43d99ad73100c958a5367d30b9321b092771e96c25", - "sha256:c8e9dcf1ac499679aceedac7e7ca6d8641f0193c591a2d090282aaf8e9445a46", - "sha256:cb23bcc093697cdea2708baae4f9ba0e972960a835af22560f6ae4e7e47d33f5", - "sha256:d1e4c28f30e767fd07f2ddc6f74f41f034d1dd6bc526cd59e63a82fe8bb9ef4c", - "sha256:d9c9bdb3af48e242838f9f6e6127de9be7063aad17b32215ccc36a09c5cf1070", - "sha256:dee5ef83a76ac31ab0c78c10bd7d5437bfdb6358c95b91f1ba7ff7b76f9996a1", - "sha256:e0896200b6a40197405af18828da49f067c2fa1f821491bc8f5bde241ef3f7d7", - "sha256:f5a64b64ddf4c99fe201ac2724daada8595ada0d102ab96d019c1555c2d6441d", - "sha256:f947352c3434e8b937e3aa8f96f47bdfe6d92779e44bb3f41e4c213ba6a32145" + "sha256:02eefd7087268b711a3ff4db528e9916ac9aa18616da7bca69c1871d0b7a091f", + "sha256:059b6c1795170809103a1538255883e1983e5b831faea6558ef873d4955b4a74", + "sha256:0bf07cab5b279859c253d26a9194a8906e6f4a210063b84b433cf90a569de0c1", + "sha256:1542636a39c4892c4f4fa6270696902acb186a9aaeac6f6cf92ce6ae2e88564b", + "sha256:177071dfc0df6248fd22b43036f936cfe2508077a72af0933d0c1fa269b18537", + "sha256:18f3e912f9ad1bdec27fb06b8198a2ccc32f201e24174cec1b3424dda605a310", + "sha256:1dd8fecbad028cd89d04a46688d2fcc14423e8a196d5b0a5c65105664901f810", + "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a", + "sha256:447d5521575f18e18240906beadc58551e97ec98142266e521c34968c76c8761", + "sha256:494f7c8537f0c02b740c229af4cb47c0d39840b829ecdcfc93d91dcbb0779892", + "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58", + "sha256:4ce9ae9e91f46c344bec3b03d6ee9612802682c1551aaf627ad24045ce090761", + "sha256:5d93d4e95eacd313d2c765ebe40d49ca9dd2ed90e5b37d0d421c597af830c195", + "sha256:61b6760b08b7c395975d893e0b814a11cf011ebb24f7d869e7118f5a339a82e1", + "sha256:72ccb318bf0c9ab97fc04c10c37683d9eea952ed526707fabf9ac5ae59b701fd", + "sha256:79b485767c13788ee314669008d01f9ef3bc05db9ea3298f6a50d3ef596a154b", + "sha256:7eb57ba90929bac0b6cc2af2373893d80ac559adda6933e562dcfb375029acee", + "sha256:8bc541a405423ce0e51c19f637050acdbdf8feca34150e0d17f675e72d119580", + "sha256:969dd06110cb780da01336b281f53e2e7eb3a482831df441fb65dd30403f4608", + "sha256:985ceb5d0a86fcaa61e45781e567a59baa0da292d5ed2e490d612d0de5796918", + "sha256:9bcf8b6e011be08fb729d110f3e22e654a50f8a826b0575c7196616780683380", + "sha256:9ce157d979f742a915b75f792dbd6aa63b8eccaf46a1005ba03aa8a986bde34a", + "sha256:9f659a5ee95c8baa2436d392267988fd0f43eb774e5eb8739252e5a7e9cf07e0", + "sha256:a4a88dcd6ff8fd47c18b3a3709a89adb39a6373f4482e04c1b765045c7e282fd", + "sha256:a955260d47f03df08acf45689bd163ed9df82c0e0124beb4251b1290fa7ae728", + "sha256:a9af62e9b5b9bc67b2a195ebc2c2662fdf498a822d62f902bf27cccb52dbbf49", + "sha256:ae72f8098acb368d877b210ebe02ba12585e77bd0db78ac04a1ee9b9f5dd2166", + "sha256:b83ba3825bc91dfa989d4eed76865e71aea3a6ca1388b59fc801ee04c4d8d0d6", + "sha256:c11951b404e08b01b151222a1cb1a9f0a860a8153ce8334149ab9199cd198131", + "sha256:c320c64dd876e45254bdd350f0179da737463eea41c43bacbee9d8c9d1021f11", + "sha256:c8098a724c2784bf03e8070993f6d46aa2eeca031f8d8a048dff277703e6e193", + "sha256:d12f96b5b64bec3f43c8e82b4aab7599d0157f11c798c9f9c528a72b9e0b339a", + "sha256:e565a785233c2d03724c4dc55464559639b1ba9ecf091288dd47ad9c629433bd", + "sha256:f0f047e11febe5c3198ed346b507e1d010330d56ad615a7e0a89fae604065a0e", + "sha256:fe4670cb32ea98ffbf5a1262f14c3e102cccd92b1869df3bb09538158ba90fe6" ], "index": "pypi", - "version": "==1.9.0" + "version": "==1.9.1" }, "pygments": { "hashes": [ "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb", "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==2.12.0" }, "pyparsing": { @@ -567,7 +568,7 @@ "sha256:5a60c5c2d051f3a8eb546136aa0c9399773a689595e099e0877704d5888279bf", "sha256:c6d21096774ecb9639acad41b86b7706e52ba3bf1dc13ea4ed9ad593d47e24c7" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==0.19.1" }, "tomli": { @@ -685,10 +686,11 @@ }, "certifi": { "hashes": [ - "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", - "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" + "sha256:9c5705e395cd70084351dd8ad5c41e65655e08ce46f2ec9cf6c2c08390f71eb7", + "sha256:f1d53542ee8cbedbe2118b5686372fb33c297fcd6379b050cca0ef13a597382a" ], - "version": "==2021.10.8" + "markers": "python_version >= '3.6'", + "version": "==2022.5.18.1" }, "charset-normalizer": { "hashes": [ @@ -706,14 +708,6 @@ "markers": "python_version >= '3.7'", "version": "==8.1.3" }, - "colorama": { - "hashes": [ - "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b", - "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==0.4.4" - }, "decorator": { "hashes": [ "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", @@ -722,6 +716,17 @@ "markers": "python_version >= '3.5'", "version": "==5.1.1" }, + "devtools": { + "extras": [ + "pygments" + ], + "hashes": [ + "sha256:00717ef184223cf36c65bbd17c6eb412f8a7564f47957f9e8b2b7610661b17fb", + "sha256:6162a2f61c70242479dff3163e7837e6a9bf32451661af1347bfa3115602af16" + ], + "index": "pypi", + "version": "==0.8.0" + }, "dparse": { "hashes": [ "sha256:a1b5f169102e1c894f9a7d5ccf6f9402a836a5d24be80a986c7ce9eaed78f367", @@ -745,14 +750,6 @@ "index": "pypi", "version": "==4.0.1" }, - "icecream": { - "hashes": [ - "sha256:04b9cea4d9931cf6960db0430ebf11fa34464ce7152e384ddf50f96d25b201b4", - "sha256:09300b2d1c678712410cbd47c95198eb1b580f66f311a554ccd6b9e758ece0ee" - ], - "index": "pypi", - "version": "==2.1.2" - }, "idna": { "hashes": [ "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff", @@ -884,7 +881,7 @@ "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==21.3" }, "parso": { @@ -968,7 +965,7 @@ "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb", "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==2.12.0" }, "pylint": { @@ -1091,11 +1088,11 @@ }, "setuptools": { "hashes": [ - "sha256:5534570b9980fc650d45c62877ff603c7aaaf24893371708736cc016bd221c3c", - "sha256:ca6ba73b7fd5f734ae70ece8c4c1f7062b07f3352f6428f6277e27c8f5c64237" + "sha256:68e45d17c9281ba25dc0104eadd2647172b3472d9e01f911efa57965e8d51a36", + "sha256:a43bdedf853c670e5fed28e5623403bad2f73cf02f9a2774e91def6bda8265a7" ], "markers": "python_version >= '3.7'", - "version": "==62.2.0" + "version": "==62.3.2" }, "six": { "hashes": [ @@ -1137,11 +1134,11 @@ }, "traitlets": { "hashes": [ - "sha256:60474f39bf1d39a11e0233090b99af3acee93bbc2281777e61dd8c87da8a0014", - "sha256:9dd4025123fbe018a2092b2ad6984792f53ea3362c698f37473258b1fa97b0bc" + "sha256:70815ecb20ec619d1af28910ade523383be13754283aef90528eb3d47b77c5db", + "sha256:f44b708d33d98b0addb40c29d148a761f44af740603a8fd0e2f8b5b27cf0f087" ], "markers": "python_version >= '3.7'", - "version": "==5.2.0" + "version": "==5.2.1.post0" }, "typing-extensions": { "hashes": [ diff --git a/docker-compose.yml b/docker-compose.yml index e4adfb9..e376e4d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,7 +13,7 @@ services: --reload --log-level debug " volumes: - - .:/app + - .:/code ports: - 8080:8080 depends_on: diff --git a/requirements.txt b/requirements.txt index 8cc0120..ffb7daa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,42 +1,96 @@ +# +# These requirements were autogenerated by pipenv +# To regenerate from the project's Pipfile, run: +# +# pipenv lock --requirements --dev +# + +# Note: in pipenv 2020.x, "--dev" changed to emit both default and development +# requirements. To emit only development requirements, pass "--dev-only". + -i https://pypi.org/simple alembic==1.7.7 -anyio==3.6.1 -asgiref==3.5.1 +anyio==3.6.1; python_full_version >= '3.6.2' +appnope==0.1.3; sys_platform == 'darwin' +asgiref==3.5.2; python_version >= '3.7' +astroid==2.6.6; python_version ~= '3.6' +asttokens==2.0.5 asyncpg==0.25.0 -attrs==21.4.0 -certifi==2021.10.8 -charset-normalizer==2.0.12 -click==8.1.3 +attrs==21.4.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +autoflake==1.4 +backcall==0.2.0 +black==22.3.0 +certifi==2022.5.18.1; python_version >= '3.6' +charset-normalizer==2.0.12; python_full_version >= '3.5.0' +click==8.1.3; python_version >= '3.7' commonmark==0.9.1 -coverage[toml]==6.3.3 -dnspython==2.2.1 +coverage[toml]==6.3.3; python_version >= '3.7' +decorator==5.1.1; python_version >= '3.5' +devtools[pygments]==0.8.0 +dnspython==2.2.1; python_version >= '3.6' and python_full_version < '4.0.0' +dparse==0.5.1; python_version >= '3.5' eventlet==0.33.1 +executing==0.8.3 fastapi==0.78.0 -greenlet==2.0.0a2 -h11==0.12.0 -httpcore==0.13.7 +flake8==4.0.1 +greenlet==2.0.0a2; python_version >= '3' and platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32'))))) +h11==0.12.0; python_version >= '3.6' +httpcore==0.13.7; python_version >= '3.6' httptools==0.4.0 httpx==1.0.0b0 -idna==3.3 +idna==3.3; python_full_version >= '3.5.0' iniconfig==1.1.1 -mako==1.2.0 -markupsafe==2.1.1 -packaging==21.3 -pluggy==1.0.0 -py==1.11.0 -pydantic==1.9.0 -pygments==2.12.0 -pyparsing==3.0.9 -pytest==7.1.2 +ipython==8.3.0 +isort==5.10.1 +jedi==0.18.1; python_version >= '3.6' +lazy-object-proxy==1.7.1; python_version >= '3.6' +mako==1.2.0; python_version >= '3.7' +markupsafe==2.1.1; python_version >= '3.7' +matplotlib-inline==0.1.3; python_version >= '3.5' +mccabe==0.6.1 +mypy-extensions==0.4.3 +mypy==0.950 +packaging==21.3; python_version >= '3.6' +parso==0.8.3; python_version >= '3.6' +pathspec==0.9.0 +pexpect==4.8.0; sys_platform != 'win32' +pickleshare==0.7.5 +platformdirs==2.5.2; python_version >= '3.7' +pluggy==1.0.0; python_version >= '3.6' +prompt-toolkit==3.0.29; python_full_version >= '3.6.2' +ptyprocess==0.7.0 +pure-eval==0.2.2 +py==1.11.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +pycodestyle==2.8.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +pydantic==1.9.1 +pyflakes==2.4.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +pygments==2.12.0; python_version >= '3.6' +pylint==3.0.0a4 +pyparsing==3.0.9; python_full_version >= '3.6.8' pytest-asyncio==0.18.3 pytest-cov==3.0.0 +pytest==7.1.2; python_version >= '3.7' +pyupgrade==2.32.1 +pyyaml==6.0; python_version >= '3.6' +requests==2.27.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' rfc3986[idna2008]==1.5.0 rich==12.4.1 -six==1.16.0 -sniffio==1.2.0 +ruamel.yaml.clib==0.2.6; python_version < '3.11' and platform_python_implementation == 'CPython' +ruamel.yaml==0.17.21; python_version >= '3' +safety==2.0b1 +setuptools==62.3.2; python_version >= '3.7' +six==1.16.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +sniffio==1.2.0; python_full_version >= '3.5.0' sqlalchemy[asyncio]==1.4.36 -starlette==0.19.1 +stack-data==0.2.0 +starlette==0.19.1; python_version >= '3.6' +tokenize-rt==4.2.1; python_full_version >= '3.6.1' +toml==0.10.2; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3' tomli==2.0.1 -typing-extensions==4.2.0 +traitlets==5.2.1.post0; python_version >= '3.7' +typing-extensions==4.2.0; python_version >= '3.7' +urllib3==1.26.9; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' uvicorn==0.17.6 uvloop==0.16.0 +wcwidth==0.2.5 +wrapt==1.12.1